实验设备管理系统.docx
《实验设备管理系统.docx》由会员分享,可在线阅读,更多相关《实验设备管理系统.docx(27页珍藏版)》请在冰豆网上搜索。
实验设备管理系统
一.题目要求
实验设备信息包括:
设备编号,设备种类(如:
微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期等。
试设计一实验设备信息管理系统,使之能提供以下功能:
(1)能够完成对设备的录入和修改
(2)对设备进行分类统计
(3)设备的查询
二.需求分析
实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备的插叙需要提供查找操作,设备的查询可根据设备编号、设备种类、设备名称、设备购入日期、正常设备(未报废的)等多种方式查询;另外还要提供键盘式选择菜单以实现功能选择。
三.总体设计
根据上面的需求分析,可以将这个系统的设计分为以下模块
四.详细设计
1.主函数
[流程图]
[程序]
main()/*********************主函数***********************************/
{
intn,w,t;
for(t=0;t<1;t++)
{
do
{
puts("\t\t*******MENU*******\n\n");
puts("\t\t1.Enternewdata");
puts("\t\t2.Additiondata");
puts("\t\t3.Modifydata");
puts("\t\t4.Statist");
puts("\t\t5.Search");
puts("\t\t6.Exit");
puts("\n\n\t\t*****************\n");
printf("Whatdoyouwanttodo(1-6):
");
scanf("%d",&n);
if(n<1||n>6)/*对选择的数字作出判断*/
{w=1;
getchar();
}
elsew=0;
}
while(w==1);
switch(n)
{case1:
t=enter();break;/*输入模块*/
case2:
t=enter();break;/*追加模块*/
case3:
t=modifty();break;/*修改模块*/
case4:
t=total();break;/*统计模块*/
case5:
t=search();break;/*搜索模块*/
case6:
exit(0);/*退出*/
}
}
2.各功能模块设计
(1)输入模块
[流程图]
[程序]
/*********************输入模块*****************************/
intenter()/*输入模块*/
{
FILE*fp;
EQnewequ;
inti,j;
intc;
printf("**************************************\n");
printf("Addnewequiment\n");
printf("**************************************\n");
printf("Howmanyequimentsdoyouwanttoadd?
\n");
scanf("%d",&i);/*输入要输入的设备个数*/
for(j=0;j
{
printf("------------------\n");
printf("Inputequipcode\n");
scanf("%s",newequ.equipCode);
printf("Inputequiptype\n");
scanf("%s",newequ.equipType);
printf("Inputequipname\n");
scanf("%s",newequ.equipName);
printf("InputequipPrice\n");
scanf("%f",&newequ.equipPrice);
printf("InputbuyYear\n");
scanf("%d",&newequ.buyYear);
printf("InputbuyMonth\n");
scanf("%d",&newequ.buyMonth);
printf("InputbuyDay\n");
scanf("%d",&newequ.buyDay);
printf("Inputscrap\n");
scanf("%d",&newequ.scrap);
printf("InputscrapYear\n");
scanf("%d",&newequ.scrapYear);
printf("InputscrapMonth\n");
scanf("%d",&newequ.scrapMonth);
printf("InputscrapDay\n");
scanf("%d",&newequ.scrapDay);
if((fp=fopen("test.txt","w"))==NULL)/*打开文件,输入保存*/
{printf("Cannotopenfile!
\n");
}
fprintf(fp,"%s%s%s%f%d%d%d%d%d%d%d",newequ.equipCode,newequ.equipType,newequ.equipName,newequ.equipPrice,newequ.buyYear,newequ.buyMonth,newequ.buyDay,newequ.scrap,newequ.scrapYear,newequ.scrapMonth,newequ.scrapDay);
fclose(fp);
printf("\n-----------------------\n");
printf("Returntomainmenu?
\n");
printf("1.YES\n");
printf("2.NO,Iwanttoquitnow\n");
scanf("%d",&c);
if(c==1)return(-1);
if(c==2)return(0);/*任务结束选择是返回主菜单还是跳出*/
}
}
(4)修改模块
[需求分析]
此模块可以根据客户需要对以记录在文件中的信息进行修改
[流程图]
[程序]
/*******************************修改模块*********************/
intmodifty()/*修改模块*/
{
EQequ[50];
charcode[10];
inti,j,c;
FILE*fp;
printf("*************************************\n");
printf("Modiftyfortheequiment\n");
printf("*************************************\n");
printf("Pleaseinputtheequipcodeformodiftying\n");
scanf("%s",code);/*输入要修改的设备编号*/
printf("------------------------------------\n");
if((fp=fopen("test.txt","r"))==NULL)
{
printf("\nCannotopentest!
\n");
}
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%s%s%s%f%d%d%d%d%d%d%d",equ[i].equipCode,equ[i].equipType,equ[i].equipName,&equ[i].equipPrice,&equ[i].buyYear,&equ[i].buyMonth,&equ[i].buyDay,&equ[i].scrap,&equ[i].scrapYear,&equ[i].scrapMonth,&equ[i].scrapDay);
if(strcmp(equ[i].equipCode,code)==0)
{
printf("------------------\n");
printf("Inputnewequipcode\n");
scanf("%s",equ[i].equipCode);
printf("Inputnewequiptype\n");
scanf("%s",equ[i].equipType);
printf("Inputnewequipname\n");
scanf("%s",equ[i].equipName);
printf("InputequipPrice\n");
scanf("%f",&equ[i].equipPrice);
printf("InputnewbuyYear\n");
scanf("%d",&equ[i].buyYear);
printf("InputnewbuyMonth\n");
scanf("%d",&equ[i].buyMonth);
printf("InputnewbuyDay\n");
scanf("%d",&equ[i].buyDay);
printf("Inputnewscrap\n");
scanf("%d",&equ[i].scrap);
printf("InputnewscrapYear\n");
scanf("%d",&equ[i].scrapYear);
printf("InputnewscrapMonth\n");
scanf("%d",&equ[i].scrapMonth);
printf("InputnewscrapDay\n");
scanf("%d",&equ[i].scrapDay);
}
}/*将修改后的信息写如文件中*/
fclose(fp);
j=i;
if((fp=fopen("test.txt","w"))==NULL)
{
printf("\nCannotopentest!
\n");
}
for(i=0;i{
printf("\nwrite!
\n");
fprintf(fp,"%s%s%s%f%d%d%d%d%d%d%d",equ[i].equipCode,equ[i].equipType,equ[i].equipName,equ[i].equipPrice,equ[i].buyYear,equ[i].buyMonth,equ[i].buyDay,equ[i].scrap,equ[i].scrapYear,equ[i].scrapMonth,equ[i].scrapDay);
}
fclose(fp);
printf("\n-----------------------\n");
printf("Returntomainmenu?
\n");
printf("1.YES\n");
printf("2.NO,Iwanttoquitnow\n");
scanf("%d",&c);
if(c==1)return(-1);
if(c==2)return(0);
}
(4)统计模块
[需求分析]
将已经输入的设备信息进行统计,并显示设备总数、价格总额等信息
[流程图]
[程序]
inttotal()
{
intc;
floatsum=0;
intcount=0;
floataver=0;
chartype[20];
EQequ;
inti;
FILE*fp;
if((fp=fopen("test.txt","r"))==NULL)
{
printf("\nWrong\n");
}
printf("pleaseinputequipType:
\n");
scanf("%s",type);
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%s%s%s%f%d%d%d%d%d%d%d",equ.equipCode,equ.equipType,equ.equipName,&equ.equipPrice,&equ.buyYear,&equ.buyMonth,&equ.buyDay,&equ.scrap,&equ.scrapYear,&equ.scrapMonth,&equ.scrapDay);
printf("\nOK!
\n");
printf("%s,%s,%s,%f,%d,%d,%d,%d,%d,%d,%d\n",equ.equipCode,equ.equipType,equ.equipName,equ.equipPrice,equ.buyYear,equ.buyMonth,equ.buyDay,equ.scrap,equ.scrapYear,equ.scrapMonth,equ.scrapDay);
if(strcmp(equ.equipType,type)==0)
{
count++;
sum+=equ.equipPrice;
aver=sum/count;
}
}
fclose(fp);
printf("----------Statist--Result-----------");
printf("\n\nthenumberofthistypeis:
%d",count);
printf("\n\nthetotalsumofpriceis:
%f",sum);
printf("\n\ntheaveroftotalpriceis:
%f",aver);
printf("\nPressanykeytoexit......");
getch();
printf("\n-----------------------\n");
printf("Returntomainmenu?
\n");
printf("1.YES\n");
printf("2.NO,Iwanttoquitnow\n");
scanf("%d",&c);
if(c==1)return(-1);
if(c==2)return(0);
}
(5)搜索模块
[需求分析]
该模块的功能是查找用户需要的对应记录,可以分别根据设备编号、设备种类、设备名称、设备购入日期、正常设备(未报废的)等多种方式查询。
[流程图]
y
[程序]
/***********************************搜索模块******************************/
intsearch()/*搜索模块*/
{
charcode[10];
charname[20];
floatprice;
intchoice;
intc;
FILE*fp;
EQequ;
inti;
fp=fopen("test.txt","r");
if(fp==NULL)exit(0);
printf("pleasechoosethewayofsearch:
\n\n");
printf("1.searchbyequipCode\n\n");
printf("2.searchbyequipName\n\n");
printf("3.searchbyequipPrice\n\n");
printf("0.return\n\n");
printf("pleaseinputnumber0-5:
");
scanf("%d",&choice);
if(choice==0)exit(0);
switch(choice)
{
case0:
exit(0);break;
case1:
printf("pleaseinputequipCode:
\n");
scanf("%s",code);
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%s%s%s%f%d%d%d%d%d%d%d",equ.equipCode,equ.equipType,equ.equipName,&equ.equipPrice,&equ.buyYear,&equ.buyMonth,&equ.buyDay,&equ.scrap,&equ.scrapYear,&equ.scrapMonth,&equ.scrapDay);
if(strcmp(equ.equipCode,code)==0)
{
printf("\nequipCode,equipType,equipName,equipPrice,buyYear,buyMonth,buyDay,scrap,scrapYear,scrapMonth,ScrapDay\n");
printf("\n%s,%s,%s,%f,%d,%d,%d,%d,%d,%d,%d\n",equ.equipCode,equ.equipType,equ.equipName,equ.equipPrice,equ.buyYear,equ.buyMonth,equ.buyDay,equ.scrap,equ.scrapYear,equ.scrapMonth,equ.scrapDay);
}
}
getch();
break;
case2:
printf("pleaseinputequipName:
\n");
scanf("%s",name);
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%s%s%s%f%d%d%d%d%d%d%d",equ.equipCode,equ.equipType,equ.equipName,&equ.equipPrice,&equ.buyYear,&equ.buyMonth,&equ.buyDay,&equ.scrap,&equ.scrapYear,&equ.scrapMonth,&equ.scrapDay);
if(strcmp(equ.equipName,code)==0)
{
printf("\nequipCode,equipType,equipName,equipPrice,buyYear,buyMonth,buyDay,scrap,scrapYear,scrapMonth,ScrapDay\n");
printf("\n%s,%s,%s,%f,%d,%d,%d,%d,%d,%d,%d\n",equ.equipCode,equ.equipType,equ.equipName,equ.equipPrice,equ.buyYear,equ.buyMonth,equ.buyDay,equ.scrap,equ.scrapYear,equ.scrapMonth,equ.scrapDay);
}
}
getch();
break;
case3:
printf("pleaseinputequipPrice:
\n");
scanf("%d",&price);
for(i=0;!
feof(fp);i++)
{
fscanf(fp,"%s%s%s%f%d%d%d%d%d%d%d",equ.equipCode,equ.equipType,equ.equipName,&equ.equipPrice,&equ.buyYear,&equ.buyMonth,&equ.buyDay,&equ.scrap,&equ.scrapYear,&equ.scrapMonth,&equ.scrapDay);
if(equ.equipPrice==price)
{
printf("\nequipCode,equipType,equipName,equipPrice,buyYear,buyMonth,buyDay,scrap,scrapYear,scrapMonth,ScrapDay\n");
printf("\n%s,%s,%s,%f,%d,%d,%d,%d,%d,%d,%d\n",equ.equipCode,equ.equipType,equ.equipName,equ.equipPrice,equ.buyYear,equ.buyMonth,equ.buyDay,equ.scrap,equ.scrapYear,equ.scrapMonth,equ.scrapDay);
}
}
getch();
break;
}
fclose(fp);
printf("\n-----------------------\n");
printf("Returntomainmenu?
\n");
printf("1.YES\n");
printf("2.NO,Iwanttoquitnow\n");
scanf("%d",&c);
if(c==1)return(-1);
if(c==2)return(0);
}
五.完整程序
#include
#include
typedefstructepuipmentInfo
{charequipCode[10];
charequipType[20];
charequipName[20];
floatequipPrice;
intbuyYear;
intbuyMonth;
intbuyDay;
intscrap;
intscrapYear;
intscrapMonth;
intscrapDay;
}EQ;
intenter()
{
FILE*fp;
EQnewequ;
inti,j;
intc;
printf("**************************************\n");
printf("Addnewequiment\n");
printf("**************************************\n");
printf("Howmanyequimentsdoyouwanttoadd?
\n");
scanf("%d",&i);
for(j=0;j
{
printf("------------------\n");
printf("Inputequipcode\n");
scanf("%s",newequ.equipCode);
printf("Inputequiptype\n");
scanf("%s",newequ.equipType);
printf("Inputequipname\n");
scanf("%s",newequ.equipName)