设备管理系统.docx
- 文档编号:28362464
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:15
- 大小:26.01KB
设备管理系统.docx
《设备管理系统.docx》由会员分享,可在线阅读,更多相关《设备管理系统.docx(15页珍藏版)》请在冰豆网上搜索。
设备管理系统
《设备管理系统》
程序设计基础课程设计报告
二OO八年七月三日
目录
1.课程设计目的2
2.课程设计题目描述和要求2
3.课程设计报告内容3
3.1设备类(kehu)10
4.运算结果10
5.课程设计总结10
6.参考书目10
1课程设计目的
练习自己的动手能力,在学习理论的同时增强自己的编程能力,使理论与实践相结合,在学习书本的同时扩展自己的课外知识.
2课程设计题目描述和要求
2.1课程题目
设备管理系统
2.2课程要求
根据规定的题目,编写程序设计说明(程序设计文档),程序设计说明包括以下内容:
1、设计的简要说明
2、程序运行的软件环境
3、程序的组成模块及每个模块的基本功能
4、程序的使用方法
5、源程序清单
6、总结与体会
a)有启动和退出界面
b)采用按钮或菜单选择方法,选择相应的功能
c)要求系统具有下列功能;
(1)通过类实现。
设备信息包括编号、名称、单价、数量、故障,所属实验室
等字段;所录入的数据存入一个文本文件中,能根据情况能调出数据。
(2)设备信息的插入、删除功能。
(3)按编号进行排序功能。
(4)按设备名称查询功能:
完成按故障查询功能;完成按所属实验室查询功能。
3.调试
调试方法:
每编一个函数,就进行调试,检验此函数是否有问题。
在函数体中插入一些输出代码,这样可以检验函数在那个地方出了问题。
遇到的问题:
不知道如何用链表的方法进行排序。
解决问题:
在其他同学的帮助下,得以慢慢修改成功。
4.源程序:
#defineNULL0
#include
#include
#include
#include
usingnamespacestd;
structShebei//设备数据结构体
{
intbianhao;//编号
stringname;//名称
floatdanjia;//单价
intshuliang;//数量
stringguzhang;//故障
stringshiyanshi;//所属实验室
Shebei*next;
};
intn;
intmain()
{Shebei*creat(void);//用链表输入设备数据函数
Shebei*del(Shebei*,int);//用链表删除设备数据
Shebei*insert(Shebei*,Shebei*);//用链表插入设备数据
voidprint(Shebei*);//把设备数据录入文件夹并输出所有的设备数据函数
voidchaxun(Shebei*,int);//查询设备数据函数
voidtongji(Shebei*,int);//统计设备数据函数
voidpaixu(Shebei*);//排序设备数据函数
Shebei*head,tea;
intdel_bianhao,ab,aba;
cout<<"请输入设备数据,如果要结束请按0然后按回车键键:
"< head=creat();//返回头指针 print(head);//录入设备数据并输出所有设备数据 charc;//字符变量 inta=1; while(a! =0) { cout<<"输入A是删除设备"< cout<<"输入B是插入设备"< cout<<"输入C是设备查询"< cout<<"输入D是设备统计"< cout<<"输入E是设备排序"< cin>>c;//选择输入 switch(c) { case'A': { cout< "; cin>>del_bianhao;//输入要删除的编号 head=del(head,del_bianhao);//删除后返回链表的头地址 print(head);//录入设备数据并输出所有设备数据 }break; case'B': { cout< "< cout<<"输入设备编号: "< cin>>tea.bianhao; cout<<"输入设备名称: "< cin>>tea.name; cout<<"输入设备单价: "< cin>>tea.danjia; cout<<"输入设备数量"< cin>>tea.shuliang; cout<<"输入设备故障"< cin>>tea.guzhang; cout<<"输入设备所属实验室: "< cin>>tea.shiyanshi; head=insert(head,&tea);//插入后返回链表的头地址 print(head);//录入设备数据并输出所有设备数据 }break; case'C': { cout<<"输入1设备名称查询"< cout<<"输入2设备故障故障查询"< cout<<"输入3设备所属实验室查询"< cin>>ab; chaxun(head,ab);//调用查询设备数据函数 }break; case'D': { cout<<"输入1故障率"< cout<<"输入除1以外的数是设备总量和总价格"< cin>>aba; tongji(head,aba);//调用统计设备数据函数 }break; case'E': { paixu(head); }break; } cout<<"如果还要查询请按除0外的任意数字,如果不需要查询请按0: "< cin>>a; } return0; } Shebei*creat(void)//建立输入设备数据链表函数 {Shebei*head; Shebei*p1,*p2; n=0; p1=p2=newShebei;//开辟一个新单元,并使p1,p2指向它 cout<<"输入设备编号: "< cin>>p1->bianhao; cout<<"输入设备名称: "< cin>>p1->name; cout<<"输入设备单价: "< cin>>p1->danjia; cout<<"输入设备数量"< cin>>p1->shuliang; cout<<"输入设备故障"< cin>>p1->guzhang; cout<<"输入设备所属实验室: "< cin>>p1->shiyanshi; head=NULL; while(p1->bianhao! =0) {n=n+1; if(n==1)head=p1; elsep2->next=p1; p2=p1; p1=newShebei; cout<<"输入设备编号: "< cin>>p1->bianhao; if(p1->bianhao==0) continue; cout<<"输入设备名称: "< cin>>p1->name; cout<<"输入设备单价: "< cin>>p1->danjia; cout<<"输入设备数量"< cin>>p1->shuliang; cout<<"输入设备故障"< cin>>p1->guzhang; cout<<"输入设备所在的所属实验室: "< cin>>p1->shiyanshi; } p2->next=NULL; return(head); } Shebei*del(Shebei*head,intbianhao)//删除设备数据函数 {Shebei*p1,*p2; if(head==NULL)//是空表 {return(head);} p1=head;//使p1指向第一个结点 while(bianhao! =p1->bianhao&&p1->next! =NULL)//p1指向的不是所要找的结点且后面还有结点 {p2=p1;p1=p1->next;}//p1后移一个结点 if(bianhao==p1->bianhao)//找到了 {if(p1==head)head=p1->next;//若p1指向的是首结点,把第二个结点地址赋予head elsep2->next=p1->next;//否则将下一结点地址赋给前一结点地址 cout<<"删除的编号: "< n=n-1; } elsecout<<"没有该编号"< return(head); } Shebei*insert(Shebei*head,Shebei*tea)//插入设备数据函数 {Shebei*p0,*p1,*p2; p1=head;//使p1指向第一个结点 p0=tea;//指向要插入的结点 if(head==NULL)//原来的链表是空表 {head=p0;p0->next=NULL;}//使p0指向的结点作为头结点 else {while((p0->bianhao>p1->bianhao)&&(p1->next! =NULL)) {p2=p1;//使p2指向刚才p1指向的结点 p1=p1->next;}//p1后移一个结点 if(p0->bianhao<=p1->bianhao) {if(head==p1)head=p0;//插到原来第一个结点之前 elsep2->next=p0;//插到p2指向的结点之后*/ p0->next=p1;} else {p1->next=p0;p0->next=NULL;}//插到最后的结点之后 } n=n+1;//结点数加1 return(head); } voidprint(Shebei*head)//输出链表的函数 { ofstreamoutfile("f1.dat",ios: : out); if(! outfile) { cerr<<"openerror! "< exit (1); } while(head! =NULL) { cout< <<""< head->guzhang<<""< outfile< <<""< head->guzhang<<""< head=head->next; } outfile.close(); } voidchaxun(Shebei*head,intab)//查询设备数据函数 {boolleap;//布尔变量 leap=true;//为真 stringnam,gzhang,syanshi;//字符串变量 if(ab==1) { cout<<"请输入要查询设备的名称: "< cin>>nam; while(head! =NULL) {if(nam==head->name) { cout< < leap=false; } head=head->next; } } else if(ab==2) { cout<<"请输入要查询设备的故障: "< cin>>gzhang; while(head! =NULL) {if(gzhang==head->guzhang) { cout< < leap=false; } head=head->next; } } else if(ab==3) { cout<<"请输入要查询设备的所属实验室: "< cin>>syanshi; while(head! =NULL) {if(syanshi==head->shiyanshi) { cout< < leap=false; } head=head->next; } } if(leap) cout<<"对不起没有该设备"< } voidtongji(Shebei*head,intaba)//统计设备数据函数 { Shebei*p,*p1; floatshul=0,shu=0,zongjia=0; p=head; while(p! =NULL) { if(p->guzhang=="huai") {shu=shu+1;} shul=shul+p->shuliang; zongjia=zongjia+p->danjia*p->shuliang; p1=p; p=p->next; } if(aba==1) {cout<<"设备故障率"< cout< } else {cout<<"设备总量"< cout< cout<<"设备总价格"< cout< } } voidpaixu(Shebei*head)//设备排序函数 {Shebei*p1,*p,*p2,*p3,*p4; p1=head; //for(;p1! =NULL;p4=p1,p1=p1->next) while(p1! =NULL) { while(p1! =NULL) {p=p1->next; if(p1->bianhao>p->bianhao) { p2=p; p4=p1; p=p1; p->next=p2; p1=p2; p1->next=p4->next; } p3=p1; p1=p1->next; } } print(head); } 4.1设备类 插入,删除,排序,查寻,统计 4.2运算结果 5.课程设计总结 通过做课程设计,以及对程序中出现的一些错误的修改,还有在同学的帮助下完成了设计,我觉得自己对C++有了进一步的认识,学到了许多以前在课本上没有学到的东西,自己的编程水平也有一定程度的提高。 同时,真正体会到了编写程序要一点点的来: 一个题中可能有多个函数,应该一个一个的去编写,等检查无误后再进行其他函数的编写,这样不仅方便修改,也可以减少出错,这一点对编程非常重要。 而且编写程序时要考虑非常周详,经常会出现输入一些常有数据时可以执行,而遇到一些特殊数据就会出现错误 6.参考书目 《C++程序设计》
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设备管理 系统