1、5.运行结果.66.程序调试.97.编程体会.10一、课程设计目的(1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。(2)通过课程设计,进一步掌握C+及类和对象。掌握类的特点并熟练类的封装、继承和多态。(3)通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。(4)通过课程设计,培养C+语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个中小型系统。(5)通过课程设计,加强了自己的程序分析能力,同时让自己对C+有了更深刻的了解。二、课程设计内容此系统提供对通讯录信息的录入、编
2、辑、查找、统计等功能。具体功能实现如下:(1)信息录入、添加:实现人员通讯录信息的录入、添加功能。(2)信息存储:能将录入的信息以文件形式加以保存。(3)编辑功能:对指定人员的通讯录信息进行删除或修改等功能,也可对所有录入的 信息进行一次性删除。(4)信息浏览功能:实现对全部人员的通讯录信息浏览及详细查看。(5)查询功能:实现按学号查询、按姓名查询通讯录信息的功能。(6)统计功能:实现对男生、女生人数及总人数的统计功能。(7)系统以菜单方式工作,界面清晰易于操作。三、总体设计本系统的功能模块如下图(1)所示,主要有以下模块:(1)课程名称界面:在主函数int main()中,实现课程设计名称以
3、及作者的显示。(2)主菜单界面:在主函数int main()中,实现系统主菜单的显示。(3)通讯录信息录入:构造函数void Add(),实现学生通讯录信息的录入及显示。并 通过调用函数void Count(),实现对学生简历信息的添加录入以及对学生总数的统计。(4)通讯录信息修改:构造函数void Modify(string ID),实现对需要修改通讯录信 息的学生的查找,并实现通讯录信息修改界面的显示并对其简历信息进行修改。(5)通讯录信息查询:构造函数void Search(),实现查询界面的显示。并通过对按 学号查询函数void Find(string ID)、按姓名查询函数 void
4、 Find(char Name20)的 调用,实现相应的通讯录信息的查询。(6)通讯录信息删除:构造函数void Delete(),实现对指定学生的通讯录信息的删 除。(7)通讯录信息浏览:构造函数void Look(),实现通讯录信息粗略浏览界面的显示。 并通通讯录查询函数void search()的调用,实现相应的通讯录详细信息的浏览。(8)统计男女人数:构造函数void Count(),实现对不同性别的人数及总人数统计。(9)通讯录保存:构造函数void Save(),实现将信息保存到文件。图(1)四、详细设计 (1)数据结构设计本程序用到的数据结构主要有:指针、链表、类、文件等。先创建
5、一个类型为Person的基类,其成员为人员的通讯录信息,再创建一个继承类Manage实现各种功能。然后通过对指针、链表、文件等数据结构的操作,实现对通讯录信息的录入,插入,存盘,查询,浏览,删除,修改等一系列操作。(2)模块接口声明1.所有函数模块声明如下 void Find(char Name20);/按姓名查找 void Find(string ID);/按编号查找 void Add(); /添加加信息 void Delete(); /删除信息 void Modify(string ID); /修改信息 void Search(); /查询信息 void Count(); /统计信息 vo
6、id Save(); /保存数据 void Load(); /读入数据 void Look();/预览 void DeAll();/删除通讯录 void Output(Person *p)/输出信息2.并定义了一个全局变量string ID;/(全局变量)具有唯一性3.主要模块的实现系统以主函数int main()为入口,首先1通过system(color f0);将文本颜色置为黑色,背景颜色置为白色。在主函数int main()中,显示课程设计名称,显示系统欢迎界面,进入主菜单界面。系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。1以下是主菜单的流程图:图(2)2以下为
7、录入信息的实现: N Y N YN图(3)3以下为按学号查询的实现图(4)4以下为统计模块的实现图(5)五、运行结果(1)主菜单界面:图(6)输入功能选择,系统自动进入相应功能界面。(2)信息录入界面:图(7)录入各种信息。(3)信息浏览界面:图(8)可预览部分信息,也可查询详细信息。(4)信息修改界面:图(9) 可分别修改各类信息。(5)信息清除界面:图(10)清除全部信息时会有警告。七、编程体会经过对通讯录的分析与编写,我得到了很大的收获。自主学习的必要性更是解决问题的基础。这次设计使我重温了以前学过的各科知识,让我对C编程有了更深刻的认识。这次我所做的通讯录系统中包含了输入、输出、保存、
8、删除、查询、修改等多种功能,系统操作灵活性较强,功能较强大;可以随意地选择不同的指令进行操作;排版效果清晰明了,美观;由于该系统对数据采用文本保存方式,所以安全性不可靠;采用链表结构操作,不能支持超大量的数据,否则运行缓慢。通过这次课程设计,我了解到学习c+需要有活跃的思维,灵活运用已有的知识,对于程序更是要有相当的耐心去调试,要有探索的精神,不断钻研,不断思考。这次C系统设计作业,提升了我分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。从这次设计学到的东西,相信会对我们日后的学习工作起到很大的指导作用。八、源程序/ 通讯录 /计科1201 21 殷学梅/#includefstre
9、amstringconio.hWindows.h/#includeusing namespace std;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);Sex,Sex); this-Tel=Tel;No=ID;Ag
10、e=Age; friend class Manage;/类Manage是类Person的一个友元类,类Manage中的所有成员函数为类Person的友元函数;class Manageprivate: Person *person; Manage()/构造函数 person=0; Load();/数据读入 Manage() Person *p; p=person; while(p) p=p-next; delete person; person=p; void Output(Person *p);/预览信息void Manage:Output(Person *p) coutNoendl;tt姓名
11、:Namett性别:Sextt年龄:Agett联系电话:TelAdd() system(cls Person *p2; /新结点指针 Person *p; string No,Age,Tel; char Name20,Sex10; char c; coutNo; Person *p1;/指向头结点 p1=person; while(p1) if(p1-No=No) break; else p1=p1- if(p1!=NULL)该学号已存在,是否修改该学生信息(Y/N) cinc; if(toupper(c)=Y) coutnext=0; /学生结点加入链表 if(person) /若已经存在结
12、点 p2=person; while(p2-next) /查找尾结点 p2=p2- p2-next=p; /连接 else /若不存在结点(表空) person=p;ttt *添加成功*n是否继续添加(Y/N) if(toupper(c)= Add(); return ; else return ;Delete() /删除人员 n* 删除信息 *n输入要删除的学生ID: /查找要删除的结点 Person *p1,*p2; p2=p1; /删除结点 =NULL)/若找到结点,则删除 所要删除的学生的信息如下:n Output(p1);确定是否删除(Y/N): if(toupper(c)!= re
13、turn; if(p1=person) /若要删除的结点是第一个结点 person=p1- delete p1; else /若要删除的结点是后续结点 p2-next=p1-tt*删除成功*n是否继续删除(Y/N) Delete(); return; else /未找到结点未找到该学生! getch();Modify(string ID) No=ID) =NULL)/若找到结点 system(所要修改的学生的信息如下: do1. 修改姓名 2. 修改性别 3. 修改年龄 4. 修改联系方式 5. 退出修改 n请选择(1-5)要修改的信息n cin if(c!5请输入新的信息: switch(c
14、) case 1p1- break;234 default: while(c!t *修改成功*n是否继续修改(Y/N):请输入要修改人员的ID:ID; Modify(ID); else /未找到结点 /暂停 Save() /数据写入到文件 ofstream fPerson(Person.txt,ios:out); /文件以输出方式打开(内存数据输出到文件)n保存数据,是否继续?Y/N: if(toupper(c)! return; Person *p=person; while(p) fPerson fPerson.close();n保存成功.npause/暂停程序的退出Load() /数据读
15、入 ifstream fPerson; fPerson.open(person.txtin); /文件以输入方式打开(文件数据输入到内存) fPersonNoNameSexAge while(fPerson.good() p=new Person(No,Name,Sex,Age,Tel); p- /员工结点加入链表 if(person) /若已经存在结点 Person *p2; p2=person; while(p2- p2=p2- else /若不存在结点(表空) fPersonFind(string ID)未找到该学生Find(char Name20) int count=0; if(strcmp(p1-Name,Name)=0) count+; Output(p1); if(count)t查询成功!n共找到 count 个名字为 的同学nntt未找到该学生!Search() string ID,Tel; do1. 按学号查找 2. 按名字查找 3.退出查找 switch(c) case cout Find(ID); ;输入姓名 Name: Find(Name); default:输入有误 请重新输入!
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1