当前位置:首页 > C语言课程设计
int x=0; while (1) {
if (c=='s'||c=='S') x++; if (c=='w'||c=='W') x--; if (x==5) x=1; if (x==0) x=4; if (c==13) { switch (x) { case 1: name(); break; case 2: time_d(); break; case 3: time_p(); break; case 4: return; }; }
system(\ printf(\
printf(\ |-----------------仪器仪表管理系统----------------|\\n\
if (x==1) printf(\ -------> 按名称查询 <-------\\n\
else printf(\ 按名称查询\\n\ if (x==2) printf(\ -------> 按时间段查询 <-------\\n\
else printf(\ 按时间段查询\\n\ if (x==3) printf(\ -------> 按时间点查询 <-------\\n\
else printf(\ 按时间点查询\\n\ if (x==4) printf(\ -------> 返回主菜单 <-------\\n\
else printf(\ 返回主菜单\\n\ printf(\ printf(\ |-------------------------------------------------|\\n\ c=getch();
} /* while(1) */ }
因不管查找条件是什么,最终都会对应到需查找的仪器仪表上,故补充一个公共函数condi_p();,输出查找一个仪器仪表的结果
[程序]
void condi_p(int year,int month,int day,int n,int *bool_lean,int *bool_repair) {
if (equ[n].time[year][month][day]==buy)
printf(\ M年-月-日购买%s仪器仪表\\n\ /* 借出&&归还 */ if
(equ[n].time[year][month][day]==lean&&(*bool_lean)==0) {
printf(\ M年-月-日借出%s仪器仪表\\n\ (*bool_lean)=1; } if
(equ[n].time[year][month][day]==inlib&&(*bool_lean)==1) {
printf(\ M年-月-日归还%s仪器仪表\\n\ (*bool_lean)=0; } /* 借出&&归还 */ /* 维修&&修完 */ if
(equ[n].time[year][month][day]==repair&&(*bool_repair)==0) {
printf(\ M年-月-日开始维修%s仪器仪表\\n\ (*bool_repair)=1; } if
(equ[n].time[year][month][day]==inlib&&(*bool_repair)==1) {
printf(\ M年-月-日结束维修%s仪器仪表\\n\ (*bool_repair)=0; } /* 维修&&修完 */
}
1按名称查询 ○
首先输入仪器仪表的名称,然后在结构体数组中查找是否存在这个仪器仪表,若是则循环该仪器仪表的所有时间点来判断改时间点处于什么状态,并用公共函数condi_p();来输出。
[程序] int name() {
char equ_input[100]; int i; system(\ printf(\
printf(\ |-----------------仪器仪表管理系统----------------|\\n\
printf(\ printf(\ 请输入仪器的名字:\ scanf(\ printf(\ i=presence(equ_input); if (i!=0) {
int j_y,j_m,j_d,bool_lean=0,bool_repair=0; for (j_y=0;j_y<=year_max;j_y++)
for (j_m=0;j_m<=month_max;j_m++) for (j_d=0;j_d<=day_max;j_d++) {
//P(j_y,j_m,j_d,i); system(\
condi_p(j_y,j_m,j_d,i,&bool_lean,&bool_repair); } /* for for for */ printf(\ printf(\ 查询完成,请按任意键返回上一级菜单\\n\ printf(\ |-------------------------------------------------|\\n\ getch(); return; } /* if */ else { printf(\ 对不起,找不到该仪器\\n\ printf(\ printf(\ 可能是由于您输入仪器的名称错误\\n\ printf(\ printf(\ 也可能是由于无此仪器,还未购买\\n\ printf(\
printf(\ 查询失败,请按任意键返回主菜单\\n\ printf(\ printf(\ |-------------------------------------------------|\\n\ getch(); return;
} /* else */ return; } 2按时间点查询 ○
输入需查询的时间点,然后循环每个仪器仪表在该时间点的状态且判断,并用公共函数condi_p();来输出。
[程序]
int time_p()
{ int i,year,month,day,equ_tmp,bool_lean[101],bool_repair[101]; for (i=0;i<101;i++) { bool_lean[i]=0; bool_repair[i]=0; } system(\ printf(\
printf(\ |-----------------仪器仪表管理系统----------------|\\n\ printf(\ printf(\ 请输入时间点:(以此格式年/月/日)\ scanf(\ printf(\ for(equ_tmp=1;equ_tmp<=equ_num;equ_tmp++)
condi_p(year,month,day,equ_tmp,&bool_lean[equ_tmp],&bool_repair[equ_tmp]); /* 每个仪器 */
printf(\ printf(\ 查询完成,请按任意键返回上一级菜单\\n\ printf(\ |-------------------------------------------------|\\n\ getch(); return; } 2按时间段查询 ○
首先输入起始时间点和结束时间点,应为每个月的天数不完全一样,用三重循环来做比较麻烦,故采用模拟法,设三个变量i、j、k,分别对应年,月,日,然后赋予初值为起始时间点,设置一无限循环,循环内设有判断是否i、j、k的值为结束时间点的语句。若是则跳出循环,否则继续循环。同时,在循环内k总是自加,当k自加至当月最大天数时,j就自加,当j自加至当年最大月数时,i自加。
[程序]
int time_d()
{ int year1,month1,day1,year2,month2,day2,
i,j,k,equ_tmp,bool_lean[101],bool_repair[101]; for (i=0;i<101;i++) { bool_lean[i]=0; bool_repair[i]=0; } system(\
共分享92篇相关文档