该系统为学生宿舍管理系统,鉴于学校规模的不断扩大,学生数量的增加导致宿舍数量不断增加,学校也逐渐认识到宿舍的卫生和安全的重要性,为避免学校使用人力,时间对大量的宿舍进行检查,本系统站在学生和学校的角度,方便大家对宿舍进行更加高效的管理共建美丽宿舍。
本系统涉及权限管理,以管理员,学生分别登录以进行不同的操作,管理员可以对学生宿舍卫生,宿舍安全,学生打卡等信息进行管理,学生需要每天需要登录系统进行打卡,提交宿舍的卫生情况和安全情况.为了提高信息的处理效率,完成学生每天的宿舍信息提交,以及管理员对学生宿舍的检查的一款小型的宿舍管理系统。将数据库的内容以界面的形式表现出来,达到直观,方便的管理目的。
管理员属性:职工号,姓名,出生日期,性别,权限级别。
学生属性:姓名,性别,出生日期,学号,专业,系院,所属宿舍,所属管理员。
宿舍安全属性:用电情况,烟雾浓度,宿舍楼号,宿舍号,社区号。
宿舍环境属性:空气湿度,温度,异味情况,宿舍楼号,宿舍号,社区号。
学生打卡属性:学生姓名,打卡时间,宿舍楼号,宿舍号,社区号。
本程序设计的权限管理中,不同身份可以进行的操作不一样,因此点击身份,决定执行什么样的操作,如图6-1所示为选择身份,其中布局为空布局,主要用到的是面板和按钮,以及监听器的使用。
本系统的权限管理中,管理员,学生进入系统之前都需要登录,下面以管理员登录为例,学生登录类似。若用户名和姓名输入正确,则直接进入下一页面,若其中一项输入错误,则会显示:登录失败。若要注册,则点击注册,输入对应信息,进行注册,其中布局为空布局,在获取了用户输入信息后,会通过函数对用户的输入进行查找,若信息和数据库中一直,则登陆成功。如图6-2所示。
登录部分代码
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所示的学生界面,学生可以填写当日的宿舍环境信息和宿舍安全信息以及自身的打卡,布局采用空布局,其他主要是面板和监听器的使用。
管理员注册界面
因为最多的是对学生宿舍信息的了解,操作主要以查询为主,增加,修改,删除操作这里以管理员为例,具体以管理员的注册,修改个人信息,注销账户体现,系统主要操作以学生打卡和管理员查找学生信息体现.
点击注册按钮后,进入如图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();//点击取消}}
管理员注销界面
点击注销账户按钮后,进入如图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();}
点他:正在为您运送作品详情