1、C+课程设计同学录设计报告面向对象程序设计课程设计报告 同学录管理系统 杨敬周 计算101 题 目班 级姓 名 学 号2011年7月1日 同学录管理系统详细设计说明书1. 项目设计背景:2. 项目设计目的: 通过设计一个同学录管理系统,进一步熟悉C+中类的概念、基本知识和技能,类的封装、继承的实现方式。掌握面向对象程序设计的基本思路和方法,并利用所学的基本知识和技能解决简单的面向对象的程序设计问题。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用:逐步熟悉程序设计的方法,并养成良好的编程习惯。3. 项目需求分析以
2、本班的同学的具体数据为背景,设计一个本班同学同学录,要求如下:(1) 录入信息,必须包括:姓名,性别,电话,家庭地址,邮编,E-mail等基本信息;(2)修改信息,包括插入一条或多条信息,修改或者删除某人的信息;(3)查询信息,可以按姓名,家庭住址,性别等多种方式查询;(4)显示所有信息 ;4. 概要设计 同学录管理系统 数据结构及各模块分析:1.设计类,对象及基本数据类型:创建一个Classmates类,它有五个私有数据成员:string name; 姓名string address; 地址string number; 电话号码string post; 邮编string email E-ma
3、ilstring qq; QQ号码包含七个公有成员函数:功能如下:char diaplay(); 首页void add_person(); 添加同学void del_person(); 删除同学void show_all(); 显示所有同学void alter(); 修改信息void inquiry(); 查询同学void save_new(); 保存新增加的同学在主函数main()之中,.Classmates obj; 创建名为obj的对象结构体:struct studentClassmates object; object对象作为结构体student的一个成员student *prior;
4、 定义一个指向前驱的结构体指针student *next; 定义一个指向后继的结构体指针;该结构体是在alter()修改函数中用来处理相关信息的修改.字符串变量: str,record;字符变量: choose;布尔型变量: flag;数据保存方式以及格式:该同学录管理系统将把输入的人员信息保存为pClassmates.txt 文本文件,在文件读取时系统将会把该文件中相关信息读出,并在屏幕上显示出相关信息.2.实现各模块功能的相应程序:1.界面:display()system(cls);coutendl;couttt-. fflush(stdin);return choose;添加同学:add
5、_person()coutendl根据下面 . .save_new()ofstream outData(pClassmates.txt, ios:app);if(!outData) outData.close();coutendl新同学信息已经保存好!endlendl;system(pause);删除同学信息del_person()ofstream outData(temp.txt, ios:out); coutendl这个人的信息已经从你的同学录中删除!endlendl;system(pause);显示所有同学信息:show_all()ifstream inData(pClassmates.
6、txt,ios:in); cout所有同学信息已经全部显示出来!endl;system(pause);修改同学信息alter()ifstream inData(pClassmates.txt, ios:in); coutendl信息已经修改完成!endlendl;system(pause);查询同学信息select()ifstream inData(pClassmates.txt,ios:in); system(pause);5. 详细设计 详细功能如下:A,添加:系统将提示用户输入新添加人员信息,输入到文件中,人员信息数据包括姓名,电话号码,QQ号,邮箱,邮编,地址.B,删除:首先由用户输入
7、要删除的人员的姓名或者电话号码,然后调用删除函数,删除该人员的所有相关资料.C,显示所有人员信息:该功能将显示已经保存的所有人员的姓名,电话,QQ号,邮编及地址.D,修改:首先由用户输入要修改的人员姓名或者电话号码,然后系统用修改函数查找,显示该名同学的资料,然后系统提示用户输入需要修改的人员的相关信息.并用双向链表来实现修改功能E,查询:可由用户输入要查找的人员姓名或电话号码,然后系统用查找函数查找,接着系统使用相关文件命令输出所查找的人员的全部信息.F,退出系统关闭同学录管理系统.菜单用于选择各项功能:其中包括:.a:添加新同学; .b:删除同学;.c:显示所有人员信息;.d:修改人员信息
8、;.e: 查询同学; .f:关闭同学录.采用面向对象的程序设计方法,a,b,c,d,e,这五项菜单都调用一个函数来实现. void Classmates:alter() ifstream inData(pClassmates.txt, ios:in); /打开文件pClassmates.txt,进行读操作 if(!inData)/判断文件打开是否成功 coutendl对不起不能打开文件!endlendl; /如果打开失败,输出 “对不起不能打开文件!” system(pause);/屏幕暂停 return; string sign;/定义字符串变量sign coutendlsign;/输入变量
9、sign fflush(stdin);/清空缓冲区 record *H=new record; /新建结构体指针变量H,并为其分配空间 record *p=H;/使p指针指向指针H record *q=H;/使q指针也指向指针H bool flag=true;/定义布尔型变量flag. while(inDatap-object.namep-object.numberp-object.qq p-object.postp-object.address) /读取文件中一个人的信息 p-next=new record; /建立双向链表 p=p-next; p-prior=q; q-next=p; q=
10、p; p-next=NULL;/使p的next成员指向NULL. inData.close();/关闭pClassmates.txt文件 p=H;/使指针变量P指向结构指针H的头节点 while(p)/当p不为空时 if(p-object.name=sign)|(p-object.number=sign) /判断输入是否为空. if(flag) coutendl你想修改你同学的信息如下:endlendl; coutsetiosflags(ios:left)setw(17) object.namesetw(16)object.number setw(18)object.qq setw(14)ob
11、ject.postsetw(20)object.addressendl;/输出要修改的人的信息 flag=false; coutendl请根据下面提示修改信息 : endl; coutp-object.name; fflush(stdin); coutp-object.number; fflush(stdin); coutp-object.qq; fflush(stdin); coutp-object.post; fflush(stdin); coutp-object.address; fflush(stdin); break; /根据提示进行修改 p=p-next;/使结构体指针p指向该指针
12、的末尾 if(flag) coutendl你的同学录中没有你找的联人!;coutendlendl; system(pause); return; else ofstream out(pClassmates.txt,ios:out); /打开文件pClassmates.txt,进行写操作 if (!out) /判断文件打开是否成功打开 cout endl 对不起!不能打开文件! endl; system(pause); return; p=H; /使结构体指针p指向被修改的人的记录的首地址. while(p)/如果p不为空,则执行以下语句 outsetiosflags(ios:left)setw
13、(17)object.name setw(16)object.number setw(18)object.qq setw(14)object.post setw(20)object.addressnext;/使用p指针指向其本身的末尾 out.close();/关闭pClassmates.txt文件 coutendl信息已经修改完成!endlendl; system(pause);/屏幕暂停 6. 设计总结 参考文献:C+ 程序开发 深入浅出参考网站:Google , XX ,csdn 等等 在开发当中,遇到问题是正常的,关键是怎样解决问题。不要因为问题难解决就放弃了,如果那样,你就很难完成一件事情了 !
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1