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

上传人:b****4 文档编号:6883643 上传时间:2023-05-10 格式:DOCX 页数:34 大小:171.31KB
下载 相关 举报
通讯录管理系统的设计与实现.docx_第1页
第1页 / 共34页
通讯录管理系统的设计与实现.docx_第2页
第2页 / 共34页
通讯录管理系统的设计与实现.docx_第3页
第3页 / 共34页
通讯录管理系统的设计与实现.docx_第4页
第4页 / 共34页
通讯录管理系统的设计与实现.docx_第5页
第5页 / 共34页
通讯录管理系统的设计与实现.docx_第6页
第6页 / 共34页
通讯录管理系统的设计与实现.docx_第7页
第7页 / 共34页
通讯录管理系统的设计与实现.docx_第8页
第8页 / 共34页
通讯录管理系统的设计与实现.docx_第9页
第9页 / 共34页
通讯录管理系统的设计与实现.docx_第10页
第10页 / 共34页
通讯录管理系统的设计与实现.docx_第11页
第11页 / 共34页
通讯录管理系统的设计与实现.docx_第12页
第12页 / 共34页
通讯录管理系统的设计与实现.docx_第13页
第13页 / 共34页
通讯录管理系统的设计与实现.docx_第14页
第14页 / 共34页
通讯录管理系统的设计与实现.docx_第15页
第15页 / 共34页
通讯录管理系统的设计与实现.docx_第16页
第16页 / 共34页
通讯录管理系统的设计与实现.docx_第17页
第17页 / 共34页
通讯录管理系统的设计与实现.docx_第18页
第18页 / 共34页
通讯录管理系统的设计与实现.docx_第19页
第19页 / 共34页
通讯录管理系统的设计与实现.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《通讯录管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统的设计与实现.docx(34页珍藏版)》请在冰点文库上搜索。

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

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

课程设计报告

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

姓名:

钟婷英班级:

计122

学号:

39时间:

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

{

("",ios:

:

out|ios:

:

app|ios:

:

binary);

if())

{

cout<<"打开通讯录失败!

"<

exit(0);

}

cout<<"请输入以下信息:

"<

cout<<"学号:

"<

cin>>;

cout<<”姓名:

"<

cin>>;

cout<<"性别(男/女):

"<

cin>>;

cout<<"民族:

"<

cin>>;

cout<<"出生年-月-日:

"<

cin>>"手机号:

"<

cin>>;

cout<<"QQ号:

"<

cin>>;

cout<<"家庭住址:

"<

cin>>;

cout<<"此信息已经添加!

"<

((char*)&a,sizeof(a));

();

cout<<"是否继续添加(Y/N)"<

cin>>b;

();

();

}

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;

("",ios:

:

out|ios:

:

in|ios:

:

binary);

if())

{

cout<<"打开通讯录失败!

"<

exit(0);

}

intpos=findRecord(listFile,modifyName);

if(-1==pos)

cout<<"对不起,没有"<

"<

else

{

addressListtemp;

((long)(sizeof(addressList)*pos),ios:

:

beg);

((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>>;

();

cout<<"修改成功!

"<

break;

case2:

cout<<"原姓名:

"<<<

";

cin>>;

();

cout<<"修改成功!

"<

break;

case3:

cout<<"原性别:

"<<<

cout<<"新性别:

";

cin>>;

();

cout<<"修改成功!

"<

break;

case4:

cout<<"原民族:

"<<<

";

cin>>;

();

cout<<"修改成功!

"<

break;

case5:

cout<<"原出生年-月-日:

"<

<<"新出生年-月-日:

";

cin>>"修改成功!

"<

break;

case6:

cout<<"原手机号:

"<<<

cout<<"新手机号:

";

cin>>;

();

cout<<"修改成功!

"<

break;

case7:

cout<<"原QQ:

"<<<

cout<<"新QQ:

";

cin>>;

();

cout<<"修改成功!

"<

break;

case8:

cout<<"原地址:

"<<<

cout<<"新地址:

";

cin>>;

();

cout<<"修改成功!

"<

break;

case0:

isExit=true;

break;

}

}

((long)(sizeof(addressList)

pos),ios:

:

beg);

((char*)&temp,sizeof(addressList));

();

();

}

cout<

}

9,调用用函数voidshanchu(fstream&listFile)进行对联系人的删除,整个函数使用while,ifelse语句进行操作,未免误删,还要进行提示,是否确认删除并确定是否删除成功,用到语句仍是选择和循环语句。

程序片段如下;

开始

是否删除

已删除

结束

y

n

10,调用函数voidchazhao(fstream&listFile)来查询联系人信息,程序通过联系人的姓名来查找。

程序片段如下:

voidchazhao(fstream&listFile)

{

system("cls");

cout<<"*****"<

cout<<"※查询界面※"<

cout<<"*****"<

charfindName[21]={'\0'},c;

("",ios:

:

out|ios:

:

in|ios:

:

binary);

if())

{

cout<<"打开通讯录失败!

"<

exit(0);

}

cout<<"\n请输入要查找的同学的姓名:

";

cin>>findName;

intpos=findRecord(listFile,findName);

if(-1==pos)

cout<<"对不起,没有"<

"<

else

{

addressListtemp;

((long)(sizeof(addressList)*pos),ios:

:

beg);

((char*)&temp,sizeof(addressList));

cout<<"***"<

cout<<"学号:

"<<<

cout<<"姓名:

"<<<

cout<<"性别(男/女):

"<<<

cout<<"民族:

"<<<

cout<<"出生年-月-日:

"

<

"<<<

cout<<"QQ:

"<<<

cout<<"家庭住址:

"<<<

}

();

cout<<"***"<

cout<<"是否返回到主界面(Y/N)"<

cin>>c;

if(toupper(c)=='Y')

main();

else

exit(0);

}

11,调用函数voidliulan(fstream&listFile)来浏览之前添加并保存过的联系人。

程序片段如下:

voidliulan(fstream&listFile)

{

system("cls");

cout<<"*****"<

cout<<"※浏览界面※"<

cout<<"*****"<

addressLista;

charb;

intcount=0;

("",ios:

:

in);

if())

{

cout<<"打开通讯录失败!

/n";

exit(0);

}

while(!

())

{

((char*)&a,sizeof(a));

if())

break;

cout<<"**"<

cout<<"学号:

"<<<

cout<<"姓名:

"<<<

cout<<"性别(男/女):

"<<<

cout<<"民族:

"<<<

cout<<"出生年-月-日:

"

<

cout<<"手机号:

"<<<

cout<<"QQ:

"<<<

cout<<"家庭住址:

"<<<

cout<<"**"<

count++;

}

();

if(count==0)

cout<<"该通讯录里没有记录!

"<

cout<<"是否返回到主界面(Y/N)"<

cin>>b;

if(toupper(b)=='Y')

main();

else

exit(0);

}

12,调用函数voiddineRecord(fstream&listFile,constchar*pName)来进行通讯录内储存过联系人的查找。

调出存储在电脑内指定位置的文件,进行查找。

并用函数intgetAmount(fstream&listFile)在查找之后返回文件中记录的个数。

程序片段如下:

//查找记录的记录号

intfindRecord(fstream&listFile,constchar*pName)

{

intpos=-1;

addressListTemp;

(0L,ios:

:

beg);

((char*)&Temp,sizeof(addressList));

while(!

())

{

pos++;

if(strcmp,pName)==0)

return(pos);

((char*)&Temp,sizeof(addressList));

}

();

return(-1);

}

//返回文件中记录的个数

intgetAmount(fstream&listFile)

{

intamount=0;

addressListtemp;

(0L,ios:

:

beg);

((char*)&temp,sizeof(addressList));

while(!

())

{

amount++;

((char*)&temp,sizeof(addressList));

}

();

returnamount;

}

4,设计与体会

一星期的课程设计就这样面临尾声,在课程设计之前,总觉得自己学的c++,java和数据结构没什么用武之地,直到课程设计让我们设计通讯录管理系统,才发现原来学好计算机语言和数据结构是一件多么有趣的事,不仅可以设计通讯录,还可设计游戏,这激发了我好好学习计算机语言的兴趣。

在这次的课程设计当中,很多东西我都不太懂,除了会用一些基本的语句,编写一些函数之外,大部分程序还是向同学请教和网上参考的,在设计过程中遇到过很多的难题,最多的一次,碰上了100多个错误,和n多警告,在经过很多次的调试修改之后,还是没调出理想的结果,当时就想放弃了。

但是,看着同学们那么激情洋溢的调试程序,给了我继续下去的勇气。

终于调出了基本符合的程序,用的是最简单语法。

借鉴了边看边存的程序语段,才提升了我程序的档次。

尽管这次课程设计快要结束了,但是我还是会继续完善我做的程序,让它变得更加全面。

 

源程序附录:

#include

#include

#include

#include<>

#include

#include

usingnamespacestd;

constcharfileName[]="";

//定义结构体

structdate

{

intyear;

intmonth;

intday;

};

structaddressList

{

charxuehao[10];

charname[10];

chargender[4];

charminzu[2];

datebirthday;

charshoujihao[14];

charQQ[11];

charaddress[40];

};

//函数声明

intzhujiemian();

voidtianjia(fstream&);

voidxiugai(fstream&);

voidshanchu(fstream&);

voidchazhao(fstream&);

voidliulan(fstream&);

intfindRecord(fstream&,constchar*);

intgetAmount(fstream&);

//主函数

intmain()

{

boolExit=false;

fstreamlistFile;

while(!

Exit)

switch(zhujiemian())

{

case1:

tianjia(listFile);

break;

case2:

shanchu(listFile);

break;

case3:

xiugai(listFile);

break;

case4:

chazhao(listFile);

break;

case5:

liulan(listFile);

break;

case0:

Exit=true;

break;

}

return0;

}

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);

}

//添加联系人信息

voidtianjia(fstream&listFile)

{

system("cls");

cout<<"***"<

cout<<"※添加界面※"<

cout<<"***"<

addressLista;

charb,c;

do

{

("",ios:

:

out|ios:

:

app|ios:

:

binary);

if())

{

cout<<"打开通讯录失败!

"<

exit(0);

}

cout<<"请输入以下信息:

"<

cout<<"学号:

"<

cin>>;

cout<<"姓名:

"<

cin>>;

cout<<"性别(男/女):

"<

cin>>;

cout<<"民族:

"<

cin>>;

cout<<"出生年-月-日:

"<

cin>>

cout<<"手机号:

"<

cin>>;

cout<<"QQ号:

"<

cin>>;

cout<<"家庭住址:

"<

cin>>;

cout<<"此信息已经添加!

"<

((char*)&a,sizeof(a));

();

cout<<"是否继续添加(Y/N)"<

cin>>b;

();

();

}

while(toupper(b)=='Y');

cout<<"***"<

cout<<"是否返回到主界面(Y/N)"<

cin>>c;

if(toupper(c)=='Y')

main();

else

exit(0);

}

//修改联系人信息

voi

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2