JAVA Swing + Jdbc 实现宿舍管理系统

课程设计目的

该系统为学生宿舍管理系统,鉴于学校规模的不断扩大,学生数量的增加导致宿舍数量不断增加,学校也逐渐认识到宿舍的卫生和安全的重要性,为避免学校使用人力,时间对大量的宿舍进行检查,本系统站在学生和学校的角度,方便大家对宿舍进行更加高效的管理共建美丽宿舍。

题目基本情况

本系统涉及权限管理,以管理员,学生分别登录以进行不同的操作,管理员可以对学生宿舍卫生,宿舍安全,学生打卡等信息进行管理,学生需要每天需要登录系统进行打卡,提交宿舍的卫生情况和安全情况.为了提高信息的处理效率,完成学生每天的宿舍信息提交,以及管理员对学生宿舍的检查的一款小型的宿舍管理系统。将数据库的内容以界面的形式表现出来,达到直观,方便的管理目的。

数据库表设计

管理员属性:职工号,姓名,出生日期,性别,权限级别。

学生属性:姓名,性别,出生日期,学号,专业,系院,所属宿舍,所属管理员。

宿舍安全属性:用电情况,烟雾浓度,宿舍楼号,宿舍号,社区号。

宿舍环境属性:空气湿度,温度,异味情况,宿舍楼号,宿舍号,社区号。

学生打卡属性:学生姓名,打卡时间,宿舍楼号,宿舍号,社区号。

系统流程:

JAVA Swing + Jdbc 实现宿舍管理系统_第1张图片

主要操作

选择身份操作

本程序设计的权限管理中,不同身份可以进行的操作不一样,因此点击身份,决定执行什么样的操作,如图6-1所示为选择身份,其中布局为空布局,主要用到的是面板和按钮,以及监听器的使用。

JAVA Swing + Jdbc 实现宿舍管理系统_第2张图片

登录操作

本系统的权限管理中,管理员,学生进入系统之前都需要登录,下面以管理员登录为例,学生登录类似。若用户名和姓名输入正确,则直接进入下一页面,若其中一项输入错误,则会显示:登录失败。若要注册,则点击注册,输入对应信息,进行注册,其中布局为空布局,在获取了用户输入信息后,会通过函数对用户的输入进行查找,若信息和数据库中一直,则登陆成功。如图6-2所示。

JAVA Swing + Jdbc 实现宿舍管理系统_第3张图片

登录部分代码

public User finduser(String Sid)

{User user = null;

String  sql = "select Sid,Sname from student where Sid = ?";//查询sql语句

Connection conn = GetConn.getConnection();//获取连接

PreparedStatement ps =null;

ResultSet rs = null;

try {

ps = conn.prepareStatement(sql);//将sql语句放入快车

ps.setString(1, Sid);//绑定参数

rs = ps.executeQuery();//执行sql语句

if(rs.next())//向下查询

{user = new User();

user.setSid(rs.getString(1));

user.setSname(rs.getString(2));

}else{return null;}

}catch(SQLException e){e.printStackTrace();}

finally {GetConn.close(rs, ps, conn);}return user;}

public void actionPerformed(ActionEvent e) {

UserDaoImpl userDaolmpl=new UserDaoImpl();

if(userDaolmpl.findUserm(t1.getText())==null) {

JOptionPane.showMessageDialog(getContentPane(), "用户名不存在!");}else if(t1.getText().equals(userDaolmpl.findUserm( t1.getText()).getMid())&&t2.getText().equals(userDaolmpl.findUserm( t1.getText()).getMname())) { //查询用户信息JOptionPane.showMessageDialog(getContentPane(), "登录成功!");

new manager_main();//进入主界面}else {JOptionPane.showMessageDialog(getContentPane(), "密码错误!");}});

注册部分代码

public int insertUserm(Userm userm) {

int count=0;//ֵ

Connection conn=GetConn.getConnection();//获取连接

String sql="insert into manager value(?,?,?,?,?)";//插入的sql语句

PreparedStatement ps = null;

try {

//将sql语句放入快车中

ps=conn.prepareStatement(sql);

//给sql语句中?绑定参数

ps.setString(1, userm.getMid());

ps.setString(2, userm.getMname());

ps.setString(3, userm.getMsex());

ps.setString(4, userm.getHDnumber());

ps.setString(5, userm.getHCnumber());

//执行sql语句

count=ps.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();}

finally { GetConn.close(ps, conn);}return count;}

//查找管理员

public Userm findUserm(String Mid)

{Userm userm = null;

String  sql = "select Mid,Mname from manager where Mid = ?";//查询

Connection conn = GetConn.getConnection();//获取连接

PreparedStatement ps =null;

ResultSet rs = null;

try {ps = conn.prepareStatement(sql);//将sql语句放入快车

ps.setString(1, Mid);//绑定参数

rs = ps.executeQuery();//执行sql语句

//向下查询

if(rs.next())

{userm = new Userm();

userm.setMid(rs.getString(1));

userm.setMname(rs.getString(2));

}else{ return null;}

}catch(SQLException e){

e.printStackTrace();}finally {

GetConn.close(rs,ps,conn);}

return userm;}

public void actionPerformed(ActionEvent e) {

if (e.getSource().equals(this.an1)) {

//点击确认后,获取输入的数值

String s_tf1 = tf1.getText();

String s_tf2 = tf2.getText();

String s_tf3 = tf3.getText();

String s_tf6 = tf6.getText();

String s_tf7 = tf7.getText();

if(s_tf1.equals("")) {

JOptionPane.showMessageDialog(getContentPane(), "不可以为空!");}else {try {Userm userm = new Userm(s_tf1,s_tf2,s_tf3, s_tf6, s_tf7);

//将得到的值封装在一个对象内

UserDaoImpl userDao = new UserDaoImpl();//新建对象userDao.insertUserm(userm);//插入数据库

} catch (Exception s) {}//弹出界面(注册成功)

JOptionPane.showMessageDialog(getContentPane(), "注册成功!");

frame.dispose();}

if (e.getSource().equals(an2))

{//点击取消frame.dispose();}}

选择操作

管理登录完毕后,将会进入图6-3-1所示的管理员界面,管理员可以对学生信息宿舍信息以及个人信息进行管理;学生登录完毕后,将会进入图6-3-2所示的学生界面,学生可以填写当日的宿舍环境信息和宿舍安全信息以及自身的打卡,布局采用空布局,其他主要是面板和监听器的使用。

JAVA Swing + Jdbc 实现宿舍管理系统_第4张图片

JAVA Swing + Jdbc 实现宿舍管理系统_第5张图片

管理员注册界面

因为最多的是对学生宿舍信息的了解,操作主要以查询为主,增加,修改,删除操作这里以管理员为例,具体以管理员的注册,修改个人信息,注销账户体现,系统主要操作以学生打卡和管理员查找学生信息体现.

点击注册按钮后,进入如图6-4-1的界面,按照要求填写信息即可添加信息,因为工号为主键,所以不写课程号会提示,不可以为空。 代码部分:按照提示信息进行填写,进行插入操作。其中,布局仍然采用空布局,其他主要是面板的使用和对按钮的监听。

public int insertUserm(Userm userm) {

int count=0;//ֵ

Connection conn=GetConn.getConnection();//获取连接

String sql="insert into manager value(?,?,?,?,?)";//插入的sql语句

PreparedStatement ps = null;

try {

//将sql语句放入快车中

ps=conn.prepareStatement(sql);

//给sql语句中?绑定参数

ps.setString(1, userm.getMid());

ps.setString(2, userm.getMname());

ps.setString(3, userm.getMsex());

ps.setString(4, userm.getHDnumber());

ps.setString(5, userm.getHCnumber());

//执行sql语句

count=ps.executeUpdate();

} catch (SQLException e) {e.printStackTrace();

}finally {GetConn.close(ps, conn);}

public void actionPerformed(ActionEvent e) {

if (e.getSource().equals(this.an1)) {

//点击确认后,获取输入的数值

String s_tf1 = tf1.getText();

String s_tf2 = tf2.getText();

String s_tf3 = tf3.getText();

String s_tf6 = tf6.getText();

String s_tf7 = tf7.getText();

if(s_tf1.equals("")) {

JOptionPane.showMessageDialog(getContentPane(), "不可以为空!");

}else {try {

Userm userm = new Userm(s_tf1,s_tf2,s_tf3, s_tf6, s_tf7);

//将得到的值封装在一个对象内

UserDaoImpl userDao = new UserDaoImpl();//新建对象

erDao.insertUserm(userm);//插入数据库



} catch (Exception s) {

}//弹出界面(注册成功)

JOptionPane.showMessageDialog(getContentPane(), "注册成功!");

frame.dispose();}

if (e.getSource().equals(an2))

{frame.dispose();//点击取消}}

JAVA Swing + Jdbc 实现宿舍管理系统_第6张图片

管理员注销界面

点击注销账户按钮后,进入如图6-4-2的界面,按照提示输入要注销的账号即可住下该账户.

代码部分:首先在建好的管理员表表里查找要删除的账号,若课程号不存在,提示:该账号不存在。若课程号存在,则将用户填写的管理员所对应的一条记录从管理员表里删除。其中,布局仍然采用空布局,其他主要是面板的使用和对按钮的监听。

关键代码:

public int deleteuserm(String Mid,String Mname) {

Connection conn = GetConn.getConnection();

String sql = "delete from manager where Mid = ?and Mname = ?";

PreparedStatement ps = null;

int row = 0;

try {

ps = conn.prepareStatement(sql);

ps.setString(1, Mid);// 绑定参数

ps.setString(2, Mname);

row = ps.executeUpdate(); // 执行sql

} catch (SQLException e) {e.printStackTrace();}finally {

GetConn.close(ps,conn);}return row;}

public void actionPerformed(ActionEvent e) {

UserDaoImpl userDaolmpl=new UserDaoImpl();

int num =  userDaolmpl.deleteuserm(t1.getText(),t2.getText());

if(num == 1){JOptionPane.showMessageDialog(getContentPane(), "注销成功!");System.exit(0);}

else {JOptionPane.showMessageDialog(getContentPane(), "注销失败!");}}

图6-4-2 管理员注销界面

管理员修改信息界面

点击修改信息按钮后,进入如图6-4-3所示的界面,按照要求填写文本框中的信息即可更改成功。

代码部分:首先在建好的管理员表里查找要修改的管理员工号,若工号不存在,提示:该课程不存在,请重新检查修改信息。若工号存在,则将管理员表中的信息改为用户填写的信息。其中,布局仍然采用空布局,其他主要是面板的使用和对按钮的监听。

关键代码:

public int updateuserm(Userm userm) {

Connection con = GetConn.getConnection();

String sql = "update manager set Mname = ?,Msex =?,HCnumber = ?,HDnumber=? where Mid = ?";

PreparedStatement ps = null;

int row = 0;

try { ps = con.prepareStatement(sql);

// 绑定数据

ps.setString(5, userm.getMid());

ps.setString(1, userm.getMname());

ps.setString(2, userm.getMsex());

ps.setString(3, userm.getHCnumber());

ps.setString(4, userm.getHDnumber());

// 执行sql

row = ps.executeUpdate();

} catch (SQLException e) {e.printStackTrace();}finally { GetConn.close(ps, con);}return row;}

public void actionPerformed(ActionEvent e) {

if (e.getSource().equals(this.an1)) {

//点击确认后,获取输入的数值

String s_tf1 = tf1.getText();

String s_tf2 = tf2.getText();

String s_tf3 = tf3.getText();

String s_tf6 = tf6.getText();

String s_tf7 = tf7.getText();

if(s_tf1.equals("")||s_tf2.equals("")||s_tf3.equals("")||s_tf6.equals("")||s_tf7.equals("")) {

JOptionPane.showMessageDialog(getContentPane(), "不可以为空!");

}else {try {Userm userm = new Userm(s_tf1,s_tf2,s_tf3, s_tf6, s_tf7);

//将得到的值封装在一个对象内

UserDaoImpl userDao = new UserDaoImpl();//新建对象

int num = userDao.updateuserm(userm);//插入数据库

if(num == 1){JOptionPane.showMessageDialog(this, "修改成功", "",JOptionPane.ERROR_MESSAGE);

frame.dispose();}

else {JOptionPane.showMessageDialog(this, "修改失败", "",JOptionPane.ERROR_MESSAGE);frame.dispose();}} catch (Exception s) {s.printStackTrace();}} }

if (e.getSource().equals(an2))

{frame.dispose();//点击取消}}

管理员查询学生信息界面

点击学生信息查询按钮后,进入界面,本功能分为两个查找方式,可以根据学号查找,也可以根据宿舍信息查找,按照要求填写文本框中的信息。点击查询按钮后,下方文本框就会显示出信息。

代码部分:首先在建好的学生表里查找用户输入的学号后者宿舍信息,若学号不存在,提示:没有该信息,请重新查询。若学号存在,则将课程表中的信息显示在文本框中。其中,布局仍然采用空布局,通过对用户输入的信息进行查询,以结果集的形式进行返回。

关键代码:

public ResultSet findUsers(String Sid)

{User user = null;

String  sql = "select Sname,Ssex,Sdate,Sid,Sdept,Sc,Class1,HCnumber,HDnumber,HBnumber,Mid from student where Sid = ?";//查询sql语句

Connection conn = GetConn.getConnection();//获取连接

PreparedStatement ps =null;

ResultSet rs = null;



try {

 ps = conn.prepareStatement(sql);//将sql语句放入快车

ps.setString(1, Sid);//绑定参数

rs = ps.executeQuery();//执行sql语句

}catch(SQLException e){

e.printStackTrace();}return rs;}

//查询学生

public ResultSet findUserl(String HCnumber,String HDnumber,String HBnumber){User user = null;

String  sql = "select Sname,Ssex,Sdate,Sid,Sdept,Sc,Class1,HCnumber,

HDnumber,HBnumber,Mid from student where HCnumber = ? and HDnumber = ? and HBnumber = ?";//查询sql语句

Connection conn = GetConn.getConnection();//获取连接

PreparedStatement ps =null;

ResultSet rs = null;

try { ps = conn.prepareStatement(sql);//将sql语句放入快车

ps.setString(1, HCnumber);//绑定参数

ps.setString(2, HDnumber);

ps.setString(3, HBnumber);

rs = ps.executeQuery();//执行sql语句

}catch(SQLException e){ e.printStackTrace();}

return rs;}

public void actionPerformed(ActionEvent e) {

if (e.getSource().equals(this.l7)) {

ResultSet rs1 =null;

UserDaoImpl userDaolmpl=new UserDaoImpl();

rs1 = userDaolmpl.findUsers(tf1.getText());

//计算有多少条记录

int count = 0;

try {while(rs1.next()){count++;}

} catch (SQLException e1) {

e1.printStackTrace();}

rs1 = userDaolmpl.findUsers(tf1.getText());

// 将查询获得的记录数据,转换成适合生成JTable的数据形式

Object[][] info = new Object[count][11];

count = 0;

try {while(rs1.next()){

info[count][0] = rs1.getString("Sname");

info[count][1] = rs1.getString("Ssex");

info[count][2] = rs1.getString("Sdate");

info[count][3] = rs1.getString("Sid");

info[count][4] = rs1.getString("Sdept");

info[count][5] = rs1.getString("Sc");

info[count][6] = rs1.getString("Class1");

info[count][7] = rs1.getString("HCnumber");

info[count][8] = rs1.getString("HDnumber");

info[count][9] = rs1.getString("HBnumber");

info[count][10] = rs1.getString("Mid");

count++; }

} catch (SQLException e1) e1.printStackTrace();}

// 定义表头

String[] title = {"姓名","性别","出生日期","学号","专业","院 系","班级","社区号","宿舍楼号","宿舍号","管理员职工号"};

tabDemo1 = new JTable(info,title);// 创建JTable

tabDemo1.getTableHeader();

// 将JTable加入到带滚动条的面板中

scpDemo1.getViewport().add(tabDemo1);}

if (e.getSource().equals(this.l8)) {

ResultSet rs2 =null;

UserDaoImpl userDaolmpl=new UserDaoImpl();rs2 = userDaolmpl.findUserl(tf2.getText(),tf3.getText() ,tf4.getText());

//计算有多少条记录

int count = 0;

try {while(rs2.next()){count++;}

} catch (SQLException e1) {

e1.printStackTrace();}rs2 = userDaolmpl.findUserl(tf2.getText(),tf3.getText() ,tf4.getText());

// 将查询获得的记录数据,转换成适合生成JTable的数据形式

Object[][] info = new Object[count][11];

count = 0;

try {while(rs2.next()){

info[count][0] = rs2.getString("Sname");

info[count][1] = rs2.getString("Ssex");

info[count][2] = rs2.getString("Sdate");

info[count][3] = rs2.getString("Sid");

info[count][4] = rs2.getString("Sdept");

info[count][5] = rs2.getString("Sc");

info[count][6] = rs2.getString("Class1");

info[count][7] = rs2.getString("HCnumber");

info[count][8] = rs2.getString("HDnumber");

info[count][9] = rs2.getString("HBnumber");

info[count][10] = rs2.getString("Mid");

count++;}

} catch (SQLException e1) {e1.printStackTrace();}// 定义表头

String[] title = {"姓名","性别","出生日期","学号","专业"," 院系","班级","社区号","宿舍楼号","宿舍号","管理员职工号"};

tabDemo2 = new JTable(info,title);// 创建JTable

tabDemo2.getTableHeader();

// 将JTable加入到带滚动条的面板中

scpDemo2.getViewport().add(tabDemo2);}}}

学生打卡操作

点击学生打卡按钮后,进入界面,按照要求填写文本框中的信息即可打卡成功。

代码部分:首先获取用户输入的各项信息,当输入的信息为空时,会提示不可以为空,信息正常时,执行插入数据库的操作,并提示打卡成功。其中,布局仍然采用空布局,其他主要是面板的使用和对按钮的监听。

关键代码:

public int inserthpush(Hpush hpush) {

int count=0;//ֵ

Connection conn=GetConn.getConnection();//获取连接

String sql="insert into hpush value(?,?,?,?,?)";//插入的sq语句PreparedStatement ps = null;

try {//将sql语句放入快车中

ps=conn.prepareStatement(sql);

//给sql语句中?绑定参数

ps.setString(1, hpush.getSname());

ps.setString(2, hpush.getPush_time());

ps.setString(3, hpush.getHCnumber());

ps.setString(4, hpush.getHDnumber());

ps.setString(5, hpush.getHBnumber());

//执行sql语句

count=ps.executeUpdate();

} catch (SQLException e) {e.printStackTrace();}finally {

GetConn.close(ps, conn);}

return count;}

public void actionPerformed(ActionEvent e) {

if (e.getSource().equals(this.l4)) {

//点击确认后,获取输入的数值

String s_tf1 = tf1.getText();

String s_tf2 = tf2.getText();

String s_tf3 = tf3.getText();

String s_tf4 = tf4.getText();

String s_tf5 = tf5.getText();

if (s_tf1 != null) {

try {Hpush hpush = new Hpush(s_tf1, s_tf2,s_tf3, s_tf4, s_tf5);UserDaoImpl userDao = new UserDaoImpl();//新建对象

userDao.inserthpush(hpush);//插入数据库

} catch (Exception s) {}//弹出界面(注册成功)

JOptionPane.showMessageDialog(this, "打卡成功", "",JOptionPane.ERROR_MESSAGE);jf.dispose();

} else//弹出界面(不可以为空)

JOptionPane.showMessageDialog(this, "不可以为空哦", "",JOptionPane.ERROR_MESSAGE) }

if (e.getSource().equals(l9))

{//点击取消

jf.dispose();}

项目完整源码+说明书+软件说明+数据库表设计 :

 点他:正在为您运送作品详情

你可能感兴趣的:(大学生JAVA课程项目,java,数据库,前端)