1、C语言课程设计通讯录管理系统 Prepared on 24 November 2020C语言课程设计通讯录管理系统*科技大学本科生课程设计说明书题 目:C语言课程设计 通讯录管理系统学生姓名:* 学 号:*专 业:软件工程班 级:1指导教师:*内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目通讯录管理系统指导教师* 时间一、教学要求1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任
2、意选择一题,独立完成,题目选定后不可更换。通讯录管理系统现有一批通讯录的数椐,要求输入计算机并存放在内存中,然后增加若干个新通讯录的记录,并可输出通讯录清单,实现文件存盘和读入文件进行修改的功能。通讯录的基本信息包括编号,姓名,电话号码,QQ号码,电子邮件,通讯地址。要求设计菜单来调用其各功能模块:v新建文件、打开文件、保存信息到文件v输入记录、输出记录v查询记录(至少具有两种查询方式,例如以姓名查询和以电话号码查询)v修改、插入和删除记录三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和
3、模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建
4、议参考资料1C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程设计,刘振安,机械工业出版社。第一章 需求分析1.1引言通过程序设计,达到理论与实际应用相结合,提高对信息管理系统的分析能力,能够根据实际应用,初步实现系统功能模块及算法的设计,通过编程基本实现信息管理系统。1.2任务概述1.采用结构体的形式对数据进行输入输出。2.可以对通讯录进行简单的排序,筛选,删除。3.可以对任意信息就行修改。4.可以把数据已文件的形式输入输出。5.任意浏览信息。1.3数据描述以所示的文本数据位初始数据进行简单操作,也可另行添加。1.4功能需求实现以上功能需求。1.5性能需求1.能够进行简单的数据处理。
5、2.具有对新信息处理打印打能力。1.6运行需求1输入个人信息时以例如按照“编号、姓名、年龄、电话号码 、通讯地址 、 电子邮箱”的顺序输入。2输入时编号年龄、电话号码、通讯地址、电子邮箱以数字格式输入,输入姓名以文字输入。3以(Y/N)形式判断时,仅限N或者n为否,其他字符真。4进入排序功能后,要想见排序信息,到主菜单下见浏览信息功能。1.7任务计划1.样例输入和输出2.本通讯录管理程序,可以对数据进行输入输出,集排序,修改,打印,删除等功能。下面以上述数据描述的数据为测试数据进行简单输入输出。1.未排序前的信息4)删除界面:删除后,通讯录里的显示记录:5)查询界面:以姓名查询方式为例:6)修
6、改界面:修改后,通讯录里的显示记录:7)保存界面:文件截图:第二章概要设计2.1总体设计添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱后,会提示是否继续添加。显示:可以以表格形式输出所有通讯录里的记录删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容查询:可以选择用姓名、电话、地址三种方式查询修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件2.2数据类型设计(或数据结构设计)typedef struct char score; /*编号
7、*/ char name10; /*姓名*/ char num15; /*号码*/ char email20; /*邮箱*/ char age8; /*年龄*/ char adds20; /*住址*/ Person;以结构体数组类型输入数据。 2.3接口设计 表:函数列表函数名函数首部函数功能int menu_select() void运行界面int Input(Person per,int n) int输入函数void Display(Person per,int n)Void输出函数int Delete_a_record(Person per,int n) int删除数据void Quer
8、y_a_record(Person per,int n) void查询数据void Change(Person per,int n)void更改数据void WritetoText(Person per,int n)void把数据写到文件2.4运行界面设计void main() /*主函数*/ int n=0; for(;) switch(menu_select() case 1: printf(nt添加记录到通讯录n); /*添加记录*/ n=Input(pe,n); break; case 2: printf(nttt 通讯录记录表n); /*显示记录*/ Display(pe,n); b
9、reak; 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); break; case 5: printf(nt修改通讯录中的记录n); Change(pe,n); /*修改数据*/ printf(t); system(pause); break; case 6: printf(nt
10、保存功能n); WritetoText(pe,n); /*保存数据*/ printf(t); system(pause); break; case 0: printf(ntt谢谢使用,再见!n); /*结束程序*/ printf(ntt); system(pause); exit(0); 以switch为关键控制选着要调用函数的开关,然后以主菜单为主界面,其他功能为扩展界面来运行通讯录管理系统。主菜单代码为:int menu_select() char c; do system(cls); printf(tt *通讯录* n); printf(tt |-|n); printf(tt 1. 添加
11、记录 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(tt|-|n); printf(tt请您选择(0-6):); c=getchar(); while(c6); return(c-0); 如图所示为主要运行界面:第三章详细设计3.1输入模块设计int Input(Person per,int n) int i=0; char sign,x10; while(
12、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是否继续添加(Y/N); scanf(t%c,&sign);
13、 i+; return(n+i); 3.2输出模块设计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); 3.3查找模块设计void Query_a_record(Person per,int n) int m; printf(tn请选择查询方式:n
14、); 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) char s20; int i=0; printf(t请输入想查询的姓名:); scanf(t%s,s); while(strcmp(peri.name,s)!=0&in) i+; if(i=n) printf(t
15、通讯录中没有此人!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; printf(t请输入想查询的电话:); scanf(t%s,s); while(strcmp(peri.num,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n);
16、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请输入想查询的地址:); scanf(t%s,s); while(strcmp(peri.adds,s)!=0&in) i+; if(i=n) printf(t通讯录中没有此人!n); return; pri
17、ntf(t此人编号: %dn,peri.score); printf(t此人姓名: %sn,peri.name); printf(t此人年龄: %sn,peri.age); printf(t电话号码: %sn,peri.num); printf(t电子邮箱: %sn,peri.email); ;3.4删除模块设计int Delete_a_record(Person per,int n) char s20; int i=0,j; printf(t请输入想删除记录中的名字:); scanf(%s,s); while(strcmp(peri.name,s)!=0&in) i+; if(i=n) pr
18、intf(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=perj+1.score; printf(ttt已经成功删除!n); return(n-1); 3.5更改模块设计void Change(Person per,int n) ch
19、ar s20; int i=0; printf(t请输入想修改的记录中的名字:); 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
20、,peri.adds); printf(t电子邮箱:); scanf(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); re
21、turn; fprintf(fp,*通讯录*n); fprintf(fp,编号 姓名 年龄 电话号码 通讯地址 电子邮箱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() /*主函数*/
22、int n=0; for(;) switch(menu_select() case 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); 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);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1