付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、郑州大学课程报告名称:C 语言程序设计(15)班赵*2012-2013-2课程报告任务书通讯录管理系统幵发一个通讯录管理系统,基本信息包括:编号、姓名、性别、出生 年月、固定电话、手机号、电子邮件等基本信息(也可以根据自己情 况进行扩充)。使之能提供以下基本功能:(1)通讯录等信息录入功能(注:数据等要求用文件保存)-输入?(2)通讯录信息的浏览功能一一输出 (3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):?按电话号码进行查询按姓名查询等按照年龄排序按姓名排序等(4)通讯录条目的删除与修改等扩展功能:可以按照自己的程度进行扩展。比如(1)简单的权限处理(2)报表打印功能(3)
2、模糊查询,如姓张的人员等;或者给定 电子邮件的部分进行查询等 (4)给定指定年龄范围之内的查询等等。总之,可以根据自己需求进行分析功能,成绩评定按照难度进行区分。一、提交材料应包括:(1)系统源代码 (2)课程报告二、整个设计过程具体要求(1)需求分析 要求学生对案例系统进行分析, 设计出需要完 成的功能,完善各个模块的调用关系;(2) 设计过程 要求学生进一步明确各模块调用关系,进一步完 善模块函数细节(函数名、参数、返回值等)(3)实现过程 要求学生养成良好的编码习惯、 完成各个模块并 进行测试,最终完成系统整体测试;报告撰写情况(30分)系统完成情况(30分)答辩情况(40分)内容20分
3、规范程 度5分程序测 试5分基本功能20分扩展功能10分自述情况10分答辩情 况30分总分(4)总结阶段 按照要求完成系统设计和实现报告, 并进行总结、 答辩。成绩评定教师:1,具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。2, 数据包括:人名、工作单位、电话号码和 E-MAIL 地址。3, 可对记录中的姓名和电话号码进行修改。4, 可增加和删除记录。5, 可显示所有的保存记录。6, 可按人名或电话号码进行查询。分析建议采用结构体数组和文件系统实现。 结构体成员包括人名、 工作单位、 电话号码和E-MAIL 地址。根据题目的要求程序应该采用结构体数组和文件系统实现。应该有文件的操
4、作功能;在 程序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。二、概要设计(1) 程序的模块组成及各个函数的功能: 程序的模块组成:主函数: main();输出数据函数:printf();读取数据函数:scanf();显示记录函数:Display();删除记录函数:shanchu();查找记录函数:chaxun();自定义清屏函数: system( “ cls ” );自定义输入函数: input();字符输入函数: getchar();修改数据函数:xiugai();保存数据函数:baocun();排序数据函数:paixu();各函数的主要功能: 输出数据函数:随时输
5、出数据; 读取数据函数:读取输入的数据信息; 显示菜单函数:显示可供选择的主菜单;显示记录函数:显示通讯录所有输入的信息;删除记录函数:显示要删除的通讯录所有输入的信息;查找记录函数:显示要查询的通讯录所有输入的信息;自定义清屏函数:清除前面运行留下的信息;自定义输入函数:输入通讯录的成员;字符输入函数:从终端输入一个字符,遇回车键返回;修改数据函数:修改通讯录的成员信息;保存数据函数:保存通讯录的成员信息;排序数据函数:排序通讯录的成员信息;(2) 程序中的抽象数据类型的定义: 用户的状态结构用户编号: 姓名: 电话;年龄;邮箱: 地址;(3)总体流程图根据上面的分析,可以将程序系统的设计分
6、为如下几个模块:插入、显示、删除、查询、修改、保存和退出通讯录管理系i i i插入显示删除查询修改保存退出三.详细设计(1).主菜单;主菜单一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。【程序】Person pe80;char c;dosystem("cls"); /int menu _select()清屏prin tf("ttt*n")窗口初始化prin tf("ttt*I *n"欢迎使用通讯录管理系统! *n");prin tf("ttt*prin tf("t
7、tt*1添加记录*n");prin tf("ttt*I 2. 显示记录 I *n");prin tf("ttt*1 3.删除记录1*n");prin tf("ttt*1 4.查询记录1*n");prin tf("ttt*1 5.修改记录1*n");prin tf("ttt*1 6.保存记录1*n");prin tf("ttt*1 7.排序记录1*n");prin tf("ttt*1 0.退出程序1*n");prin tf("ttt*n&
8、quot;);请您选择(0-7):");c=getchar();while(cv'0'|c>7');return(c-'O');(2)显示模块此模块为显示所有记录,流程图如下:选择显示功能示-void Disp lay (Person p er,i nt n)显示所有 冋主菜单Inti;printf("-n"); / 格式printf("编号t姓名t年龄t电话号码t通讯地址t电子邮箱n");printf("-n");for(i=1;i vn+1;i+)prin tf("
9、%-8d%-8s%-8s%-18s%-18s%-8sn", peri-1.score, peri-1. name ,p eri-1 .age ,p eri-1. nu m, peri-1.adds, peri-1.email);if(i>1 &&i %10=0) prin tf("tprin tf("t");system(" pause");n");prin tf("t printf(" -n");system(" pause");(3) 修改模块此模块
10、先调用查找函数查找到所要修改的信息,然后用户根据需要修改信息。流程图如下:void xiugai (Person p er,i nt n)char s20;int i=0;prin tf("t请输入想修改的记录中的名字:");scan f("%s",s);/输入修改人的名字while(strc mp(p eri. name,s)!=0&&iv n) i+;if(i=n)prin tf("t通讯录中没有此人!n");return;prin tf("t编号:");scan f("t%d&quo
11、t;,&p eri.score);printf("t 姓名:");scan f("t%s", peri. name);prin tf("t 年龄:");scan f("t%s", peri.age);printf("t电话号码:");scan f("t%s", peri. num);printf("t通讯住址:");scan f("t%s", peri.adds);printf("t电子邮箱:");scan
12、f("t%s", peri.email);prin tf("t修改成功");(4) 插入模块此模块为插入信息模块,插入后再调用保存函数来保存所插入的数据, 支持多条信息的 插入。流程图printf("t通讯住址:");scan f("t%s", pern+i.adds);int lnput(Person p er,i nt n) int i=0;char sig n, x10;while(sig n! - n'&&sig n!='N')prin tf("t 编号:&
13、quot;);scan f("t%d",&pern+i.score);prin tf("t 姓名:");scan f("t%s", pern+i. name);prin tf("t年龄:");scan f("t%s", pern+i.age);prin tf("t电话号码:");scan f("t%s", pern+i. num);prin tf("t电子邮箱:");scan f("t%s", pern+i.
14、email);gets(x);prin tf("nt是否继续添加?(Y/N)");printf("t请输入想删除记录中的名字:");scan f("%s",s);scan f("t%c",&sig n);i+; return( n+i);(5) 删除模块此种调用到Save函数。其流程图如下:int sha nchu (Person p er,i nt n)此模块先利用查找模块找到所要删除的信息, 然后根据用户的选择来确定是否删除信息,char s20;int i=0,j;while(strc mp(p er
15、i. name,s)!=0&&iv n) i+;if(i=n)printf("t通讯录中没有此人 !n");return(n);for(j=i;j<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");printf("tsca
16、nf("%d",&m);return(n-1);(6) 查询模块void chaxun(Person per,int n) int m;printf("tnprintf("tprintf("tprintf("tprintf("tprintf("t1n1- 姓名查询12-电话查询13- 地址查询14-返回111请选择查询方式 :n");rIIIILn");n");n");n");n");n");printf("请选择 :"
17、;);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);if(i=n)printf("t通讯录中没有此人 !n");return; printf("t此人编号 : %dn",peri.score); /printf
18、("t此人年龄 : %sn",peri.age);printf("t电话号码 : %sn",peri.num);printf("t通讯地址 : %sn",peri.adds);printf("t电子邮箱 : %sn",peri.email);while(strcmp(,s)!=0&&i<n) i+;输出查询结果if(m=2)char s20;int i=0;while(strcmp(peri.num,s)!=0&&i<n) i+;if(i=n)print
19、f("t请输入想查询的电话 :"); scanf("t%s",s);printf("t通讯录中没有此人 !n");return;printf("t此人编号 : %dn",peri.score); /输出查询结果printf("tprintf("t此人姓名 : %sn",); 此人年龄 : %sn",peri.age);printf("tprintf("t通讯地址 : %sn",peri.adds); 电子邮箱 : %sn&quo
20、t;,peri.email);if(m=3)char s20;int i=0;printf("t请输入想查询的地址 :");scanf("t%s",s);while(strcmp(peri.adds,s)!=0&&i<n)i+;if(i=n)printf("t通讯录中没有此人 !n");return;printf("tprintf("t此人编号 : %dn",peri.score); / 此人姓名 : %sn",);输出查询结果printf("t
21、printf("t此人年龄 : %sn",peri.age); 电话号码 : %sn",peri.num);printf("t电子邮箱 : %sn",peri.email);(7)排序模块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,perj
22、.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);printf(" 排序成功! n");五. 测试结果1
23、. 主菜单2. 显示所有信息3. 插入信息4 查找模块 第一步:第二步: 第三步: 第四步:5. 删除模块6. 修改模块 第一步 第二步六 . 课程心得总结刚开始学习 C 语言,总觉得很难理解,也很难学。在这之前,我们已经学习了一个 学期,对 C 语言有了一定的了解,但是也仅仅是停留在学习了解的范围,对里面的好多 东西还是很陌生,并不是很熟练,有着许多欠缺,更多的在运用起来的时候还是感到很 不好动手 。这次的程序设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。自己动手发现和解决问题。通过这,我发现了自己的许多不足,平时没有掌握好的知识 在这次实验中彻底暴露出来,经过不断思考,不断
24、查阅资料和上机运行解决其中大部分 问题。当然,还存在一些问题没有解决。我相信在以后的学习能够解决好它们。课堂上许多关于 C 语言的语法规则, 听起来十分枯燥无味, 也不容易记住, 死记硬 背是不可取的。然而要使用 C 语言这个工具解决实际问题,又必须掌握它。通过上机练 习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地 掌握 C 语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中会发现 原来理解的偏差,更加巩固了学过的知识,而且在设计的时候学要系统的知识,也是个较大的挑战,某一方面知识的欠缺都将影响到整个程序的设计。这次的大作业让我学到了很多有用的东西,
25、巩固了之前的学习, 通过这个程序的学习,使我进一步理解和运用结构化程序设计的思想和方法。相信对以后初步掌握开发一个小型实用系统的基本方法,学会调试一个比较长程序的基本方法,学会利用流程图 表示算法,进一步掌握和提高利用 C语言进行程序设计的能力。我认为, 这次实习对于我是非常有意义的, 对我个人的影响比较大,对我的动手能力有了很大的提高。通过这次课程设计,我对很多的函数有了新的认识,也学会了运 用多种函数。最后感谢完成大作业过程中帮助过我的老师和同学。源代码:#include<stdlib.h>#include<stdio.h>#include<string.h&
26、gt;typedef 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("ttt*欢迎使用通讯录管理系统 ! *n");printf("ttt*I *n")print
27、f("ttt* 1.printf("ttt*printf("ttt*printf("ttt*printf("ttt*printf("ttt*printf("ttt*printf("ttt*添加记录*n");2.显示记录1*n");3.删除记录1*n");4.查询记录1*n");5.修改记录1*n");6.保存记录1*n");7.排序记录1*n");0.退出程序丨*n");*n");printf("tt请您选择 (0-
28、7):");printf("ttt*printf(" 排序成功! n");c=getchar();while(c<'0'|c>'7');return(c-'0');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-
29、>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);int Input(Person per,int
30、 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年龄:");printf("tn");printf("t");printf("tn");sca
31、nf("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+
32、;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;i<n;i+) fscanf(fp,"%-5d%-8s%-6s%-13s%-15s%-15sn",peri-1.score,peri-1
33、.name,per i-1.age,peri-1.num,peri-1.adds,peri-1.email);printf("tt*fclose(fp);文件数据读入成功 !*n");void Display(Person per,int n) int i;printf("-n");/*格式*/printf("编号t姓名t年龄t电话号码t通讯地址t电子邮箱n");printf(" -n");for(i=1;i<n+1;i+) printf("%-8d%-8s%-8s%-18s%-18s%-8sn&q
34、uot;,peri-1.score,,peri-1 .age,peri-1.num,peri-1.adds,peri-1.email);if(i>1&&i%10=0)system("pause");printf(" -n");system("pause"); int shanchu(Person per,int n) char s20;int i=0,j;printf("t 请输入想删除记录中的名字 :");scanf("%s",s);while(st
35、rcmp(,s)!=0&&i<n) i+;if(i=n)printf("t 通讯录中没有此人 !n");return(n);for(j=i;j<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(
36、n-1);void chaxun(Person per,int n)int m;printf("tn请选择查询方式 :n");printf("t1-n n");printf("t11-姓名查询1n");printf("t12-电话查询1n");printf("t1 3-地址杳询1n");printf("t1 4-返回n");printf("t1n");请选择 :");printf("scanf("%d",&m
37、);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&&i<n) i+;if(i=n)printf("t通讯录中没有此人 !n");return;此人
38、编号 : %dn",peri.score); 此人年龄 : %sn",peri.age);printf("tprintf("t通讯地址 : %sn",peri.adds); 电子邮箱 : %sn",peri.email);printf("t 通讯录中没有此人 !n");if(m=2)char s20;int i=0;printf("t请输入想查询的电话 :"); scanf("t%s",s);while(strcmp(peri.num,s)!=0&&i<
39、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.adds);printf("t电子邮箱 : %sn",peri.email);if(m=3) char s20;int i=0;printf(&qu
40、ot;t请输入想查询的地址 :");scanf("t%s",s);while(strcmp(peri.adds,s)!=0&&i<n) i+;if(i=n)return;printf("t此人编号 : %dn",peri.score);printf("t此人姓名 : %sn",);printf("t此人年龄 : %sn",peri.age);printf("t电话号码 : %sn",peri.num);printf("t电子邮箱 : %
41、sn",peri.email);void xiugai(Person per,int n)char 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",);printf("t年龄 :");scanf("t%s",peri.age);printf("t 电话号码 :");scanf("t%s",peri.num);scanf("t%s",peri.adds);scanf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖南岳阳汨罗市第三人民医院面向社会招聘编外劳务派遣制专业技术人员7人备考题库附答案
- 2026福建厦门市湖里区国有资产投资集团有限公司招聘1人参考题库附答案
- 2026福建省标准化研究院下属国有企业第一批人员招聘5人备考题库附答案
- 2026福建省顺昌人力资源服务有限公司( 就业见习岗位)招聘1人参考题库附答案
- 2026西北工业大学材料学院辐射探测材料与器件团队招聘1人(陕西)参考题库附答案
- 公共交通车辆购置管理制度
- 三台县2025年县级事业单位面向县内乡镇公开选调工作人员(16人)参考题库附答案
- 丰城市2025年机关事业单位公开选调工作人员【48人】考试备考题库附答案
- 山东高速集团有限公司2025年下半年校园招聘(管培生和战略产业人才招聘)(60人) 考试备考题库附答案
- 招130人!海北州公安局2025年度面向社会公开招聘警务辅助人员(第二批)参考题库附答案
- 自动化工厂运维管理
- 《液压与气压传动》教案
- 《小米智能家居》课件
- 懂经营会管理
- 网球馆安全管理制度
- 会下金蛋的鹅课件
- GB/T 11880-2024模锻锤和大型机械锻压机用模块
- 2022年全国职业院校技能大赛赛项-ZZ-2022024 工业产品设计与创客实践赛项题目-模块2
- GB/T 43934-2024煤矿土地复垦与生态修复技术规范
- GB/T 13077-2024铝合金无缝气瓶定期检验与评定
- 水闸安全监测施工方案
评论
0/150
提交评论