注意:这是使用idea制作的java代码,java+MySql(本地)
1 系统需求分析
1.1 系统功能需求分析
1.1.1 宿舍管理员管理
能够添加管理员用户、删除管理员用户信息、查找管理员信息、修改管理员信息。
1.1.2 学生信息管理
能够添加学生信息、删除学生信息、查找学生信息、修改学生信息。
1.1.3 宿舍楼信息管理
能够添加宿舍楼信息、删除宿舍楼信息、查找宿舍楼信息、修改宿舍楼信息。
1.1.4 宿舍信息管理
能够添加宿舍信息、删除宿舍信息、查找宿舍信息、修改宿舍信息。
1.1.5 学生住宿管理
能够给学生调换宿舍、能够删除学生住宿信息(增删改查)。
1.1.6 学生缺寝管理
学生缺寝时,能够记录学生缺寝记录,如果缺寝信息有误,学生申诉后能够修改缺寝信息、删除缺寝信息、查询学生缺寝信息。
1.1.7 系统登录退出
能够正常登录、退出系统。
1.2 内容主题介绍
1.2.1 登录界面
用户可以根据注册的类型,系统自动判断是学生登录还是宿管登录或者是管理人员登录,成功登陆后,系统做出相关提示
1.2.2 主界面
根据用户登录身份不同,主页面会有三种不同的显示,和不同的操作权限
//部分代码如下,全码+v: ershiqijian
public AddLater(int type, Users user){
this.user=user;
this.type=type;
setLayout(new FlowLayout());
table.setModel(mm);
table.setRowSorter(new TableRowSorter<>(mm));
JScrollPane js=new JScrollPane(table);
add(js);
JLabel lblNewLabel = new JLabel("New label");
js.setColumnHeaderView(lblNewLabel);
search();
}
private void search(){
PreparedStatement state;
ResultSet resultSet;
if(type==1){
try {
state=connection.prepareStatement("select * from absent where Sname"+"="+"'"+user.getName()+"'");
resultSet = state.executeQuery();
while (resultSet.next()){
String Sno=resultSet.getString(1);
String Sname=resultSet.getString(2);
String Dno=resultSet.getString(3);
String Atime=resultSet.getString(4);
String Areason=resultSet.getString(5);
String[] data={Sno,Sname,Dno,Atime,Areason};
mm.addRow(data);
}
} catch (SQLException e){
e.printStackTrace();
}
}
if(type==2||type==3){
try {
record();
state=connection.prepareStatement("select*from absent");
resultSet = state.executeQuery();
while (resultSet.next()){
String Sno=resultSet.getString(1);
String Sname=resultSet.getString(2);
String Dno=resultSet.getString(3);
String Atime=resultSet.getString(4);
String Areason=resultSet.getString(5);
String[] data={Sno,Sname,Dno,Atime,Areason};
mm.addRow(data);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
private void record(){ //这是宿管添加晚归记录的功能
Sno=new JLabel("要添加学生的学号:");
SnoText=new JTextField(10);
Sname=new JLabel("姓名:");
SnameText=new JTextField(10);
Dno=new JLabel("宿舍号:");
DnoText=new JTextField(10);
Atime=new JLabel("缺寝时间:");
AtimeText=new JTextField(10);
Areason=new JLabel("缺寝原因:");
AreasonText=new JTextField(10);
submit=new JButton("添加");
submit.addActionListener(this);
student=new JPanel(new GridLayout(8, 1));
student.add(Sno);student.add(SnoText);
student.add(Sname);student.add(SnameText);
student.add(Dno);student.add(DnoText);
student.add(Atime);student.add(AtimeText);
student.add(Areason);student.add(AreasonText);
student.add(submit);
add(student);
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==submit){ //这是宿管添加晚归记录的功能
try {
PreparedStatement statement = connection.prepareStatement("insert into absent values(?,?,?,?,?)");
statement.setString(1, SnoText.getText());
statement.setString(2, SnameText.getText());
statement.setString(3, DnoText.getText());
statement.setString(4, AtimeText.getText());
statement.setString(5, AreasonText.getText());
statement.executeUpdate();
PreparedStatement state=connection.prepareStatement("select*from absent");
ResultSet resultSet = state.executeQuery();
while(mm.getRowCount()>0){//把表格进行刷新,下次显示的时候重头开始显示
mm.removeRow(mm.getRowCount()-1);
}
while (resultSet.next()){
String Sno=resultSet.getString(1);
String Sname=resultSet.getString(2);
String Dno=resultSet.getString(3);
String Atime=resultSet.getString(4);
String Areason=resultSet.getString(5);
String[] data={Sno,Sname,Dno,Atime,Areason};
mm.addRow(data);
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
JOptionPane.showMessageDialog(this,"添加成功");
}
}
/.../
private void init() {//初始化界面、该函数为初始化功能
welcome.setFont(font);//设置字体的方法
setTitle("宿管系统 ");
getContentPane().setLayout(new BorderLayout());
user = new JLabel("name");
password = new JLabel("password");
button = new JButton("Reset");
card = new JPanel(cardLayout);
JPanel panel1 = new JPanel(new BorderLayout());
username = new JTextField();
passwordField = new JPasswordField();
loginButton = new JButton("Login!");
loginButton.addActionListener(this);
JPanel titlepanel = new JPanel(new FlowLayout());//标题面板
JPanel loginpanel = new JPanel();//登录面板
loginpanel.setLayout(null);//关闭窗口布局管理器,使后面的setBounds生效
//设定窗体的偏移量
welcome.setBounds(300,100,400,25);
user.setBounds(340, 170, 100, 20);
password.setBounds(340, 210, 100, 20);
username.setBounds(400, 170, 120, 20);
passwordField.setBounds(400, 210, 120, 20);
loginButton.setBounds(340, 250, 80, 25);
button.setBounds(440,250,80,25);
//把页面各项信息添加到登录login面板上
loginpanel.add(welcome);
loginpanel.add(user);
loginpanel.add(password);
loginpanel.add(username);
loginpanel.add(passwordField);
loginpanel.add(loginButton);
loginpanel.add(button);
panel1.add(titlepanel, BorderLayout.NORTH);
panel1.add(loginpanel, BorderLayout.CENTER);
card.add(panel1, "login");
getContentPane().add(card);//初始化一个容器 ,在容器上添加控件
setBounds(300, 100, 900, 600);
setVisible(true);//显示JFrame对象
button.addActionListener(new ActionListener(){//为重置按钮添加监听事件
//同时清空name、password的数据
public void actionPerformed(ActionEvent arg0) {
// TODO 自动生成方法存根
username.setText("");
passwordField.setText("");
}
});
}