C语言课程设计仪器仪表管理系统报告

  • 格式:doc
  • 大小:283.50 KB
  • 文档页数:41

C学院: 自动化学院专业: 自动化 班级: 231XXX 姓名: XXX语言课程设计 报告学号:231XXX-XX目录1.题目概述,总体设计--------------------------------第1页2.详细设计,菜单函数--------------------------------第2页3.功能模块:录入模块--------------------------------第3页4.状态改变模块--------------------------------------第4页5.状态改变,借出归还--------------------------------第6页6.状态改变,维修------------------------------------第7页7.状态改变,删除------------------------------------第8页8.状态查询模块--------------------------------------第9页9.按名称查询----------------------------------------第11页10.按时间点/段查询----------------------------------第12页11.公共函数-----------------------------------------第13页12.上机实践-----------------------------------------第14页13.程序的亮点与不足---------------------------------第17页14.总结---------------------------------------------第18页题目:仪器仪表管理系统[要求]系统功能的基本要求:(1) 新的仪器仪表信息录入。

(2) 在借出、归还、维修时对仪器仪表信息的修改。

(3) 对报废仪器仪表信息的删除。

(4) 按照一定的条件查询、统计符合条件的仪器仪表信息; 查询功能至少应包括仪器仪表基本信息的查询、按时间段(如在2004 年1月1日到2004 年10 月10 日购买、借出、维修的仪器仪表等) 查询、按时间点(借入时间、借出时间、归还时间) 查询等,统计功能至少包括按时间段统计、按仪器仪表的基本信息统计等。

(5) 对查询、统计的结果打印输出。

[提示]数据结构采用结构体。

仪器仪表信息包括仪器仪表名、仪器仪表编号、购买时间、借入时间、借出时间、归还时间、维修时间、状态信息(0 代表可借出,1代表可借入,2 代表正在维修) 等。

需求分析:根据题目要求,由于仪器仪表信息是存放在文件,所以应提供文件的输入、输出等操作; 在程序中要浏览仪器仪表的信息。

应提供录入、显示、查找,修改等操作; 另外还应提供键盘式选择菜单实现功能选择。

总体设计:根据上面的需求分析,可以将这个系统的设计分为三个大的模块: 仪表仪器录入、仪表仪器修改(删除)、仪表仪器查询详细设计(一) 主函数 主函数一般设计得比较简洁,只提供输入、处理和输出部分的函数调用。

其中各功能模块用菜单方式选择。

其中流程图如下:[程序]其中为主函数设定了一个菜单函数,方便用于选择其他模块函数。

用getch0;获得所按下的键值,用函数内的局部静态变量储存键值对应的其他功能函数。

void menu(char c) /*菜单函数*/{ static int n=0; //内部变量if(c=='s'||c=='S') n++;if(c=='w'||c=='W') n--;if(n==5) n=1;if(n==0) n=4; if(c==13){ switch(n){case 1:if(insert ()==0) insert (); break; //录入case 2:change();break; //修改case 3:serch(); break; //查询case 4:exit(0); //退出程序}; }system("cls");printf("\n\n");printf(" 仪器仪表管理系统\n"); printf("\n");printf(" 姓名:xxx "); printf(" 班级231xxx");printf("\n\n");if(n=1)printf(" -->仪器仪表录入<-- \n");elseprintf(" 仪器仪表录入\n");printf("\n");if(n=2)printf(" -->仪器仪表借还/删除<-- \n");elseprintf(" 仪器仪表借还/删除\n");printf("\n");if(n=3)printf(" -->仪器仪表查询<-- \n");elseprintf(" 仪器仪表查询\n");printf("\n");if(n=4)printf(" -->退出程序<-- \n");elseprintf(" 退出程序\n");printf("\n");//主函数void main(){ system("cls");printf("\n\n\n\n");printf(" -->仪器仪表管理系统<-- \n");printf("\n");printf(" -->按W向上选择<-- \n");printf(" -->按S向下选择<-- \n");printf(" -->按回车确定选择<-- \n");printf("\n");printf("\n");printf(" -->按任意键进入系统<-- \n");printf(" <-----------------> \n");getch();menu('s');while(1) menu(getch()); }(二)各功能模块设计[数据结构]数据结构选用结构体数组。

这里只简单的给仪器仪表两个部分,一个为仪器仪表的名称、字符串函数,一个为仪器仪表的各个时间点的状态(定义一个time的三维数组,数组下标表示年月日,数组的值表示仪器的状态)。

#define buy 1 //购买#define lean 2 //借出#define repair 3 //维修#define inlib 4 //空闲#define year_max 3000#define month_max 12#define day_max 31#define N 100 //预设仪器最大数int n; //仪器数struct equment{char name[100];int time [year_max+1][month_max+1][day_max+1]; }equ[N];(1)录入模块通过strcpy函数实现仪器名称的录入,state函数实现仪器状态的更改。

【程序】void insert(){ int i,j_year,j_month,j_day,year,month,day;char equ_input[100];system("cls");printf("\n\n\n\n");printf(" -->仪器仪表管理系统<-- \n"); printf("\n\n\n\n");printf(" 请输入仪器的名称:");scanf("%s",&equ_input);if(presence(equ_input)!=0){printf("\n");printf("\n");printf(" 对不起!此仪器已购买\n ");printf("\n");printf(" 录入失败,请按任意键返回主菜单\n" );printf("\n");printf(" <-----------------> \n");getch();}else{ int state (int year,int month,int day,int n,int s);n++;strcpy(equ[n].name,equ_input); //将equ_input复制给equ[equ_num].name printf("\n");printf(" 请输入购买时间(年/月/日)(例如1998/2/15):");scanf("%d/%d/%d",&year,&month,&day);state(year,month,day,n,inlib); // equ[n] 将当天状态改为空闲equ[n].time[year][month][day]=buy; //equ[n] 将该天以后状态改为购入//printf("%d",equ[n].time[year][month][day]);printf("\n");printf("\n");printf(" 录入成功,请按任意键返回主菜单\n");printf("\n");printf("\n");printf(" <-----------------------------> \n");getch(); } }(二)状态改变模块该模块包括对仪器仪表的借出、归还、维修、报废等小模块的操作,仍然用getch();函数获取键值来做上下选择。