通信录软件设计_第1页
通信录软件设计_第2页
通信录软件设计_第3页
通信录软件设计_第4页
通信录软件设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如文档对你有用,请下载支持!如文档对你有用,请下载支持!硅谷嵌入式教育机构《通信录软件设计》报告题目通信录软件设计姓名:指导教师:2012年7月目录TOC\o"1-5"\h\z.需求分析2\o"CurrentDocument".总体设计2\o"CurrentDocument".功能模块划分2..数据结构的中文描述3..相关模块之间的关系(面向对象的部分思想)3\o"CurrentDocument".详细设计3.各模块函数列表3..各模块流程图4..数据结构的C语言描述6\o"CurrentDocument".源程序代码7通信录软件设计需求分析(1)创建通讯录。通信录应包含姓名、年龄、性别、电话、地址、邮箱、QQ号、身份证号、备注等。(2)增加联系人信息。能够对通信录中添加新的联系人。(3)删除联系人信息。能够删除通信录中任意一个人的信息。(4)根据给定条件查询联系人信息。如按姓名,电话QQ号,邮箱,身份证,地址,备注等查询(5)显示通讯录中的所有联系人信息。能显示当前通信录中所有联系人的信息,或具体某个人的信息(6)将通讯录信息写入文件。能将通信录内容从内存中写入磁盘指定文件中。(7)从文件中读取通讯录信息。能够从指定文件中读取联系人的所有信息二.总体设计功能模块划分1L3显全联人信1L3显全联人信示部系的息整个通值录划分力6]* '修改每个模块都能实现各自的功本系统使用swtch语句对给功能模块进行选择操作/5m匕。退出系统数据结构的中文描述本软件定义一个结构体用来存放联系人的所有信息。结构体中有整形,字符型,数组等数据结构。包含姓名、年龄、性别、电话、地址、邮箱、QQ^、身份证号、备注等。相关模块之间的关系(面向对象的部分思想)程序运行时,从磁盘文件中读入所有联系人的信息。通过switch功能选择键选择相应功能模块。各功能模块独立运行。都能对磁盘文件内容进行修改,别的功能模块对修改后的文件进行操作。三.详细设计1.各模块函数列表本程序中用到的各函数及其功能:(1)LoadFile(),导入通信录文件内容⑵SaveFile(),将修改后的信息导入通信录文件中⑶PrintOneLinkMan(),显示某个特定联系人的信息⑷PrintALLLinkMan(),显示所有联系人及联系方式⑸QueryAddrBooks(),查询联系人信息(6)SearchByName(),SearchByQQ(),SearchByTel()SearchByAddress(),SearchByE_mail(),earchByCardNum(),酸具体方式查找。如按姓名,QQ,电话,地址,邮箱,身份证号码在通信录中查找某人。⑺ModifyAddrBooks(),修改联系人信息⑹ModifyName(),ModifyAge(),ModifySexModifyTel(),ModifyQQ(),ModifyE_mail(),ModifyCard(),ModifyAddr(),ModifyRemarks()以上函数的功能分别是:修改姓名,年龄,电话号码,QQ号,邮箱,身份证号码,地址。AddManInfo(),增加联系人信息SaveAddToFile把增加联系人信息写入文件中DelManInfo(),删除联系人信息DelThepresonInfo删除所查联系人信息(13)退出系统。2.各模块流程图(1)查询模块:查询通讯录,先选择查询方式,以姓名查询方式为例;

(2)修改模块,先输入要修改人姓名,查找承认是否存在,然后选择修改项目Y(是Y(是)输出:通信录中没有此人信息 /判断通/N录中是否有此H输入应修改F目的新内容,如姓年龄(3)增加模块(3)增加模块,解评骊炖话号码,以此判断该人是否已存在,若不存在,则添加该人信思到通信稿中4删除模块,输入待删除联系人的姓名,判断此人是否存在,若存在,则删除该人记录。〃年龄intAge;charSex[3];〃性别charTel[TEL_LEN];〃电话charQQNum[QQ_NUM];//QQ号码charE_mail[E_MAIL];〃邮箱charCardNum[CARD_NUM];〃身份证charAdder[ADDRESS];〃地址charRemarks[REMARKS];〃备注};structaddr_infoLinkMan[MAN_NUM];//定义结构体变量数组该结构体用于存放联系人的所有信息。它包含姓名,年龄等不同的数据类型。四.源程序代码#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<string.h>〃宏定义#defineMAN_NUM500〃通信录最大容量#defineNAME_LEN30//姓名长度#defineTEL_LEN20〃电话长度#defineADDRESS50〃地址长度#defineE_MAIL50〃邮件长度#defineQQ_NUM20//QQ长度#defineCARD_NUM30〃地址长度#defineREMARKS100〃备注长度//定义一个结构体存放联系人信息structaddr_info{charName[NAME_LEN];〃姓名intAge;〃年龄charSex[3];〃性另charTel[TEL_LEN];〃电话charQQNum[QQ_NUM];//QQ号码charE_mail[E_MAIL];〃邮箱charCardNum[CARD_NUM];〃身份证charAdder[ADDRESS];〃地址charRemarks[REMARKS];〃备注);structaddr_infoLinkMan[MAN_NUM];intRealLinkManNum=0;〃定义通信录中实际人数/******************************************************************************函数名称:LoadFile功能:导入通信录文件内容参数:无返回值;无*****************************************************************************/voidLoadFile(void){FILE*fp;inti;fp=fopen("1.txt","rt");if(fp==NULL){printf("文件打开失败\n");exit(0);}for(i=0;i<MAN_NUM;i++){if(feof(fp)){break;}fscanf(fp,"%s",LinkMan[i].Name);fscanf(fp,"%d",&LinkMan[i].Age);fscanf(fp,"%s",LinkMan[i].Sex);fscanf(fp,"%s",LinkMan[i].Tel);fscanf(fp,"%s",LinkMan[i].QQNum);fscanf(fp,"%s",LinkMan[i].E_mail);fscanf(fp,"%s",LinkMan[i].CardNum);fscanf(fp,"%s",LinkMan[i].Adder);fscanf(fp,"%s",LinkMan[i].Remarks);RealLinkManNum++;}fclose(fp);}〃从磁盘读入联系人信息〃计算实际联系人数/****************************************************************************函数名称:功能:参数:返回值:SaveFile将修改后的信息导入通信录文件中无无***************************************************************************/voidSaveFile(void){inti;FILE*fp;fp=fopen("1.txt","wt");if(fp==NULL){printf("文件打开失败!\n");exit(0);}for(i=0;i<RealLinkManNum;i++){fprintf(fp,fprintf(fp,"\n%s\t",LinkMan[i].Name);〃从内存中输出联系人信息到文件fprintf(fp,"%d\t",LinkMan[i].Age);fprintf(fp,"%s\t",LinkMan[i].Sex);fprintf(fp,"%s\t",LinkMan[i].Tel);fprintf(fp,"%s\t",LinkMan[i].QQNum);fprintf(fp,"%s't",LinkMan[i].E_mail);fprintf(fp,"%s't",LinkMan[i].CardNum);fprintf(fp,"%s\t",LinkMan[i].Adder);fprintf(fp,"%s",LinkMan[i].Remarks);}fclose(fp);}/***************************************************************************函数名称:功能函数名称:功能:参数:返回值:显示文件所有联系人的部分信息无无*************************************************************************/voidPrintALLLinkMan(void){inti;printf("通信录中共有联系人:%d个\n",RealLinkManNum);printf("姓名\t年龄\t性别\t电话\t\tQQ号\t\t邮箱\n");for(i=0;i<RealLinkManNum;i++){printf("%s't",LinkMan[i].Name);printf("%d't",LinkMan[i].Age);printf("%s\t",LinkMan[i].Sex);printf("%s't",LinkMan[i].Tel);printf("%s't",LinkMan[i].QQNum);printf("%s't",LinkMan[i].E_mail);}/*****************************************************************************函数名称:PrintOneLinkMan功能:显示某个特定联系人的信息

参数:i,该联系人在表中的序号返回值;无*****************************************************************************/voidPrintOneLinkMan(inti){〃输出所查人的信息printf("printf("姓名:printf("年龄:printf("性另kprintf("电话:\n");%s\n",LinkMan[i].Name);%d\n",LinkMan[i].Age);%s\n",LinkMan[i].Sex);%s\n”,LinkMan[i].Tel);printf("QQ号:%s\n",LinkMan[i].QQNum);printf("邮箱:%s\n",LinkMan[i].E_mail);printf("身份证:%s\n",LinkMan[i].CardNum);printf("地址:%s\n",LinkMan[i].Adder);printf("备注:%s\n",LinkMan[i].Remarks);printf("\n");/***************************************************************************查找栏***************************************************************************//*****************************************************************************函数名称:功能:参数:返回值;SearchByName,SearchByQQ,SearchByTelSearchByAddress,SearchByE_mail,SearchByCardNum按给定方式查找联系人无无*****************************************************************************/voidSearchByName(void){inti,k=0;intn=0;charname[30];printf("请输入查找人的姓名:scanf("%s",name);for(i=0;i<RealLinkManNum;i++){〃按姓名查找(查询一分菜单)\n");if(strcmp(LinkMan[i].Name,name)==0){PrintOneLinkMan(n);}elsen++;}if(n==RealLinkManNum){printf("通信录中没有此人信息\n");}}voidSearchByQQ(void)〃按QQ号码查询(查询一分菜单){inti;charQQ[30];intn=0;printf("请输入查找人的QQ号码:\n");scanf("%s",QQ);for(i=0;i<RealLinkManNum;i++){if(strcmp(LinkMan[i].QQNum,QQ)==0){PrintOneLinkMan(i);}elsen++;}if(n==RealLinkManNum){printf("通信录中没有此人信息\n");}}voidSearchByTel(void)//按电话查询(查询一分菜单){inti;charPhone[20];intn=0;printf("请输入查找人的QQ号码:\n");scanf("%s",Phone);for(i=0;i<RealLinkManNum;i++){if(strcmp(LinkMan[i].Tel,Phone)==0){PrintOneLinkMan(i);}elsen++;}if(n==RealLinkManNum){printf("通信录中没有此人信息\n");}voidSearchByAddress(void)//按地址查询(查询一分菜单){inti;intn=0;charAddress[20];printf(”请输入查找人的地址:\n");scanf("%s",Address);for(i=0;i<RealLinkManNum;i++){if(strcmp(LinkMan[i].Adder,Address)==0){PrintOneLinkMan(i);}elsen++;}if(n==RealLinkManNum){printf("通信录中没有此人信息\n");}}voidSearchByE_mail(void)//按邮箱查询(查询一分菜单){inti;intn=0;charBox[20];printf("请输入查找人的邮箱:\n");scanf("%s",Box);for(i=0;i<RealLinkManNum;i++){if(strcmp(LinkMan[i].E_mail,Box)==0){PrintOneLinkMan(i);}elsen++;}if(n==RealLinkManNum){printf("通信录中没有此人信息\n");}}voidSearchByCardNum(void)//按身份证查询(查询一分菜单)

{inti;intn=0;charCard[30];printf("请输入查找人的身份证:\n");scanf("%s",Card);for(i=0;i<RealLinkManNum;i++){if(strcmp(LinkMan[i].CardNum,Card)==0){PrintOneLinkMan(i);}elsen++;}if(n==RealLinkManNum){printf("通信录中没有此人信息\n");}}voidDispQueryMenu(void)//显示查询菜单(查询一分菜单)TOC\o"1-5"\h\zprintf("\t\t।\n");printf("\t\t*****查找方式*****\n");printf("\t\t1:按姓名查询\n");printf("\t\t2:按QQ号码查询\n");printf("\t\t3:按电话查询\n");printf("\t\t4:按地址查询|\n");printf("\t\t5:按邮箱查询I'n");printf("\t\t6:按身份证查询|\n");printf("\t\t7:退出查询\n");printf("\t\t1\n");voidQueryAddrBooks(void)〃查询联系人信息(主菜单){intkey;while(1)〃显示查询菜单{〃显示查询菜单DispQueryMenu();printf("请选择查询方式:\n");scanf("%d",&key);switch(key){SearchByName();break;

SearchByQQ();break;SearchByTel();break;SearchByAddress();break;SearchByE_mail();break;SearchByCardNum();break;printf("\n\t\t\t谢谢使用,再见!\n");exit(0);default:break;}}}/*****************************************************************************修改栏**/*****************************************************************************/voidDispModifyMenu(void)〃显示修改菜单{printf("\t\t\n),printf("\t\t***ModifyMenu***\n");printf("\t\t1:修改姓名\n");printf("\t\t2:修改年龄\n");printf("\t\t3:修改性别\n");printf("\t\t4:修改电话\n");printf("\t\t5:修改QQ号\n");printf("\t\t6:修改邮箱\n");printf("\t\t7:修改身份证\n");printf("\t\t8:修改地址\n");printf("\t\t9:修改备注\n");printf("\t\t0:退出系统\n");printf("\t\t—」\n");}intSearchByName_2(charname_1[30])//姓名查找是否存在{intx;intn=0;for(x=0;x<RealLinkManNum;x++){if(strcmp(LinkMan[x].Name,name_1)==0){PrintOneLinkMan(x);returnx;}elsen++;}if(n==RealLinkManNum)

{printf("通信录中没有此人信息\n");}}/*****************************************************************************函数名称:功能:参数:返回值:ModifyName,ModifyAgeModifyTel,ModifyQQModifyCard,ModifyAddr,按具体方式修改x待修改人在文件中的序号无,ModifySexModifyE_mailModifyRemarks*****************************************************************************/voidModifyName(intx){//1修改姓名charNewname[30];printf("请输入新名字:\n");scanf("%s",Newname);strcpy(LinkMan[x].Name,Newname);PrintOneLinkMan(x);printf("修改成功!\n");}voidModifyAge(intx){//2修改年龄intNewAge;printf("请输入新年龄:\n");scanf("%d",&NewAge);LinkMan[x].Age=NewAge;PrintOneLinkMan(x);printf("修改成功!\n");}voidModifySex(intx){//3修改性别charNewSex[3];printf("请输入新性别:\n");scanf("%s",NewSex);strcpy(LinkMan[x].Sex,NewSex);PrintOneLinkMan(x);printf("修改成功!\n");}voidModifyTel(intx){charNewTel[20];printf("请输入新电话:\n");scanf("%s",NewTel);//4修改电话strcpy(LinkMan[x].Tel,NewTel);PrintOneLinkMan(x);printf("修改成功!\n");}voidModifyQQ(intx){charNewQQ[20];printf("请输入新QQ:\n");scanf("%s",NewQQ);strcpy(LinkMan[x].QQNum,NewQQ);PrintOneLinkMan(x);printf("修改成功!\n");}voidModifyE_mail(intx){charNewE_mail[20];printf("请输入新邮箱:\n");scanf("%s",NewE_mail);strcpy(LinkMan[x].E_mail,NewE_mail);PrintOneLinkMan(x);printf("修改成功!\n");}voidModifyCard(intx){charNewCard[20];printf("请输入新身份证:\n");scanf("%s",NewCard);strcpy(LinkMan[x].CardNum,NewCard);PrintOneLinkMan(x);printf("修改成功!\n");}voidModifyAddr(intx){charNewAddr[30];printf(”请输入新地址:\n");scanf("%s",NewAddr);strcpy(LinkMan[x].Adder,NewAddr);PrintOneLinkMan(x);printf("修改成功!\n");}voidModifyRemarks(intx){charNewRemarks[100];printf("请输入新名字:\n");//5修改QQ//6修改邮箱//7修改身份证号码//8修改地址//9修改备注scanf("%s",NewRemarks);strcpy(LinkMan[x].Remarks,NewRemarks);PrintOneLinkMan(x);printf("修改成功!\n");}/******************************************************************************函数名称:功能:参数:返回值;ModifyAddrBooks修改联系人信息无无******************************************************************************/voidModifyAddrBooks(void){〃修改联系人信息intN;intkey;charname_2[30];printf("请输入待修改人原姓名:scanf("%s",name_2);N=SearchByName_2(name_2);DispModifyMenu();printf("请选择对修改菜单的操作:scanf("%d",&key);switch(key){\n");\n");case1:ModifyName(N);SaveFile();break;//1修改姓名case2:ModifyAge(N);SaveFile();break;//2修改年龄case3:ModifySex(N);SaveFile();break;//3修改性别case4:ModifyTel(N);SaveFile();break;//4修改电话case5:ModifyQQ(N);SaveFile();break;//5修改QQcase6:ModifyE_mail(N);SaveFile();break;//6修改邮箱case7:ModifyCard(N);SaveFile();break;//7修改身份证号码case8:ModifyAddr(N);SaveFile();break;//8修改地址case9:ModifyRemarks(N);SaveFile();break;//8修改地址case0:printf("\n\t\t\t谢谢使用,再见!\n");exit(0);default:break;/*****************************************************************************增加栏*****************************************************************************//****************************************************************************函数名称:SaveAddToFile功能:把增加联系人信息写入文件中参数:sum新增人数返回值;无****************************************************************************/voidSaveAddToFile(intx){FILE*fp;fp=fopen("1.txt","at");if(fp==NULL){printf("文件打开失败!\n");exit(0);}fprintf(fp,"\n%s\t",LinkMan[x].Name);件中〃从内存中输出添加联系人信息到文fprintf(fp,"%d\t",LinkMan[x].Age);fprintf(fp,"%s\t",LinkMan[x].Sex);fprintf(fp,"%s\t",LinkMan[x].Tel);fprintf(fp,"%s\t",LinkMan[x].QQNum);fprintf(fp,"%s't",LinkMan[x].E_mail);fprintf(fp,"%s't",LinkMan[x].CardNum);fprintf(fp,"%s\t",LinkMan[x].Adder);fprintf(fp,"%s",LinkMan[x].Remarks);fclose(fp);printf("添加成功!\n");}/*****************************************************************************函数名称:功能:参数:返回值;AddManInfo增加联系人信息无无*****************************************************************************/voidAddManInfo(void)〃增加联系人信息(主菜单){inti,j;charaddtel[20];intAddNum;intsign;printf("请输入要添加人的个数:");scanf("%d",&AddNum);for(i=RealLinkManNum;i<RealLinkManNum+AddNum;i++){printf("清输入要添加人的电话:\n");scanf("%s",addtel);for(j=0;j<RealLinkManNum;j++){sign=strcmp(LinkMan[j].Tel,addtel);if(sign==0){break;}}if(sign==0){printf("该联系人已存在,请重新添加\n");break;}else{printf("姓名:");scanf("%s",LinkMan[i].Name);printf("年龄:");scanf("%d",&LinkMan[i].Age);printf("性另k");scanf("%s",LinkMan[i].Sex);printf("电话:"力scanf("%s",LinkMan[i].Tel);printf("QQ号:");scanf("%s",LinkMan[i].QQNum);printf("邮箱:");scanf("%s",LinkMan[i].E_mail);printf("身份证:");scanf("%s",LinkMan[i].CardNum);printf("地址:");scanf("%s",LinkMan[i].Adder);printf("备注:");scanf("%s",LinkMan[i].Remarks);SaveAddToFile(i);}RealLinkManNum=RealLinkManNum+AddNum;〃把新增联系人信息存入文件}/*****************************************************************************删除栏*****************************************************************************/尸***************************************************************************函数名称:DelThepresonInfo

功能:删除所查联系人信息参数:x删除人在文件中的序号

返回值;无*****************************************************************************/voidDelThepresonInfo(intx){inti;for(i=x;i<RealLinkManNum;i++){LinkMan[i]=LinkMan[i+1];}RealLinkManNum=RealLinkManNum-1;SaveFile();pri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论