某实验设备管理系统设计书1.题目要求实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。
2.需求分析实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号设备种类设备购入日期正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择。
整个系统可设计为实验设备信息输入模块实验设备信息修改模块实验设备分类统计模块实验设备查询模块和实验设备报废信息模块。
建立实验设备信息结构体,结构体成员包括设备编号,设备种类,设备名称,设备价格,设备购入日期,是否报废,报废日期。
3.功能模块图主要功能:录入设备信息、修改设备信息、查询设备信息、按设备编号查询、按设备名称查询、对设备按种类进行分类统计、报废设备登记、报废设备统计。
图1 实验室设备管理系统设计4.主函数模块流程录入信息报废登记分类统计报废查询报废统计退出系统查询信息修改信息图2 实验室设备管理系统主函数模块流程图5.详细设计5.1声明函数int menu();//菜单void lr();//录入信息void xg();//修改void cx();//查询void cx_sbh();//设备号查询void cx_mc();//设备名称查询void tj();//统计void bf();//报废信息void bf_dj();//报废登记void bf_tj();//报废统计void choose();以上为本程序的函数声明5.2菜单函数菜单函数用void choose()声明,其中应用了do...while(choice!=0); 循环,在循环过程使用了 switch (choice)选择。
当输入0时,系统跳入到“提示:你已经退出系统再见!”的输出。
break终止接下来的步骤。
当输入1时,系统跳入到录入的子函数中,break终止接下来的步骤。
当输入2时,系统跳入到修改的子函数中,break终止接下来的步骤。
当输入3时,系统跳入到统计的子函数中,break终止接下来的步骤。
当输入4时,系统跳入到报废的子函数中,break终止接下来的步骤。
当输入5时,系统输出“提示:输入错误!\n”,break终止接下来的步骤。
其中的数据输入为int类型。
void choose(){int choice;choice=1;choice=menu(choice);do{switch (choice){case 0: printf("\n提示:你已经退出系统\n\t\t 再见!\n"); break;case 1: lr(); break;case 2: xg(); break;case 3: cx(); break;case 4: tj(); break;case 5: bf(); break;default: printf("提示:输入错误!\n"); break;}}while(choice!=0);}int menu(int choice){printf("\n\n\n");printf("\t\t\t--------------------------------\n");printf("\t\t\t+ 实验设备管理系统 |\n");printf("\t\t\t--------------------------------\n");printf("\t\t\t+ [1]----录入设备信息 |\n");printf("\t\t\t+ [2]----修改设备信息 |\n");printf("\t\t\t+ [3]----查询设备信息 |\n");printf("\t\t\t+ [4]----统计设备信息 |\n");printf("\t\t\t+ [5]----报废设备信息 |\n");printf("\t\t\t+ [0]----*-EXIT-* |\n");printf("\t\t\t+*·*·*·*·*·*·*·*·*·*·|\n");printf("\t\t\t--------------------------------\n");printf("请输入你要操作的序号:");scanf("%d", &choice);return choice;错误!未找到目录项。
}5.3录入函数录入函数用void lr()声明,用到while(1){ }循环,其中数字1是“true”的含义。
如果IF判断成立,则将进行录入。
分别录入设备ID号、设备名称、设备种类、报废日期、设备是否报废,1.没报废,0.报废、购买时间和设备价格等容。
当其中的一条记录录入完成后,系统会提示是否已经完成一条记录的添加。
(注:其中的“t++;”不能丢,其在循环中起累加的作用)其中的数据输入为char类型。
录入函数还应用了结构体数组的知识如下:typedef struct shebei{char id[10];char name[15];char kind[15];char over[15];int yesno;char time[10];char price[10];}shebei;shebei sb[200];其中的shebei sb[200]要求最多录入200条信息。
分别录入设备ID号、设备名称、设备种类、报废日期、设备是否报废,1.没报废,0.报废、购买时间和设备价格等结构体数组。
其中的数据输入为char类型(除int yesno外)。
void lr()//录入信息{while(1){if(strcmp(sb[t].id,"0")==0)main();printf("\n请输入设备名称:");scanf("%s",sb[t].name);;}}5.4修改函数修改函数用void xg()声明,函数用了if...else的选择和switch的选择,其中if ...else的选择包含在while循环中,并用了break的跳转语句。
if...else语句更好的避免了输入进入死循环。
如:if(x==0) break;else{printf("继续操作请输入1\n");scanf("%d",&x);}修改函数中还使用了strcmp判断函数,当strcmp判断函数判断成立时,给予使用者符合要求的提示,使用者然后进行操作。
如:strcmp(sb[t].id,find)==0 。
在Switch的使用中,其实现了返回主菜单的操作。
如:switch(x){case 0:choose();break;case 1:xg();break;default:printf("输入无效,自动返回主菜单\n");choose();break;}其中包含的数据类型有int类型和 char类型两种。
如:int x , char find[20].void xg()//修改{char find[20];int x;t=0;printf("请输入要修改的设备ID号:");scanf("%s",find);while(1){if(strcmp(sb[t].id,find)==0) //如果找到的话返回的是符合要求{break;}else t++;}while(1){printf("确认修改请输入任意数字否则输入0重新输入设备原id:");scanf("%d",&x);if(x==0) break;else{printf("请输入新设备号(原来是 %s ):",sb[t].id);scanf("%s",sb[t].id);printf("\n提示:该项记录资料已经成功修改!\n");printf("退回主菜单请输入0\n");printf("继续操作请输入1\n");scanf("%d",&x);}}}5.5查询函数查询函数用void cx()声明,使用do...while(choice!=0); 循环,其中含有switch(choice)的选择语句。
当选择0时,跳回menu函数;当选择1时,跳到设备号查询函数;void cx_sbh(){do{if(strcmp(sb[t].id,find)==0&&sb[t].yesno==1) //1表示设备没报废{t++;}elset++;}while (t<100);if (choice==1)choose();else cx();}设备号查询函数用void cx_sbh()声明,使用do...while(choice!=0); 循环,其中含有if ...esle的选择语句。
其中包含的数据类型有int类型.如:int choice等。
当选择2时,跳到设备名称查询函数;void cx_mc()//设备名称查询{do{if(strcmp(sb[t].name,ming)==0&&sb[t].yesno==1) //1表示设备没报废{}elset++;}while (t<100);if (choice==1)choose();else cx();}设备名称查询函数用void cx_mc()声明,使用do...while(choice!=0); 循环,其中含有if esle的选择语句。
其中包含的数据类型有int类型.如:int choice等。
否则输出"输入无效请重新输入"。
查询函数包含的数据类型有int类型.如:int choice等。
void cx()//查询{int choice;do{switch(choice){case 0:menu();break;case 1:cx_sbh();break;case 2:cx_mc();break;default:printf("输入无效请重新输入\n");cx(); break;}}while(choice!=0);}5.5统计函数统计函数用void tj()声明,在if的使用中,其实现了返回菜单的操作。