1、江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 0 -电气与信息工程学院2013 2014学年第 一 学期课程名称 C语言课程设计 设计题目 实验设备管理系统 姓 名 李海峰 学 号 12113234 专业班级 电子信息工程 指导教师 蒋 莲 2013 年 9 月 江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 1 -目 录1、设计任务书 .31.1 课程设计题目:实验设备管理系统 .31.2 课程设计要求: .31.3 课程设计目的: .31.4 课程设计原理: .41.5 课程程序涉及的知识点 .42、C 语言程序需求分析 52.1 技术
2、可行性 52.2 经济可行性 52.3 需求分析 52.4 内容摘要 63、功能设计 .63.1 应用程序功能详细说明 .73.1.1 添加记录 .73.1.2 修改记录 .73.1.3 显示记录 .93.1.4 统计分类 .93.1.5 查询记录 103.2 总体设计与模块的划分 113.3 建立实验设备信息结构体 123.4 系统功能模块与设计 .124、程序代码设计 134.1 设计目标 134.2 设计思想 134.3 系统完成功能及功能框图 144.4 程序运行主界面 144.5 核心算法: 144.5.1 输入设备记录 144.5.2 查看所有设备信息 .154.5.3 编辑设备报
3、废与破损记录 .164.5.4 按编号查询 .184.5.5 设备分类统计 .195、C 程序设计结论: .205.1 存在问题: 205.2 特点的体现: 205.3 学习总结: 206、后记 207、参考文献 218、附录 218.1 系统公共数据结构如下: 218.2 源程序: 21江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 2 -1、设计任务书1.1 课程设计题目:实验设备管理系统1.2 课程设计要求:实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等) ,设备名称,设备价格,设备购入日期,是否报废,报废日期等。主要功能:1、能够完成对设备
4、的录入和修改2、对设备进行分类统计3、设备的破损耗费和遗损处理4、设备的查询要求:使用二进制文件方式存储数据,系统以菜单方式工作1.3 课程设计目的:学校的规模不断扩大,实验室设备数量急剧增加,有关实验室设备的各个信息也成倍增加。面对庞大的信息量,需要有专门的实验室设备管理系统来提高工作的效率。本系统为实验室设备管理信息系统,通过这样的系统,可以做到信息的规范管理,快速查询实验室设备的就业信息。其开发主要包括数据库的建立和维护以及前端应用程序的开发两个方面。其次通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高,进一步培养学生热爱专业的思想,同时对本专业综合素质
5、的提高起一个积极的推动作用。江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 3 -1.4 课程设计原理:总体设计的基本目的就是回答“系统应该如何实现?”这个问题。因此总体设计又称为概要设计或初步设计。通过这个阶段的工作将划分出组成系统的物理元素程序、文件、数据库、人工过程和文档等等,但是每个物理元素仍然处于黑盒子级,这些黑盒子里的具体内容将在以后仔细设计。总体设计阶段的另一项重要任务是设计软件的结构,也就是要确定系统中每个程序是由哪些模块组成的,以及这些模块相互之间的关系。总体设计工程通常有两个主意阶段组成:系统设计,确定系统的具体实现方案;结构设计确实软件结构,也就
6、是要确定系统中每个程序拥有哪些模块组成的,以及这些模块之间的关系。在详细设计之前进行总体设计可以站在全局的高度上,花较少的成本,从中选出最佳方案和最合理的软件结构,从而用较低的成本开发出高质量的软件系统。1.5 课程程序涉及的知识点:1、函数的调用2、结构体类型3、For 循环语句4、数组的熟练运用5、结构体的灵活运用6、文件的打开和关闭7、字符串的比较和复制江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 4 -2、C语言程序需求分析2.1 技术可行性一个完备的实验室设备管理信息系统具有以下优越性:方便校领导查询实验室设备的使用情况,节省时间,可以提高系统的工作效率和
7、准确率。为了适应新形势的发展,我进行了这一系统的初步设计工作,也可以说是做一个初步的探索,希望它能够在查询实验室设备信息时发挥高效、便捷的作用,把系统管理员从繁重的工作中解脱出来!该实验室设备管理信息系统是以 ACCESS 数据库为后台核心应用、以服务为目的信息平台,对资源进行科学的加工整序和管理维护,为实验室设备信息提供管理。2.2 经济可行性 经济可行性主要依据是成本/效益分析,该系统的目标是以最低的成本,在最短的期限内开发出实验室设备管理信息系统。系统能减少很多不必要的资源,不用象以前那样用冗余的纸张式的管理。大大节省了学校能源。并且还提高了实验室设备信息管理的精确度。方便快速的操作,可
8、减少实验室设备信息管理的漏洞,又减少因工作的冗余出现的错误,并且操作非常简单,可减少许多不很必要的人员,这无论从物质上海是工作人员的工资上都为学校节约了开支。为学校增加了财富。江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 5 -目标系统开发需求比较低,加上具有成熟的软硬件环境,所以在软硬件的支出上比较低,在为使用者带来便利的同时,也问哦系统的进一步推广创造了条件。这带来的经济回报将远超过支出,并且最重要的是该软件的开发可以使我们对系统的开发有全面的认识。从经济角度考虑,此实验室设备管理信息系统开发可行。2.3 需求分析管理员可以对实验室设备信息进行查询及相关实验室设
9、备的使用情况查看。管理员可以根据本人用户名和密码登录系统。在信息系统中,后台数据库存储的地位相当重要,数据库的设计不但对数据的操作速度有影响,还直接关系到软件系统的质量和生存周期。本系统采用了 SQL 数据库 book,book 库中包括教师信息表、借用设备表、仪器表、用户登陆表。系统首先必须维护实验室中详细资料的数据表,程序能对该表进行写入和读出数据的操作,相应的,该表还有记录读者的借用情况,系统通过该表判断读者是否满意借用条件。系统还要管理员信息表,记录管理员的资料,检验管理员的登陆,管理员的权限等。实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备
10、添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号 设备种类 设备购入日期 正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 6 -单以实现功能选择。2.4 内容摘要:实验室设备管理系统是典型的设备信息管理系统,要求能为学校实验室管理提供信息化动态化的管理,方便实验室设备管理工作,提高设备管理质量和使用效率。而且系统应符合设备管理的有关规定,包括新设备的申请、购买确认、新设备信息录入、旧设备维修和报废及用户管理等。能满足日常工作的基本需要,并达到操
11、作过程中的直观、方便、实用、安全等有关要求。实验室设备管理系统是一个典型的信息管理系统,采用面向对象的分析方法,给出系统的基本结构设计特色设计模型及实现途径,并且对系统的开发技术进行研究本系统是一个为适应对学校实验室设备管理的迫切需求而设计开发的软件系统。3、功能设计3.1 应用程序功能详细说明程序运行后进入管理系统,显示目录:添加记录、修改记录、显示记录、分类统计、查询记录。3.1.1 添加记录 系统提示用户在原有的基础上录入新的设备信息。流程图如下: 江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 7 -开始输入 ID 号,并将指针指向最末尾依次输入设备机构体内容
12、,完成一条添加记录提示一完成一条记录添加结束3.1.2 修改记录 系统要求用户输入要修改的设备 ID 号,这时系统会显示设备的具体信息,用户只需该设备新的信息按要求输入即可对信息进行修改。流程图如下:江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 8 -开始判断是否有资料可以统计分类没有资料可以统计 跳出输入要统计的分类序号按输入序号调用各功能模块函数结束3.1.3 显示记录 无记录退出,有记录者按要求输出。流程图如下:开始没有记录可以显示,跳出有记录者按要求输出结束江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 9 -3.1.4 统计分类
13、若有资料可以统计,则按要求分类统计输出。流程图如下:开始判断是否有资料可以统计分类没有资料可以统计 跳出输入要统计的分类序号按输入序号调用各功能模块函数结束江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 10 -3.1.5 查询记录 若信息为空,则不能查询。流程图如下:开始判断是否有资料为空资料为空 跳出输入要查询的分类序号按输入序号调用各功能模块函数结束3.2 总体设计与模块的划分 整个系统可设计为实验设备信息输入模块 实验设备信息添加模块 实验设备信息修改模块 实验设备分类统计模块和实验设备查询模块。 江苏理工学院 C 语言课程设计12 电子一班 12311126
14、 李威 - 11 -实验设备信息输入模块实验设备信息添加模块实验设备信息修改模块实验设备分内统计模块实验设备查询模块功能选择实 验 设 备 管 理 系 统 设 计主函数流程图:I+3.3 建立实验设备信息结构体开始显示一系列功能选择输入 i,判断 1,是否 0 到 6据 i 值调用各功能模块函数结束江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 12 -结构体成员包括设备编号 设备种类 设备名称 设备价格 设备购入日期 是否报废 报废日期。3.4 系统功能模块与设计模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体
15、,可以完成指定的功能满足用户的需求。采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。因为程序错误常局限在有关的模块及它们之间的接口中,所以模块化使软件容易测试和调试,因而有助于提高软件的可靠性。一个好的电子系统要有一些必要的模块组成,若缺少了某些模块那么这个系统就会有缺陷。4、程序代码设计4.1 设计目标通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。4.2 设计思想第一,应该具有自动初始化的功能。实际网络中被管设备数量巨大,通常能达到百位量级,如果初始化时需要管理
16、员手动输入所江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 13 -有被管设备的基本信息,这是一个相当枯燥漫长的过程,会大大降低系统的实用性。第二,在长时间的运行过程中,系统数据要与实际设备配置保持一致。实际网络中变化是经常发生的,包括网络的拓扑、设备的配置等都会为了运行的需求而经常变化。那么,最好能让系统中的数据能自动更新,而不需要每次改变实际网络配置后,还需要管理员手动更新。第三,操作简单直观,不依赖于太多的专业知识。无论是信息的展示,还是可以进行的操作,希望都能以简单的页面元素来表达,管理员通过简单的点击、选择等操作就能完成大部分管理任务。4.3 系统完成功能及
17、功能框图为弥补手工管理设备信息造成的资源共享困难、管理手续繁琐等问题,设备管理系统应能够满足设备信息共享的需求,方便快捷的得到所需要的信息,对实验室的帮助很大。系统功能如图所示,其主要功能包括:设备的录入和修改、对设备进行分类统计、设备的破损耗费和遗损处理、设备的查询。江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 14 -4.4 程序运行主界面4.5 核心算法:4.5.1输入设备记录void add_data()struct shebei st;int b;int i,j,k;while(1) j=0;printf(“nn继续添加设备信息1-yes 0-no:“);
18、scanf(“%d“,if(b=0) break;save_data();4.5.2 查看所有设备信息void view_data()int i;printf(“编号t种类t名称t价格t购入日期t报废状态(0-报废,1- 未报废)t破损状态(0-破损,1- 未破损)“);printf(“n-n“);江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 15 -for(i=0;idd.count;i+) printf(“%st%st%st%.2ft%st%dt%dn“,dd.shei.no,dd.shei.kind,dd.shei.name,dd.shei.price,dd.
19、shei.time,dd.shei.bao,dd.shei.po);if(dd.shei.bao=0)printf(“该设备报废日期:%st“,dd.shei.time1); if(dd.shei.po=0)printf(“该设备破损花费:%.2ft“,dd.shei.price1);if(dd.shei.bao=0|dd.shei.po=0)printf(“该设备处理方式为 :%sn“,dd.shei.way); 4.5.3 编辑设备报废与破损记录void edit_data() printf(“n名称:%s,编号:%s,种类:%s,价格:%.2f,购入日期:%s“,dd.shek.name
20、,dd.shek.no,dd.shek.kind,dd.shek.price,dd.shek.time);printf(“n破损耗费:“);scanf(“%f“,dd.shek.price1=price1;4.5.4 按编号查询void query_data_no()int i,k;char no5;printf(“n请输入要查询设备的编号:“);scanf(“%s“,no);k=-1;printf(“nn没有找到该设备(编号-%s)!“,no);江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 16 -4.5.5 设备分类统计void count_data()char
21、 kind10;int i,s=0;printf(“请输入要查询的设备种类: “);scanf(“%s“,kind);for(i=0;idd.count;i+)if(strcmp(dd.shei.kind,kind)=0)s+;printf(“统计结果:%s种类的设备有%d 件。“,kind,s);5、C程序设计结论: 5.1 存在问题:本程序的功能不是很完善,只能完成最基础的设备的录入和修改,不能输入过多设备的存储和查询,只能分类统计出相应类型的数量,不能详细分类统计。5.2 特点的体现:本C语言程序主要使用二进制文件方式存储数据,系统以菜单方式工作,再结合函数、数组等基本程序设计编写而成。
22、可以完成最基础的设备的录入和修改,对设备进行分类统计,设备的破损耗费和遗损处理,以及按照设备类型和设备编号的查询。能够基本满足管理设备工作人员的需求。江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 17 -5.3 学习总结:此程序设计让我很好的掌握了C语言的一些知识,但也反映了一些不足之处,而且本程序的功能不是很完善,随着以后的学习,我会更好的去探究更完美的更实用的管理系统。6、后记通过“实验设备管理系统” 设计,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础
23、知识,对计算机的机体也有了一个大体的了解。 在具体操作中对这学期所学的C语言的理论知识得到巩固,在实际操作中也发现了自己的不足之处,在以后的上机中应特别注意,同时也体会到了C语言具有的语句简洁,使用灵活,执行效率高等的特点。通过实际操作,学会 C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。7、参考文献【1】.C程序设计(第四版),谭浩强著【2】.C程序设计(第四版)学习辅导谭浩强编著江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 18 -8、附录8.1 系统公共数据结构如下:#difine M 300 表示可录入设备的最
24、大数量struct shebei 定义一个名为shebei的结构体,这个结构体定义了设备的基本信息char no 设备的编号char name 设备的名称char kind 设备的种类char time 购买日期char time1 报废日期char way 处理方式float price 设备的价格float price1 破损花费int bao 是否报废 int po 是否破损8.2 源程序:#include “stdio.h“#include “string.h“#define MAX 20struct shebeichar no10; /编号char kind10; /设备种类char
25、 name10; / 设备名称float price; /价格char time10; / 日期江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 19 -int bao; /是否报废char time110; /报废日期int po; /是否破损float price1; /破损花费char way10; /处理方式she;struct dataint count; / 当前设备数组中设备的个数struct shebei sheMAX; / 设备数组 dd;void save_data()FILE *fp;int i;if(fp=fopen(“d:dada.dat“,“
26、wb“)=NULL)printf(“ncannot open filen“);return;for(i=0;idd.count;i+)if(fwrite(fclose(fp);void read_data()FILE *fp;int i,k;struct shebei st;k=0;if(access(“d:dada.dat“,0)=-1) / 如果文件不存在fp=fopen(“d:dada.dat“,“wb“);fwrite(fclose(fp);fp=fopen(“d:dada.dat“,“rb“);fread(dd.count=k;for(i=0;ik;i+)fread(strcpy(d
27、d.shei.name,st.name);江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 20 -strcpy(dd.shei.no,st.no);strcpy(dd.shei.kind,st.kind);dd.shei.price=st.price;strcpy(dd.shei.time,st.time);dd.shei.bao=st.bao;dd.shei.po=st.po;strcpy(dd.shei.time1,st.time1);strcpy(dd.shei.way,st.way);dd.shei.price1=st.price1;fclose(fp);vo
28、id view_data()int i;printf(“编号t 种类t 名称t 价格t 购入日期t 报废状态(0-报废,1- 未报废)t 破损状态(0-破损,1- 未破损)“);printf(“n-n“);for(i=0;idd.count;i+) printf(“%st%st%st%.2ft%st%dt%dn“,dd.shei.no,dd.shei.kind,dd.shei.name,dd.shei.price,dd.shei.time,dd.shei.bao,dd.shei.po);if(dd.shei.bao=0)printf(“该设备报废日期:%st“,dd.shei.time1);
29、if(dd.shei.po=0)printf(“该设备破损花费:%.2ft“,dd.shei.price1);if(dd.shei.bao=0|dd.shei.po=0)printf(“该设备处理方式为: %sn“,dd.shei.way); void add_data()struct shebei st;int b;int i,j,k;while(1) j=0;printf(“n 请输入设备信息:n“);printf(“编号t 种类t 名称t 价格t 购入日期t“);printf(“n-n“);scanf(“%s%s%s%f%s“,st.no,st.kind,st.name,for(i=0;
30、idd.count;i+)if(strcmp(dd.shei.no,st.no)=0)j=1;江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 21 -printf(“输入的设备编号有重复,请重新输入!“);break;if(j=1)continue;if(j=0)k = dd.count;strcpy(dd.shek.name,st.name);strcpy(dd.shek.no,st.no);strcpy(dd.shek.kind,st.kind);dd.shek.price=st.price;strcpy(dd.shek.time,st.time);dd.shek
31、.bao=1;dd.shek.po=1;dd.count+;printf(“nn 继续添加设备信息1-yes 0-no:“);scanf(“%d“,if(b=0) break;save_data();void edit_data()int i,k;char no10,time110,way10;int bao,po;float price1;printf(“n 请输入要编辑设备的编号:“);scanf(“%s“,no);k=-1;for(i=0;idd.count;i+)if(strcmp(dd.shei.no,no)=0)k=i;break;if(k=-1)printf(“nn 没有找到该设
32、备(编号-%s)!“,no);else江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 22 -printf(“n 名称:%s,编号:%s,种类:%s,价格:%.2f,购入日期:%s“,dd.shek.name,dd.shek.no,dd.shek.kind,dd.shek.price,dd.shek.time);printf(“n 设备报废与否记录:“);printf(“n 设备状态(0-报废,1- 未报废):“);scanf(“%d“,dd.shek.bao=bao;if(bao=0)printf(“n 报废日期:“);scanf(“%s“,time1);strcp
33、y(dd.shek.time1,time1);if(bao=1)printf(“n 设备破损状态:(0-破损,1-未破损) “);scanf(“%d“,dd.shek.po=po;if(po=0)printf(“n 破损耗费:“);scanf(“%f“,dd.shek.price1=price1;if(bao=0|po=0)printf(“n 处理方式:“);scanf(“%s“,way);strcpy(dd.shek.way,way);save_data();printf(“nn 编辑设备记录(编号-%s)成功!“,no);void query_data_no()int i,k;char n
34、o5;printf(“n 请输入要查询设备的编号:“);scanf(“%s“,no);k=-1;for(i=0;idd.count;i+)江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 23 -if(strcmp(dd.shei.no,no)=0)k=i;printf(“编号t 种类t 名称t 价格t 购入日期t 报废状态(0-报废,1- 未报废)t 破损状态(0-破损,1-未破损)“);printf(“n-n“);printf(“%st%st%st%.2ft%st%dt%dn“,dd.shei.no,dd.shei.kind,dd.shei.name,dd.shei
35、.price,dd.shei.time,dd.shei.bao,dd.shei.po);if(dd.shei.bao=0)printf(“该设备报废日期:%st“,dd.shei.time1); if(dd.shei.po=0)printf(“该设备破损花费:%.2ft“,dd.shei.price1);if(dd.shei.bao=0|dd.shei.po=0)printf(“该设备处理方式为: %sn“,dd.shei.way);if(k=-1)printf(“nn 没有找到该设备(编号-%s)!“,no);void count_data()char kind10;int i,s=0;pr
36、intf(“请输入要查询的设备种类: “);scanf(“%s“,kind);for(i=0;idd.count;i+)if(strcmp(dd.shei.kind,kind)=0)s+;printf(“统计结果:%s 种类的设备有%d 件。“,kind,s);int main()int i;int count=0;doprintf(“n“);printf(“1-录入(add_data)n“);printf(“2-查看(view_data)n“);printf(“3-编辑报损(edit_data)n“);printf(“4-查询(query_data_no)n“);printf(“5-分类统计
37、(count_data)n“);printf(“6-退出(Exit)n“);scanf(“%d“,switch(i)江苏理工学院 C 语言课程设计12 电子一班 12311126 李威 - 24 -case 1:add_data();continue;case 2:view_data();continue;case 3:edit_data();continue;case 4:query_data_no();continue;case 5:count_data();continue;case 6:break;default:printf(“错误选择!请重选“);continue;while(i!=6);return 0;