图形用户界面(Graphics User Interface,简称GUI)
是用户与程序交互的窗口,也就是我们现实世界电子产品中可以看到的界面,比命令行的界面更加清晰易懂。
目录
系统功能
界面设计
1.login_GUI包中代码
2.function_GUI包中代码(需要数据库的连接,目前未连接)
系统实现截图
系统功能
1.系统角色功能
本系统有两种角色:高校设备管理员,高校领导。详细划分如下:
(1)设备管理员:负责本系统中添加和管理数据,例如新设备的添加,设备信息的删除跟修改操作,此外还有设备的维修信息登记,设备的报废信息登记等。
(2)领导:根据需要,可以查询该系统中所有的设备信息。2.系统功能模块
本系统主要分为下面几个模块,各个子模块功能需求如下:
查询设备模块:设备管理员和领导可以查看所有设备的信息。
添加设备模块:设备管理员可以添加新设备的各项信息,同时还可以查看历史添加记录。
管理设备模块:设备管理员可以对设备的信息进行删除跟修改。
维修设备模块:设备管理员可以添加需要维修的设备的信息,同时还可以查看历史维修记录。
报废设备模块:设备管理员可以添加报废设备的信息,还可以查看历史报废记录。
帮助模块:该模块主要向用户提供系统操作说明。
高校设备管理系统简略功能模块图(帮助可删除):
3.系统功能流程
根据该系统相关功能,则有以下系统功能流程:
(1)设备管理员对新购进的设备进行新设备入库登记,登记完成即可投入所需设备部门使用。得到设备后各部门就可将设备分配给教工进行使用。
(2)设备管理员可以对当前设备状况进行修改,即可对设备状况进行调整。
(3)当有设备损坏需要维修时,设备管理员便对所需维修设备信息进行登记,然后将其设备状况改为维修。设备维修完成后,交还原部门,由设备管理员进行登记并将设备状态改为正常。。
(4)当有设备报废时,设备管理员便对报废设备信息进行登记,然后将其设备状况改为报废。
4.系统数据
(1)查询设备模块数据需求
该模块主要管理设备的基本信息,需要表示的是设备信息的数据,应包含的数据项:设备编号,设备类型,设备名称,生产日期,生产厂家,购买日期,购买单价,数量,所属部门,设备状况,管理人员。
(2)添加设备模块数据需求
该模块主要管理入库的新设备信息,需要表示的是新设备的各项数据,应包含的数据项:设备编号,设备类型,设备名称,生产日期,生产厂家,购买日期,购买单价,购买登记人,数量,所属部门。
(3)管理设备模块数据
该模块主要管理设备的基本信息,需要表示的是被管理后设备的基本信息,应包含的数据项:设备编号,设备类型,设备名称,生产日期,生产厂家,购买日期,购买单价,数量,所属部门,设备状况。
(4)维修设备模块数据分析
该模块主要管理维修设备的信息,需要表示的是维修设备信息的数据,应包含的数据项:设备编号,设备类型,设备名称,维修数量,维修登记人,维修金额,维修日期,维修厂家。
(5)报废设备模块数据
该模块主要管理报废设备的信息,需要表示的是报废设备信息的数据,应包含的数据项:设备编号,设备类型,设备名称,报废数量,报废登记人,报废日期,原有数量。
未安装Java以及eclipse的可以参考这篇博文完成下载安装
(由于我本人也是新手,若注释、说明等地方有误望指出,一起在评论区讨论并解决问题)。由于刚开始什么都不会,就跟着课本上的代码练;在了解一些基本功能及关键字后就试着写第一版高校设备管理系统,浪费了大量时间还不会连数据库,只好把基本界面写出来,但是无法实现其具体功能😔。
简略第一版
(适合初级新手,如调界面大小,宽度等的调试练习)
界面设计
1.login_GUI包中代码
(1)public class LoginDialog类(登录界面)
package login_GUI;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
public class LoginDialog extends JDialog {
// 登录对话款类
JLabel username1;
JLabel password1;
JComboBox username;
JComboBox password;
JButton loginBtn;
JButton cancelBtn;
LoginDialog() {
// 设置登录对话框并设置位置及大小,模态
setTitle("用户登陆");
setBounds(500, 250, 200, 120);
setDefaultCloseOperation(HIDE_ON_CLOSE);
setLayout(null);
setModal(true);
createGUIElements();
}
void createGUIElements() {
// 创建用户账号与密码标签
username1 = new JLabel("用户账号");
username1.setBounds(20, 10, 60, 20);
this.add(username1);
password1 = new JLabel("密钥");
password1.setBounds(20, 32, 50, 20);
this.add(password1);
// 创建用户名与密钥输入组件并赋初值
username = new JComboBox();
username.addItem("110232334");// 领导账号
username.addItem("239342252");// 设备管理员账号
username.setBounds(75, 10, 105, 20);
this.add(username);
password = new JComboBox();
password.addItem("133242");// 领导密钥
password.addItem("223232");// 设备管理员密钥
password.setBounds(75, 32, 105, 20);
this.add(password);
// 创建登录与退出按钮并添加事件
loginBtn = new JButton("登录");
loginBtn.setBounds(25, 60, 60, 20);
add(loginBtn);
loginBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
login();
}// 方法结束
});
cancelBtn = new JButton("退出");
cancelBtn.setBounds(110, 60, 60, 20);
add(cancelBtn);
cancelBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
logout();
}
});
}
void login() {
// 处理登录按钮事件
String accout = username.getSelectedItem().toString();
String pwd = password.getSelectedItem().toString();
// 如果用户账号和密钥正确,则隐藏登录对话框,显示属于该登录用户的界面
if (accout.equals("110232334") && pwd.equals("133242")) {
setVisible(false);
showLeaderWindow();// 显示领导可用窗口
}
else if(accout.equals("239342252")&&pwd.equals("223232")) {
setVisible(false);
showEquipmentMannagerWinsow();
}
else {
JOptionPane.showMessageDialog(this, "用户账号是:" + accout + "\n密钥是:" + pwd);
}
}
void logout() {
// 处理退出按钮事件
int ret = JOptionPane.showConfirmDialog(this, "选择是,取消登录", "取消登录", JOptionPane.YES_NO_OPTION);
if (ret == JOptionPane.YES_OPTION) {
dispose();
}
}
void showLeaderWindow() {
// 显示领导可用功能窗口
LeaderWindow frm = new LeaderWindow();
frm.setVisible(true);
}
void showEquipmentMannagerWinsow() {
// 显示设备管理员可用功能窗口
EquipmentMannagerWindow frm = new EquipmentMannagerWindow();
frm.setVisible(true);
}
}// 结束LoginDialog类
(2)public class University_equipment_mannage类(登录类别界面,包含主函数)
package login_GUI;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class University_equipment_mannage {
public static void main(String[] args) {
// TODO Auto-generated method stub
final JFrame frm = new JFrame("用户登录类别选择");
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setLayout(null);
// 创建标签组件,设置位置及大小及字体
JLabel label = new JLabel("欢迎登录高校设备管理器");
label.setBounds(60, 10, 270, 100);
label.setFont(new Font("", Font.BOLD, 22));
label.setHorizontalAlignment(JLabel.CENTER);
// 创建按钮对象
JButton btn1 = new JButton("领导登录");
JButton btn2 = new JButton("设备管理员登录");
btn1.setBounds(60, 100, 100, 30);
btn2.setBounds(200, 100, 150, 30);
frm.add(label);
frm.add(btn1);
frm.add(btn2);
// 创建按钮的监听器并注册,参数为事件处理者对象
// ButtonHandler btnHandler = new ButtonHandler();
//btn1.addActionListener(btnHandler);// 与单击事件相关的授权处理的方法
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
LoginDialog Log=new LoginDialog();
Log.setVisible(true);
frm.setVisible(false);
}
});
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
LoginDialog Log=new LoginDialog();
Log.setVisible(true);
frm.setVisible(false);
}
});
frm.setBounds(400, 200, 400, 200);
frm.setVisible(true);
}
}
(3)public class LeaderWindow类(领导登录界面)
package login_GUI;
import function_GUI.HopeDirection;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class LeaderWindow extends JFrame {
// 领导功能窗口
LeaderWindow() {
JFrame frm = new JFrame("高校设备管理器");
frm.setDefaultCloseOperation(EXIT_ON_CLOSE);
frm.setLayout(null);// 设置为不使用布局管理器
// 创建标签组件,设置位置及大小及字体
JLabel label = new JLabel("欢迎使用高校设备管理器");
label.setBounds(50, 5, 300, 100);
label.setFont(new Font("", Font.BOLD, 22));
label.setHorizontalAlignment(JLabel.CENTER);
// 创建按钮对象
JButton btn1 = new JButton("查询设备");
JButton btn2 = new JButton("帮助");
btn1.setBounds(80, 100, 120, 30);
btn2.setBounds(250, 100, 60, 30);
frm.add(btn1);
frm.add(btn2);
frm.add(label);
// 创建按钮的监听器并注册,参数为事件处理者对象
EquipmentQuery query = new EquipmentQuery();
btn1.addActionListener(query);// 与单击事件相关的授权处理的方法
// frm.setBounds(400, 200, 400, 200);
// frm.setVisible(true);
Help help = new Help();
btn2.addActionListener(help);
frm.setBounds(400, 200, 400, 200);
frm.setVisible(true);
}
}
class EquipmentQuery implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("设备查询");
}
}
class Help implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new HopeDirection();
}
}
(4)public class EquipmentMannagerWindow类(设备管理员登录界面)
package login_GUI;
import function_GUI.ManagementEquipment;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class EquipmentMannagerWindow extends JFrame {
// 设备管理员功能窗口
EquipmentMannagerWindow() {
JFrame frm1 = new JFrame("高校设备管理器");
frm1.setDefaultCloseOperation(EXIT_ON_CLOSE);
frm1.setLayout(null);// 设置为不使用布局管理器
// 创建标签组件,设置位置及大小及字体
JLabel label = new JLabel("欢迎使用高校设备管理器");
label.setBounds(50, 10, 300, 22);
label.setFont(new Font("", Font.BOLD, 22));
label.setHorizontalAlignment(JLabel.CENTER);
// 创建按钮对象
JButton btn1 = new JButton("查询设备");
JButton btn2 = new JButton("维修设备");
JButton btn3 = new JButton("添加设备");
JButton btn4 = new JButton("报废设备");
JButton btn5 = new JButton("管理设备");
JButton btn6 = new JButton("帮助");
btn1.setBounds(60, 70, 120, 30);
btn2.setBounds(240, 70, 120, 30);
btn3.setBounds(60, 120, 120, 30);
btn4.setBounds(240, 120, 120, 30);
btn5.setBounds(60, 170, 120, 30);
btn6.setBounds(240, 170, 60, 30);
frm1.add(btn1);
frm1.add(btn2);
frm1.add(btn3);
frm1.add(btn4);
frm1.add(btn5);
frm1.add(btn6);
frm1.add(label);
// 创建按钮的监听器并注册,参数为事件处理者对象
EquipmentQuery query = new EquipmentQuery();
btn1.addActionListener(query);// 与单击事件相关的授权处理的方法
// frm.setBounds(400, 200, 400, 200);
// frm.setVisible(true);
Help help = new Help();
btn6.addActionListener(help);
// frm.setBounds(400, 200, 400, 200);
// frm.setVisible(true);
EquipmentMaintenance equipM= new EquipmentMaintenance();//设备维修
btn2.addActionListener(equipM);
// frm.setBounds(400, 200, 400, 200);
// frm.setVisible(true);
EquipmentAdd add = new EquipmentAdd();//设备添加
btn3.addActionListener(add);
// frm.setBounds(400, 200, 400, 200);
// frm.setVisible(true);
EquipmentDestroy destroy = new EquipmentDestroy();//设备报废
btn4.addActionListener(destroy);
// frm.setBounds(400, 200, 400, 200);
// frm.setVisible(true);
EquipmentMannage mannage = new EquipmentMannage();//设备报废
btn5.addActionListener(mannage);
frm1.setBounds(400, 200, 400, 300);
frm1.setVisible(true);
}
}
class EquipmentMaintenance implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("设备维修");
}
}
class EquipmentAdd implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("设备添加");
}
}
class EquipmentDestroy implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("设备报废");
}
}
class EquipmentMannage implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new ManagementEquipment();
}
}
2.function_GUI包中代码(需要数据库的连接,目前未连接)
(1)public class ManagementEquipment类(设备管理员对设备进行管理的界面)
package function_GUI;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
public class ManagementEquipment{
JFrame frm=new JFrame("设备管理");
//创建面板并放在窗体的上半部分
JPanel topPanel=new JPanel(new FlowLayout());
//创建面板并放在窗体的下半部分,用于显示数据库表
JPanel bottomPanel=new JPanel();
JLabel lab_id;
JLabel lab_type;
JLabel lab_name;
JLabel lab_state;
JLabel lab_department;
JButton deleteButton;
JButton alterButton;
JButton viewButton;
public ManagementEquipment() {
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//创建网格布局管理器
GridLayout gridLayout=new GridLayout(2,1);
frm.setLayout(gridLayout);
//创建5个组件并添加到容器中
lab_id=new JLabel("设备编号");
lab_id.setBounds(0,5,20,20);
lab_type=new JLabel("设备类型");
lab_type.setBounds(120,5,20,20);
lab_department=new JLabel("所属部门");
lab_department.setBounds(220,5,20,20);
lab_name=new JLabel("设备名称");
lab_name.setBounds(0,30,20,20);
lab_state=new JLabel("设备状态");
lab_state.setBounds(120,30,20,20);
deleteButton=new JButton("删除");
alterButton=new JButton("修改");
viewButton=new JButton("查看");
management();
frm.add(topPanel);
frm.add(bottomPanel);
frm.setBounds(250,250,600,400);
frm.setVisible(true);
}
void management() {
/*
* 上半部面板
*/
//创建对应的5个输入框
JTextField input_type=new JTextField();
input_type.setEditable(true);
input_type.setHorizontalAlignment(lab_type.LEFT);
input_type.setColumns(10);
JTextField input_id=new JTextField();
input_id.setEditable(true);
input_id.setHorizontalAlignment(lab_id.LEFT);
input_id.setColumns(10);
JTextField input_department=new JTextField();
input_department.setEditable(true);
input_department.setHorizontalAlignment(lab_department.LEFT);
input_department.setColumns(10);
JTextField input_name=new JTextField();
input_name.setEditable(true);
input_name.setHorizontalAlignment(lab_name.LEFT);
input_name.setColumns(10);
JTextField input_state=new JTextField();
input_state.setEditable(true);
input_state.setHorizontalAlignment(lab_state.LEFT);
input_state.setColumns(10);
//面板中显示标签、输入框
topPanel.add(lab_id);
topPanel.add(input_id);
topPanel.add(lab_type);
topPanel.add(input_type);
topPanel.add(lab_department);
topPanel.add(input_department);
topPanel.add(lab_name);
topPanel.add(input_name);
topPanel.add(lab_state);
topPanel.add(input_state);
//添加按钮并注册事件
topPanel.add(deleteButton);
topPanel.add(viewButton);
topPanel.add(alterButton);
/*
* 下半部面板
*/
}
}
(2)public class HopeDirection类(帮助界面,一些操作提示)
package function_GUI;
import java.awt.Font;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
public class HopeDirection {
JFrame frm;
JLabel lab;
public HopeDirection() {
// TODO Auto-generated constructor stub
frm=new JFrame("使用说明");
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setLayout(null);
helpDirection();
frm.add(lab);
frm.setBounds(150,200,400,300);
frm.setVisible(true);
}
public void helpDirection() {
lab=new JLabel("系统使用说明");
lab.setBounds(100,0,200,40);
lab.setFont(new Font("",Font.BOLD,22));
lab.setHorizontalAlignment(JLabel.CENTER);
final JTextArea textarea=new JTextArea("需要查询请选择查询按钮,可查看所有正常设备的信息\n\n"
+ "需要管理请选择管理设备按钮,可对设备的信息进行删除,同时可对当前\n设备的状态进行修改\n\n"
+"需要添加请选择添加设备按钮,同时可查看历史添加记录,此外还有录入\n功能,即可将新设备信息添加进总设备信息中\n\n"
+ "需要维修请选择维修设备按钮,同时可查看历史维修记录\n\n"
+"需要报废请选择报废设备按钮,同时可查看历史报废记录,还可以统计设\n备的报废率\n");
textarea.setBounds(2,60,400,150);
textarea.setEditable(false);
textarea.setColumns(152);
frm.add(textarea);
}
}
以下是还未实现的界面
1. public class ScrapEquipment类(报废设备界面)
2. Public class AddEquipment类(添加设备界面)
3. Public class MaintainEquipment类(维修设备界面)
4. Public class QueryEquipment类(查询设备界面)
系统实现截图
(1)账号登陆(两种身份)
以1开头的是领导账号和密码,以2开头的是设备管理员的账号和密码(可自己设定)
(2)领导使用界面(两种功能)
(3)设备管理员界面(六种功能)
(4)管理设备界面
(5)帮助界面
第二版(进行了大量改写,布局清晰、代码结构分明方便和我一样的同学进行学习并掌握),第一版和第二版合在一起有些长,不方便阅读,故我将第二版放在另一篇博客中,看完第一版的同学可点击本段第二行的蓝色字体“第二版”进入第二版的学习。