1、其各功能模块用菜单方式选择。本题将main()函数体内的界面选择部分语句单独抽取出来作为一独立函数,目的在于系统执行完每部分功能模块后能够方便返回到系统界面。【程序】 main()menu();菜单部分设计如下:【流程图】 N Y 主函数的菜单流程图main()system(cls);/*清屏*/menu();void menu()int w,n;doprintf(tt WELCOME TO THE EQUIPMENT MANAGEMENT SYSTEMnnnnntt=*=nnnttt1:Add message of new equipmennnttt2:Load the message of
2、 all equipmentnnttt3:Correct the message of equipmentnnttt4:Ddlete the message of broken equipmentnnttt5:Search the message of equipmentnnttt6:Search of all the equipmentnnttt7:ExitnPlease choice your number: bbscanf(%d,&n);if(n7) w=1;else w=0;while (w=1);/*选择功能*/switch(n)case 1:add_new_message();br
3、eak;/*添加模块*/case 2:load_record();/*显示模块*/case 3:modify();/*修改模块*/case 4:delete();/*删除模块*/case 5:search();/*查询模块*/case 6:statistic();/*统计模块*/case 7:exit(0);/*退出模块*/2.各功能模块设计(1)添加模块 【数据结构】 【分析】 单独看各数据信息,仪器仪表名是字符型,可采用字符型数组;仪器仪表编号、购买时间、借入时间、借出时间、归还时间、维修时间应采用实型;状态信息是整数,采用整型。实际上操作时发现只有字符型的数据可以在文件中成功被保存,所以
4、本题所有数据一律采用字符型。struct equipchar number4;char name11;char b_time11;char bin_time11;char bout_time11;char giveb_time11;char repair_time11; /*time为下面程序中按时间查找和修改时记录输入的时间*/int state;equM;【注意】equM中的M是仪表仪器个数,程序中采用宏定义的方式,可以随时在源程序宏定义中改,本程序宏定义#define M 50。 【流程图】输入模块流程图【程序】/*添加模块*/void add_new_message()int t,i,
5、m;t=load_equ();How many groups datas do you want to add?ninput the number: bbbm);for(i=0;im;i+)nInput %dth equipment record.n,i+1);input(t+i);/*调用输入函数*/save(t+m,0);/*调用保存函数 保存t+m组数据*/*返回登陆界面*/*输入函数*/ void input(int i)Please input:nnumber name b_time b_in_time b_out_time g_back_time repair_time state
6、n%s %s %s %s %s %s %s %dequi.number,&equi.name,&equi.b_time,&equi.bin_time,&equi.bout_time,&equi.giveb_time,&equi.repair_time,&equi.state);/*显示记录模块*/void load_record()int t;printf_n(t);nnnPress any key to go back.nngetchar();/*显示一个仪器记录的函数*/void printf_one(int i)%-3s %-10s %-10s %-10s %-10s %-10s %-1
7、0s %d.nn,equi.number,equi.name,equi.b_time,equi.bin_time,equi.bout_time,equi.giveb_time,equi.repair_time,equi.state);/*显示n个仪器记录的函数*/void printf_n(int n)int j;/*清屏*/number name b_time b_in_time b_out_time g_back_time repair_time snfor(j=0;jn;j+) if(j+1)%10=0)/*控制显示,每屏显示10行*/ printf(nnPass any key to
8、continue . getchar(); puts(nn printf_one(j);/*调用显示一个仪器记录的函数*/ (2)修改模块需求分析 该模块的功能是显示所有仪器仪表信息,考虑到记录较多,建议采用分屏显示。显示完所有记录后,用户输入要修改的仪器仪表编号,根据编号查找仪器仪表记录,并提示用户修改该记录的哪部分信息,是仪器仪表的借出时间、归还时间、修理时间还是状态,根据用户选择修改相应信息。 流程图 Y N修改模块流程图程序/*修改模块*/void modify()struct equip mod;int t,i,m,w,addr=-1;char number4= , name11=;
9、nInput the equipmentnumber or name ( 1:the number 2:the name ):What is your choice:if(m=1|m=2) w=0;else w=1;while(w=1);switch(m) case 1: printf(nnPlease input the equipments number:_bbbb scanf(%s,number); case 2:Please input the equipments name:_bbbbbbbbbbb,name);t;i+)/*查找要修改的仪器*/ if(strcmp(equi.nam
10、e,name)=0|strcmp(equi.number,number)=0) addr=i;nnPlease input the new information:%s%s%s%s%s%s%s%d,mod.number,mod.name,mod.b_time,mod.bin_time,mod.bout_time,mod.giveb_time,mod.repair_time,&mod.state); strcpy(equi.number,mod.number);strcpy(equi.name,mod.name);strcpy(equi.b_time,mod.b_time);strcpy(equi.bin_time,mod.bin_time);strcpy(eq
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1