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