收藏 分销(赏)

C语言专业课程设计通讯录标准管理系统.doc

上传人:天**** 文档编号:4431627 上传时间:2024-09-22 格式:DOC 页数:61 大小:2.29MB
下载 相关 举报
C语言专业课程设计通讯录标准管理系统.doc_第1页
第1页 / 共61页
C语言专业课程设计通讯录标准管理系统.doc_第2页
第2页 / 共61页
C语言专业课程设计通讯录标准管理系统.doc_第3页
第3页 / 共61页
C语言专业课程设计通讯录标准管理系统.doc_第4页
第4页 / 共61页
C语言专业课程设计通讯录标准管理系统.doc_第5页
第5页 / 共61页
点击查看更多>>
资源描述

1、C语言专业课程设计通讯录标准管理系统*科技大学本科生课程设计说明书题 目:C语言课程设计 通讯录管理系统学生姓名:* 学 号:*专 业:软件工程班 级:1指导教师:*内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目通讯录管理系统指导教师* 时间2012.12.312013.1.4一、教学要求1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。

2、通讯录管理系统现有一批通讯录的数椐,要求输入计算机并存放在内存中,然后增加若干个新通讯录的记录,并可输出通讯录清单,实现文件存盘和读入文件进行修改的功能。通讯录的基本信息包括编号,姓名,电话号码,号码,电子邮件,通讯地址。要求设计菜单来调用其各功能模块:v 新建文件、打开文件、保存信息到文件v 输入记录、输出记录v 查询记录(至少具有两种查询方式,例如以姓名查询和以电话号码查询)v 修改、插入和删除记录三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程

3、序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C语言程序设计,谭浩强,清

4、华大学出版社2C语言程序设计课程设计,刘振安,机械工业出版社。目 录内蒙古科技大学课程设计任务书 目 录III第一章 需求分析3引言3任务概述3数据描述3功能需求3性能需求4运行需求4任务计划4第二章概要设计12总体设计12数据类型设计(或数据结构设计)13接口设计13运行界面设计15第三章详细设计18输入模块设计18输出模块设计19查找模块设计20删除模块设计24保存及读取模块设计25第四章测试分析32测试程序执行情况32出现的问题和解决的方法37第五章课程设计总结39附录:程序代码39参考文献56致谢57第一章 需求分析1.1 引言通过程序设计,达到理论与实际应用相结合,提高对信息管理系统

5、的分析能力,能够根据实际应用,初步实现系统功能模块及算法的设计,通过编程基本实现信息管理系统。1.2 任务概述1. 采用结构体的形式对数据进行输入输出。2. 可以对通讯录进行简单的排序,筛选,删除。3. 可以对任意信息就行修改。4. 可以把数据已文件的形式输入输出。5. 任意浏览信息。1.3 数据描述以所示的文本数据位初始数据进行简单操作,也可另行添加。1.4 功能需求实现以上功能需求。,可以对数据进行输入输出,集排序,修改,打印,删除等功能。下面以上述数据描述的数据为测试数据进行简单输入输出。4)删除界面:删除后,通讯录里的显示记录:5)查询界面:以姓名查询方式为例:6)修改界面:修改后,通

6、讯录里的显示记录:7)保存界面:第二章 概要设计2.1 总体设计添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子后,会提示是否继续添加。显示:可以以表格形式输出所有通讯录里的记录删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容查询:可以选择用姓名、电话、地址三种方式查询修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子即可完成修改保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件2.2 数据类型设计(或数据结构设计)typedef struct char score; /*编号*/char name10;

7、/*姓名*/ 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 Query_a_record(Person per,int

8、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); break;case 3: printf(nt从通讯

9、录中删除记录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);

10、/*保存数据*/ 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. 添加记录 n); printf(tt 2. 显示记录 n)

11、; 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(sign!=n&sign!=N) printf(t编

12、号:); 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); i+; return(n+i); 3.2 输出模块设计voi

13、d 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); printf(tn); printf(t1-姓名 n); p

14、rintf(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通讯录中没有此人!n); return; printf(t此人编号: %

15、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); return; printf(t此人编号: %dn,peri.score);prin

16、tf(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; printf(t此人编号: %dn,peri.score);printf(t此人姓名: %sn,peri

17、.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) printf(t通讯录中没有此人!n); return(n); for(j=i;jn-1;j+) strcp

18、y(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) char s20; int i=0; printf(t请输入想修改的记录中的名字:); scanf(%s,s);

19、 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电子:);scanf(t%s,peri.email);printf(t

20、修改成功!);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,编号 姓名 年龄 电话号码 通讯地址 电子n);fprint

21、f(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 1: printf(nt添加记录到通讯录n); /*添加记录

22、*/ 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修改通讯录中的记

23、录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); 第四章 测试分析4.1 测试程序执行情况1)显示的主菜单界面2)添加界面:3)显示界面:4)删除界面:删除后,通讯录里的显示记录:5)查询界面:以姓名查询

24、方式为例:6)修改界面:修改后,通讯录里的显示记录:7)保存界面:大部分功能以按上面图文描述,有不足的地方请老师批评指正。您的建议将帮我走得更好。4.2 出现的问题和解决的方法、查询、修改、保存等功能时,以查询为例,输入名字按回车后,虽然会显示该人的所有记录,但是显示后,它马上自动消失了,还没来得及等我看内容。因此,向别人请教后,在一些地方加入了system(pause);这个语言,用来对某项操作完成后进行暂停。第五章 课程设计总结这次的程序实设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。自己动手,自己发现和解决问题。发现了自己的许多不足。平时没有掌握好的知识在这次实验中彻底暴

25、露出来,经过不断思考,不断查阅资料和上机运行,解决其中大部分问题,当然还存在一些问题没有解决。我相信在以后的学习能够解决好它们。但是,收获还是不小的,我不仅对C的操作有了进一步的掌握,还了解到了程序设计的书写风格及其注释的格式。当我选择通讯录这个题目时,一开始想运用大量链表及指针来完成,但是在慢慢琢磨之后,觉得这个不一定要用链表,于是改变了编程思路。当然还有不少文件的读写问题,不过还是通过不断测试之后顺利解决了。另外一点要说的就是这个程序用了很多的循环,因此对于循环的控制要十分小心,有时while和do-while的区别也是十分重要的。还有一点体会就是,书上和老师教的内容是有限的,我们需要不断

26、地靠自己去学习,向他人请教,了解和掌握更多的知识,这样我们才能编出更好的C程序。总体来说,这次C语言程序设计实验还是比较成功的,虽然最终程序还存在一些不足,但能取得这样的成绩我还是比较高兴的。最后,要感谢学校为我们提供这次实验机会,也要感谢老师的教导和好心人对我的帮助与支持。附录:程序代码#include #include#include typedef struct char score; /*编号*/char name10; /*姓名*/ char num15; /*号码*/ char email20;/*/char age8;/*年龄*/char adds20;/*住址*/Person;

27、 Person pe80; int menu_select() char c; do system(cls); printf(tt *通讯录* n); printf(tt |-|n); 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(tt|-|n); printf(tt请您选择(0-6):); c=getchar(); whi

28、le(c6); return(c-0); int Input(Person per,int n) 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电子:)

29、;scanf(t%s,pern+i.email);gets(x); printf(nt是否继续添加?(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=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);

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服