1、C语言通讯X录程序设计程序设计综合实习软实 习 报 告学 号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 modif
3、y(PEOPLE pHead)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) prin
4、tf(动态分配内存失败! ); 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
5、-pNext; p-pNext=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(); getcha
6、r(); switch(num) case 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)先调用排序函数,再按相应顺序将全部联系人的信息显示到
7、屏幕。int show(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) case 1: name_sort(pHead); break; case 2: phone_sort(pHead); break; case 3: address_s
8、ort(pHead); break; case 4: QQ_sort(pHead); break; default: 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); pri
9、ntf (tt联系人电话号码:%sn,p-phone); printf (tt联系人地址:%sn,p-address); 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
10、0; 4.修改功能主控函数void modify(PEOPLE pHead)输入要修改联系人的姓名,可显示该联系人信息,并输入该联系人新的信息。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(
11、name,p-name)=0) printf (*以下是您要修改的用户信息*nn); printf (联系人姓名:%sn, p-name); 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);
12、printf(tt请输入联系人地址:); scanf(%s,p-address); printf(tt请输入联系人QQ:); scanf(%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
13、*n); getchar(); 5.删除功能主控函数void delete_name(PEOPLE pHead,int x)输入要删除联系人的姓名,可显示该联系人信息,并提示是否确认删除,确认后会删除该联系人信息。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输入要删除联系人的姓名:);
14、gets(name); if(p!=NULL) for(i=1;ipNext) if(strcmp(name,p-name)=0) printf (*以下是您要删除的用户信息*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(
15、getchar()=y) getchar(); Delete(pHead,pos); /删除节点 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(); else printf (ntt对不起!没有任何人的记录!nn); printf(请
16、按Enter键继续); printf(n*n); getchar(); 6.保存功能主控函数void save(PEOPLE pHead)将所有联系人的信息保存为文本文件,用户可随时打开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
17、-name); fprintf(fp,联系人电话号码:%sn, p-phone); fprintf(fp,联系人地址:%sn, p-address); fprintf(fp,联系人QQ:%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感谢使用个人通讯录管理
18、系统,再见!nn); exit(0);四、调试与测试1. 显示函数int show(PEOPLE pHead);原本设计为void型函数,但当用户没有输入任何联系人信息时,程序在显示“没有任何人信息后”,还会继续执行该函数,导致该信心重复输出。后改为int 型,用return 0;控制函数结束运行。2.删除函数void delete_name(PEOPLE pHead,int x);原本没有x参数。但在main函数中,定义了i来记录联系人个数,调用void input(PEOPLE pHead,int x)函数时,联系人数i会加一,但删除时并没有对i进行操作,导致i只加不减,在运行删除功能后再
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1