实验设备管理系统程序报告(DOC 51页)
实训室设备管理系统项目报告
实验室设备管理系统》项目报告一、系统简介随着计算机技术的迅猛发展以及Internet 进入商业和社会应用阶段,设备的种类、数量越来越多,如何利用先进的网络技术和日新月异的计算机设备来有效地收集、处理这些设备,建立以信息化为核心的管理体制,减轻管理人员和业务人员的数据处理负担,极大地提高设备管理效率和管理手段,己经成为当今社会的潮流。
设备管理系统是一个以人为主导,利用计算机硬件、软件、网络设备通信设备以及其他办公设备,进行信息的收集、更新和维护,以提高效率为目的的人机系统。
它具有管理信息系统的共性,同时也具有其特殊性。
二、设备管理系统组成部分设备资产及技术管理:建立设备信息库,实现设备前期的选型、采购、安装测试、转固;设备转固后的使用、闲置、报废,设备运行过程中的技术状态、维护、保养情况记录。
设备文档管理:设备相关档案的登录、整理以及与设备的挂接。
设备缺陷及事故管理:设备缺陷报告、跟踪、统计,设备紧急事故处理。
预防性维修:以可靠性技术为基础的定期维修、维护,维修计划分解,自动生成预防性维修工作单。
维修计划排程:根据日程表中设备运行记录和维修人员工作记录,编制整体维修、维护任务进度的安排计划,根据任务的优先级和维修人员工种情况来确定维修工人。
申请单的审核与跟踪:对用户申请单,进行审核、执行,并跟踪申请单状态。
备品、备件管理:建立备件台帐,编制备件计划,处理备件日常库存事务,根据备件最小库存量或备件重订货点自动生成采购计划,跟踪备件与设备的关系。
维修成本核算:凭借工作单上人员时间、所耗物料、工具和服务等信息,汇总维修、维护任务成本,进行实际成本与预算的分析比较。
缺陷分析:建立设备故障代码体系,记录每次故障发生的情况以进行故障分析。
统计报表:查询、统计各类信息,包括设备的三率报表、设备维修成本报表、设备状态报表、设备履历报表、备件库存周转率、供应商分析报表等。
三、用户角色分类四、软硬件环境需求五、系统质量需求六、设备管理系统ER图七、设备管理系统流程图八、界面设计实训室设备管理系统Equipment Management System设备管理系统Equipment Management Systeir九、项目心得体会3个月的项目实训对Java编程语言从低层次的认识到实实在在地使用在项目开发,期间是一个枯燥而又漫长的过程。
实训室设备管理系统项目报告
《实验室设备管理系统》项目报告一、系统简介随着计算机技术的迅猛发展以及Internet进入商业和社会应用阶段,设备的种类、数量越来越多,如何利用先进的网络技术和日新月异的计算机设备来有效地收集、处理这些设备,建立以信息化为核心的管理体制,减轻管理人员和业务人员的数据处理负担,极大地提高设备管理效率和管理手段,己经成为当今社会的潮流。
设备管理系统是一个以人为主导,利用计算机硬件、软件、网络设备通信设备以及其他办公设备,进行信息的收集、更新和维护,以提高效率为目的的人机系统。
它具有管理信息系统的共性,同时也具有其特殊性。
二、设备管理系统组成部分设备资产及技术管理:建立设备信息库,实现设备前期的选型、采购、安装测试、转固;设备转固后的使用、闲置、报废,设备运行过程中的技术状态、维护、保养情况记录。
设备文档管理:设备相关档案的登录、整理以及与设备的挂接。
设备缺陷及事故管理:设备缺陷报告、跟踪、统计,设备紧急事故处理。
预防性维修:以可靠性技术为基础的定期维修、维护,维修计划分解,自动生成预防性维修工作单。
维修计划排程:根据日程表中设备运行记录和维修人员工作记录,编制整体维修、维护任务进度的安排计划,根据任务的优先级和维修人员工种情况来确定维修工人。
申请单的审核与跟踪:对用户申请单,进行审核、执行,并跟踪申请单状态。
备品、备件管理:建立备件台帐,编制备件计划,处理备件日常库存事务,根据备件最小库存量或备件重订货点自动生成采购计划,跟踪备件与设备的关系。
维修成本核算:凭借工作单上人员时间、所耗物料、工具和服务等信息,汇总维修、维护任务成本,进行实际成本与预算的分析比较。
缺陷分析:建立设备故障代码体系,记录每次故障发生的情况以进行故障分析。
统计报表:查询、统计各类信息,包括设备的三率报表、设备维修成本报表、设备状态报表、设备履历报表、备件库存周转率、供应商分析报表等。
三、用户角色分类四、软硬件环境需求五、系统质量需求六、设备管理系统ER图七、设备管理系统流程图八、界面设计九、项目心得体会3个月的项目实训对Java编程语言从低层次的认识到实实在在地使用在项目开发,期间是一个枯燥而又漫长的过程。
实验设备管理系统程序报告(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语言程序设计报告课程设计的目的提高程序设计能力,检验课堂教学内容,掌握程序设计的基本方法和调试技能。
二课程设计报告正文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系统开发背景一个现代化的实验室设备系统在正常运行中总是面对大量的使用者,仪器以及两者相互作用产生的借用仪器。
人工管理既浪费人力物力财力,又容易导致各种错误的发生。
为了方便实验室管理,得开发一个更好更高效的软件来管理。
实验室管理系统,是为了实现实验室管理而设计的,它也是现在各个部门的一个重要环节。
实验室是所有高校、研究机构必不可少的基本构成单位。
特别是高校,实验室的设备管理需要一套稳定、高效的管理办法。
实验设备管理系统实验报告
目录:“数据库应用课程设计”任务书 (2)一、需求分析 (5)1.设计目的 (5)2.设计任务 (5)3.设计要求 (5)二、需求说明 (6)三、概念结构设计 (8)1.登陆状态图 (8)2.总体ER图 (9)四、数据库设计 (9)1.逻辑结构设计 (9)2.数据字典 (9)3. 数据库的创建和数据的载入 (10)五、详细设计 (11)1.用户登录模块 (12)2.系统菜单 (13)3.设备资料信息管理模块 (13)4.设备保养管理模块 (14)5.设备使用信息管理模块 (15)6.设备报损管理模块 (16)7.统计 (16)六、总结 (17)七、主要参考资料 (18)“数据库应用课程设计”任务书一、需求分析1.设计目的(1)能运用所学“数据库原理及应用”以及“数据库设计与维护”课程的理论知识,分析并解决实际问题。
(2)掌握数据库设计的基本方法和步骤。
(3)掌握针对实际问题如何规划、管理和维护数据库的过程。
2.设计任务学院实验中心拥有大量的教学、实验设备。
为了加强对设备进行维护和保养的管理,提高学院设备的管理效率,需要设计数据库系统,从而能够为实验中心领导及管理人员的决策提供全面、准确的信息数据。
请设计合理的数据库表结构并实现该系统,用以管理设备的维护保养及使用信息。
(1)系统主要功能如下:●设备资料管理:对设备的基本信息进行管理,记录一些设备的相关资料信息,例如,编号、名称、价格、技术参考资料、技术资料、设备供货厂商、备件购置厂商等;●设备分类管理:对设备进行分类,并对分类信息进行管理;●设备使用管理:对设备的使用情况进行管理,例如:编号、使用人、使用开始时间、使用结束情况,设备完好情况等;●设备保养管理:对设备的保养信息进行管理,例如,设备保养计划、设备保养记录、本月保养计划、未完成保养清单等;●设备报损管理:对设备损坏报告情况进行管理,并要对这些报损的设备进行分类;●统计功能:能够统计设备的总价值、能够正常使用的设备等信息进行管理。
设备管理系统实验报告
设备号:数字类型,设备编号,长度为2个字节,要求他唯 一非空
借出部门:文本类型,20字节长度 借入部门:文本类型,20字节长度 借出日期:日期型,默认填写当天日期 归还日期:日期型 系统状况:文本型,100字节长度 负责人:文本类型
4. 故障表:
设备号:设备编号,长度为2个字节,要求他唯一非空 故障原因:文本型,100字节长度 故障日期:日期型,默认填写当天日期 维修次数:数字类型,4字节长度
维修日期:日期型 维修结果:文本类型,33字节长度 负责人:文本型,10字节长度
5. 报废表:
设备编号:设备编号,长度为2个字节,要求他唯一非空 报废理由:文本类型 报废日期:日期型,默认填写当天日期 最后维修日期:日期型
建立数据库与记录录入:
创建数据库:文件→新建→数据库→新建文件→输入库名和 保存位置→建库(建立以上各表) 关闭、打开、修改数据库:文件→打开;文件→关闭; 往库中加入、删除表,表的修改。 组织数据入库。 直接往数据库中录入。 通过自己开发的数据录入子系统录入。
9。修改密码,写入新的用户名和新密码,点击修改就会把新的 用户名和新密码保存到密码表中。
10。一共建了七个表。目前除密码表中有一个记录其它表中没 有记录。设备表和购入表相当于总表,
其它表根据它们才有相应的登记。运行结果界面:
数据库试验报告
实验题目: 公司设备管理系统 试验班级: C052班 项目成员:
组长: 组员:
分工表:
实验目的:
通过对一个数据库产品的了解,对一个具体问题的综合分析,先进行书 面分析达到要求后进行数据库编程,最后达到利用高级语言处理数据库 的目的。
实验要求:
利用ER图方法设计概念数据库 用关系方法设计数据库模型; 用SQL Server7.0建立关系数据库; 用PB 7.0和SQL操纵数据库;
实验设备管理系统程序报告
实验设备管理系统程序报告1. 引言实验设备管理系统是一个用于管理和跟踪实验室设备的程序。
该系统的目标是提高实验室设备的使用效率和管理效果。
本报告将详细讨论该系统的设计、实施和运行情况。
2. 设计实验设备管理系统的设计在满足实验室设备管理需求的基础上,注重易用性和灵活性。
以下是系统的主要设计要点:2.1 数据库设计系统采用关系数据库来存储实验设备信息,包括设备名称、型号、购买日期、购买价格、使用状况等。
数据库的设计采用了实体-关系模型,确保了数据的一致性和完整性。
2.2 用户界面设计系统的用户界面简洁直观,方便用户进行设备管理操作。
主要界面包括设备列表、设备详情、设备借用申请等。
用户可以轻松地浏览、搜索和编辑设备信息。
2.3 设备借用流程设计系统实现了设备借用的流程管理。
用户可以提交设备借用申请,管理员审核通过后,设备可以借用一段时间。
在借用期间,系统会自动提醒用户归还设备。
3. 实施实验设备管理系统的实施分为以下几个步骤:3.1 硬件和软件需求为了运行该系统,需要一台支持数据库运行的服务器,并安装合适的数据库软件。
此外,用户需要具备一台电脑或移动设备来访问系统的用户界面。
3.2 系统安装系统的安装包可以从内部的软件仓库中下载。
安装过程简单,用户只需按照提示进行操作即可。
3.3 数据库初始化在安装完成后,需要进行数据库的初始化。
管理员需要创建数据库表和初始数据,以便系统能够正常运行。
3.4 用户注册和权限设置新用户需要注册账号,并指定账号的权限。
管理员拥有最高权限,可以对设备进行编辑和审批操作。
3.5 系统使用培训为了让用户能够熟悉系统的使用,可以组织培训课程。
培训内容包括登录、设备浏览、设备借用等基本操作。
4. 运行情况实验设备管理系统自投入使用以来,取得了良好的运行效果。
以下是系统运行情况的主要方面:4.1 设备管理效率提高借助该系统,实验室设备的管理效率得到了显著提高。
管理员可以通过系统追踪设备的使用情况,并对设备进行统一管理。
设备管理系统报告
设备管理系统报告单位:九院一大队十二队学号:200509017013姓名:张文明系统分析报告一、项目背景设备管理是企业信息系统中一个重要组成部分。
其主要作用是帮助企业有关管理人员能够根据设备台帐及设备折旧制度及时对设备进行各式各样的维修、保养及修理,以保证设备在整个企业经营活动中能够发挥其应有的作用。
设备管理部门的人员包括设备科科长及副科长3人、记帐员2人、设备维修小组成员10人、备品备件库管理员2人。
其主要业务包括:提出设备采购或自制计划、设备选型及采购、验收出具的财务记帐单据和设备验收合格单、建立设备卡片、设立设备台帐、确定设备的保养及维修计划、提出备品备件使用计划1、帮助单位对各种设备的采购、备案、调入、调出使用等项工作进行管理。
2、提醒不同类型设备进行定期维护,总体查看设备使用状况,规划下一年度的设备订购计划。
二、简要流程及分析企业计划采购或自制各种设备时,先由有关部门提出设备采购或自制计划,由设备管理部门及企业有关部门共同进行设备选型及采购(或自制)工作。
设备到货后,由有关部门及设备管理部门的人员共同验收。
验收合格后出具设备验收合格单报财务及设备管理部门备案。
然后根据财务部门出具的财务记帐单据和设备验收合格单有记帐员负责建立设备卡片、设立设备台帐,并根据财务部门出具的数据设置设备的折旧、大修理基金的比例。
同时根据设备管理的有关规定确定设备的保养及维修计划。
设备正常使用过程中,设备维修小组根据设备保养及维修计划的安排,定时对指定设备进行正常保养和维修。
维修小组负责根据设备保养维修计划,向备品备件仓库提出备品备件使用计划。
备品备件仓库根据备品备件使用计划及库存物料的实际情况,按月向设备科科长及物料采购部门报送备品备件采购计划。
有关部门批准后由物料采购部门负责采购,到货后由备品备件仓库管理员负责验收入库。
设备维修小组根据使用计划从备品备件仓库领取有关物料。
如果设备出现故障,由设备使用部门通知设备管理部门进行现场抢修。
实验室设备管理系统实验报告1
本科实验报告课程名称:软件工程导论实验项目:实验室设备管理系统实验地点:实验楼210专业班级:软件1319 学号:********** 学生姓名:***指导教师:***2015年05 月21 日一、实验目的和要求1.系统简介某大学每学年都需要对实验室设备使用情况进行统计、更新。
其中:(1)对于已彻底损坏的实验设备做报废处理,同时详细记录有关信息。
(2)对于有严重问题(故障)的需要及时修理,并记录修理日期、设备名、编号、修理厂家、修理费用、责任人等。
(3)对于急需使用但实验室目前又缺乏的设备,需以“申请表”的形式送交上级领导请求批准购买。
新设备购入后要立即进行设备登记(包括类别、设备名、编号、型号、规格、单价、数量、购置日期、生产厂家、保质期和经办人等信息),同时更新申请表的内容。
(4)随时对现有设备及其修理、报废情况进行统计、查询,要求能够按类别和时间段等条件进行查询。
2.技术要求及限制条件(1)所有工作由专门人员负责完成,其他人不得任意使用。
(2)每件设备在做入库登记时均由系统按类别加自动顺序号编号,形成设备号;设备报废时要及时修改相应的设备记录,且有领导认可。
(3)本系统的数据存储至少包括:设备记录、修理记录、报废记录、申请购买记录。
(4)本系统的输入项至少包括:新设备信息、修理信息、申请购买信息、具体查询统计要求。
(5)本系统的输出项至少包括:设备购买申请表、修理/报废设备资金统计表。
二、实验内容和原理可行性分析报告可行性研究主要是初步确定项目的规模和目标,确定项目的约束和限制。
对于项目的功能和性能方面的要求进行简要的概述。
详见组长田彦博的实验报告。
需求规格说明书需求规格说明书主要是进一步定制实验室设备管理系统软件开发的细节问题,便于用户与开发商协调工作。
在此主要绘制了系统的数据流图、相应的数据字典、E-R图、以及系统的功能图,对于各个方面的需求进行了详细的阐述。
详见组长田彦博的实验报告。
实验室设备管理系统 详细设计实验报告
实验室设备管理系统详细设计实验报告1 详细设计说明书1引言(2)1.1编写目的(2)1.2背景(2)1.3定义(2)1.4参考资料(2)2程序系统的结构(3)3程序1(标识符)设计说明(4)3.1程序描述(4)3.2功能(5)3.3性能(5)3.4输人项(5)3.5输出项(6)3.6算法(6)3.7流程逻辑(7)3.8接口(8)3.9存储分配(8)3.10注释设计(8)3.11限制条件(8)3.12测试计划(8)3.13尚未解决的问题(9)4程序2(标识符)设计说明(9)1引言1.1编写目的对软件需求的全面、深入的理解是软件开发工作获得成功的前提条件,作为软件定义时期的最后一个阶段,需求分析的任务是明确用户对目标系统的需求,主要是确定对系统的综合要求,同时分析系统的数据要求。
它能提高软件开发过程的能见度,便于实现软件开发人员对开发过程的工程化管理与控制,便于项目管理人员、开发人员、测试人员、维护人员之间更好地交流与协作。
1.2背景a.开发软件系统的名称:实验室设备管理系统b.本项目的任务提出者:第五组c.开发者:第五组d. 用户:实验室设备管理员e. 运行系统的计算中心:实验室电脑1.3定义报废:管理人员发现设备因某些原因损坏而导致设备不能使用时,就将该设备记录下来,并记录报废原因。
维修:管理人员发现设备因某些原因损坏需要维修时,就将该设备记录下来,并提出维修意见。
查询:随时对现有设备及其修理、报废情况进行统计、查询,要求能够按类别和时间段(某日期之前)查询1.4参考资料《软件工程导论》张海藩清华大学出版社实验室设备管理系统可行性研究报告第五组实验室设备管理系统需求分析报告第五组实验室设备管理系统概要设计报告第五组2程序系统的结构用一系列图表列出本程序系统内的每个程序(包括每个模块和子程序)的名称、标识符和它们之间的层次结构关系。
设备管理员操作模块如下图所示:系统功能操作模块如下图所示:3程序1(标识符)设计说明从本章开始,逐个地给出各个层次中的每个程序的设计考虑。
实验室设备管理程序报告
实验室设备管理程序报告《管理信息系统》课程设计报告书实验室设备管理程序姓名:李晓红 110541114马宁宁 110541120郭颖洁 110541107李俊宏 110541113顾乡 110541106专业:工商管理指导老师:褚衍昌所属学院:经济与管理学院二0一三年七月目录第1章绪论················错误!未定义书签。
1.1项目背景················错误!未定义书签。
1.2基本情况介绍··············错误!未定义书签。
1.3小组分工................错误!未定义书签。
第2.章系统分析...............错误!未定义书签。
2.1可行性分析...............错误!未定义书签。
2.2实验室设备管理信息系统的项目进程. (5)2.3业务流程图···············错误!未定义书签。
2.4数据流程图 (2)第3.章系统设计···············错误!未定义书签。
3.1功能结构图 (2)3.2.功能模块················错误!未定义书签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;。