c++课程设计报告通信录

上传人:仙*** 文档编号:253591351 上传时间:2025-03-16 格式:DOC 页数:27 大小:369.03KB
收藏 版权申诉 举报 下载
c++课程设计报告通信录_第1页
第1页 / 共27页
c++课程设计报告通信录_第2页
第2页 / 共27页
c++课程设计报告通信录_第3页
第3页 / 共27页
资源描述:

《c++课程设计报告通信录》由会员分享,可在线阅读,更多相关《c++课程设计报告通信录(27页珍藏版)》请在装配图网上搜索。

1、 课程设计说明书 课程名称 C++项目设计 设计题目 学生姓名 学号 专 业 指导教师 年 月 日 目录 一、系统开发相关情况 1 (一)开发背景 1 (二)系统开发的目标 1 二、系统以及需求分析 1 (一)

2、系统目标 1 三、程序功能描述以及模块结构 2 (一)功能模块描述及主要类描述 2 (二)程序流程图 3 (三)数据结构表 4 四、用户使用说明与调试结果 4 (一)使用说明 4 (二)调试结果 4 (三)优缺点分析 8 五、总结 8 参考文献: 9 附录:职工信息管理系统源码(C++) 9 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。 本文介绍了在Microsoft Visual C+

3、+ 6.0环境下开发一个通讯录的过程。 本系统界面友好,操作简单,比较实用。 一、系统开发相关情况 (一) 开发背景 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。 (二)系统开发的目标 为了更好地适应我校的要求,进一步提供全方位的信息服务通讯录在实施后应该能够达到以下的目标: ★ 能够准确地记录职工的相关信息。 ★ 系统界面友好、操作简单易行,查询灵活方便,数据储存安全可靠。 ★ 系

4、统维护安全、方便、可靠,并且能够实现实用性,先进性的要求。 二、系统以及需求分析 (一)系统目标 除了前面所述,我们所开发的系统还应该具有以下功能: ⑴ 原始数据修改简单方便; ⑵ 方便的数据查询; ⑶ 删除数据方便简单,稳定性好; ⑷ 数据计算自动完成,尽量减少人工干预; 三、程序功能描述以及模块结构 (一)功能模块描述及主要类描述 模块一:增加人员函数Add();增加通讯录基本信息。 模块二:删除人员函数Delete();删除指定的学生的基本信息。 模块三:修改人员函数Modify();修改指定的通讯录基本信息。 模块

5、四:查询人员信息函数Query();查询指定的学生信息。 模块五:数据存盘,载入函数Save()以及Load();储存与载入基本信息。 模块六:预览数据void Look();预览比较详细的信息。 模块七:删除通讯录void DesTory();删除已载入的所有的信息。 模块八:基础数据设置函数void TJ();;统计男女的人数,以及总人数。 本通讯录采用了面向对象的程序设计方法。所有的方法均以类为基础。所涉及到的类包括: class Person 基本员工类;该类是一个基类,设置了属于保护类的职工基本属性,以及构造函数Person(char ID,char *Name,in

6、t Duty)。可以给职工类型继承。 Class Manage 管理类;该类定义了管理函数,即前文所述八个模块功能的实现方法,链表的使用也包括其中。此类的作能在于将所有功能模块集成并定义本系统使用的主要方法。 (二)程序流程图 开始 定义变量 数据处理 调用输出函数 Y N 输入C的值 C>=1&&C<=8 调用保存函数 调用预览函数 调用清除函数 调 用 查询 函数 调用输出函数 调用修改函数 调用删除函数 调用新增函数 调用统计函数

7、 退出系统 图 3-1 程序流程图 (三)数据结构表 序号 成员名 数据类型 长度 字段含义 1 No string 学号 2 Name char 20 名字 3 Sex char 10 性别 4 Tel string 20 联系方式 5 Age string 年龄 表3-1 数据结构表 四、用户使用说明与调试结果 (一)使用说明 这是一个关于职工信息管理系统,具有录入、输出、删除、查询、修改、保存、统计等功能,建立了一个含有学号、姓名、性别、联

8、系方式等成员的类的变量class Person 。已从文本录入了范例数据。调试过程中,可按照有关提示进行相关操作: 增加通讯录按“1”键; 删除通讯录按“2”键; 修改通讯录按“3”键; 查询详细通讯录按“4”键; 保存通讯录数据设置按“5”键; 预览通讯录按“6”键; 清除通讯录按“7”键; 统计数据按“8”键。 (二)调试结果 ★代码中运用了switch 语句调用各子函数,数字 1、2、3、4、5、6、7、8等七个数字代表不同的指令。 ★系统启动时,会自动在存放该系统的磁盘根目录之下装入一个数据文件:person.txt,调试时一个数据文件都已经写入部分数据,

9、使用功能“6-预览通讯录”,显示如下: ★指令“n”为退回主界面,“y”代表进入查询详细信息界面:可以按照学号、名字、电话号码查找较详细信息 ★指令“2-删除通讯录”代表调用删除人员函数Delete(),要求操作者输入职工的相关ID,系统根据操作者输出的ID,找出对应的记录,然后删除该职工的信息,如果删除的是第一个结点,则 p1->next,指向第二个结点;下图示范了删除第一个节点之后的显示结果: 如果删除的是第i个(0< i

10、员函数Modify(),体统根据操作者输入的ID找到对应的记录,将新输入的数据对应地赋给要修改的各成员。 ★指令“5-保存数据”表示调用存盘函数Save(),输入“Y”或者“N”以进一步操作。 ★指令“8-统计”,调用TJ();函数,按照男、女统计人数: ★指令“7-清除通讯录”,调用DesTory()清除已存数据: (三)优缺点分析 优点: ★ 系统中包含了输入、输出、保存、删除、查询、修改等多种功能,系统操作灵活性较强,功能较强大; ★ 可以随意地选择不同的指令进行操作; ★ 排版效果清晰明了,美观; ★ 操作简单方便。 缺点: ★ 由于该系统对数

11、据采用文本保存方式,所以安全性不可靠。 ★ 采用链表结构操作,不能支持超大量的数据,否则运行缓慢。 五、总结 本次设计我们选择的题目是通讯录。因为事先的计划非常明确,所以我们在完成这个设计的过程也是比较顺利的。在系统分析和设计的部分仍然花了比较多的时间。模块设计部分因为涉及功能的实现,要从抽象的设计转化成实际的代码,因此对于某项功能的实现方法都思考得比较详尽。加上在开发系统之前,我们阅读很多与本系统有相关内容的书籍以做参考,使得此次系统编写能顺利进行。由于班里每个人都需要做一份设计,所以我们经常互相交流。在交流的时候经常能够互相提出更好的建议。 经过对通讯录的分析与编写,我

12、得到了很大的收获。自主学习的必要性更是解决问题的基础。这次设计使我重温了以前学过的各科知识,让我对C++编程有了更深刻的认识。除了对系统作出正确的分析,实际的调查工作对系统的整体设计有着至关重要的作用。所以在分析系统之前,我花了一些时间在公司的实际管理工作调查上。也因为这样,如何编写代码逐渐变得明朗。每一个功能模块经过调查后后,各个功能逐渐显露出来,然后,反复探讨,验证这项功能是否有存在的必要,是否可以改进得更好。在这样的前提下,最后顺利完成了这份设计。 这次C++系统设计作业,提升了我分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。从这次设计学到的东西,相信会对我们日

13、后的学习工作起到很大的指导作用 附录:通讯录系统源码(C++) #include #include #include #include #include //#include using namespace std; string ID;//具有唯一性 class Person { protected: string No; //学号 string Age; char Name[20]; //姓名 char Sex[10];

14、 //性别 string Tel; //联系方式 Person *next; public: Person(string ID,char *Name,char *Sex,string Age,string Tel) { strcpy(this->Name,Name); strcpy(this->Sex,Sex); this->Tel=Tel; this->No=ID; this->Age=Age; } friend class Manage; }; class Manage { private: Person *

15、person; public: Manage() { person=0; Load(); } ~Manage() { Person *p; p=person; while(p) { p=p->next; delete person; person=p; } person=0; } void Find(char Name[20]);//按姓名查找 void Find(string ID);//按编号查找 void Add(); //添加加信息 void De

16、lete(); //删除信息 void Modify(string ID); //修改信息 void Query(); //查询信息 void TJ(); //清除文件信息 void Save(); //保存数据 void Load(); //读入数据 void Look();//预览 void DesTory(); void Output(Person *p) { cout<<"\t\t学号: "<No<Name<

17、Sex<Age<Tel<>No;

18、 cout<No==No) { break; } else { p1=p1->next; } } if(p1!=NULL) { cout<<"该学号已存在,是否修改该学生信息(Y/N) "<>c; if(toupper(c)=='Y') { cout<<"该学生信息为:"<

19、 Find(No); cout<>Name; cout<>Sex; cout<>Age; cout<>Tel; cout<

20、Name,Sex,Age,Tel); p->next=0; //学生结点加入链表 if(person) //若已经存在结点 { p2=person; while(p2->next) //查找尾结点 { p2=p2->next; } p2->next=p; //连接 } else //若不存在结点(表空) { person=p; //连接 } system("cls"); cout<<"\t\t\t ***添加成功***\n"<

21、) "<>c; if(toupper(c)=='Y') { Add(); return ; } else return ; } void Manage::Delete() //删除人员 { system("cls"); char c; string No; cout<<"\n** 删除信息 **\n"; cout<<"输入要删除的学生ID:\t"; cin>>No; cout<

22、n; while(p1) { if(p1->No==No) break; else { p2=p1; p1=p1->next; } } //删除结点 if(p1!=NULL)//若找到结点,则删除 { cout<<"所要删除的学生的信息如下:\n"<>c; if(toupper(c)!='Y') return; // system("pause"); if(

23、p1==person) //若要删除的结点是第一个结点 { person=p1->next; delete p1; } else //若要删除的结点是后续结点 { p2->next=p1->next; delete p1; } cout<<"\t\t***删除成功***\n"; cout<<"是否继续删除(Y/N) "<>c; if(toupper(c)=='Y') { Delete(); return ; } else

24、 return ; } else //未找到结点 cout<<"未找到该学生!\n"; getch(); } void Manage::Modify(string ID) { Person *p1; char c; p1=person; while(p1) { if(p1->No==ID) break; else { p1=p1->next; } } if(p1!=NULL)//若找到结点 { system("cls"); cout<<"所要修改的学生

25、的信息如下:\n"<>c; if(c!='5') cout<<"请输入新的信息: "; switch(c) { case '1': cin>>p1->Name; break; case '2': cin>>p1->Sex; break; case '3

26、': cin>>p1->Age; break; case '4': cin>>p1->Tel; break; default: break; } }while(c!='5'); system("cls"); cout<<"\t ***修改成功***\n"<>c; if(toupper(c)=='Y') { cout<<"请输入要修改人员的ID: "; cin>>ID; cout<

27、return ; } else return ; } else //未找到结点 cout<<"未找到该学生!\n"; getch();//暂停 } void Manage::Save() //数据写入到文件 { ofstream fPerson("Person.txt",ios::out); char c; cout<<"\n保存数据,是否继续?[Y/N]:"; cin>>c; if(toupper(c)!='Y') return; Person *p=person; while(p) {

28、 fPerson<No<<" "<Name<<" "<Sex<<" "<Age<<" "<Tel<next; } fPerson.close(); cout<<"\n保存成功...\n"; system("pause"); } void Manage::Load() //数据读入 { ifstream fPerson; Person *p=person; string No,Age,Tel; char Name[20],Sex[10]; fPerson.ope

29、n("person.txt",ios::in); fPerson>>No>>Name>>Sex>>Age>>Tel; while(fPerson.good()) { p=new Person(No,Name,Sex,Age,Tel); p->next=0; //员工结点加入链表 if(person) //若已经存在结点 { Person *p2; p2=person; while(p2->next) //查找尾结点 { p2=p2->next; } p2->nex

30、t=p; //连接 } else //若不存在结点(表空) { person=p; //连接 } fPerson>>No>>Name>>Sex>>Age>>Tel; } fPerson.close(); } void Manage::Find(string ID) { Person *p1; p1=person; while(p1) { if(p1->No==ID) break; else { p1=p1->next; } } if(p1!=N

31、ULL) { Output(p1); } else cout<<"未找到该学生"<Name,Name)==0) { count++; Output(p1); } p1=p1->next; } if(count) { cout<<"\t查询成功!!!"<

32、 cout<<"\n共找到 "<>c; // system("cls"); cout<

33、) { case '1': { cout<<"输入学号 ID: "; cin>>ID; Find(ID); }; break; case '2': { cout<<"输入姓名 Name: "; cin>>Name; Find(Name); }; break; case '3': { cout<<"输入电话号码 Tel"<>Tel; Find(Tel); };break; case '4':break; default: c

34、out<<"输入有误 请重新输入!!!\n"<>c; if(toupper(c)=='Y') { Query(); return ; } else return ; system("pause"); } void Manage::Look() { //设置字体颜色 S

35、etConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN); system("cls"); Person *p1; int count=0; char c; p1=person; while(p1) { cout<<"ID: "<No<<"\t姓名: "<Name<next; }

36、 if(count!=0) { cout<<"\n\t\t预览成功!!! \n"<>c; if(toupper(c)=='Y') { Query(); return; } else return ; } else { cout<<"尚未创建通讯录,是否创建(Y/N)"<>c; if(toupper(c)=='Y') { Add(); return; }

37、 else return ; } } void Manage::DesTory() { //设置字体为红色 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED); char c; system("cls"); cout<<"\n\t\t\t** 清除信息 **\n"; cout<<"警告:\n 清除通讯录信息会导致您保存的信息完全消失!!!\n"<

38、决定清除通讯录信息(Y/N): "<>c; if(toupper(c)!='Y') return; cout<<"请再次确认(Y/N)"<>c; if(toupper(c)!='Y') return; else { Person *p; p=person; while(p) { p=p->next; delete person; person=p; } person=0; // ofstream fPerson("pe

39、rson.txt"); // fPerson.close(); } system("pause"); } void Manage::TJ() { Person *p1; int count=0,Boy=0,Girl=0; p1=person; while(p1) { count++; if(strcmp(p1->Sex,"男")==0) Boy++; if(strcmp(p1->Sex,"女")==0) Girl++; p1=p1->next; } cout<<"\n总共有 "<

40、\n"<

41、 =========================================="<

42、☆\t 4.查询详细信息 \t☆ ★"<

43、 cout<<" =========================================="<>c; switch(c) { case 1: m.Add(); break; case 2: m.Delete();break; case 3: { system("cls"); cout<<"请输入要修改人员的ID: "; cin>>ID; cout<

44、y(ID); };break; case 4: { system("cls"); m.Query(); }; break; case 5: m.Save(); break; case 6: m.Look(); break; case 7: m.DesTory(); break; case 8: m.TJ(); break; default: break; } }while(c!=0); char s; cout<<"\n★是否要保存您的所有操作(Y/N): "<>s; if(toupper(s)=='Y') m.Save(); return 0; } 25

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!