1、1苏州市职业大学继续教育学院课 程 设 计 说 明 书名称 C 语言程序设计课程设计 2012 年 10 月 31 日至 2012 年 11 月 14 日共 2 周院 系 计算机工程系 班 级 10Z 计算机网络 学 号 09 姓 名 胡翌茜 系 主 任 李金祥 指 导 教 师 陆 公 正 2课程设计报告内容1. 选择题目 题目:实验设备管理系统2. 内容摘要摘要:实验室设备管理系统是典型的设备信息管理系统,要求能为学校实验室管理提供信息化动态化的管理,方便实验室设备管理工作,提高设备管理质量和使用效率。而且系统应符合设备管理的有关规定,包括新设备的申请、购买确认、新设备信息录入、旧设备维修和
2、报废及用户管理等。能满足日常工作的基本需要,并达到操作过程中的直观、方便、实用、安全等有关要求。实验室设备管理系统是一个典型的信息管理系统,采用面向对象的分析方法,给出系统的基本结构设计特色设计模型及实现途径,并且对系统的开发技术进行研究本系统是一个为适应对学校实验室设备管理的迫切需求而设计开发的软件系统。3. 索引关键词关键词:结构体、文件、数组、函数4.目录 目录 题目要求3 设计思想3-4 系统完成及功能43 界面设计4-5 核心算法及说明.5-11 结论11 考资料12 后记12 附录12-135. 正文包括课程设计的要求,设计思想,系统完成的功能,及界面设计,核心算法及说明,和结论几
3、部分,正文必须从页首开始。5.1 课程设计题目要求实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。主要功能:1、能够完成对设备的录入和修改2、对设备进行分类统计3、设备的破损耗费和遗损处理4、设备的查询要求:使用二进制文件方式存储数据,系统以菜单方式工作5.2 设计思想4第一,应该具有自动初始化的功能。实际网络中被管设备数量巨大,通常能达到百位量级,如果初始化时需要管理员手动输入所有被管设备的基本信息,这是一个相当枯燥漫长的过程,会大大降低系统的实用性。第二,在长时间的运行过程中,系统数据要与实际设备配置保持一致。实
4、际网络中变化是经常发生的,包括网络的拓扑、设备的配置等都会为了运行的需求而经常变化。那么,最好能让系统中的数据能自动更新,而不需要每次改变实际网络配置后,还需要管理员手动更新。第三,操作简单直观,不依赖于太多的专业知识。无论是信息的展示,还是可以进行的操作,希望都能以简单的页面元素来表达,管理员通过简单的点击、选择等操作就能完成大部分管理任务。5.3 系统完成功能及功能框图为弥补手工管理设备信息造成的资源共享困难、管理手续繁琐等问题,设备管理系统应能够满足设备信息共享的需求,方便快捷的得到所需要的信息,对实验室的帮助很大。系统功能如图所示,其主要功能包括:设备的录入和修改、对设备进行分类统计、
5、设备的破损耗费和遗损处理、设备的查询。5.4 界面设计系统功能设计设备的录入和修改 对设备进行分类统计 设备的破损耗费和遗损处理 设备的查询55. 5 核心算法:设备结构体struct shebeichar no10; /编号char kind10; /设备种类char name10; / 设备名称float price; /价格char time10; / 日期int bao; /是否报废char time110; /报废日期int po;/是否破损float price1;/破损花费char way10; /处理方式6;struct dataint count; / 当前设备数组中设备的个
6、数struct shebei sheMAX; / 设备数组 dd;将数据从结构体数组保存到文件中void save_data()FILE *fp;int i,k;k=dd.count;fp=fopen(“c:/dada.dat“,“wb“);fwrite(for(i=0;ik;i+)fwrite(fclose(fp);将数据从文件读到结构体数组中void read_data()FILE *fp;int i,k;struct shebei st;k=0;if(access(“c:/dada.dat“,0)=-1) / 如果文件不存在fp=fopen(“c:/dada.dat“,“wb“);fwr
7、ite(fclose(fp);fp=fopen(“c:/dada.dat“,“rb“);fread(dd.count=k;for(i=0;ik;i+)7fread(strcpy(dd.shei.name,st.name);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.w
8、ay,st.way);dd.shei.price1=st.price1;fclose(fp);按回车后回到主菜单void to_menu()char c1,c2;printf(“nnn 按回车键返回主菜单.“);scanf(“%c%c“,menu();查看所有设备信息void 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
9、.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); if(dd.shei.po=0)printf(“该设备破损花费:%.2ft“,dd.shei.price1);if(dd.shei.bao=0|dd.shei.po=0)printf(“该设备处理方式为: %sn“,dd.shei.8way); 输入设备记录void add_data()struct shebei st;int
10、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;idd.count;i+)if(strcmp(dd.shei.no,st.no)=0)j=1;printf(“输入的设备编号有重复,请重新输入!“);break;if(j=1)continue;if(j=0)k = dd.count;strcpy(dd.shek.name,st.name);strcpy(dd.sh
11、ek.no,st.no);strcpy(dd.shek.kind,st.kind);dd.shek.price=st.price;strcpy(dd.shek.time,st.time);dd.shek.bao=1;dd.shek.po=1;dd.count+;printf(“nn 继续添加设备信息1-yes 0-no:“);9scanf(“%d“,if(b=0) break;save_data();编辑设备报废与破损记录void edit_data()int i,k;char no10,time110,way10;int bao,po;float price1;printf(“n 请输入要编
12、辑设备的编号:“);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 没有找到该设备(编号-%s)!“,no);elseprintf(“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
13、(“%d“,dd.shek.bao=bao;if(bao=0)printf(“n 报废日期:“);10scanf(“%s“,time1);strcpy(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_
14、data();printf(“nn 编辑设备记录(编号-%s)成功!“,no);查询(编号)void query_data_no()int i,k;char no5;printf(“n 请输入要查询设备的编号:“);scanf(“%s“,no);k=-1;for(i=0;idd.count;i+)if(strcmp(dd.shei.no,no)=0)11k=i;printf(“编号t 种类t 名称t 价格t 购入日期t 报废状态(0-报废,1- 未报废)t破损状态(0-破损,1-未破损)“);printf(“n-n“);printf(“%st%st%st%.2ft%st%dt%dn“,dd.s
15、hei.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); 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);设
16、备分类统计void count_data()char 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.6 结论:能够清楚的实现本程序的功能。此程序设计让我很好的掌握了 C 语言的一些知识,但也反映了一些不足之处,而且本程序的功能不是很完善,随着以后的学习,我会更好的去探究更12完美的更实用的管理系统。6.后记通过“实验设备管理系统”设计,增加
17、了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从 C 语言这门课程开始,已发现程序设计的乐趣,在学习 C 语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。 在具体操作中对这学期所学的 C 语言的理论知识得到巩固,在实际操作中也发现了自己的不足之处,在以后的上机中应特别注意,同时也体会到了C 语言具有的语句简洁,使用灵活,执行效率高等的特点。通过实际操作,学会 C 语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。7.参考文献内容:C 程序设计(第三版) 谭浩强(著) 清华大学出版社 8.附录系统公共数据结构如下:#difine M 300 表示可录入设备的最大数量struct shebei 定义一个名为 shebei 的结构体,这个结构体定义了设备的基本信息char no 设备的编号char name 设备的名称char kind 设备的种类char time 购买日期char time1 报废日期char way 处理方式float price 设备的价格13float price1 破损花费int bao 是否报废 int po 是否破损