实验设备管理系统设计.docx
《实验设备管理系统设计.docx》由会员分享,可在线阅读,更多相关《实验设备管理系统设计.docx(21页珍藏版)》请在冰豆网上搜索。
![实验设备管理系统设计.docx](https://file1.bdocx.com/fileroot1/2023-1/6/634111f6-8ced-440c-b4b1-6b2f52ea3ce0/634111f6-8ced-440c-b4b1-6b2f52ea3ce01.gif)
实验设备管理系统设计
山东建筑大学
课程设计成果报告
题目:
实验设备管理系统设计
课程:
程序设计基础
院(部):
管理工程学院
专业:
班级:
学生姓名:
学号:
指导教师:
完成日期:
1设计目的
本课程设计是信息管理与信息系统专业重要的实践性环节之一,是在学生学习完《程序设计基础》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
1、巩固和加深学生对C语言课程的基本知识的理解和掌握;
2、掌握C语言编程和程序调试的基本技能;
3、利用C语言进行基本的软件设计;
4、掌握书写程序设计说明文档的能力;
5、提高运用C语言解决实际问题的能力。
2设计任务
(1)实验设备管理系统设计
相关信息包括:
设备编号、设备种类(如:
计算机、打印机、扫描仪等)、设备价格、购入日期、是否报废、报废日期等(设备编号唯一)。
(2)系统要求实现如下功能:
1)系统功能以菜单方式工作;
2)数据的添加,以两种方式添加:
从键盘直接输入和从现有文件中读取数据;
3)数据的插入:
从指定位置插入一条记录;
4)数据的输出,以两种方式输出:
在屏幕上直接输出和输出数据到文件中;
5)数据的删除;
6)数据的查找,通常以两种方式进行查找,如姓名、记录号(或学号、职工号等);
7)数据的排序;
8)退出系统。
3系统总体设计
4系统详细设计
整个系统可设计为实验设备信息添加模块,实验设备信息显示模块,实验设备信息插入模块,实验设备查找(可用Name和ID两种方式查找)模块,实验设备删除模块,实验设备排序模块
该系统能够提供设备添加和显示操作,对设备进行分类统计,提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备ID号,设备名称,两种方式查询,且实现了对设备的删除功能。
建立实验设备信息结构体,结构体成员包括设备ID号,设备种类,设备名称,设备价格,设备购入日期,是否报废,报废日期;从而实现对设备信息的整体调用。
4.1主函数
voidmain()
{
menu();
}
4.2主菜单
难点:
自定义函数的调用
voidmenu()
{
intflag;
while
(1)
{
printf("\t\t\t\t设备管理系统\n");
printf("************************************目录************************************");
printf("\n1添加记录\n");
printf("\n2显示记录\n");
printf("\n3插入记录\n");
printf("\n4Name查找记录\n");
printf("\n5ID查找记录\n");
printf("\n6删除记录\n");
printf("\n7排序记录\n");
printf("\n0*-EXIT-*\n");
printf("请输入你要操作的序号:
");
scanf("%d",&flag);
switch(flag)
{
case0:
printf("\n>>>>>>>>>>提示:
已经退出系统,ByeBye!
\n");break;
case1:
Add();break;//增加记录
case2:
Disp();break;//显示记录
case3:
Insert();break;//插入记录
case4:
SearchByName();break;//Name查找记录
case5:
SearchByID();break;//ID查找记录
case6:
del();break;//删除记录
case7:
paixu();break;//排序记录
default:
printf("\n>>>>>>>>>>提示:
输入错误!
\n");break;
}
}
}
4.3添加记录
voidAdd()
{
charc='Y';
intchoice;
while(c=='Y')
{
printf("\n请你输入设备ID号:
");
scanf("%d",&eq[n].ID);
printf("\n请输入设备名称:
");
scanf("%s",eq[n].name);
printf("\n请输入设备种类:
");
scanf("%s",eq[n].kind);
printf("\n请输入报废日期:
");
scanf("%s",eq[n].over);
printf("\n请输入设备是否报废:
");
scanf("%s",eq[n].yesno);
printf("\n请输入设备购买时间:
");
scanf("%s",eq[n].time);
printf("\n请输入设备价格:
");
scanf("%s",eq[n].price);
n++;
printf(">>>>>>>>>>提示:
已经完成一条记录的添加。
\n");
printf("输入Y继续,否则输入N!
\n");
fflush(stdin);
c=getchar();
}
printf(">>>>>>>>>>提示:
输入0则返回主菜单!
\n");
scanf("%d",&choice);
if(choice==0)
menu();
}
4.4显示记录
voidDisp1()
{
inti;
printf("ID号\t名称\t种类\t报废日期\t是否报废\t购买时间\t价格\n");
for(i=0;iprintf("%d\t%s\t%s\t%s\t\t%s\t\t%s\t\t%s\n",eq[i].ID,eq[i].name,eq[i].kind,eq[i].over,eq[i].yesno,eq[i].time,eq[i].price);
}
voidDisp()
{
Disp1();
intchoice;
printf(">>>>>>>>>>提示:
输入0则返回主菜单!
\n");
scanf("%d",&choice);
if(choice==0)
menu();
}
4.5插入记录
难点:
如何找到插入的条件利用for语句进行插入,且使得插入位置后的数据后移;
voidInsert()
{
inti,id,choice;
printf("请输入要插入的位置:
\n");
scanf("%d",&id);
for(i=n;i>id;i--)
eq[i]=eq[i-1];
n++;
printf("请输入需要插入的设备号:
");
scanf("%d",&eq[id].ID);
printf("\n请输入设备名称:
");
scanf("%s",eq[id].name);
printf("\n请输入设备种类:
");
scanf("%s",eq[id].kind);
printf("\n请输入报废日期:
");
scanf("%s",eq[id].over);
printf("\n请输入设备是否报废:
");
scanf("%s",eq[id].yesno);
printf("\n请输入设备购买时间:
");
scanf("%s",eq[id].time);
printf("\n请输入设备价格:
");
scanf("%s",eq[id].price);
printf(">>>>>>>>>>提示:
已经完成记录的插入。
\n");
printf(">>>>>>>>>>提示:
输入0则返回主菜单!
\n");
scanf("%d",&choice);
if(choice==0)
menu();
}
4.6Name查找记录
难点:
如何找到要查找的记录;利用strcmp语句即可;
voidSearchByName()
{
intflag=0,i,choice;
charname[15];
printf("请输入要找的设备名:
");
scanf("%s",name);
for(i=0;iif(strcmp(name,eq[i].name)==0)
{
flag=1;
printf("ID号\t名称\t种类\t报废日期\t是否报废\t购买时间\t价格\n");
printf("%d\t%s\t%s\t%s\t\t%s\t\t%s\t\t%s\n",eq[i].ID,eq[i].name,eq[i].kind,eq[i].over,eq[i].yesno,eq[i].time,eq[i].price);
}
if(flag==0)
printf("Nofind!
\n");
printf(">>>>>>>>>>提示:
输入0则返回主菜单!
\n");
scanf("%d",&choice);
if(choice==0)
menu();
}
4.7ID查找记录
voidSearchByID()
{
intflag=0,i,choice;
intid;
printf("请输入要找的设备号:
");
scanf("%d",&id);
for(i=0;iif(id==eq[i].ID)
{
flag=1;
printf("ID号\t名称\t种类\t报废日期\t是否报废\t购买时间\t价格\n");
printf("%d\t%s\t%s\t%s\t\t%s\t\t%s\t\t%s\n",eq[i].ID,eq[i].name,eq[i].kind,eq[i].over,eq[i].yesno,eq[i].time,eq[i].price);
}
if(flag==0)
printf("Nofind!
\n");
printf(">>>>>>>>>>提示:
输入0则返回主菜单!
\n");
scanf("%d",&choice);
if(choice==0)
menu();
}
4.8删除记录
难点:
如何使删除后的数据前移;for括号内的表达式,即删除的条件;
voiddel()
{
inti,choice,p,j;
printf("请输入你要删除的设备号:
");
scanf("%d",&p);
for(i=0;iif(p==eq[i].ID)
break;
if(i{
for(j=i;jeq[j]=eq[j+1];
printf("记录已删除。
\n");
}
n--;
printf(">>>>>>>>>>提示:
输入0则返回主菜单!
\n");
scanf("%d",&choice);
if(choice==0)
menu();
}
4.9排序记录
难点:
引用第三变量;如何利用for循环语句;冒泡排序;结构体的整体调用;
voidpaixu()
{
inti,j;
structequipmentt;
printf("排序前数据:
\n");
Disp1();
for(i=0;ifor(j=0;jif(eq[j].ID>eq[j+1].ID)
{
t=eq[j];
eq[j]=eq[j+1];
eq[j+1]=t;
}
printf("thesortedIDnumbers:
\n");
Disp1();
}
5调试与测试
(1)主菜单
(2)添加记录
(3)显示记录
(4)插入记录
插入后显示
(5)Name查找记录
错误输入后的结果
(6)ID查找记录
(7)删除记录
删除后的显示
(8)排序记录
6课程设计心得与体会
通过这次课程设计使我学会综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力是重要的环节,是对我们实际能力的具体训练和考察过程。
随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。
回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个多星期的日子里,学到了很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。
在设计的过程中,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体的引用,自定义函数的定义与调用及其返回值……这次课程设计之后,一定要把以前所学过的知识重新温故。
在设计中遇到了很多编程问题,但在老师和同学的帮助下,终于得以解决,使得课程设计顺利完成。
7参考文献
1)作者:
王敬华林萍张清国
书名:
《C语言程序设计教程》(第二版)
出版社:
清华大学出版社
出版日期:
2009-08
2)作者:
王敬华等编著
书名:
《C语言程序设计教程(第二版)习题解答与实验指导》
出版社:
清华大学出版社
出版日期:
2009-10
8附录
#include
#include
#defineN100
intn=0;
structequipment
{
intID;
charname[15];
charkind[15];
charover[10];
charyesno[10];
chartime[10];
charprice[10];
}eq[N];
voidmenu();
voidAdd();
voidDisp1();
voidDisp();
voiddel();
voidInsert();
voidSearchByName();
voidSearchByID();
intSearch(intid);
voidpaixu();
voidmain()//主函数
{
menu();
}
voidmenu()//主菜单
{
intflag;
while
(1)
{
printf("\t\t\t\t设备管理系统\n");
printf("************************************目录************************************");
printf("\n1添加记录\n");
printf("\n2显示记录\n");
printf("\n3插入记录\n");
printf("\n4Name查找记录\n");
printf("\n5ID查找记录\n");
printf("\n6删除记录\n");
printf("\n7排序记录\n");
printf("\n0*-EXIT-*\n");
printf("请输入你要操作的序号:
");
scanf("%d",&flag);
switch(flag)
{
case0:
printf("\n>>>>>>>>>>提示:
已经退出系统,ByeBye!
\n");break;
case1:
Add();break;//增加记录
case2:
Disp();break;//显示记录
case3:
Insert();break;//插入记录
case4:
SearchByName();break;//Name查找记录
case5:
SearchByID();break;//ID查找记录
case6:
del();break;//删除记录
case7:
paixu();break;//排序记录
default:
printf("\n>>>>>>>>>>提示:
输入错误!
\n");break;
}
}
}
voidAdd()//添加记录
{
charc='Y';
intchoice;
while(c=='Y')
{
printf("\n请你输入设备ID号:
");
scanf("%d",&eq[n].ID);
printf("\n请输入设备名称:
");
scanf("%s",eq[n].name);
printf("\n请输入设备种类:
");
scanf("%s",eq[n].kind);
printf("\n请输入报废日期:
");
scanf("%s",eq[n].over);
printf("\n请输入设备是否报废:
");
scanf("%s",eq[n].yesno);
printf("\n请输入设备购买时间:
");
scanf("%s",eq[n].time);
printf("\n请输入设备价格:
");
scanf("%s",eq[n].price);
n++;
printf(">>>>>>>>>>提示:
已经完成一条记录的添加。
\n");
printf("输入Y继续,否则输入N!
\n");
fflush(stdin);
c=getchar();
}
printf(">>>>>>>>>>提示:
输入0则返回主菜单!
\n");
scanf("%d",&choice);
if(choice==0)
menu();
}
voidDisp1()//显示记录
{
inti;
printf("ID号\t名称\t种类\t报废日期\t是否报废\t购买时间\t价格\n");
for(i=0;iprintf("%d\t%s\t%s\t%s\t\t%s\t\t%s\t\t%s\n",eq[i].ID,eq[i].name,eq[i].kind,eq[i].over,eq[i].yesno,eq[i].time,eq[i].price);
}
voidDisp()
{
Disp1();
intchoice;
printf(">>>>>>>>>>提示:
输入0则返回主菜单!
\n");
scanf("%d",&choice);
if(choice==0)
menu();
}
voidSearchByName()//Name查找记录
{
intflag=0,i,choice;
charname[15];
printf("请输入要找的设备名:
");
scanf("%s",name);
for(i=0;iif(strcmp(name,eq[i].name)==0)
{
flag=1;
printf("ID号\t名称\t种类\t报废日期\t是否报废\t购买时间\t价格\n");
printf("%d\t%s\t%s\t%s\t\t%s\t\t%s\t\t%s\n",eq[i].ID,eq[i].name,eq[i].kind,eq[i].over,eq[i].yesno,eq[i].time,eq[i].price);
}
if(flag==0)
printf("Nofind!
\n");
printf(">>>>>>>>>>提示:
输入0则返回主菜单!
\n");
scanf("%d",&choice);
if(choice==0)
menu();
}
voidSearchByID()//ID查找记录
{
intflag=0,i,choice;
intid;
printf("请输入要找的设备号:
");
scanf("%d",&id);
for(i=0;iif(id==eq[i].ID)
{
flag=1;
printf("ID号\t名称\t种类\t报废日期\t是否报废\t购买时间\t价格\n");
printf("%d\t%s\t%s\t%s\t\t%s\t\t%s\t\t%s\n",eq[i].ID,eq[i].name,eq[i].kind,eq[i].over,eq[i].yesno,eq[i].time,eq[i].price);
}
if(flag==0)
printf("Nofind!
\n");
printf(">>>>>>>>>>提示:
输入0则返回主菜单!
\n");
scanf("%d",&choice);
if(choice==0)
menu();
}
voidInsert()//插入记录
{
inti,id,choice;
printf("请输入要插入的位置:
\n");
scanf("%d",&id);
for(i=n;i>id;i--)
eq[i]=eq[i-1];
n++;
printf("请输入需要插入的设备号:
");
scanf("%d",&eq[id].ID);
printf("\n请输入设备名称:
");
scanf("%s",eq[id].name);
printf("\n请输入设备种类:
");
scanf("%s",eq[id].kind);
printf("\n请输入报废日期:
");
scanf("%s",eq[id].over);
printf("\n请输入设备是否报废:
");
scanf("%s",eq[id].yesno);
printf("\n请输入设备购买时间:
");
scanf("%s",eq[id].time);
printf("\n请输入设备价格:
");
scanf("%s",eq[id].price);
printf(">>>>>>>>>>提示:
已经完成记录的插入。
\n");
printf(">>>>>>>>>>提示:
输入0则返回主菜单!
\n");
scanf("%d",&choice);
if(choice==0)
menu();
}
voiddel()//删除记录
{
inti,choice,p,j;
printf("请输入你要删除的设备号:
");
scanf("%d",&p);
for(i=0;iif(p==eq[i].ID)
break;
if(i{
for(j=i;jeq[j]=eq[j+1];
printf("记录已删除。
\n");
}
n--;
printf(">>>>>>>>>>提示:
输入0则返回主菜单!
\n");
scanf("%d",&choice);