Java课程设计——学生寝室管理系统的设计与实现
1.基本思路
首先用JFrame类创建初界面、登录界面、教师用户注册界面、学生用户注册界面、教师功能界面、学生功能界面、管理员功能界面。
然后各界面添加各自的按钮,并对按钮进行事件监听,通过类方法或jdbc连接数据库实现相应的功能。
再用JFrame类装JTable,JTable装数据库中的数据。
最后通过更改背景颜色、添加图片或图标丰富界面内容。
2.课程设计报告中可能需要的素材
2.01功能框架图
2.02 系统E-R图
2.03数据库里创建的的用户表
2.04 数据库里创建的的学生宿舍信息表
2.05添加功能流程图
2.06修改功能流程图
2.07删除功能流程图
2.08注册流程图
2.09系统流程图
2.10管理员功能界面流程图
3.数据库脚本
学生宿舍信息表以学籍号作为主码
用户信息表以用户名作为主码
//创建学生宿舍数据库
create database stu-dor;
//进入学生宿舍数据库
use stu_dor;
//创建学生宿舍信息表(学籍号作为主码)
create table Dinfo(name char(20) not null,
-> sno char(9) check(sno>200000000 and sno sex char(2) check(sex in('男','女'))not null,
-> age smallint,
-> bno char(4) check(bno in('左一','左二','右一','右二')),
-> Dno int check(Dno>99 and Dno Sapb smallint check(Sapb>00 and Sapb );
//创建用户信息表(用户名作为主码)
create table user(username char(200)primary key,password char(200)not null);
//插入管理员用户名和密码数据
insert into user values('Admin','123456');
//插入学生宿舍信息数据
insert into Dinfo values('李勇','202105122','男',19,'左一',100,01);
insert into Dinfo values('江城','202105123','男',19,'左二',100,01);
insert into Dinfo values('王弘文','202105124','男',19,'右一',100,01);
insert into Dinfo values('刘烨伟','202105125','男',19,'右二',100,01);
insert into Dinfo values('沈希文','202105126','男',19,'左一',101,01);
insert into Dinfo values('宁鸿恩','202105127','男',19,'左二',101,01);
insert into Dinfo values('孙玄华','202105128','男',19,'右一',101,01);
insert into Dinfo values('秦哲瀚','202105129','男',19,'右二',101,01);
insert into Dinfo values('王梦琪','202105130','女',21,'左一',401,18);
insert into Dinfo values('梨香巧','202105131','女',21,'左二',401,18);
insert into Dinfo values('刘代云','202105132','女',20,'右一',401,18);
insert into Dinfo values('李海莲','202105133','女',21,'右二',401,18);
insert into Dinfo values('周千萍','202105134','女',20,'左一',402,18);
insert into Dinfo values('曹芷巧','202105135','女',20,'左二',402,18);
insert into Dinfo values('钱冬云','202105136','女',19,'右一',402,18);
insert into Dinfo values('沈笑白','202105137','女',22,'右二',402,18);
4.详细代码及图片展示
4.1初始界面
//注意把包名更改为自己创建的
package an;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTable;
//身份选择界面窗口
public class Cs extends JFrame{
public Cs() {
//创建组件
setTitle("学生寝室管理系统初界面");
JButton btn1=new JButton("注册教师用户");
JButton btn2=new JButton("注册学生用户");
JButton btn3=new JButton("用户登录");
JLabel jbl1=new JLabel("请选择您的操作");
ImageIcon im1=new ImageIcon("C:\\Users\\Desktop\\images\\教师.png");
ImageIcon im2=new ImageIcon("C:\\Users\\Desktop\\images\\学生.png");
ImageIcon im3=new ImageIcon("C:\\Users\\Desktop\\images\\用户登录.png");
JLabel jbl2=new JLabel(im1);
JLabel jbl3=new JLabel(im2);
JLabel jbl4=new JLabel(im3);
//注册教师用户按钮事件监听
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
New_t t1=new New_t();
setEnabled(false); //设置初界面窗口不可操作
setVisible(false); //设置初界面窗口不可见
t1.addWindowListener(new WindowAdapter() { //监听教师注册窗口是否关闭
@Override
public void windowClosed(WindowEvent e) {
setEnabled(true);
setVisible(true);
}
});
}
});
//注册学生用户按钮事件监听
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
New_s s1=new New_s();
setEnabled(false);
setVisible(false);
s1.addWindowListener(new WindowAdapter() { //监听学生注册窗口是否关闭
@Override
public void windowClosed(WindowEvent e) {
setEnabled(true);
setVisible(true);
}
});
}
});
//用户登录按钮事件监听
btn3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Dl d1=new Dl();
setEnabled(false);
setVisible(false);
d1.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent e) { //监听登录窗口是否关闭
setEnabled(true);
setVisible(true);
}
});
}
});
jbl2.setBounds(40, 40, 150, 130);
btn1.setBounds(40, 180, 150, 25);
jbl3.setBounds(300, 40, 150, 130);
btn2.setBounds(300, 180, 150, 25);
jbl4.setBounds(195, 200, 100, 80);
btn3.setBounds(195, 260, 100, 25);
jbl1.setBounds(200, 10, 150, 100);
//设置窗口属性
setSize(500,400);
setLocation(800, 400);
setResizable(false);
getContentPane().setBackground(Color.ORANGE);
setLayout(null);
//设置按钮字体颜色
btn2.setForeground(Color.BLUE);
btn3.setForeground(Color.green);
btn3.setBackground(Color.blue);
//设置字体线框消失
btn1.setFocusPainted(false);
btn2.setFocusPainted(false);
btn3.setFocusPainted(false);
getContentPane().add(btn1);
getContentPane().add(btn2);
getContentPane().add(btn3);
getContentPane().add(jbl1);
getContentPane().add(jbl2);
getContentPane().add(jbl3);
getContentPane().add(jbl4);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
4.2注册界面
教师用户的注册码为123456
4.2.1教师用户注册界面详细代码
//注意把包名更改为自己创建的
package an;
import java.awt.BorderLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class New_t extends JFrame{
public New_t() {
setSize(500, 400);
setLocation(600, 300);
setTitle("教师用户注册界面");
setLayout(null);
setResizable(false);
JLabel lb1=new JLabel("新用户名");
JLabel lb2=new JLabel(" 新密码");
JLabel lb4=new JLabel("确认密码");
JLabel lb3=new JLabel("教师注册码");
JLabel lb5=new JLabel("请用'T'或't'开头");
JTextField user = new JTextField(200);
JPasswordField pass = new JPasswordField(200);
JPasswordField repass = new JPasswordField(200);
JTextField yzm = new JTextField(8);
JButton btn1=new JButton("注册");
JButton btn2=new JButton("清空");
ImageIcon im1=new ImageIcon("C:\\Users\\Desktop\\images\\用户名.png");
ImageIcon im2=new ImageIcon("C:\\Users\\Desktop\\images\\密码.png");
ImageIcon im3=new ImageIcon("C:\\Users\\Desktop\\images\\确认密码.png");
ImageIcon im4=new ImageIcon("C:\\Users\\Desktopy\\images\\注册码.png");
JLabel bl1=new JLabel(im1);
JLabel bl2=new JLabel(im2);
JLabel bl3=new JLabel(im3);
JLabel bl4=new JLabel(im4);
//清空按钮事件监听
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
user.setText("");
pass.setText("");
yzm.setText("");
repass.setText("");
}
});
//注册按钮事件监听
btn1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String username=user.getText().trim(); //获取用户名
String zcm=yzm.getText().trim(); //获取注册码
String password=pass.getText().trim(); //获取密码
String repassword=repass.getText().trim(); //获取确认密码
if( yzm == null|| !("123456".equals(zcm)))
{
JOptionPane.showMessageDialog(null, "错误:注册码为空或不匹配");
yzm.setText("");
}
else if(user == null|| "".equals(username))
{
JOptionPane.showMessageDialog(null, "错误:新用户名不能为空");
}
else if(username.charAt(0)!='t'&&username.charAt(0)!='T')
{
JOptionPane.showMessageDialog(null, "新用户名不符合要求");
user.setText("");
}
else if(pass == null|| "".equals(password))
{
JOptionPane.showMessageDialog(null, "错误:新密码不能为空");
}
else if(repass == null|| "".equals(repassword))
{
JOptionPane.showMessageDialog(null, "错误:确认密码不能为空");
}
else if( !(password.equals(repassword))) //检测密码与确认密码是否一致
{
JOptionPane.showMessageDialog(null, "错误:两次密码不一致");
pass.setText("");
repass.setText("");
}
else { //用户名和密码以及确认密码和注册码都输入正确才可进入
PreparedStatement psts=null;
PreparedStatement psti=null;
ResultSet rss=null;
Connection con=null;
try {
//连接数据库,进入user表
Class.forName("com.mysql.cj.jdbc.Driver");
con=DriverManager.getConnection(Way.url, Way.us, Way.ps);
//查找用户名是否存在
String sqlselect="select * from user where username='"+username+"'";
psts=con.prepareStatement(sqlselect);
rss=psts.executeQuery(sqlselect);
if(rss.next()) {
JOptionPane.showMessageDialog(null, "用户名已存在,请重新注册");
return;
}
else {
psti=con.prepareStatement("insert into user values(?,?)"); //SQL中占位符会自动加上单引号
psti.setString(1, username);
psti.setString(2, password);
int rsi=psti.executeUpdate(); //括号内可不写语句
if(rsi
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!












