下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、郑州大学课程报告课程名称: C 语言程序设计专业班级: (15)班学生姓名:谢*学号:*任课教师:赵*学期:2012-2013-2课程报告任务书题目通讯录管理系统主要内容开发一个通讯录管理系统,基本信息包括:编号、姓名、性别、出生年月、固定电话、手机号、电子邮件等基本信息(也可以根据自己情况进行扩充)。使之能提供以下 基本功能:(1)通讯录等信息录入功能(注:数据等要求用文件保存)输入?(2)通讯录信息的浏览功能一一输出(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):?按电话号码进行查询按姓名查询等按照年龄排序按 姓名排序等(4)通讯录条目的删除与修改等扩展功能:可以按照自己
2、的程度进行扩展。比如(1)简单的权限处理(2)报表打印功能(3)模糊查询,如姓张的人员等;或者给定电子邮件的部分进行查询等 (4)给定指定年龄范围之内的查询等等。总之,可以根据自己需求进行分析功能, 成绩评定按照难度进行区分。任务要求一、提交材料应包括:(1)系统源代码 (2)课程报告二、整个设计过程具体要求(1)需求分析 要求学生对案例系统进行分析, 设计出需要完 成的功能,完善各个模块的调用关系;(2)设计过程 要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)(3)实现过程 要求学生养成良好的编码习惯、 完成各个模块并 进行测试,最终完成系统整体测试;(4
3、)总结阶段 按照要求完成系统设计和实现报告, 并进行总结、 答辩。成绩评士才踣撰写情况(30分)系统完成情况(30分)答辩情况(40分)总分内容20分规范程 度5分程序测 试5分基本功能20分扩展功能10分自述情况10分答辩情 况30分成绩评定教师:需求分析1,具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。2, 数据包括:人名、工作单位、电话号码和E-MAIL 地址。3, 可对记录中的姓名和电话号码进行修改。4, 可增加和删除记录。5, 可显示所有的保存记录。6, 可按人名或电话号码进行查询。分析建议采用结构体数组和文件系统实现。 结构体成员包括人名、 工作单位、 电话号码和E-
4、MAIL 地址。根据题目的要求程序应该采用结构体数组和文件系统实现。应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。二、概要设计(1) 程序的模块组成及各个函数的功能:程序的模块组成:主函数: main();输出数据函数:printf();读取数据函数:scanf();显示记录函数:Display();删除记录函数:shanchu();查找记录函数:chaxun();自定义清屏函数: system( “ cls ” );自定义输入函数: input();字符输入函数:getchar();修改数据函数:xiugai();保存数据函数:baocun
5、();排序数据函数:paixu();各函数的主要功能:输出数据函数:随时输出数据;读取数据函数:读取输入的数据信息;显示菜单函数:显示可供选择的主菜单;显示记录函数:显示通讯录所有输入的信息;删除记录函数:显示要删除的通讯录所有输入的信息;查找记录函数:显示要查询的通讯录所有输入的信息;自定义清屏函数:清除前面运行留下的信息;自定义输入函数:输入通讯录的成员;字符输入函数:从终端输入一个字符,遇回车键返回;修改数据函数:修改通讯录的成员信息;保存数据函数:保存通讯录的成员信息;排序数据函数:排序通讯录的成员信息; 程序中的抽象数据类型的定义:用户的状态结构用户编号:姓名:电话;年龄;邮箱:地址
6、;(3)总体流程图根据上面的分析,可以将程序系统的设计分为如下几个模块:插入、显示、删除、查询、修改、保存和退出。三.详细设计(1).主菜单;主菜单一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择流程图【程序】Person pe80;int menu_select()char c;dosystem(cls); 清屏printf(ttt*n);/窗口初始化printf(ttt*欢迎使用通讯录管理系统! *n)printf(ttt*n);printf(ttt*1.添力口记录*n)printf(ttt*I 2.显示记录I*n);printf(ttt*printf
7、(ttt*printf(ttt*printf(ttt*printf(ttt*printf(ttt*printf(ttt*3 .删除记录4 .查询记录5 .修改记录6 .保存记录7 .排序记录0.退出程序*n);*n);*n);*n);*n);*n);n);printf(tt 请您选择(0-7):);c=getchar();while(c7);return(c-O);(2)显示模块此模块为显示所有记录,流程图如下:选择显示功能显示所有void Display(Person per口,int n)回主幕单Inti;printf(-n); / 格式printf( 编号t姓名t年龄t电话号码t通讯地址
8、t电子邮箱n);printf(-n);for(i=1;i1&i%10=0) printf(tAn);printf(t);system(pause);printf(tAn); printf(-n);system(pause);(3)修改模块此模块先调用查找函数查找到所要修改的信息,然后用户根据需要修改信息。流程图如下:void xiugai(Person per口,int n)char s20;int i=0;printf(t请输入想修改的记录中的名字:);scanf(%s,s);/输入修改人的名字while(strcmp(,s)!=0&in) i+;if(i=n)printf
9、(t通讯录中没有此人!n);return;printf(t 编号:);scanf(t%d,&peri.score);printf(t姓名:);scanf(t%s,);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修改成功);(4)插入模块此模块为插入信息模块,插入后再调用保存函数来保存所插入的数据,支持多条信息的插入。流程图in
10、t 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+);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(
11、x);printf(nt是否继续添加?(Y/N);scanf(t%c,&sign);i+;return(n+i);(5)删除模块此模块先利用查找模块找到所要删除的信息,然后根据用户的选择来确定是否删除信息此种调用到Save函数。其流程图如下:int shanchu(Person per,int n)char s20;int i=0,j;printf(t请输入想删除记录中的名字:);scanf(%s,s);while(strcmp(,s)!=0&in) i+;if(i=n)printf(t 通讯录中没有此人!n);return(n);for(j=i;jn-1;j+)strcpy
12、(perj.num,perj+1.num);strcpy(,perj+1.name);strcpy(perj.age,perj+1.age);strcpy(perj.adds,perj+1.adds);strcpy(perj.email,perj+1.email);printf(ttt 已经成功删除!n);return(n-1);(6) 查询模块void chaxun(Person per,int n) int m;printf(tn 请选择查询方式 :n);printf(t 1 n);printf(t|1姓名查询In);printf(t|2 电话查询In);printf(t
13、|3 地址查询|n);printf(t | 4 返回 | n);printf(t 1n);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(,s)!=0&in) i+;if(i=n)printf(t 通讯录中没有此人!n);return;printf(t此人编号:%dn,peri.score); / 输出查询结
14、果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); / 输出查询结果printf(t此人姓名:%sn,per
15、);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,);printf(t此人年龄
16、:%sn,peri.age);printf(t电话号码:%sn,peri.num);printf(t电子邮箱:%sn,peri.email); ;( 7)排序模块void paixu(Person per,int n)int i,j;按编号排序 :n);for(i=1;in+1;i+)for(j=1;j0)strcpy(per-num,perj.num);strcpy(per-name,);strcpy(per-age,perj.age);strcpy(per-adds,perj.adds);strcpy(per-email,perj.email);strcpy(perj+1
17、.num,per-num);strcpy(perj+1.name,per-name);strcpy(perj+1.age,per-age);strcpy(perj+1.adds,per-adds);strcpy(perj+1.email,per-email);printf( 排序成功! n);五 . 测试结果1. 主菜单2. 显示所有信息3. 插入信息4. 查找模块第一步: 第二步: 第三步:第四步:5. 删除模块6. 修改模块第一步第二步六 . 课程心得总结刚开始学习C语言,总觉得很难理解,也很难学。在这之前,我们已经学习了一个学期,对 C 语言有了一定的了解,但是也仅仅是停留在学习了解的范
18、围,对里面的好多东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很不好动手 。这次的程序设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。自己动手发现和解决问题。通过这,我发现了自己的许多不足,平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机运行解决其中大部分问题。当然,还存在一些问题没有解决。我相信在以后的学习能够解决好它们。课堂上许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬 背是不可取的。然而要使用C语言这个工具解决实际问题,又必须掌握它。通过上机练习,对于语法知识有了感性的认识,加深对它的理解,在理
19、解的基础上就会自然而然地掌握 C 语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,更加巩固了学过的知识,而且在设计的时候学要系统的知识,也是一个较大的挑战,某一方面知识的欠缺都将影响到整个程序的设计。这次的大作业让我学到了很多有用的东西,巩固了之前的学习, 通过这个程序的学习,使我进一步理解和运用结构化程序设计的思想和方法。相信对以后初步掌握开发一个小型实用系统的基本方法,学会调试一个比较长程序的基本方法,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。我认为, 这次实习对于我是非常有意义的, 对我个人的影响比较大,对我的动手能力有了
20、很大的提高。通过这次课程设计,我对很多的函数有了新的认识,也学会了运用多种函数。最后感谢完成大作业过程中帮助过我的老师和同学。源代码:#include#include#includetypedef structchar score;/*编号 */char name10;/*姓名 */char num15;/*号码 */char email20; /*邮箱 */char age8; /*年龄 */char adds20; /*地址 */Person;Person pe80;int menu_select()char c;dosystem(cls);printf(ttt*n);/窗口初printf
21、(ttt*始化欢迎使用通讯录管理系统 ! *n);printf(ttt*printf(ttt* 1.添加记录*n);printf(ttt*I 2.显示记录*n);printf(ttt*I 3.删除记录1*n);printf(ttt*I 4.查询记录|*n);printf(ttt*I 5.修改记录|*n);printf(ttt*I 6.保存记录*n);printf(ttt*I 7.排序记录*n);printf(ttt*I 0.退出程序1*n);printf(ttt*n);printf(tt 请您选择 (0-7):);c=getchar();while(c7);return(c-0);void p
22、aixu(Person per,int n)int i,j;按编号排序 :n);for(i=1;in+1;i+)for(j=1;j0)strcpy(per-num,perj.num);strcpy(per-name,);strcpy(per-age,perj.age);strcpy(per-adds,perj.adds);strcpy(per-email,perj.email);strcpy(perj+1.num,per-num);strcpy(perj+1.name,per-name);strcpy(perj+1.age,per-age);strcpy(perj+1.add
23、s,per-adds);strcpy(perj+1.email,per-email);printf( 排序成功! n);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+);printf(t年龄:);scanf(t%s,pern+i.age);printf(t电话号码:);scanf(t%s,pern+i.num);printf(t通讯住址:);scanf(
24、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);void Scan(Person per,int n)int i;FILE *fp;打开文件if(fp=fopen(record.txt,rb)=NULL)/printf( 不能打开文件!n);exit(1);fscanf(fp,%d,&n);/ 读入记录数/fseek(fp,0,1);for(i=0;in;i+)fscanf(fp,%-5d%-8s%-6s%
25、-13s%-15s%-15sn,peri-1.score,,per i-1.age,peri-1.num,peri-1.adds,peri-1.email);fclose(fp);printf(tt*文件数据读入成功 !*n);void Display(Person per,int n) int i;printf(-n);/*格式 */printf( 编号 t 姓名 t 年龄 t 电话号码 t 通讯地址 t 电子邮箱 n);printf(-n);for(i=1;i1&i%10=0)printf(tn);printf(t);system(pause);printf(tn);
26、printf(-n);system(pause); int shanchu(Person per,int n)char s20;int i=0,j;printf(t 请输入想删除记录中的名字 :);scanf(%s,s);while(strcmp(,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+1.name);strcpy(perj.age,perj+1.age);strcpy(perj.a
27、dds,perj+1.adds);strcpy(perj.email,perj+1.email);printf(ttt 已经成功删除!n);return(n-1);void chaxun(Person per,int n)int m;printf(tn 请选择查询方式 :n);printf(t 1 n);printf(t|1姓名查询In);printf(t|2 电话查询In);printf(t|3 地址查询|n);printf(t | 4 返回 | n);printf(t 1n);printf( 请选择 :);scanf(%d,&m);while(m!=1&m!=2&m!=3&m!=4)pri
28、ntf( 输入错误请重新选择:);scanf(%d,&m);if(m=1)char s20;int i=0;printf(t 请输入想查询的姓名 :);scanf(t%s,s);while(strcmp(,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
29、); ;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);printf(t此人姓名:%sn,);printf(t此人年龄:%sn,peri.age);printf(t通讯地址:%sn,peri.adds);printf(t电子邮箱:%sn,peri.email); ;if(m=3)char s20;int i=0;
30、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,);printf(t此人年龄%sn,peri.age);printf(t电话号码%sn,peri.num);printf(t电子邮箱%sn,peri.email); ;void xiugai(Person per,int n)char s20;int i=0;scanf(%s,s);printf(t 请输入想修改的记录中的名字 :);while(strcmp(,s)!=0&in) i+;if(i=n) printf(t 通讯录中没有此人!n);return;printf(t 编号 :);scanf(t%d,&peri.score);printf(t姓名:);scanf(t%s,);printf(t年龄:);scanf(t%s,peri.age);printf(t电话号码:);scanf(t%s,peri.num);printf(t通讯住址
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年幼儿故事领域教学设计
- 5.2 四大地理区域(教学设计)2023-2024学年八年级地理下册同步教学(人教版河北专版)
- 2025-2026学年一年级立定跳远教案
- 2025-2026学年少林武术教学设计比赛
- (2026版)CSF-1R抑制剂治疗腱鞘巨细胞瘤专家共识
- 2025-2026学年素描课备课教案
- 某服装厂生产效率规范
- 2025-2026学年手机视频教学设计语文
- 2026四上数学亿以内数认识教案
- 2025-2026学年小学教学设计杂志资源库
- 2025年建筑行业建筑电工证理论考试笔试试题附答案
- 神经内科临床科室介绍
- CJ/T 217-2013给水管道复合式高速进排气阀
- 安全生产法律法规、标准和其他要求清单
- 2024年度移动通信基站维护服务合同范本3篇
- 《低碳化海洋牧场建设技术规范》
- 外贸企业海外市场开拓计划书
- 中职数学-三角函数测试题二(含答案)
- 消防安全风险管控
- T-CI 263-2024 水上装配式钢结构栈桥(平台)施工技术规程
- 高中数学校本研修报告(三篇)
评论
0/150
提交评论