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

付费下载

下载本文档

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

文档简介

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

2、电话号码进行查询 按姓名查询 等 按照年龄排序 按姓名排序等 (4)通讯录条目的删除与修改等 扩展功能:可以按照自己的程度进行扩展。比如(1)简单的权限处理 (2)报表打印功能(3)模糊查询,如姓张的人员等;或者给定电子邮件的部分进行查询等(4)给定指定年龄范围之内的查询等等。 总之,可以根据自己需求进行分析功能,成绩评定按照难度进行区分。 开始输入要修改记录的Y 到找否是N 到显示要修改的找示未提修改需要修改的条目, 开始录个输入要插入的记 函数调用到n-1Input从i0N 吗?i!=0Y 返回主菜单保存调用baocun函 结束 开始 输入要删除信息的名字 是否找到信息Y N 提示没有找到

3、信息显示找到的信息 提示是否删除N 提示未删除 结束 一、提交材料应包括:(1)系统源代码 (2)课程报告 二、整个设计过程具体要求 (1)需求分析 要求学生对案例系统进行分析,设计出需要完成的功能,完善任务 各个模块的调用关系; (2)设计过程 要求学生进一步明确各模块调用关系,进一步完善模块函数细节 要求(函数名、参数、返回值等) (3)实现过程 要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试; (4)总结阶段 按照要求完成系统设计和实现报告,并进行总结、答辩。 报告撰写情况(30分) 系统完成情况(30分) 答辩情况(40分) 内容 规范程度 程序测试 基本功能

4、扩展功能自述情况答辩情况 成绩 分分 10 30 5分 5分20分 10分20分 总分 评定 成绩评定教师: 一. 需求分析 具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。1,2,数据包括:人名、工作单位、电话号码和E-MAIL地址。 3,可对记录中的姓名和电话号码进行修改。 4,可增加和删除记录。 5,可显示所有的保存记录。 6,可按人名或电话号码进行查询。 分析 建议采用结构体数组和文件系统实现。结构体成员包括人名、工作单位、电话号码和E-MAIL地址。 根据题目的要求程序应该采用结构体数组和文件系统实现。应该有文件的操作功能;在程序中应该包括输入、显示、删除、查询、添加、修

5、改、保存、加载和退出的功能。 二、概要设计 (1)程序的模块组成及各个函数的功能: 程序的模块组成: 主函数:main(); 输出数据函数:printf(); 读取数据函数:scanf(); 显示记录函数:Display(); 删除记录函数:shanchu(); 查找记录函数:chaxun(); 自定义清屏函数:system(“cls”); 自定义输入函数:input(); 字符输入函数:getchar(); 修改数据函数:xiugai(); 保存数据函数:baocun(); 排序数据函数:paixu(); 各函数的主要功能: 输出数据函数:随时输出数据; 读取数据函数:读取输入的数据信息;

6、显示菜单函数:显示可供选择的主菜单;显示记录函数:显示通讯录所有输入的信息; 删除记录函数:显示要删除的通讯录所有输入的信息; 查找记录函数:显示要查询的通讯录所有输入的信息; 自定义清屏函数:清除前面运行留下的信息; 自定义输入函数:输入通讯录的成员;; 字符输入函数:从终端输入一个字符,遇回车键返回; 修改数据函数:修改通讯录的成员信息; 保存数据函数:保存通讯录的成员信息; 排序数据函数:排序通讯录的成员信息; (2)程序中的抽象数据类型的定义: 用户的状态结构 用户 编号: 姓名: 电话; 年龄; 邮箱: 地址; (3)总体流程图 根据上面的分析,可以将程序系统的设计分为如下几个模块:

7、插入、显示、删除、查询、修改、保存和退出。 通讯录管理系统 退出 保存 修改 查询 删除 显示 插入 三. 详细设计 (1). 主菜单; 主菜单一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。 流程图 始开 显示一系列功能选项N 输入n,判断是否是06 Y 根据n的值调用各功能模块函数 结束 【程序】Person pe80; int menu_select() char c; do 清屏/ system(cls); printf(tt*n);/窗口初始化 printf(tt* 欢迎使用通讯录管理系统! *n); printf(tt*n); printf(

8、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* 7. 排序记录*n); printf(tt* 0. 退出程序*n); printf(tt*n); printf(t请您选择(0-7):); c=getchar(); while(c7); return(c-0); (2)显示模块 此模块为显示所有记录,流程图如下: 选择显示功能 显示所有数 回主菜单 void D

9、isplay(Person per,int n) Inti; printf(- n); /格式 瀠楲瑮?编号t姓名t年龄t电话号码t通讯地址t电子邮箱n); printf(-n); for(i=1;i1&i_x0010_=0) printf(-n); printf(); system(pause); printf(-n); printf(-n); system(pause); (3)修改模块 此模块先调用查找函数查找到所要修改的信息,然后用户根据需要修改信息。流程图如下: 结束 void xiugai(Person per,int n) char s20; int i=0; :); print

10、f(请输入想修改的记录中的名字 scanf(%s,s); /输入修改人的名字 while(strcmp(,s)!=0&in) i+; if(i=n) !n); 通讯录中没有此人 printf( return; :); 编号 printf( scanf(%d,&peri.score); :); 姓名 printf( scanf(%s,); :); printf(年龄 scanf(%s,peri.age); :); printf(电话号码 scanf(%s,peri.num); :); 通讯住址 printf( scanf(%s,peri.adds); :);

11、电子邮箱 printf( scanf(%s,peri.email); 修改成功 printf(); )插入模块4( 插入后再调用保存函数来保存所插入的数据,支持多条信息的插入。此模块为插入信息模块, 流程图 int Input(Person per,int n) int i=0; char sign,x10; while(sign!=n&sign!=N) printf(编号:); scanf(%d,&pern+i.score); printf(姓名:); scanf(%s,pern+); printf(年龄:); scanf(%s,pern+i.age); printf(电话号码:

12、); scanf(%s,pern+i.num); printf(通讯住址:); scanf(%s,pern+i.adds); printf(电子邮箱:); scanf(%s,pern+i.email); gets(x); printf(t是否继续添加?(Y/N); scanf(%c,&sign); i+; return(n+i); (5)删除模块 此模块先利用查找模块找到所要删除的信息,然后根据用户的选择来确定是否删除信息,此 函数。其流程图如下:Save种调用到 int shanchu(Person per,int n) char s20; int i=0,j; :); 请输入想删除记录中的

13、名字 printf( scanf(%s,s); while(strcmp(,s)!=0&in) i+; if(i=n) printf(通讯录中没有此人!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(tt已经成功删除!n); return(n-1

14、); (6) 查询模块 void chaxun(Person per,int n) int m; printf(n请选择查询方式:n); printf(-n); printf(1-姓名查询n); printf(2-电话查询n); printf(3-地址查询n); printf(4-返回 n); printf(-n); 牰湩晴尨请选择:); scanf(%d,&m); while(m!=1&m!=2&m!=3&m!=4) 瀠楲瑮?输入错误请重新选择:); scanf(%d,&m); if(m=1) char s20; int i=0; printf(请输入想查询的姓名:); scanf(%s,s

15、); while(strcmp(,s)!=0&in) i+; if(i=n) printf(通讯录中没有此人!n); return; printf(此人编号: %dn,peri.score); /输出查询结果 printf(此人年龄: %sn,peri.age); printf(电话号码: %sn,peri.num); printf(通讯地址: %sn,peri.adds); printf(电子邮箱: %sn,peri.email); ; if(m=2) char s20; int i=0; printf(请输入想查询的电话:); scanf(%s,s); while(str

16、cmp(peri.num,s)!=0&in) i+; if(i=n) printf(通讯录中没有此人!n); return; printf(此人编号: %dn,peri.score); /输出查询结果 printf(此人姓名: %sn,); printf(此人年龄: %sn,peri.age); printf(通讯地址: %sn,peri.adds); printf(电子邮箱: %sn,peri.email); ; if(m=3) char s20; int i=0; printf(请输入想查询的地址:); scanf(%s,s); while(strcmp(peri.add

17、s,s)!=0&in) i+; if(i=n) printf(通讯录中没有此人!n); return; printf(此人编号: %dn,peri.score); /输出查询结果 printf(此人姓名: %sn,); printf(此人年龄: %sn,peri.age); printf(电话号码: %sn,peri.num); printf(电子邮箱: %sn,peri.email); ; (7)排序模块 void paixu(Person per,int n) int i,j; / printf(按编号排序:n); for(i=1;in+1;i+) for(j=1;j0)

18、 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.adds,per-adds); strcpy(perj+1.email,per-email); 瀠楲瑮?排序成功!n);

19、五.测试结果 1.主菜单 显示所有信息 2. 3. 插入信息 4 查找模块 第一步: 第二步: 第三步: 第四步: 5. 删除模块 6.修改模块 第一步 第二步 课程心得总结. 六 刚开始学习C语言,总觉得很难理解,也很难学。在这之前,我们已经学习了一个学期,对C语言有了一定的了解,但是也仅仅是停留在学习了解的范围,对里面的好多东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很不好动手。 这次的程序设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。自己动手发现和解决问题。通过这,我发现了自己的许多不足,平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断

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

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

22、*/ char num15; /*号码*/ char email20; /*邮箱*/ char age8; /*年龄*/ char adds20; /*地址*/ Person; Person pe80; int menu_select() char c; do system(cls); printf(tt*n);/窗口初始化 printf(tt* 欢迎使用通讯录管理系统! *n); printf(tt*n); printf(tt* 1. 添加记录 *n); printf(tt* 2. 显示记录*n); printf(tt* 3. 删除记录*n); printf(tt* 4. 查询记录*n);

23、printf(tt* 5. 修改记录*n); printf(tt* 6. 保存记录*n); printf(tt* 7. 排序记录*n); printf(tt* 0. 退出程序*n); printf(tt*n); (0-7):); 请您选择 printf(t c=getchar(); while(c7); return(c-0); void paixu(Person per,int n) int i,j; / printf(按编号排序:n); for(i=1;in+1;i+) for(j=1;j0) strcpy(per-num,perj.num); strcpy(per-name,perj.n

24、ame); 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.adds,per-adds); strcpy(perj+1.email,per-email); 瀠楲瑮?排序成功!n); int Input(Person per,int n) int i=0; char sign,x1

25、0; while(sign!=n&sign!=N) printf(编号:); scanf(%d,&pern+i.score); printf(姓名:); scanf(%s,pern+); printf(年龄:); scanf(%s,pern+i.age); printf(电话号码:); scanf(%s,pern+i.num); printf(通讯住址:); scanf(%s,pern+i.adds); printf(电子邮箱:); scanf(%s,pern+i.email); gets(x); printf(t是否继续添加?(Y/N); scanf(%c,&sign); i+;

26、 return(n+i); void Scan(Person per,int n) int i; FILE *fp; if(fp=fopen(ecord.txt,b)=NULL)/打开文件 瀠楲瑮?不能打开文件!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);

27、!*n); 文件数据读入成功 printf(t* void Display(Person per,int n) int i; printf(-*/ n); /*格式n); 电子邮箱ttt瀠楲瑮?编号姓名t年龄电话号码t通讯地址printf(-n); for(i=1;i1&i_x0010_=0) printf(-n); printf(); system(pause); printf(-n); printf(-n); system(pause); int shanchu(Person per,int n) char s20; int i=0,j; printf(请输入想删除记录中的名字:); sc

28、anf(%s,s); while(strcmp(,s)!=0&in) i+; if(i=n) printf(通讯录中没有此人!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(tt已经成功删除!n); return(n-1); void chaxu

29、n(Person per,int n) int m; printf(n请选择查询方式:n); printf(-n); printf(1-姓名查询n); printf(2-电话查询n); n); 地址查询3-printf(printf(4-返回 n); printf(-n); 牰湩晴尨请选择:); scanf(%d,&m); while(m!=1&m!=2&m!=3&m!=4) ?牰湩晴尨输入错误请重新选择:); scanf(%d,&m); if(m=1) char s20; int i=0; printf(请输入想查询的姓名:); scanf(%s,s); while(strcmp(peri.

30、name,s)!=0&in) i+; if(i=n) printf(通讯录中没有此人!n); return; printf(此人编号: %dn,peri.score); printf(此人年龄: %sn,peri.age); printf(电话号码: %sn,peri.num); printf(通讯地址: %sn,peri.adds); printf(电子邮箱: %sn,peri.email); ; if(m=2) char s20; int i=0; printf(请输入想查询的电话:); scanf(%s,s); while(strcmp(peri.num,s)!=0&in) i+; if

31、(i=n) printf(通讯录中没有此人!n); return; printf(此人编号: %dn,peri.score); printf(此人姓名: %sn,); printf(此人年龄: %sn,peri.age); printf(通讯地址: %sn,peri.adds); printf(电子邮箱: %sn,peri.email); ; if(m=3) char s20; int i=0; printf(请输入想查询的地址:); scanf(%s,s); while(strcmp(peri.adds,s)!=0&in) i+; if(i=n) printf(通讯录中没有

32、此人!n); return; printf(此人编号: %dn,peri.score); printf(此人姓名: %sn,); printf(此人年龄: %sn,peri.age); printf(电话号码: %sn,peri.num); : %sn,peri.email); 电子邮箱 printf( ; void xiugai(Person per,int n) char s20; int i=0; printf(请输入想修改的记录中的名字:); scanf(%s,s); while(strcmp(,s)!=0&in) i+; if(i=n) printf(通讯录中没有此人!n); return; printf(编号:); scanf(%d,&peri.score); printf(姓名:); scanf(%s,); printf(年龄:); scanf(%s,peri.age); printf(电话号码:); scanf(%s,

温馨提示

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

最新文档

评论

0/150

提交评论