《C程序设计实验设备管理系统设计(共30页).doc》由会员分享,可在线阅读,更多相关《C程序设计实验设备管理系统设计(共30页).doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上高级语言程序设计课程设计说明书设计题目:实验设备管理系统设计设计任务:1、需求分析:实验室设备信息用文件存储, 故要提供文件的输入输出操作; 要能够完成设备的录入和 修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现 对设备的查询需要提供查找操作;另外还要提供键盘式选择菜单以实现功能选择。 2、总体设计:整个系统被设计为实验设备信息输入模块、 实验设备信息添加模块、 实验设备信息修改 模块、实验设备分类统计模块和实验设备查询模块。 3、详细设计 数据结构采用结构体,设计实验设备信息结构体: Struct equipmentInfo Cha
2、r equipCode10; /设备编号 Char equipType20; /设备总类 Char equipName20; /设备名称 float equipPrice; /设备价格 char buyDate20; /设备购入日期 int scrap; /是否报废,0 表示没有报废,1 表示报废 char scrapDate20; /报废日期 EquInfo; (1) 实验设备信息输入模块 把实验设备基本信息写入实验设备信息文件。 (2) 实验设备信息添加模块 添加设备时,把添加的设备基本信息采用追加的方式写入设备信息文件。 (3) 实验设备信息修改模块 修改设备信息,则需要读文件,判断信息
3、是否是要修改的设备的信息,如果是,修改, 重新写入文件;否则直接重新写入文件。(4) 实验设备分类统计模块 根据给定的分类标准(设备种类、设备名、设备购入日期)对文件的记录进行排序,排 序方法可以选择冒泡、插入、选择等方法。然后采用查找算法查找同类设备,采用基本的数 学运算即可统计同类设备的相关信息,比如数量、价钱等。 (5) 实验设备查询模块 通过菜单选择查询方式,提供按设备编号、设备种类、设备名称、设备购入日期和设备状态为正常(scrap 字段值为 0)这些查询方式查询。采用基本查找算法即可。 源程序:#include#include#include conio.htypedef stru
4、ct equipmentInfo char equipCode10; /设备编号 char equipType20; /设备总类 char equipName20; /设备名称 int equipPrice; /设备价格 char buyDate20; /设备购入日期 int scrap; /是否报废,0 表示没有报废,1 表示报废 char scrapDate20; /报废日期 EquInfo;EquInfo head100;int n=0;/*向文件中输入数据*/int cmp ( const void *a , const void *b )return strcmp(*(EquInfo
5、 *)a).equipType,(*(EquInfo *)b).equipType);input()int i,a;system(cls);printf(你要输入的设备数:);scanf(%d,&n);while(n1)system(cls);printf(你输入的数据有误,请重新输入:n);printf(你要输入的设备数:);scanf(%d,&n);for(i=0;in;i+) printf(设备编号:);scanf(%s,headi.equipCode);printf(设备总类:);scanf(%s,headi.equipType);printf(设备名称:);scanf(%s,head
6、i.equipName);printf(设备价格:);scanf(%d,&headi.equipPrice);printf(设备购入日期:);scanf(%s,headi.buyDate);printf(设备是否报废:1.是 0.不是: );scanf(%d,&headi.scrap);printf(报废日期:没有报废填“空”: );scanf(%s,headi.scrapDate);input_2();printf(1.输入 2.追加 3.排序 4查询 5.统计 6.修改 7.退出n);printf(请输入你要选择的操作:);scanf(%d,&a);while(a7)system(cls)
7、;printf(你输入的数据有误,请重新输入:n);printf(1.输入 2.追加 3.排序 4查询 5.统计 6.修改 7.退出n); printf(n请输入你要选择的操作:); scanf(%d,&a);if(a=1)input();if(a=2)add();if(a=3)sort();if(a=4)serach();if(a=5)stats();if(a=6)modify();if(a=7)exit(0);/*输入的数据存入文件*/input_2()FILE *fp; int i;if(fp=fopen(file2.txt,w)=NULL)printf(Cannot open the
8、file!n);return; for(i=0;in;i+) if(fwrite(&headi,sizeof(EquInfo),1,fp)!=1)printf(File error!n); fclose(fp);/*追加信息*/add()int k,i,a;system(cls);printf(输入你要追加的设备数:);scanf(%d,&k);while(k1)system(cls);printf(你输入的数据有误,请重新输入:n);printf(输入你要追加的设备数:);scanf(%d,&k);for(i=n;in+k;i+)printf(设备编号:);scanf(%s,headi.eq
9、uipCode);printf(设备总类:);scanf(%s,headi.equipType);printf(设备名称:);scanf(%s,headi.equipName);printf(设备价格:);scanf(%d,&headi.equipPrice);printf(设备购入日期:);scanf(%s,headi.buyDate);printf(设备是否报废:1.是 0.不是: );scanf(%d,&headi.scrap);printf(报废日期:没有报废填“空”: );scanf(%s,headi.scrapDate);input_3(k);printf(1.输入 2.追加 3.
10、排序 4查询 5.统计 6.修改 7.退出n);printf(请输入你要选择的操作:);scanf(%d,&a);while(a7)system(cls);printf(你输入的数据有误,请重新输入:n);printf(1.输入 2.追加 3.排序 4查询 5.统计 6.修改 7.退出n); printf(n请输入你要选择的操作:); scanf(%d,&a);if(a=1)input();if(a=2)add();if(a=3)sort();if(a=4)serach();if(a=5)stats();if(a=6)modify();if(a=7)exit(0);/*追加信息写入文件*/in
11、put_3(int k)FILE *fp; int i;if(fp=fopen(file2.txt,a)=NULL)printf(Cannot open the file!n);return; for(i=n;in+k;i+)if(fwrite(&headi,sizeof(EquInfo),1,fp)!=1)printf(File error!n); fclose(fp); n=n+k;/*排序*/sort()int k,a;system(cls);printf(按1.设备总类排序 2.设备名 3.设备购入日期:);scanf(%d,&k);while(k3)system(cls);print
12、f(你输入的数据有误,请重新输入:n);printf(按1.设备总类排序 2.设备名 3.设备购入日期排序:); scanf(%d,&k);if(k=1)sort_1();if(k=2)sort_2();if(k=3)sort_3();printf(1.输入 2.追加 3.排序 4查询 5.统计 6.修改 7.退出n);printf(请输入你要选择的操作:);scanf(%d,&a);while(a7)system(cls);printf(你输入的数据有误,请重新输入:n);printf(1.输入 2.追加 3.排序 4查询 5.统计 6.修改 7.退出n); printf(n请输入你要选择的
13、操作:); scanf(%d,&a);if(a=1)input();if(a=2)add();if(a=3)sort();if(a=4)serach();if(a=5)stats();if(a=6)modify();if(a=7)exit(0);sort_1()int i=0,j,k,s=0;EquInfo temp,*b;FILE *fp;b=(EquInfo *)malloc(sizeof(EquInfo)*100);memset(b,0,100*sizeof(EquInfo);if(fp=fopen(file2.txt,r)=NULL)printf(Cannot open the fil
14、e!n);return;while(!(feof(fp)fread(&bs,sizeof(EquInfo),1,fp);s+;fclose(fp);qsort(b,s,sizeof(b0),cmp);printf(-n);printf(编号 总类 名称 价格 购入日期 是否报废 报废日期n);for(i=1;is;i+)printf(%st,bi.equipCode);printf(%st,bi.equipType);printf(%st,bi.equipName);printf(%dt,bi.equipPrice);printf(%st,bi.buyDate);printf(%dt ,bi.
15、scrap);printf(%s,bi.scrapDate);printf(nn);printf(-n);sort_2()int i=0,j,k,s=0;EquInfo temp,*b;FILE *fp;b=(EquInfo *)malloc(sizeof(EquInfo)*100);memset(b,0,100*sizeof(EquInfo);if(fp=fopen(file2.txt,r)=NULL)printf(Cannot open the file!n);return;while(!(feof(fp)fread(&bs,sizeof(EquInfo),1,fp);s+;for(i=0
16、;is-1;i+)k=i;for(j=i+1;j0)k=j;if(k!=i)temp=bi;bi=bk;bk=temp;printf(-n);printf(编号 总类 名称 价格 购入日期 是否报废 报废日期n);for(i=1;is;i+)printf(%st,bi.equipCode);printf(%st,bi.equipType);printf(%st,bi.equipName);printf(%dt,bi.equipPrice);printf(%st,bi.buyDate);printf(%dt ,bi.scrap);printf(%s,bi.scrapDate);printf(nn
17、);printf(-n);fclose(fp);sort_3()int i=0,j,k,s=0;EquInfo temp,*b;FILE *fp;b=(EquInfo *)malloc(sizeof(EquInfo)*100);memset(b,0,100*sizeof(EquInfo);if(fp=fopen(file2.txt,r)=NULL)printf(Cannot open the file!n);return;while(!(feof(fp)fread(&bs,sizeof(EquInfo),1,fp);s+;for(i=0;is-1;i+)k=i;for(j=i+1;j0)k=j
18、;if(k!=i)temp=bi;bi=bk;bk=temp;printf(-n);printf(编号 总类 名称 价格 购入日期 是否报废 报废日期n);for(i=1;is;i+)printf(%st,bi.equipCode);printf(%st,bi.equipType);printf(%st,bi.equipName);printf(%dt,bi.equipPrice);printf(%st,bi.buyDate);printf(%dt ,bi.scrap);printf(%s,bi.scrapDate);printf(nn);printf(-n);fclose(fp);/*设备查
19、询*/serach()int k,a;system(cls);printf(查询1.编号 2.总类 3.名称 4.购入日期 5.状态: );scanf(%d,&k);while(k5)system(cls);printf(你输入的数据有误,请重新输入:n);printf(查询1.编号 2.总类 3.名称 4.购入日期 5.状态: ); scanf(%d,&k);if(k=1)serach_1();if(k=2)serach_2();if(k=3)serach_3();if(k=4)serach_4();if(k=5)serach_5();printf(1.输入 2.追加 3.排序 4查询 5.
20、统计 6.修改 7.退出n);printf(请输入你要选择的操作:);scanf(%d,&a);while(a7)system(cls);printf(你输入的数据有误,请重新输入:n);printf(1.输入 2.追加 3.排序 4查询 5.统计 6.修改 7.退出n); printf(n请输入你要选择的操作:); scanf(%d,&a);if(a=1)input();if(a=2)add();if(a=3)sort();if(a=4)serach();if(a=5)stats();if(a=6)modify();if(a=7)exit(0);serach_1()int i=0,d=0,s
21、=0;EquInfo m,*b;FILE *fp;b=(EquInfo *)malloc(sizeof(EquInfo)*100);memset(b,0,100*sizeof(EquInfo);printf(你要查询的设备编号是:);scanf(%s,m.equipCode);if(fp=fopen(file2.txt,r)=NULL)printf(Cannot open the file!n);return;while(!(feof(fp)fread(&bs,sizeof(EquInfo),1,fp);s+;for(i=0;is-1;i+)if(strcmp(bi.equipCode,m.e
22、quipCode)=0)printf(-n); printf(编号 总类 名称 价格 购入日期 是否报废 报废日期n);printf(%st,bi.equipCode);printf(%st,bi.equipType);printf(%st,bi.equipName); printf(%dt,bi.equipPrice); printf(%st,bi.buyDate); printf(%dt ,bi.scrap); printf(%s,bi.scrapDate);printf(nn);printf(-n);d+;if(d=0)printf(没有你要查询的设备号nn);serach_2()int
23、 i=0,d=0,s=0;EquInfo m,*b;FILE *fp;b=(EquInfo *)malloc(sizeof(EquInfo)*100);memset(b,0,100*sizeof(EquInfo);printf(你要查询的设备总类是:);scanf(%s,m.equipType);if(fp=fopen(file2.txt,r)=NULL)printf(Cannot open the file!n);return;while(!(feof(fp)fread(&bs,sizeof(EquInfo),1,fp);s+;for(i=0;is-1;i+)if(strcmp(bi.equ
24、ipType,m.equipType)=0)printf(-n); printf(编号 总类 名称 价格 购入日期 是否报废 报废日期n);printf(%st,bi.equipCode);printf(%st,bi.equipType);printf(%st,bi.equipName); printf(%dt,bi.equipPrice); printf(%st,bi.buyDate); printf(%dt ,bi.scrap); printf(%s,bi.scrapDate);printf(nn);printf(-n);d+;if(d=0)printf(没有你要查询的设备号nn);ser
25、ach_3()int i=0,d=0,s=0;EquInfo m,*b;FILE *fp;b=(EquInfo *)malloc(sizeof(EquInfo)*100);memset(b,0,100*sizeof(EquInfo);printf(你要查询的设备名称是:);scanf(%s,m.equipName);if(fp=fopen(file2.txt,r)=NULL)printf(Cannot open the file!n);return;while(!(feof(fp)fread(&bs,sizeof(EquInfo),1,fp);s+;for(i=0;is-1;i+)if(str
26、cmp(bi.equipName,m.equipName)=0)printf(-n); printf(编号 总类 名称 价格 购入日期 是否报废 报废日期n);printf(%st,bi.equipCode);printf(%st,bi.equipType);printf(%st,bi.equipName); printf(%dt,bi.equipPrice); printf(%st,bi.buyDate); printf(%dt ,bi.scrap); printf(%s,bi.scrapDate);printf(nn);printf(-n);d+;if(d=0)printf(没有你要查询的
27、设备号nn);serach_4()int i=0,d=0,s=0;EquInfo m,*b;FILE *fp;b=(EquInfo *)malloc(sizeof(EquInfo)*100);memset(b,0,100*sizeof(EquInfo);printf(你要查询的设备购入日期是:);scanf(%s,m.buyDate);if(fp=fopen(file2.txt,r)=NULL)printf(Cannot open the file!n);return;while(!(feof(fp)fread(&bs,sizeof(EquInfo),1,fp);s+;for(i=0;is-1
28、;i+)if(strcmp(bi.buyDate,m.buyDate)=0)printf(-n); printf(编号 总类 名称 价格 购入日期 是否报废 报废日期n);printf(%st,bi.equipCode);printf(%st,bi.equipType);printf(%st,bi.equipName); printf(%dt,bi.equipPrice); printf(%st,bi.buyDate); printf(%dt ,bi.scrap); printf(%s,bi.scrapDate);printf(nn);printf(-n);d+;if(d=0)printf(没
29、有你要查询的设备号nn);serach_5()int i=0,d=0,s=0;EquInfo m,*b;FILE *fp;b=(EquInfo *)malloc(sizeof(EquInfo)*100);memset(b,0,100*sizeof(EquInfo);printf(你要查询的设备状态是:);scanf(%d,&m.scrap);if(fp=fopen(file2.txt,r)=NULL)printf(Cannot open the file!n);return;while(!(feof(fp)fread(&bs,sizeof(EquInfo),1,fp);s+;for(i=0;i
30、s-1;i+)if(bi.scrap=m.scrap)printf(-n); printf(编号 总类 名称 价格 购入日期 是否报废 报废日期n);printf(%st,bi.equipCode);printf(%st,bi.equipType);printf(%st,bi.equipName); printf(%dt,bi.equipPrice); printf(%st,bi.buyDate); printf(%dt ,bi.scrap); printf(%s,bi.scrapDate);printf(nn);printf(-n);d+;if(d=0)printf(没有你要查询的设备号nn
31、);/*统计*/stats()int k,a;system(cls);printf(统计价格:n);printf(1.1000x4000 2.4000x8000 3.8000x12000 :);scanf(%d,&k);while(k3)system(cls);printf(你输入的数据有误,请重新输入:n);printf(统计价格:n);printf(1.1000x4000 2.4000x8000 3.8000x12000 :);scanf(%d,&n);if(k=1)stats_1();if(k=2)stats_2();if(k=3)stats_3();printf(1.输入 2.追加 3.排序 4查询 5.统计 6.修改 7.退出n);printf(请输入你要选