实验设备管理系统程序报告(DOC 51页)

合集下载

实训室设备管理系统项目报告

实训室设备管理系统项目报告

实验室设备管理系统》项目报告一、系统简介随着计算机技术的迅猛发展以及Internet 进入商业和社会应用阶段,设备的种类、数量越来越多,如何利用先进的网络技术和日新月异的计算机设备来有效地收集、处理这些设备,建立以信息化为核心的管理体制,减轻管理人员和业务人员的数据处理负担,极大地提高设备管理效率和管理手段,己经成为当今社会的潮流。

设备管理系统是一个以人为主导,利用计算机硬件、软件、网络设备通信设备以及其他办公设备,进行信息的收集、更新和维护,以提高效率为目的的人机系统。

它具有管理信息系统的共性,同时也具有其特殊性。

二、设备管理系统组成部分设备资产及技术管理:建立设备信息库,实现设备前期的选型、采购、安装测试、转固;设备转固后的使用、闲置、报废,设备运行过程中的技术状态、维护、保养情况记录。

设备文档管理:设备相关档案的登录、整理以及与设备的挂接。

设备缺陷及事故管理:设备缺陷报告、跟踪、统计,设备紧急事故处理。

预防性维修:以可靠性技术为基础的定期维修、维护,维修计划分解,自动生成预防性维修工作单。

维修计划排程:根据日程表中设备运行记录和维修人员工作记录,编制整体维修、维护任务进度的安排计划,根据任务的优先级和维修人员工种情况来确定维修工人。

申请单的审核与跟踪:对用户申请单,进行审核、执行,并跟踪申请单状态。

备品、备件管理:建立备件台帐,编制备件计划,处理备件日常库存事务,根据备件最小库存量或备件重订货点自动生成采购计划,跟踪备件与设备的关系。

维修成本核算:凭借工作单上人员时间、所耗物料、工具和服务等信息,汇总维修、维护任务成本,进行实际成本与预算的分析比较。

缺陷分析:建立设备故障代码体系,记录每次故障发生的情况以进行故障分析。

统计报表:查询、统计各类信息,包括设备的三率报表、设备维修成本报表、设备状态报表、设备履历报表、备件库存周转率、供应商分析报表等。

三、用户角色分类四、软硬件环境需求五、系统质量需求六、设备管理系统ER图七、设备管理系统流程图八、界面设计实训室设备管理系统Equipment Management System设备管理系统Equipment Management Systeir九、项目心得体会3个月的项目实训对Java编程语言从低层次的认识到实实在在地使用在项目开发,期间是一个枯燥而又漫长的过程。

实训室设备管理系统项目报告

实训室设备管理系统项目报告

《实验室设备管理系统》项目报告一、系统简介随着计算机技术的迅猛发展以及Internet进入商业和社会应用阶段,设备的种类、数量越来越多,如何利用先进的网络技术和日新月异的计算机设备来有效地收集、处理这些设备,建立以信息化为核心的管理体制,减轻管理人员和业务人员的数据处理负担,极大地提高设备管理效率和管理手段,己经成为当今社会的潮流。

设备管理系统是一个以人为主导,利用计算机硬件、软件、网络设备通信设备以及其他办公设备,进行信息的收集、更新和维护,以提高效率为目的的人机系统。

它具有管理信息系统的共性,同时也具有其特殊性。

二、设备管理系统组成部分设备资产及技术管理:建立设备信息库,实现设备前期的选型、采购、安装测试、转固;设备转固后的使用、闲置、报废,设备运行过程中的技术状态、维护、保养情况记录。

设备文档管理:设备相关档案的登录、整理以及与设备的挂接。

设备缺陷及事故管理:设备缺陷报告、跟踪、统计,设备紧急事故处理。

预防性维修:以可靠性技术为基础的定期维修、维护,维修计划分解,自动生成预防性维修工作单。

维修计划排程:根据日程表中设备运行记录和维修人员工作记录,编制整体维修、维护任务进度的安排计划,根据任务的优先级和维修人员工种情况来确定维修工人。

申请单的审核与跟踪:对用户申请单,进行审核、执行,并跟踪申请单状态。

备品、备件管理:建立备件台帐,编制备件计划,处理备件日常库存事务,根据备件最小库存量或备件重订货点自动生成采购计划,跟踪备件与设备的关系。

维修成本核算:凭借工作单上人员时间、所耗物料、工具和服务等信息,汇总维修、维护任务成本,进行实际成本与预算的分析比较。

缺陷分析:建立设备故障代码体系,记录每次故障发生的情况以进行故障分析。

统计报表:查询、统计各类信息,包括设备的三率报表、设备维修成本报表、设备状态报表、设备履历报表、备件库存周转率、供应商分析报表等。

三、用户角色分类四、软硬件环境需求五、系统质量需求六、设备管理系统ER图七、设备管理系统流程图八、界面设计九、项目心得体会3个月的项目实训对Java编程语言从低层次的认识到实实在在地使用在项目开发,期间是一个枯燥而又漫长的过程。

实验设备管理系统程序报告(DOC 51页)

实验设备管理系统程序报告(DOC 51页)

实验设备管理系统程序报告(DOC 51页)目录一、需求与功能分析第二章概要设计 (5)2.1总体设计52.2面向对象设计52.3运行界面设计6第三章详细设计 (7)3.1 系统设计与实现 (7)3.2 模块设计 (8)第四章测试分析 (10)第五章课程设计总结 (10)附录:程序代码(仅电子版需要、纸质版不需要)..................................................................................一、需求与功能分析1.1需求为了方便管理校内各种实验设备,能够翻遍快捷的录入查询各个实验设备的基本信息而编写了此程序实验设备管理系统设计实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。

1.2主要功能:1、能够完成对设备的录入和修改。

2、对设备进行分类统计。

4、设备的破损耗费和遗损处理。

4、设备的查询。

1.3功能需求1、可实现管理员登陆管理系统,游客查询系统。

2、对实验设备类型的管理。

3、对实验设备各项信息的录入和修改。

4、对实验设备的分类查询统计。

5、对实验设备的遗损处理二、概要设计2.1总体设计程序总体共分为4个类:1、菜单类2、设备类型类3、设备类4、管理员类9.struct ShiyanEquip * type(DeviceTipe *a)//设备类型菜单三、详细设计3.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 *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.2模块设计设备类型类:设备类:四、测试分析【测试中发现的问题及解决方案】1.缺少必要的文字描述(已解决)2.输出的格式问题(已解决)3.不能删除唯一一项数据的问题(已解决)4.设备操作中缺失最后一行的问题(已解决)5.不能返回上一级菜单的问题(已解决)6.价格统计时不能确定准确比较的问题(已解决)【对最终成果的评价】整体来说比较满意,是最近辛苦努力的伟大成果,但是有如下几点有待改进1.可以进行汉字输入但是不能进行汉字查询的问题2.管理员账号不能随意登出的问题3.设备类中没有使用private导致保密性不强的问题五、源程序#include<iostream>#include<fstream>#include<conio.h>#include<stdio.h>#include<iomanip>#include<windows.h>using namespace std;class DeviceTipe //定义设备类型类{private:char sblx[20][20]; //设备类型public:void shuru(); //设备类型的输入void tianjia(); //设备类型的添加void shanchu(); //设备类型的删除void show(); //设备类型的输出显示void xieru(); //设备类型的写入void duqu(); //设备类型的读取};//=================================== ===========================//=================================== ===========================class device //定义设备类{public:typedef struct infom{char idnum[10]; //编号char kind[10]; //类型char name[10]; //名称char price[10]; //价格char purda[10]; //购买日期char exist[10]; //是否报废char damda[10]; //报废日期struct infom *next;}Infom;Infom* head;DeviceTipe 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键结束输入):"<<endl;cin>>p1->idnum>>p1->kind>>p1->name>>p1->price>>p1->purda>>p1->exist>>p1->damda;the<<p1->idnum<<' '<<p1->kind<<' '<<p1->name<<' '<<p1->price<<' '<<p1->purda<<' '<<p1->exist<<' '<<p1->damda<<endl;p1->next=NULL;while(1){if(head==NULL)head=p1;if(head!=NULL)p2->next=p1;p2=p1;p1=(Infom *)malloc(sizeof(Infom)); cin>>p1->idnum;if(*(p1->idnum)=='0'){free(p1);break;}cin>>p1->kind>>p1->name>>p1->price>>p1->purda>>p1->exist>>p1->damda;the<<p1->idnum<<' '<<p1->kind<<' '<<p1->name<<' '<<p1->price<<' '<<p1->purda<<' '<<p1->exist<<' '<<p1->damda<<endl;}p2->next=NULL;the.close();cout<<"写入成功"<<endl;load();return head;}//=================================== ===========================Infom* load() //从文档中读取数据{int n,a;char tran[7][80];int b;Infom *p1,*p2;fstream t("aaa.txt");head=NULL;p1=p2=(Infom*)malloc(sizeof(Infom));if(t.getline(tran[0],80,'\n')==NULL) {cout<<"载入失败"<<endl;return 0;}for(n=0,a=0;tran[0][n]!=' ';n++){p1->idnum[a]=tran[0][n];a++;}p1->idnum[a]='\0';for(a=0,n=n+1;tran[0][n]!=' ';n++) {p1->kind[a]=tran[0][n];a++;}p1->kind[a]='\0';for(a=0,n=n+1;tran[0][n]!=' ';n++) {p1->name[a]=tran[0][n];a++;}p1->name[a]='\0';for(a=0,n=n+1;tran[0][n]!=' ';n++) {p1->price[a]=tran[0][n];a++;}p1->price[a]='\0';for(a=0,n=n+1;tran[0][n]!=' ';n++) {p1->purda[a]=tran[0][n];a++;}p1->purda[a]='\0';for(a=0,n=n+1;tran[0][n]!=' ';n++) {p1->exist[a]=tran[0][n];a++;}p1->exist[a]='\0';for(a=0,n=n+1;tran[0][n]!='\0';n++) {p1->damda[a]=tran[0][n];a++;}p1->damda[a]='\0';p1->next=NULL;for(b=1;t.getline(tran[b],80,'\n')!=NULL;b++) {if(head==NULL)head=p1;elsep2->next=p1;p2=p1;p1=(Infom*)malloc(sizeof(Infom));for(n=0,a=0;tran[b][n]!=' ';n++){p1->idnum[a]=tran[b][n];a++;}p1->idnum[a]='\0';for(a=0,n=n+1;tran[b][n]!=' ';n++){p1->kind[a]=tran[b][n];a++;}p1->kind[a]='\0';for(a=0,n=n+1;tran[b][n]!=' ';n++) {p1->name[a]=tran[b][n];a++;}p1->name[a]='\0';for(a=0,n=n+1;tran[b][n]!=' ';n++) { p1->price[a]=tran[b][n];a++;}p1->price[a]='\0';for(a=0,n=n+1;tran[b][n]!=' ';n++) {p1->purda[a]=tran[b][n];a++;}p1->purda[a]='\0';for(a=0,n=n+1;tran[b][n]!=' ';n++){p1->exist[a]=tran[b][n];a++;}p1->exist[a]='\0';for(a=0,n=n+1;tran[b][n]!='\0';n++){p1->damda[a]=tran[b][n];a++;}p1->damda[a]='\0';}p2->next=p1;p1->next=NULL;if(b==1)head=p1;cout<<"载入成功"<<endl;return head;}//=================================== ===========================void acquire(Infom* head) //分类查询数据{char choose;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();switch(choose){case '1':acqu(choose);break;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<<" 编号种类名称价格购买日期是否报废报废日期"<<endl;for(;t->next!=NULL;){cout<<setfill('')<<setw(10)<<t->idnum<<' '<<setfill('')<<setw(10)<<t->kind<<' '<<setfill('')<<setw(10)<<t->name<<' '<<setfill(' ')<<setw(10)<<t->price<<' '<<setfill(' ')<<setw(10)<<t->purda<<' '<<setfill(' ')<<setw(10)<<t->exist<<' '<<setfill(' ')<<setw(10)<<t->damda<<endl;t=t->next;}cout<<setfill('')<<setw(10)<<t->idnum<<' '<<setfill('')<<setw(10)<<t->kind<<' '<<setfill('')<<setw(10)<<t->name<<' '<<setfill('')<<setw(10)<<t->price<<' '<<setfill('')<<setw(10)<<t->purda<<' '<<setfill('')<<setw(10)<<t->exist<<' '<<setfill('')<<setw(10)<<t->damda<<endl;}}void acqu(char choose) //分类查询的内容支持{Infom* t=head;char *s;int a=0;char xyz[10];cout<<"请输入查询内容:";cin>>xyz;for(;t->next!=NULL;){switch(choose){case'1':s=t->idnum;break;case'2':s=t->name;break;case'3':s=t->kind;break;case'4':s=t->price;break;c ase'5':s=t->purda;break;case'6':s=t->exist;break;c ase'7':s=t->damda;break;}if(strcmp(s,xyz)==0){if(a==0)cout<<" 编号种类名称价格购买日期是否报废报废日期"<<endl;cout<<setfill('')<<setw(10)<<t->idnum<<' '<<setfill('')<<setw(10)<<t->kind<<' '<<setfill('')<<setw(10)<<t->name<<' '<<setfill('')<<setw(10)<<t->price<<' '<<setfill('')<<setw(10)<<t->purda<<' '<<setfill('')<<setw(10)<<t->exist<<' '<<setfill('')<<setw(10)<<t->damda<<endl;a++;}t=t->next;}switch(choose){case'1':s=t->idnum;break;case'2':s=t->name;break;case'3':s=t->kind;break;case'4':s=t->price;break;case'5':s=t->purda;break;c ase'6':s=t->exist;break;c ase'7':s=t->damda;break;}if(strcmp(s,xyz)==0){if(a==0)cout<<" 编号种类名称价格购买日期是否报废报废日期"<<endl;cout<<setfill('')<<setw(10)<<t->idnum<<' '<<setfill('')<<setw(10)<<t->kind<<' '<<setfill('')<<setw(10)<<t->name<<' '<<setfill('')<<setw(10)<<t->price<<' '<<setfill('')<<setw(10)<<t->purda<<' '<<setfill('')<<setw(10)<<t->exist<<' '<<setfill('')<<setw(10)<<t->damda<<endl;a++;}if(a==0)cout<<"对不起,您查询的信息不存在"<<endl;}//=================================== ===========================void add() //添加新内容{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键结束输入):"<<endl;cin>>p1->idnum>>p1->kind>>p1->name>>p1->price>>p1->purda>>p1->exist>>p1->damda;the<<p1->idnum<<' '<<p1->kind<<' '<<p1->name<<' '<<p1->price<<' '<<p1->purda<<' '<<p1->exist<<' '<<p1->damda<<endl;p1->next=NULL;while(1){if(head==NULL)head=p1;if(head!=NULL)p2->next=p1;p2=p1;p1=(Infom *)malloc(sizeof(Infom)); cin>>p1->idnum;if(*(p1->idnum)=='0'){free(p1);break;}cin>>p1->kind>>p1->name>>p1->price>>p1->purda>>p1->exist>>p1->damda;the<<p1->idnum<<' '<<p1->kind<<' '<<p1->name<<' '<<p1->price<<' '<<p1->purda<<' '<<p1->exist<<' '<<p1->damda<<endl;}p2->next=NULL;the.close();cout<<"添加成功"<<endl;load();}//=================================== ===========================void undo(Infom* head) //删除{struct infom *p1,*p2;char num[10];char aaa[10]="0";char choose;wcs.duqu();wcs.show();cout<<"请输入要删除的编号(空格键断开\按0键结束):"<<endl;while(1){cin>>num;if(strcmp(num,aaa)==0)break;if(head==NULL)cout<<"您使用的地址不存在"<<endl;else{p1=head;for(;strcmp(p1->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){case '1':save(head);break;case '0':break;}if(choose=='1'){cout<<"删除成功"<<endl;load();}}//=================================== ===========================int save(Infom* head) //将现数据进行保存{unlink("aaa.txt");fstream The("aaa.txt",ios::out|ios::app);Infom *p1;p1=head;if(p1==NULL)return 0;for(;p1->next!=NULL;){The<<p1->idnum<<' '<<p1->kind<<' '<<p1->name<<' '<<p1->price<<' '<<p1->purda<<' '<<p1->exist<<' '<<p1->damda<<endl;p1=p1->next;}The<<p1->idnum<<' '<<p1->kind<<' '<<p1->name<<' '<<p1->price<<' '<<p1->purda<<' '<<p1->exist<<' '<<p1->damda<<endl; The.close();return 0;}//=================================== ===========================void revise(Infom* head) //修改数据{char num[10];Infom *p1;char choose;char x;wcs.duqu();wcs.show();cout<<"请输入更改项目的编号:"<<endl;cin>>num;p1=head;for(;strcmp(p1->idnum,num)!=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;c out<<"5. 购买日期"<<endl;c out<<"6. 是否报废"<<endl;c out<<"7. 报废日期"<<endl;c out<<"0. 结束修改"<<endl;choose=getch();cout<<"请输入修改内容:"<<endl;switch(choose){case '1':cin>>p1->idnum;break;case '2':cin>>p1->name;break;case '3':cin>>p1->kind;break;case '4':cin>>p1->price;break;case '5':cin>>p1->purda;break;case '6':cin>>p1->exist;break;case '7':cin>>p1->damda;break;case '0':break;}}cout<<"输入'1'储存,输入'0'放弃"<<endl;x=getch();switch(x){case '1':save(head);break;case '0':break;}}//=================================== ===========================void classify(Infom* head) //对数据的分类统计{char choose;cout<<"请选择统计内容:"<<endl;cout<<"1. 类型"<<endl;cout<<"2. 价格"<<endl;cout<<"3. 是否报废"<<endl; cout<<"0. 结束统计"<<endl;choose=getch();switch(choose){case '1':clasK(head) ;break;case '2':clasP(head) ;break;case '3':clasE(head) ;break;case '0':break;}}void clasK(Infom* head) //类型的分类统计{char a[20][10];int b[20]={1};int x;int y;int i;Infom *p1;p1=head;for(x=0,strcpy(a[0],p1->kind);p1->next!=NUL L;){p1=p1->next;for(y=0;y<=x;y++){if(strcmp(p1->kind,a[y])==0){b[y]++;break;}}if(y==x+1){x++;b[x]++;strcpy(a[x],p1->kind);}for(i=0;i<=x;i++){cout<<"类型:"<<a[i]<<' '<<"数量:"<<b[i]<<endl;}}void clasP(Infom* head) //价格的分类统计{int b[3]={0};int x;int y;int i;char trans[10];char de[10]="000005000";char deg[10]="000010000";Infom *p1;p1=head;for(;p1->next!=NULL;){x=strlen(p1->price);for(i=0,y=0;i<9;i++){if(i>=(9-x)){trans[i]=p1->price[y];y++;}elsetrans[i]='0';}if(strcmp(trans,de)<=0)b[0]++;if(strcmp(trans,de)>0&&strcmp(p1->price,de g)<0)b[1]++;if(strcmp(trans,deg)>=0)b[2]++;p1=p1->next;}x=strlen(p1->price);for(i=0,y=0;i<9;i++){if(i>=(9-x)){trans[i]=p1->price[y];y++;}elsetrans[i]='0';}if(strcmp(trans,de)<=0)b[0]++;if(strcmp(trans,de)>0&&strcmp(trans,deg)<0 )b[1]++;if(strcmp(trans,deg)>=0)b[2]++;p1=p1->next;cout<<"价格小于等于5000:" <<' '<<"数量:"<<b[0]<<endl;cout<<"价格大于5000小于10000:"<<' '<<"数量:"<<b[1]<<endl;cout<<"价格大于等于10000:" <<' '<<"数量:"<<b[2]<<endl;}void clasE(Infom* head) //是否报废的统计{char a[20][10];int b[20]={1};int x;int y;int i;Infom *p1;p1=head;for(x=0,strcpy(a[0],p1->exist);p1->next!=NUL L;){p1=p1->next;for(y=0;y<=x;y++){if(strcmp(p1->exist,a[y])==0){b[y]++;break;}}if(y==x+1){x++;b[x]++;strcpy(a[x],p1->exist);}}for(i=0;i<=x;i++){cout<<"是否报废:"<<a[i]<<' '<<"数量:"<<b[i]<<endl;}}};//==============================================================//=================================== ===========================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)<<endl;}fout<<flush;fout.close();}//=================================== ===========================void DeviceTipe::duqu(){ifstream file;file.open("sblx.txt");char (*p)[20];p=sblx;i=0;do{file>>*(p+i);i++;}while(p[i][0]!='\0');for(i=0;p[i][0]!='\0';i++);n=i;file.close();}//=================================== ===========================void DeviceTipe::shuru(){char (*p)[20];p=sblx;system("cls");cout<<"请输入设备类型个数:"<<endl; cin>>n;cout<<"请依次输入设备类型名称"<<endl;for(i=0;i<n;i++){cin>>*(p+i);}}//=================================== ===========================void DeviceTipe::tianjia(){char (*p)[20];p=sblx;int k;system("cls");cout<<"请输入要添加的设备类型个数"<<endl;cin>>k;cout<<"请依次输入设备类型名称"<<endl; for(i=n;i<n+k;i++){cin>>*(p+i);}n=n+k;}//=================================== ===========================void DeviceTipe::shanchu(){char (*p)[20];char w[20];p=sblx;int x=0;int j;int r;cout<<"请输入要删除的设备类型"<<endl; cin>>w;for(i=0;i<n;i++){if(strcmp(w,*(p+i))==0)for(j=i;j<n;j++){strcpy(*(p+j),*(p+j+1));x=1;。

实验室设备管理系统实验报告材料

实验室设备管理系统实验报告材料

个人课程设计报告院系计算机与通信工程学院专业计算机(中加)学号20106098姓名角色 A日期2013/6/20个人课程设计报告一项目概述1.1目的因为现在各个高校内教学设备众多但自动管理水平相比过低,很多高校管理设备都采用在设备购进以后将设备的基本情况和相关信息登记存档。

存档以后,档案基本就没人记录与维护,至于以后设备的变迁或损坏都不会记录在设备档案中,即不能体现设备的即时状态。

而有些即使有设备管理系统的单位,就算是能把设备的即时信息体现在设备档案上,但设备的缺陷处理及设备缺陷等功能没有实施,设备检修的备品备件情况和检修成本核算没有实现,整个学校教学设备管理信息化仍处于较低水平。

将管理任务分成小块,落实到个人并能随时查询设备当前情况和历史情况,对设备的可靠性分析有直接作用,使管理人员从手工计算、统计工作中解脱出来。

同时基于实验室管理者对设备的的使用情况进行统计和更新提供轻松快捷的管理方式,利用计算机管理系统管理我校的实验设备势在必行,也方便广大用户可以随时随地的借用实验设备进行学习和研究。

1.2 任务对项目进行可行性研究,需求分析,项目开发计划,以及中期的总控模块开发,参与软件的设计和测试。

1.3 开发环境◆硬件环境:建议硬件配置PII以上256M内存60G硬盘空间。

◆软件环境:需要安装Microsoft Access 4.0以上的版本,基本上Microsoft Windows系统用户都有。

◆数据库:Microsoft Access 4.0以上1.4 参考资料《C#数据库精通》作者:王华杰清华大学出版社出版《C#程序设计教程》作者:李春葆清华大学出版社出版二项目中本人参与实现的部分1.描述所参与阶段的内容2.1.1概述我主要参与到分析部分和设计、测试。

开发软件系统最为困难的部分就是准确说明开发什么。

最为困难的概念性工作便是编写出详细技术需求,这包括所有面向用户、面向机器和其它软件系统的接口。

同时这也是一旦做错,将最终会给系统带来极大损害的部分,并且以后再对它进行修改也极为困难。

C语言课程设计报告—实验设备管理系统

C语言课程设计报告—实验设备管理系统

C语言程序设计报告课程设计的目的提高程序设计能力,检验课堂教学内容,掌握程序设计的基本方法和调试技能。

二课程设计报告正文1课程设计题目的原文;实验设备信息包括:设备编号、设备种类(如:微机打印机扫描仪等等)、设备名称、设备价格、设备购入日期、是否报废、报废日期等。

试设计一实验设备信息管理系统,使之能提供以下功能:(1 )能够完成对设备的录入和修改(2)对设备进行分类统计(3)设备的查询2需求分析实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号设备种类设备购入日期正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择。

3总体设计与模块的划分整个系统可设计为实验设备信息输入模块实验设备信息添加模块实验设备信息修改模块实验设备分类统计模块和实验设备查询模块。

4建立实验设备信息结构体,结构体成员包括设备编号设备种类设备名称设备价格设备购入日期是否报废报废日期。

4详细设计A主函数void mai n(){Node *equip;FILE *fp;int flag;Node *p,*q;printf("\t\t\t\t 设备管理系统\n"); equip=(Node*)malloc(sizeof(Node));printf("\n2 修改记录\n");printf("\n3 显示记录\n");printf("\n4统计分类记录\n");prin tf("\nO*-EXIT-*\n ”);printf("请输入你要操作的序号:”);sca nf("%d", &flag);switch(flag){case 0: printf("\n>>>>>>>>>> 提示:已经退出系统,ByeBye!\n");break; case 1: Add(equip); break; // 增加记录case 2: Modify(equip); break;// 修改记录case 3: Disp(equip); break;// 显示记录信息case 4: Ton gji(equip); break;// 统计记录default: printf("\n>>>>>>>>>> 提示:输入错误!\n"); break;}}}B各功能模块设计(1 )输入模块Struct shebei{ char ID[10]; char name[15]; char kind[15]; char over[15]; char yesno[10]; char time[10]; char price[10];};(2 )追加模块void Add(Node *equip) // 添加记录{Node *p,*r,*s;char id[10]; //先用于输入ID,也用于判断是否跳出循环r=equip;s=equip->next; //使s 为第一个有用的结点 while(r->next!=NULL) // 这个循环的作用是使r=r->next; //将指针置于最末尾 while(1){ printf(">>>>>>>>>>提示:输入0则返回主菜单printf("\n 请你输入设备ID 号:"); sca nf("%s",id);if(strcmp(id,"0")==0) break; p=(Node*)malloc(sizeof(Node)); // 申请空间 strcpy(p->data.ID,id); printf("\n 请输入设备名称:"); scanf("%s",p->data .n ame); printf("\n 请输入设备种类:");sca nf("%s",p->data.ki nd); printf("\n 请输入报废日期:"); sca nf("%s",& p->data.over); printf("\n 请输入设备是否报废:"); sca nf("%s", &p->data.yes no);printf("\n 请输入设备购买时间:”); sca nf("%s",&p->data.time); printf("\n 请输入设备价格:"); scanf("%s", &p->data.price); printf(">>>>>>>>>>提示:已经完成一条记录的添加。

实验室设备管理系统实验报告

实验室设备管理系统实验报告

个人课程设计报告院系计算机与通信工程学院专业计算机(中加)学号20106098姓名角色 A日期2013/6/20个人课程设计报告一项目概述1.1目的因为现在各个高校内教学设备众多但自动管理水平相比过低,很多高校管理设备都采用在设备购进以后将设备的基本情况和相关信息登记存档。

存档以后,档案基本就没人记录与维护,至于以后设备的变迁或损坏都不会记录在设备档案中,即不能体现设备的即时状态。

而有些即使有设备管理系统的单位,就算是能把设备的即时信息体现在设备档案上,但设备的缺陷处理及设备缺陷等功能没有实施,设备检修的备品备件情况和检修成本核算没有实现,整个学校教学设备管理信息化仍处于较低水平。

将管理任务分成小块,落实到个人并能随时查询设备当前情况和历史情况,对设备的可靠性分析有直接作用,使管理人员从手工计算、统计工作中解脱出来。

同时基于实验室管理者对设备的的使用情况进行统计和更新提供轻松快捷的管理方式,利用计算机管理系统管理我校的实验设备势在必行,也方便广大用户可以随时随地的借用实验设备进行学习和研究。

1.2 任务对项目进行可行性研究,需求分析,项目开发计划,以及中期的总控模块开发,参与软件的设计和测试。

1.3 开发环境◆硬件环境:建议硬件配置PII以上256M内存60G硬盘空间。

◆软件环境:需要安装Microsoft Access 4.0以上的版本,基本上Microsoft Windows系统用户都有。

◆数据库:Microsoft Access 4.0以上1.4 参考资料《C#数据库精通》作者:王华杰清华大学出版社出版《C#程序设计教程》作者:李春葆清华大学出版社出版二项目中本人参与实现的部分1.描述所参与阶段的内容2.1.1概述我主要参与到分析部分和设计、测试。

开发软件系统最为困难的部分就是准确说明开发什么。

最为困难的概念性工作便是编写出详细技术需求,这包括所有面向用户、面向机器和其它软件系统的接口。

同时这也是一旦做错,将最终会给系统带来极大损害的部分,并且以后再对它进行修改也极为困难。

(设备管理)实验室设备管理系统测试报告

(设备管理)实验室设备管理系统测试报告

<实验室设备管理系统>测试用例报告作者:完成日期:签收人:签收日期:修改情况记录:目录1 引言 (1)1.1编写目的 (1)1.2背景 (1)2 测试设计 (1)3 测试用例 (5)3.1用例1:用户登录页面 (5)3.2用例2:用户注册页面 (6)3.3用例3:用户找回密码页面 (8)3.4用例4:用户退出 (10)3.5用例5:一般用户操作界面 (11)3.6用例6:一般用户修改个人信息界面 (12)3.7用例7:一般用户书写个人日志界面 (14)3.8用例8:一般用户查询个人信息界面 (16)3.9用例9:管理员浏览信息界面 (17)3.10用例10:管理员管理教师操作界面 (19)3.11用例11:管理员修改个人资料界面 (21)3.12用例12:管理员浏览实验室人员信息界面 (23)3.14用例14:管理员管理实验室设备操作界面 (25)3.15用例15:管理员仪器设备报损界面 (27)3.16用例16:管理员贵重仪器购置操作界面 (29)3.17用例17:系统帮助界面 (31)3.18用例18:系统备分 (33)4 测试评估 (34)4.1测试任务评估 (34)4.2测试对象评估 (34)1 引言1.1 编写目的该文档的目的是描述实验室设备管理系统的测试设计,其主要内容包括:测试总体设计:测试用例设计:本文档的预期的读者是:读者项目管理人员:周岩,吕健雄测试人员:庞鑫1.2 背景该文档为实验室设备管理系统的测试设计,其中包括功能测试和性能测试的用例描述以及性能测试的测试脚本,为测试人员进行功能测试和性能测试提供标准和依据以及行进的测试步骤和方法。

2 测试设计系统测试依据的系统应用工作流如下:1)用户登陆界面:本系统分为一般用户和管理员两种使用用户。

在该页面中显示用户名、密码、确定按钮,取消按钮和注册按钮。

当一般用户在页面中输入正确的用户名和密码后,点击“确定”按钮进入一般用户主界面。

实验设备管理系统报告.

实验设备管理系统报告.

青岛理工大学数据库系统课程设计院(系):计算机工程学院专业:软件工程姓名:孙玉东班级:软件132 学号: 201307217题目:实验室设备管理系统起迄日期: 2015.12.14---2015.12.25_设计地点:计算机工程学院机房指导教师:王成钢周全强目录第一章前言 (3)1.1系统开发背景 (3)1.2开发工具介绍 (3)1.2.1 简介 (4)1.2.2 C#简介 (4)1.2.3 SQL Server 2012数据库 (5)1.2.4 数据库联接技术 (5)1.2.5 B/S结构 (6)第二章需求分析 (7)2.1任务概述 (7)2.1.1 系统目标 (7)2.1.2 用户特点 (7)2.2 系统功能需求 (7)2.2.1 系统角色功能需求 (7)2.2.2 功能模块需求 (8)2.3 系统的性能需求 (8)2.4 系统的数据需求 (9)第三章系统总体设计 (11)3.1系统功能设计 (11)3.1.1 系统总体模块设计 (11)第四章数据库设计 (12)4.1 数据库概念设计 (12)4.2数据库逻辑设计 (15)4.2.1 表汇总 (15)4.2.2 表逻辑结构设计 (15)第五章详细设计 (18)5.1程序流程图 (18)5.2页面设计 (22)5.3 关键代码部分 (25)5.3.1 数据库操作语句 (25)第六章结论与展望 (28)6.1 总结 (28)6.2系统不足 (28)参考文献 (29)第一章前言1.1系统开发背景一个现代化的实验室设备系统在正常运行中总是面对大量的使用者,仪器以及两者相互作用产生的借用仪器。

人工管理既浪费人力物力财力,又容易导致各种错误的发生。

为了方便实验室管理,得开发一个更好更高效的软件来管理。

实验室管理系统,是为了实现实验室管理而设计的,它也是现在各个部门的一个重要环节。

实验室是所有高校、研究机构必不可少的基本构成单位。

特别是高校,实验室的设备管理需要一套稳定、高效的管理办法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验设备管理系统程序报告(DOC 51页)目录一、需求与功能分析第二章概要设计 (5)2.1总体设计52.2面向对象设计52.3运行界面设计6第三章详细设计 (7)3.1 系统设计与实现 (7)3.2 模块设计 (8)第四章测试分析 (10)第五章课程设计总结 (10)附录:程序代码(仅电子版需要、纸质版不需要)..................................................................................一、需求与功能分析1.1需求为了方便管理校内各种实验设备,能够翻遍快捷的录入查询各个实验设备的基本信息而编写了此程序实验设备管理系统设计实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。

1.2主要功能:1、能够完成对设备的录入和修改。

2、对设备进行分类统计。

4、设备的破损耗费和遗损处理。

4、设备的查询。

1.3功能需求1、可实现管理员登陆管理系统,游客查询系统。

2、对实验设备类型的管理。

3、对实验设备各项信息的录入和修改。

4、对实验设备的分类查询统计。

5、对实验设备的遗损处理二、概要设计2.1总体设计程序总体共分为4个类:1、菜单类2、设备类型类3、设备类4、管理员类由主函数主持整体运行,由菜单类调用其它三类2.1 面向对象设计1.设备类型类:(见图2)void shuru(); //设备类型的输入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) //分类查询的内容支持(见图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 create() //创建用户名和密码int log() //登陆void change() //修改用户名和密码2.2 运行界面设计运行界面由菜单类实现;菜单类: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 *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系统设计与实现接口设计: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 *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.2模块设计设备类型类:设备类:四、测试分析【测试中发现的问题及解决方案】1.缺少必要的文字描述(已解决)2.输出的格式问题(已解决)3.不能删除唯一一项数据的问题(已解决)4.设备操作中缺失最后一行的问题(已解决)5.不能返回上一级菜单的问题(已解决)6.价格统计时不能确定准确比较的问题(已解决)【对最终成果的评价】整体来说比较满意,是最近辛苦努力的伟大成果,但是有如下几点有待改进1.可以进行汉字输入但是不能进行汉字查询的问题2.管理员账号不能随意登出的问题3.设备类中没有使用private导致保密性不强的问题五、源程序#include<iostream>#include<fstream>#include<conio.h>#include<stdio.h>#include<iomanip>#include<windows.h>using namespace std;class DeviceTipe //定义设备类型类{private:char sblx[20][20]; //设备类型public:void shuru(); //设备类型的输入void tianjia(); //设备类型的添加void shanchu(); //设备类型的删除void show(); //设备类型的输出显示void xieru(); //设备类型的写入void duqu(); //设备类型的读取};//=================================== ===========================//=================================== ===========================class device //定义设备类{public:typedef struct infom{char idnum[10]; //编号char kind[10]; //类型char name[10]; //名称char price[10]; //价格char purda[10]; //购买日期char exist[10]; //是否报废char damda[10]; //报废日期struct infom *next;}Infom;Infom* head;DeviceTipe 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键结束输入):"<<endl;cin>>p1->idnum>>p1->kind>>p1->name>>p1->price>>p1->purda>>p1->exist>>p1->damda;the<<p1->idnum<<' '<<p1->kind<<' '<<p1->name<<' '<<p1->price<<' '<<p1->purda<<' '<<p1->exist<<' '<<p1->damda<<endl;p1->next=NULL;while(1){if(head==NULL)head=p1;if(head!=NULL)p2->next=p1;p2=p1;p1=(Infom *)malloc(sizeof(Infom)); cin>>p1->idnum;if(*(p1->idnum)=='0'){free(p1);break;}cin>>p1->kind>>p1->name>>p1->price>>p1->purda>>p1->exist>>p1->damda;the<<p1->idnum<<' '<<p1->kind<<' '<<p1->name<<' '<<p1->price<<' '<<p1->purda<<' '<<p1->exist<<' '<<p1->damda<<endl;}p2->next=NULL;the.close();cout<<"写入成功"<<endl;load();return head;}//=================================== ===========================Infom* load() //从文档中读取数据{int n,a;char tran[7][80];int b;Infom *p1,*p2;fstream t("aaa.txt");head=NULL;p1=p2=(Infom*)malloc(sizeof(Infom));if(t.getline(tran[0],80,'\n')==NULL) {cout<<"载入失败"<<endl;return 0;}for(n=0,a=0;tran[0][n]!=' ';n++){p1->idnum[a]=tran[0][n];a++;}p1->idnum[a]='\0';for(a=0,n=n+1;tran[0][n]!=' ';n++) {p1->kind[a]=tran[0][n];a++;}p1->kind[a]='\0';for(a=0,n=n+1;tran[0][n]!=' ';n++) {p1->name[a]=tran[0][n];a++;}p1->name[a]='\0';for(a=0,n=n+1;tran[0][n]!=' ';n++) {p1->price[a]=tran[0][n];a++;}p1->price[a]='\0';for(a=0,n=n+1;tran[0][n]!=' ';n++) {p1->purda[a]=tran[0][n];a++;}p1->purda[a]='\0';for(a=0,n=n+1;tran[0][n]!=' ';n++) {p1->exist[a]=tran[0][n];a++;}p1->exist[a]='\0';for(a=0,n=n+1;tran[0][n]!='\0';n++) {p1->damda[a]=tran[0][n];a++;}p1->damda[a]='\0';p1->next=NULL;for(b=1;t.getline(tran[b],80,'\n')!=NULL;b++) {if(head==NULL)head=p1;elsep2->next=p1;p2=p1;p1=(Infom*)malloc(sizeof(Infom));for(n=0,a=0;tran[b][n]!=' ';n++){p1->idnum[a]=tran[b][n];a++;}p1->idnum[a]='\0';for(a=0,n=n+1;tran[b][n]!=' ';n++){p1->kind[a]=tran[b][n];a++;}p1->kind[a]='\0';for(a=0,n=n+1;tran[b][n]!=' ';n++) {p1->name[a]=tran[b][n];a++;}p1->name[a]='\0';for(a=0,n=n+1;tran[b][n]!=' ';n++) { p1->price[a]=tran[b][n];a++;}p1->price[a]='\0';for(a=0,n=n+1;tran[b][n]!=' ';n++) {p1->purda[a]=tran[b][n];a++;}p1->purda[a]='\0';for(a=0,n=n+1;tran[b][n]!=' ';n++){p1->exist[a]=tran[b][n];a++;}p1->exist[a]='\0';for(a=0,n=n+1;tran[b][n]!='\0';n++){p1->damda[a]=tran[b][n];a++;}p1->damda[a]='\0';}p2->next=p1;p1->next=NULL;if(b==1)head=p1;cout<<"载入成功"<<endl;return head;}//=================================== ===========================void acquire(Infom* head) //分类查询数据{char choose;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();switch(choose){case '1':acqu(choose);break;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<<" 编号种类名称价格购买日期是否报废报废日期"<<endl;for(;t->next!=NULL;){cout<<setfill('')<<setw(10)<<t->idnum<<' '<<setfill('')<<setw(10)<<t->kind<<' '<<setfill('')<<setw(10)<<t->name<<' '<<setfill(' ')<<setw(10)<<t->price<<' '<<setfill(' ')<<setw(10)<<t->purda<<' '<<setfill(' ')<<setw(10)<<t->exist<<' '<<setfill(' ')<<setw(10)<<t->damda<<endl;t=t->next;}cout<<setfill('')<<setw(10)<<t->idnum<<' '<<setfill('')<<setw(10)<<t->kind<<' '<<setfill('')<<setw(10)<<t->name<<' '<<setfill('')<<setw(10)<<t->price<<' '<<setfill('')<<setw(10)<<t->purda<<' '<<setfill('')<<setw(10)<<t->exist<<' '<<setfill('')<<setw(10)<<t->damda<<endl;}}void acqu(char choose) //分类查询的内容支持{Infom* t=head;char *s;int a=0;char xyz[10];cout<<"请输入查询内容:";cin>>xyz;for(;t->next!=NULL;){switch(choose){case'1':s=t->idnum;break;case'2':s=t->name;break;case'3':s=t->kind;break;case'4':s=t->price;break;c ase'5':s=t->purda;break;case'6':s=t->exist;break;c ase'7':s=t->damda;break;}if(strcmp(s,xyz)==0){if(a==0)cout<<" 编号种类名称价格购买日期是否报废报废日期"<<endl;cout<<setfill('')<<setw(10)<<t->idnum<<' '<<setfill('')<<setw(10)<<t->kind<<' '<<setfill('')<<setw(10)<<t->name<<' '<<setfill('')<<setw(10)<<t->price<<' '<<setfill('')<<setw(10)<<t->purda<<' '<<setfill('')<<setw(10)<<t->exist<<' '<<setfill('')<<setw(10)<<t->damda<<endl;a++;}t=t->next;}switch(choose){case'1':s=t->idnum;break;case'2':s=t->name;break;case'3':s=t->kind;break;case'4':s=t->price;break;case'5':s=t->purda;break;c ase'6':s=t->exist;break;c ase'7':s=t->damda;break;}if(strcmp(s,xyz)==0){if(a==0)cout<<" 编号种类名称价格购买日期是否报废报废日期"<<endl;cout<<setfill('')<<setw(10)<<t->idnum<<' '<<setfill('')<<setw(10)<<t->kind<<' '<<setfill('')<<setw(10)<<t->name<<' '<<setfill('')<<setw(10)<<t->price<<' '<<setfill('')<<setw(10)<<t->purda<<' '<<setfill('')<<setw(10)<<t->exist<<' '<<setfill('')<<setw(10)<<t->damda<<endl;a++;}if(a==0)cout<<"对不起,您查询的信息不存在"<<endl;}//=================================== ===========================void add() //添加新内容{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键结束输入):"<<endl;cin>>p1->idnum>>p1->kind>>p1->name>>p1->price>>p1->purda>>p1->exist>>p1->damda;the<<p1->idnum<<' '<<p1->kind<<' '<<p1->name<<' '<<p1->price<<' '<<p1->purda<<' '<<p1->exist<<' '<<p1->damda<<endl;p1->next=NULL;while(1){if(head==NULL)head=p1;if(head!=NULL)p2->next=p1;p2=p1;p1=(Infom *)malloc(sizeof(Infom)); cin>>p1->idnum;if(*(p1->idnum)=='0'){free(p1);break;}cin>>p1->kind>>p1->name>>p1->price>>p1->purda>>p1->exist>>p1->damda;the<<p1->idnum<<' '<<p1->kind<<' '<<p1->name<<' '<<p1->price<<' '<<p1->purda<<' '<<p1->exist<<' '<<p1->damda<<endl;}p2->next=NULL;the.close();cout<<"添加成功"<<endl;load();}//=================================== ===========================void undo(Infom* head) //删除{struct infom *p1,*p2;char num[10];char aaa[10]="0";char choose;wcs.duqu();wcs.show();cout<<"请输入要删除的编号(空格键断开\按0键结束):"<<endl;while(1){cin>>num;if(strcmp(num,aaa)==0)break;if(head==NULL)cout<<"您使用的地址不存在"<<endl;else{p1=head;for(;strcmp(p1->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){case '1':save(head);break;case '0':break;}if(choose=='1'){cout<<"删除成功"<<endl;load();}}//=================================== ===========================int save(Infom* head) //将现数据进行保存{unlink("aaa.txt");fstream The("aaa.txt",ios::out|ios::app);Infom *p1;p1=head;if(p1==NULL)return 0;for(;p1->next!=NULL;){The<<p1->idnum<<' '<<p1->kind<<' '<<p1->name<<' '<<p1->price<<' '<<p1->purda<<' '<<p1->exist<<' '<<p1->damda<<endl;p1=p1->next;}The<<p1->idnum<<' '<<p1->kind<<' '<<p1->name<<' '<<p1->price<<' '<<p1->purda<<' '<<p1->exist<<' '<<p1->damda<<endl; The.close();return 0;}//=================================== ===========================void revise(Infom* head) //修改数据{char num[10];Infom *p1;char choose;char x;wcs.duqu();wcs.show();cout<<"请输入更改项目的编号:"<<endl;cin>>num;p1=head;for(;strcmp(p1->idnum,num)!=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;c out<<"5. 购买日期"<<endl;c out<<"6. 是否报废"<<endl;c out<<"7. 报废日期"<<endl;c out<<"0. 结束修改"<<endl;choose=getch();cout<<"请输入修改内容:"<<endl;switch(choose){case '1':cin>>p1->idnum;break;case '2':cin>>p1->name;break;case '3':cin>>p1->kind;break;case '4':cin>>p1->price;break;case '5':cin>>p1->purda;break;case '6':cin>>p1->exist;break;case '7':cin>>p1->damda;break;case '0':break;}}cout<<"输入'1'储存,输入'0'放弃"<<endl;x=getch();switch(x){case '1':save(head);break;case '0':break;}}//=================================== ===========================void classify(Infom* head) //对数据的分类统计{char choose;cout<<"请选择统计内容:"<<endl;cout<<"1. 类型"<<endl;cout<<"2. 价格"<<endl;cout<<"3. 是否报废"<<endl; cout<<"0. 结束统计"<<endl;choose=getch();switch(choose){case '1':clasK(head) ;break;case '2':clasP(head) ;break;case '3':clasE(head) ;break;case '0':break;}}void clasK(Infom* head) //类型的分类统计{char a[20][10];int b[20]={1};int x;int y;int i;Infom *p1;p1=head;for(x=0,strcpy(a[0],p1->kind);p1->next!=NUL L;){p1=p1->next;for(y=0;y<=x;y++){if(strcmp(p1->kind,a[y])==0){b[y]++;break;}}if(y==x+1){x++;b[x]++;strcpy(a[x],p1->kind);}for(i=0;i<=x;i++){cout<<"类型:"<<a[i]<<' '<<"数量:"<<b[i]<<endl;}}void clasP(Infom* head) //价格的分类统计{int b[3]={0};int x;int y;int i;char trans[10];char de[10]="000005000";char deg[10]="000010000";Infom *p1;p1=head;for(;p1->next!=NULL;){x=strlen(p1->price);for(i=0,y=0;i<9;i++){if(i>=(9-x)){trans[i]=p1->price[y];y++;}elsetrans[i]='0';}if(strcmp(trans,de)<=0)b[0]++;if(strcmp(trans,de)>0&&strcmp(p1->price,de g)<0)b[1]++;if(strcmp(trans,deg)>=0)b[2]++;p1=p1->next;}x=strlen(p1->price);for(i=0,y=0;i<9;i++){if(i>=(9-x)){trans[i]=p1->price[y];y++;}elsetrans[i]='0';}if(strcmp(trans,de)<=0)b[0]++;if(strcmp(trans,de)>0&&strcmp(trans,deg)<0 )b[1]++;if(strcmp(trans,deg)>=0)b[2]++;p1=p1->next;cout<<"价格小于等于5000:" <<' '<<"数量:"<<b[0]<<endl;cout<<"价格大于5000小于10000:"<<' '<<"数量:"<<b[1]<<endl;cout<<"价格大于等于10000:" <<' '<<"数量:"<<b[2]<<endl;}void clasE(Infom* head) //是否报废的统计{char a[20][10];int b[20]={1};int x;int y;int i;Infom *p1;p1=head;for(x=0,strcpy(a[0],p1->exist);p1->next!=NUL L;){p1=p1->next;for(y=0;y<=x;y++){if(strcmp(p1->exist,a[y])==0){b[y]++;break;}}if(y==x+1){x++;b[x]++;strcpy(a[x],p1->exist);}}for(i=0;i<=x;i++){cout<<"是否报废:"<<a[i]<<' '<<"数量:"<<b[i]<<endl;}}};//==============================================================//=================================== ===========================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)<<endl;}fout<<flush;fout.close();}//=================================== ===========================void DeviceTipe::duqu(){ifstream file;file.open("sblx.txt");char (*p)[20];p=sblx;i=0;do{file>>*(p+i);i++;}while(p[i][0]!='\0');for(i=0;p[i][0]!='\0';i++);n=i;file.close();}//=================================== ===========================void DeviceTipe::shuru(){char (*p)[20];p=sblx;system("cls");cout<<"请输入设备类型个数:"<<endl; cin>>n;cout<<"请依次输入设备类型名称"<<endl;for(i=0;i<n;i++){cin>>*(p+i);}}//=================================== ===========================void DeviceTipe::tianjia(){char (*p)[20];p=sblx;int k;system("cls");cout<<"请输入要添加的设备类型个数"<<endl;cin>>k;cout<<"请依次输入设备类型名称"<<endl; for(i=n;i<n+k;i++){cin>>*(p+i);}n=n+k;}//=================================== ===========================void DeviceTipe::shanchu(){char (*p)[20];char w[20];p=sblx;int x=0;int j;int r;cout<<"请输入要删除的设备类型"<<endl; cin>>w;for(i=0;i<n;i++){if(strcmp(w,*(p+i))==0)for(j=i;j<n;j++){strcpy(*(p+j),*(p+j+1));x=1;。

相关文档
最新文档