您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 手机通信录管理系统设计—C语言课程设计
手机通信录管理系统设计[要求]模拟手机通信录管理系统,实现对手机中的通信录进行管理。功能要求如下:(1)查看功能:选择此功能时,列出下列三类选择。a)办公类b)个人类c)商务类当选中某类时,显示出此类所有数据中的姓名、电话号码和电子邮件。(2)增加功能:能录入新数据。一个结点包括:姓名、电话号码、分类(办公类、个人类、商务类)、电子邮件。例如:杨**135896********商务类*****@***.com。当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,储存空间已满,不能再录入新数据;;录入的新数据能按递增的顺序自动进行条目编号。(3)修改功能:选中某个人姓名时,可对此人的相应数据进行修改。(4)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的编号。【需求分析】根据题目要求,由于联系人信息时存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要查看联系人信息,应提供显示、查看功能;要实现修改和删除联系人功能,所以应提供对文件的修改和删除操作。【总体设计】以下分析整个系统,根据上面的需求分析,可将这个系统的设计分为四大模块(如图一):图一系统功能模块图【详细设计】1.主函数主函数设计比较简洁,仅有一个语句。[程序]main()/*******************主函数********************/{menu();}2.主菜单主菜单函数提供用户对系统功能的选择,包括浏览联系人、增加联系人、修改联系人、删除联系人。该函数的流程图如图二所示。程序如下,这样编写的目的在于系统执行完每部分模块后能够方便返回到系统界面。图二主菜单流程图[程序]voidmenu()/******************菜单函数*****************/{intn=0,w1;do{puts(\t\t***********************MENU***********************\n\n);puts(\t\t\t\t1.Browseall);puts(\t\t\t\t2.Addmembers);puts(\t\t\t\t3.Modifyinformation);puts(\t\t\t\t4.Deleteinformation);puts(\n\n\t\t***************************************************\n);printf(Chooseyournumber(1-4):[]\b\b);scanf(%d,&n);if(n1||n4){w1=1;getchar();}else开始显示一系列功能选项输入n,判断n是否是1-4?根据n的值调用各功能模块函数结束Yw1=0;}while(w1==1);switch(n){case1:browse();break;/*浏览联系人模块*/case2:add();break;/*增加联系人模块*/case3:modify();break;/*修改联系人模块*/case4:del();break;/*删除联系人模块*/}}3.数据结构设计各联系人信息包括有姓名、电话号码、联系人类型、电子邮件。可以使用结构体数组,则姓名、电话、类型和电子邮件作为结构体成员。structmember/*联系人结构体*/{charname[20];/*联系人姓名*/chartel[11];/*联系人电话*/inttype;/*联系人类型:1为办公类;2为个人类;3为商务类*/charemail[30];/*联系人电子邮件*/}mem[N];/*N为全局变量,表示能够储存的联系人数量*/注意:mem[N]中的N为联系人数目,程序中采用宏定义的方式,可以随时在源程序宏定义中修改,本程序宏定义#defineN15.4.浏览联系人模块[需求分析]该模块的功能是使用户可以浏览或者分类浏览各联系人信息。如图三所示,当用户输入1、2、3、4时,分别显示办公类联系人、个人类联系人、商务类联系人和所有联系人。图三浏览联系人模块流程图[程序]voidbrowse()/*********浏览联系人函数**********/{intm,n=0,w1;m=load();do{puts(\n\n\t\t******************BROWSR********************);puts(\t\t\t\t1.showclericalmembers);/*查询办公类联系人*/puts(\t\t\t\t2.showpersonalmembers);/*查询个人类联系人*/puts(\t\t\t\t3.showcommercialmembers);/*查询商务类联系人*/puts(\t\t\t\t4.showallmembers);/*查询所有联系人*/puts(\t\t\t\t5.returntomenu);/*返回菜单*/printf(Chooseyournumber(1-5):[]\b\b);scanf(%d,&n);if(n1||n5){w1=1;getchar();}elsew1=0;}while(w1==1);if(n==1){printf_cle(m);/*显示办公类联系人*/puts(\ninformationhasbeenshowed,Pressanykeytoreturntomenu\n);system(pause);/*暂停系统工作*/getchar();menu();}elseif(n==2){printf_per(m);/*显示个人类联系人*/puts(\ninformationhasbeenshowed,Pressanykeytoreturntomenu\n);system(pause);/*暂停系统工作*/getchar();menu();}elseif(n==3){printf_com(m);/*显示商务类联系人*/puts(\ninformationhasbeenshowed,Pressanykeytoreturntomenu\n);system(pause);/*暂停系统工作*/getchar();menu();}elseif(n==4){printf_all(m);/*显示商务类联系人*/puts(\ninformationhasbeenshowed,Pressanykeytoreturntomenu\n);system(pause);/*暂停系统工作*/getchar();menu();}else{menu();}}5.增加联系人模块[需求分析]该模块的功能是使用户实现增加新联系人的功能,从键盘输入新联系人信息并加入到原文件中。该模块流程图如图四所示。[程序]voidadd(){intm,w1,n,t,w2,i,j;/*m为现有联系人数量*/m=load();/*加载联系人信息,并将联系人数量输入m*/if(m==N){图四增加联系人模块流程图printf(thereisnoterabytestosave\n);printf(Pressanykeytoreturntomenu...);getchar();system(pause);menu();}开始运行m=load()函数,加载现有联系人信息判断m是否小于N?输入联系人姓名、电话、类型、电子邮箱是否保存?运行save(int)函数,将信息保存至文件中返回至主菜单Y输出:储存空间已满,无法输入结束YNNelse{puts(\tpleaseinputcontract'sname:);/*输入联系人姓名*/scanf(%s,mem[m].name);/*将联系人姓名保存至结构体*/puts(\tpleaseinputcontract'stelephonenumber:);scanf(%s,mem[m].tel);do/*选择联系人类型语句*/{puts(\n\n\n\n\npleasechoosecontract'stype:\n\n\n);puts(1,clerical\t);puts(2,personal\t);puts(3.commercial\t);puts(pleasechoosecontract'stype:[]\b\b);scanf(%d,&n);if((n!=1)&&(n!=2)&&(n!=3)){w1=1;getchar();}elsew1=0;}while(w1==1);switch(n)/*将联系人类型信息存入结构体中*/{case1:mem[m].type=1;break;case2:mem[m].type=2;break;case3:mem[m].type=3;break;}puts(\tpleaseinputcontract'semailaddress:);scanf(%s,mem[m].email);}do{puts(Areyousuretosave?1.yes2.no[]\b\b);scanf(%d,&t);if(t1||t2){w2=1;getchar();}elsew2=0;}while(w2==1);if(t==1){for(i=0;im;i++){if(strcmp(mem[i].name,mem[m].name)==0){puts(namehasexisted!cannotsave,Pressanykeytomeun!);for(j=0;j20;j++)mem[m].name[j]='\0';for(j=0;j11;j++)mem[m].tel[j]='\0';mem[m].type=0;for(i=0;i30;i++)mem[m].email[j]='\0';system(pause);menu();}if(strcmp(mem[i].tel,mem[m].tel)==0){puts(telephonenumberhasexisted!cannotsave,Pressanykeytomenu!);for(j=0;j20;j++)mem[m].name[j]='\0';for(j=0;j11;j++)mem[m].tel[j]='\0';mem[m].type=0;for(i=0;i30;i++)mem[m].email[j]='\0';system(pause);menu();}}save(m);/*保存联系人信息至文本文档*/puts(informationsaved!\n);puts(therefollowsalltheinformations:\n);printf_all(m+1);getchar();puts(Pressanykeytoreturntomenu);system(pause);menu();}if(t==2)/*如果用户不保存,则将刚刚存入结构体中的数据删除*/{for(i=0;i20;i++)mem[m].name[i]='\0';for(i=0;i11;i++)mem[m].tel[i]='\0';mem[m].type=0;for(i=0;i30;i++)mem[m].email[i]='\0';puts(informationnotsaved!\n);puts(therefollowsalltheinformations:\n);printf_all(m);getchar();puts(Pressanykeytoreturntomenu);system(pause);menu();}}6.修改联系人模块[需求分析]该模块的功能的功能是显示所有联系人信息。显示完后,用户输入要修改联系人的序号,系统根据用户输入的序号显示用户选择的联系人,并提示用户需要修改哪部分信息,是姓名、电话、类型还是电子邮箱。根据用户的选择修改相应的信息。[程序]voidmodify(){intm,n,t,w1,w2;m=load();puts(therefollowsalltheinformations:\t);pri
本文标题:手机通信录管理系统设计—C语言课程设计
链接地址:https://www.777doc.com/doc-4682075 .html