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

上传人:文库蛋蛋多 文档编号:2384501 上传时间:2023-02-17 格式:DOC 页数:26 大小:316KB
返回 下载 相关 举报
c++课程设计报告通信录.doc_第1页
第1页 / 共26页
c++课程设计报告通信录.doc_第2页
第2页 / 共26页
c++课程设计报告通信录.doc_第3页
第3页 / 共26页
c++课程设计报告通信录.doc_第4页
第4页 / 共26页
c++课程设计报告通信录.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《c++课程设计报告通信录.doc》由会员分享,可在线阅读,更多相关《c++课程设计报告通信录.doc(26页珍藏版)》请在三一办公上搜索。

1、 课程设计说明书课程名称 C+项目设计 设计题目 学生姓名 学号 专 业 指导教师 年 月 日 目录一、系统开发相关情况1(一)开发背景1(二)系统开发的目标1二、系统以及需求分析1(一)系统目标1三、程序功能描述以及模块结构2(一)功能模块描述及主要类描述2(二)程序流程图3(三)数据结构表4四、用户使用说明与调试结果4(一)使用说明4(二)调试结果4(三)优缺点分析8五、总结8参考文献:9附录:职工信息管理系统源码(C)9随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机

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

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

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

5、,即前文所述八个模块功能的实现方法,链表的使用也包括其中。此类的作能在于将所有功能模块集成并定义本系统使用的主要方法。(二)程序流程图开始定义变量数据处理调用输出函数YN输入C的值C=1&Cnext,指向第二个结点;下图示范了删除第一个节点之后的显示结果:如果删除的是第i个(0 i n)就把下一个结点地址赋给前一个结点地址;如果找不到对应的ID,则不会删除任何一个记录,并输出“未找到!”。指令“3修改人员”代表调用修改人员函数Modify(),体统根据操作者输入的ID找到对应的记录,将新输入的数据对应地赋给要修改的各成员。指令“5保存数据”表示调用存盘函数Save(),输入“Y”或者“N”以进

6、一步操作。指令“8统计”,调用TJ();函数,按照男、女统计人数:指令“7清除通讯录”,调用DesTory()清除已存数据:(三)优缺点分析优点: 系统中包含了输入、输出、保存、删除、查询、修改等多种功能,系统操作灵活性较强,功能较强大; 可以随意地选择不同的指令进行操作; 排版效果清晰明了,美观; 操作简单方便。缺点: 由于该系统对数据采用文本保存方式,所以安全性不可靠。 采用链表结构操作,不能支持超大量的数据,否则运行缓慢。五、总结本次设计我们选择的题目是通讯录。因为事先的计划非常明确,所以我们在完成这个设计的过程也是比较顺利的。在系统分析和设计的部分仍然花了比较多的时间。模块设计部分因为

7、涉及功能的实现,要从抽象的设计转化成实际的代码,因此对于某项功能的实现方法都思考得比较详尽。加上在开发系统之前,我们阅读很多与本系统有相关内容的书籍以做参考,使得此次系统编写能顺利进行。由于班里每个人都需要做一份设计,所以我们经常互相交流。在交流的时候经常能够互相提出更好的建议。经过对通讯录的分析与编写,我得到了很大的收获。自主学习的必要性更是解决问题的基础。这次设计使我重温了以前学过的各科知识,让我对C编程有了更深刻的认识。除了对系统作出正确的分析,实际的调查工作对系统的整体设计有着至关重要的作用。所以在分析系统之前,我花了一些时间在公司的实际管理工作调查上。也因为这样,如何编写代码逐渐变得

8、明朗。每一个功能模块经过调查后后,各个功能逐渐显露出来,然后,反复探讨,验证这项功能是否有存在的必要,是否可以改进得更好。在这样的前提下,最后顺利完成了这份设计。 这次C系统设计作业,提升了我分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。从这次设计学到的东西,相信会对我们日后的学习工作起到很大的指导作用附录:通讯录系统源码(C)#include#include#include#include#include/#includeusing namespace std;string ID;/具有唯一性class Personprotected: string No; /学号string

9、 Age;char Name20; /姓名char Sex10; /性别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 Manageprivate:Person *person;public:Manage()person=0;Lo

10、ad();Manage() Person *p; p=person; while(p) p=p-next; delete person; person=p; person=0; void Find(char Name20);/按姓名查找 void Find(string ID);/按编号查找void Add(); /添加加信息 void Delete(); /删除信息 void Modify(string ID); /修改信息void Query(); /查询信息 void TJ(); /清除文件信息void Save(); /保存数据 void Load(); /读入数据void Look(

11、);/预览void DesTory();void Output(Person *p)couttt学号: Noendl;couttt姓名: Nameendl;couttt性别: Sexendl;couttt年龄: Ageendl;couttt联系电话: Telendl;coutendl;void Manage:Add()system(cls);Person *p,*p2; /新结点指针 string No,Age,Tel;char Name20,Sex10; char c;coutn* 新增学生通讯录 *n; /输入学生信息 coutNo; coutNo=No) break; else p1=p

12、1-next; if(p1!=NULL)cout该学号已存在,是否修改该学生信息(Y/N) c;if(toupper(c)=Y)cout该学生信息为:endl;Find(No);coutendl;Modify(No);return ;elsereturn ;coutName; coutendl;coutSex;coutendl;coutAge;coutendl;coutTel;coutnext=0;/学生结点加入链表 if(person) /若已经存在结点 p2=person; while(p2-next) /查找尾结点 p2=p2-next; p2-next=p; /连接 else /若不存

13、在结点(表空) person=p; /连接 system(cls);coutttt *添加成功*nendl;cout是否继续添加(Y/N) c;if(toupper(c)=Y)Add();return ;elsereturn ;void Manage:Delete() /删除人员 system(cls);char c;string No; coutn* 删除信息 *n; coutNo; coutNo=No) break; else p2=p1; p1=p1-next; /删除结点 if(p1!=NULL)/若找到结点,则删除 cout所要删除的学生的信息如下:nendl;Output(p1);

14、coutc;if(toupper(c)!=Y)return;/system(pause);if(p1=person) /若要删除的结点是第一个结点 person=p1-next; delete p1; else /若要删除的结点是后续结点 p2-next=p1-next; delete p1; couttt*删除成功*n;cout是否继续删除(Y/N) c;if(toupper(c)=Y)Delete();return ;elsereturn ; else /未找到结点 coutNo=ID) break; else p1=p1-next; if(p1!=NULL)/若找到结点 system(c

15、ls);cout所要修改的学生的信息如下:nendl;Output(p1);docout1. 修改姓名 2. 修改性别 3. 修改年龄 4. 修改联系方式 5. 退出修改 nendl;cout请选择(1-5)要修改的信息nc;if(c!=5)coutp1-Name; break;case 2: cinp1-Sex; break;case 3: cinp1-Age; break;case 4: cinp1-Tel; break;default: break;while(c!=5);system(cls);coutt *修改成功*nendl;cout是否继续修改(Y/N): c;if(touppe

16、r(c)=Y)coutID;coutendl;Modify(ID);return ;elsereturn ; else /未找到结点 cout未找到该学生!n; getch();/暂停 void Manage:Save() /数据写入到文件 ofstream fPerson(Person.txt,ios:out); char c; coutc; if(toupper(c)!=Y)return; Person *p=person; while(p) fPersonNo Name Sex Age Telnext; fPerson.close(); coutNoNameSexAgeTel;while

17、(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-next=p; /连接 else /若不存在结点(表空) person=p; /连接 fPersonNoNameSexAgeTel;fPerson.close(); void Manage:Find(string ID)Person *p1;p1=person;while(p1) if(p1-No=

18、ID) break; else p1=p1-next; if(p1!=NULL)Output(p1);elsecout未找到该学生Name,Name)=0)count+;Output(p1);p1=p1-next; if(count)coutt查询成功!endl;coutn共找到 count 个名字为 Name 的同学nendl;elsecoutntt未找到该学生!nendl;void Manage:Query()char c;string ID,Tel;char Name20;docout1. 按学号查找 2. 按名字查找 3. 按电话号码查找 4.退出查找c;/system(cls);co

19、utendl;switch(c)case 1: coutID;Find(ID); ; break;case 2: coutName;Find(Name); ; break;case 3: cout输入电话号码 TelTel;Find(Tel);break;case 4:break;default: cout输入有误 请重新输入!nendl;while(c!=1&c!=2&c!=3&c!=4);coutttt *查找成功*nendl;cout是否继续查找(Y/N) c;if(toupper(c)=Y)Query();return ;elsereturn ;system(pause);void M

20、anage:Look()/设置字体颜色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);system(cls);Person *p1;int count=0;char c;p1=person;while(p1) coutID: Not姓名: Namenext; if(count!=0)coutntt预览成功! nendl;coutc;if(toupper(c)=Y)Query();return;elsereturn ;

21、elsecout尚未创建通讯录,是否创建(Y/N)c;if(toupper(c)=Y)Add();return;elsereturn ;void Manage:DesTory()/设置字体为红色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED);char c;system(cls);coutnttt* 清除信息 *n;cout警告:n 清除通讯录信息会导致您保存的信息完全消失!nendl;cout是否决定清除通讯录信息(Y/N): c;if(toupper(

22、c)!=Y)return;cout请再次确认(Y/N)c;if(toupper(c)!=Y)return;elsePerson *p; p=person; while(p) p=p-next; delete person; person=p; person=0;/ofstream fPerson(person.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

23、(strcmp(p1-Sex,女)=0)Girl+;p1=p1-next; coutn总共有 count份通讯录nendl;cout男生: Boyt 女生: Girlnendl;system(pause);int main(void)Manage m;int c;do /设置字体为绿色 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN);system(cls);cout =endl;cout t 1.新增通讯录 t endl;cout t 2.删除通讯录

24、 t endl;cout t 3.修改通讯录 t endl;cout t 4.查询详细信息 t endl;cout t 5.保存数据 t endl;cout t 6.预览信息 t endl;cout t 7.清除通讯录 t endl;cout t 8.统计 t endl;cout =endl;coutc;switch(c) case 1: m.Add(); break; case 2: m.Delete();break; case 3: system(cls);coutID;coutendl;m.Modify(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;coutn是否要保存您的所有操作(Y/N): s;if(toupper(s)=Y)m.Save();return 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号