语c言通讯x录程序设计大学论文.doc

上传人:教**** 文档编号:88288407 上传时间:2023-04-24 格式:DOC 页数:40 大小:594KB
返回 下载 相关 举报
语c言通讯x录程序设计大学论文.doc_第1页
第1页 / 共40页
语c言通讯x录程序设计大学论文.doc_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《语c言通讯x录程序设计大学论文.doc》由会员分享,可在线阅读,更多相关《语c言通讯x录程序设计大学论文.doc(40页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、程序设计综合实习软实 习 报 告学 号159074210姓 名吴师庆班 级软152指导教师潘祥安徽工业大学2016年9月课程设计题目:个人通讯录管理系统一、需求分析个人通讯录管理系统的制作,为了实现数据的输入、输出、修改、删除、查询、存、取功能。程序的基本功能为:1.建立联系人信息,包括姓名、电话、地址、QQ;2.添加新的联系人信息(通讯录信息输入功能);3.可按姓名、电话、地址、QQ排序输出显示通讯录的所有信息(显示通讯录信息功能);4.按姓名、电话、地址、QQ查询某个联系人的信息(通讯录记录查询功能);5.输入联系人姓名以修改某个联系人的信息(修改通讯录信息功能);6.按姓名删除某个联系人

2、的信息(删除通讯录信息功能);7.将数据以文件的形式存储在磁盘上(保存通讯录信息功能)。二、总体设计各模块流程框图1.main()2. void input(PEOPLE pHead,int x)3. void search(PEOPLE pHead)4. int show(PEOPLE pHead)开始选显示排序依据调用address_sort ()函数调用phone_sort ()函数调用name_sort ()函数调用QQ_sort ()函数其他键4321按姓名顺序显示按电话顺序显示按地址顺序显示按QQ顺序显示输入错误输出所有联系人信息结束5. void modify(PEOPLE pH

3、ead)6. void delete_name(PEOPLE pHead,int x)7. void save(PEOPLE pHead)8. void quit()三、详细设计1.新建联系人功能主控函数void input(PEOPLE pHead,int x)实现添加新的联系人的功能。void input(PEOPLE pHead,int x) int i=0; PEOPLE p=pHead; while (p!=NULL&ipNext; +i; PEOPLE pNew=(PEOPLE)malloc(sizeof(people); if(pNew=NULL) printf(动态分配内存失败

4、! );exit(-1); printf(n*nn); printf(tt 请创建并添加联系人信息nn); printf(tt请输入联系人姓名:); gets(pNew-name); printf(tt请输入联系人电话:); gets(pNew-phone); printf(tt请输入联系人地址:); gets(pNew-address); printf(tt请输入联系人QQ:); gets(pNew-QQ); printf(ntt成功添加了联系人信息!nn); printf(请按Enter键继续);printf(n*n); getchar();PEOPLE q=p-pNext; p-pNex

5、t=pNew; pNew-pNext=q; 2.查询功能主控函数void search(PEOPLE pHead)实现可按姓名、电话、地址、QQ查询某联系人的功能,会分别调用相应的查询函数。void search(PEOPLE pHead) int num;printf (n*nn); printf (ttt1.按姓名查找n); printf (ttt2.按电话查找n); printf (ttt3.按地址查找n); printf (ttt4.按QQ查找n);printf (ntt选择你需要操作的功能号码(1-4):); num=getchar();getchar();switch(num)ca

6、se 1:name_search(pHead);break;case 2:phone_search(pHead);break;case 3:address_search(pHead);break;case 4:QQ_search(pHead);break;default:printf(ttt 输入错误!nn);printf(请按Enter键继续);printf (n*n);getchar();break;3.显示功能主控函数 int show(PEOPLE pHead)先调用排序函数,再按相应顺序将全部联系人的信息显示到屏幕。int show(PEOPLE pHead) int num;pri

7、ntf (n*nn); printf (ttt1.按姓名顺序显示n); printf (ttt2.按电话顺序显示n); printf (ttt3.按地址顺序显示n); printf (ttt4.按QQ顺序显示n); printf (ntt选择你需要操作的功能号码(1-4):); num=getchar();getchar();switch(num)case 1:name_sort(pHead);break;case 2:phone_sort(pHead);break;case 3:address_sort(pHead);break;case 4:QQ_sort(pHead);break;def

8、ault:printf(ttt 输入错误!nn);printf(请按Enter键继续);printf (n*n);getchar();return 0;int len=number(pHead); PEOPLE p=pHead-pNext; int i;printf (n*n); printf (= 用户信息记录表 =); printf (n*nn); if (p!=NULL) for (i=0;ipNext) printf (tt联系人姓名:%sn,p-name); printf (tt联系人电话号码:%sn,p-phone); printf (tt联系人地址:%sn,p-address);

9、 printf (tt联系人QQ:%sn,p-QQ); printf (n); if (i!=0&(i+1)%5=0) printf (nttt输入任意键显示下一页n);printf(n*n);getchar(); printf(请按Enter键继续);printf (n*n);getchar(); else printf (tt对不起!没有任何人的记录!nn); printf(请按Enter键继续);printf (n*n);getchar(); return 0; 4.修改功能主控函数void modify(PEOPLE pHead)输入要修改联系人的姓名,可显示该联系人信息,并输入该联系

10、人新的信息。void modify(PEOPLE pHead) int i; int mark=0; int len=number(pHead); char name25; PEOPLE p=pHead-pNext; printf(n*n); printf (= 用户信息修改功能 =); printf(n*nn);printf (tt输入要修改联系人的姓名:); gets(name); if(p!=NULL) for(i=1;ipNext) if(strcmp(name,p-name)=0) printf (*以下是您要修改的用户信息*nn); printf (联系人姓名:%sn, p-nam

11、e); printf (联系人电话号码:%sn, p-phone); printf (联系人地址:%sn, p-address); printf (联系人QQ:%sn, p-QQ); printf(n*nn); +mark; break; if(mark0) printf(tt请输入修改联系人信息nn); printf(tt请输入联系人姓名:); scanf(%s,p-name);printf(tt请输入联系人电话:); scanf(%s,p-phone);printf(tt请输入联系人地址:); scanf(%s,p-address);printf(tt请输入联系人QQ:); scanf(%

12、s,p-QQ);getchar();printf(ntt成功修改了联系人信息!nn);printf(请按Enter键继续);printf(n*n); getchar(); else printf (ntt对不起!没有该用户的记录!nn);printf(请按Enter键继续);printf(n*n); getchar(); else printf (ntt对不起!没有任何人的记录!nn); printf(请按Enter键继续);printf(n*n);getchar();5.删除功能主控函数void delete_name(PEOPLE pHead,int x)输入要删除联系人的姓名,可显示该联

13、系人信息,并提示是否确认删除,确认后会删除该联系人信息。void delete_name(PEOPLE pHead,int x) int i,pos; int mark=0; int len=number(pHead); char name25; PEOPLE p=pHead-pNext; printf(n*n); printf (= 用户信息删除功能 =); printf(n*nn);printf (tt输入要删除联系人的姓名:); gets(name); if(p!=NULL) for(i=1;ipNext) if(strcmp(name,p-name)=0) printf (*以下是您要

14、删除的用户信息*nn); printf (num:%dn, mark+1); printf (联系人姓名:%sn, p-name); printf (联系人电话号码:%sn, p-phone); printf (联系人地址:%sn, p-address); printf (联系人QQ:%sn, p-QQ); printf(n*n);pos=i; +mark; if(mark0) printf (ntt是否确定删除?(y/n); if(getchar()=y) getchar(); Delete(pHead,pos); /删除节点 printf(ntt删除成功!nn); printf(请按Ent

15、er键继续);printf(n*n); getchar(); else printf(ntt已取消nn);printf(请按Enter键继续);printf(n*n);getchar(); else printf (ntt对不起!没有该用户的记录!nn);printf(请按Enter键继续);printf(n*n); getchar(); else printf (ntt对不起!没有任何人的记录!nn);printf(请按Enter键继续);printf(n*n);getchar(); 6.保存功能主控函数void save(PEOPLE pHead)将所有联系人的信息保存为文本文件,用户可随

16、时打开txt文件查看所有联系人信息。void save(PEOPLE pHead) /保存函数 FILE *fp; PEOPLE p=pHead-pNext; fp=fopen(address_list.txt,w);fprintf(fp,*nn);fprintf (fp,= 用户信息记录表 =n); while(p!=NULL) fprintf(fp,n=nn); fprintf(fp,联系人姓名:%sn, p-name); fprintf(fp,联系人电话号码:%sn, p-phone); fprintf(fp,联系人地址:%sn, p-address); fprintf(fp,联系人QQ

17、:%sn, p-QQ); p=p-pNext; fprintf(fp,nn*n); fclose(fp); printf(nt恭喜你!成功储存,你能在address_list.txt找到相应纪录n); printf(n请按Enter键继续);printf(n*n); getchar();7. 退出功能主控函数void quit()退出通讯录系统。void quit()printf(ntt感谢使用个人通讯录管理系统,再见!nn);exit(0);四、调试与测试1. 显示函数int show(PEOPLE pHead);原本设计为void型函数,但当用户没有输入任何联系人信息时,程序在显示“没有任

18、何人信息后”,还会继续执行该函数,导致该信心重复输出。后改为int 型,用return 0;控制函数结束运行。2.删除函数void delete_name(PEOPLE pHead,int x);原本没有x参数。但在main函数中,定义了i来记录联系人个数,调用void input(PEOPLE pHead,int x)函数时,联系人数i会加一,但删除时并没有对i进行操作,导致i只加不减,在运行删除功能后再运行添加功能程序就会出错异常退出。所以在删除函数中增加x参数以实现在删除联系人时联系人总数会减一。3.显示功能;原本是直接显示所有联系人信息,如果联系人过多,就很难查看前面的联系人的信息,所

19、以设计为每显示五个联系人后就会显示“输入Enter键进入下一页”,敲回车键就会换页。4.原本在每个功能实现后,程序会自动跳转到主功能选择界面,导致用户不容易查看结果。所以每个功能实现后设计显示“按Enter返回主页面”,在用户敲回车键后才会显示主页面,这样永辉可以更好的查看每个功能的结果。5.程序所显示的界面;经过不断调试,最终设计为每实现一个功能就会分页。五、用户手册1.通讯录信息输入功能在主页面输入“1”进入该功能。根据提示输入联系人姓名、电话、地址和QQ。输入完成后显示“成功添加了联系人信息!”。再根据提示按Enter键返回主页面。2.显示通讯录信息功能在主页面输入“2”进入该功能。根据

20、提示选择按姓名顺序显示、按电话顺序显示、按地址顺序显示、按QQ顺序显示功能。输入相应数字进入相应功能。系统会根据相应选择按一定顺序显示所有联系人信息。若没有联系人信息,则会显示“对不起!没有任何人的记录!”。再根据提示按Enter键返回主页面。3.通讯录记录查询功能在主页面输入“3”进入该功能。根据提示选择按姓名查找、按电话查找、按地址查找、按QQ查找功能。输入相应数字进入相应功能。输入要查询用户的某项信息(如姓名),则可查询该联系人全部信息。若该联系人不存在,则会显示“对不起!没有此人的记录!”。再根据提示按Enter键返回主页面。4.修改通讯录信息功能在主页面输入“4”进入该功能。根据提示

21、输入要修改联系人的姓名,系统会显示要修改联系人的全部信息,再跟据提示输入该联系人新的信息。当显示“成功修改了联系人信息时,则修改成功。”若该联系人不存在,则会显示“对不起!没有该用户的记录!” 。再根据提示按Enter键返回主页面。5.删除通讯录信息功能在主页面输入“5”进入该功能。根据提示输入要删除联系人的姓名,系统会显示要删除联系人的全部信息,并提示是否确定删除,输入“y”确定,并显示成功删除。输入其他键取消删除。若该联系人不存在,则会显示“对不起!没有该用户的记录!” 。再根据提示按Enter键返回主页面。6.保存通讯录信息功能在主页面输入“6”进入该功能。显示“恭喜你!成功储存,你能在

22、address_list.txt找到相应记录”,则储存成功,可以打开address_list.txt文件查看通讯录信息。再根据提示按Enter键返回主页面。7.退出通讯录程序功能在主页面输入“7”进入该功能。显示“感谢使用个人通讯录系统,再见”,则已退出该程序。六、附录运行结果:主页面:1通讯录信息输入功能2显示通讯录信息功能3.通讯录记录查询功能4.修改通讯录信息功能5.删除通讯录信息功能6.保存通讯录信息功能7.退出通讯录程序功能源代码:/*头文件*/#include#include#include/*定义链表结点*/typedef struct peoplechar name25;/姓名

23、char phone20;/电话char address50;/住址char QQ20; /QQstruct people *pNext; *PEOPLE;/*自定义函数声明*/PEOPLE creat();void input(PEOPLE pHead,int x);/添加联系人功能函数int number(PEOPLE pHead);/求链表结点数void name_sort(PEOPLE pHead);/按姓名排序函数void phone_sort(PEOPLE pHead);/按电话排序函数void address_sort(PEOPLE pHead);/按地址排序函数void QQ_

24、sort(PEOPLE pHead);/按QQ排序函数int show(PEOPLE pHead);/显示主控函数int name_search(PEOPLE pHead);/按姓名查找函数int phone_search(PEOPLE pHead);/按电话查找函数int address_search(PEOPLE pHead);/按地址查找函数int QQ_search(PEOPLE pHead);/按QQ查找函数void search(PEOPLE pHead);/查找功能主控函数void modify(PEOPLE pHead);/修改功能函数void delete_name(PEOP

25、LE pHead,int x);/删除功能主控函数void Delete(PEOPLE pHead,int pos);/删除链表结点函数void save(PEOPLE pHead);/保存到文件功能函数void quit();/退出系统函数/*主函数*/void main()int num;/保存输入的功能号码int i=0;PEOPLE pHead=NULL; pHead=creat();while(1)printf (ntt 欢迎使用个人通讯录管理系统n); printf(n*nn); printf (ttt1.通讯录信息输入n); printf (ttt2.显示通讯录信息n); pri

26、ntf (ttt3.通讯录记录查询n); printf (ttt4.修改通讯录信息n); printf (ttt5.删除通讯录信息n); printf (ttt6.保存通讯录信息n); printf (ttt7.退出通讯录程序n);printf (n*nn); printf (tt选择你需要操作的功能号码(1-7):); num=getchar();getchar();switch(num)case 1:input(pHead,+i);break;case 2:show(pHead);break;case 3:search(pHead);break;case 4:modify(pHead);b

27、reak;case 5:delete_name(pHead,-i);break;case 6:save(pHead);break;case 7:quit();break;default:printf(ttt 输入错误!n);printf(请按Enter键继续);printf(n*n);getchar();continue;/*自定义函数*/PEOPLE creat()/分配了一个不存放有效数据的头结点PEOPLE pHead=(PEOPLE)malloc(sizeof(people); if(pHead=NULL)/分配内存失败,终止程序 printf(动态分配内存失败! );exit(-1)

28、; pHead-pNext=NULL; return pHead; void input(PEOPLE pHead,int x)/添加联系人函数int i=0; PEOPLE p=pHead; while (p!=NULL&ipNext; +i; PEOPLE pNew=(PEOPLE)malloc(sizeof(people); if(pNew=NULL)/动态分配内存失败! printf(动态分配内存失败! );exit(-1); printf(n*nn); printf(tt 请创建并添加联系人信息nn); printf(tt请输入联系人姓名:); gets(pNew-name); pr

29、intf(tt请输入联系人电话:); gets(pNew-phone); printf(tt请输入联系人地址:); gets(pNew-address); printf(tt请输入联系人QQ:); gets(pNew-QQ); printf(ntt成功添加了联系人信息!nn); printf(请按Enter键继续);printf(n*n); getchar();/将新的结点存入p节点的后面 PEOPLE q=p-pNext; p-pNext=pNew; pNew-pNext=q; int number(PEOPLE pHead)/求链表节点数量函数PEOPLE p=pHead-pNext; int x=0; while(p!=NULL) +x; p=p-pNext;return x;void name_sort(PEOPLE pHead)/按姓名排序函数 int i,j; i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com