版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、一、需求与功能分析第二章概要设计52.1 总体设计52.2 面向对象设计52.3 运行界面设计6第三章详细设计73.1 系统设计与实现73.2 模块设计8第四章测试分析10第五章课程设十方总结10附录:程序代码(仅电子版需要、纸质版不需要)I、需求与功能分析1.1需求为了方便管理校内各种实验设备,能够翻遍快捷的录入查询各个实验设备的基本信息而编写了此程序实验设备管理系统设计实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。1.2主要功能:1、能够完成对设备的录入和修改。2、对设备进行分类统计。4、设备的破损耗费和遗损处
2、理。4、设备的查询。1.3功能需求1、可实现管理员登陆管理系统,游客查询系统。2、对实验设备类型的管理。3、对实验设备各项信息的录入和修改。4、对实验设备的分类查询统计。5、对实验设备的遗损处理二、概要设计2.1总体设计程序总体共分为4个类:1、菜单类2、设备类型类3、设备类4、管理员类由主函数主持整体运行,由菜单类调用其它三类1.1 面向对象设计1 .设备类型类:(见图2)voidshuru();设备类型的输入voidtianjia();设备类型的添加voidshanchu();设备类型的删除voidshow();设备类型的输出显示voidxieru();设备类型的写入voidduqu();
3、设备类型的读取2 .设备类:nfom*write()设备的创建写入(见图3)Infom*load()从文档中读取数据(见图4)voidacquire(Infom*head)/分类查询数据(见图5)voidacquire2(Infom*head)/查询全部数据(见图5)voidacqu(charchoose)分类查询的内容支持(见图5)voidadd()添加新内容(见图6)voidundo(Infom*head)/删除(见图7)intsave(Infom*head)/将现数据进行保存voidrevise(Infom*head)修改数据voidclassify(Infom*head)/对数据的分类
4、统计(见图8)voidclasK(Infom*head)/类型的分类统计(见图8)voidclasP(Infom*head)价格的分类统计(见图8)voidclasE(Infom*head)/是否报废的统计(见图8)3 .管理员类:voidcreate()创建用户名和密码intlog()登陆voidchange()修改用户名和密码4 .2运行界面设计运行界面由菜单类实现;菜单类:1.intmenu1(device*p,structShiyanEquip*head,DeviceTipe*a,manager*b)/管理模式主菜单2.intmenu2(device*p,structShiyanEqu
5、ip*head,DeviceTipe*a)/游客模式主菜单管理模式录入菜单游客模式录入菜单修改菜单查询菜单分类统计菜单账号菜单设备类型菜单3.structShiyanEquip*entering(device*p)/4.structShiyanEquip*entering2(device*p)/5.structShiyanEquip*change(device*p)/6.structShiyanEquip*query(device*p)/7.structShiyanEquip*statistic(device*p)/8.structShiyanEquip*account(manager*b)/
6、9.structShiyanEquip*type(DeviceTipe*a)/三、详细设计3.1系统设计与实现6【总体框架、流程设计,模块划分及接口设计等】总体框架:主菜单1开始主菜单2接口设计:1. intmenu1(device*p,structShiyanEquip*head,DeviceTipe*a,manager*b)功能调用管理模式主菜单并指向管理模式各项分菜单2. intmenu2(device*p,structShiyanEquip*head,DeviceTipe*a)功能调用游客模式主菜单并指向游客模式各项分菜单3. structShiyanEquip*entering(de
7、vice*p)功能指向设备类中的新建,载入和添加函数并完成相应函数功能4. structShiyanEquip*entering2(device*p)功能指向设备类中的载入函数并完成函数功能5. structShiyanEquip*change(device*p)功能指向设备类中的修改和删除函数并完成相应函数功能6. structShiyanEquip*query(device*p)功能指向设备类中的分类查询和全部查询函数并完成相应函数功能7. structShiyanEquip*statistic(device*p)功能指向设备类中的分类统计函数并完成相应三类的统计8. structShiy
8、anEquip*account(manager*b)功能指向管理员类中的修改函数完成修改账户及密码的功能9. structShiyanEquip*type(DeviceTipe*a)功能指向设备类型类中的各个函数并完成有关设备类型的全部功能10. 模块设计设备类:loadwrite输入是否储存A否是否为0load赋予结束Acquire2全部显示选择查询方式是否为空分类选择分类读取匹配是否为空显示结束19ClassifyE读取匹配1匹配2匹配3是否为空是图7Undo删除结束四、测试分析MM-M“温饕提云;请熹尢载入清单再进行操作诚裳设备管理系统上.退出系统置备的载人2 .设备信息查询【测试中发现
9、的问题及解决方案】1 .缺少必要的文字描述(已解决)2 .输出的格式问题(已解决)3 .不能删除唯一一项数据的问题(已解决)4 .设备操作中缺失最后一行的问题(已解决)5 .不能返回上一级菜单的问题(已解决)6 .价格统计时不能确定准确比较的问题(已解决)【对最终成果的评价】整体来说比较满意,是最近辛苦努力的伟大成果,但是有如下几点有待改进1 .可以进行汉字输入但是不能进行汉字查询的问题2 .管理员账号不能随意登出的问题3 .设备类中没有使用private导致保密性不强的问题五、源程序#include#include#include#include#include#includeusingna
10、mespacestd;classDeviceTipe定义设备类型类(private:charsblx2020;设备类型public:voidshuru();设备类型的输入voidtianjia();/设备类型的添加voidshanchu();设备类型的删除voidshow();/设备类型的输出显示voidxieru();设备类型的写入voidduqu();设备类型的读取;=classdevice定义设备类(public:typedefstructinfom(charidnum10;/编号charkind10;类型charname10;/名称charprice10;/价格charpurda10;
11、/购买日期charexist10;/是否报废chardamda10;/报废日期structinfom*next;Infom;Infom*head;DeviceTipewcs;Infom*write()设备的创建写入(fstreamthe(aaa.txt,ios:out|ios:app);Infom*p1,*p2;head=NULL;wcs.duqu();wcs.show();p1=p2=(Infom*)malloc(sizeof(Infom);cout请输入编号种类名称价格购买日期是否报废报废日期(空格键断开/按0键结束输入):p1-idnump1-kindp1-namep1-pricep1-
12、purdap1-existp1-damda;theidnumkindnamepricepurdaexistdamdanext=NULL;while(1)(if(head=NULL)head=p1;if(head!=NULL)p2-next=p1;p2=p1;p1=(Infom*)malloc(sizeof(Infom);cinp1-idnum;if(*(p1-idnum)=0)free(p1);break;cinp1-kindp1-namep1-pricep1-purdap1-existp1-damda;theidnumkindnamepricepurdaexistdamdanext=NULL
13、;the.close();cout写入成功endl;load();returnhead;:Infom*load()/从文档中读取数据(intn,a;chartran780;intb;Infom*p1,*p2;fstreamt(aaa.txt);head=NULL;p1=p2=(Infom*)malloc(sizeof(Infom);if(t.getline(tran0,80,n)=NULL)(cout载入失败idnuma=tran0n;a+;)p1-idnuma尸0;for(a=0,n=n+1;tran0n!=;n+)(p1-kinda=tran0n;a+;p1-kinda=0;for(a=0
14、,n=n+1;tran0n!=;n+)(p1-namea=tran0n;a+;p1-namea=0;for(a=0,n=n+1;tran0n!=;n+)(p1-pricea=tran0n;a+;p1-pricea=0;for(a=0,n=n+1;tran0n!=;n+)(p1-purdaa=tran0n;a+;p1-purdaa=0;for(a=0,n=n+1;tran0n!=;n+)(p1-exista=tran0n;a+;p1-exista=0;for(a=0,n=n+1;tran0n!=0;n+)(p1-damdaa=tran0n;a+;p1-damdaa=0;p1-next=NULL;
15、for(b=1;t.getline(tranb,80,n)!=NULL;b+)(if(head=NULL)head=p1;elsep2-next=p1;p2=p1;p1=(Infom*)malloc(sizeof(Infom);for(n=0,a=0;tranbn!=;n+)(p1-idnuma=tranbn;a+;p1-idnuma=0;for(a=0,n=n+1;tranbn!=;n+)(p1-kinda=tranbn;a+;p1-kinda=0;for(a=0,n=n+1;tranbn!=;n+)(p1-namea=tranbn;a+;p1-namea=0;for(a=0,n=n+1;t
16、ranbn!=;n+)p1-pricea=tranbn;a+;)p1-pricea=0;for(a=0,n=n+1;tranbn!=;n+)p1-purdaa=tranbn;a+;)p1-purdaa=0;for(a=0,n=n+1;tranbn!=;n+)p1-exista=tranbn;a+;)p1-exista=0;for(a=0,n=n+1;tranbn!=0;n+)p1-damdaa=tranbn;a+;)p1-damdaa=0;)p2-next=p1;p1-next=NULL;if(b=1)head=p1;cout载入成功endl;returnhead;=voidacquire(I
17、nfom*head)/分类查询数据(charchoose;cout请选择查询方式:endl;cout1.编号endl;cout2.名称endl;cout3.类型endl;cout4.价格endl;cout5.购买日期endl;cout6.是否报废endl;cout7.报废日期endl;cout0.结束查询endl;choose=getch();switch(choose)(case1:acqu(choose);break;case2:acqu(choose);break;case3:acqu(choose);break;case4:acqu(choose);break;case5:acqu(c
18、hoose);break;case6:acqu(choose);break;case7:acqu(choose);break;case0:break;voidacquire2(Infom*head)/查询全部数据Infom*t=head;if(t=NULL)cout对不起,信息不存在endl;else购买日期是cout编号种类名称价格否报废报废日期next!=NULL;)coutsetfill()setw(10)idnumsetfill()setw(10)kindsetfill()setw(10)namesetfill()setw(10)pricesetfill()setw(10)purdas
19、etfill()setw(10)existsetfill()setw(10)damdanext;coutsetfill()setw(10)idnumsetfill()setw(10)kindsetfill()setw(10)namesetfill()setw(10)pricesetfill()setw(10)purdasetfill()setw(10)existsetfill()setw(10)damdaendl;voidacqu(charchoose)分类查询的内容支持Infom*t=head;char*s;inta=0;charxyz10;coutxyz;for(;t-next!=NULL
20、;)(switch(choose)(case1:s=t-idnum;break;case2:s=t-name;break;case3:s=t-kind;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编号种类名称价格期是否报废报废日期endl;coutsetfill()setw(10)idnumsetfill()setw(10)kindsetfill()setw(10)namesetfil
21、l()setw(10)pricesetfill()setw(10)purdasetfill()setw(10)existsetfill()setw(10)damdanext;)switch(choose)(case1:s=t-idnum;break;case2:s=t-name;break;case3:s=t-kind;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编号种类名称价格是
22、否报废报废日期endl;coutsetfill()setw(10)idnumsetfill()setw(10)kindsetfill()setw(10)namesetfill()setw(10)pricesetfill()setw(10)purdasetfill()setw(10)existsetfill()setw(10)damdaendl;a+;)if(a=0)cout对不起,您查询白信息不存在endl;:voidadd()添加新内容(fstreamthe(aaa.txt,ios:out|ios:app);Infom*p1,*p2;head=NULL;wcs.duqu();wcs.show
23、();p1=p2=(Infom*)malloc(sizeof(Infom);cout请输入编号种类名称价格购买日期是否报废报废日期(空格键断开/按0键结束输入):p1-idnump1-kindp1-namep1-pricep1-purdap1-existp1-damda;theidnumkindnamepricepurdaexistdamdanext=NULL;while(1)(if(head=NULL)head=p1;if(head!=NULL)p2-next=p1;p2=p1;p1=(Infom*)malloc(sizeof(Infom);cinp1-idnum;if(*(p1-idnum
24、)=0)free(p1);break;cinp1-kindp1-namep1-pricep1-purdap1-existp1-damda;theidnumkindnamepricepurdaexistdamdanext=NULL;the.close();cout添力口成功endl;load();=voidundo(Infom*head)/删除(structinfom*p1,*p2;charnum10;charaaa10=0;charchoose;wcs.duqu();wcs.show();cout请输入要删除的编号(空格键断开按0键结束):“num;if(strcmp(num,aaa)=0)b
25、reak;if(head=NULL)cout您使用的地址不存在idnum,num)!=0&p1-next!=NULL;)(p2=p1;p1=p1-next;if(strcmp(p1-idnum,num)=0)(if(p1=head)(head=p1-next;free(p1);else(p2-next=p1-next;p1-next=NULL;free(p1);)elseif(strcmp(p1-idnum,num)!=0&p1-next=NULL)cout该内容不存在endl;)cout输入1储存,输入0放弃endl;choose=getch();switch(choose)(case1:s
26、ave(head);break;case0:break;)if(choose=1)(cout删除成功next!=NULL;)(Theidnumkindnamepricepurdaexistdamdanext;Theidnumkindnamepricepurdaexistdamdaendl;The.close();return0;=voidrevise(Infom*head)修改数据charnum10;Infom*p1;charchoose;charx;wcs.duqu();wcs.show();cout请输入更改项目的编号:num;p1=head;for(;strcmp(p1-idnum,nu
27、m)!=0&p1-next!=NULL;)(p1=p1-next;if(p1-next=NULL&strcmp(p1-idnum,num)!=0)cout不存在此编号endl;else(cout请选择修改内容:endl;cout”1.endl;cout”2.名称endl;cout”3.典型endl;cout”4.价格endl;cout”5.购买日期endl;cout”6.是否报废endl;cout”7.报废日期endl;cout”0.结束修改endl;choose=getch();30cout请输入修改内容:p1-idnum;break;case2:cinp1-name;break;case3
28、:cinp1-kind;break;case4:cinp1-price;break;case5:cinp1-purda;break;case6:cinp1-exist;break;case7:cinp1-damda;break;case0:break;cout输入1储存,输入0放弃endl;x=getch();switch(x)(case1:save(head);break;case0:break;=voidclassify(Infom*head)/对数据的分类统计(charchoose;cout请选择统计内容:endl;cout1.类型endl;cout2.价格endl;cout3.是否报废
29、endl;43cout”0.结束统计kind);p1-next!=NULL;)p1=p1-next;for(y=0;ykind,ay)=0)by+;break;if(y=x+1)x+;bx+;strcpy(ax,p1-kind);for(i=0;i=x;i+)cout类型:ai数量:binext!=NULL;)x=strlen(p1-price);for(i=0,y=0;i=(9-x)(transi=p1-pricey;y+;elsetransi=0;if(strcmp(trans,de)0&strcmp(p1-price,deg)=0)b2+;p1=p1-next;x=strlen(p1-p
30、rice);for(i=0,y=0;i=(9-x)(transi=p1-pricey;y+;elsetransi=0;if(strcmp(trans,de)0&strcmp(trans,deg)=0)b2+;p1=p1-next;cout价格小于等于5000:数量:b0endl;cout价格大于5000小于10000:数量:b1endl;cout价格大于等于10000:数量:b2exist);p1-next!=NULL;)p1=p1-next;for(y=0;yexist,ay)=0)by+;break;)if(y=x+1)(x+;bx+;strcpy(ax,p1-exist);)for(i=
31、0;i=x;i+)(cout是否报废:ai数量:biendl;);=inti,n=0;设备类型类的函数实现部分voidDeviceTipe:xieru()(ofstreamfout(sblx.txt);char(*p)20;p=sblx;for(i=0;in;i+)(fout*(p+i)endl;fout*(p+i);i+;while(pi0!=0);for(i=0;pi0!=0;i+);n=i;file.close();=voidDeviceTipe:shuru()(char(*p)20;p=sblx;system(cls);cout请输入设备类型个数:n;cout请依次输入设备类型名称en
32、dl;for(i=0;i*(p+i);)=voidDeviceTipe:tianjia()(char(*p)20;p=sblx;intk;system(cls);cout请输入要添加的设备类型个数k;cout请依次输入设备类型名称endl;for(i=n;i*(p+i);)n=n+k;)=voidDeviceTipe:shanchu()(char(*p)20;charw20;p=sblx;intx=0;intj;intr;cout请输入要删除的设备类型w;for(i=0;in;i+)(if(strcmp(w,*(p+i)=0)for(j=i;jn;j+)(strcpy(*(p+j),*(p+j
33、+1);x=1;if(x=1)(n=n-1;system(cls);else(cout设备类型中没有此类endl是否重新输入/1r;if(r=0)system(cls);elseDeviceTipe:shanchu();=voidDeviceTipe:show()(char(*p)20;p=sblx;system(cls);coutendlendl;for(i=0;in;i+)(couti+1.*(p+i)endl;cout以上为所有设备类型endlendlendl;=classmanager定义管理员类(public:voidcreate()创建用户名和密码(charname100;charcode100;FILE*fp1;if(fp1=fopen(user.txt,w)=NULL)(printf(该文件不存在);coutname;fprintf(fp1,%s,name);coutcode;fprintf(fp1,%s,code);fclose(fp1);)=intlog()/登陆(chara200,b200,c,d100;intr=0;couta;coutd;strcat(a,d);FILE*fp1;if(fp1=fopen(user.txt,r)=NULL)(printf(该文件不存在n);)fscanf(fp1,%s,b);c=strcmp(a,b);if(c=0)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度食品生产与销售独家代理合同3篇
- 2024年度新材料研发与产业化合作合同
- 2024年度第四人民医院物业管理服务合同2篇
- 二零二四年度国有土地平房买卖合同
- 2024版第四章国际技术贸易合同的合规性要求
- 2024年度赠与合同:某捐赠人将其财产赠与某受赠人的合同
- 二零二四年水利枢纽工程土方填筑合同
- 二零二四年度商务代理合同规定
- 二零二四年度授权代理销售合同
- 2024年度企业数据合规管理合同
- 2024年全国普法知识考试题库及答案
- 东方电影学习通超星期末考试答案章节答案2024年
- 电子政务概论-形考任务5(在线测试权重20%)-国开-参考资料
- 古代小说戏曲专题-形考任务2-国开-参考资料
- 人教版一年级上册《劳动教育》-全册课件
- 2024年1-全年时事政治试题及答案汇编-时事一点通、半月谈
- 德语专业大学生职业生涯规划书
- 渗透测试基础教程介绍课件
- 构美-空间形态设计学习通课后章节答案期末考试题库2023年
- 《歌唱祖国》的歌词完整版.doc
- 电气化铁道供电技术工作简历模板
评论
0/150
提交评论