C语言实习报告仪器仪表管理系统Word下载.docx
- 文档编号:246832
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:34
- 大小:605.14KB
C语言实习报告仪器仪表管理系统Word下载.docx
《C语言实习报告仪器仪表管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《C语言实习报告仪器仪表管理系统Word下载.docx(34页珍藏版)》请在冰点文库上搜索。
在程序中需要浏览仪器仪表的信息,应提供显示、查找、删除、添加、修改等操作;
另外还提供键盘式选择菜单实现功能选择。
总体设计
根据上面的需求分析,可以将这个系统的设计分为以下几个模块:
输入模块、添加模块、修改模块、删除模块、查找模块、浏览模块
详细设计
2.主函数
主函数设计比较简单,只有一个函数调用,被调用的函数提供输入,处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
此函数为菜单函数,执行完每部分模块后能够方便返回到系统界面。
intmain()
{menu();
}
菜单函数的主要结构用流程图表示如下:
程序:
voidmenu()
{intn,w;
do
{puts("
\t\t*****************仪表仪器信息管理系统**********************\n\n"
);
puts("
\t\t\t\t经济管理学院喻骏斯学号:
20081003064"
\t\t\t\t1.仪器信息录入"
puts("
\t\t\t\t2.添加新的仪器"
\t\t\t\t3.修改仪器信息"
\t\t\t\t4.删除仪器信息"
\t\t\t\t5.查询仪器信息"
\t\t\t\t6.浏览"
\t\t\t\t7.退出"
\n\n\t\t********************我是分界线********************\n"
printf("
选择您需要的服务(1-7):
[]\b\b"
scanf("
%d"
&
n);
if(n<
1||n>
7)
{w=1;
getchar();
}
elsew=0;
}while(w==1);
switch(n)
{case1:
enter();
break;
case2:
add();
case3:
modify();
case4:
del();
case5:
search();
case6:
browse();
case7:
exit(0);
仪器仪表信息采用结构体变量类型存放,成员包括仪器名称、编号、购买时间、供稿时间、伸出时间、归还时间、维修时间、状态信息(0代表可借出,1代表已借出,2代表正在维修,-1代表删除).
程序:
voidenter()
{inti,n;
您要输入的仪器数量(1-%d)?
"
N);
\n请输入相关信息\n\n"
for(i=0;
i<
n;
i++)
{printf("
\n输入第%d台仪器的信息.\n"
i+1);
input(i);
if(i!
=0)save(n);
menu();
流程图如下
该模块的功能是用户需要增加新的仪器记录,请从键盘输入并逐条写到原来的输入文件中,采用追加方式打开文件。
由此设计得流程图如下:
voidadd()
{inti,n,b,k;
FILE*fp;
n=load();
您想要添加的仪器的数量(0-%d)?
:
N-1-n);
b);
k=b+n;
for(i=n;
k;
{
\n请输入第%d台仪器的信息.\n"
i-n+1);
if((fp=fopen("
machine.txt"
"
ab"
))==NULL)
不能打开文件\n"
if(fwrite(&
m[i],sizeof(structmachine),1,fp)!
=1)
文件书写错误\n"
fclose(fp);
printf_back();
该模块的功能是显示所有仪器信息,考虑到记录较多,采用分屏显示记录,用户输入要修改仪器的编号,根据编号找到仪器记录,并提示用户该仪器是借出,归还,还是要维修,根据用户选择进行修改相应信息,并将修改后的信息存入相应的文件里面,以保存所有修改的记录。
流程图:
voidmodify()
{
structmachines;
inti,n,k,w0=1,w1,w2=0;
k=-1;
/*给用户看全部记录以便确认要修改的记录*/
printf_face();
if((i!
=0)&
&
(i%10==0))
{printf("
\n\nRememberNO.whichneededmodify.\n按任意键继续......."
getchar();
\n\n"
}
printf_one(i);
do
\n\n请输入您想修改的仪器编号!
NO.:
%s"
s.num);
i++)
if(strcmp(s.num,m[i].num)==0)
{k=i;
s=m[i];
if(k==-1)
\n\n该仪器已借出!
请再次查询"
}while(k==-1);
printf_one(k);
w1=modify_data(k);
if(w1==1)
\n信息修改成功~_~.\n\n请问您想修改其它仪器信息吗?
\n\n\t1).是2).储存并返回\t[]\b\b"
w0);
w2=1;
else
{w0=0;
if(w2==1)
m[k]=s;
if(w0!
=1&
w2==1)
save(n);
}while(w0==1);
该模块与修改模块一样先显示所有仪器信息,同样采用分屏显示,显示完所有记录后,用户输入要删除仪器的编号,根据编号找到该项仪器,并删除。
删除时将该项仪器的状态为-1,保存时状态为-1的跳过。
流程图
voiddel()
/*给用户看全部记录以便确认要删除的记录*/
\n\nRememberNO.whichneededdeleted.\n按任意键继续......."
}
\n\n输入您要删除的仪器编号!
第:
\n\n仪器不存在!
请再次输入"
您确定吗?
\n\n\t\t1).确定\n\t\t2).返回而不储存\n"
);
请选择?
[]\b\b"
w1);
{m[k].condition=-1;
\n删除成功~_~.\n\n您还想删除其它仪器吗?
\n\n\t1).是的2).储存并返回\t[]\b\b"
=1||w2==1)
该模块的功能是显示所有仪器仪表信息。
采用分屏显示
voidbrowse()
{
inti,n;
i%10==0)
\n\n按任意键继续........"
/*调用显示一个记录的函数*/
\t有%d台仪器的记录.\n"
n);
\n按任意键继续.............\n"
/*按任意键*/
查找与统计合在一起,分为其它信息查找,按时间段和时间点方式查找,该模块提供选择菜单,根据用户的选择以实现不同方式的查找与统计。
voidsearch()
\t\t=====================菜单====================\n\n"
\t\t\t\t查询与统计"
\t\t\t\t1.按名称"
\t\t\t\t2.按编号"
\t\t\t\t3.按仪器状态信息"
\t\t\t\t4.按时间段"
\t\t\t\t5.按时间点"
\t\t\t\t6.返回"
\n\n\t\t==========================================\n"
请选择查询方式(1-6):
6)
printf("
inputerror!
\n"
sbmnc(n);
sbptime();
sbdtime();
menu();
}a.按基本信息查找[需求分析]
调用加载函数,根据用户的选择,1为按名称查找,2为按编号查找,为3按状态查找,找到一条记录计数器加一,查找完后输出统计结果,讯问是否继续查找,是,则重新查找,否则返回上一级函数。
voidsbmnc(intc)
inti,n,j,k,w1=1,w2;
structmachinet;
do{
if(c==1){
\n\n输入仪器名称!
名称:
t.name);
for(i=0,j=0;
if(strcmp(t.name,m[i].name)==0)
{k=i;
j++;
\n有%d%s.台仪器符合这一名称"
if(c==2)
\n\n输入仪器编号!
编号:
t.num);
if(strcmp(t.num,m[i].num)==0)
\n有%d%s.台仪器符合这一编号"
if(c==3){
\n\n输入您想要查询的仪器的状态信息!
状态信息:
t.condition);
if(t.condition==m[i].condition)
printf_one(k);
\n有%d台仪器处于这种状态"
if(k==-1)
\n\n找不到符合要求的结果!
"
\n\n您想再次尝试吗?
\n\t1).再试一次2).返回[]\b\b"
if(w1!
=1)break;
}while(k==-1&
w1==1);
您还想做什么?
\n\t1)再次搜索2).返回[]\b\b"
w2);
}while(w2==1);
search();
b.按时间段查找
[需要分析]
同样提供一个菜单,供用户选择,1为查询购买情况,2为查询借入情况,3为查询借出情况,4为归还情况。
5为维修情况,查询结果后,询问是否返回。
程序
voidsbparttime(intc)
{inti,j,n;
longt,s;
\n\n输入您想查询的时间段!
\n从:
%ld"
t);
到:
s);
if(c==1){n=load();
if(t<
=m[i].buy_time&
m[i].buy_time<
=s)
{printf_one(i);
if(j==0)puts("
这一时间段内没有仪器购入."
elseprintf("
在这一时间段内有%d台仪器购入.\n\n"
j);
if(c==2){n=load();
=m[i].borrow_time&
m[i].borrow_time<
这一时间段内没有仪器借入."
在这一时间段内有%d台仪器借入.\n\n"
lended.txt"
rb"
))==NULL)/*以输出打开方式,在此前的记录被覆盖*/
\n打不开文件\n"
for(n=0;
!
feof(fp);
n++)
fread(&
m[n],sizeof(structmachine),1,fp);
n-1;
=m[i].lend_time&
m[i].lend_time<
这一时间段内没有仪器借出."
在这一时间段内有%d台仪器借出.\n\n"
if(c==4){
returned.txt"
=m[i].return_time&
m[i].return_time<
这一时间段内没有仪器返还."
在这一时间段内有%d台仪器返还.\n\n"
if(c==5){
mended.txt"
i<
=m[i].mend_time&
m[i].mend_time<
这一时间段内没有仪器在维修."
在这一时间段内有%d台仪器在维修.\n\n"
c.按时间点查找
分按时间段查找基本一样。
voidsbdtime()
{intn,w,w2;
do{
\t\t=====================MENU====================\n\n"
\t\t\t\t1.按购买时间"
\t\t\t\t2.按借入时间"
\t\t\t\t3.按借出时间"
\t\t\t\t4.按返还时间"
\t\t\t\t5.按修理时间"
选择要查询的内容(1-6):
if(n<
{w=1;
无效输入!
if(n==6)search();
elsebdetailtime(n);
您想做什么?
\n\t1)再搜索一次2).返回[]\b\b"
voidbdetailtime(intc)
{inti,n,j,k,w2;
longt;
if(c==1||c==2)n=load();
else{
if(c==3){if((fp=fopen("
if(c==4){if((fp=fopen("
if(c==5){if((fp=fopen("
n-=1;
\n\n输入您想要搜索的时间点!
\n\t==============buy=============="
for(i=0,j=0,k=-1;
if(t==m[i].buy_time)
这一时间没有仪器购入.\n"
这一时间有%d台仪器购入.\n"
if(c==2){
\n\t===============borrow============="
if(t==m[i].borrow_time)
这一时间没有仪器借入."
这一时间有%d台仪器借入."
\n\t======
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实习 报告 仪器仪表 管理 系统