东北大学秦皇岛分校java课程设计.docx
《东北大学秦皇岛分校java课程设计.docx》由会员分享,可在线阅读,更多相关《东北大学秦皇岛分校java课程设计.docx(60页珍藏版)》请在冰豆网上搜索。
![东北大学秦皇岛分校java课程设计.docx](https://file1.bdocx.com/fileroot1/2023-1/21/0f5c684e-46e3-47a0-bc88-364f2ab00b99/0f5c684e-46e3-47a0-bc88-364f2ab00b991.gif)
东北大学秦皇岛分校java课程设计
1.1.1系统用户列表
高校LEM面向五类用户:
系统管理员,购买登记员,仓库管理员,实验室管理员,上级领导,这几类用户通过高校LEM系统进行设备管理上的交流,而该系统为用户提供不同的功能。
【1】系统管理员
1.注册本系统用户;
2.注销本系统用户;
3.数据库的维护;
4.本人信息维护;
【2】购买登记员
1.将购买员提交的购买信息进行登记,记录有关设备基本信息,设备的购买信息如价格,数量等;
2.查询领导的购买申请审核信息;
3.根据审核信息将购买的设备分配到相应的仓库,将有关详单提交仓库管理员,
4.本人信息维护。
【3】仓库管理员
1.根据购买登记员提交的详单进行入库登记;
2.根据实验室管理员提交的详单进行出库登记;
3.查询统计本仓库中的所有设备的库存量,统计出库存量不足的设备;
4.根据统计信息进行购买申请。
5.本人信息维护;
【4】实验室管理员
1.管理本实验室中各设备,找出需要维修的设备,进行维修申请;
2.对于不能维修的设备,要进行报废记录;
3.查询统计本实验室设备拥有量,统计出数量不足的设备,产生详单提交仓库管理员;
4.对于已维修完成的设备,根据维修员提交维修单进行维修记录;
5.本人信息维护。
【5】上级领导
1.查看购买申请表,对申请进行审核,审核后产生购买订单交于购买员;
2.查看维修申请表,对申请进行审核,审核后产生维修订单交于维修员;
3.个人信息维护。
1.2软件系统数据字典
3.21数据流条目
1登陆信息
输入:
设备管理员
输出:
身份验证1
描述:
登陆信息=用户名+密码+登陆权限
2查询信息
输入:
合法人员对设备的查询操作
输出:
设备信息表
描述:
查询信息=设备名/型号/类别/购置日期
3维修信息
输入:
所需维修设备的信息
输出:
确定维修设备的记录
描述:
维修信息=设备名+修理日期+修理厂家+修理费+负责人
4新设备
输入:
购买设备的信息
输出:
确定购买的新设备的记录
描述:
新设备=类别+设备名+型号+规格+单价+数量等
5报废设备
输入:
所需报废的设备的信息
输出:
报废的设备记录
描述:
报废设备=类别+设备名+型号等
6审核信息
输入:
审核3
输出:
上级领导
描述:
审核信息=报废设备信息/新设备购买记录
3.22加工条目
身份验证1,统计查询2.1,维修2.2,购买2.3,报废2.4,生产报表3.1,审核3.2
3.23文件条目
7登陆表
输入:
身份验证1
输出:
身份验证1
数据结构:
用户名+密码+登陆权限
8设备基本信息表
输入:
统计查询2.1
数据结构:
类别+设备名+型号+规格等
9维修记录表
输入:
统计查询2.1,维修2.2
输出:
统计查询2.1
数据结构:
设备名+修理日期+修理厂家+修理费+责任人等
10新设备表
输入:
统计查询2.1,购买2.2
输出:
统计查询2.1
数据结构:
类别+设备名+型号+规格+单价+数量+生产厂家+购买人等
11报废记录表
输入:
报废2.4,统计查询2.1,生产报表3.1
输出:
统计查询2.1,生产报表3.1
数据结构:
类别+设备名+型号等
12申请表
输入:
统计查询2.1,生产报表3.1
输出:
统计查询2.1,生产报表3.1,购买2.3
数据结构:
设备名+型号+规格+数量+负责人
三:
软件设计
1实验室设备管理系统模块结构图
2界面设计
(1)登录界面
(2)任意注册管理人员登录后界面
3实验室设备管理系统数据设计
4管理系统其中的3个模块的详细设计
1上级领导操作模块
②设备管理员操作模块
3统功能操作模块
5数据库设计
1.模型图
2.E-R图
3.物理实现
(1)实体表
【1】用户表(UserInfo)
字段
类型
备注
uId
Varchar(15)
用户名,主键
uName
Varchar(15)
姓名
uPasswd
Varchar(15)
密码
uPosition
Varchar(15)
身份,主键
【2】仓库管理员表(StoreManagerInfo)
字段
类型
备注
uId
Varchar(15)
用户名,主键
sId
Varchar(15)
仓库编号,外键约束于仓库表
【3】实验室管理员表(StoreManagerInfo)
字段
类型
备注
uId
Varchar(15)
用户名,主键
lId
Varchar(15)
仓库编号,外键约束于实验室表
【4】仓库表(StoreInfo)
字段
类型
备注
sId
Varchar(15)
仓库编号,主键
sName
Varchar(15)
仓库名称
sPlace
Varchar(15)
所在校区
【5】实验室表(LabInfo)
字段
类型
备注
lId
Varchar(15)
实验室编号,主键
lName
Varchar(15)
实验室名称
lPlace
Varchar(15)
所在校区
【5】设备表(EquipInfo)
字段
类型
备注
eId
Varchar(15)
设备编号,主键
eName
Varchar(15)
设备名称
eStandard
Varchar(15)
规格型号
eProCompany
Varchar(15)
生产厂商
eType
Varchar(15)
设备类型
【6】固定资产表(PropertyInfo)
字段
类型
备注
pId
Varchar(15)
固定资产编号,主键
eId
Varchar(15)
所属设备编号,外键约束于设备表
lId
Varchar(15)
所在实验室编号,外键约束于实验室表
(2)关系表
【1】入库登记表(InInfo)
字段
类型
备注
eId
Varchar(15)
设备编号,主键,外键约束于设备表
sId
Varchar(15)
仓库编号,主键,外键约束于仓库表
iDate
DateTime
入库时间,主键
iNum
int
入库数量
【2】出库登记表(OutInfo)
字段
类型
备注
eId
Varchar(15)
设备编号,主键,外键约束于设备表
sId
Varchar(15)
仓库编号,主键,外键约束于仓库表
lId
Varchar(15)
实验室编号,主键,外键约束于实验室表
iDate
DateTime
出库时间,主键
iNum
int
出库数量
(3)记录表
【1】购买申请表(BuyApplyInfo)
字段
类型
备注
baId
Varchar(15)
序列号,主键
eId
Varchar(15)
设备编号,外键约束于设备表
smName
Varchar(15)
申请人,外键约束于仓库管理员表
baDate
DateTime
申请时间
baNum
Int
申请数量
【2】维修申请表(MaintainInfo)
字段
类型
备注
maId
Varchar(15)
序列号,主键
pId
Varchar(15)
固定资产编号,外键约束于固定资产表
lmName
Varchar(15)
申请人,外键约束于实验室管理员表
maDate
DateTime
申请时间
【3】购买登记表(BuyInfo)
字段
类型
备注
bId
Varchar(15)
序列号,主键
eId
Varchar(15)
设备编号,外键约束于设备表
bPrice
Money
购买单价
bDate
DateTime
购买时间
bNum
Int
购买数量
【4】维修记录表(MaintainInfo)
字段
类型
备注
mId
Varchar(15)
序列号,主键
pId
Varchar(15)
固定资产编号,外键约束于固定资产表
mDate
DateTime
维修时间
【5】报废记录表(DiscardInfo)
字段
类型
备注
dId
Varchar(15)
序列号,主键
pId
Varchar(15)
固定资产编号,外键约束于固定资产表
dDate
DateTime
报废时间
【6】购买审核表(BuyCheckInfo)
字段
类型
备注
bcId
Varchar(15)
序列号,主键
baId
Varchar(15)
申请序列号,外键约束于购买申请表
olName
Varchar(15)
审核人,外键约束于上级领导表
bcDate
DateTime
审核时间
【7】维修审核表(MaintainCheckInfo)
字段
类型
备注
mcId
Varchar(15)
序列号,主键
maId
Varchar(15)
申请序列号,外键约束于维修申请表
olName
Varchar(15)
审核人,外键约束于上级领导表
mcDate
DateTime
审核时间
四、编码与单元测试
1、用户登录界面:
packagecom.niit.gui_event;
importcom.niit.logical.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassLoginextendsJFrame{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
//控件声明
privateJLabellPosition,lName,lPasswd,lTitle;
privateJComboBoxcbPosition,cbName;
privateJPasswordFieldpfPasswd;
privateJButtonbConfirm,bCancel;
privateContainercon;
privateJPanel[]pCon;
privateUserinfo;
publicLogin(){
super("用户登录");
//控件初始化
con=getContentPane();
lPosition=newJLabel("身份:
");
lName=newJLabel("用户名:
");
lPasswd=newJLabel("密码:
");
lTitle=newJLabel("实验室设备管理系统");
lTitle.setForeground(Color.RED);
pfPasswd=newJPasswordField();
bConfirm=newJButton("确定");
bCancel=newJButton("取消");
String[]aPosition=newString[]{"系统管理员","仓库管理员","实验室管理员",
"购买登记员","上级领导"};
cbPosition=newJComboBox(aPosition);
intindex=cbPosition.getSelectedIndex();
if(index==0){
info=newAdministration();
}elseif(index==1){
info=newStoreManager();
}elseif(index==2){
info=newLabManager();
}elseif(index==3){
info=newBuyManager();
}else{
info=newOverLeader();
}
//数组初始化
pCon=newJPanel[5];
String[]cName=info.getIdByPosition(info);
cbName=newJComboBox(cName);
for(inti=0;ipCon[i]=newJPanel();
}
publicvoidlaunch(){
//控件添加
con.setLayout(newGridLayout(5,1));
pCon[0].add(lPosition);
pCon[0].add(cbPosition);
pCon[1].add(lName);
pCon[1].add(cbName);
pCon[2].add(lPasswd);
pCon[2].add(pfPasswd);
pCon[3].add(bConfirm);
pCon[3].add(bCancel);
pCon[4].add(lTitle);
add(pCon[4]);
for(inti=0;icon.add(pCon[i]);
//控件设置
pfPasswd.setEchoChar('*');
pfPasswd.setColumns(10);
setBounds(400,100,400,400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//添加监听器
cbPosition.addActionListener(newListenAction());
bConfirm.addActionListener(newListenAction());
bCancel.addActionListener(newListenAction());
pfPasswd.addKeyListener(newListenKey());
}
//定义按钮,下拉框处理器
classListenActionimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==bConfirm){//点击确定按钮
info.setuId(cbName.getSelectedItem().toString());
info.setuPasswd(newString(pfPasswd.getPassword()));
info.setuPosition(cbPosition.getSelectedItem().toString());
if(info.login(info)){
newMain(info).launch();
setVisible(false);
pfPasswd.setText(null);
}else{
JOptionPane.showMessageDialog(newLogin(),"用户名,密码或身份错误");
pfPasswd.setText(null);
}
}elseif(e.getSource()==cbPosition){//身份下拉框改变时
intindex=cbPosition.getSelectedIndex();
if(index==0){
info=newAdministration();
}elseif(index==1){
info=newStoreManager();
}elseif(index==2){
info=newLabManager();
}elseif(index==3){
info=newBuyManager();
}else{
info=newOverLeader();
}
String[]cName=info.getIdByPosition(info);
//刷新用户名列表
cbName.removeAllItems();
for(inti=0;icbName.addItem(cName[i]);
}else{
System.exit(0);
}
pfPasswd.setText(null);
}
}
//定义键盘处理器
classListenKeyextendsKeyAdapter{
@SuppressWarnings("static-access")
publicvoidkeyPressed(KeyEvente){
if(e.getKeyText(e.getKeyCode()).compareToIgnoreCase("ENTER")==0){
bConfirm.doClick();
}
}
}
}
}
2、主界面:
packagecom.niit.gui_event;
importjavax.swing.*;
importcom.niit.logical.*;
importjava.awt.event.*;
publicclassMainextendsJFrame{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
privateJTabbedPanetp;
privateJPanelp[];
privateUserinfo;
publicMain(){
super("实验室设备管理系统");
tp=newJTabbedPane();
p=newJPanel[8];
}
publicMain(Userinfo){
this();
this.info=info;
p[0]=newUserManage();
p[1]=newEquipIn();
p[2]=newEquipOut();
p[3]=newRegister(info);
p[4]=newApply(info);
p[5]=newChecks(info);
p[6]=newSearch();
p[7]=newPasswdModyfy(info);
}
publicvoidlaunch(){
tp.addTab("用户管理",p[0]);
tp.addTab("设备入库",p[1]);
tp.addTab("设备出库",p[2]);
tp.addTab("设备登记",p[3]);
tp.addTab("设备申请",p[4]);
tp.addTab("审核申请",p[5]);
tp.addTab("统计查询",p[6]);
tp.addTab("个人信息维护",p[7]);
if(infoinstanceofAdministration){
tp.setEnabledAt(1,false);
tp.setEnabledAt(2,false);
tp.setEnabledAt(3,false);
tp.setEnabledAt(4,false);
tp.setEnabledAt(5,false);
tp.setEnabledAt(6,false);
}elseif(infoinstanceofStoreManager){
tp.setEnabledAt(0,false);
tp.setEnabledAt(3,false);
tp.setEnabledAt(5,false);
tp.setSelectedIndex
(1);
}elseif(infoinstanceofLabManager){
tp.setEnabledAt(0,false);
tp.setEnabledAt(1,false);
tp.setEnabledAt(2,false);
tp.setEnabledAt(5,false);
tp.setSelectedIndex(3);
}elseif(infoinstanceofBuyManager){
tp.setEnabledAt(0,false);
tp.setEnabledAt(1,false);
tp.setEnabledAt(2,false);
tp.setEnabledAt(4,false);
tp.setEnabledAt(5,false);
tp.setSelectedIndex(3);
}elseif(infoinstanceofOverLeader){
tp.setEnabledAt(0,false);
tp.setEnabledAt(1,false);
tp.setEnabledAt(2,false);
tp.setEnabledAt(3,false);
tp.setEnabledAt(4,false);
tp.setSelectedIndex(5);
}
getContentPane().add(tp);
setSize(1280,780);
setVisible(true);
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
}
}
3、设备申请:
package