1、 2.3.2使用方法 5 2.3.3软件优点 5 2.3.4使用对象及服务 5 2.4程序测试及分析 5 2.4.1 程序测试 5 2.4.2程序分 6 2.5设计总结 6 3.附录7 3.1主要函数7 3.2数据对象7 4.主要参考资料7 一、课程设计目的与任务课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,通过接近实际项目的训练,锻炼的分析解决实际问题的能力。在设计中,利用学到的编程知识,逐步学习面向对象程序设计中,类的设计,程序的编写,以及调试排错、测试等内容。 从实践中掌握程序设计的方法,提高学生面向应用的实践编程的能力。二、课程设计内容1
2、设计题目的主要内容(1)目的与要求设计一个学生通讯录程序,具有增加数据、修改数据、删除数据、保存数据、查询数据以及简单预览功能。这些功能通过函数实现,通过菜单选择调用函数来实现相应的功能。数据成员包括学号、姓名、年龄、联系方式。(2)具体功能学生通讯录要求设计实现的功能包括增加数据、修改数据、删除数据、保存数据、查询数据以及简单预览功能。增加数据:添加新记录。修改数据:通过学号检索出数据,通过菜单选择修改姓名、修改年龄、修改联系方式。删除数据:通过学号检索出数据,删除该学号学生的相关信息。保存数据:将添加的数据保存到文件,以便下次使用。查询数据:菜单选择通过学号、通过姓名、通过联系方式查询数据
3、详细信息简单预览功能:预览所有学生的简单信息,比如学生的学号、姓名。退出:通过菜单选择结束程序。(3)模块划分学生通讯录要求的设计实现主要通过七个主模块。 模块一:增加人员函数Add();增加通讯录基本信息。模块二:删除人员函数Delete();删除指定的学生的基本信息。模块三:修改人员函数Modify();修改指定的通讯录基本信息。模块四:查询人员信息函数Query();查询指定的学生的详细信息。模块五:数据存盘,载入函数Save()以及Load();储存与载入基本信息。模块六:预览数据void Look();预览比较简略的信息。模块七:删除通讯录void DesTory();删除已载入的所
4、有的信息。2设计思想与程序构架(1)程序基本架构 N Y (2)核心子架构添加新记录函数 Y N N Y N 设计思路:增加记录函数的实现首先输入学号,判断该学号是否存在,如果存 在,询问是否修改,调用修改信息函数实现;如果不存在,则继续输入学生的其他 相关信息;然后,询问是否继续添加新记录,如果“是”调用此函数;如果“否” 则返回主菜单。修改记录 N Y 设计思路:首先根据学号检索出学生信息并输出到显示屏显示出来,然后建立一个子 菜单选择要修改的内容(比如年龄),输入新内容。询问是否修改该学号学 生 的其 他信息,如果“是”则返回子菜单选择修改该学号学生的其他内容(比如姓名) ;如果“否”则
5、询问是否修改其他学号学生信息 ,选择“是”修改其他学号学生信息,选择“否”返回主菜单。查询详细记录 第一步,建立一个查询子菜单,第二步,建立查询方式,包括按学号、按姓名、 按联系方式。第三步,将检索出的信息输出到显示屏。第四步,询问是否继续查找, 如果“是”返回子菜单;如果“否”返回主菜单。 (3)主程序设计基本思路 1、根据题目要求分析要使用的数据成员以及要实现的具体功能,将程序分 为几个模块。 2、对每一个模块具体分析,考虑要添加的变量,要使用到的函数以及具体的实 现功能的方法。 3、考虑各个函数的互相调用的方法及实现的功能。从全局出发,对每个函数细 致修改,使其不冲突,实现多个函数相互调
6、用。 4、对界面进行层次化分析,主要是主菜单与子菜单的转换,使其转换方便,整 个程序无退出失败现象。 5、对程序进行优化,在关键点进行设置,比如完成某项任务提示“操作成功” 操作不当提示该如何操作;退出、删除提示“是否继续”等。 6、操作界面优化,对在显示器显示的数据进行修改,比如操作界面排版、输出 数据格式、系统提示格式等。3软件使用说明书 (1)主要功能 通过本软件可建立通讯录,实现添加、修改、预览、删除、保存通讯信息 等功能。是您生活中的好帮手。 (2)使用方法 增加通讯录选择“1”键;保存通讯录数据设置选择“5”键;删除通讯录选择“2”键;预览通讯录选择“6”键;修改通讯录选择“3”键
7、;清除通讯录选择“7”键;查询详细通讯录选择“4”键;退出请选择“0”键 (3)软件优点 简约、方便、实用、可重复安装使用。 (4)使用对象及服务 使用对象:适合联系对象较多的人群 软件服务:自购买之日三月内免费安装、免费调试。4程序测试及分析 1、程序测试 (1)运行程序,进入主界面 (2)选择功能“4”,进入查询功能,显示子菜单 (3)选择功能“6”,预览简略信息,查询详细信息选择“y” (4)选择功能“5”,保存信息,保存完成后返回主菜单。 (5)选择功能“7”删除所有信息,删除后返回主菜单。 2、程序分析 (1)、系统中包含了输入、输出、保存、删除、查询、修改等多种功能, 系统操作灵活
8、性较强,功能比较全面; (2)、由于该系统对数据采用文本保存方式,所以安全性不可靠。 (3)、采用链表结构操作,不能支持超大量的数据,否则运行缓慢。5设计总结 通过本次实验,让我对c+有了更系统的认识。编写过程中,更加清楚了结构 化、模块化的益处。系统分析和设计的部分花了比较多的时间,遇到到许多难点,但经过思考和参考资料都顺利解决了。对整个程序而言,怎样把自己的分析转化为 实际的程序代码,是我编写这个程序最困难之处。 这次C+课程设计,提升了我分析问题的能力,对编写程序也有了一个较深刻 的认识,更明白了一个道理:好的程序不是写出来的,而是改出来的。相信这次实 验,将对我以后的学习起到指导作用。
9、三、附录 (1)主要函数 void Find(char Name20); /按姓名查找 void Find(string ID); /按编号查找 void Add(); /添加信息 void Delete(); /按id删除人员 void Modify(string ID); /修改信息 void Query(); /查询信息 void TJ(); /删除文件信息 void Save(); /保存数据 void Load(); /读入数据 void Look(); /预览 void Output(Person *p) /输出数据 (2)数据对象成员名数据类型长度字段含义Nostring学号Na
10、mechar20姓名Age年龄Tel联系方式四、主要参考资料 1谭浩强. c+面向对象程序设计M. 第一版. 北京:清华大学出版社, 2006. 2游洪跃, 伍良富, 王景熙. C+面向对象程序设计实验和课程设计教程M. 第 一版. 北京:清华大学出版社, 2009.源代码#includefstreamstringconio.husing namespace std;string ID;class Person protected: string No; /学号 string Age; char Name20; /姓名 char Sex10; /性别 string Tel; /联系方式 Per
11、son *next; public: Person(string ID,char *Name,char *Sex,string Age,string Tel) strcpy(this-Name,Name);Sex,Sex); this-Tel=Tel;No=ID;Age=Age; friend class Manage;class Manage private: Person *person; Manage() person=0; Load(); Manage() Person *p; p=person; while(p) p=p-next; delete person; person=p;
12、void Find(char Name20);/按姓名查找 void Find(string ID); /按编号查找 void Add(); void Delete(); /按id删除人员 void Modify(string ID); /修改信息 void Query(); void TJ(); void Save(); void Load(); void Look(); void DesTory(); void Output(Person *p) coutNoendl;tt姓名:Namett性别:Sextt年龄:Agett联系电话:TelNo; Person *p1; p1=person;
13、 while(p1) if(p1-No=No) break; else p1=p1- if(p1!=NULL) 该学号已存在,是否修改该学生信息(Y/N) c; if(toupper(c)=Y) coutnext=0; /学生结点加入链表 if(person) /若已经存在结点 p2=person; while(p2-next) /查找尾结点 p2=p2- p2-next=p; /连接 else /若不存在结点(表空) *=添加成功=*n_是否继续添加(Y/N) ) Add(); Delete() /按id删除人员n* 删除信息 *n_输入要删除的同学ID: /查找要删除的结点 Person
14、*p1,*p2; if(p1- break; p2=p1; /删除结点=NULL)/若找到结点,则删除所要删除的学生的信息如下:n Output(p1);_确定是否删除(Y/N): if(toupper(c)!=pause if(p1=person) /若要删除的结点是第一个结点 person=p1- delete p1; else /若要删除的结点是后续结点 next=p1-tt*删除成功*n_是否继续删除(Y/N) Delete(); else /未找到结点未找到该同学!按任意键返回n getch();Modify(string ID) /修改信息 Person *p1; if(p1-No
15、=ID) =NULL)/若找到结点所要修改的学生的信息如下:_ do 1. 修改姓名 2. 修改性别 3. 修改年龄 4. 修改联系方式 0. 退出修改 请选择(0-4)要修改的信息n if(c!0请输入新的信息: switch(c) case 1p1-234 default: while(c!t *修改成功*n是否继续修改(Y/N):请输入要修改人员的ID:ID; Modify(ID);未找到该学生!Save() /数据写入到文件 ofstream fPerson(Person.txt,ios:out);n保存数据,是否继续?Y/N: Person *p=person; fPersonNoNameSexAge while(fPerson.good() p=new Person(No,Name
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1