1、c语言程序设计通讯录 长江大学工程技术学院C语言课程设计实习报告 通讯录管理系统 学生姓名:吴正杰 学 号:201461031 序 号:19 专业班级:计科61031 指导老师:刘旨阳 报告日期: 201576 1.需求分析根据题目要求,通讯录保存在文件中,要提供文件的输入和输出能力;还有就是要提供通讯录添加(个人信息包括姓名、邮编、住址、电话号码、QQ、电子邮件等)、删除、显示、修改等基本功能。2.概要设计系统总体设计是信息的输入、信息的编辑和退出。系统功能模块如下:3.详细设计1.输出通讯录用于让使用者观看通讯录里所有的信息。2.通讯录里无信息,所以要添加信息。用键盘逐个输入通讯录里联系人
2、的信息。 3.查找通讯录是让使用者可以通过姓名来查找通讯录里的联系人。 4.修改通讯录是让使用者通过姓名查找到通讯录里的联系人,然后其作出修改。 5.删除通讯录是用来按照联系人的姓名来单独删除通讯录中一些不想要的联系人。 是6.排序通讯录联系人来进行开头的首写字母排序。7.退出通讯录。4.主要源程序代码void menu(); /定义的函数void newrecord();void xiugai();void shanchuname();void chazhaoname();void xianshi();int daoruwenji();void save();void paixu();str
3、uct friends /定义的数组 char name8; char addr14; char pc7; char e_mail14; char QQ10; char tel12;frd500; int NO = 10; /宏定义 k定义为删除联系人的个数 m定义为添加联系人的个数 NO定义为原始通讯录中的联系人的个数int k, m;FILE*fp;void menu() /主菜单 int a; printf(ntt |- 欢迎您使用通讯录管理系统1.0beat版 -|); printf( ntt| 1添加联系人;2删除联系人 ;3查找联系人 | ); printf( ntt| 4显示联系
4、人;5修改联系人 ;6排序联系人 7退出 | ); printf(ntt |-|); printf(ntt请选择您所所要的服务:); scanf(%d, &a); switch (a) case 1:newrecord(); break; case 2:shanchuname(); break; case 3:chazhaoname(); break; case 4:xianshi(); break; case 5:xiugai(); break; case 6:paixu(); break; case 7:exit(0); default: exit(0); int main() /主函数
5、daoruwenji(); while (1) /1是真的进行死循环 menu(); return 0;void xianshi() /打印所有的通讯录的人的信息 int i; fp = fopen(jk0119.txt, r); if (fp = 0) printf(nnnnt 电话簿文件不存在); exit(0); printf(nn*欢迎使用通讯录*); printf(n 姓名 地址 邮编 e_mail QQ 手机号); for (i = 0; i NO-k+m; i+) fscanf(fp, %s%s%s%s%s%s, frdi.name, frdi.addr, frdi.pc, fr
6、di.e_mail, frdi.QQ, frdi.tel); for (i = 0; i 0)/统计文件的字节是否为0 rewind(fp); printf(nnnnt tttt 文件导入成功); printf(ntttt t 按任意键返回主菜单); fclose(fp); getch(); return(0) ; printf(nnnnttt文件导入成功); printf(nttt电话簿文件中无任何纪录); printf(nttt按任意键返回主菜单); fclose(fp); getch(); return(0); void save() /对修改的函数进行保存到txt文本中 int i;
7、if (fp = fopen(jk0119.txt, w) = 0) printf(ntttt打开失败); for (i = 0; i NO-k+m; i+) fprintf(fp, %st%14s%7s%14s%10s%12sn, frdi.name, frdi.addr, frdi.pc, frdi.e_mail, frdi.QQ, frdi.tel); /打印出文件的信息 printf(nt 保存文件成功 ); fclose(fp);void newrecord() /新建一个新的联系人 printf(ntt*请输入联系人信息*); printf(ntt 输入联系人的姓名 ); scan
8、f(%s, &frdNO-k+m.name); for (int i = 0; i NO-k+m; i+) if (strcmp(frdNO.name, frdi.name) = 0) printf(nnt姓名重复请重新新建联系人); newrecord(); printf(ntt 输入联系人的地址 ); scanf(%s, &frdNO - k + m.addr); printf(ntt 输入联系人的邮编 ); scanf(%s, &frdNO - k + m.pc); printf(ntt 输入联系人的e_mail ); scanf(%s, &frdNO - k + m.e_mail);
9、printf(ntt 输入联系人的QQ ); scanf(%s, &frdNO - k + m.QQ); printf(ntt 输入联系人的手机号码 ); scanf(%s, &frdNO - k + m.tel); if (strlen(frdNO - k + m.tel) = 11) printf(输入的电话号码合法); else printf(请重新输入11位合法的数字); scanf(%s, &frdNO - k + m.tel); m+; save(); printf( 是否继续添加新联系人(y/n): ); if (getch() = y) newrecord(); void sh
10、anchuname() /对联系人信息进行全部的删除 int i,j; char name14; printf(ntt 输入联系人的姓名 ); fflush(stdin); scanf(%s, name); for (i = 0; i NO-k+m; i+) if (strcmp(name, frdi.name) = 0) printf(%8s%14s%7s%14s%10s%12sn, frdi.name, frdi.addr, frdi.pc, frdi.e_mail, frdi.QQ, frdi.tel); printf(nnt 是否删除该联系人的所有信息(y/n):); if (getc
11、h() = y) for (j = i; j NO - k + m - 1; j+) frdj = frdj + 1; k+; printf(nt已经删除了该联系人); save(); printf(nt是否继续删除联系人(y/n):); if (getch() = y) shanchuname(); menu(); printf(nnt通讯录中不存在该联系人);void chazhaoname() /查找通讯录里的联系人 int i; char name14; printf(nt 输入联系人的姓名 ); fflush(stdin); scanf(%s,name); for (i = 0; i
12、 NO-k+m; i+) if (strcmp(name, frdi.name) = 0) printf(%8s %14s %7s %14s %10s %11s n, frdi.name, frdi.addr, frdi.pc, frdi.e_mail, frdi.QQ, frdi.tel); menu(); void xiugai() /对联系人的部分信息进行修改 int i, a; char name14; printf(nnt 输入联系人的姓名 ); fflush(stdin); scanf(%s, name); for (i = 0; i NO-k+m; i+) if (strcmp(
13、name, frdi.name) = 0) printf(%8s%14s%7s%14s%10s%13sn, frdi.name, frdi.addr, frdi.pc, frdi.e_mail, frdi.QQ, frdi.tel); printf(nnt 是否确定修改该联系人(y/n):); if (getch() = y) printf(nnt*); printf(n t 1姓名 2地址 3邮编 ); printf(n t 4邮箱 5QQ 6手机号码 7返回 ); printf(nnt*n); printf(nt请输入序号); scanf(%d, &a); switch (a) case
14、1: printf(姓 名:); scanf(%s, frdi.name); break; case 2: printf(地 址:); scanf(%s, frdi.addr); break; case 3: printf(邮 编:); scanf(%s, frdi.pc); break; case 4: printf(邮 箱:); scanf(%s, frdi.e_mail); break; case 5: printf(Q Q:); scanf(%s, frdi.QQ); break; case 6: printf(11位手机号码:); scanf(%s, frdi.tel); break
15、; case 7:menu(); default: xiugai(); printf(ntt您的修改结果为:); printf(nt姓 名:%s, frdi.name); printf(nt地 址:%s, frdi.addr); printf(nt邮 编:%s, frdi.pc); printf(nt邮 箱:%s, frdi.e_mail); printf(ntQ Q:%s, frdi.QQ); printf(nt手机号码:%12s, frdi.tel); save(); return; else menu(); printf( n n);void paixu() /对联系人进行按字母进行排序
16、 struct friends fr500; struct friends t; int i, j; for (i = 0; iNO-k+m; i+) fri = frdi; for (i = 0; iNO-k+m - 1; i+) for (j = 1; j 0) t = fri; fri = frj; frj = t; printf(nn 姓名 地址 邮编 e_mail QQ 手机号n); for (i = 0; iNO-k+m; i+) printf(%8s%20s%7s%14s%10s%12sn, frdi.name, frdi.addr, frdi.pc, frdi.e_mail,
17、frdi.QQ, frdi.tel); Save(); 本程序中大量使用了结构体和结构体数组,系统的功能模块都是使用子函数完成的,子函数中也存在大量结构体数组。5.调试分析过程描述1.软件进入界面后按任意键进入主菜单:2在软件后面按4导入和显示所有的联系人。3在菜单栏接着按3查找通讯录里的任意联系人。4在菜单栏接着按5进行联系人的姓名 地址 邮编 邮箱 QQ号 手机号码的修改。5.在菜单栏中选择2进行单个联系人删除。6.在菜单栏中选择6进行对所有的联系人进行排序。7.退出通讯录。 6.课程设计总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程. C语言已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为计算机专业的大学来说掌握C语言程序的开发技术是十分重要的。通过这次编程实践,巩固了c语言的知识,对c语言的内容有了进一步的了解,增强了动手能力,感受到了c语言的奥妙,找到了学习编程的乐趣。同时在编程过程中,也发现了自身学习态度的问题。由于课后又没及时时间去复习,造成了许多知识的缺多识不能很好的运用,编写过程面临困难。事实告诫了我:今后上课一定要认真听讲,及时复习,多动手去编程,增强实践能力。指导教师评语:报告成绩:指导教师签名: 年 月 日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1