高级语言程序设计通讯录管理系统_第1页
高级语言程序设计通讯录管理系统_第2页
高级语言程序设计通讯录管理系统_第3页
高级语言程序设计通讯录管理系统_第4页
高级语言程序设计通讯录管理系统_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

-1-高级语言程序设计通讯录管理系统1、引言随着信息社会的高速发展,人与人之间的联系越来越频繁,通讯方式越来越多样化,如何保证与朋友、同学、同事、领导、亲戚等之间的联系,并能方便快捷的查找、记录、修改其相关通讯信息。仅靠以前单独的手工记录已远远不能满足当前的需要。开发一个通讯录管理系统,借助计算机可以方便、快捷、灵活的管理个人的朋友及相关人员的通讯信息,了解友人相关信息,帮助与友人保持联络。所以设计一个通讯录管理系统管理各人的通讯信息是是非必要的。2、系统设计2、1设计目的设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。其功能包括以下各项:1)数据包括:人名、工作单位、电话号码和E-mail地址。2)可对记录中的姓名和电话号码进行修改。3)可增加或删除记录。4)可显示所有保存的记录。5)可按人名或电话号码进行查询。2.2模块设计根据要求,电话簿数据以文本文件存放在文件中,故需要提供文件的输入、输出等操作;还需要保存记录以进行修改,删除,查找等操作;另外还应提供键盘式选择菜单实现功能选择。系统功能模块图如下:通讯录管理系统通讯录管理系统建立通讯录修改记录删除记录添加记录查找记录退出系统系统功能模块图2.3详细设计函数设计要求简洁,只提供部分提示语和函数的调用。函数简单流程如下图:显示一系列功能选项输入n,判断n是否是0~5?显示一系列功能选项输入n,判断n是否是0~5?根据n的值调用各功能模块函数结束开始ny3主要功能实现3.1主界面与模块功能实现3.1.1主界面的实现Voidmenu()/*主界面*/{intn,w1;voidenter();voidadd();voidmodify();voiddeleter();voidsearch();do{printf("\n");printf("\n");printf("*********************************\n");printf("*CommunicatebyLetterRecordingManagementSystem*\n");printf("*1.AddRecord*\n");printf("*2.DisplayList*\n");printf("*3.SearchByName*\n");printf("*4.DeleteRecord*\n");printf("*5.ReviseRecord*\n");printf("*0.Breaksystem*\n");printf("*********************************\n");printf("Pleaseselect(1,2,3,4,5,0):");scanf("%d",&n);if(n<0||n>5){w1=1;getchar();}elsew1=0;}while(w1==1);switch(n){case1:enter();break;/*输入模块*/case2:add();break;/*添加模块*/case3:modify();break;/*查询模块*/case4:deleter();break;/*删除模块*/case5:search();break;/*输出模块*/case0:exit(0);}3.1.2模块函数的实现1)从键盘输入一个0~5的数字voidenter(){inti,n;printf("Howmanypeople(0-%d)?:",N-1);scanf("%d",&n);printf("请输入数据:\n");for(i=0;i<n;i++){printf("\n输入第%d个记录.\n",i+1);input(i);}if(i!=0)save(n);printf_back();}2)添加一条记录voidadd(){inti,n,k,t;n=load();printf("Howmanypeopledoyouwanttoadd(0-%d)?:",N-n-1);scanf("%d",&t);k=n+t;for(i=n;i<k;i++){printf("\n输入第%d个记录.\n",i-n+1);input(i);}save(k);printf_back();}3)查询通讯录中的相关记录voidmodify(){structpeoples;inti,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();printf_n(n);do{printf("\n\nEnternamethatyouwanttomodify!\nName:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0){k=i;s=peop[i];}if(k==-1)printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face();printf_one(k);w1=modify_data(k,n);if(w1==1){printf("\n\t^_^.Successful^_^.\n\n是否继续?\n\n\t1).是2).保存返回\t[]\b\b");scanf("%d",&w0);w2=1;}else{w0=0;if(w2==0)peop[k]=s;}if((w0!=1)&&(w2==1))save(n);}while(w0==1);menu();}4)删除通讯录中的相关记录voiddeleter(){structpeoples;inti,n,k,w0,w1;n=load();do{k=-1;printf_face();printf_n(n);do{printf("\n\nEnternamethatyouwanttodelete!\nName:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0){k=i;s=peop[i];}if(k==-1)printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face();printf_one(k);printf("\n确定?\n\t1).是2).返回[]\b\b");scanf("%d",&w0);if(w0==1){peop[k].name[0]='\0';save(n);}elsebreak;printf("\n\t^_^.Successful^_^.\n");printf("Whatdoyouwanttodo?\n\t1).继续2).返回[]\b\b");scanf("%d",&w1);}while(w1==1);menu();}5)输出要查询的记录voidsearch(){intw0,k,i,n,w1,w2;structpeoples;n=load();do{printf("请选择查找类别:1).姓名2).电话号码[]\b\b");scanf("%d",&w1);if(w1<1||w1>2){printf("输入错误!请重新输入!\n");w2=1;}}while(w2==1);if(w1==1){do{k=-1; do{printf("\n\nEnternamethattouwanttosearch!\nName:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0){k=i;s=peop[i];}if(k==-1)printf("\n\n没有记录请重新输入!");}while(k==-1); printf_face();printf_one(k);printf("\nWhatdoyouwanttodo?\n\t1).继续2).返回菜单[]\b\b");scanf("%d",&w0);}while(w0==1);menu();}else{do{k=-1; do{printf("\n\nEnternumberthattouwanttosearch!\nNum:");scanf("%s",s.num);for(i=0;i<n;i++)if(strcmp(s.num,peop[i].num)==0){k=i;s=peop[i];}if(k==-1)printf("\n\n没有记录请重新输入!");}while(k==-1); printf_face();printf_one(k);printf("\nWhatdoyouwanttodo?\n\t1).继续2).返回菜单[]\b\b");scanf("%d",&w0);}while(w0==1);menu();}}3.2详细代码#defineN50#include<stdio.h>#include<string.h>structpeople{charname[20];charcompany[50];charnum[15];charmail[20];}peop[N];voidprintf_face(){printf("\n\t姓名\t单位\t电话号码\t邮箱\n");}voidprintf_one(inti){printf("\t%s\t%s\t%s\t%s\n",peop[i].name,peop[i].company,peop[i].num,peop[i].mail);}voidprintf_n(intn){intj;for(j=0;j<n;j++){if((j!=0)&&(j%10==0)){printf("\n\nPressanykeytocontinue...:");getchar();puts("\n\n");}printf_one(j);}getchar();}intload(){FILE*fp;inti;if((fp=fopen("file","rb"))==NULL){printf("\nCannotopenfile\n");exit(0);}for(i=0;!feof(fp);i++)fread(&peop[i],sizeof(structpeople),1,fp);fclose(fp);return(i-1);}intmodify_data(inti,intn){intc,w1;voidinput(inti);voidmenu();do{puts("\n修改选项=>\n\n1).姓名2).单位3).电话号码4).邮箱5).所有数据6).取消并返回");printf("请选择?:[]\b\b");scanf("%d",&c);if(c>6||c<1){puts("\nChooseerror!Pleaseagain!");getchar();}}while(c>6||c<1);do{switch(c){case1:printf("name:");scanf("%s",peop[i].name);break;case2:printf("company:");scanf("%s",peop[i].company);break;case3:printf("number:");scanf("%s",peop[i].num);break;case4:printf("e-mail:");scanf("%s",peop[i].mail);break;case5:input(i);break; case6:menu();}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).不,重新修改3).返回不保存[]\b\b");scanf("%d",&w1);}while(w1==2);return(w1);}voidinput(inti){printf_face();printf("\t");scanf("%s\t%s\t%s\t%s",peop[i].name,peop[i].company,peop[i].num,peop[i].mail);}voidsave(intn){FILE*fp;inti;if((fp=fopen("file","wb"))==NULL){printf("\nCannotopenfile\n");exit(0);}for(i=0;i<n;i++)if(peop[i].name[0]!='\0')if(fwrite(&peop[i],sizeof(structpeople),1,fp)!=1)printf("filewriteerror\n");fclose(fp);}voidprintf_back(){intw;voidbrowse();voidmenu();printf("\n\n\t^_^.Successful.^_^\n\n");printf("Whatdoyouwanttodo?\n\n\t1).浏览所有\t2).返回:[]\b\b");scanf("%d",&w);if(w==1)browse();elsemenu();}voidmain(){voidmenu();menu();}voidmenu(){intn,w1;voidenter();voidadd();voidmodify();voidbrowse();voiddeleter();voidsearch();do{printf("\n");printf("\n");printf("*********************************\n");printf("*CommunicatebyLetterRecordingManagementSystem*\n");printf("*1.AddRecord*\n");printf("*2.DisplayList*\n");printf("*3.SearchByName*\n");printf("*4.DeleteRecord*\n");printf("*5.ReviseRecord*\n");printf("*0.Breaksystem*\n");printf("*********************************\n");printf("Pleaseselect(1,2,3,4,5,0):");scanf("%d",&n);if(n<0||n>5){w1=1;getchar();}elsew1=0;}while(w1==1);switch(n){case1:enter();break;case2:add();break;case3:modify();break;case4:deleter();break;case5:search();break;case0:exit(0);}}voidenter(){inti,n;printf("Howmanypeople(0-%d)?:",N-1);scanf("%d",&n);printf("请输入数据:\n");for(i=0;i<n;i++){printf("\n输入第%d个记录.\n",i+1);input(i);}if(i!=0)save(n);printf_back();}voidadd(){inti,n,k,t;n=load();printf("Howmanypeopledoyouwanttoadd(0-%d)?:",N-n-1);scanf("%d",&t);k=n+t;for(i=n;i<k;i++){printf("\n输入第%d个记录.\n",i-n+1);input(i);}save(k);printf_back();}voidmodify(){structpeoples;inti,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();printf_n(n);do{printf("\n\nEnternamethatyouwanttomodify!\nName:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0){k=i;s=peop[i];}if(k==-1)printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face();printf_one(k);w1=modify_data(k,n);if(w1==1){printf("\n\t^_^.Successful^_^.\n\n是否继续?\n\n\t1).是2).保存返回\t[]\b\b");scanf("%d",&w0);w2=1;}else{w0=0;if(w2==0)peop[k]=s;}if((w0!=1)&&(w2==1))save(n);}while(w0==1);menu();}voidsearch(){intw0,k,i,n,w1,w2;structpeoples;n=load();do{printf("请选择查找类别:1).姓名2).电话号码[]\b\b");scanf("%d",&w1);if(w1<1||w1>2){printf("输入错误!请重新输入!\n");w2=1;}}while(w2==1);if(w1==1){do{k=-1; do{printf("\n\nEnternamethattouwanttosearch!\nName:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0){k=i;s=peop[i];}if(k==-1)printf("\n\n没有记录请重新输入!");}while(k==-1); printf_face();printf_one(k);printf("\nWhatdoyouwanttodo?\n\t1).继续2).返回菜单[]\b\b");scanf("%d",&w0);}while(w0==1);menu();}else{do{k=-1; do{printf("\n\nEnternumberthattouwanttosearch!\nNum:");scanf("%s",s.num);for(i=0;i<n;i++)if(strcmp(s.num,peop[i].num)==0){k=i;s=peop[i];}if(k==-1)printf("\n\n没有记录请重新输入!");}while(k==-1); printf_face();printf_one(k);printf("\nWhatdoyouwanttodo?\n\t1).继续2).返回菜单[]\b\b");scanf("%d",&w0);}while(w0==1);menu();}}voiddeleter(){structpeoples;inti,n,k,w0,w1;n=load();do{k=-1;printf_face();printf_n(n);do{printf("\n\nEnternamethatyouwanttodelete!\nName:");scanf("%s",);for(i=0;i<n;i++)if(strcmp(,peop[i].name)==0){k=i;s=peop[i];}if(k==-1)printf("\n\n没有记录请重新输入!");}while(k==-1);printf_face();printf_one(k);printf("\n确定?\n\t1).是2).返回[]\b\b");scanf("%d",&w0);if(w0==1){peop[k].name[0]='\0';save(n);}elsebreak;printf("\n\t^_^.Successful^_^.\n");printf("Whatdoyouwanttodo?\n\t1).继续2).返回[]\b\b");scanf("%d",&w1);}while(w1==1);menu();}4、运行结果运行后主界面如下图:建立通讯录如下图:5、设计总结通过这段时间的课程设计,本人对计算机的应用,数据结构的作用以及C语言的使用都有了更深的了解。尤其是C语言的进步让我深刻的感受到任何所学的知识都需要实践,没有实践就无法真正理解这些知识以及掌握它们,使其成为自己的财富。在理论学习和上机实践的各个环节中,通过自主学习和请教老师,我收获了不少。当然也遇到不少的

温馨提示

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

最新文档

评论

0/150

提交评论