模拟手机短信系统(C++类的思想)

Test.cpp

#include "Message.h"
void main()
{Message m;					//建立对象int n;						do {system("cls");cout << "主界面:"		<< endl <<"0.结束程序"		<< endl << "1.编辑短信"	<< endl << "2.发件箱"		<< endl<< "3.收件箱"		<< endl << "4.草稿箱"		<< endl << "5.最近联系人"	<< endl;cin >> n;				switch (n){case 0:break;case 1:m.CreateMessage();break;case 2:m.SendMessage();break;case 3:m.ReceiveMessage();break;case 4:m.DraftMessage();break;case 5:m.RecentContact();break;default:cout << "输入错误,重新输入!" << endl;}} while (n);
}

Message.h

// Message.h: interface for the Message class.
//
//#if !defined(AFX_MESSAGE_H__7D2211A6_1DFE_4B26_AEF9_415A7C07E899__INCLUDED_)
#define AFX_MESSAGE_H__7D2211A6_1DFE_4B26_AEF9_415A7C07E899__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include   
#include   
#include   
#include   
#include     
#include   
#include   
#include  
using namespace std;#define Max_Num 10							//联系人上限
#define Folder			"f:\\"				//默认路径名
#define	SendFolder		"\\Send"			//发件箱默认地址前缀			
#define	ReceiveFolder	"\\Receive"			//收件箱默认地址前缀
#define	DraftFolder		"\\Draft"			//草稿箱默认地址前缀
#define	Contact	       	"\\Contact"			//最近联系人class Message
{
public:Message();							//构造函数(三个文件夹的建立、发件人的确认)void CreateMessage();				//编辑短信(对mess处理)void DraftMessage();				//查看草稿void SaveAsDraft();					//存入草稿void ReceiveMessage();				//接收短信void SendMessage();					//发送短信void ReadFolder(string FolderName);					//查看信箱void ReadMess(string FileName);						//阅读短信void Delete(string FileName);						//删除短信void DeleteFolder(string FolderName);				//清空信箱void getFiles(string path, vector<string>& files);	//读取文件名工具函数void Sending(string receiver);						//发送短信!!void RecentContact();								//联系人virtual ~Message();									//析构函数
private:string Send, RSend;						//发件箱string Receive, RReceive;				//收件箱string Draft, RDraft;					//草稿箱string Recent, RRecent;					//联系人string Sender;							//用户名string Mess;							//短信内容string Receiver;						//收件人static char Count;						//短信数量
};
#endif // !defined(AFX_MESSAGE_H__7D2211A6_1DFE_4B26_AEF9_415A7C07E899__INCLUDED_)

Message.cpp

#include "Message.h"//
// Construction/Destruction
//char Message::Count = '0';				//初始化短信数目Message::Message()						//构造函数(无参数)
{cout << "输入本人姓名:" << endl;	//给Sender赋值,确认发送者cin >> Sender;string r = Folder + Sender;			//	if (access(r.c_str(), 0))			//access用于判断文件夹是否存在system(("md " + r).c_str());	//建立本人短信系统文件夹//		发、收、草、联系箱实际地址名		Send = r + SendFolder + Sender;		Receive = r + ReceiveFolder + Sender;Draft = r + DraftFolder + Sender;Recent = r + Contact + Sender;if (access(Send.c_str(), 0))			//建立发件箱system(("md " + Send).c_str());if (access(Receive.c_str(), 0))system(("md " + Receive).c_str());	//建立收件箱if (access(Draft.c_str(), 0))system(("md " + Draft).c_str());if (access(Recent.c_str(), 0))			//建立草稿箱system(("md " + Recent).c_str());
}///			编辑短信			//
void Message::CreateMessage()				
{system("cls");							//清除当前屏幕int n;									//选择器 用于功能控制Count++;								//编辑短信 数目加1cout << "输入收件人:" << endl;			//确认收件人cin >> Receiver;cout << "输入短信内容:" << endl;		//短信内容cin >> Mess;do {system("cls");						//清除当前屏幕cout << "请选择:"		<< endl		//选择界面<< "0.退出编辑"	<< endl << "1.发送"		<< endl << "2.存入草稿箱"	<< endl;cin >> n;							//选择结果switch (n)							//编辑后界面{case 0:							//0.退出编辑break;case 1:							//1.发送 结束后退出编辑Sending("");n = 0;break;case 2:							//2.存入草稿箱SaveAsDraft();				n = 0;break;default:						//提示错误输入 重新选择 cout << "输入错误,重新输入!" << endl;}} while (n);
}///			发送短信			//
void Message::Sending(string receiver)
{string SAddress = Sender;					//发件人地址string RAddress;							//收件人地址string Address1;							//发件箱地址string Address2;							//收件箱地址string Address3;							//联系人地址string Address4;							//收件箱地址(对方)string news, draft;							//内容、草稿 int n;//			发件箱 草稿箱			//if (receiver.compare("") == 0){RAddress = Receiver;								//收件人地址	Address1 = Send + "\\" + RAddress + Count + ".txt";	//发件箱地址news = Mess;}else{n = receiver.find_last_of('.');						//获取收件人RAddress = receiver.substr(0, n - 1);Address1 = Send + "\\" + receiver;draft = Draft + "\\" + receiver;					//草稿箱地址ifstream inf(draft.c_str());						//草稿文件if (inf.is_open())									//将短信写入草稿{while (!getline(inf, news));inf.close();}}//			存入发件箱			//ofstream SendNews(Address1.c_str());		//建立发送文件if (SendNews.is_open()){SendNews << news;						//将短信内容写入文件SendNews.close();}//			最近联系人			//Address3 = Recent + "\\" + RAddress + ".txt";		//联系人地址ofstream RecentNews(Address3.c_str());if (RecentNews.is_open()){RecentNews.close();}//			建立收件人的短信系统			//string r = Folder + RAddress;if (access(r.c_str(), 0))					//判断文件夹是否存在system(("md " + r).c_str());RSend = r + SendFolder + RAddress;			//收件人发送箱RRecent = r + Contact + RAddress;			//收件人联系人RReceive = r + ReceiveFolder + RAddress;	//收件人收件箱RDraft = r + DraftFolder + RAddress;		//收件人草稿箱if (access(RSend.c_str(), 0))				//判断文件夹是否存在system(("md " + RSend).c_str());if (access(RReceive.c_str(), 0))system(("md " + RReceive).c_str());if (access(RDraft.c_str(), 0))system(("md " + RDraft).c_str());if (access(RRecent.c_str(), 0))system(("md " + RRecent).c_str());//			将信息存入对方收件箱			//if (receiver.compare("") == 0){Address2 = RReceive + "\\" + SAddress + Count + ".txt";		//收件箱地址ofstream ReceiveNews(Address2.c_str());						if (ReceiveNews.is_open()){ReceiveNews << news;ReceiveNews.close();}}else{Address2 = RReceive + "\\" + SAddress + receiver.substr(n - 1);	//发件箱地址ofstream ReceiveNews(Address2.c_str());if (ReceiveNews.is_open()){ReceiveNews << news;ReceiveNews.close();}}Address4 = RRecent + "\\" + SAddress + ".txt";			//收件箱地址(对方)ofstream RRecentNews(Address4.c_str());if (RRecentNews.is_open()){RRecentNews.close();}
}//			保存草稿			//
void Message::SaveAsDraft()		
{string r;ofstream DraftNews;r = Draft + "\\" + Receiver + Count + ".txt";DraftNews.open(r.c_str());if (DraftNews.is_open()){DraftNews << Mess;DraftNews.close();}elsecout << r + "文件打开失败!" << endl;
}//			草稿箱				//
void Message::DraftMessage()
{int n;do {system("cls");cout << "请选择:"			<< endl << "0.返回主界面"		<< endl << "1.查看草稿箱"		<< endl << "2.清空草稿箱"		<< endl;cin >> n;switch (n) {case 0:break;case 1:ReadFolder(Draft);break;case 2:DeleteFolder(Draft.c_str());break;default:cout << "输入错误,重新输入!" << endl;}} while (n);
}//			发件箱				///
void Message::SendMessage()
{int n;do {system("cls");cout << "请选择:"			<< endl << "0.返回主界面"		<< endl << "1.查看发件箱"		<< endl << "2.清空发件箱"		<< endl;cin >> n;switch (n) {case 0:break;case 1:ReadFolder(Send);break;case 2:DeleteFolder(Send.c_str());break;default:cout << "输入错误,重新输入!" << endl;}} while (n);
}//			收件箱				//
void Message::ReceiveMessage()
{int n;do {system("cls");cout << "请选择:"			<< endl << "0.返回主界面"		<< endl << "1.查看收件箱"		<< endl << "2.清空收件箱"		<< endl;cin >> n;switch (n) {case 0:break;case 1:ReadFolder(Receive);break;case 2:DeleteFolder(Receive.c_str());break;default:cout << "输入错误,重新输入!" << endl;}} while (n);}//			查看信箱			//
void Message::ReadFolder(string FolderName)
{int m, n, index1, index2;vector<string> files;getFiles(FolderName, files);			//获取该路径下的所有文件 int size = files.size();string filesname[20],name[20];if (!size)cout << "箱内无短信!" << endl;for (int i = 0; i < size; i++){//cout<index1 = files[i].find_last_of('\\');filesname[i] = files[i].substr(index1 + 1);index2 = filesname[i].find_last_of('.');name[i] = filesname[i].substr(0,index2);cout << name[i].c_str() << endl;}system("pause");do {system("cls");if (FolderName.compare(Recent) == 0){cout << "请选择:"			<< endl<< "0.返回"			<< endl<< "1.删除最近联系人"	<< endl;}else {cout << "请选择:"		<< endl << "0.返回"		<< endl << "1.阅读短信"	<< endl << "2.删除短信"	<< endl;if (FolderName.compare(Draft) == 0)cout << "3.发送短信"	<< endl;}cin >> n;switch (n) {case 0:break;case 1:if (FolderName.compare(Recent) == 0) {if (size){cout << "输入删除第几个联系人" << endl;cin >> m;//m小于size;Delete(files[m - 1].c_str());cout << "已删除!" << endl;}elsecout << "无联系人!" << endl;}else {if (size){cout << "输入阅读第几条短信" << endl;cin >> m;//m小于size;ReadMess(files[m - 1].c_str());}elsecout << "箱内无短信!" << endl;}system("cls");break;case 2:if (size) {cout << "输入删除第几条短信" << endl;cin >> m;//m小于size;Delete(files[m - 1]);cout << "已删除!" << endl;}elsecout << "箱内无短信!" << endl;system("cls");break;case 3:if (FolderName.compare(Draft) == 0) {if (size) {cout << "输入发送第几条短信" << endl;cin >> m;//m小于size;Sending(filesname[m - 1]);cout << "已发送!" << endl;Delete(files[m - 1].c_str());}elsecout << "箱内无短信!" << endl;}elsecout << "输入错误,重新输入!" << endl;system("cls");break;default:cout << "输入错误,重新输入!" << endl;}} while (n);
}//			阅读短信			//
void Message::ReadMess(string FileName)
{ifstream News(FileName.c_str());if (News.is_open()){char ch;while (News.get(ch))cout << ch;cout << endl;News.close();}elsecout << FileName + "文件打开失败!" << endl;system("pause");
}//			删除短信			//
void Message::Delete(string FileName)
{DeleteFile(FileName.c_str());
}//			清空信箱			//
void Message::DeleteFolder(string FolderName) 
{int m, n;vector<string> files;获取该路径下的所有文件  getFiles(FolderName, files);char str[30];int size = files.size();for (int i = 0; i < size; i++){Delete(files[i]);}cout << "已清空!" << endl;
}//			最近联系人			//
void Message::RecentContact() 
{int n;do {system("cls");cout << "请选择:"			<< endl<< "0.返回主界面"		<< endl << "1.查看最近联系人"	<< endl << "2.清空最近联系人"	<< endl;cin >> n;switch (n) {case 0:break;case 1:ReadFolder(Recent);break;case 2:DeleteFolder(Recent.c_str());break;default:cout << "输入错误,重新输入!" << endl;}} while (n);
}//稍有问题
void Message::getFiles(string path, vector<string>& files)		//遍历path路径下文件夹的内容
{long   hFile = 0;					//文件句柄  struct _finddata_t fileinfo;		//文件信息  string p;							if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(), &fileinfo)) != -1){do{if ((fileinfo.attrib &  _A_SUBDIR))			//如果是目录,迭代之  	{if (strcmp(fileinfo.name, ".") != 0 && strcmp(fileinfo.name, "..") != 0)getFiles(p.assign(path).append("\\").append(fileinfo.name), files);}else										//如果不是,加入列表  {files.push_back(p.assign(path).append("\\").append(fileinfo.name));}} while (_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}
}Message::~Message()			//析构函数
{}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部