1、c+实验设备管理系统程序报告要点 3.1 系统设计与实现 73.2 模块设计 8第1章 需求分析1.1 引言为了方便管理校内各种实验设备,能够翻遍快捷的录入查询各个实验设备的基本信息而编写了此程序 1.2 任务概述实验设备管理系统设计实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等), 设备名称,设备价格,设备购入日期,是否报废,报废日期等。主要功能:1、能够完成对设备的录入和修改。2、对设备进行分类统计。3、设备的破损耗费和遗损处理。4、设备的查询。1.3 数据描述输入实验设备的信息:设备编号最多为10个字符;设备名称最多为10个字符;设备购入价格最多为10个字符;设备购入
2、时间最多为10个字符;设备报废时间最多为10个字符;设备是否可用,yes为不可用,no为可用;设备类型最多为10个字符;1.4 功能需求1、可实现管理员登陆管理系统,游客查询系统。2、对实验设备类型的管理。3、对实验设备各项信息的录入和修改。4、对实验设备的分类查询统计。5、对实验设备的遗损处理 1.5 运行需求开发环境:VC6.0运行环境:Windows系统第二章 概要设计2.1 总体设计程序总体共分为4个类:1、菜单类2、设备类型类3、设备类4、管理员类 由主函数主持整体运行,由菜单类调用其它三类2.2 面向对象设计1.设备类型类: (见图2) void shuru(); /设备类型的输入
3、 void tianjia(); /设备类型的添加 void shanchu(); /设备类型的删除 void show(); /设备类型的输出显示 void xieru(); /设备类型的写入 void duqu(); /设备类型的读取2.设备类: nfom* write() /设备的创建写入 (见图3) Infom* load() /从文档中读取数据 (见图4) void acquire(Infom* head) /分类查询数据 (见图5) void acquire2(Infom* head) /查询全部数据 (见图5) void acqu(char choose) /分类查询的内容支持
4、(见图5) void add() /添加新内容 (见图6) void undo(Infom* head) /删除 (见图7) int save(Infom* head) /将现数据进行保存 void revise(Infom* head) /修改数据 void classify(Infom* head) /对数据的分类统计 (见图8) void clasK(Infom* head) /类型的分类统计 (见图8) void clasP(Infom* head) /价格的分类统计 (见图8) void clasE(Infom* head) /是否报废的统计 (见图8)3.管理员类: void cr
5、eate() /创建用户名和密码int log() /登陆void change() /修改用户名和密码2.3 运行界面设计运行界面由菜单类实现;菜单类:1.int menu1(device *p,struct ShiyanEquip *head,DeviceTipe *a,manager *b) /管理模式主菜单2.int menu2(device *p,struct ShiyanEquip *head,DeviceTipe *a) /游客模式主菜单3.struct ShiyanEquip * entering(device *p)/管理模式录入菜单4.struct ShiyanEquip
6、*entering2(device *p)/游客模式录入菜单5.struct ShiyanEquip * change(device *p)/修改菜单6.struct ShiyanEquip * query(device *p)/查询菜单7.struct ShiyanEquip * statistic(device *p)/分类统计菜单8.struct ShiyanEquip * account(manager *b)/账号菜单9.struct ShiyanEquip * type(DeviceTipe *a)/设备类型菜单第三章 详细设计3.1 系统设计与实现【总体框架、流程设计,模块划分及
7、接口设计等】总体框架:图1接口设计:1. int menu1(device *p,struct ShiyanEquip *head,DeviceTipe *a,manager *b) 功能 调用管理模式主菜单并指向管理模式各项分菜单2. int menu2(device *p,struct ShiyanEquip *head,DeviceTipe *a) 功能 调用游客模式主菜单并指向游客模式各项分菜单3. struct ShiyanEquip * entering(device *p) 功能 指向设备类中的新建,载入和添加函数并完成相应函数功能4. struct ShiyanEquip *e
8、ntering2(device *p) 功能 指向设备类中的载入函数并完成函数功能5. struct ShiyanEquip * change(device *p) 功能 指向设备类中的修改和删除函数并完成相应函数功能6. struct ShiyanEquip * query(device *p) 功能 指向设备类中的分类查询和全部查询函数并完成相应函数功能7. struct ShiyanEquip * statistic(device *p) 功能 指向设备类中的分类统计函数并完成相应三类的统计8. struct ShiyanEquip * account(manager *b) 功能 指向
9、管理员类中的修改函数完成修改账户及密码的功能9. struct ShiyanEquip * type(DeviceTipe *a) 功能 指向设备类型类中的各个函数并完成有关设备类型的全部功能3.2 模块设计【各模块的具体设计与实现】 设备类型类: 图2 图3设备类:图4图5图8图7图6第四章 测试分析【程序运行展示】【测试中发现的问题及解决方案】1.缺少必要的文字描述(已解决)2.输出的格式问题(已解决)3.不能删除唯一一项数据的问题(已解决)4.设备操作中缺失最后一行的问题(已解决)5.不能返回上一级菜单的问题(已解决)6.价格统计时不能确定准确比较的问题(已解决)【对最终成果的评价】整体
10、来说比较满意,是最近辛苦努力的伟大成果,但是有如下几点有待改进1.可以进行汉字输入但是不能进行汉字查询的问题2.管理员账号不能随意登出的问题3.设备类中没有使用private导致保密性不强的问题 第五章 课程设计总结【设计初衷、实践过程中遇到的困难及解决方案、课程收获等】在此次课程中,我们学到了很多东西,复习巩固了C语言的许多知识。并且在编写程序的过程中,能够把c+中更多功能体现出来。设计过程中当然也遇到了许多问题,但通过我们的讨论学习,上网查询各种资料,这些问题还是逐一解决了。这次设计采用了多人组队的模式,也使我们在此次设计中明白了团队合作的重要性,虽然这种小设计单人也能够完成,但是重要的是
11、这种合作使工作效率大大的提高并且能够了解他人的思路,学习他人的方法,并不再是独自闭门造车。此外这次的编程也使我们对编程设计有了很高的成就感,有了更大的热情。我们相信在以后我们能够做出更优秀的作品.#include#include#include#include#include#includeusing namespace std;class DeviceTipe /定义设备类型类private: char sblx2020; /设备类型public: void shuru(); /设备类型的输入 void tianjia(); /设备类型的添加 void shanchu(); /设备类型的删除
12、 void show(); /设备类型的输出显示 void xieru(); /设备类型的写入 void duqu(); /设备类型的读取;/=/=class device /定义设备类public: typedef struct infom char idnum10; /编号 char kind10; /类型 char name10; /名称 char price10; /价格 char purda10; /购买日期 char exist10; /是否报废 char damda10; /报废日期 struct infom *next; Infom; Infom* head; DeviceTi
13、pe wcs; Infom* write() /设备的创建写入 fstream the(aaa.txt,ios:out|ios:app); Infom *p1,*p2; head=NULL; wcs.duqu(); wcs.show(); p1=p2=(Infom *)malloc(sizeof(Infom); cout请输入编号 种类 名称 价格 购买日期 是否报废 报废日期(空格键断开/按0键结束输入):p1-idnum p1-kind p1-name p1-price p1-purda p1-exist p1-damda; theidnum kind name price purda e
14、xist damdanext=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-kind p1-name p1-price p1-purda p1-exist p1-damda; theidnum kind name price purda exist damdanext=NULL; the.close(); cout写入成功e
15、ndl; load(); return head; /= Infom* load() /从文档中读取数据 int n,a; char tran780; int b; Infom *p1,*p2; fstream t(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
16、(a=0,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-
17、damdaa=0; p1-next=NULL; for(b=1;t.getline(tranb,80,n)!=NULL;b+) if(head=NULL) head=p1; else p2-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-nam
18、ea=tranbn; a+; p1-namea=0; for(a=0,n=n+1;tranbn!= ;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=N
19、ULL; if(b=1) head=p1; cout载入成功endl; return head; /= void acquire(Infom* head) /分类查询数据 char choose; cout请选择查询方式:endl; cout1. 编号endl; cout2. 名称endl; cout3. 类型endl; cout4. 价格endl; cout5. 购买日期endl; cout6. 是否报废endl; cout7. 报废日期endl; cout0. 结束查询endl; choose=getch(); switch(choose) case 1:acqu(choose);brea
20、k; case 2:acqu(choose);break; case 3: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(Infom* head) /查询全部数据 Infom* t=head; if(t=NULL) cout对不起,信息不存在endl; else cout 编号 种类 名称 价格 购买日期 是否报废 报废日期next!
21、=NULL;) coutsetfill( )setw(10)idnum setfill( )setw(10)kind setfill( )setw(10)name setfill( )setw(10)price setfill( )setw(10)purda setfill( )setw(10)exist setfill( )setw(10)damdanext; coutsetfill( )setw(10)idnum setfill( )setw(10)kind setfill( )setw(10)name setfill( )setw(10)price setfill( )setw(10)p
22、urda setfill( )setw(10)exist setfill( )setw(10)damdaendl; void acqu(char choose) /分类查询的内容支持 Infom* t=head; char *s; int a=0; char xyz10; coutxyz; for(;t-next!=NULL;) 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:
23、s=t-exist;break; case7:s=t-damda;break; if(strcmp(s,xyz)=0) if(a=0) cout 编号 种类 名称 价格 购买日期 是否报废 报废日期endl; coutsetfill( )setw(10)idnum setfill( )setw(10)kind setfill( )setw(10)name setfill( )setw(10)price setfill( )setw(10)purda setfill( )setw(10)exist setfill( )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
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1