收藏 分销(赏)

手机通信录标准管理专业系统设计C语言专业课程设计.doc

上传人:二*** 文档编号:4540881 上传时间:2024-09-27 格式:DOC 页数:36 大小:291.54KB
下载 相关 举报
手机通信录标准管理专业系统设计C语言专业课程设计.doc_第1页
第1页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、手机通信录管理系统设计要求 模拟手机通信录管理系统,实现对手机中通信录进行管理。功效要求以下:(1)查看功效:选择此功效时,列出下列三类选择。a) 办公类b) 个人类c) 商务类当选中某类时,显示出这类全部数据中姓名、电话号码和电子邮件。(2)增加功效:能录入新数据。一个结点包含:姓名、电话号码、分类(办公类、个人类、商务类)、电子邮件。比如:杨* 135896*商务类 *.com。当录入了反复姓名和电话号码时,则提醒数据录入反复并取消录入;当通信录中超出15条信息时,储存空间已满,不能再录入新数据;录入新数据能按递增次序自动进行条目编号。(3)修改功效:选中某个人姓名时,可对此人对应数据进行

2、修改。(4)删除功效:选中某个人姓名时,可对此人对应数据进行删除,并自动调整后续条目标编号。【需求分析】依据题目要求,因为联络人信息时存放在文件中,所以应提供文件输入、输出等操作;在程序中需要查看联络人信息,应提供显示、查看功效;要实现修改和删除联络人功效,所以应提供对文件修改和删除操作。【总体设计】以下分析整个系统,依据上面需求分析,可将这个系统设计分为四大模块(图一):图一 系统功效模块图【具体设计】1. 主函数主函数设计比较简练,仅有一个语句。程序main() /*主函数*/menu();2. 主菜单主菜单函数提供用户对系统功效选择,包含浏览联络人、增加联络人、修改联络人、删除联络人。该

3、函数步骤图图二所表示。程序以下,这么编写目标在于系统实施完每部分模块后能够方便返回到系统界面。开始显示一系列功效选项输入n,判定n是否是1-4?Y依据n值调用各功效模块函数结束图二 主菜单步骤图程序void menu() /*菜单函数*/int n=0,w1;do puts(tt*MENU*nn);puts(tttt1.Browse all);puts(tttt2.Add members);puts(tttt3.Modify information);puts(tttt4.Delete information);puts(nntt*n);printf(Choose your number(1-

4、4): bb);scanf(%d,&n);if(n4)w1=1;getchar();elsew1=0;while(w1=1);switch(n)case 1:browse();break; /*浏览联络人模块*/case 2:add();break; /*增加联络人模块*/ case 3:modify();break; /*修改联络人模块*/case 4:del();break; /*删除联络人模块*/3数据结构设计各联络人信息包含有姓名、电话号码、联络人类型、电子邮件。能够使用结构体数组,则姓名、电话、类型和电子邮件作为结构体组员。struct member /*联络人结构体*/char n

5、ame20; /*联络人姓名*/char tel11; /*联络人电话*/int type; /*联络人类型:1为办公类;2为个人类;3为商务类*/char email30; /*联络人电子邮件*/memN; /*N为全局变量,表示能够储存联络人数量*/注意:memN中N为联络人数目,程序中采取宏定义方法,能够随时在源程序宏定义中修改,本程序宏定义#define N 15.4. 浏览联络人模块需求分析该模块功效是使用户能够浏览或分类浏览各联络人信息。图三所表示,当用户输入1、2、3、4时,分别显示办公类联络人、个人类联络人、商务类联络人和全部联络人。图三 浏览联络人模块步骤图程序void br

6、owse() /*浏览联络人函数*/int m,n=0,w1;m=load();doputs(nntt *BROWSR*);puts(tttt1.show clerical members); /*查询办公类联络人*/puts(tttt2.show personal members); /*查询个人类联络人*/puts(tttt3.show commercial members); /*查询商务类联络人*/puts(tttt4.show all members); /*查询全部联络人*/puts(tttt5.return to menu); /*返回菜单*/printf(Choose your

7、 number(1-5): bb);scanf(%d,&n);if(n5)w1=1;getchar();elsew1=0;while(w1=1);if(n=1)printf_cle(m); /*显示办公类联络人*/puts(ninformation has been showed,Press any key to return to menun);system(pause); /*暂停系统工作*/getchar();menu();else if(n=2)printf_per(m); /*显示个人类联络人*/puts(ninformation has been showed,Press any

8、key to return to menun);system(pause); /*暂停系统工作*/getchar();menu();else if(n=3)printf_com(m); /*显示商务类联络人*/puts(ninformation has been showed,Press any key to return to menun);system(pause); /*暂停系统工作*/getchar();menu();else if(n=4)printf_all(m); /*显示商务类联络人*/puts(ninformation has been showed,Press any ke

9、y to return to menun);system(pause); /*暂停系统工作*/getchar();menu();elsemenu();5. 增加联络人模块需求分析该模块功效是使用户实现增加新联络人功效,从键盘输入新联络人信息并加入到原文件中。该模块步骤图图四所表示。程序void add()int m,w1,n,t,w2,i,j; /*m为现有联络人数量*/m=load(); /*加载联络人信息,并将联络人数量输入m*/if(m=N)运行save(int)函数,将信息保留至文件中是否保留?输入联络人姓名、电话、类型、电子邮箱判定m是否小于N?运行m=load()函数,加载现有联络

10、人信息开始返回至主菜单输出:储存空间已满,无法输入 YNNY 图四 增加联络人模块步骤图printf(there is no terabytes to saven);结束printf(Press any key to return to menu .);getchar();system(pause);menu();elseputs(tplease input contracts name:); /*输入联络人姓名*/scanf(%s,memm.name); /*将联络人姓名保留至结构体*/puts(tplease input contracts telephone number:);scanf

11、(%s,memm.tel);do /*选择联络人类型语句*/puts(nnnnnplease choose contracts type:nnn);puts(1,clericalt);puts(2,personalt);puts(mercialt);puts(please choose contracts type: bb);scanf(%d,&n);if(n!=1)&(n!=2)&(n!=3)w1=1;getchar();elsew1=0;while(w1=1);switch(n) /*将联络人类型信息存入结构体中*/case 1:memm.type=1;break;case 2:memm.

12、type=2;break;case 3:memm.type=3;break;puts(tplease input contracts email address:);scanf(%s,memm.email);doputs(Are you sure to save? 1.yes 2.no bb);scanf(%d,&t);if(t2)w2=1;getchar();elsew2=0;while(w2=1);if(t=1)for(i=0;im;i+)if(strcmp(memi.name,memm.name)=0)puts(name has existed!cannot save,Press any

13、 key to meun!);for(j=0;j20;j+) memm.namej=0;for(j=0;j11;j+)memm.telj=0;memm.type=0;for(i=0;i30;i+)memm.emailj=0;system(pause);menu();if(strcmp(memi.tel,memm.tel)=0)puts(telephone number has existed!cannot save,Press any key to menu!);for(j=0;j20;j+) memm.namej=0;for(j=0;j11;j+)memm.telj=0;memm.type=

14、0;for(i=0;i30;i+)memm.emailj=0;system(pause);menu();save(m); /*保留联络人信息至文本文档*/puts(information saved!n);puts(there follows all the informations:n);printf_all(m+1);getchar();puts(Press any key to return to menu);system(pause);menu();if(t=2) /*假如用户不保留,则将刚刚存入结构体中数据删除*/for(i=0;i20;i+) memm.namei=0;for(i=

15、0;i11;i+)memm.teli=0;memm.type=0;for(i=0;i30;i+)memm.emaili=0;puts(information not saved!n);puts(there follows all the informations:n);printf_all(m);getchar();puts(Press any key to return to menu);system(pause);menu();6. 修改联络人模块需求分析该模块功效功效是显示全部联络人信息。显示完后,用户输入要修改联络人序号,系统依据用户输入序号显示用户选择联络人,并提醒用户需要修改哪部分

16、信息,是姓名、电话、类型还是电子邮箱。依据用户选择修改对应信息。程序 void modify()int m,n,t,w1,w2;m=load();puts(there follows all the informations:t);printf_all(m); /*显示全部信息,方便用户确定所要修改信息*/doputs(please input the number that you want to modify,or press 0 to exit:);scanf(%d,&n);if(nm)w1=1;getchar();elsew1=0;while(w1=1);if(n=0)menu();p

17、rintf_one(n);doputs(tttt1,name);puts(tttt2.telephone);puts(tttt3.type);puts(tttt4.email);puts(tttt0.Exit);puts(choose which information do you want to modify,or press 0 to exit:);scanf(%d,&t);if(t4)w2=1;getchar();elsew2=0;while(w2=1);结束返回至主菜单调用对应功效模块输入t判定t是否在04中n是否等于0依据n值调用对应功效模块判定n是否在015中开始输入n运行m=l

18、oad()函数,加载现有联络人信息,并显示全部用户信息NYNYNY图五 修改联络人模块步骤图if(t=1)modify_name(n,m); /*修改姓名函数,n为要修改联络人编号;m为总联络人数*/if(t=2)modify_tel(n,m); /*修改电话函数,n为要修改联络人编号;m为总联络人数*/if(t=3)modify_type(n,m); /*修改类型函数,n为要修改联络人编号;m为总联络人数*/if(t=4)modify_email(n,m); /*修改Email函数,n为要修改联络人编号;m为总联络人数*/if(t=0)menu();7. 删除联络人模块需求分析该模块首先显示

19、现有全部联络人,显示完成后,用户输入要删除联络人序号。删除方法是将数据从结构体中删除,然后将后面统计向前移。删除以后将统计保留至文件中。程序void del()int m,n,w1,w2,t,i;m=load();puts(there follows all the informations:t);printf_all(m);doputs(please input the number that you want to delete: bb);scanf(%d,&n);if(nm)w1=1;getchar();elsew1=0;while(w1=1);do /*用do while语句控制用户输

20、入,使用户只能输入1或2*/puts(you want to delete this information:);printf_one(n);puts(nAre you sure to delete? 1,yes 2,no);scanf(%d,&t);开始运行m=load();加载现有联络人信息;并显示全部联络人信息输入要删除联络人序号n判定0nm是否成立NY显示用户要删除联络人全部信息用户是否确定删除NY删除数据,并运行move函数,将删除位置后面数据前移运行save函数,将信息保留至文件中返回至主菜单结束图六 删除联络人模块if(t2)w2=1;getchar();elsew2=0;whi

21、le(w2=1);if(t=2)puts(information not deleted!Press any key to back to menun);getchar();system(pause);menu();if(t=1)for(i=0;i20;i+)memn-1.namei=0;for(i=0;i11;i+)memn-1.teli=0;memn-1.type=0;for(i=0;i30;i+)memn-1.emaili=0;move(n,m);puts(information deleted!Press any key to back to menun);getchar();syst

22、em(pause);menu();8. 公共函数一下为各模块中可能用到部分公共函数。(1) 加载联络人信息函数:int load()说明该函数用于将文件中数据加载至结构体中,而且能够返回现有联络人数目。程序int load()FILE *fp;int i,j;if(fp=fopen(E:vc programmesmembers.txt,rb)=NULL)/*以只读方法打开一个二进制文件*/printf(ncannot find information);for(i=0;(!feof(fp)&(iN);i+)fread(&memi,sizeof(struct member),1,fp);/*将文

23、件中数据加载至结构体中*/fclose(fp); /*关闭文件*/for(j=0;(strcmp(memj.name,0)!=0)&(j0时,首优异入save_1函数,新建一个文件,同时把mem0数据保留;然后进入save_2函数,将mem1到memm数据追加至文件中*/ save_2(m);该包含两个子函数:void save_1()和void save_2(int m),当结构体中只有一个元素,即m=0时,只实施第一个函数,新建一个文件并将数据存入文件中;假如结构体中多于一个元素,即m0时,首先实施第一个函数新建一个文件,然后实施第二个函数,将结构体中下标大于0数据存入文件中。程序void

24、 save_1()FILE *fp;if(fp=fopen(E:vc programmesmembers.txt,wb)=NULL)printf(ncannot find information);fwrite(&mem0,sizeof(struct member),1,fp);fclose(fp);程序void save_2(int m)int i;FILE *fp;if(fp=fopen(E:vc programmesmembers.txt,ab)=NULL)printf(ncannot find information);for(i=1;i=m;i+)fwrite(&memi,sizeo

25、f(struct member),1,fp);fclose(fp);(3) 显示全部联络人函数:void printf_all(int m)说明形参m表示现有联络人数目。用以控制输出联络人数量。该函数用于输出全部联络人信息。程序void printf_all(int m)int i;printf(nntt all the contracts as follows:);printf(nnNO. name telephone type email n);for(i=0;im;i+) /*判定联络人类别并输出*/if(memi.type=1)printf(%2d %-20s %-11s cleric

26、al %-30sn,i+1,memi.name,memi.tel,memi.email);if(memi.type=2)printf(%2d %-20s %-11s personal %-30sn,i+1,memi.name,memi.tel,memi.email);if(memi.type=3)printf(%2d %-20s %-11s commercial %-30sn,i+1,memi.name,memi.tel,memi.email);(4) 显示办公类联络人函数:void printf_cle(int m)说明形参m表示现有联络人数目。用以控制循环终点。该函数用于输出全部办公类联络

27、人信息。程序void printf_cle(int m)int i;printf(nntt clerical contracts as follows:);printf(nnname telephone type email n);for(i=0;im;i+)if(memi.type=1) /*判定联络人是否属于办公类*/printf(%-20s %-11s clerical %-30sn,memi.name,memi.tel,memi.email);(5) 显示个人类联络人函数:void printf_per(int m)说明形参m表示现有联络人数目。用以控制循环终点。该函数用于输出全部个人

28、联络人信息。程序void printf_per(int m)int i;printf(nntt personal contracts as follows:);printf(nnname telephone type email n);for(i=0;im;i+)if(memi.type=2) /*判定联络人是否属于个人类*/printf(%-20s %-11s personal %-30sn,memi.name,memi.tel,memi.email);(6) 显示商务类联络人函数:void printf_com(int m)说明形参m表示现有联络人数目。用以控制循环终点。该函数用于输出全部

29、商务类联络人信息。程序void printf_com(int m)int i;printf(nntt commercial contracts as follows:);printf(nnname telephone type email n);for(i=0;im;i+)if(memi.type=3) /*判定联络人是否属于商务类*/printf(%-20s %-11s commercial %-30sn,memi.name,memi.tel,memi.email);(7) 显示某一联络人函数:void printf_one(int m)说明形参m表示现有联络人数目。用以控制循环终点。该函数

30、用于输出某一指定联络人信息。程序void printf_one(int m)printf(name telephone type email n);if(memm-1.type=1) /*三个if语句判定联络人类型*/printf(%-20s %-11s clerical %-30sn,memm-1.name,memm-1.tel,memm-1.email);if(memm-1.type=2)printf(%-20s %-11s personal %-30sn,memm-1.name,memm-1.tel,memm-1.email);if(memm-1.type=3)printf(%-20s

31、%-11s commercial %-30sn,memm-1.name,memm-1.tel,memm-1.email);(8) 修改姓名函数:void modify_name(int n,int m)说明该函数用于修改联络人姓名。形参n为用户输入要修改联络人序号;m表示现有联络人数量。程序void modify_name(int n,int m)char mod_name20; /*用于暂存用户输入更改后联络人姓名*/int i,t,w1;puts(please input the new name:);scanf(%s,mod_name);doputs(Are you sure to save? 1.yes 2.no bb);scanf(%d,&t);if(t2)w1=1;getchar();elsew1=0;while(w1=1);if(t=1)/*当用户输入1,即确定修改时,将原来存在结构体中联络人姓名删除,并将新联络人姓名赋到结构体中*/for(i=0;i20;i+)memn-1.namei=0;strcpy(memn-1.name,mod_name);save(m-1);

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服