中国矿业大学银川学院面向对象程序设计课程设计报告(2011/2012学年第二学期)题目名称个人通信录管理系统系部机电动力与信息工程系专业计算机科学与技术班级 10级计算机姓名 xxx学号 120100510062 完成时间 2011年 6 月指导老师 xxx引言: (3)1 课程设计目的及意义 (5)2 详细设计 (5)2.1需求描述 (5)2.1.1通讯录界面设计 (5)2.1.2通讯录添加联系人模块 (5)2.1.3通讯录删除联系人模块 (5)2.1.4通讯录拨号模块 (6)2.1.5通讯录显示所有联系人模块 (6)2.1.6通讯录修改联系人模块 (6)主要是修改联系人的信息,界面提示要输入需要修改的姓名或者电话号码,如果不正确,显示对不起,联系人中没有你找的人。
如果正确,则显示出改联系人的所有信息,并提示根据下面提示修改信息,姓名、电话号、QQ、邮编、地址等 (6)2.1.7通讯录关闭通讯录模块 (6)提示谢谢使用! (6)2.2功能描述 (6)2.2.1添加联系人; (6)2.2.2删除联系人 (8)2.2.3拨号 (11)2.2.4显示所有联系人的实现: (12)2.2.5 修改联系人模块 (13)2.2.6 查询联系人模块 (17)对文件进行遍历,将联系人的所有信息都显示出来。
(17)2.2.7关闭通讯录模块 (19)提示谢谢使用! (19)2.2.8主函数 (19)2.3程序用行说明 (20)2.3.1程序界面 (20)2.3.2添加联系人信息 (20)2.3.3删除联系人 (21)2.3.4拨号 (23)2.3.5显示所有联系人 (23) (23)2.3.6修改联系人信息 (23)2.3.7查询联系人 (24)2.3.8关闭通讯录 (24)3课程设计总结 (25)3.1编程日志 (25)3.2测试报告 (25)4 心得体会: (25)附录: (26)参考文献: (43)引言:当今时代,计算机已经成为人们生活中不可缺少的一部分,它打破了地域时间限制,改变了人们的工作和生活方式,制作站点是企业和个人的宣传自己的重要手段,同时也学习信息的重要手段,今年来,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在Internet中的广泛应用,Web站点向用户提供的服务将越来越丰富,越来越人性化.计算机在管理中应用的普及,利用计算机实现各种管理势在必行,对于机关单位来说,利用计算机支持高效率完成通讯录,是适应社会制度要求、推动机关单位信息利用计算机支持高效率完成通讯管理,是适应现在社会制度要求、推动机关单位信息管理走向科学化、规范化的必要条件。
随着社会的发展及知识经济时代的到来,管理信息系统在各行各业发挥着越来越重要的作用。
通信录管理系统是典型的信息管理系统。
通信录管理系统的水平,是衡公司发展水平的一个重要指标。
通信录管理系统工作烦琐,包含了大量的信息数据,因此就需要一个完善的职工信息管理系统来实现对这些数据的有效管理,满足公司管理者的需求。
随着科学技术的发展,计算机领域不断取得新的研究成果。
计算机的应用越来越广泛.计算机知识也越来越普及.计算机的应用也不仅仅局限于科学研究方面.计算机的应用与我们的生活息息相关.在学校里学生的成绩管理系统,在日常生活中给我们带来很大方便的通讯录,都与计算机的管理系统有关,都是通过程序设计,开发,调试形成的管理系统.将网络和通讯录管理结合起来。
使得组会人员对参考人员的实际情况一目了然,经过详细的系统调查,开发出的操作简单而且方便使用的一个通讯系统。
实现参会代表的动态管理,使得对信息的管理更加方便,同时计算机具有手工管理所无法比拟的优点。
例如:检索迅速、查找方便、可靠性高、存储量大、保密性好。
这样组会人员在工作起来效率高,可以不用再做大量的记录。
从而大大减轻了机关单位职员的工作量。
运用数据结构中的算法思想作数据结构,结合C语言基本知识,编写一个通讯录管理系统。
通过完成本课题,进一步熟悉C++语言的基本知识,并掌握数据结构的一些基本算法思想,掌握C++语言的文件操作,进一步熟悉指针的用法,数组的建立运用和函数的调用等,更好地掌握好C++的知识,用理论联系实际更好的锻炼我们接受信息、用运信息的能力。
通讯录系统就是一个典型的事例,它为人们解决了信息存储混乱的问题。
通讯录系统能方便用户的需求,满足用户迅速、准确的查找修改或者删除联系人信息,把各个联系人的信息以文档保存。
本文介绍了简易通讯录管理系统在Microsoft Visual C++ 6.0环境下的实现过程:系统的分析,功能模块的设计,系统的调试和测试。
此系统的主要管理的信息有:联系人的姓名,,年龄,性别,部门联系人的号码等.加深对C++语言程序设计的理解,提高算法设计的能力,锻炼编程的能力。
用C++语言编写一个通讯录管理系统软件,要求能实现通讯录管理系统中增加新记录, 删除记录, 显示通讯录的所有信息, 按名字查询信息, 保存通讯录,拨号,退出系统。
1 课程设计目的及意义《面向对象程序设计》课程设计是实践性教学环节之一,是《面向对象程序设计》课程的辅助教学课程。
该课程设计要求学生综合运用在《面向对象程序设计》课程中学到的面向对象技术与实际编程相结合,独立完成一项较为完整、并具有一定实际功能的课程设计任务,同时加深学生对面向对象和C++编程技术的理解和掌握,培养实际的应用程序开发能力。
在课程设计过程中,使学生养成良好的程序设计风格,并掌握C++应用程序的设计开发过程和编程方法、测试方法。
2 详细设计2.1需求描述2.1.1通讯录界面设计主要功能是设计通讯录的界面,能够提示用户的实际操作等。
我采用的是按照序号来实现相应的操作的,其中:1添加联系人,2删除联系人,3拨号,4显示所有联系人,5修改信息,6查询联系人,7 关闭通讯录2.1.2通讯录添加联系人模块主要功能是添加联系人模块,添加操作是根据用户的要求实现的。
包括添加联系人的姓名、电话、QQ、邮编、地址、部门等,最后输入完成后,将提示信息“新联系人信息已经保存好!!”。
2.1.3通讯录删除联系人模块主要功能是删除不再需要的联系人。
其中包括输入你要删除输入电话或电话号码如果没有的话,将提示:“对不起!!!联系人中没你要找的人!!!”;如果找到,则提示:“删除联系人的所有信息和这个人的信息已经从你的通讯录中删除的信息!”2.1.4通讯录拨号模块显示查找的联系人,包括姓名及电话号码,如果查找到姓名则输出电话号码,如果找不到则返回信息"对不起!!!!没有找到文件!!!!!"2.1.5通讯录显示所有联系人模块显示所有的联系人的信息,包括姓名、电话、QQ、邮编、地址并提示所有联系人已经全部显示出来!!2.1.6通讯录修改联系人模块主要是修改联系人的信息,界面提示要输入需要修改的姓名或者电话号码,如果不正确,显示对不起,联系人中没有你找的人。
如果正确,则显示出改联系人的所有信息,并提示根据下面提示修改信息,姓名、电话号、QQ、邮编、地址等2.1.7通讯录关闭通讯录模块提示谢谢使用!2.2功能描述2.2.1添加联系人;通过输入联系人的如下信息:姓名、电话、QQ、邮编、地址,并把输入的信息保存对象的属性,创建或者打开文件,并向文件中写入新添加的联系人信息添加联系人的具体代码:void person::add_person() //在类外定义成员函数add_person{ cout <<endl <<"根据下面提示输入新联系人信息" <<endl <<endl<<"姓名 :" ; //输出姓名cin >>name; //输入namefflush(stdin);cout <<"电话 : "; //输出电话号码cin >>number; //输入numberfflush(stdin);cout <<"QQ : "; //输出QQ号cin >>qq; //输入qq号fflush(stdin);cout <<"邮编 : "; //输出邮编cin >>post; //输入postfflush(stdin);cout <<"地址 : "; //输出地址cin >>address; //输入addressfflush(stdin);cout<<"部门"; //输出部门cin>>dept; //输入deptfflush(stdin);cout<<"性别"; //输出性别cin>>sex; //输入sexfflush(stdin);cout<<"年龄"; //输出年龄cin>>age; //输入agefflush(stdin);save_new(); //保存新增加的联系人cout <<endl <<endl <<"新联系人信息已经保存好!!!!!" <<endl <<endl;//输出"新联系人信息已经保存好!!!!!"system("pause");//系统暂时停顿||暂停}2.2.2删除联系人首先输入你要删除电话号码,删除操作时采用输入的姓名或者电话号码与文件中的姓名或者电话号码比较,从头到尾开始遍历,如果没有的话,将提示:对不起!!!联系人中没你要找的人!!!如果找到,则提示删除联系人的所有信息和这个人的信息已经从你的通讯录中删除的信息!void person::del_person()//在类外定义成员函数{ofstream outData("temp.txt", ios::out);//定义ofstream类的对象outdDtaifstream inData("pperson.txt", ios::in);//定义ofstream类的对象inDataif (!outData || !inData)//if语句{cout <<endl <<"对不起!!!!找不到文件!!!!" <<endl;//输出"对不起!!!!找不到文件!!!!"system("pause");//系统暂时停顿||暂停return;//返回上述信息}string sign;//定义string类对象signcout <<endl <<"你要删除输入姓名或电话号 :";//输出"你要删除输入姓名或电话号 :"cin >>sign;//输入signstring str1; //定义string类对象str1bool flag = true;string str; //定义string类对象strwhile (inData >>name >>number)//while语句{getline(inData, str);//函数用于输入流,读取字符到buffer中的strif ((sign==name) || (sign==number))//判断输入信息是否与所存信息相同,相同则进行下述操作{cout <<endl <<"你想删除的联系人:" <<endl <<endl;//输出"你想删除的联系人:"cout <<str1 <<endl;//输出对象str1cout <<setiosflags(ios::left) <<setw(17) <<name<<" " <<number <<str <<endl;//显示出姓名、编号flag = false;break;//跳出if语句}outData <<setiosflags(ios::left) <<setw(17) <<name<<" " <<number <<str <<endl;//显示出姓名、编号}if (flag) //if语句{cout <<endl <<"对不起!!!联系人中没你找的人!!!!" <<endl <<endl;//输出 "对不起!!!联系人中没你找的人!!!!"}else //否则进行下述操作{while (getline(inData, str)) //while语句{outData <<str <<endl; //显示str}outData.close(); //关闭inData.close(); //关闭ofstream out("pperson.txt", ios::out);//定义类 ofstream的对象out ||ofstream输出ifstream in("temp.txt", ios::in);//定义ifstream的对象in|| ifstream输入if (!out || !in) //if语句{cout <<endl <<"对不起不能打开文件!!!" <<endl <<endl;//输出"对不起不能打开文件!!!"system("pause"); //系统暂时停顿||暂停return; //返回}while (getline(in, str)) //while语句{cout <<str <<endl; //定义string类对象str}out.close(); //关闭输出in.close(); //关闭输入cout <<endl <<"这个人的信息已经从你的通迅录中删除!!!" <<endl <<endl;//输出"这个人的信息已经从你的通迅录中删除!!!"}system("pause"); //系统暂时停顿||暂停 }2.2.3拨号输入姓名查找到后将姓名与电话显示出来,代码如下:void person::dial_person() //拨号{ifstream inData("pperson.txt",ios::in);//定义ifstream类的对象inDatabool flag = false;if (!inData) //if语句{cout <<endl <<"对不起!!!!没有找到文件!!!!!" <<endl;//输出"对不起!!!!!!!!!没有找到文件"system("pause"); //系统暂时停顿||暂停return; //返回}elseflag = true;string name1,numer1;while(getline(inData,name1)){if(flag){cout<<endl<<"所有联系人信息如下: "<<endl;cout<<name1<<","<<numer1<<endl;} system("pause"); //系统暂时停顿||暂停}}2.2.4显示所有联系人的实现:把文件中的各种信息读取并显示出来,代码如下://显示所有联系人void person::show_all() //在类外定义成员函数{ifstream inData("pperson.txt",ios::in);//定义ifstream类的对象inDataif (!inData) //if语句{cout <<endl <<"对不起!!!!没有找到文件!!!!!" <<endl;//输出"对不起!!!!没有找到文件!!!!!"system("pause"); //系统暂时停顿||暂停return; //返回}bool flag = true;string record; //定义string类对象recordwhile (getline(inData, record)) //while语句{if (flag) //if语句{cout <<endl <<"所有联系人信息如下: "<<endl;//输出"所有联系人信息如下: "}cout <<record <<endl; //输出recordflag = false;}if (flag) //如果{cout <<endl <<"你的通迅录中没有联系人!!!!!" <<endl <<endl;//输出"你的通迅录中没有联系人!!!!!"}else //否则{cout <<endl <<"所有联系人已经全部显示出来!!!!!" <<endl <<endl;//输出"所有联系人已经全部显示出来!!!!!"}system("pause"); //系统暂时停顿||暂停}2.2.5 修改联系人模块只要输入来联系人的名字或者电话,进行文件爱你的遍历查找到联系人的信息,而后进行修改。