C语言课程设计大作业_第1页
C语言课程设计大作业_第2页
C语言课程设计大作业_第3页
C语言课程设计大作业_第4页
C语言课程设计大作业_第5页
免费预览已结束,剩余28页可下载查看

下载本文档

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

文档简介

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

2、的删除与修改等扩展功能:可以按照自己的程度进行扩展。比如( 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 ” );自定义输入函数:input();字符输入函数:getchar();修改数据函数:xiugai();保存数据函数:

5、baocun();排序数据函数:paixu();各函数的主要功能:输出数据函数:随时输出数据;文案大全标准文档读取数据函数:读取输入的数据信息;显示菜单函数:显示可供选择的主菜单;显示记录函数:显示通讯录所有输入的信息;删除记录函数:显示要删除的通讯录所有输入的信息;查找记录函数:显示要查询的通讯录所有输入的信息;自定义清屏函数:清除前面运行留下的信息;自定义输入函数:输入通讯录的成员;字符输入函数:从终端输入一个字符,遇回车键返回;修改数据函数:修改通讯录的成员信息;保存数据函数:保存通讯录的成员信息;排序数据函数:排序通讯录的成员信息;(2)程序中的抽象数据类型的定义:用户的状态结构用户编

6、号:姓名:电话;年龄;邮箱:地址;(3)总体流程图根据上面的分析,可以将程序系统的设计分为如下几个模块:插入、显示、删除、查询、修改、保存和退 出。标准文档三.详细设计(1).主菜单;主菜单一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方 式选择。流程图文案大全【程序】Person pe80;int menu_select()char c;dosystem("cls"); 清屏printf("ttt*n");/窗口初始化printf("ttt*欢迎使用通讯录管理系统! *n");printf("

7、;ttt*printf("ttt*1.printf("ttt*printf("ttt*printf("ttt*添加记录*5);2.显示记录*5);3.删除记录*5);4.查询记录*5);*n");标准文档printf("ttt*5.修改记录*n");printf("ttt*6.保存记录*n")printf("ttt*7.排序记录*n")printf("ttt*0.退出程序*n")printf("ttt*11*n");printf("tt

8、请您选择(0-7):");c=getchar();while(c<'0'11c>'7');return(c-'O');(2)显示模块此模块为显示所有记录,流程图如下void Display(Person per口,int n)Inti;n"); / 格式printf(" 编号t姓名t年龄t电话号码t通讯地址t电子邮箱n");n");for(i=1;i<n+1;i+)printf("%-8d%-8s%-8s%-18s%-18s%-8sn",peri-1.scor

9、e,,peri-1.age,peri-1.num,peri-1.adds,peri-1.email);if(i>1&&i%10=0) printf("tAn");printf("t");system("pause");printf("tAn"); n");system("pause");(3)修改模块此模块先调用查找函数查找到所要修改的信息,然后用户根据需要修改信息。流程图如下:void xiugai(Person per口,int n)ch

10、ar s20;int i=0;printf("t请输入想修改的记录中的名字:");scanf("%s”,s);/输入修改人的名字文案大全标准文档while(strcmp(,s)!=0&&i<n) i+;if(i=n)printf("t通讯录中没有此人!n");return;printf("t 编号:");scanf("t%d",&peri.score);printf("t姓名:");scanf("t%s",peri.n

11、ame);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)插入模块支持多条信息的插入此模块为插入信息模块,插入后再调

12、用保存函数来保存所插入的数据,流程图文案大全标准文档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",

13、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);(

14、5)删除模块此模块先利用查找模块找到所要删除的信息,然后根据用户的选择来确定是否删除信息,此 种调用到Save函数。其流程图如下:int shanchu(Person per口,int n)char s20;int i=0,j;printf("t请输入想删除记录中的名字:");scanf("%s",s);while(strcmp(,s)!=0&&i<n) i+;if(i=n)文案大全标准文档printf("t通讯录中没有此人!n");return(n);for(j=i;j<n-1;j+)s

15、trcpy(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-l);(6)查询模块void chaxun(Person per,int n) int m;printf("tn请选择查询方式:n");printf("t - 1 n");printf

16、("t|1姓名查询In");printf("t|2电话查询In");printf("t|3 地址查询|n");printf("t | 4 返回 | n");printf("t 1 -n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4)printf("输入错误请重新选择:”);scanf("%d",&

17、amp;m);文案大全标准文档if(m=1)char s20;int i=0;printf("t请输入想查询的姓名:");scanf("t%s",s);while(strcmp(,s)!=0&&i<n) i+;if(i=n)printf("t通讯录中没有此人!n");return;printf("t此人编号:dn",peri.score); / 输出查询结果printf("t此人年龄:sn",peri.age);printf("t电话号码:sn&

18、quot;,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&&i<n) i+;if(i=n)printf("t通讯录中没有此人!n");return;printf("t文案大全此人编号:dn&qu

19、ot;,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&&

20、amp;i<n)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);(7)排序模块void paixu(Person per口,int n)

21、int i,j;按编号排序:n");for(i=1;i<n+1;i+)文案大全标准文档for(j=1;j<n-1;j+)if(strcmp(perj.num,perj+1.num)>0)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(pe

22、rj+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 .主菜单KXMXMMNXMXMMNKXXKMJOtXXKMXKMMKMNKMMltMMHMMJtMMHMMM*18ffMM苒MM” 欢迎使用通讯录管理系统,录录录录录录济 记记记记记记记程 加示胃添显粤一K苴葡MMKM苴MM苴MMMMXNX-XJ<NJ<*X:M=MX

23、1-J MXMMXMMXXMXXMXXM请您选择-7:2 .显示所有信息通讯录记录表编号 姓名 年龄电话号码通讯地址电子邮箱3 .插入信息.抑双迎使用通讯录管理系统,*"X"*KX K X X K * X 翼 X X KN X 耳12345670加示, 添显萼记记记记记记记程录录录录录录译XMXXM XHHXXM XHH *算MX*MX苴MX*MMX录 讯 通LJ+4: 1: 1: 1 录 靠箱 记:1:1:10 kis 加号讯子 爸姓煮富是否继续添加火YJNA4 .查找模块 第一步:在通讯录中查找记录青选择查询方式:12 3 4询询询 甘甘杳一 鲁址回 姓蠹返青选择:第二

24、步:询i i工1 i继 查键 想口防码址箱显 入编年口范邮任 父人话讯子按.此电莘nJ选主目第三步: 文案大全第四步:话 -电 的 续询上工11继查:.:,.:键福号箱忌入编姓年地整欠人人讯子按此此!请选择;3查1:二键想号嘉码箱目入编姓年号邮任集A人话子按请此此此5.删除模块沮MMMMMXXMX欢迎使用通讯录管理系统? MMXMMXXMXHMMMMXMXXMMXXXXMXMMMMXNMMXXXXM2.显示记录7除记录3,记录4.S.修改圮泵 _ " 1 -I. I记录6.0BHMM*XXXX*XXXXH*XXMXMMXX*XX*MMMXX请您选择加7二|讯录中删除记录】目蒂人想册除

25、记录市的名字;1 已经晟功删除, 请按任意键维续.6.修改模块第一步标准文档文案大全芹 欢迎使用通讯录管理杀统,苒m"X"XMi * 请您选择0-7八5修改通讯录中的记录请输矢想修改的记录中的名字r 编号二?蛙名二年龄:?Igg? 甬子里f=? 修改成功请按任意键继续. .第二步录录?- HJ1人 断断此缘 中录修舅 讯想更曷 挈落 南输讯技 窗主目IWIR 口->:,I I;工录录录录录录* 己己己己己己己口王 ,"U4'U,1J、'U,U% F 加小辑 添显掣 *!一12345670"BfifC M M M M M-JHC M

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

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

28、。相信对以后初步掌握开发一个小型实 用系统的基本方法,学会调试一个比较长程序的基本方法,学会利用流程图表示算法,进一 步掌握和提高利用C语言进行程序设计的能力。我认为,这次实习对于我是非常有意义的, 对我个人的影响比较大,对我的动手能力 有了很大的提高。通过这次课程设计,我对很多的函数有了新的认识,也学会了运用多种函 数。最后感谢完成大作业过程中帮助过我的老师和同学。源代码:#include<stdlib.h>#include<stdio.h>#include<string.h> typedef structchar score;/*编力/char name

29、10;/*姓名*/char num15;/*号码*/char email20; /*邮箱*/char age8; /*年龄*/char 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*printf(&

30、quot;ttt*printf("ttt*printf("ttt*printf("ttt*printf("ttt*printf("ttt*.6.7.0.显示记录删除记录查询记录修改记录保存记录排序记录退出程序*n");*n");*n");*n");*n");*n");*n");标准文档文案大全printf("ttt*n");printf("tt 请您选择(0-7):");c=getchar();while(c<

31、9;0'|c>'7');return(c-'O'); void paixu(Person per口,int n)int i,j;按编号排序:n");for(i=1;i<n+1;i+)for(j=1;j<n-1;j+)if(strcmp(perj.num,perj+1.num)>0)strcpy(per->num,perj.num);strcpy(per->name,);strcpy(per->age,perj.age);strcpy(per->adds,perj.adds);st

32、rcpy(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");int Input(Person per口,int n)标准文档int i=0;char sign,x10;while(sign!='n'&

33、amp;&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通讯住址:");

34、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")=NULL)/printf(

35、" 不能打开文件!n");exit;文案大全fscanf(fp,"%d",&n);/ 读入记录数/fseek(fp,0,1);for(i=0;i<n;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口

36、,int n)int i;n");/*格式*/printf(" 编号t姓名t年龄t电话号码t通讯地址t电子邮箱n");n");for(i=1;i<n+1;i+)printf("%-8d%-8s%-8s%-18s%-18s%-8sn",peri-1.score,,peri-1.age,peri-1.num,peri-1.adds,peri-1.email);if(i>1&&i%10=0)printf("tn");printf("t");system

37、("pause");printf("tn");n");文案大全system("pause"); int shanchu(Person per口,int n)char s20;int i=0,j;printf("t请输入想删除记录中的名字:");scanf("%s",s);while(strcmp(,s)!=0&&i<n) i+;if(i=n)printf("t通讯录中没有此人!n");return(n);for(j=i;j&l

38、t;n-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);void chaxun(Person per口,int n)int m;printf("tn请选择查询方式:n");printf("t - 1 n");pr

39、intf("t | 1 姓名查询 I n");文案大全标准文档printf("t| 2电话查询 I n");printf("t| 3地址查询 | n");printf("t | 4 返回 | n");printf("t 1 -n");printf("请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4)printf("输入错误请重新选择:”);

40、scanf("%d",&m);if(m=1)char s20;int i=0;printf("t请输入想查询的姓名:");scanf("t%s",s);while(strcmp(,s)!=0&&i<n) i+;if(i=n)printf("t 通讯录中没有此人!n");return;printf("t此人编号:dn",peri.score);printf("t此人年龄:sn",peri.age);printf("t电话

41、号码: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&&i<n) i+;if(i=n)printf("t通讯录中没有此人!n");return;printf("t此

42、人编号: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&&

43、;i<n) 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

44、;int i=0;printf("t请输入想修改的记录中的名字:");while(strcmp(,s)!=0&&i<n) 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.

温馨提示

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

最新文档

评论

0/150

提交评论