仪器仪表管理系统C语言课程实习报告Word格式.docx
- 文档编号:15852078
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:30
- 大小:262.68KB
仪器仪表管理系统C语言课程实习报告Word格式.docx
《仪器仪表管理系统C语言课程实习报告Word格式.docx》由会员分享,可在线阅读,更多相关《仪器仪表管理系统C语言课程实习报告Word格式.docx(30页珍藏版)》请在冰豆网上搜索。
数据结构采用结构体。
仪器仪表信息包括仪器仪表名、仪器仪表编号、购买时刻、借入时刻、借出时刻、归还时刻、维修时刻、状态信息(0代表可借出,1代表已借出,2代表正在维修)等。
二、需求分析
按照题目要求,需要把仪器仪表信息的的数据存储在文件里,所以需要提供文件的输入输出等操作;
在程序中要提供修改,删除,查找等操作;
另外还应该提供键盘式选择菜单实现功能选择。
三、整体设计
系统功能模块图
四、详细设计
1.主函数
主函数一般设计得比较简练,只提供输入输出和功能处置的函数挪用。
其各功能模块用菜单方式选择。
本题将main()函数体内的界面选择部份语句单独抽掏出来作为一独立函数,目的在于系统执行完每部份功能模块后能够方便返回到系统界面。
【程序】
main()
{menu();
}
菜单部份设计如下:
【流程图】
N
Y
主函数的菜单流程图
menu()
{
intn,w;
/*变量n保留选择菜单数字,w判断输入的数字是不是在功能菜单对应数字范围内*/
do
{puts("
\t\t**************MENU********************\n\n"
);
puts("
\t\t\t\t"
\n\n\t\t******************************************\n"
printf("
Choiceyournumber(1-5):
[]\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
5)/*对选择的数字作判断*/
{w=1;
getchar();
}
elsew=0;
while(w==1);
switch(n)
{case1:
enter();
break;
/*输入模块*/
case2:
modify();
/*修改模块*/
case3:
search();
/*查找模块*/
case4:
delete();
/*删除模块*/
case5:
exit(0);
/*退出*/
2.各功能模块设计
(1)输入模块
【数据结构】
【分析】
单独看各数据信息,仪器仪表名是字符型,可采用字符型数组;
仪器仪表编号、购买时刻、借入时刻、借出时刻、归还时刻、维修时刻应采用实型;
状态信息是整数,采用整型。
实际上操作时发觉只有字符型的数据能够在文件中成功被保留,所以本题所有数据一概采用字符型。
structmachine
{charname[5];
charnumber[5];
charbuy_time[5];
charborrowin_time[5];
charborrowout_time[5];
charreturn_time[5];
charrepair_time[5];
charsta[5];
chartime[5];
/*time为下面程序中按时刻查找和修改时记录输入的时刻*/
}mac[N];
/*mac[N]中每一个数组元素对应一个仪表仪器*/
【注意】
mac[N]中的N是仪表仪器个数,程序中采用宏概念的方式,能够随时在源程序宏概念中改,本程序宏概念#defineN50。
【流程图】
输入模块流程图
【程序】
/*************************输入模块***********************/
enter()/*输入模块*/
{inti,n;
Howmanymachinesdoyouwanttoenter(0-%d)?
:
"
N-1);
/*要输入的记录个数*/
\nEnterdatanow\n"
\nnamenumberbuy_timeborrowin_timeborrowout_timereturn_timerepair_timestate\n"
for(i=0;
i<
n;
i++)
{input(i);
/*挪用输入函数*/
if(i!
=0)save(n);
/*挪用保留函数*/
printf_back();
/*一个任务结束时让用户选择是阅读仍是返回*/
(2)修改模块
[需求分析]
该模块的功能是显示所有仪器仪表信息,考虑到记录较多,建议采用分屏显示。
显示完所有记录后,用户输入要修改的仪器仪表编号,按照编号查找仪器仪表记录,并提示用户修改该记录的哪部份信息,是仪器仪表的借出时刻、归还时刻、修理时刻仍是状态,按照用户选择修改相应信息。
[流程图]
YN
Y
修改模块流程图
[程序]
/*************************修改模块***********************/
modify()/*修改模块*/
{structmachinem;
FILE*fp;
inti,n,k,w0=1,w1,w2=0;
n=load();
{k=-1;
/*给用户看全数记录以便确认要修改的记录*/
printf_face();
/*挪用显示数据结构项目函数*/
{if((i!
=0)&
&
(i%10==0))/*分屏显示*/
{printf("
\n\npassanykeytocontinue..."
getch();
\n\n"
printf_one(i);
/*挪用显示一个记录的函数*/
{printf("
\npleaseentermachinenumber:
%s"
;
/*输入要修改的仪器仪表的编号*/
i++)/*查找要修改的仪器仪表的记录*/
if(strcmp,mac[i].number)==0)
{k=i;
/*找到要修改的记录*/
m=mac[i];
/*把mac[i]备份给m,以便用户后悔时恢复*/
if(k==-1)printf("
\n\nNOexist!
Tryagain"
}while(k==-1);
/*k==-1时表示没有找到*/
printf_one(k);
w1=modify_data(k);
/*修改仪器仪表记录而且返回保留控制值w1,w1=1则表示用户以确认修改*/
if(w1==1)/*w1==1表示用户肯定这次修改*/
\nSuccessful^_^.\n\nAreyoumodifyanother?
\n\n\t1).Yes2).Backwithsave\t[]\b\b"
w0);
w2=1;
/*控制保留,使w2=1是标记已有过修改*/
else
{w0=0;
if(w2==1)
mac[k]=m;
}/*走到这里是由于用户没有确认这次修改(在挪用修改函数w1=modify_data(k)时没有确认),使w0=0,为了终止循环;
mac[k]=m则把备份的m恢复给mac[k],如此的益处是确保在此之前修悔改的成功保留,而本次不修改*/
if(w0!
=1&
w2==1)/*w0!
=1则表示正常返回,w2=1表示在此之前有过修改,现在就保留用户已经确认修改的并返回*/
save(n);
/*w2!
=1表示在这次之前没有修悔改,而又反悔这次修改,则不保留返回*/
while(w0==1);
说明:
挪用w1=modify_data(k)修改函数时,若返回值为1则表示用户在修改函数里面确认了这次修改,其中i表示第i个记录(要修改的);
若返回值不为1则不保留这次修改,但保留这次之前的修改,这由w2来控制,w2=1则表示有过用户修改确认史。
(3)查找模块
查找模块流程图
intsearch()
{intm;
\t\t*********************************\n\n"
\n\n\t\t***************************\n"
Pleasechoiceyournumber(1-3):
m);
switch(m)
common_search();
point_search();
(1.1)大体查找
[分析]
大体信息查找包括了仪器仪表的名称和编号的查找,所以该子功能模块的功能是先让用户选择是按仪器仪表名称仍是按仪器仪表编号查找,按照用户选择的进行查找,找到以后增加删除和修改功能。
[流程图]
12
YN
YN
大体查找模块流程图
/*************************大体查找模块***********************/
intcommon_search()/*大体查找模块*/
{inti,n,k,w1=1,w2,w3,w4;
structmachinem;
Searchthemachinebynameornumber?
1-name,2-number:
i);
if(i==1)
{do
\n\nEnterthemachinenamethatyouwanttosearch!
name:
/*输入要查找的仪器仪表的名称*/
i++)/*查找想要的记录*/
if(strcmp,mac[i].name)==0)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 仪器仪表 管理 系统 语言 课程 实习 报告