66实验室设备管理Word文件下载.docx
《66实验室设备管理Word文件下载.docx》由会员分享,可在线阅读,更多相关《66实验室设备管理Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
2.用户界面友好,功能明确,操作方便;
可以加以其它功能或修饰。
3.用户界面中的菜单至少应包括“设备信息录入”、“设备信息更改”、“设备信息删除”、“设备查找”、“维修记录”、“退出”6项。
4.代码应适当缩进,并给出必要的注释,以增强程序的可读性。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、说明书成绩
六、教师评语
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段5
四、课设总结12
五、参考文献13
六、源程序14
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,它们的功能分别是:
设备信息录入函数,设备信息更改函数,设备信息删除函数,设备信息查找函数,以及维修记录函数。
1、设备信息录入函数主要实现程序最初运行时对设备信息的录入以及其后的运行中设备信息的追加功能;
2、设备信息更改函数实现的功能是按照编号对设备的数据记录进行更改;
3、设备信息删除函数可以按照设备的编号对设备的存储信息进行删除;
4、设备信息查找函数允许按照编号对设备的各项信息进行查询;
5、维修记录函数可以实现对设备信息记录中除编号以外的信息进行修改;
每一台设备记录都包含编号、名称,以及型号、生产厂家、生产日期和是否维修过等信息,在程序当中,将设备记录类型定义为结构体类型,添加以及追加的设备信息直接写入D盘的product.txt文件中,其它函数每次对设备记录的访问,其数据来源都是product.txt文件,这样做不但可以保证设备数据的一致性,而且可以对设备数据进行永久保存,保证每次运行程序都可以采用原来的数据。
二、程序流程图
1、程序总体结构图
图1程序总体结构图
2、具体功能框图
(1)设备信息录入函数add
图2设备信息录入函数
(2)读取设备信息函数reads
图3读取设备信息函数
(3)删除设备记录函数del
图4删除设备记录函数
三、核心技术的实现说明及相应程序段
本程序主要由六个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。
在这些函数当中,设备信息录入数据函数、删除数据函数和更改函数是程序中较为核心的部分,下面分别进行说明。
1、添加设备数据函数
添加数据是在设备文件(product.txt)不存在的情况下,首先由程序创建一个新文件,并将录入的设备信息写入该文件当中。
具体的程序段如下:
voidadd()
{FILE*fp;
intn,i;
structproductpro;
if((fp=fopen("
d:
\\product.txt"
"
w"
))!
=NULL)/*新建设备储存文件并添加信息*/
{
printf("
请输入要添加设备的数量,按回车键确认:
"
);
scanf("
%d"
&
n);
for(i=1;
i<
=n;
i++)
{printf("
\n请输入第%d台设备的编号、名称,用空格分开,并按回车键确认:
\n"
i);
%s%s"
pro.number,pro.name);
\n请输入第%d台设备的型号、生产厂家,用空格分开,并按回车键确认:
pro.xinhao,pro.changjia);
\n请输入第%d台设备的购买日期、是否维修过(有写“Y”没有写“N”),用空格分开,并按回车键确认:
pro.date,pro.weixiu);
fprintf(fp,"
\n%5s%5s%5s%5s%5s%5s"
pro.number,pro.name,pro.xinhao,pro.changjia,pro.date,pro.weixiu);
/*设备信息写入文件*/
}
}
fclose(fp);
}
2、删除数据函数
该函数的核心内容是删除算法以及最终对源文件的更新。
该函数执行时,首先调用reads函数将文件中的设备信息读入数组当中,并由用户输入待删除设备的编号,而后按照该编号进行查找,如果文件中存在该设备的数据,则采用删除算法删除,否则输出设备信息不存在的提示信息。
对设备信息的具体删除算法是在结构体数组中实现的,当设备的信息被找到后,位于数组中该设备后面的设备记录依次向前移动一个元素的位置,这些操作完成后,要删除的设备信息就被后面的数组元素覆盖掉了,也就实现了删除。
在数组中删除设备信息后,还要将更改后的信息重新写回文件当中,以保证数据的一致性。
具体程序段如下:
voiddel()
{structproductpro[N];
charnumber1[20];
FILE*fp;
intn,i,j;
reads(pro,&
/*从文件中读出设备信息*/
\n请输入要删除信息的设备编号,按回车键确认:
getchar();
%s"
number1);
for(i=0;
n;
if(strcmp(number1,pro[i].number)==0)break;
if(i>
=n)
没有找到该设备的信息!
return;
else
{for(j=i+1;
j<
j++)
pro[j-1]=pro[j];
))==NULL)/*更新文件*/
{printf("
文件打开失败!
{
n-1;
fprintf(fp,"
pro[i].number,pro[i].name,pro[i].xinhao,pro[i].changjia,pro[i].date,pro[i].weixiu);
删除成功!
3、更改设备信息函数
该函数可以根据设备编号查找到所要更改的设备,并对它的除编号以外的所有信息进行更改,如果没有找到该设备的信息程序会显示没找到该设备。
voidchange()
{structproductpro[N],temp;
\n请输入要更改信息的设备编号,按回车键确认:
temp.number);
if(strcmp(temp.number,pro[i].number)==0)
break;
无此设备信息!
\n请输入更改后设备的名称、型号、生产厂家、购买日期、是否维修过(有写“Y”没有写“N”),按回车键确认:
%s%s%s%s%s"
temp.name,temp.xinhao,temp.changjia,temp.date,temp.weixiu);
pro[i]=temp;
打开文件失败!
修改设备信息成功!
\n\n"
四、课设总结
本次课程设计我的程序完成的很快,但大部分时间是用在了修改程序上。
其中的一个问题我花了有半天的时间来研究它,最终解决了的时候,我感觉有非常强的成就感,后来的问题也同样困扰了我很长时间,但都花了相应的时间解决了。
每解决一个问题都有说不出的兴奋。
通过本次课程设计,虽然我还不能熟练运用,但我从中确实学到了不少的东西。
以前都我们生活、学习、工厂生产、研究方面都起着非同寻常的作用,现在可以说是对这个作用的发挥有的更进一步的认识,再加上我作课程设计的过程中还找同学寻求帮助,这加强了同学之间的相互配合关系,即使没有达到最终成果,但也从中得到了启发,促成了下面顺利的完成。
本次课程设计还有一个重要的帮助就是我懂得了一个软件是怎样由程序设计完成的,我最近在学的一些软件有很多都有带有二次开发工能,也许我学到这部分时,今天的课程设计将有非常大的作用。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
/*24课程设计题目:
实验室设备管理系统(由王明阳完成)
课程设计内容:
课程设计要求:
3.用户界面中的菜单至少应包括"
设备信息录入"
、"
设备信息更改"
设备信息删除"
设备查找"
维修记录"
退出"
6项。
*/
#include<
stdio.h>
stdlib.h>
conio.h>
string.h>
#defineN100
structproduct
{charnumber[30];
/*编号*/
charname[20];
/*名称*/
charxinhao[10];
/*型号*/
charchangjia[10];
/*生产厂家*/
chardate[10];
/*购买日期*/
charweixiu[10];
/*是否维修过*/
};
voidmenu();
/*菜单*/
voidadd();
/*设备信息录入*/
voidchange();
/*设备信息更改*/
voiddel();
/*设备信息删除*/
voidsearch();
/*设备信息查找*/
voidremember();
/*维修记录*/
voidreads(structproductpro[N],int*n);
/************************以下是主函数******************************/
voidmain()
{intn;
while
(1)
menu();
\n请输入您要选择的操作序号,按回车键确认:
switch(n)
{case1:
add();
break;
case2:
change();
case3:
del();
case4:
search();
case5:
remember();
case6:
exit(0);
default:
输入错误,请输入列表中存在的序号!
\n"
/************************主函数结束以下是各函数段******************************/
/*零、菜单*/
voidmenu()
{printf("
##############################实验室设备管理系统##############################"
\n1设备信息录入"
\n2设备信息更改"
\n3设备信息删除"
\n4设备信息查找"
\n5维修记录"
\n6退出"
}
/*一、设备信息录入*/
/*二、设备信息更改*/
/*三、设备信息删除*/
/*四、设备信息查找*/
voidsearch()
inti,n;
\n请输入待查询的设备的编号,按回车键确认:
\n%5s%5s%5s%5s%5s%5s\n"
/*五、维修记录*/
voidremember()
if(pro[i].weixiu[0]=='
Y'
||pro[i].weixiu[0]=='
N'
)
{if(pro[i].weixiu[0]=='
\n%s维修过\n"
pro[i].number);
elseprintf("
\n%s没有维修过\n"
\n%s录入设备信息时维修记录填写错误或没有此设备信息!
!
/*文件*/
voidreads(structproductpro[N],int*n)
{
inti=0;
r"
))==NULL)
!
feof(fp);
fscanf(fp,"
%s%s%s%s%s%s"
*n=i;
}