原题目:即时通信软件如腾讯QQ支持用户间的消息收/发操作,并可以保存历史消息数据,在以后任何时刻可查询历史消息。请模拟实现上述的消息发送、接收过程,及历史消息的存储和读取功能。
现要求将程序的即时存储功能改为在程序结束前存储全部消息,并将消息存入文件中。
原程序:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class QQUser
{
private:
string name;
public:
QQUser(string);
void sendMessage(QQUser,string);
void receiveMessage(QQUser,string);
void storeMessage(string,QQUser);
void readMessage(QQUser);
};
//构造函数
QQUser::QQUser(string name)
{
this->name=name;
}
//发送消息
void QQUser::sendMessage(QQUser receiver,string message)
{
receiver.receiveMessage(*this,message);
string msg=name+" 发送了消息:"+message;
storeMessage(msg,receiver);
}
//接收消息
void QQUser::receiveMessage(QQUser sender,string message)
{
cout<<sender.name<<" 发送了消息:"<<message<<endl;
string msg=sender.name+" 发送了消息:"+message;
storeMessage(msg,sender);
}
//存储消息
void QQUser::storeMessage(string message,QQUser fileBelongto)
{
string filename="message"+fileBelongto.name+".txt";
ofstream outfile(filename.c_str(),ios::app);
outfile<<message<<"\n"<<endl;
}
//读取消息记录
void QQUser::readMessage(QQUser fileBelongto)
{
string filename="message"+fileBelongto.name+".txt";
ifstream infile(filename.c_str());
const MAX=1024;
char buffer[MAX];
while(infile)
{
infile.getline(buffer,MAX);
cout<<buffer<<endl;
}
}
void main()
{
QQUser a("10000");
QQUser b("10001");
a.sendMessage(b,"你好!");
b.sendMessage(a,"你也好!");
b.sendMessage(a,"有什么事吗?");
a.readMessage(b);
}
PS:个人思路是将消息存入链表,在程序结束前将链表存入文件,但是具体操作不会
C语言(最好C++)编一下这个程序
i_m = i_f = 0;\/\/这里是对所需数目的教师信息输入用teacher这个指针接收,并判断男女,若男利用Mp链接以Male为首地址的链表中,若女利用Fp链接进以 printf("Pls enter the information of teacher:\\n注意中间一空格间隔,性别只可为大写的F或M,Ex:张三 187 M\\n");for (int i = 0; i <...
求帮忙修改c++程序,下面是用栈计算后辍表达式值的程序,请把错误和为...
} \/\/int calculation(String B,pseqstack pastack) String C里没有这个类型的,C++里是string,改成char*试了下 int calculation(char* B,pseqstack pastack){ \/\/char a[];数组声明时必须有确定的大小,因为不知道大小,我就瞎写了个 char a[1000];\/\/int i,n,a,b,c;上面已经定义了一个...
用c++ do-while语句编程,求自然数1-10的和;并用for语句改写此程序。
include usingnamespacestd;intmain(){ intsum=0,n=1;do{ sum=sum+n;n++;}while(n<=10);cout<<"Thesumis:"< usingnamespacestd;intmain(){ intsum=0;for(intn=1;n<=10;n++){ sum+=n;} cout<<"Thesumis:"<
麻烦各位大神帮忙用C语言或C++编下这个程序,要源代码,老师交作业要,谢 ...
少年,作业是用来回顾完善所学的知识的,而不是用来抄的。。。下面给出这个作业的核心代码,仅供参考 include <stdio.h> include <stdlib.h> include <string.h> typedef struct student { char name[50];int mathScore;int englishScore;}STU;void inputScore(STU * stu){ } int average(STU *...
用c++编写下面的程序 给50分 完成且正确追加100 急求
哈哈,这和我大学时做c++课程设计的题目一样啊。提示,菜单就是N个printf("???")组成,选择就是switch语句,存储就是链表。其他的都是逻辑判断了。不难的,自己可以写出来的
c++语言问题。。请问出错信息为:下面的程序怎么修改
你检查一下stdafx.h是否被正确定义和包含了,应该是没有包含windows.h头文件。
急需将下面这一篇C++程序改成c语言程序。大师们帮帮忙,必有丰厚的金...
include <string.h> include <stdio.h> include <stdlib.h> struct student {int ID;long number;char name[100];float score; student *next;};student *head;student *Create(){student *p1;student *p2;p1=(struct student*)malloc(sizeof(student));;scanf("%d %s %f ",&p1->number,&...
...输入一个数就输出所有相加的式子,怎么用C++语言编写这个程序...
include <stdio.h>void splitNum(int x, const char* str,int old){ char buf[50]; if(x==1) { sprintf(buf,"%s%s%d",str,"1=",old); printf("%s\\n",buf); return; } for(int i=1; i<=x; i++){ sprintf(buf,"%s%d%s",str,i,"+"); ...
新手求教:用C++语言编写从1加到10的程序
include <iostream> using namespace std;int main(){ int sum = 0;for(int i=1;i<=10;i++)sum += i;cout <<sum<<endl;return 0;} 有不明白可以继续问我
用C++语言写程序
【程序代码】#include<iostream>#include<stdio.h>using namespace std;int main(){int l,w, \/\/房间长和宽 x1,y1, \/\/门的坐标 x2,y2, \/\/窗的坐标 x3,y3, \/\/家具的坐标 i,j; \/\/循环变量 do{printf("请输入房间的长和宽:"); \/\/显示提示...