C语言课程设计大作业_第1页
C语言课程设计大作业_第2页
C语言课程设计大作业_第3页
C语言课程设计大作业_第4页
C语言课程设计大作业_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、,.郑 州 大 学课程报告课 程名 称:c 语言程序设计专 业班 级 :(15)班学 生姓 名 :谢*学号 :20127611*任 课教 师 :赵*学期 :2012-2013-2课程报告任务书;.题目主要内容任务要求,.通讯录管理系统开发一个通讯录管理系统,基本信息包括: 编号、 姓名、性别、 出生年月、 固定电话、手机号、电子邮件等基本信息(也可以根据自己情况进行扩充)。使之能提供以下基本功能 :( 1)通讯录等信息录入功能(注:数据等要求用文件保存 )输入( 2)通讯录信息的浏览功能输出( 3)查询功能 (至少一种查询方式 )、排序功能 (至少一种排序方式 ):按电话号码进行查询按姓名查询

2、等 按照年龄排序按姓名排序等( 4)通讯录条目的删除与修改等扩展功能 :可以按照自己的程度进行扩展。比如(1)简单的权限处理( 2)报表打印功能( 3)模糊查询,如姓张的人员等;或者给定电子邮件的部分进行查询等(4)给定指定年龄范围之内的查询等等。总之,可以根据自己需求进行分析功能,成绩评定按照难度进行区分。一、提交材料应包括: ( 1)系统源代码( 2)课程报告二、整个设计过程具体要求( 1)需求分析要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;( 2)设计过程要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)( 3)实现过程 要求

3、学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;( 4)总结阶段 按照要求完成系统设计和实现报告,并进行总结、答辩。报告撰写情况(30 分)系统完成情况 ( 30 分)答辩情况( 40 分)内容规范程度程序测试基本功能扩展功能自述情况答辩情况成绩20 分5 分5 分20 分10 分10 分30 分总分评定成绩评定教师:一.需求分析;.,.1, 具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。2, 数据包括:人名、工作单位、电话号码和e-mail 地址。3, 可对记录中的姓名和电话号码进行修改。4, 可增加和删除记录。5, 可显示所有的保存记录。6, 可按人名或

4、电话号码进行查询。分析建议采用结构体数组和文件系统实现。结构体成员包括人名、工作单位、电话号码和e-mail 地址。根据题目的要求程序应该采用结构体数组和文件系统实现。应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。二、概要设计(1) 程序的模块组成及各个函数的功能:程序的模块组成:主函数: main();输出数据函数: printf();读取数据函数: scanf();显示记录函数: display();删除记录函数: shanchu();查找记录函数: chaxun();自定义清屏函数: system( “ cls ”);自定义输入函数:

5、input();字符输入函数: getchar();修改数据函数: xiugai();保存数据函数: baocun();排序数据函数: paixu();各函数的主要功能:输出数据函数:随时输出数据;读取数据函数:读取输入的数据信息;;.,.显示菜单函数:显示可供选择的主菜单;显示记录函数:显示通讯录所有输入的信息;删除记录函数:显示要删除的通讯录所有输入的信息;查找记录函数:显示要查询的通讯录所有输入的信息;自定义清屏函数:清除前面运行留下的信息;自定义输入函数:输入通讯录的成员; ;字符输入函数:从终端输入一个字符,遇回车键返回;修改数据函数:修改通讯录的成员信息;保存数据函数:保存通讯录的

6、成员信息;排序数据函数:排序通讯录的成员信息;(2) 程序中的抽象数据类型的定义:用户的状态结构用户编号:姓名:电话;年龄;邮箱:地址;(3) 总体流程图根据上面的分析,可以将程序系统的设计分为如下几个模块:插入、显示、删除、查询、修改、保存和退出。通讯录管理系统插入显示删除查询修改保存退出三.详细设计;.,.( 1). 主菜单;主菜单一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。流程图开始显示一系列功能选项n输入 n,判断是否是06y根据 n 的值调用各功能模块函数结束【程序】person pe80;int menu_select()char c;d

7、osystem(cls);/ 清屏printf(ttt*n);/窗口初始化printf(ttt*欢迎使用通讯录管理系统! *n);printf(ttt*n);printf(ttt*1. 添加记录*n);printf(ttt* 2. 显示记录 *n);printf(ttt* 3. 删除记录 *n);printf(ttt* 4. 查询记录 *n);printf(ttt* 5. 修改记录 *n);printf(ttt* 6. 保存记录 *n);.,.printf(ttt* 7. 排序记录 *n);printf(ttt* 0. 退出程序 *n);printf(ttt*n);printf(tt请您选择

8、(0-7):);c=getchar();while(c7);return(c-0);( 2)显示模块此模块为显示所有记录,流程图如下 :选择显示功能显示所有数回主菜单void display(person per,int n)inti;n); /格式printf(编号 t姓名 t年龄 t电话号码 t通讯地址 t电子邮箱 n);n);for(i=1;i1&i%10=0);.,. printf(t-n); printf(t);system(pause);printf(t-n); n);system(pause);( 3)修改模块此模块先调用查找函数查找到所要修改的信息,然后用户根据需要修改信息。流

9、程图如下:开始输入要修改记录的y是 否 找 到n显示要修改的提 示未 找到修改需要修改的条目,结束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(t通讯录中没有此人 !n);return;printf(t编号 :);scanf(t%d,&peri.score);printf(t姓名 :);scanf(t%s,);printf(t年龄 :)

10、;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)插入模块此模块为插入信息模块, 插入后再调用保存函数来保存所插入的数据,支持多条信息的插入。流程图;.,.开始输入要插入的记 录个i 从 0 到 n-1 调用 input函数i!=0吗?y保存调用 baocun 函结束n返回主菜单int input(person per,int n)int i=0

11、;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(x);printf(nt是否继续添加 ?(y/n);

12、scanf(t%c,&sign);i+;return(n+i);( 5)删除模块此模块先利用查找模块找到所要删除的信息,然后根据用户的选择来确定是否删除信息,此种调用到 save 函数。其流程图如下:开始输入要删除信息的名字y是否找到信息n显示找到的信息提示没有找到信息提示是否删除ny提示删除成功提示未删除结束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通讯录中没有

13、此人 !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.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 - n);printf(t

14、 1- 姓名查询 n);printf(t 2- 电话查询 n);printf(t 3- 地址查询 n);printf(t 4- 返回 n);printf(t - n);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);retur

15、n;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);return;print

16、f(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;printf(t请输入想查询的地址 :);scanf(t%s,s);while(strcmp(peri.adds,s)!=0&in)i+;if(i=n)printf(t通讯录中没有此人 !n);return;printf(t此人编

17、号 : %dn,peri.score); /输出查询结果printf(t此人姓名 : %sn,);printf(t此人年龄 : %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

18、,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.adds,per-adds);strcpy(perj+1.email,per-email);printf(排序成功! n);五. 测试结果1. 主菜单2. 显示所有信息;.,.3. 插入信息4 查找模块第一步:第二步:第三步:;.,.第四步:5. 删除模块6. 修改模块第

19、一步;.,.第二步;.,.六.课程心得总结刚开始学习 c语言,总觉得很难理解, 也很难学。在这之前,我们已经学习了一个学期,对 c 语言有了一定的了解,但是也仅仅是停留在学习了解的范围,对里面的好多东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很不好动手。这次的程序设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。 自己动手发现和解决问题。通过这,我发现了自己的许多不足,平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机运行解决其中大部分问题。当然,还存在一些问题没有解决。我相信在以后的学习能够解决好它们。课堂上许多关于 c语

20、言的语法规则, 听起来十分枯燥无味, 也不容易记住, 死记硬背是不可取的。然而要使用 c语言这个工具解决实际问题,又必须掌握它。通过上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,更加巩固了学过的知识,而且在设计的时候学要系统的知识,也是一个较大的挑战,某一方面知识的欠缺都将影响到整个程序的设计。这次的大作业让我学到了很多有用的东西, 巩固了之前的学习, 通过这个程序的学习,使我进一步理解和运用结构化程序设计的思想和方法。相信对以后初步掌握开发一个小型实用系统的基本方法

21、,学会调试一个比较长程序的基本方法,学会利用流程图表示算法,进一步掌握和提高利用 c语言进行程序设计的能力。我认为,这次实习对于我是非常有意义的, 对我个人的影响比较大, 对我的动手能力有了很大的提高。通过这次课程设计,我对很多的函数有了新的认识,也学会了运用多种函数。最后感谢完成大作业过程中帮助过我的老师和同学。;.,.源代码:#include#include#includetypedef structchar score;/*编号 */char name10;/*姓名 */char num15;/*号码 */char email20;/*邮箱 */char age8; /*年龄 */cha

22、r adds20;/*地址 */person;person pe80;int menu_select()char c;dosystem(cls);printf(ttt*n);/窗口初始化printf(ttt*欢迎使用通讯录管理系统 ! *n);printf(ttt* *n);printf(ttt*1.添加记录 *n);printf(ttt* 2.显示记录 *n);printf(ttt* 3.删除记录 *n);printf(ttt* 4.查询记录 *n);printf(ttt* 5.修改记录 *n);printf(ttt* 6.保存记录 *n);printf(ttt* 7.排序记录 *n);pr

23、intf(ttt* 0.退出程序 *n);.,.printf(ttt* *n);printf(tt请您选择 (0-7):);c=getchar();while(c7);return(c-0);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

24、);strcpy(perj+1.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);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,p

25、ern+);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);void scan(person per,int n)int i;file *fp;if(fp=fopen(record.txt,rb)=nul

26、l)/打开文件printf(不能打开文件 !n);exit(1);.,.fscanf(fp,%d,&n);/读入记录数/fseek(fp,0,1);for(i=0;in;i+)fscanf(fp,%-5d%-8s%-6s%-13s%-15s%-15sn,peri-1.score,,peri-1.age,peri-1.num,peri-1.adds,peri-1.email);fclose(fp);printf(tt*文件数据读入成功!*n);void display(person per,int n)int i;n);/*格式 */printf(编号 t姓名 t年龄 t电

27、话号码 t通讯地址 t电子邮箱 n);n);for(i=1;i1&i%10=0)printf(t-n);printf(t);system(pause);printf(t-n);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,

28、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);void chaxun(person per,int n)int m;printf(tn请选择查询方式 :n);printf(t - n);printf(t 1-姓名查询 n);.,.printf(t 2-电话查询 n);printf(t 3-地址查询 n);print

29、f(t 4-返回 n);printf(t - n);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);printf(t此人年龄 : %sn,peri.age)

30、;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,);printf(t此

31、人年龄 : %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此人年龄 : %sn,peri.ag

32、e);.,.printf(t电话号码 : %sn,peri.num);printf(t电子邮箱 : %sn,peri.email); ;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(t通讯录中没有此人 !n);return;printf(t编号 :);scanf(t%d,&peri.score);printf(t姓名 :);scanf(t%s,);printf(t年龄 :);scanf(t%s,peri.age);printf

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论