《基于C++的面向对象程序设计实验报告》
题目:模拟手机通信录管理系统课程实验
学院:
系别:计算机工程系
专业:计算机科学与技术
班级:1320541
制作人:刘创 学号:132054137
指导教师:
完成时间:两天(12月13/14 ,周六周日)
目录
第一章:总体功能介绍
1.1 绪论及问题描述...............................................................第3页
1.2 功能介绍................................................................................第3页
1.2.1 增加功能.......................................................................第3页
1.2.2 查看功能.......................................................................第3页
1.2.3 拔号功能.......................................................................第3页
1.2.4 修改功能.......................................................................第3页
1.2.5 删除功能.......................................................................第3页
1.2.6 查找功能.......................................................................第3页
1.2.7 保存功能.......................................................................第4页
第二章:课程设计理念
2.1 总体设计勾画框架一览图.................................................第4页
2.2 设计过程..............................................................................第5页
2.3 欢迎菜单的实现..................................................................第5页
2.4 主菜单的实现......................................................................第5页
第三章:各功能模块的实现及调试
3.1 添加信息............................................................................第6页
3.1.1添加信息提示..............................................................第6页
3.1.2添加信息输入..............................................................第6页
3.1.3添加信息提示分组情况..............................................第7页
3.1.4添加信息错误提醒情况..............................................第7页
3.2 查看通讯录信息.................................................................第8页
3.3 拨号提示及拨打......./.........................................................第8页
3.4 修改通讯录信息.................................................................第9页
3.5 删除通讯录信息.................................................................第10页
3.6 模糊查找信息..................................................................第10/11/12页
3.7 帮助.....................................................................................第12页
3.8 关于.....................................................................................第12页
第四章:调试过程中的问题
4.1 程序中遇到过的问题..........................................................第13页
4.2 问题的解决与编写后的感受..............................................第13页
第五章:总结............................................................................第14页
第六章:参考文献....................................................................第15页
第七章:附源代码...................................................................第15~28页
第一章:总体功能介绍
1.1 绪论及问题描述
用C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 人员信息:姓名、手机号码、家庭电话号码、办公电话、电子邮件、分组 。基于C++6.0 dos环境设计。
(其中:手机号码、家庭电话号码、办公电话不能同时为空;分组说明: 未知、同事、亲戚、朋友、家人、同学等还可以自己创建分组)
1.2功能介绍
1.2.1 增加功能:
能录入新人员记录(当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;默认分组“未知”)
1.2.2 查看功能:
选择此功能时,当选中某类时,显示出此类所有数据中的姓名和电话号码);
1.2.3 拔号功能:
能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字。
1.2.4 修改功能:
选中某个人的姓名时,可对此人的相应数据进行修改。
1.2.5 删除功能:
选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。
1.2.6 查找功能:
按姓名(模糊查找,如输入一个“李”,则列出所有姓李的信息)或按电话号码查找某人信息。
1.2.7 保存功能
将当前系统中各类记录存入文件中。
第二章:课程设计理念
2.1 总体设计勾画框架一览图
2.2 设计过程
欢迎菜单
主菜单:
1.添加
2.浏览
3.拨打
4.修改
5.删除
6.查找
7.帮助
8.关于
9.退出
注:首先向客户展示一个欢迎界面,并提醒客户输入任意键进入主菜单,在菜单中客户进行操作选择,而且客户操作完后还可以根据需求进行返回主菜单进行其他操作。
2.3 欢迎菜单的实现:
2.4 主菜单的实现:
第三章:各功能模块的实现及调试
3.1 添加信息
3.1.1 添加信息提示
3.1.2 添加信息输入
3.1.3 添加信息提示分组情况
3.1.4 添加信息出错(姓名/手机号/家庭电话/办公电话出现重复)提醒情况
3.2 查看通讯录信息
3.3 拨号提示及拨打
3.4 修改通讯录信息
修改后的可以对比 注意刘涛的手机号已经修改成功
3.5 删除通讯录信息
删除李四
注意观察通讯录中没有李四了
3.6 模糊查找信息(姓名中的首位/手机号的首位数)
姓名中的首位
显示:
手机号的首位数
显示如下:
3.7 帮助
3.8 关于
第四章:调试过程中的问题
4.1 程序中遇到过的问题
面对一个课程设计的诸多要求,在设计过程中一定会遇到诸多的问题。
有程序逻辑方面上的逻辑错误,语法上的错误。
主要由以下几个方面:
① 标点符号等出现错误,比较容易修改
② 类定义错误
③ 类的使用错误
④ 主函数的使用方法
⑤ 调用函数的使用方法
⑥ 非空函数的返回值
⑦ 主菜单的修改与美观
⑧ 欢迎菜单
⑨ 实现客户的来回输入
⑩ 实现客户数据输入错误提醒
11 实现工程文件的包含等
12 数据的更新
13 可视化的窗口
4.2 问题的解决与感受
问题的解决:
1) 解决问题中,仔细查找错误
2) 平时学习多问同学与老师
3) 平时学习多交流问题
4) 平时学习上网查找资料
5) 平时学习多看看书
6) 平时学习多实践实践
7)
感受:
1.在编写程序过程中需谨慎,一个好的程序员需要严谨的态度
2.C++主要靠自己的动手能力
3.多参加一些软件开发,对自己的c++有很大的好处
4.虽然实验过程中出现诸多问题,但是解决后的心情是相当不错的
5.多试验多操作
6.多交流,多问
7.有耐心有毅力,不怕失败
8.平时调试9999次不成功,你就要坚持调试10000次
第五章:总结
通过本次课程设计,以及联系到大一下学期有关《图书馆多媒体库管理系统课程设计》,能对本学期C++面向对象程序设计课程学习的知识进行了一次综合运用,巩固了所学的知识。而本次课程设计《模拟手机通讯录管理系统》与现实生活联系比较紧密,综合性也比较强,锻炼了独立思考并解决问题的能力。课程设计分为两个阶段,对于处理问题比较有层次性,即逐步深入;而课程要求也对本次试验有一定的引导作用。完成了本次试验,对于其他编程项目,不论简单、复杂,也比较容易理解、接受、尝试、解决。
虽然,本次课程设计试验的总体完成比较顺利,仅用两天时间,集中吸收了大一、大二的c++内容。对于一些数据的添加、修改、删除、查看、存档等主要功能,将是以后从事课程设计等所必需的知识。无一例外,当我们熟悉地掌握一种属于自己的方法,以不变应万变,便可以解决现实的很多问题。
当然,作为我们计算机科学与技术专业的学生,我们要善始善终,我们要时刻地明白:“纸上得来终觉浅,绝知此事要躬行。”要成为一个完美的程序员,我们需要清醒的头脑,清晰的客观逻辑,严谨的科学态度,持之以恒的耐心与毅力。“不积跬步无以至千里,不积小流无以成江海”,我们需要更多的练习,学好C++及其他语言的道路任重而道远。动手能力与逻辑思维能力至关重要。
同时衷心感谢王俊秀老师的指导,以及在学习之余中给我们带来的开心时刻!!!
第六章:参考文献
《C++程序设计》
《C++面向对象程序设计》
《C++PrimerPlus 第五版》
第七章:附源代码
addresslist.Cpp ///////////////////////////主函数开始/////////////////////////////////// #include<iostream> #include<fstream> //文件 #include"addresslist1.h" #include<cstdlib> //清屏库文件 using namespace std; int main() { system("color2f"); //控制台颜色,可控制 addresslistaddr; addr.welcome_display(); //欢迎界面 charf; while(1) //构造假死循环 { addr.menu_display(); //主菜单界面 int ch; cin>>ch; switch(ch) { case 1:addr.add();break; //调用添加新信息函数 case 2:addr.skim();break; //调用浏览函数 case 3:addr.dial();break; //调用打电话函数 case 4:addr.modify();break; //调用修改信息函数 case 5:addr.deletepeople();break;//调用删除信息函数 case 6:addr.search();break; //调用查找信息函数 case 7:addr.help();break; //调用帮助函数 case 8:addr.about();break; //调用关于函数 case 0:cout<<"已安全退出该系统!\n";break; default:cout<<"没有此操作选项"<<endl;break; } cout<<"请问您是否需要返回主菜单中继续操作?(y:是;n:否)"; cin>>f; system("cls"); //调用清屏函数,以便再次输入 if(f=='n'||f=='N')break; //判断是否结束 } return0; } //////////////////////////////////////////////////////////主函数结束///////////////////////////////////////// addresslist1.h // addresslist1.h: interface forthe addresslist class. ////////////////////////////////////////////////////////////////////// #if!defined(AFX_ADDRESSLIST1_H__D7290679_525E_4096_BE72_8EDF12890437__INCLUDED_) #defineAFX_ADDRESSLIST1_H__D7290679_525E_4096_BE72_8EDF12890437__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class addresslist //定义addresslist类 { private: char name[20]; //定义私有变量:姓名 char phone[20]; //定义私有变量:电话 char homephone[20]; //定义私有变量:家庭电话 char officephone[20]; //定义私有变量:办公电话 char email[20]; //定义私有变量:Email char group[20]; //定义私有变量:分组 public: addresslist(); //声明构造函数 virtual ~addresslist();//声明析构函数 void welcome_display();//声明欢迎界面函数 void menu_display(); //声明主菜单显示函数 void add(); //声明增加信息函数 void skim(); //声明浏览信息函数 void dial(); //声明拨打电话信息函数 void modify(); //声明修改信息函数 void deletepeople(); //声明删除信息函数 void search(); //声明查询信息函数 void help(); //声明帮助信息函数 void about(); //声明关于信息函数 }; #endif //!defined(AFX_ADDRESSLIST1_H__D7290679_525E_4096_BE72_8EDF12890437__INCLUDED_) addresslist1.cpp // addresslist1.cpp:implementation of the addresslist class. ///////////////////////手机通讯录系统//////////////////////////////////////// #include<windows.h> //调用Sleep延长时间函数库文件 #include"addresslist1.h" #include<ctime> //调用系统当前日期时间 #include<fstream> #include<string> #define max 1000 //通讯录最大容量1000人 #include<iostream> using namespace std; /////////////////////////////函数等的定义开始//////////////////////////////// addresslist people[max]; int count=0; //初始化当前通讯录的信息数 addresslist::addresslist() //默认全为0 { strcpy(people[0].name,"0"); strcpy(people[0].phone,"0"); strcpy(people[0].homephone,"0"); strcpy(people[0].officephone,"0"); strcpy(people[0].email,"0"); strcpy(people[0].group,"0"); } addresslist::~addresslist() //析构函数 { } voidaddresslist::welcome_display() //欢迎界面函数的定义 { cout<<"\n"; cout<<" ********************欢迎界面******************** \n\n"; cout<<"*******************欢迎进入手机通讯录管理系统*********************\n\n"; cout<<" ******* 该简易系统制作者: 刘创 *********** \n\n"; cout<<" ******* 制作日期:2014年12月12周五 *********** \n\n"; cout<<" ******* 请按任意键进入主菜单……… *********** \n\n"; cout<<"******************************************************************\n "; while(getchar()==0); system("cls"); } voidaddresslist::menu_display() //主菜单界面函数的定义 { time_t t; time(&t); //当前登录系统时间显示 cout<<" 当前登陆系统时间是: "<<ctime(&t)<<endl; cout<<" ************************************************\n"; cout<<"*******************手机通讯录管理系统主菜单***********************\n"; cout<<" ******* >> 1.添加新通讯信息<< ******** \n"; cout<<" ******* 2.查看通讯录信息 ******** \n"; cout<<" ******* 3.拨号 ******** \n"; cout<<" ******* 4.修改通讯录信息 ******** \n"; cout<<" ******* 5.删除通讯录信息 ******** \n"; cout<<" ******* 6.查找通讯录信息 ******** \n"; cout<<" ******* 7.帮助 ******** \n"; cout<<" ******* 8.关于 ******** \n"; cout<<" ******* 0.退出 ******** \n"; cout<<" *******请输入数字:(0~8)进行选择操作 ******** \n"; cout<<"******************************************************************\n"; } void addresslist::add() //添加信息函数的定义,其中添加函数最为复杂,需要全面考虑 { system("cls"); //清屏 ofstreamoutfile("addresslist.txt",ios::binary);//本程序均采用二进制存档,文件为addresslist.txt if(!outfile) {cerr<<"打开错误!"<<endl; abort(); } ifstreaminfile("addresslist.txt",ios::binary); if(!infile) {cerr<<"打开错误!"<<endl; abort(); } for(int i=0;i<count;i++) {infile.read((char*)&people[i],sizeof(people[i])); infile.read((char*)&count,sizeof(count)); } i=count; //从文件中读取count,并赋给i,以便存档 cout<<"\n************************新信息开始录入*********************\n请依次按下面顺序输入新通讯录的信息"; cout<<"(注:手机号,家庭电话,办公电话不能同时为空\n"; cout<<"且不填信息时以'0'结束进行下一个信息输入(以空格隔开信息,分组在之后操作)\n"; cout<<"姓名 \t手机号 \t家庭电话\t办公电话\t电子邮件\n"; cin>>people[i].name>>people[i].phone; cin>>people[i].homephone>>people[i].officephone; cin>>people[i].email; if(i==0) //如果当前通讯录时空的话,则i=count==0,就直接存档; { cout<<"现在开始进行分组\n(注:在分组中有1.未知 2.同事3.亲戚 4.朋友5.家人 6.同学7.默认 8.自己创建分组)\n"; cout<<"请输入你的选项(1~8)进行分组\n";//实现客户对分组的选择输入 int c; cin>>c; switch(c) //分组选择在这里目的是:如果客户输入重复数据时,就不用对数据进行分组了 { case1:strcpy(people[i].group,"未知");break; case2:strcpy(people[i].group,"同事");break; case3:strcpy(people[i].group,"亲戚");break; case4:strcpy(people[i].group,"朋友");break; case5:strcpy(people[i].group,"家人");break; case6:strcpy(people[i].group,"同学");break; case7:strcpy(people[i].group,"未知");break; case 8:cout<<"请输入你要新建分组的名字:\n";cin>>people[i].group;break; default:cout<<"你输入的操作选项错误!\n"; } count++; //当存完档后count+1; for(int j=0;j<count;j++) {outfile.write((char*)&people[j],sizeof(people[j])); outfile.write((char*)&count,sizeof(count)); } outfile.close(); } else { for(int g=0;g<i;g++) //当当前通讯录人数不为零时,判断用户输入的姓名是否重复 { if(!(strcmp(people[g].name,people[i].name)))//判断名字是否相等 { cout<<"你存储的姓名已存在!此项信息录入取消\n"; for(int j=0;j<count;j++) {outfile.write((char*)&people[j],sizeof(people[j])); outfile.write((char*)&count,sizeof(count)); } outfile.close();break; } } for(int k=0;k<i;k++) //判断用户输入的手机号是否重复 { if(!(strcmp(people[k].phone,people[i].phone))) { cout<<"你存储的手机号已存在!此项信息录入取消\n"; for(int j=0;j<count;j++) {outfile.write((char*)&people[j],sizeof(people[j])); outfile.write((char*)&count,sizeof(count)); } outfile.close();break; } } for(int l=0;l<i;l++) //判断用户输入的家庭电话是否重复 { if(!(strcmp(people[l].homephone,people[i].homephone))) { cout<<"你存储的家庭电话已存在!此项信息录入取消\n"; for(int j=0;j<count;j++) {outfile.write((char*)&people[j],sizeof(people[j])); outfile.write((char*)&count,sizeof(count)); } outfile.close();break; } } for(int m=0;m<i;m++) //判断用户输入的办公电话是否重复 { if(!(strcmp(people[m].officephone,people[i].officephone))) { cout<<"你存储的办公电话已存在!此项信息录入取消\n"; for(int j=0;j<count;j++) {outfile.write((char*)&people[j],sizeof(people[j])); outfile.write((char*)&count,sizeof(count)); } outfile.close();break; } } if(g==i&&k==i&&l==i&&m==i) //当客户输入的姓名,手机号,家庭电话,办公电话不重复时才可以 //把数据输入文件 { cout<<"现在开始进行分组\n(注:在分组中有1.未知 2.同事3.亲戚 4.朋友5.家人 6.同学7.默认 8.自己创建分组)\n"; cout<<"请输入你的选项(1~8)进行分组\n";//实现客户对分组的选择输入 int c; cin>>c; switch(c) //分组选择在这里目的是:如果客户输入重复数据时,就不用对数据分组了,同上 { case1:strcpy(people[i].group,"未知");break; case2:strcpy(people[i].group,"同事");break; case3:strcpy(people[i].group,"亲戚");break; case4:strcpy(people[i].group,"朋友");break; case5:strcpy(people[i].group,"家人");break; case6:strcpy(people[i].group,"同学");break; case7:strcpy(people[i].group,"未知");break; case 8:cout<<"请输入你要新建分组的名字:\n";cin>>people[i].group;break; default:cout<<"你输入的操作选项错误!\n"; } count++; //当存完档后count+1; for(int j=0;j<count;j++) {outfile.write((char*)&people[j],sizeof(people[j])); outfile.write((char*)&count,sizeof(count)); } cout<<"数据保存成功!"; outfile.close(); //关闭文件 } } infile.close(); //关闭文件 } //添加函数结束 void addresslist::skim() //浏览函数的定义 { ifstreaminfile("addresslist.txt",ios::binary); if(!infile) {cerr<<"打开错误!"<<endl; abort(); } for(int i=0;i<=count;i++) {infile.read((char*)&people[i],sizeof(people[i])); infile.read((char*)&count,sizeof(count));} system("cls"); cout<<"***********************通讯录所有人的信息(姓名与电话)***********************\n"; cout<<"\t姓名 \t\t手机号\t\t\t家庭电话 \t\t办公电话\n"; for( i=0;i<count;i++) { cout<<"\t"<<people[i].name<<"\t\t"<<people[i].phone<<"\t\t"<<people[i].homephone<<"\t\t"<<people[i].officephone<<"\n"; } cout<<"****************************************************************************\n"; infile.close(); } void addresslist::dial() //模拟打电话函数的定义 { char a[20]; //定义临时变量 ifstreaminfile("addresslist.txt",ios::binary); if(!infile) {cerr<<"打开错误!"<<endl; abort(); } for(int i=0;i<=count;i++) {infile.read((char*)&people[i],sizeof(people[i])); infile.read((char*)&count,sizeof(count));} system("cls"); cout<<"\n******************通讯录所有人的姓名信息(5人一行罗列)**********************\n"; for( i=0;i<count;i++) { cout<<"\t"<<people[i].name; if((i+1)%5==0||i==count-1) //5个人一行进行罗列 cout<<"\n"; } cout<<"**************************************************************\n"; cout<<"请选择输入上面通讯录中的一个姓名来拨打电话:\n"; cin>>a; //客户输入要拨打电话的姓名 for(i=0;i<=count;i++) { if(!(strcmp(a,people[i].name))) //判断客户输入的姓名是否在通讯录中 { cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; cout<<"\t你正在向"<<people[i].name<<"拨打电话(默认为手机号)\n \t\t"; for(intj=0;j<strlen(people[i].phone);j++) { Sleep(500); //延长500毫秒即0.5秒的时间 cout<<people[i].phone[j]; } cout<<"\n\t电话正在拨通中请稍候………\n"; cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; } } infile.close(); } void addresslist::modify() //修改函数的定义 { char a[20]; //定义临时变量,同上 ifstreaminfile("addresslist.txt",ios::binary); if(!infile) {cerr<<"打开错误!"<<endl; abort(); } for(int i=0;i<=count;i++) {infile.read((char*)&people[i],sizeof(people[i])); infile.read((char*)&count,sizeof(count));} ofstreamoutfile("addresslist.txt",ios::binary); if(!outfile) {cerr<<"打开错误!"<<endl; abort(); } system("cls"); cout<<" ****************通讯录修改信息******************* \n"; cout<<"******************通讯录中所有人的姓名信息**********************\n"; for( i=0;i<count;i++) { cout<<"\t"<<people[i].name; if((i+1)%5==0||i==count-1) //5人信息一行进行罗烈 cout<<"\n"; } cout<<"**************************************************************\n"; cout<<"请选择输入上面通讯录中的一个姓名来修改信息:\n"; cin>>a; //输入上面通讯录中的一个姓名来修改信息 system("cls"); for(i=0;i<count;i++) { if(!(strcmp(a,people[i].name))) //判断输入的姓名是否在通讯录中 { cout<<" *************"<<people[i].name<<"的所有信息如下**************\n"; cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; cout<<"\t手机号\t家庭电话\t办公电话\t电子邮件\t分组\n"; cout<<"\t"<<people[i].phone<<"\t"<<people[i].homephone<<"\t"<<people[i].officephone; cout<<"\t"<<people[i].email<<"\t"<<people[i].group<<endl; cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; cout<<"1.姓名 2.手机号3.家庭电话 4.办公电话5.电子邮件 6.分组\n"; cout<<"请输入1~6进行数据选择性修改\n"; int b; cin>>b; char c[20]; switch(b) //switch函数进行客户选择修改的内容 { case 1:cout<<"请输入新的姓名:";cin>>c;strcpy(people[i].name,c);break; case 2:cout<<"请输入新的手机号:";cin>>c;strcpy(people[i].phone,c);break; case 3:cout<<"请输入新的家庭电话:";cin>>c;strcpy(people[i].homephone,c);break; case 4:cout<<"请输入新的办公电话:";cin>>c;strcpy(people[i].officephone,c);break; case 5:cout<<"请输入新的电子邮件:";cin>>c;strcpy(people[i].email,c);break; case 6:cout<<"请输入新的分组:";cin>>c;strcpy(people[i].group,c);break; default:cout<<"你输入的操作选项错误!\n"; } } } for(int j=0;j<count;j++) {outfile.write((char*)&people[j],sizeof(people[j])); outfile.write((char*)&count,sizeof(count)); } cout<<"数据修改保存成功!"; outfile.close(); infile.close(); } voidaddresslist::deletepeople() //删除信息函数的定义 { char a[20]; //临时变量定义,同上 ifstreaminfile("addresslist.txt",ios::binary); if(!infile) {cerr<<"打开错误!"<<endl; abort(); } for(int i=0;i<=count;i++) {infile.read((char*)&people[i],sizeof(people[i])); infile.read((char*)&count,sizeof(count));} ofstreamoutfile("addresslist.txt",ios::binary); if(!outfile) {cerr<<"打开错误!"<<endl; abort(); } system("cls"); cout<<" ****************通讯录删除信息******************* \n"; cout<<"******************通讯录中所有人的姓名信息(五人一行罗列)****************\n"; for( i=0;i<count;i++) { cout<<"\t"<<people[i].name; if((i+1)%5==0||i==count-1) //五人一行进行罗列 cout<<"\n"; } cout<<"**************************************************************\n"; cout<<"请选择输入上面通讯录中的一个姓名进行删除信息:\n"; cin>>a; system("cls"); int j; for(i=0;i<count;i++) { if(!(strcmp(a,people[i].name))) //判断哪个符合进行删除 { for(j=i+1;j<count;j++) { strcpy(people[j-1].name,people[j].name); strcpy(people[j-1].phone,people[j].phone); strcpy(people[j-1].homephone,people[j].homephone); strcpy(people[j-1].officephone,people[j].officephone); strcpy(people[j-1].email,people[j].email); strcpy(people[j-1].group,people[j].group); } count--; //删除信息时,要把个数-1;进行存档 break; } } for(int k=0;k<count;k++) {outfile.write((char*)&people[k],sizeof(people[k])); outfile.write((char*)&count,sizeof(count)); } cout<<"\t\t数据删除成功!\n"; outfile.close(); infile.close(); } void addresslist::search() //查找信息函数的定义 { char a[3]; ifstreaminfile("addresslist.txt",ios::binary); if(!infile) {cerr<<"打开错误!"<<endl; abort(); } for(int i=0;i<=count;i++) {infile.read((char*)&people[i],sizeof(people[i])); infile.read((char*)&count,sizeof(count));} system("cls"); cout<<"********************查找通讯录信息*******************\n"; cout<<"\t 1.模糊查找 2.手机号码\n\t 请输入数字(1或2)进行查找信息:\n"; int b; cin>>b; if(b==1) //实现客户模糊查找(1.姓2.手机号第一位) { cout<<"请输入你要查找信息的姓(1个汉字):\n"; cin>>a; cout<<"*****************所有符合此(姓)的信息*******************\n"; cout<<"\t姓名\t手机号码\t家庭电话\t办公电话\t电子邮件\t分组\n"; for(i=0;i<count;i++) //模糊查找相同的全部列出来 { char c[3]; //定义一个临时字符数组,且初始化如下 c[0]=people[i].name[0]; c[1]=people[i].name[1]; c[2]='\0'; //这样就可以模糊查找 if(!(strcmp(&a[0],c))) //模糊查找中 { cout<<"\t"<<people[i].name<<"\t"<<people[i].phone; cout<<"\t"<<people[i].homephone<<"\t"<<people[i].officephone; cout<<"\t"<<people[i].email<<"\t"<<people[i].group<<endl; } } cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; cout<<"所有符合的信息查找完毕!"; } else //数字模糊查找,类似于上面 { cout<<"请输入你要模糊查找信息手机号码(1个数字):\n"; cin>>a; cout<<"*****************所有符合手机号的信息*******************\n"; cout<<"\t姓名\t手机号码\t家庭电话\t办公电话\t电子邮件\t分组\n"; for(i=0;i<count;i++) { char d[2]; d[0]=people[i].phone[0]; d[1]='\0'; if(!(strcmp(&a[0],d))) { cout<<"\t"<<people[i].name<<"\t"<<people[i].phone; cout<<"\t"<<people[i].homephone<<"\t"<<people[i].officephone; cout<<"\t"<<people[i].email<<"\t"<<people[i].group<<endl; } } cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; cout<<"所有符合的信息查找完毕!"; } infile.close(); } void addresslist::help() //帮助界面函数的定义 { system("cls"); cout<<"\n"; cout<<" ********************帮助******************** \n"; cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; cout<<"%% %%\n"; cout<<"%% 基于C++面向对象大二上学期课程设计 %%\n"; cout<<"%% 课设主题: 模拟手机通信录管理系统 %%\n"; cout<<"%% help: %%\n"; cout<<"%% 在该简易系统中,客户可以实现对手机电话簿的管理操作 %%\n"; cout<<"%% 1.新信息的输入,及添加功能 %%\n"; cout<<"%% 2.浏览查看功能(可以显示所有人的姓名,电话) %%\n"; cout<<"%% 3.拨号功能(在这里采用了500毫秒的暂停以实现拨号界面) %%\n"; cout<<"%% 4.在模糊查找信息时,客户需要注意只能输入一个汉字或一个数字%%\n"; cout<<"%% 5.在修改信息时,应注意可以返回再进行修改其他的信息 %%\n"; cout<<"%% 6.本程序均采用二进制存档,存档文件为addresslist.txt %%\n"; cout<<"%% 客服联系电话:15835131937 %%\n"; cout<<"%% %%\n"; cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; } void addresslist::about() //关于界面函数的定义 { system("cls"); cout<<"\n"; cout<<" ********************关于******************** \n"; cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; cout<<"%% %%\n"; cout<<"%% 基于C++面向对象大二上学期课程设计 %%\n"; cout<<"%% 课设主题: 模拟手机通信录管理系统 %%\n"; cout<<"%% 该简易系统制作者: 刘创 %%\n"; cout<<"%% 指导老师 :王俊秀 %%\n"; cout<<"%% 制作日期:2014年12月12周五 %%\n"; cout<<"%% 制作地点:太原工业学院 %%\n"; cout<<"%% @版权所有 %%\n"; cout<<"%% 客服联系电话:15835131937 %%\n"; cout<<"%% %%\n"; cout<<"%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n"; } //////////////////////////////函数定义至此结束////////////////////////////////////////////////// // 模拟手机管理系统课程设计至此结束//