通讯录管理系统的设计与实现.docx
- 文档编号:1037211
- 上传时间:2022-10-15
- 格式:DOCX
- 页数:34
- 大小:173.29KB
通讯录管理系统的设计与实现.docx
《通讯录管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统的设计与实现.docx(34页珍藏版)》请在冰豆网上搜索。
通讯录管理系统的设计与实现
课程设计报告
通讯录管理系的设计与实现
姓名:
钟婷英班级:
计122
学号:
1213023039时间:
2014年1月10日
1,问题描述
通讯录是用来记载和查询联系人通讯信息的工具,电子通讯录已经为手机,电子词典等设备中不可缺少的工具软件,请设计一个能够满足这种需求的软件,基本功能模块如下图所示。
输入:
记录的录入。
显示:
通讯录的显示。
查找:
按指定方式,输入关键字,查找指定记录。
插入:
实现记录的添加或在指定位置插入记录。
保存:
将内存中正在被操作的通讯录以文件形式保存到磁盘。
读入:
保存的逆操作,讲存在磁盘中的通讯录文件读到内存中。
排序:
按指定关键字对通讯录数据进行排序。
修改:
提供修改某条记录的功能。
移动:
移动记录在通讯录中的存储位子,使其被查找或显示时的位序前移或后移。
退出:
结束程序运行。
2,设计要求
(1)设计通讯录数据的逻辑结构和物理结构。
(2)通讯录至少包括下列数据信息:
姓名,电话,单位等。
(3)完成图示基本功能。
(4)软件易用,操作简单。
(5)根据自己使用通讯录体会扩充其他功能,如按姓名查找,按号码查找,按序号删除等。
(6)设计足够多的测试用例
(7)数据输入有效性检验:
如姓名不能为空,号码中不能有非法字符等。
(8)提供分组管理的相关功能,如:
分组显示,加入组,组创建,组查询等。
(9)可视化的界面设计。
3,概要设计
1,使用structdatastructaddressList定义结构体类型,structdata结构体中包括年月日的定义,strcutaddressList中包括联系人ID账号,名字,性别,名族,生日,手机号码,QQ号码和家庭地址等。
structdate
{
intyear;
intmonth;
intday;
};
structaddressList
{
charID[10];
charname[10];
chargender[4];
charminzu[2];
datebirthday;
charshoujihao[14];
charQQ[11];
charaddress[40];
};
2,程序设计过程中用到的函数有:
intzhujiemian();
voidtianjia(fstream&);
voidxiugai(fstream&);
voidshanchu(fstream&);
voidchazhao(fstream&);
voidliulan(fstream&);
intfindRecord(fstream&,constchar*);
intgetAmount(fstream&);
3,整个程序用的是面向对象的方法,在主函数中调用各种函数,来实现通讯录的功能。
在主函数中,使用的是c++语言中的开关语句(switch)用来选择通讯录的各种功能。
4,在各个函数的编译过程中使用了system(“cls)命令,进项清屏工作,在利用各种输出命令。
5,主界面设计为
采用了单链表形式,使得选择更加方便,快速。
程序段为:
intzhujiemian()
{
system("cls");
intselection=0;
cout<<"***********************************************"< cout<<"※通讯录※"< cout<<"***********************************************"< cout< cout<<"1、添加联系人信息"< cout< cout<<"2、删除联系人信息"< cout< cout<<"3、修改联系人信息"< cout< cout<<"4、查询联系人信息"< cout< cout<<"5、浏览联系人信息"< cout< cout<<"6、退出"< cout<<"**********************************************"< cout<<"请选择: "; cin>>selection; return(selection); } 6,下面开始写各个函数,在函数中,采用了边做边存的思想,减少了工作量。 提供了是否正确打开通讯录的程序 7,调用函数voidtianjia(fstream&listFile)当打开方式正确时,输入联系人的信息ID账号,姓名,性别(男/女)民族,出生年月,手机号,QQ号,家庭住址等。 以防信息的重复添加,还提供了添加提醒,当添加好一个联系人之后会提醒是否继续添加,或者是回到主界面,运用了while,if,选择语句,进行操作。 程序代码如下: voidtianjia(fstream&listFile) { system("cls"); cout<<"*********************************************"< cout<<"※添加界面※"< cout<<"*********************************************"< addressLista; charb,c; do { listFile.open("tongxunlu.dat",ios: : out|ios: : app|ios: : binary); if(listFile.fail()) { cout<<"打开通讯录失败! "< exit(0); } cout<<"请输入以下信息: "< cout<<"学号: "< cin>>a.xuehao; cout<<”姓名: "< cin>>a.name; cout<<"性别(男/女): "< cin>>a.gender; cout<<"民族: "< cin>>a.minzu; cout<<"出生年-月-日: "< cin>>a.birthday.year>>a.birthday.month>>a.birthday.day; cout<<"手机号: "< cin>>a.shoujihao; cout<<"QQ号: "< cin>>a.QQ; cout<<"家庭住址: "< cin>>a.address; cout<<"此信息已经添加! "< listFile.write((char*)&a,sizeof(a)); listFile.flush(); cout<<"是否继续添加? (Y/N)"< cin>>b; cin.ignore(); listFile.close(); } while(toupper(b)=='Y'); cout<<"***************************************"< cout<<"是否返回到主界面? (Y/N)"< cin>>c; if(toupper(c)=='Y') main(); else exit(0); } 8,调用voidxiugai(fstream&listFile)函数进行对通讯录的修改。 用了ifelse语句判断输入的联系人信息是否正确,嵌套while语句,再用switch语句选择要修改的信息。 程序片段如下: voidxiugai(fstream&listFile) { system("cls"); cout<<"************************************************"< cout<<"※修改界面※"< cout<<"***********************************************"< boolisExit=false; charmodifyName[10]; cout<<"\n请输入要修改的联系人的姓名: "; cin>>modifyName; listFile.open("tongxunlu.dat",ios: : out|ios: : in|ios: : binary); if(listFile.fail()) { cout<<"打开通讯录失败! "< exit(0); } intpos=findRecord(listFile,modifyName); if(-1==pos) cout<<"对不起,没有"< "< else { addressListtemp; listFile.seekg((long)(sizeof(addressList)*pos),ios: : beg); listFile.read((char*)&temp,sizeof(addressList)); while(! isExit) { intselection=0; cout<<"***********************************"< cout<<"1、ID"< cout<<"2、姓名"< cout<<"3、性别"< cout<<"4、民族"< cout<<"5、出生年-月-日"< cout<<"6、手机号"< cout<<"7、QQ"< cout<<"8、家庭住址"< cout<<"9、返回上一层"< cout<<"***********************************"< cout<<"\n请输入要修改的选项: "; cin>>selection; cout< switch(selection) { case1: cout<<"原ID: "< cout<<"新ID: "; cin>>temp.ID; cin.ignore(); cout<<"修改成功! "< break; case2: cout<<"原姓名: "< "; cin>>temp.name; cin.ignore(); cout<<"修改成功! "< break; case3: cout<<"原性别: "< cout<<"新性别: "; cin>>temp.gender; cin.ignore(); cout<<"修改成功! "< break; case4: cout<<"原民族: "< "; cin>>temp.minzu; cin.ignore();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 管理 系统 设计 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)