c++实验设备管理系统程序报告_第1页
c++实验设备管理系统程序报告_第2页
c++实验设备管理系统程序报告_第3页
c++实验设备管理系统程序报告_第4页
c++实验设备管理系统程序报告_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2014程序设计实训任务书 错误!未定义书签。目 录I第一章需求分析21.1 引言21.2 任务概述21.3 数据描述21.4 功能需求21.5 运行需求21.6 任务计划4第二章概要设计52.1 总体设计52.2 面向对象设计52.3 运行界面设计 6第三章详细设计73.1 系统设计与实现73.2 模块设计8第四章测试分析10第五章课程设计总结10附录:程序代码(仅电子版需要、纸质版不需要)第一章需求分析1.1引言为了方便管理校内各种实验设备,能够翻遍快捷的录入查询各个实验设备的 基本信息而编写了此程序1.2 任务概述实验设备管理系统设计实验设备信息包括:设备编号,设备种类(如:微机、打印机

2、、扫描仪等等), 设备名称,设备价格,设备购入日期,是否报废,报废日期等。主要功能:1、能够完成对设备的录入和修改。2、对设备进行分类统计。3、设备的破损耗费和遗损处理。4、设备的查询。1.3 数据描述输入实验设备的信息:设备编号最多为10个字符;设备名称最多为10个字符;设备购入价格最多为10个字符;设备购入时间最多为 10个字符;设备报废时间最多为10个字符;设备是否可用,yes为不可用,no为可用;设备类型最多为10个字符;1.4 功能需求1、可实现管理员登陆管理系统,游客查询系统。2、对实验设备类型的管理。3、对实验设备各项信息的录入和修改。4、对实验设备的分类查询统计。5、对实验设备

3、的遗损处理1.5 运行需求开发环境:VC6.0运行环境:Win dows系统第二章概要设计2.1 总体设计程序总体共分为4个类:1、菜单类2、设备类型类3、设备类4、管理员类由主函数主持整体运行,由菜单类调用其它三类2.2面向对象设计1设备类型类:(见图2)void shuru();/设备类型的输入void tianjia(); /设备类型的添加void sha nchu(); /设备类型的删除void show(); /设备类型的输出显示void xieru();设备类型的写入void duqu();设备类型的读取2设备类:nfom* write()II设备的创建写入(见图3)Infom*

4、load()II从文档中读取数据(见图4)void acquire。nfom* head)/ 分类查询数据(见图 5)void acquire2(Infom* head)/ 查询全部数据(见图 5)void acqu(char choose) /分类查询的内容支持(见图5)void add() 添加新内容(见图6)void undo(Infom* head)/ 删除 (见图 7) int save(Infom* head) /将现数据进行保存void revise(I nfom* head) 修改数据void classify(Infom* head)/对数据的分类统计(见图8)void cl

5、asK(lnfom* head)/类型的分类统计(见图8)void clasP(Infom* head)/价格的分类统计(见图8)void clasE(Infom* head)/是否报废的统计(见图8)3管理员类:void create()/创建用户名和密码int log()/ 登陆void cha nge() /修改用户名和密码2.3运行界面设计运行界面由菜单类实现;菜单类:1.int menu1(device *p,struct ShiyanEquip *head,DeviceTipe *a,manager *b) /管理模式主菜单2.i nt menu 2(device *p,struc

6、t Shiya nEquip *head,DeviceTipe *a)/游客模式主菜单* en teri ng(device *p) *en teri ng2(device *p)* cha nge(device *p)* query(device *p)* statistic(device *p)* acco un t(ma nager *b)* type(DeviceTipe *a)3. struct Shiya nEquip4. struct Shiya nEquip5. struct Shiya nEquip6. struct Shiya nEquip7. struct Shiya n

7、Equip8. struct Shiya nEquip9. struct Shiya nEquip管理模式录入菜单游客模式录入菜单 修改菜单查询菜单分类统计菜单 账号菜单 设备类型菜单3.1 系统设计与实现第三章详细设计【总体框架、流程设计,模块划分及接口设计等】总体框架:主菜单1开始录入7查询录入修改查询全部查询分类查询价格统计主菜单2统计报废统计修改账号添加设备类型接口设计:1. int menu1(device *p,struct ShiyanEquip *head,DeviceTipe *a,manager *b)功能调用管理模式主菜单并指向管理模式各项分菜单2. int menu2(

8、device *p,struct ShiyanEquip *head,DeviceTipe *a)功能调用游客模式主菜单并指向游客模式各项分菜单3. struct ShiyanEquip * entering(device *p)功能指向设备类中的新建,载入和添加函数并完成相应函数功能4. struct ShiyanEquip *entering2(device *p)功能指向设备类中的载入函数并完成函数功能5. struct ShiyanEquip * change(device *p)功能指向设备类中的修改和删除函数并完成相应函数功能6. struct ShiyanEquip * quer

9、y(device *p)功能指向设备类中的分类查询和全部查询函数并完成相应函数功能7. struct ShiyanEquip * statistic(device *p)功能指向设备类中的分类统计函数并完成相应三类的统计8. struct ShiyanEquip * account(manager *b)功能指向管理员类中的修改函数完成修改账户及密码的功能9. struct ShiyanEquip * type(DeviceTipe *a)功能指向设备类型类中的各个函数并完成有关设备类型的全部功能3.2模块设计设备类:loadwrite结束是否输入是否为01否储存读入load赋予结束Acqui

10、re2I全部选择查询方式是否为空选择分类4选择分类全部显示读取匹配是否为空ClassifyClassifyEClassifyKClassifyP读取add输入是否为0匹配1匹配2匹配3Undo是否为0I是I删除1输入是否为0是1结束是第四章测试分析【程序运行展示】【测试中发现的问题及解决方案】1. 缺少必要的文字描述(已解决)2. 输出的格式问题(已解决)3. 不能删除唯一一项数据的问题(已解决)4. 设备操作中缺失最后一行的问题(已解决)5. 不能返回上一级菜单的问题(已解决)6价格统计时不能确定准确比较的问题(已解决)【对最终成果的评价】整体来说比较满意,是最近辛苦努力的伟大成果,但是有如

11、下几点有待改进1. 可以进行汉字输入但是不能进行汉字查询的问题2. 管理员账号不能随意登出的问题3. 设备类中没有使用private导致保密性不强的问题第五章课程设计总结【设计初衷、实践过程中遇到的困难及解决方案、课程收获等】在此次课程中,我们学到了很多东西,复习巩固了C语言的许多知识。并且在编写程序的过程中,能够把C+中更多功能体现出来。设计过程中当然也遇到了许多问题,但通过我们的讨论学习,上网查询各种资料, 这些问题还是逐一解决了。 这次设计采用了多人组队的模 式,也使我们在此次设计中明白了团队合作的重要性,虽然这种小设计单人也能够完成,但是重要的是这种合作使工作效率大大的提高并且能够了解

12、他人的思路,学习他人的方法,并不再是独自闭门造车。 此外这次的编程也使我们对编程设计有了很高的成就感,有了更大的热情。我们相信在以后我们能够做出更优秀的作品#in clude#in clude#in clude#in clude#in clude#in cludeusing n amespace std;class DeviceTipe /定义设备类型类private:char sblx2020;/ 设备类型public:void shuru();设备类型的输入void tianjia();/设备类型的添加void sha nchu();/设备类型的删除void show();/设备类型的输出

13、显示void xieru();/设备类型的写入void duqu();/设备类型的读取;/= /= class device /定义设备类public:typedef struct infomchar idnum10; / 编号char kin d10;/ 类型char n ame10;/ 名称char price10; / 价格char purda10; / 购买日期char exist10; / 是否报废char damda10; / 报废日期struct infom *n ext;I nfom;In fom* head;DeviceTipe wcs;Infom* write()设备的创建

14、写入fstream the(aaa.txt,ios:out|ios:app);Infom *p1,*p2;head=NULL;wcs.duqu();wcs.show();p1=p2=(l nfom *)malloc(sizeof( In fom);cout请输入编号 种类 名称 价格 购买日期 是否报废 报废日期(空格键断开/ 按0键结束输入): p1-id nump1-ki ndp1- n amep1-pricep1-purdap1-existp1-damda;theid numki ndn ameprice purdaexistdamda next=NULL;while(1)if(head

15、=NULL)head=p1;if(head!=NULL)p2-n ext=p1;p2=p1;p1=(I nfom *)malloc(sizeof(l nfom);cin p1-id num;if(*(p1-id num)=0)free(p1);break;cin p1-k indp1- n amep1-pricep1-purdap1-existp1-damda;theid numk in dn amepricepurdaexist damda next=NULL;the.close();cout写入成功endl;load();retur n head;/=In fom* load()/从文档中

16、读取数据int n ,a;char tran 780;int b;Infom *p1,*p2;fstream t(aaa.txt);head=NULL;p1=p2=(l nfom*)malloc(sizeof( In fom);if(t.getli ne(tra n0,80,n)=NULL)cout载入失败id nu ma=tra n0n;a+;p1-id numa=0:for(a=0,n=n +1;tran0n!= :n+) p1-ki nd a=tra n0 n;a+;p1-ki nda=O:for(a=0,n=n +1;tran0n!= :n+) p1- n amea=tra n0 n;

17、a+;p1- namea=O:for(a=0,n=n +1;tran0n!= :n+) p1-pricea=tra nOn; a+;p1-pricea=0:for(a=0,n=n +1;tran0n!= :n+) p1-purdaa=tra n 0 n; a+;p1-purdaa=0;for(a=0,n=n +1;tran0n!= ;n+) p1-exist a=tra n0 n;a+;p1-exista=0:for(a=0, n=n +1;tra n0 n!=0 ;n+)p1-damdaa=tra n0 n;a+;p1-damdaa=0:p1- next=NULL;for(b=1;t.get

18、li ne(tra nb,80,n)!=NULL;b+)if(head=NULL)head=p1;elsep2-n ext=p1;p2=p1;p1=(l nfom*)malloc(sizeof( In fom);for(n=0,a=0;tranbn!= ;n+)p1-id nu ma=tra n b n;a+;p1-id nu ma=0;for(a=0,n=n+1;tra n b n!= ;n+)p1-ki nda=tra n b n;a+;p1-ki nd a=0;for(a=0,n=n+1;tra n b n!= ;n+) p1- n amea=tra nbn;a+;p1- namea=O

19、:for(a=0,n=n+1;tra n b n!= ;n+)p1-pricea=tra nbn;a+;p1-pricea=0:for(a=0,n=n+1;tra n b n!= ;n+) p1-purdaa=tra nbn;a+;p1-purdaa=0:for(a=0,n=n+1;tra n b n!= ;n+)p1-exista=tra n b n; a+;p1-exist a=0;for(a=0, n=n+1;tra n b n!=0; n+) p1-damdaa=tra n b n; a+;p1-damdaa=0;p2-n ext=p1;p1- next=NULL;if(b=1)hea

20、d=p1;cout载入成功endl;retur n head;/=void acquire。nfom* head) / 分类查询数据char choose;cout请选择查询方式:e ndl;cout1.编号endl;cout2.名称endl;cout3.类型endl;cout4.价格endl;cout5.购买日期e ndl;cout6.是否报废e ndl;cout7.报废日期e ndl;cout0.结束查询e ndl;choose=getch();switch(choose)case 1:acqu(choose);break;case 2:acqu(choose);break;case 3:

21、acqu(choose);break;case 4:acqu(choose);break;case 5:acqu(choose);break;case 6:acqu(choose);break;case 7:acqu(choose);break;case 0:break;void acquire2(lnfom* head) / 查询全部数据In fom* t=head;if(t=NULL)cout对不起,信息不存在 e ndl;else cout编号种类名称价格购买日期否报废报废日期 next!=NULL;)coutsetfill( )setw(10)id numsetfill( )setw(

22、10)ki ndsetfill( )setw(10) namesetfill( )setw(10)pricesetfill( )setw(10)purdasetfill( )setw(10)existsetfill( )setw(10)damdan ext;coutsetfill( )setw(10)id numsetfill( )setw(10)ki ndsetfill( )setw(10) namesetfill( )setw(10)pricesetfill( )setw(10)purdasetfill( )setw(10)damdae ndl;void acqu(char choose)

23、 /分类查询的内容支持In fom* t=head;char *s;int a=0;char xyz10;cout xyz;for(;t- next!=NULL;)switch(choose)case1:s=t-id nu m;break;case2:s=t- n ame;break;case3:s=t-k in d;break;case4:s=t-price;break;case5:s=t-purda;break;case6:s=t-exist;break;case7:s=t-damda;break;if(strcmp(s,xyz)=0)名称价格购买日if(a=0)cout编号种类期是否报废

24、报废日期endl;setfill( )setw(10)ki ndsetfill( )setw(10) namesetfill( )setw(10)pricesetfill( )setw(10)purdasetfill( )setw(10)existsetfill( )setw(10)damdan ext;switch(choose)case1:s=t-id nu m;break;case2:s=t- n ame;break;case3:s=t-k in d;break;case4:s=t-price;break;case5:s=t-purda;break;case6:s=t-exist;bre

25、ak;case7:s=t-damda;break;if(strcmp(s,xyz)=O)if(a=0)购买日期cout编号种类名称价格是否报废报废日期endl;coutsetfill( )setw(10)id numsetfill( )setw(10)ki ndsetfill( )setw(10) namesetfill( )setw(10)pricesetfill( )setw(10)existsetfill( )setw(10)damdae ndl;a+;if(a=0)cout对不起,您查询的信息不存在e ndl;/=void add()/添加新内容fstream the(aaa.txt,

26、ios:out|ios:app);Infom *p1,*p2;head=NULL;wcs.duqu();wcs.show();p1=p2=(l nfom *)malloc(sizeof( In fom);cout请输入编号种类 名称 价格 购买日期 是否报废 报废日期(空格键断开/按0键结束输入): p1-id nump1-ki ndp1- n amep1-pricep1-purdap1-existp1-damda;theid numki ndn ameprice purdaexistdamda next=NULL;while(1)if(head=NULL)head=p1;if(head!=N

27、ULL)p2-n ext=p1;p2=p1;p1=(I nfom *)malloc(sizeof(l nfom);cin p1-id num;if(*(p1-id num)=0)free(p1);break;cin p1-k indp1- n amep1-pricep1-purdap1-existp1-damda;theid numk in dn amepricepurdaexist damda next=NULL;the.close();cout添加成功endl;load();/=void undo(Infom* head) / 删除struct infom *p1,*p2;char num

28、10;char aaa10=0;char choose;wcs.duqu();wcs.show();cout请输入要删除的编号(空格键断开 按0键结束):endl;while(1)cinnum;if(strcmp (nu m,aaa)=0)break;if(head=NULL)cout您使用的地址不存在 id num, num)!=0&p1- next!=NULL;)p2=p1;p1=p1- n ext;if(strcmp(p1-id num,num)=O)if(p1=head)head=p1- n ext;free(p1);elsep2-n ext=p1- n ext;p1- next=NU

29、LL;free(p1);elseif(strcmp(p1-id num, num)!=0&p1- next=NULL) cout该内容不存在endl;cout输入1储存,输入O放弃endl;choose=getch();switch(choose)case 1:save(head);break;case 0:break;if(choose=1)cout删除成功 next!=NULL;)Theid nu mk in dn amepricepurdaexistdamdan ext;Theid numki ndn amepricepurda existdamdae ndl;The.close();r

30、eturn 0;/:void revise(l nfom* head)/ 修改数据char num10;Infom *p1;char choose;charx;wcs.duqu();wcs.show();cout请输入更改项目的编号 :id num, num)!=0&p1- next!=NULL;) p1=p1- n ext;if(p1- next=NULL&strcmp(p1-id num, num)!=0)cout不存在此编号endl;else编号e ndl;类型endl;cout请选择修改内容:e ndl;cout2.cout1.cout3.cout5.购买日期endl;cout6.是否

31、报废endl;cout7.报废日期endl;cout0.结束修改endl;choose=getch();cout请输入修改内容: p1-id nu m;break;case 2:ci n p1- n ame;break;case 3:ci n p1-k in d;break;case 4:ci n p1-price;break;case 5:ci n p1-purda;break;case 6:ci n p1-exist;break;case 7:ci n p1-damda;break;case 0:break;cout输入1储存,输入O放弃endl;x=getch();switch(x)ca

32、se 1:save(head);break;case 0:break;/=void classify(Infom* head) / 对数据的分类统计char choose;cout请选择统计内容:e ndl;cout1.cout2.cout3.cout0.类型endl;价格endl;是否报废endl;结束统计ki nd);p1- next!=NULL;)p1=p1- n ext;for(y=0;yk in d,ay)=O) by+;break;if(y=x+1)x+;bx+;strcpy(ax,p1-ki nd);for(i=0;i=x;i+)cout类型:ai 数量:bi next!=NUL

33、L;)x=strle n( p1-price);for(i=0,y=0;i=(9-x)tran si=p1_pricey;y+;elsetran si=O:if(strcmp(tra ns,de) 0&strcmp(p1-price,deg)=0)b2+;p1=p1- n ext;x=strle n( p1-price);for(i=0,y=0;i=(9-x)tran si=p1-pricey;y+;elsetran si=O:if(strcmp(tra ns,de) 0&strcmp(tra ns,deg)=0)b2+;数量:b0endl;数量:b1endl;数量:b2n ext;cout价

34、格小于等于 5000:cout价格大于5000小于10000:coutexist);p1- next!=NULL;) p1=p1- n ext;for(y=0;yexist,ay)=0)by+;break;if(y=x+1)x+;bx+;strcpy(ax,p1-exist);for(i=0;i=x;i+)cout是否报废:ai 数量:biendl;/=/=int i,n=0;/设备类型类的函数实现部分void DeviceTipe:xieru()ofstream fout(sblx.txt);char (*p)20;p=sblx;for(i=0;i n;i+)fout*(p+i)e ndl;

35、foutflush;fout.close();/=void DeviceTipe:duqu()ifstream file;file.ope n(sblx.txt);char (*p)20;p=sblx;i=0;dofile*(p+i);i+;while(pi0!=0);for(i=0;pi0!=0;i+);n=i;file.close();/=void DeviceTipe:shuru()char (*p)20;p=sblx;system(cls);cout请输入设备类型个数:e ndl;cinn;cout请依次输入设备类型名称e ndl;for(i=0;i *(p+i);/=void DeviceTipe:tianjia()char (*p)20;p=sblx;int k;system(cls);cout请输入要添加的设备类型个数 k;cout请依次输入设备类型名称e ndl;for(i=n ;i *(p+i);n=n+k;/=void DeviceTipe:sha nchu()char (*p)20;char w20;p=sblx;int x=0;int j;int r;cout请输入要删除的设备类型 w;for(i=0;i n;i+)if(strcmp(w,*(p+i)=0)for(j=i;j n;j+)strcpy(*(p+j),*(p+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论