1、 1 计算机与通信学院 2011 年秋季学期 面向对象课程设计面向对象课程设计 题 目:同学录的设计与实现 专业班级:计算机科学与技术 1 班 姓 名: 学 号: 指导教师: 成 绩: 2 摘要摘要 通过设计一个同学录管理系统 ,进一步熟悉C+中类的概念、基本知识 和技能,类的封装、继承的实现方式。掌握面向对象程序设计的基本思路和方 法,并利用所学的基本知识和技能解决简单的面向对象的程序设计问题。了解 系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调 试的全过程,加深对C+的理解与Visual C+环境的使用:逐步熟悉程序设计 的方法,并养成良好的编程习惯。 关键字:C+;
2、添加;查询;修改;删除 3 目目 录录 一、需求分析 4 二、总体设计 5 1.设计类,对象及基本数据类型:. 5 2.实现各模块功能的相应程序: 6 三、详细设计 8 四、测试12 五、设计总结.15 参考文献16 致谢.17 附录.18 4 一、一、需求分析需求分析 以本班的同学的具体数据为背景,设计一个本班同学同学录,要求如下: (1) 录入信息,必须包括:姓名,性别,电话,家庭地址,邮编,E-mail 等基本信息; (2)修改信息,包括插入一条或多条信息,修改或者删除某人的信息; (3)查询信息,可以按姓名,家庭住址,性别等多种方式查询; (4)显示所有信息 ; 5 二、二、总体总体设
3、计设计 同学录同学录管理系统管理系统 图图1 1 数据结构及各模块分析: 1.1.设计类设计类, ,对象及基本数据类型对象及基本数据类型: : 创建一个Classmates类,它有五个私有数据成员: string name; 姓名 string address; 地址 string number; 电话号码 string post; 邮编 string email E-mail 包含七个公有成员函数: 功能如下: char diaplay(); 首页 void add_person(); 添加同学 void del_person(); 删除同学 void show_all(); 显示所有同学
4、void alter(); 修改信息 void inquiry(); 查询同学 添 加 同 学 删 除 信 息 显 示 所 有 同 学 修 改 信 息 查 询 同 学 关 闭 通 讯 录 6 void save_new(); 保存新增加的同学 在主函数main()之中, .Classmates obj; 创建名为obj的对象 结构体: struct record Classmates object; object对象作为结构体record的一个成 员 record *prior; 定义一个指向前驱的结构体指针 record *next; 定义一个指向后继的结构体指针 ; 该结构体是在alter
5、()修改函数中用来处理相关信息的修改. 字符串变量: str,record; 字符变量: choose; 布尔型变量: flag; 数据保存方式以及格式: 该同学录管理系统将把输入的人员信息保存为 pClassmates.txt 文本 文件,在文件读取时系统将会把该文件中相关信息读出,并在屏幕上显示出 相关信息. 2.2.实现各模块功能的相应程序实现各模块功能的相应程序: : 1.界面: display() system(“cls“); coutsign;/输入变量 sign fflush(stdin);/清空缓冲区 record *H=new record; /新建结构体指针变量 H,并为其
6、分配空间 record *p=H;/使 p 指针指向指针 H record *q=H;/使 q 指针也指向指针 H bool flag=true;/定义布尔型变量 flag. while(inDatap-object.namep-object.number p-object.qq p-object.postp-object.address) /读取文件中一个人的信息 p-next=new record; /建立双向链表 p=p-next; p-prior=q; q-next=p; q=p; p-next=NULL;/使 p 的 next 成员指向 NULL. inData.close();/关闭 pClassmates.txt 文件 p=H;/使指针变量 P 指向结构指针 H 的头节点 10 while(p)/当 p 不为空时 if(p-object.name=si