为加强新型冠状病毒感染的肺炎疫情防控工作,有效减少人员聚集,阻断疫情传播,社区决定实行小区人员进出管理制度,开发一套小区出入登记软件。
项目功能包括:
1.软件用户分为小区管理员和小区门禁执勤人员两类。
2.小区管理员登录后可以管理(增删查改)软件中的管理员用户或执勤人员用户、小区人员。
3.小区管理员可以使用软件从文件或excel表中导入小区用户名单(包括楼号、单元号、门牌号、姓名、性别、电话、照片(可选)等必要信息)。
4.小区管理员可以查看所有的小区人员进出记录,可以根据日期范围、姓名或门牌号等信息筛选进出记录。
5.小区执勤人员在小区人员进出时测量人员体温,并将人员的进出方向、进出时间和体温等信息录入软件。
整体设计思路如下:
- Login.java类是核心类,制作了登陆界面:管理员和执勤人员可以登录进入系统。
- 根据人员编号不同分别进入不同的界面,如以A开头,则打开管理员界面;以B开头,则进入执勤人员界面。
- 点击登录界面的注册按钮后,则进入Register.java类进行注册(即对worker数据库增加)。注册成功后会重新进入登录界面进行登录。
- 登录成功之后会出现提示并且进入欢迎界面。Manger.java类包括管理员名单,执勤人员名单,居住人员名单,进出人员名单的调用,还有一个返回上一界面的按钮。
登录界面:
注册界面(管理员和执勤人员):
管理员登录界面:
当点击“管理员名单”时,会调用JTable1M.java类,里面有增删查改功能(查需要调用JTable2M.java类,与数据库建立连接并导出所需内容)。
当点击“执勤人员名单”时,会调用JTable1A.java类,里面有增删查改功能(查需要调用JTable2A.java类,与数据库建立连接并导出所需内容)。
小区用户人员名单和进出人员名单同上。
每个界面都有设置返回按钮,当想要退出系统时,出现如下提示:点击“是”即可退出。
主要使用windowbuilder插件来实现图画界面,结合数据库的使用实现对表的增删查改。登录,提交时使用if语句来判断是否符合,符合即登录注册,不符合则弹出对话框。
登录界面主要方法:
/**
*监听 登录按钮
*检索用户信息
*判断
*/
public void actionPerformed(ActionEvent e) {
try {
String url = "jdbc:mysql://地址:端口/数据库名";
String user = "";
String password = "";
Properties prop = new Properties();
prop.load(new FileInputStream("jdbc.prop"));
user = prop.getProperty("user");
password = prop.getProperty("password");
Mysql_con mysql_con = new Mysql_con(url, user, password);
char fir = name.getText().charAt(0);//获取用户名字符串的第一个字符
LinkedList<Worker> workers = mysql_con.getWork();
for (Worker wor : workers) {
if (name.getText() == null && String.valueOf(passwordField.getPassword()) == null) {
JOptionPane.showMessageDialog(null, "输入为空", "提示", JOptionPane.ERROR_MESSAGE);
return;
}
if (name.getText().isEmpty() || String.valueOf(passwordField.getPassword()).isEmpty()) {
JOptionPane.showMessageDialog(null, "用户名或密码为空", "提示", JOptionPane.ERROR_MESSAGE);
return;
}
if (name.getText().equals(wor.getName())) {
b = !b;
if (String.valueOf(passwordField.getPassword()).equals(wor.getPassword())) {
a = !a;
if (fir == 'A') {
Login.this.dispose();
JOptionPane.showMessageDialog(null, "登录成功", "提示消息", JOptionPane.WARNING_MESSAGE);
dispose();
// TODO:打开管理员界面
Manger manger = new Manger(name.getText());
manger.setVisible(true);
break;
}
if (fir == 'B') {
Login.this.dispose();
JOptionPane.showMessageDialog(null, "登录成功", "提示消息", JOptionPane.WARNING_MESSAGE);
dispose();
// TODO:打开执勤人员界面
Administrator ad = new Administrator(name.getText());
ad.setVisible(true);
break;
}
}
}
}
if (!b) {
JOptionPane.showMessageDialog(null, "用户不存在", "提示错误", JOptionPane.ERROR_MESSAGE);
return;
}
if (!a) {
JOptionPane.showMessageDialog(null, "用户名或密码错误", "输入错误", JOptionPane.ERROR_MESSAGE);
return;
}
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
注册界面主要方法:
/**
* 监听提交按钮
* 注册成功 返回到登录界面
*
*/
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
char[] chr =password.getPassword();
if (name.getText().isEmpty()) {
name.setBackground(new Color(255, 204, 153));
JOptionPane.showMessageDialog(null, "请输入用户名", "提示消息", JOptionPane.WARNING_MESSAGE);
return;
}
if (String.valueOf(chr).isEmpty()) {
password.setBackground(new Color(255, 204, 153));
JOptionPane.showMessageDialog(null, "请输入密码", "提示消息", JOptionPane.WARNING_MESSAGE);
return;
}
if (!choose.isSelected()) {
choose.setBackground(new Color(255, 204, 153));
JOptionPane.showMessageDialog(null, "请确定注册规则", "提示消息", JOptionPane.WARNING_MESSAGE);
return;
}else {
try {
// 加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
// 创建连接
String url = "jdbc:mysql://地址:端口/数据库名";
String user = "";
String password = "";
Properties prop = new Properties();
try {
prop.load(new FileInputStream("jdbc.prop"));
user = prop.getProperty("user");
password = prop.getProperty("password");
Connection conn = DriverManager.getConnection(url, user, password);
// 创建语句
String insert = "insert into worker(sname,spassword) values(? , ? )";
PreparedStatement pStatement = conn.prepareStatement(insert);
pStatement.setString(1, name.getText());
pStatement.setString(2,String.valueOf(chr));
pStatement.executeUpdate();
conn.close();
JOptionPane.showMessageDialog(null, "注册成功");
dispose();
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Login frame = new Login();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
增删查改主要方法:
protected void insert() {
try (Connection connection = DriverManager.getConnection(url, dbuser, dbpassword)) {
String insert = "insert into administrator(aname,asex,atelephone,aaddress) values(?,?,?,?)";
PreparedStatement pStatement = connection.prepareStatement(insert);
pStatement.setString(1, name.getText());
pStatement.setString(2, sex.getText());
pStatement.setString(3, tele.getText());
pStatement.setString(4, addr.getText());
pStatement.executeUpdate();
initTable();
} catch (SQLException e) {
e.printStackTrace();
}
}
protected void delete() {
int row = table.getSelectedRow();
if (row == -1) {
return;
}
int id = (int) table.getValueAt(row, 0);
try (Connection connection = DriverManager.getConnection(url, dbuser, dbpassword)) {
String delete = "delete from administrator where aname=?";
PreparedStatement pStatement = connection.prepareStatement(delete);
pStatement.setString(1, name.getText());
pStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
initTable();
}
protected void search() {
try (Connection connection = DriverManager.getConnection(url, dbuser, dbpassword)) {
String select = "select *from administrator where aname='" + name.getText() + "'";
PreparedStatement pStatement = connection.prepareStatement(select);
pStatement.executeQuery(select);
ResultSet set = pStatement.executeQuery();
tableModel.setRowCount(0);
while (set.next()) {
tableModel.addRow(new Object[] { set.getInt("id"), set.getString("aname"), set.getString("asex"),
set.getString("atelephone"), set.getString("aaddress") });
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
dispose();
JTable2A frame = new JTable2A(tableModel);
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} catch (SQLException e) {
e.printStackTrace();
}
}
protected void updateDB() {
int row = table.getSelectedRow();
if (row == -1) {
return;
}
int id = (int) table.getValueAt(row, 0);
try (Connection connection = DriverManager.getConnection(url, dbuser, dbpassword)) {
String update = "update administrator set aname=?,asex=?,atelephone=?,aaddress=? where id=?";
PreparedStatement pStatement = connection.prepareStatement(update);
pStatement.setString(1, name.getText());
pStatement.setString(2, sex.getText());
pStatement.setString(3, tele.getText());
pStatement.setString(4, addr.getText());
pStatement.setInt(5, id);
pStatement.executeUpdate();
initTable();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
自己本身也是小白,如果有意见,欢迎留言哦。