您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页实验设备管理系统

实验设备管理系统

来源:华佗小知识


一.题目要求

实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,

设备价格,设备购入日期等。试设计一实验设备信息管理系统,使之能提供以下功能: (1) 能够完成对设备的录入和修改 (2) 对设备进行分类统计 (3) 设备的查询

二.需求分析

实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,

需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备的插叙需要提供查找操作,设备的查询可根据设备编号、设备种类、设备名称、设备购入日期、正常设备(未报废的)等多种方式查询;另外还要提供键盘式选择菜单以实现功能选择。

三.总体设计

根据上面的需求分析,可以将这个系统的设计分为以下模块

实验设备管理系统 信息输入 信息添加 信息修改 信息统计 信息搜索 四.详细设计

1.主函数

[流程图]

显示一系列功能选项 输入n,判断n是否是0-6 N Y 根据n的值调用各功能模块函数 [程序]

main() /*********************主函数***********************************/ {

int n,w,t; for(t=0;t<1;t++) {

do {

puts(\"\\*******MENU*******\\n\\n\"); puts(\"\\ 1.Enter new data\"); puts(\"\\ 2.Addition data\"); puts(\"\\ 3.Modify data\"); puts(\"\\ 4.Statist \"); puts(\"\\ 5.Search\"); puts(\"\\ 6.Exit\");

puts(\"\\n\\n\\*****************\\n\"); printf(\"What do you want to do(1-6):\"); scanf(\"%d\

if(n<1||n>6) /*对选择的数字作出判断*/ { w=1;

getchar(); }

else w=0; }

while(w==1);

switch(n)

{case 1:t=enter();break; /*输入模块*/ case 2:t=enter(); break; /*追加模块*/ case 3:t=modifty();break; /*修改模块*/ case 4:t=total();break; /*统计模块*/ case 5:t=search();break; /*搜索模块*/ case 6:exit(0); /*退出*/ } }

2.各功能模块设计 (1)输入模块

[流程图]

输入用户要输入设备的个数i 输入设备的各项详细信息 将输入的信息存储到文件的中

[程序]

/*********************输入模块*****************************/ int enter() /*输入模块*/

{

FILE *fp; EQ newequ; int i,j; int c;

printf(\"**************************************\\n\"); printf(\"Add new equiment\\n\");

printf(\"**************************************\\n\"); printf(\"How many equiments do you want to add?\\n\");

scanf(\"%d\ /*输入要输入的设备个数*/ for(j=0;jprintf(\"------------------\\n\"); printf(\"Input equipcode\\n\"); scanf(\"%s\printf(\"Input equiptype\\n\"); scanf(\"%s\printf(\"Input equipname\\n\"); scanf(\"%s\

printf(\"Input equipPrice\\n\");

scanf(\"%f\printf(\"Input buyYear\\n\");

scanf(\"%d\printf(\"Input buyMonth\\n\");

scanf(\"%d\printf(\"Input buyDay\\n\");

scanf(\"%d\

printf(\"Input scrap\\n\");

scanf(\"%d\printf(\"Input scrapYear\\n\");

scanf(\"%d\printf(\"Input scrapMonth\\n\");

scanf(\"%d\printf(\"Input scrapDay\\n\");

scanf(\"%d\

if((fp=fopen(\"test.txt\ /*打开文件,输入保存*/ {printf(\"Can not open file!\\n\"); }

fprintf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\equ.equipName,newequ.equipPrice,newequ.buyYear,newequ.buyMonth,newequ.buyDay,newequ.scrap,newequ.scrapYear,newequ.scrapMonth,newequ.scrapDay);

fclose(fp);

printf(\"\\n-----------------------\\n\"); printf(\"Return to main menu? \\n\"); printf(\"1.YES \\n\");

printf(\"2.NO,I want to quit now\\n\"); scanf(\"%d\if(c==1)return(-1);

if(c==2)return(0); /*任务结束选择是返回主菜单还是跳出*/ } }

(4)修改模块 [需求分析]

此模块可以根据客户需要对以记录在文件中的信息进行修改 [流程图]

输入要修改的设备编号 是否找到该设备资料 y 显示找到的记录,调用修改函数 n 显示没有找到 返回主菜单 对该设备的信息进行修改 返回主菜单

[程序]

/*******************************修改模块*********************/

int modifty() /*修改模块*/ {

EQ equ[50]; char code[10]; int i,j,c; FILE *fp;

printf(\"*************************************\\n\"); printf(\"Modifty for the equiment\\n\");

printf(\"*************************************\\n\"); printf(\"Please input the equipcode for modiftying\\n\");

scanf(\"%s\ /*输入要修改的设备编号*/ printf(\"------------------------------------\\n\");

if((fp=fopen(\"test.txt\{ printf(\"\\nCan not open test!\\n\"); }

for(i=0;!feof(fp);i++) {

fscanf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\uipName,&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(\"Input new equipcode\\n\"); scanf(\"%s\printf(\"Input new equiptype\\n\"); scanf(\"%s\printf(\"Input new equipname\\n\"); scanf(\"%s\printf(\"Input equipPrice\\n\"); scanf(\"%f\

printf(\"Input new buyYear\\n\"); scanf(\"%d\printf(\"Input new buyMonth\\n\"); scanf(\"%d\printf(\"Input new buyDay\\n\"); scanf(\"%d\

printf(\"Input new scrap\\n\"); scanf(\"%d\

printf(\"Input new scrapYear\\n\"); scanf(\"%d\printf(\"Input new scrapMonth\\n\"); scanf(\"%d\

printf(\"Input new scrapDay\\n\"); scanf(\"%d\}

} /*将修改后的信息写如文件中*/ fclose(fp); j=i;

if((fp=fopen(\"test.txt\{ printf(\"\\nCan not open test!\\n\"); }

for(i=0;ifprintf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\quipName,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(\"Return to main menu? \\n\"); printf(\"1.YES \\n\");

printf(\"2.NO,I want to quit now\\n\"); scanf(\"%d\if(c==1)return(-1); if(c==2)return(0); }

(4)统计模块

[需求分析]

将已经输入的设备信息进行统计,并显示设备总数、价格总额等信息 [流程图] 打开文件,并对文件中的设备信息进行统计计算

[程序] int total() { int c;

输出统计结果 返回主菜单 float sum=0; int count=0; float aver=0; char type[20]; EQ equ; int i;

FILE *fp;

if((fp=fopen(\"test.txt\{ printf(\"\\nWrong\\n\"); }

printf(\"please input equipType:\\n\"); scanf(\"%s\

for(i=0;!feof(fp);i++) { fscanf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\&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\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\\nthe number of this type is:%d\printf(\"\\n\\nthe total sum of price is:%f\printf(\"\\n\\nthe aver of total price is:%f\printf(\"\\nPress any key to exit......\");

getch();

printf(\"\\n-----------------------\\n\"); printf(\"Return to main menu? \\n\"); printf(\"1.YES \\n\");

printf(\"2.NO,I want to quit now\\n\"); scanf(\"%d\if(c==1)return(-1); if(c==2)return(0); }

(5)搜索模块 [需求分析]

该模块的功能是查找用户需要的对应记录,可以分别根据设备编号、设备种类、设备名称、设备购入日期、正常设备(未报废的)等多种方式查询。 [流程图]

y 询问用户想要选择的搜索方式 设备编号 设备种类 设备名称 设备购入日期 是否报废 y 显示找到的文件 n 提示没有找到 让用户选择1)返回主菜单2)跳出系统

[程序]

/***********************************搜索模块******************************/

int search() /*搜索模块*/ {

char code[10]; char name[20]; float price; int choice; int c; FILE *fp; EQ equ;

int i;

fp=fopen(\"test.txt\if(fp==NULL)exit(0);

printf(\"please choose the way of search:\\n\\n\"); printf(\"1.search by equipCode\\n\\n\"); printf(\"2.search by equipName \\n\\n\"); printf(\"3.search by equipPrice\\n\\n\"); printf(\"0.return\\n\\n\");

printf(\"please input number 0-5:\"); scanf(\"%d\ if(choice==0)exit(0); switch(choice) {

case 0:exit(0);break; case 1:

printf(\"please input equipCode:\\n\"); scanf(\"%s\ for(i=0;!feof(fp);i++) {

fscanf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\qu.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.equipName,equ.equipPrice,equ.buyYear,equ.buyMonth,equ.buyDay,equ.scrap,equ.scrapYear,equ.scrapMonth,equ.scrapDay); } } getch(); break;

case 2:

printf(\"please input equipName:\\n\"); scanf(\"%s\ for(i=0;!feof(fp);i++) {

fscanf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\

qu.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.equipName,equ.equipPrice,equ.buyYear,equ.buyMonth,equ.buyDay,equ.scrap,equ.scrapYear,equ.scrapMonth,equ.scrapDay); } } getch(); break; case 3:

printf(\"please input equipPrice:\\n\"); scanf(\"%d\ for(i=0;!feof(fp);i++) {

fscanf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\qu.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.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(\"Return to main menu? \\n\"); printf(\"1.YES \\n\");

printf(\"2.NO,I want to quit now\\n\"); scanf(\"%d\

if(c==1)return(-1); if(c==2)return(0); }

五.完整程序

#include #include

typedef struct epuipmentInfo { char equipCode[10]; char equipType[20]; char equipName[20]; float equipPrice; int buyYear; int buyMonth; int buyDay; int scrap; int scrapYear; int scrapMonth; int scrapDay; }EQ;

int enter() {

FILE *fp; EQ newequ; int i,j; int c;

printf(\"**************************************\\n\"); printf(\"Add new equiment\\n\");

printf(\"**************************************\\n\"); printf(\"How many equiments do you want to add?\\n\"); scanf(\"%d\for(j=0;jprintf(\"------------------\\n\"); printf(\"Input equipcode\\n\"); scanf(\"%s\printf(\"Input equiptype\\n\"); scanf(\"%s\

printf(\"Input equipname\\n\"); scanf(\"%s\

printf(\"Input equipPrice\\n\");

scanf(\"%f\printf(\"Input buyYear\\n\");

scanf(\"%d\printf(\"Input buyMonth\\n\");

scanf(\"%d\printf(\"Input buyDay\\n\");

scanf(\"%d\

printf(\"Input scrap\\n\");

scanf(\"%d\printf(\"Input scrapYear\\n\");

scanf(\"%d\printf(\"Input scrapMonth\\n\");

scanf(\"%d\printf(\"Input scrapDay\\n\");

scanf(\"%d\

if((fp=fopen(\"test.txt\{printf(\"Can not open file!\\n\"); }

fprintf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\newequ.equipName,newequ.equipPrice,newequ.buyYear,newequ.buyMonth,newequ.buyDay,newequ.scrap,newequ.scrapYear,newequ.scrapMonth,newequ.scrapDay);

fclose(fp);

printf(\"\\n-----------------------\\n\"); printf(\"Return to main menu? \\n\"); printf(\"1.YES \\n\");

printf(\"2.NO,I want to quit now\\n\"); scanf(\"%d\if(c==1)return(-1); if(c==2)return(0); } }

int modifty() {

EQ equ[50]; char code[10]; int i; int j; int c; FILE *fp;

printf(\"*************************************\\n\"); printf(\"Modifty for the equiment\\n\");

printf(\"*************************************\\n\"); printf(\"Please input the equipcode for modiftying\\n\"); scanf(\"%s\

printf(\"------------------------------------\\n\");

if((fp=fopen(\"test.txt\{ printf(\"\\nCan not open test!\\n\"); }

for(i=0;!feof(fp);i++) {

fscanf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\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(\"Input new equipcode\\n\"); scanf(\"%s\printf(\"Input new equiptype\\n\"); scanf(\"%s\printf(\"Input new equipname\\n\"); scanf(\"%s\printf(\"Input equipPrice\\n\"); scanf(\"%f\

printf(\"Input new buyYear\\n\"); scanf(\"%d\printf(\"Input new buyMonth\\n\"); scanf(\"%d\printf(\"Input new buyDay\\n\");

scanf(\"%d\

printf(\"Input new scrap\\n\"); scanf(\"%d\

printf(\"Input new scrapYear\\n\"); scanf(\"%d\printf(\"Input new scrapMonth\\n\"); scanf(\"%d\printf(\"Input new scrapDay\\n\"); scanf(\"%d\} }

fclose(fp); j=i;

if((fp=fopen(\"test.txt\{ printf(\"\\nCan not open test!\\n\"); }

for(i=0;ifprintf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\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(\"Return to main menu? \\n\"); printf(\"1.YES \\n\");

printf(\"2.NO,I want to quit now\\n\"); scanf(\"%d\if(c==1)return(-1); if(c==2)return(0); }

int search() {

char code[10];

char name[20]; float price; int choice;

int c; FILE *fp; EQ equ; int i;

fp=fopen(\"test.txt\if(fp==NULL)exit(0);

printf(\"please choose the way of search:\\n\\n\"); printf(\"1.search by equipCode\\n\\n\"); printf(\"2.search by equipName \\n\\n\"); printf(\"3.search by equipPrice\\n\\n\"); printf(\"0.return\\n\\n\");

printf(\"please input number 0-5:\"); scanf(\"%d\ if(choice==0)exit(0);

switch(choice) {

case 0:exit(0);break; case 1:

printf(\"please input equipCode:\\n\"); scanf(\"%s\ for(i=0;!feof(fp);i++) {

fscanf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\pName,&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\pName,equ.equipPrice,equ.buyYear,equ.buyMonth,equ.buyDay,equ.scrap,equ.scrapYear,equ.scrapMonth,equ.scrapDay); } } getch(); break;

case 2:

printf(\"please input equipName:\\n\"); scanf(\"%s\ for(i=0;!feof(fp);i++) {

fscanf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\pName,&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\pName,equ.equipPrice,equ.buyYear,equ.buyMonth,equ.buyDay,equ.scrap,equ.scrapYear,equ.scrapMonth,equ.scrapDay); } } getch(); break; case 3:

printf(\"please input equipPrice:\\n\"); scanf(\"%d\ for(i=0;!feof(fp);i++) {

fscanf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\pName,&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\pName,equ.equipPrice,equ.buyYear,equ.buyMonth,equ.buyDay,equ.scrap,equ.scrapYear,equ.scrapMonth,equ.scrapDay); } } getch();

break; }

fclose(fp);

printf(\"\\n-----------------------\\n\"); printf(\"Return to main menu? \\n\"); printf(\"1.YES \\n\");

printf(\"2.NO,I want to quit now\\n\"); scanf(\"%d\if(c==1)return(-1); if(c==2)return(0); }

int total() { int c;

float sum=0; int count=0; float aver=0; char type[20]; EQ equ; int i;

FILE *fp;

if((fp=fopen(\"test.txt\{ printf(\"\\nWrong\\n\"); }

printf(\"please input equipType:\\n\"); scanf(\"%s\

for(i=0;!feof(fp);i++) { fscanf(fp,\"%s %s %s %f %d %d %d %d %d %d %d\ar,&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\.buyMonth,equ.buyDay,equ.scrap,equ.scrapYear,equ.scrapMonth,equ.scrapDay);

{

count++;

sum+=equ.equipPrice; aver=sum/count; } }

fclose(fp);

printf(\"----------Statist--Result-----------\");

printf(\"\\n\\nthe number of this type is:%d\printf(\"\\n\\nthe total sum of price is:%f\printf(\"\\n\\nthe aver of total price is:%f\printf(\"\\nPress any key to exit......\"); getch();

printf(\"\\n-----------------------\\n\"); printf(\"Return to main menu? \\n\"); printf(\"1.YES \\n\");

printf(\"2.NO,I want to quit now\\n\"); scanf(\"%d\if(c==1)return(-1); if(c==2)return(0); }

main() {

int n; int w; int t;

for(t=0;t<1;t++) { do {

puts(\"\\*******MENU*******\\n\\n\"); puts(\"\\ 1.Enter new data\"); puts(\"\\ 2.Addition data\"); puts(\"\\ 3.Modify data\"); puts(\"\\ 4.Statist \"); puts(\"\\ 5.Search\"); puts(\"\\ 6.Exit\");

if(strcmp(equ.equipType,type)==0)

puts(\"\\n\\n\\*****************\\n\"); printf(\"What do you want to do(1-6):\"); scanf(\"%d\if(n<1||n>6) { w=1;

getchar(); }

else w=0; }

while(w==1);

switch(n)

{case 1:t=enter();break; case 2:t=enter(); break; case 3:t=modifty();break; case 4:t=total();break; case 5:t=search();break; case 6:exit(0); } } }

六.上机操作

运行结果如下

(1) 主菜单函数

(2) 输入模块 键入1后显示如下界面

接着键入需要输入的设备数量,出现提示后依次输入各项具体信息

选择1后返回主菜单。

(3) 追加模块

在主菜单输入2后进入追加模块,操作同输入模块。 (4) 修改模块

在主菜单输入3后进入修改模块,系统提示输入要修改的设备编号

输入编号,如果找到该编号对应的设备信息则进行新信息的输入 (5) 统计模块

在主菜单输入4后进入统计模块,对已经输入的设备信息进行统计

按任意键后可选择返回主菜单 (6) 搜索模块

在搜索模块中程序提供了3种搜索方式

例如,我们选择第一种搜索模式,用设备编号进行搜索,输入1,回车。接着在提示下输入要搜索的设备名称,即可得到需要的设备信息。

按任意键后可选择返回主菜单或退出系统。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务