长江大学工程技术学院C语言课程设计实习报告通讯录管理系统学生姓名:吴正杰学号:1 序号:19专业班级:计科61031指导老师:刘旨阳报告日期: 2015\7\61.需求分析根据题目要求,通讯录保存在文件中,要提供文件的输入和输出 能力;还有就是要提供通讯录添加(个人信息包括姓名、邮编、住址、电话号码、QQ 、电子邮件等)、删除、显示、修改等基本功能。
2.概要设计系统总体设计是信息的输入、信息的编辑和退出。
系统功能模块如下:排序通删除通修改通查找通添加通输出通通讯录3.详细设计1.输出通讯录用于让使用者观看通讯录里所有的信息。
2.通讯录里无信息,所以要添加信息。
用键盘逐个输入通讯录里联系人的信息。
3.查找通讯录是让使用者可以通过姓名来查找通讯录里的联系人。
4.修改通讯录是让使用者通过姓名查找到通讯录里的联系人,然后其作出修改。
5.删除通讯录是用来按照联系人的姓名来单独删除通讯录中一些不想要的联系人。
6.排序通讯录联系人来进行开头的首写字母排序。
7.退出通讯录。
4.主要源程序代码void menu(); ame, frd[i].addr, frd[i].pc, frd[i].e_mail, frd[i].QQ, frd[i].tel);}for (i = 0; i < NO-k+m;i++ ){printf("\t\n%3d", i + 1);printf("%8s%14s%7s%14s%10s%12s", frd[i].name, frd[i].addr,frd[i].pc, frd[i].e_mail, frd[i].QQ, frd[i].tel);}printf("\n\n***************************************************** ************************************");}int daoruwenji() ame, frd[i].addr, frd[i].pc, frd[i].e_mail,frd[i].QQ, frd[i].tel); ame);for (int i = 0; i < NO-k+m; i++){if (strcmp(frd[NO].name, frd[i].name) == 0){printf("\n\n\t姓名重复请重新新建联系人");newrecord();}}printf("\n\t\t 输入联系人的地址 "); scanf("%s", &frd[NO - k + m].addr);printf("\n\t\t 输入联系人的邮编 "); scanf("%s", &frd[NO - k + m].pc);printf("\n\t\t 输入联系人的e_mail "); scanf("%s", &frd[NO - k + m].e_mail);printf("\n\t\t 输入联系人的QQ "); scanf("%s", &frd[NO - k + m].QQ);printf("\n\t\t 输入联系人的手机号码 "); scanf("%s", &frd[NO - k + m].tel);if (strlen(frd[NO - k + m].tel) == 11){printf("输入的电话号码合法");}else{printf("请重新输入11位合法的数字");scanf("%s", &frd[NO - k + m].tel);}m++;save();printf(" 是否继续添加新联系人(y/n): ");if (getch() == 'y'){newrecord();}}void shanchuname() ame) == 0){printf("%8s%14s%7s%14s%10s%12s\n", frd[i].name, frd[i].addr, frd[i].pc, frd[i].e_mail, frd[i].QQ, frd[i].tel);printf("\n\n\t 是否删除该联系人的所有信息(y/n):");if (getch() == 'y'){for (j = i; j <NO - k + m - 1; j++){frd[j] = frd[j + 1];}k++;printf("\n\t已经删除了该联系人");save();printf("\n\t是否继续删除联系人(y/n):");if (getch() == 'y'){shanchuname();}}menu();}}printf("\n\n\t通讯录中不存在该联系人");}void chazhaoname() ame) == 0){printf("%8s %14s %7s %14s %10s %11s \n",frd[i].name, frd[i].addr, frd[i].pc, frd[i].e_mail, frd[i].QQ,frd[i].tel);menu();}}}void xiugai() ame) == 0){printf("%8s%14s%7s%14s%10s%13s\n", frd[i].name, frd[i].addr, frd[i].pc, frd[i].e_mail, frd[i].QQ, frd[i].tel);printf("\n\n\t 是否确定修改该联系人(y/n):");if (getch() == 'y'){printf("\n\n\t************************************************");printf("\n \t [1]姓名 [2]地址 [3]邮编");printf("\n \t [4]邮箱 [5]QQ [6]手机号码 [7]返回 ");printf("\n\n\t************************************************\n" );printf("\n\t请输入序号");scanf("%d", &a);switch (a){case 1: printf("姓名:"); scanf("%s", frd[i].name); break;case 2: printf("地址:"); scanf("%s", frd[i].addr); break;case 3: printf("邮编:"); scanf("%s", frd[i].pc); break;case 4: printf("邮箱:"); scanf("%s", frd[i].e_mail); break;case 5: printf("Q Q:"); scanf("%s", frd[i].QQ); break;case6: printf("11位手机号码:"); scanf("%s", frd[i].tel); break;case 7:menu();default:xiugai();}printf("\n\t\t您的修改结果为:");printf("\n\t姓名:%s", frd[i].name);printf("\n\t地址:%s", frd[i].addr);printf("\n\t邮编:%s", frd[i].pc);printf("\n\t邮箱:%s", frd[i].e_mail);printf("\n\tQ Q:%s", frd[i].QQ);printf("\n\t手机号码:%12s", frd[i].tel);save();return;}else{menu();}}}printf(" \n \n");}void paixu() ame, fr[j].name) > 0){t = fr[i];fr[i] = fr[j];fr[j] = t;}}}printf("\n\n 姓名地址邮编 e_mail QQ 手机号\n");for (i = 0; i<NO-k+m; i++){printf("%8s%20s%7s%14s%10s%12s\n", frd[i].name, frd[i].addr,frd[i].pc, frd[i].e_mail, frd[i].QQ, frd[i].tel);}Save();}本程序中大量使用了结构体和结构体数组,系统的功能模块都是使用子函数完成的,子函数中也存在大量结构体数组。
5.调试分析过程描述1.软件进入界面后按任意键进入主菜单:2.在软件后面按[4]导入和显示所有的联系人。
3在菜单栏接着按[3]查找通讯录里的任意联系人。
4在菜单栏接着按[5]进行联系人的姓名地址邮编邮箱 QQ号手机号码的修改。
5.在菜单栏中选择[2]进行单个联系人删除。
6.在菜单栏中选择[6]进行对所有的联系人进行排序。
7.退出通讯录。
6.课程设计总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程. C语言已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为计算机专业的大学来说掌握C语言程序的开发技术是十分重要的。
通过这次编程实践,巩固了c语言的知识,对c语言的内容有了进一步的了解,增强了动手能力,感受到了c语言的奥妙,找到了学习编程的乐趣。