当前位置:文档之家› 通讯录管理系统的设计与实现

通讯录管理系统的设计与实现

课程设计报告 通讯录管理系的设计与实现 姓名:钟婷英 班级:计122 学号:1213023039 时间:2014年1月10日 1,问题描述 通讯录是用来记载和查询联系人通讯信息的工具,电子通讯录已经为手机,电子词典等设备中不可缺少的工具软件,请设计一个能够满足这种需求的软件,基本功能模块如下图所示。

输入:记录的录入。 显示:通讯录的显示。 查找:按指定方式,输入关键字,查找指定记录。 插入:实现记录的添加或在指定位置插入记录。 保存:将内存中正在被操作的通讯录以文件形式保存到磁盘。 读入:保存的逆操作,讲存在磁盘中的通讯录文件读到内存中。 排序:按指定关键字对通讯录数据进行排序。 修改:提供修改某条记录的功能。 移动:移动记录在通讯录中的存储位子,使其被查找或显示时的位序前移或后移。 退出:结束程序运行。 2,设计要求

(1)设计通讯录数据的逻辑结构和物理结构。 (2)通讯录至少包括下列数据信息:姓名,电话,单位等。 (3)完成图示基本功能。 (4)软件易用,操作简单。 (5)根据自己使用通讯录体会扩充其他功能,如按姓名查找,按号码查找,按序号删除等。 (6)设计足够多的测试用例

主程序 输 入 显示 查找 插入 删除 保存 读入 排序 修改 移

动 退

出 (7)数据输入有效性检验:如姓名不能为空,号码中不能有非法字符等。 (8)提供分组管理的相关功能,如:分组显示,加入组,组创建,组查询等。 (9)可视化的界面设计。 3,概要设计

1,使用struct data struct addressList定义结构体类型,struct data结构体中包括年月日的定义,strcut addressList中包括联系人ID账号,名字,性别,名族,生日,手机号码,QQ号码和家庭地址等。 struct date { int year; int month; int day; }; struct addressList { char ID[10]; char name[10]; char gender[4]; char minzu[2]; date birthday; char shoujihao[14]; char QQ[11]; char address[40]; }; 2,程序设计过程中用到的函数有: int zhujiemian( ); void tianjia(fstream & ); void xiugai(fstream & ); void shanchu(fstream & ); void chazhao(fstream & ); void liulan(fstream & ); int findRecord(fstream &, const char *); int getAmount(fstream & ); 3,整个程序用的是面向对象的方法,在主函数中调用各种函数,来实现通讯录的功能。在主函数中,使用的是c++语言中的开关语句(switch)用来选择通讯录的各种功能。 4,在各个函数的编译过程中使用了system(“cls)命令,进项清屏工作,在利用各种输出命令。, 5,主界面设计为

开始 1, 添加联系人 2,删除联系人 3,修改联系人 4,查询联系人 5,浏览联系人 6,退出

结束

菜单开始

************************************************ ※ 通讯录 ※ ************************************************ 1、 添加联系人信息 2、 删除联系人信息 3、 修改联系人信息 4、 查询联系人信息 5、 浏览联系人信息 6、 退出 ************************************************ 请选择: 采用了单链表形式,使得选择更加方便,快速。程序段为: int zhujiemian( ) { system("cls"); int selection=0; cout<<"***********************************************"

cout<<"***********************************************">selection; return(selection); } 6,下面开始写各个函数,在函数中,采用了边做边存的思想,减少了工作量。 ,提供了是否正确打开通讯录的程序

7,调用函数void tianjia(fstream &listFile )当打开方式正确时,输入联系人的信息ID账号,姓名,性别(男/女)民族,出生年月,手机号,QQ号,家庭住址等。以防信息的重复添加,还提供了添加提醒,当添加好一个联系人之后会提醒是否继续添加,或者是回到主界面,运用了while,if,选择语句,进行操作。程序代码如下: void tianjia(fstream &listFile ) { system("cls"); cout<<"*********************************************">a.xuehao; cout<<”姓名:">a.name; cout<<" 性别(男/女):">a.gender; cout<<" 民族:">a.minzu; cout<<" 出生年-月-日:">a.birthday.year>>a.birthday.month>>a.birthday.day; cout<<" 手机号:">a.shoujihao; cout<<" QQ号:">a.QQ; cout<<" 家庭住址:">a.address; cout<<"此信息已经添加!">b; cin.ignore(); listFile.close(); } while(toupper(b)=='Y'); cout<<"***************************************">c; if(toupper(c)=='Y') main(); else exit(0); } 8,调用void xiugai (fstream&listFile)函数进行对通讯录的修改。用了if else语句判断输入的联系人信息是否正确,嵌套while语句,再用switch语句选择要修改的信息。程序片段如下:

void xiugai(fstream &listFile ) { system("cls"); cout<<"************************************************">modifyName; listFile.open("tongxunlu.dat",ios::out|ios::in|ios::binary); if(listFile.fail()) { cout<<"打开通讯录失败!"

相关主题