C程序设计实验设备管理系统设计.docx
- 文档编号:7740124
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:40
- 大小:33.23KB
C程序设计实验设备管理系统设计.docx
《C程序设计实验设备管理系统设计.docx》由会员分享,可在线阅读,更多相关《C程序设计实验设备管理系统设计.docx(40页珍藏版)》请在冰豆网上搜索。
C程序设计实验设备管理系统设计
《高级语言程序设计》课程设计
说明书
设计题目:
实验设备管理系统设计
设计任务:
1、需求分析:
实验室设备信息用文件存储,故要提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备的查询需要提供查找操作;另外还要提供键盘式选择菜单以实现功能选择。
2、总体设计:
整个系统被设计为实验设备信息输入模块、实验设备信息添加模块、实验设备信息修改模块、实验设备分类统计模块和实验设备查询模块。
3、详细设计
数据结构采用结构体,设计实验设备信息结构体:
StructequipmentInfo
{CharequipCode[10];//设备编号
CharequipType[20];//设备总类
CharequipName[20];//设备名称
floatequipPrice;//设备价格
charbuyDate[20];//设备购入日期
intscrap;//是否报废,0表示没有报废,1表示报废
charscrapDate[20];//报废日期
}EquInfo;
(1)实验设备信息输入模块把实验设备基本信息写入实验设备信息文件。
(2)实验设备信息添加模块添加设备时,把添加的设备基本信息采用追加的方式写入设备信息文件。
(3)实验设备信息修改模块修改设备信息,则需要读文件,判断信息是否是要修改的设备的信息,如果是,修改,重新写入文件;否则直接重新写入文件。
(4)实验设备分类统计模块根据给定的分类标准(设备种类、设备名、设备购入日期)对文件的记录进行排序,排序方法可以选择冒泡、插入、选择等方法。
然后采用查找算法查找同类设备,采用基本的数学运算即可统计同类设备的相关信息,比如数量、价钱等。
(5)实验设备查询模块通过菜单选择查询方式,提供按设备编号、设备种类、设备名称、设备购入日期和设备状态为正常(scrap字段值为0)这些查询方式查询。
采用基本查找算法即可。
源程序:
#include
#include
#include"conio.h"
typedefstructequipmentInfo
{charequipCode[10];//设备编号
charequipType[20];//设备总类
charequipName[20];//设备名称
intequipPrice;//设备价格
charbuyDate[20];//设备购入日期
intscrap;//是否报废,0表示没有报废,1表示报废
charscrapDate[20];//报废日期
}EquInfo;
EquInfohead[100];
intn=0;
/**************************************向文件中输入数据******************************/
intcmp(constvoid*a,constvoid*b)
{
returnstrcmp((*(EquInfo*)a).equipType,(*(EquInfo*)b).equipType);
}
input()
{
inti,a;
system("cls");
printf("你要输入的设备数:
");
scanf("%d",&n);
while(n<1)
{
system("cls");
printf("你输入的数据有误,请重新输入:
\n");
printf("你要输入的设备数:
");
scanf("%d",&n);
}
for(i=0;i { printf("设备编号: "); scanf("%s",head[i].equipCode); printf("设备总类: "); scanf("%s",head[i].equipType); printf("设备名称: "); scanf("%s",head[i].equipName); printf("设备价格: "); scanf("%d",&head[i].equipPrice); printf("设备购入日期: "); scanf("%s",head[i].buyDate); printf("设备是否报废: 1.是0.不是: "); scanf("%d",&head[i].scrap); printf("报废日期: 没有报废填“空”: "); scanf("%s",head[i].scrapDate); } input_2(); printf("1.输入2.追加3.排序4查询5.统计6.修改7.退出\n"); printf("请输入你要选择的操作: "); scanf("%d",&a); while(a<1||a>7) { 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); } /****************************************输入的数据存入文件****************************/ input_2() { FILE*fp; inti; if((fp=fopen("file2.txt","w"))==NULL) { printf("Cannotopenthefile! \n"); return; } for(i=0;i { if(fwrite(&head[i],sizeof(EquInfo),1,fp)! =1) printf("Fileerror! \n"); } fclose(fp); } /******************************************追加信息****************************************/ add() { intk,i,a; system("cls"); printf("输入你要追加的设备数: "); scanf("%d",&k); while(k<1) { system("cls"); printf("你输入的数据有误,请重新输入: \n"); printf("输入你要追加的设备数: "); scanf("%d",&k); } for(i=n;i { printf("设备编号: "); scanf("%s",head[i].equipCode); printf("设备总类: "); scanf("%s",head[i].equipType); printf("设备名称: "); scanf("%s",head[i].equipName); printf("设备价格: "); scanf("%d",&head[i].equipPrice); printf("设备购入日期: "); scanf("%s",head[i].buyDate); printf("设备是否报废: 1.是0.不是: "); scanf("%d",&head[i].scrap); printf("报废日期: 没有报废填“空”: "); scanf("%s",head[i].scrapDate); } input_3(k); printf("1.输入2.追加3.排序4查询5.统计6.修改7.退出\n"); printf("请输入你要选择的操作: "); scanf("%d",&a); while(a<1||a>7) { 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); } /********************************************追加信息写入文件 ********************************/ input_3(intk) { FILE*fp; inti; if((fp=fopen("file2.txt","a"))==NULL) { printf("Cannotopenthefile! \n"); return; } for(i=n;i if(fwrite(&head[i],sizeof(EquInfo),1,fp)! =1) printf("Fileerror! \n"); fclose(fp); n=n+k; } /************************************排序**********************************/ sort() { intk,a; system("cls"); printf("按1.设备总类排序2.设备名3.设备购入日期: "); scanf("%d",&k); while(k<1||k>3) { system("cls"); printf("你输入的数据有误,请重新输入: \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(a<1||a>7) { 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); } sort_1() { inti=0,j,k,s=0; EquInfotemp,*b; FILE*fp; b=(EquInfo*)malloc(sizeof(EquInfo)*100); memset(b,0,100*sizeof(EquInfo)); if((fp=fopen("file2.txt","r"))==NULL) { printf("Cannotopenthefile! \n"); return; } while(! (feof(fp))) { fread(&b[s],sizeof(EquInfo),1,fp); s++; } fclose(fp); qsort(b,s,sizeof(b[0]),cmp); printf ("-----------------------------------------------------------------------------\n"); printf("编号总类名称价格购入日期是否报废报废日期 \n"); for(i=1;i { printf("%s\t",b[i].equipCode); printf("%s\t",b[i].equipType); printf("%s\t",b[i].equipName); printf("%d\t",b[i].equipPrice); printf("%s\t",b[i].buyDate); printf("%d\t",b[i].scrap); printf("%s",b[i].scrapDate); printf("\n\n"); } printf ("-----------------------------------------------------------------------------\n"); } sort_2() { inti=0,j,k,s=0; EquInfotemp,*b; FILE*fp; b=(EquInfo*)malloc(sizeof(EquInfo)*100); memset(b,0,100*sizeof(EquInfo)); if((fp=fopen("file2.txt","r"))==NULL) { printf("Cannotopenthefile! \n"); return; } while(! (feof(fp))) { fread(&b[s],sizeof(EquInfo),1,fp); s++; } for(i=0;i { k=i; for(j=i+1;j if(strcmp(b[k].equipName,b[j].equipName)>0) k=j; if(k! =i) {temp=b[i];b[i]=b[k];b[k]=temp;} } printf ("-----------------------------------------------------------------------------\n"); printf("编号总类名称价格购入日期是否报废报废日期 \n"); for(i=1;i { printf("%s\t",b[i].equipCode); printf("%s\t",b[i].equipType); printf("%s\t",b[i].equipName); printf("%d\t",b[i].equipPrice); printf("%s\t",b[i].buyDate); printf("%d\t",b[i].scrap); printf("%s",b[i].scrapDate); printf("\n\n"); } printf ("-----------------------------------------------------------------------------\n"); fclose(fp); } sort_3() { inti=0,j,k,s=0; EquInfotemp,*b; FILE*fp; b=(EquInfo*)malloc(sizeof(EquInfo)*100); memset(b,0,100*sizeof(EquInfo)); if((fp=fopen("file2.txt","r"))==NULL) { printf("Cannotopenthefile! \n"); return; } while(! (feof(fp))) { fread(&b[s],sizeof(EquInfo),1,fp); s++; } for(i=0;i { k=i; for(j=i+1;j if(strcmp(b[k].buyDate,b[j].buyDate)>0) k=j; if(k! =i) {temp=b[i];b[i]=b[k];b[k]=temp;} } printf ("-----------------------------------------------------------------------------\n"); printf("编号总类名称价格购入日期是否报废报废日期 \n"); for(i=1;i { printf("%s\t",b[i].equipCode); printf("%s\t",b[i].equipType); printf("%s\t",b[i].equipName); printf("%d\t",b[i].equipPrice); printf("%s\t",b[i].buyDate); printf("%d\t",b[i].scrap); printf("%s",b[i].scrapDate); printf("\n\n"); } printf ("-----------------------------------------------------------------------------\n"); fclose(fp); } /**********************************设备查询********************************/ serach() { intk,a; system("cls"); printf("查询1.编号2.总类3.名称4.购入日期5.状态: "); scanf("%d",&k); while(k<1||k>5) { 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.统计6.修改7.退出\n"); printf("请输入你要选择的操作: "); scanf("%d",&a); while(a<1||a>7) { 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() { inti=0,d=0,s=0; EquInfom,*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("Cannotopenthefile! \n"); return; } while(! (feof(fp))) { fread(&b[s],sizeof(EquInfo),1,fp); s++; } for(i=0;i { if(strcmp(b[i].equipCode,m.equipCode)==0) { printf ("-----------------------------------------------------------------------------\n"); printf("编号总类名称价格购入日期是否报废报 废日期\n"); printf("%s\t",b[i].equipCode); printf("%s\t",b[i].equipType); printf("%s\t",b[i].equipName); printf("%d\t",b[i].equipPrice); printf("%s\t",b[i].buyDate); printf("%d\t",b[i].scrap); printf("%s",b[i].scrapDate); printf("\n\n"); printf ("-----------------------------------------------------------------------------\n"); d++; } } if(d==0) printf("没有你要查询的设备号\n\n"); } serach_2() { inti=0,d=0,s=0; EquInfom,*b; FILE*fp; b=(EquInfo*)malloc(sizeof(EquInfo)*100); memset(b,0,100*sizeof(EquInfo)); printf("你要查询的设备总类是: "); scanf("%s",m.equipTy
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 实验 设备管理 系统 设计