《c语言通讯录设计报告.doc》由会员分享,可在线阅读,更多相关《c语言通讯录设计报告.doc(23页珍藏版)》请在三一办公上搜索。
1、 C语言课程设计报告设计题目:写自己任务书上的题目专 业 班 级 学 生 指导教师 设计时间 设计任务:C语言课程设计任务书8题目:通讯录管理系统功能:录入联系人信息(包括姓名、电话号码、地址、备注等);通讯录管理系统要求实现以下功能: 1、输入每一位联系人记录,将其信息存入文件中。2、查询所有联系人的信息,并按可选的自定义规则进行排序;3、记录修改,将修改的记录信息保存于文件中。4、保存:将相关数据写入磁盘文件,便于存、取操作。分步实施:1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。2、完成信息的录入和显示(即通过编程创建文件,输入学生信息并可将文件内容显示出来)3、完成
2、查询功能(可按姓名、电话号码等进行查询)4、完成信息删除与修改功能,输入联系人姓名后可删除或修改该条信息。5、进一步要求,在使用修改功能时要求输入密码,密码正确才能修改信息否则不行。要求:1、用C语言实现程序设计;2、利用结构体进行相关信息处理;3、系统的各个功能模块要求用函数的形式实现;4、界面友好(良好的人机交互),程序要有注释。课程设计实验报告要求:1、预习报告:仔细分析客户需求、进行模块划分、设计每个模块的算法和数据结构。2、实验总结报告:按照模板的格式。平时:验收:报告:总评成绩:指导教师签名:一、总体设计1.1功能模块设计1系统功能模块图: 添加:可以添加通讯录记录,依次输入编号、
3、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。显示:可以以表格形式输出所有通讯录里的记录删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容查询:可以选择用姓名、电话、地址三种方式查询修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件1.2数据结构设计 1)自定义的数据类型: typedef struct char score; /*编号*/ char name10; /*姓名*/ char num15; /*号码*/ char email20;/*邮箱*
4、/ char age8;/*年龄*/ char adds20;/*住址*/ Person; 2)全局变量:Person pe80 定义结构体变量 3. 函数原型设计 1)int menu_select() 函数功能:菜单界面,供用户选择不同的功能 2)int Input(Person per,int n) 函数功能:添加记录 输入参数:当输入的值不等于n或N时就继续添加,Person per用于接收输入的学生信息 返回值:返回值代表添加的学生个数 void Display(Person per,int n) 函数功能:显示记录 输入参数:当n为2时则显示记录,Person per用于接收学生信
5、息 3)int Delete_a_record(Person per,int n) 函数功能:删除记录 输入参数:n用于判断是否有此记录,Person per用于接收学生信息 返回值:用于检验是否截止 4)void Query_a_record 函数功能:查找记录 输入参数:n用于判断是否有此记录,Person per用于接收学生信息 5)void Change(Person per,int n) 函数功能:修改记录 输入参数:n用于判断是否有此记录,Person per用于接收学生信息 6)void WritetoText(Person per,int n) 函数功能:保存记录 输入参数:n
6、为学生的个数,Person per用于接收学生信息二、详细设计2.1界面设计2.1.1开始界面 *通讯录*1添加记录2显示记录3删除记录4查询记录5修改记录6保存记录0退出程序 2.1.2显示功能的界面选择2后系统出现现有的所有人员名单:21 何洁 20 15923456781 湖北 1232 高亮 21 13532465667 安徽 4563 许飞 19 15889643235 海南 789 2.1.3添加功能的界面 *通讯录*1添加记录2显示记录3删除记录4查询记录5修改记录6保存记录0. 退出程序请您选择(0-6):1 添加记录到通讯录编号:2.1.4删除功能的界面 *通讯录*1添加记录
7、2显示记录3删除记录4查询记录5修改记录6保存记录0 退出程序 请您选择(0-6): 3从通讯录中删除记录请输入名字:2.1.5查询功能的界面 *通讯录*1添加记录2显示记录3删除记录4查询记录5修改记录6保存记录0 退出程序 请您选择(0-6):4在通讯录中查找记录请选择查询方式:1姓名 2电话 3地址 4返回 请选择:2.1.5修改功能的界面 *通讯录*1添加记录2显示记录3删除记录4查询记录5修改记录6保存记录0 退出程序 请您选择(0-6): 5修改通讯录中的记录请输入想修改的记录中的名字:2.1.6保存功能的界面 *通讯录*1添加记录2显示记录3删除记录4查询记录5修改记录6保存记录
8、0.退出程序 请您选择(0-6): 6 保存文件 请输入保存到的文件名:2.1.7退出功能的界面 *通讯录*1. 添加记录2. 显示记录3. 删除记录4. 查询记录5. 修改记录6. 保存记录0. 退出程序 请您选择(0-6):0 谢谢使用,再见! 请按任意键继续.2.2算法流程图添加:添加通讯录记录 显示:显示通讯录记录 删除:删除通讯录记录 查询:查询通讯录记录先选择查询方式,以姓名查询方式为例修改:修改通讯录记录三、测试及运行效果3.1运行进入程序主菜单 主选单具有所有函数的功能实现的选择功能,通过主选单的操作进入各个功能。主选单主要由主函数提供,其功能由子函数实现。3.2显示模块 3.
9、3删除模块 3.4查找模块3.4修改模块3.5添加模块3.6保存模块四、总结1.这次的程序实设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。自己动手,自己发现和解决问题。发现了自己的许多不足。平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机运行,解决其中大部分问题,当然还存在一些问题没有解决。我相信在以后的学习能够解决好它们。但是,收获还是不小的,我不仅对C的操作有了进一步的掌握,还了解到了程序设计的书写风格及其注释的格式。2.当我选择通讯录这个题目时,一开始想运用大量链表及指针来完成,但是在慢慢琢磨之后,觉得这个不一定要用链表,于是改变了编程思路。
10、当然还有不少文件的读写问题,不过还是通过不断测试之后顺利解决了。另外一点要说的就是这个程序用了很多的循环,因此对于循环的控制要十分小心,有时while和do-while的区别也是十分重要的。附录:源程序#include #include#include typedef struct char score; /*编号*/char name10; /*姓名*/ char num15; /*号码*/ char email20;/*邮箱*/char age8;/*年龄*/char adds20;/*住址*/Person; Person pe80; int menu_select() char c; d
11、o system(cls); printf(tt *通讯录* n); printf(ttn); printf(tt 1. 添加记录 n); printf(tt 2. 显示记录 n); printf(tt 3. 删除记录 n); printf(tt 4. 查询记录 n); printf(tt 5. 修改记录 n); printf(tt 6. 保存记录 n);printf(tt 0. 退出程序 n); printf(ttn); printf(tt请您选择(0-6):); c=getchar(); while(c6); return(c-0); int Input(Person per,int n)
12、 int i=0; char sign,x10; while(sign!=n&sign!=N) printf(t编号:); scanf(t%d,&pern+i.score); printf(t姓名:); scanf(t%s,pern+i.name); printf(t年龄:); scanf(t%s,pern+i.age);printf(t电话号码:); scanf(t%s,pern+i.num); printf(t通讯住址:); scanf(t%s,pern+i.adds);printf(t电子邮箱:);scanf(t%s,pern+i.email);gets(x); printf(nt是否继
13、续添加?(Y/N); scanf(t%c,&sign); i+; return(n+i); void Display(Person per,int n) int i; printf(-n); /*格式*/ printf(编号 姓名 年龄 电话号码 通讯地址 电子邮箱n); printf(-n); for(i=1;i1&i%10=0) printf(t-n); printf(t); system(pause); printf(t-n); printf(-n);system(pause); int Delete_a_record(Person per,int n) char s20; int i=
14、0,j; printf(t请输入想删除记录中的名字:); scanf(%s,s); while(strcmp(peri.name,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return(n); for(j=i;jn-1;j+) strcpy(perj.num,perj+1.num); strcpy(perj.name,perj+1.name); strcpy(perj.age,perj+1.age);strcpy(perj.adds,perj+1.adds);strcpy(perj.email,perj+1.email);perj.score=per
15、j+1.score; printf(ttt已经成功删除!n); return(n-1); void Query_a_record(Person per,int n) int m;printf(tn请选择查询方式:n); printf(tn); printf(t1-姓名 n); printf(t2-电话 n); printf(t3-地址 n); printf(t4-返回 n); printf(tn); printf(请选择:); scanf(%d,&m); while(m!=1&m!=2&m!=3&m!=4) printf(输入错误,请重新选择:);scanf(%d,&m);if(m=1)cha
16、r s20; int i=0; printf(t请输入想查询的姓名:); scanf(t%s,s); while(strcmp(peri.name,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; printf(t此人编号: %dn,peri.score);printf(t此人年龄: %sn,peri.age); printf(t电话号码: %sn,peri.num); printf(t通讯地址: %sn,peri.adds);printf(t电子邮箱: %sn,peri.email); ;if(m=2)char s20; int i=0;
17、printf(t请输入想查询的电话:); scanf(t%s,s); while(strcmp(peri.num,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; printf(t此人编号: %dn,peri.score);printf(t此人姓名: %sn,peri.name);printf(t此人年龄: %sn,peri.age); printf(t通讯地址: %sn,peri.adds);printf(t电子邮箱: %sn,peri.email); ;if(m=3)char s20; int i=0; printf(t请输入想查询的地址
18、:); scanf(t%s,s); while(strcmp(peri.adds,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; printf(t此人编号: %dn,peri.score);printf(t此人姓名: %sn,peri.name);printf(t此人年龄: %sn,peri.age); printf(t电话号码: %sn,peri.num); printf(t电子邮箱: %sn,peri.email); ;void Change(Person per,int n) char s20; int i=0; printf(t请输
19、入想修改的记录中的名字:); scanf(%s,s); while(strcmp(peri.name,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; printf(t编号:); scanf(t%d,&peri.score); printf(t姓名:); scanf(t%s,peri.name); printf(t年龄:); scanf(t%s,peri.age);printf(t电话号码:); scanf(t%s,peri.num); printf(t通讯住址:); scanf(t%s,peri.adds);printf(t电子邮箱:);s
20、canf(t%s,peri.email);printf(t修改成功!);void WritetoText(Person per,int n) int i=0; FILE *fp; /*定义文件指针*/ char filename20; /*定义文件名*/ printf(t保存到文件n); /*输入文件名*/ printf(t请输入所保存的文件名:); scanf(t%s,filename); if(fp=fopen(filename,w)=NULL) printf(t无法打开文件n); system(pause); return; fprintf(fp,*通讯录*n);fprintf(fp,编
21、号 姓名 年龄 电话号码 通讯地址 电子邮箱n);fprintf(fp,-n);while(in) fprintf(fp,%-3dt%-6st%-3st%-13st%-20st%-20sn,peri.score,peri.name,peri.age,peri.num,peri.adds,peri.email); i+; fprintf(fp,-n);fprintf(fp,*共有%d条记录*n,n); fclose(fp); /*关闭文件*/ printf(保存成功!n); void main() /*主函数*/ int n=0; for(;) switch(menu_select() case
22、 1: printf(nt添加记录到通讯录n); /*添加记录*/ n=Input(pe,n); break; case 2: printf(nttt 通讯录记录表n); /*显示记录*/ Display(pe,n); break;case 3: printf(nt从通讯录中删除记录n); n=Delete_a_record(pe,n); /*删除记录*/ printf(t); system(pause); break; case 4: printf(nt在通讯录中查找记录n); Query_a_record(pe,n); /*查找记录*/ printf(t); system(pause);
23、break;case 5: printf(nt修改通讯录中的记录n); Change(pe,n); /*修改数据*/ printf(t); system(pause); break; case 6: printf(nt保存功能n); WritetoText(pe,n); /*保存数据*/ printf(t); system(pause); break; case 0: printf(ntt谢谢使用,再见!n); /*结束程序*/ printf(ntt); system(pause); exit(0); 参考文献1 谭浩强. C程序设计(第4版). 清华大学出版社, 2010.2 苏小红. C语言程序设计(第1版). 高等教育出版社, 2011.3 (美)H.M.Deitel & P.J.Deitel. C程序设计教程. 机械工业出版社, 2005.4 龚沛增 杨志强. C/C+程序设计教程M. 北京:高等教育出版社, 2004.5 高潮. C+程序设计. 冶金工业出版社, 2010.6 谭浩强. C程序设计题解与上机指导(第三版). 清华大学出版社, 2005.