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