《程序设计综合课程设计报告通讯录系统 .doc》由会员分享,可在线阅读,更多相关《程序设计综合课程设计报告通讯录系统 .doc(27页珍藏版)》请在三一办公上搜索。
1、 华科学院信息管理与信息系统专业程序设计综合课程设计报告 (2011/2012学年 第一学期)学生姓名: 学生班级: 信管102201H学生学号: 指导教师: 2011年12月30日目 录一 课程设计目的 1二 课程设计任务和内容 1三 系统设计方案 2 3.1系统详细描述23.2功能模块划分2四 系统实现与测试 34.1 流程图 34.2 数据结构表 44.3 使用说明与调试结果 44.3.1 使用说明 44.3.2 调试结果 5五 优缺点分析 8六 参考文献 8七 附录 9一、课程设计的目的1) 学习综合运用C高级语言课程和其他先修课程的知识,提高分析和解决实际问题的的能力,进一步巩固、加
2、深和拓宽所学的知识;进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。2) 全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法;独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。3) 掌握程序设计中的常用算法和C语言的编程技巧和上机调试程序的方法。4) 在参与一系列子项目的实践过程中,提高如何综合运用所学知识解决实际问题的能力,以及获得相关项目管理和团队合作等众多方面的具体经验。二、课程设计任务和内容按照如下要求,运用C+语言,编写一套可用的较为完善的通讯录管理系统软件1)增加通讯录基本信息。2)删除指定的学生的基本信息。3)修改指定的通讯录基本
3、信息。4)查询指定的学生信息。5)储存与载入基本信息。6)预览比较详细的信息。7)删除已载入的所有的信息。8)统计男女的人数,以及总人数。三、系统设计方案3.1系统详细描述3.1.1系统设计背景随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。3.1.2系统设计详细信息 能够准确地记录职工的相关信息。 系统界面友好、操作简单易行,查询灵活方便,数据储存安全可靠。 系统维护安全、方便、可靠,并且能够实现实用性,先进性的要求。
4、除了前面所述,我们所开发的系统还应该具有以下功能: 原始数据修改简单方便; 方便的数据查询; 删除数据方便简单,稳定性好; 数据计算自动完成,尽量减少人工干预;3.2功能模块划分3.2.1功能模块描述模块一:增加人员函数Add();增加通讯录基本信息。模块二:删除人员函数Delete();删除指定的学生的基本信息。模块三:修改人员函数Modify();修改指定的通讯录基本信息。模块四:查询人员信息函数Query();查询指定的学生信息。模块五:数据存盘,载入函数Save()以及Load();储存与载入基本信息。模块六:预览数据void Look();预览比较详细的信息。模块七:删除通讯录voi
5、d DesTory();删除已载入的所有的信息。模块八:基础数据设置函数void TJ();;统计男女的人数,以及总人数。本通讯录采用了面向对象的程序设计方法。所有的方法均以类为基础。所涉及到的类包括:class Person 基本员工类;该类是一个基类,设置了属于保护类的职工基本属性,以及构造函数Person(char ID,char *Name,int Duty)。可以给职工类型继承。Class Manage 管理类;该类定义了管理函数,即前文所述八个模块功能的实现方法,链表的使用也包括其中。此类的作能在于将所有功能模块集成并定义本系统使用的主要方法。四、系统实现与测试4.1流程图开始定义
6、变量数据处理调用输出函数YN输入C的值C=1&Cnext,指向第二个结点;下图示范了删除第一个节点之后的显示结果:如果删除的是第i个(0 i n)就把下一个结点地址赋给前一个结点地址;如果找不到对应的ID,则不会删除任何一个记录,并输出“未找到!”。指令“3修改人员”代表调用修改人员函数Modify(),体统根据操作者输入的ID找到对应的记录,将新输入的数据对应地赋给要修改的各成员。指令“5保存数据”表示调用存盘函数Save(),输入“Y”或者“N”以进一步操作。指令“8统计”,调用TJ();函数,按照男、女统计人数:指令“7清除通讯录”,调用DesTory()清除已存数据:五、优缺点分析优点
7、: 系统中包含了输入、输出、保存、删除、查询、修改等多种功能,系统操作灵活性较强,功能较强大; 可以随意地选择不同的指令进行操作; 排版效果清晰明了,美观; 操作简单方便。缺点: 由于该系统对数据采用文本保存方式,所以安全性不可靠。 采用链表结构操作,不能支持超大量的数据,否则运行缓慢。六、参考文献1谭浩强,C+程序设计,清华大学出版社, 2011。2郑莉,C+程序设计(第三版),清华大学出版社, 2005。 3钱能,C+程序设计教程,清华大学出版社, 2004。4武俊亮,visual c+课程设计与系统开发案例,清华出版社。5黄维通,Visual C+程序设计教程,清华大学出版社, 2005
8、。七、附录:通讯录系统源码#include#include#include#include#include/#includeusing namespace std;string ID;/具有唯一性class Personprotected: string No; /学号string 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);
9、 strcpy(this-Sex,Sex);this-Tel=Tel;this-No=ID; this-Age=Age;friend class Manage;class Manageprivate:Person *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 Name20);/按姓名查找 void Find(string ID);/按编号查找void Add(); /
10、添加加信息 void Delete(); /删除信息 void Modify(string ID); /修改信息void Query(); /查询信息 void TJ(); /清除文件信息void Save(); /保存数据 void Load(); /读入数据void Look();/预览void DesTory();void Output(Person *p)couttt学号: Noendl;couttt姓名: Nameendl;couttt性别: Sexendl;couttt年龄: Ageendl;couttt联系电话: Telendl;coutendl;void Manage:Add(
11、)system(cls);Person *p,*p2; /新结点指针 string No,Age,Tel;char Name20,Sex10; char c;coutn* 新增学生通讯录 *n; /输入学生信息 coutNo; coutNo=No) break; else p1=p1-next; if(p1!=NULL)cout该学号已存在,是否修改该学生信息(Y/N) c;if(toupper(c)=Y)cout该学生信息为:endl;Find(No);coutendl;Modify(No);return ;elsereturn ;coutName; coutendl;coutSex;cou
12、tendl;coutAge;coutendl;coutTel;coutnext=0;/学生结点加入链表 if(person) /若已经存在结点 p2=person; while(p2-next) /查找尾结点 p2=p2-next; p2-next=p; /连接 else /若不存在结点(表空) person=p; /连接 system(cls);coutttt *添加成功*nendl;cout是否继续添加(Y/N) c;if(toupper(c)=Y)Add();return ;elsereturn ;void Manage:Delete() /删除人员 system(cls);char c
13、;string No; coutn* 删除信息 *n; coutNo; coutNo=No) break; else p2=p1; p1=p1-next; /删除结点 if(p1!=NULL)/若找到结点,则删除 cout所要删除的学生的信息如下:nendl;Output(p1);coutc;if(toupper(c)!=Y)return;/system(pause);if(p1=person) /若要删除的结点是第一个结点 person=p1-next; delete p1; else /若要删除的结点是后续结点 p2-next=p1-next; delete p1; couttt*删除成功
14、*n;cout是否继续删除(Y/N) c;if(toupper(c)=Y)Delete();return ;elsereturn ; else /未找到结点 coutNo=ID) break; else p1=p1-next; if(p1!=NULL)/若找到结点 system(cls);cout所要修改的学生的信息如下:nendl;Output(p1);docout1. 修改姓名 2. 修改性别 3. 修改年龄 4. 修改联系方式 5. 退出修改 nendl;cout请选择(1-5)要修改的信息nc;if(c!=5)coutp1-Name; break;case 2: cinp1-Sex;
15、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(toupper(c)=Y)coutID;coutendl;Modify(ID);return ;elsereturn ; else /未找到结点 cout未找到该学生!n; getch();/暂停 void Manage:Save() /数据写入到文件 ofstream fPerson(Person.txt,ios:out);
16、char c; coutc; if(toupper(c)!=Y)return; Person *p=person; while(p) fPersonNo Name Sex Age Telnext; fPerson.close(); coutNoNameSexAgeTel;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-next=p; /
17、连接 else /若不存在结点(表空) person=p; /连接 fPersonNoNameSexAgeTel;fPerson.close(); void Manage:Find(string ID)Person *p1;p1=person;while(p1) if(p1-No=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 的同
18、学nendl;elsecoutntt未找到该学生!nendl;void Manage:Query()char c;string ID,Tel;char Name20;docout1. 按学号查找 2. 按名字查找 3. 按电话号码查找 4.退出查找c;/system(cls);coutendl;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输入有误
19、请重新输入!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 Manage:Look()/设置字体颜色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);system(cls);Person *p1;int
20、 count=0;char c;p1=person;while(p1) coutID: Not姓名: Namenext; if(count!=0)coutntt预览成功! nendl;coutc;if(toupper(c)=Y)Query();return;elsereturn ;elsecout尚未创建通讯录,是否创建(Y/N)c;if(toupper(c)=Y)Add();return;elsereturn ;void Manage:DesTory()/设置字体为红色SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGR
21、OUND_INTENSITY | FOREGROUND_RED);char c;system(cls);coutnttt* 清除信息 *n;cout警告:n 清除通讯录信息会导致您保存的信息完全消失!nendl;cout是否决定清除通讯录信息(Y/N): c;if(toupper(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
22、);/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; coutn总共有 count份通讯录nendl;cout男生: Boyt 女生: Girlnendl;system(pause);int main(void)Manage m;int c;do /设置字体为绿色 SetConsoleTextA
23、ttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN);system(cls);cout =endl;cout t 1.新增通讯录 t endl;cout t 2.删除通讯录 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
24、(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;