c语言程序设计报告电子版耿万乐(第二版)_第1页
c语言程序设计报告电子版耿万乐(第二版)_第2页
c语言程序设计报告电子版耿万乐(第二版)_第3页
c语言程序设计报告电子版耿万乐(第二版)_第4页
c语言程序设计报告电子版耿万乐(第二版)_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、 新能源与动力工程学院课程设计报告 C语言程序设计课程设计 专业电气工程及其自动化 班级电气1401班 姓名耿万乐 学号201411209 指导教师邓伟华 2015年 7 月 - 5 -新能源与动力工程学院课程设计任务书课程名称: C语言程序设计课程设计 指导教师(签名): 邓伟华 班级: 电气1401班 姓名: 耿万乐 学号: 201411209 一、课程设计题目 通讯录管理系统二、课程设计使用的原始资料(数据)及设计技术要求:安装有visual C+6.0的windows操作系统的计算机。三、课程设计的目的利用数据结构来完成通讯录程序的设计,编写程序并调试各模块。学会从问题入手,分析研究数

2、据结构中数据表示和数据处理的特性。四、课程设计的主要内容和要求(包括原始数据、技术参数、设计要求、工作量要求等)本系统采用一个包含N个数据的结构提数据,每个数据结构应包括:编号、姓名、电话号码、地址。通讯录管理系统功能包括:录入通讯录信息、 显示通讯录信息、保存通讯录信息、删除通讯录信息、修改通讯录信息、查询通讯录信息和退出系统。执行一个具体的功能之后,程序将重新显示菜单。并将通讯录保存到文件中。对该系统有兴趣的话,可以在实现上述基本功能后,完善系统的其他功能。五、工作进度安排7月8日 布置任务,学生选题,查阅资料,基础技术准备,设计程序;7月9日 编写程序;7月10日 调试程序;7月11日

3、程序演示,撰写设计报告;7月12日 程序演示,撰写设计报告;7月13日 提交报告,评定成绩。六、主要参考文献1 谭浩强著.C语言程序设计(第二版).北京:清华大学出版社,2008.112 谭浩强著.C程序设计(第四版).北京:清华大学出版社,2010.06审核批准意见系主任(签字) 年 月 日 指导教师评语及成绩评定表指导教师评语成绩设计过程(40)设计报告(50)小组答辩(10)总成绩(100) 指导教师签字: 年 月 日目录第一章概述- 2 -1.1目的- 2 -1.2意义- 2 -1.3内容- 2 -第二章 功能需求分析- 3 -2.1主界面- 3 -2.2测试数据- 3 -第三章 系统

4、设计- 8 -3.1总体框架图:- 8 -3.2主函数- 8 -第四章 技术实现- 11 -第五章 总结- 14 -5.1依然存在的问题- 14 -5.2结论- 14 -参考文献- 16 -附录- 17 -第一章 概述课题:通讯录系统1.1目的(1)培养学生正确的设计思想,理论联系实际的工作作风,严肃认真、实事求是的科学态度和勇于探索的创新精神。(2)培养学生综合运用所学知识与生产实践经验,分析和解决工程技术问题的能力。1.2意义(1)通过课程设计实践,训练并提高学生在理论计算、结构设计、工程绘图、查阅设计资料、运用标准与规范和应用计算机等方面的能力。1.3内容自学C语言中相关知识,设计出通讯

5、录管理系统。要求如下所述:建立通讯录信息,信息至少包含编号、姓名、电话、通讯地址等;能够提供添加、删除和修改通讯录信息的功能;能够提供按姓名或电话等查询;将通讯录保存在文件中;能够按表格方式输出信息。掌握课程的基本理论和基本知识扎实,概念清楚,设计计算正确,结构设计合理,实验数据可靠,软件程序运行良好,绘图符合标准,说明书(论文)撰写规范,答辩中回答问题正确。第二章 功能需求分析2.1主界面 图表主界面 12.2测试数据如图表2选择4增加学生信息时,出现对话框,先输入增加的数量。再按要求依次输入图表2增加信息 输入两组数据,按6查询。如图表3 图表 3显示信息按3修改信息,如图表4,输入要修改

6、学生的编号 图表 4修改信息 然后选择要修改的选项,例如修改地址,如图表5 图表 5修改信息然后再按6查询,如图 图表 6显示修改后信息 图表 7删除信息再依据提示按6查询剩余的通讯录,如图8 图表 8显示删除后信息编号002的已经成功删除! 第三章 系统设计3.1总体框架图: 通讯录管理系统: 1、录入通讯录信息 2、修改通讯录信息 3、查询通讯录信息 4、浏览通讯录信息 5、增加通讯录信息 6、退出系通讯录统 3.2主函数主函数设计要求简洁,只提供部分提示语和函数的调用 3.2.1主函数流程图图3.1 主函数流程图3.2.2主函数void menu()/* 界面 */ int num;pr

7、intf("*系统功能菜单* n");printf(" - - n");printf(" * 1.刷新信息 * * 2.查询信息 * n");printf(" * 3.修改信息 * * 4.增加信息 * n");printf(" * 5.删除信息 * * 6.显示信息 * n");printf(" * 7.保存信息 * * 8.退出系统 * n");printf(" - - n");printf("请选择菜单编号:");scanf(&q

8、uot;%d",&num);switch(num) case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf("请在1-8之间选择n");第四章 技术实现模块一:头文件,变量定义,函数的声明 对系统所使用的变量进行定义,对函数进行声明。 模块二:主函数一个

9、程序主函数不能少。当以下的函数均编完之后,要实现各个功能操作的连接,还必须有主函数将它们联系起来,这样才能达到理想的结果。对以上函数的连接,此程序首先采用了while()结构,又嵌套了for(;)判断结构。 模块三:录入通讯录信息 声明函数void readfile(),说明一个文件指针FILE *fp 打开文件"student.txt" ;使通讯录人数实现动态通过录入信息获取通变化;信息录入与文件形成同步。 模块四:通讯录信息的查找 该函数调用了coad()、name()和tel()三个函数来实现不同方式的查找。具体使用什么方式查找需由用户自己选择,于是使用switch语

10、句先设计一个选择过程。当选择按名字查找方式,就启用name()函数查找,过程为先要求用户输入所要查找的数据名字,然后再将这个名字与以存数据名字逐个进行比较,当找到数据的时候就调用prt()函数将该数据的所有信息打印出来,否则显示“cannot find the name”以示没有找到。当选择按编号、电话号码查找方式的时候,则启用coad()、tel()函数进行查找,过程思路与name()函数相同。以上过程为一循环过程,再根据用户的选择决定是否继续循环操作。其中coad()、name()和tel()三个函数中嵌套了for(;)循环结构以及if()选择结构。查找函数通过输入姓名、电话号码和地址与原

11、通讯录中所储存的信息,两字符串的比较,找到与输入信息相同的位置。 模块五:通讯录信息的修改 并找出符合的,输入新信息并保存声明void modify()为学生信息修改函数,通过switch(item)设定所要修改的项目;将修改信息作为参数传入, 遍历完所有结构体模块六:插入通讯录信息 声明void insert()插入通讯录信息,先通过判断通讯录是否存在,若否则继续输入;若是跳出,重新循环。插入函数需要先输入插入信息,调用查找函数,找到插入位置,利用一个for循环,来实现一个信息的完整插入。 模块七:删除通讯录信息 声明void del()实现通讯录信息删除,通过学号对比确定要删除的信息,然后

12、用后一个替换掉。删除通讯录是用来按照编号来删除一些不想要的联系人姓名、电话号码、地址和编号,删除通讯录通过数组中该位置之后的数据存放位置向前移动一位来实现删除功能。 模块八:显示学生信息 使用该函数可以在屏幕上显示数据文件中已经存在的所有数据记录。该函数又调用了printf()函数嵌套了for(;)选择结构。该功能设计思路比较简单,只需先打开数据文件,读取其中的数据记录,然后将这些记录按一定的形式打印在屏幕上,为是打印的效果整齐、美观,则要对其输出的方式、格式进行设计。模块九:保存信息 该函数调用了printf()函数,使用了for(;)循环结构,通过定义指针变量fp 访问student. t

13、xt文件,设置该函数目的旨在保存输入数据。通过fp=fopen("student.txt","w");写入信息 。模块十:界面菜单 通过switch(num)调用以上各函数,实现功能。第五章 总结5.1依然存在的问题(1)第一次输入的数据到了第二次就不能够保存,可能是编写保存函数没有编到位(2)对于显示时不能每一次操作之后都换一个屏,使得众多的操作都集中在一个屏上,显得不美观。5.2结论 在信息修改部分中(void modify (link 1)),1、文件的保存函数原型:void save(ADDR*,char * )功 能:将当前链表中的记录保存到文

14、件中参 数:ADDR* 指向当前链表的头指针;char * 保存文件时所用的文件名及路径返回值:空2、心得体会 本次课程设计的题目为通讯录管理系统,要求将程序中所输入的联系人姓名、编号和电话号码这三个数据以文本方式保存在磁盘中,并且能够对所储存的联系人信息进行显示、查询、修改、删除、保存等功能。我编写的程序从整体上看可分为两个部分,一部分为文件的建立、读取和保存,另一部分为通讯录功能的实现。在文件部分,我通过readfile()函数和writefile()函数从而实现了对磁盘上数据的进行写和读,通过刚开始的界面提示可以知道文件是否建立,以免丢失数据,我还为用户设计了保存退出和不保存退出两大功能

15、供用户做选择。在模块功能实现部分,通过scanf从键盘上输入的数字放到switch() case 循环中来实现调用zengjia()、shanchu()、xiugai()、chazhao()等十五个函数来实现“添加”、“查询和显示”、“修改”、“删除”等不同功能。 此次的课程设计,要求我们进一步掌握利用C语言进行程序设计的能力;进一步理解和运用结构化程序设计的思想和方法;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;学会利用流程图表示算法。 根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。参考文献1 谭浩强著.C语言程序设计(第二版)

16、.北京:清华大学出版社,2008.11.2 谭浩强著.C程序设计(第四版).北京:清华大学出版社,2010.06.附录#include<stdio.h> #include<stdlib.h> #include<string.h> #define BUFLEN 100 #define LEN 15 #define N 100 struct record /*结构体*/char codeLEN+1; /* 编号 */char nameLEN+1; /* 姓名 */char add30; /* 家庭地址 */char telLEN+1; /* 电话号码 */stu

17、N;int k=1,n,m; /* 定义全局变量 */ void readfile();/* 函数声明 */void seek();void modify();void insert();void del();void display();void save();void menu(); int main() while(k)menu();system("pause");return 0; void readfile()/* 建立信息 */char *p="student.txt"FILE *fp;int i=0;if (fp=fopen("s

18、tudent.txt","r")=NULL) printf("Open file %s error! Strike any key to exit!",p);system("pause");exit(0);while(fscanf(fp,"%s %s %s %s",stui.code,,stui.add,stui.tel)=4)i+; i=i;fclose(fp);n=i;printf("录入完毕!n"); void seek() /*查找*/int i,item,f

19、lag;char s121; /* 以姓名和编号最长长度+1为准 */printf("-n");printf("-1.按编号查询-n");printf("-2.按姓名查询-n");printf("-3.按电话号查询-n");printf("-4.退出本菜单-n");printf("-n");while(1)printf("请选择子菜单编号:");scanf("%d",&item);flag=0;switch(item) case

20、 1:printf("请输入要查询的编号:n");scanf("%s",s1);for(i=0;i<n;i+)if(strcmp(stui.code,s1)=0)flag=1;printf("编号 姓名 电话 地址 n");printf("-n");printf("%6s %7s %8s %10s n",stui.code,,stui.add,stui.tel);if(flag=0)printf("该编号不存在!n"); break;case 2:pr

21、intf("请输入要查询的姓名:n");scanf("%s",s1);for(i=0;i<n;i+)if(strcmp(,s1)=0)flag=1;printf(" 编号 姓名 电话 地址 n");printf("-n");printf("%6s %7s %8s %10s n",stui.code,,stui.add,stui.tel);if(flag=0)printf("该姓名不存在!n"); break;case 3:printf

22、("请输入要查询的电话号:n");scanf("%s",s1);for(i=0;i<n;i+)if(strcmp(stui.tel,s1)=0)flag=1;printf(" 编号 姓名 电话 地址 n");printf("-n");printf("%6s %7s %8s %10s n",stui.code,,stui.add,stui.tel);if(flag=0)printf("该电话号不存在!n"); break;case 4:return;de

23、fault:printf("请在1-4之间选择n"); void modify() /*修改信息*/int i,item,num;char sex13,s1LEN+1,s2LEN+1; /* 以姓名和编号最长长度+1为准 */printf("请输入要要修改的编号:n");scanf("%s",s1);for(i=0;i<n;i+)if(strcmp(stui.code,s1)=0) /*比较字符串是否相等*/num=i;printf("-n");printf("1.修改姓名n");prin

24、tf("2.修改地址n");printf("3.修改电话号码n");printf("4.退出本菜单n");printf("-n");while(1)printf("请选择子菜单编号:");scanf("%d",&item);switch(item)case 1:printf("请输入新的姓名:n");scanf("%s",s2);strcpy(,s2); break;case 2:printf("

25、请输入新的地址:n");scanf("%s",s2);strcpy(stunum.add,s2); break;case 3:printf("请输入新的电话号码:n");scanf("%s",s2);strcpy(stunum.tel,s2); break;case 4:return;default:printf("请在1-4之间选择n"); void sort()/*按编号排序*/int i,j; char temp10;for(i=0;i<n-1;i+)for(j=n-1;j>i;j-)i

26、f(strcmp(stuj-1.code,stuj.code)>0)strcpy(temp,stuj-1.code);strcpy(stuj-1.code,stuj.code);strcpy(stuj.code,temp);strcpy(temp,);strcpy(,);strcpy(,temp);strcpy(temp,stuj-1.add);strcpy(stuj-1.add,stuj.add);strcpy(stuj.add,temp);strcpy(temp,stuj-1.tel);strcpy(st

27、uj-1.tel,stuj.tel);strcpy(stuj.tel,temp); void insert() /*插入函数*/ int i=n,j,flag;printf("请输入待增加的学生数:n");scanf("%d",&m);do flag=1;while(flag)flag=0;printf("请输入第 %d 个人的编号:n",i+1);scanf("%s",stui.code);for(j=0;j<i;j+)if(strcmp(stui.code,stuj.code)=0)printf(

28、"已有该编号,请检查后重新录入!n");flag=1;break; /*如有重复立即退出该层循环,提高判断速度*/printf("请输入第 %d 个人的姓名:n",i+1);scanf("%s",);printf("请输入第 %d 个人的地址:n",i+1);scanf("%s",stui.add);printf("请输入第 %d 个人的电话:n",i+1);scanf("%s",stui.tel);if(flag=0) i=i;i+;w

29、hile(i<n+m);n+=m;printf("录入完毕!nn");sort(); void del()int i,j,flag=0;char s1LEN+1;printf("请输入要删除的编号:n");scanf("%s",s1);for(i=0;i<n;i+)if(strcmp(stui.code,s1)=0) flag=1;for(j=i;j<n-1;j+)stuj=stuj+1;if(flag=0)printf("该编号不存在!n");if(flag=1)printf("删除成功,显示结果请选择菜单6n");

温馨提示

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

评论

0/150

提交评论