赞
踩
实验内容与步骤
1.设计课程注册管理系统的类图,应用面向对象的对象,类,继承,多态,聚合的方法实现各个类
2.设计一个Student类 ,该类包括学生学号sID和用户账号及密码
3.设计一个teacher类,该类包括教师号tID和职称Level实现教师信息显示及课程安排
4.设计一个register类,包括实现注册管理员的信息显示及其课程设置
项目结构:
login.java:
- package sy1.student;
-
- import javax.swing.*;
- import java.awt.*;
- import java.sql.Connection;
- import java.sql.ResultSet;
- import java.sql.Statement;
-
- public class login extends JFrame {
- public int width = Toolkit.getDefaultToolkit().getScreenSize().width;//获取屏幕的宽
- public int height = Toolkit.getDefaultToolkit().getScreenSize().height;//获取屏幕的高
- JPanel jp = new JPanel();
- ImageIcon image = new ImageIcon("out/production/zhuceglixitong/sy1/student/R-C.jpg");
- private JLabel JLtitle;
- private JLabel JLname;
- private JLabel JLpwd;
- static JTextField JTname;
- static JPasswordField JTpwd;
- private JButton JBsure;
- private JRadioButton Bt1, Bt2, Bt3; //定义单选按钮
- ButtonGroup group = new ButtonGroup(); //按钮组 实现单选
- public login() {// 登录界面
- this.setTitle("学生选课系统");
- this.setBounds((width - 800) / 2, (height - 600) / 2 - 20, 800, 600); //使窗体居中
- this.setResizable(false);
- JLtitle = new JLabel("用户登录界面");
- JLtitle.setFont(new java.awt.Font("宋体", 4, 50));
- JLtitle.setForeground(Color.black);
- JLname = new JLabel("用户名:");//设置Label和按钮名
- JLname.setForeground(Color.black);
- JLpwd = new JLabel("密 码:");
- JLpwd.setForeground(Color.black);
- JLpwd.setFont(new java.awt.Font("宋体", 4, 20));
- JTname = new JTextField(25);
- JTpwd = new JPasswordField(25);//文本框
- JLname.setFont(new java.awt.Font("宋体", 4, 20));
- JBsure = new JButton("登录");
- Bt1 = new JRadioButton("学生");
- Bt2 = new JRadioButton("老师");
- Bt3 = new JRadioButton("管理员");
- JLabel background = new JLabel(image); //将背景图片封装为一个JLable
- // Jrb1.setFocusPainted(false);
- // Jrb2.setFocusPainted(false);
- // Jrb3.setFocusPainted(false);
- Bt3.setBounds(525, 330, 65, 35);
- Bt2.setBounds(470, 330, 55, 35);
- Bt1.setBounds(415, 330, 55, 35);
- JLtitle.setBounds(360, 50, 300, 100);
- JLname.setBounds(370, 240, 80, 35);//设置Label和按钮大小
- JTname.setBounds(450, 240, 170, 25);
- JLpwd.setBounds(370, 280, 80, 35);
- JTpwd.setBounds(450, 280, 170, 25);
- JBsure.setBounds(420, 380, 170, 35);
- // JBexit.setBounds(180,130,60,25);
- background.setBounds(0, 0, 800, image.getIconHeight());
- background.setOpaque(false); //背景透明
- background.setLayout(null);
- group.add(Bt1);
- group.add(Bt2);
- group.add(Bt3); //将单选组件放在一个组件组里从而实现单选
- background.add(this.Bt1);
- background.add(this.Bt2);
- background.add(this.Bt3);
- background.add(JLtitle);
- background.add(JLname);
- background.add(JTname);
- background.add(JLpwd);
- background.add(JTpwd);
- background.add(JBsure);
- jp.add(background);
- this.add(jp);
- this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
- this.setVisible(true);
- // //添加按钮组件监听
- Bt1.addActionListener(e -> {
- JBsure.addActionListener(a-> {
- String studentname= JTname.getText();
- String studentpassword= String.valueOf(JTpwd.getPassword());
- if(studentname.equals("")){
- JOptionPane.showMessageDialog(null,"账号不能为空","警告⚠",JOptionPane.ERROR_MESSAGE);
- }
- if(studentpassword.equals("")){
- JOptionPane.showMessageDialog(null,"密码不能为空","警告⚠",JOptionPane.ERROR_MESSAGE);
- }
- try{
- new SQLConnection();
- Connection con= SQLConnection.getConnection();
- Statement sta=con.createStatement();
- String sql="select * from student where username='"+studentname+"'and password= '"+ studentpassword+"'";
- ResultSet rs=sta.executeQuery(sql);
- if (rs.next()) {
- this.dispose();
- new Student();
- }
- else {
- //弹出消息对话框
- JOptionPane.showMessageDialog(null,"账号或者密码错误","警告⚠",JOptionPane.ERROR_MESSAGE);
- JTpwd.requestFocus();
- }
-
- }catch(Exception e1){
- e1.printStackTrace();
- }
-
- });
- });
- Bt2.addActionListener(e -> {//teacher登录
- JBsure.addActionListener(a->{
- String teachername=JTname.getText();
- String teacherpassword=String.valueOf(JTpwd.getPassword());//转换为String类型
- if(teachername.equals("")){
- JOptionPane.showMessageDialog(null,"账号不能为空","警告⚠",JOptionPane.ERROR_MESSAGE); //同理判断是否为空
- }
- if(teacherpassword.equals("")){
- JOptionPane.showMessageDialog(null,"密码不能为空","警告⚠",JOptionPane.ERROR_MESSAGE);
- }
- try{
- new SQLConnection();
- Connection con= SQLConnection.getConnection();
- Statement sta=con.createStatement();
- String sql="select * from teacher where teachername='"+teachername+"'and teacherpassword= '"+ teacherpassword+"'";
- ResultSet rs=sta.executeQuery(sql);
- if(rs.next()){
- this.dispose();//关闭窗口释放一定资源
- new teacher();
- }else{
- JOptionPane.showMessageDialog(null,"账号或者密码错误","警告⚠",JOptionPane.ERROR_MESSAGE);
- JTpwd.requestFocus();
- }
- }catch (Exception e1) {
- }
- });
- });
- Bt3.addActionListener(e -> {//管理员登录
- JBsure.addActionListener(a->{
- String rname=JTname.getText();
- String rpassword=String.valueOf(JTpwd.getPassword());//转换为String类型
- if(rname.equals("")){
- JOptionPane.showMessageDialog(null,"账号不能为空","警告⚠",JOptionPane.ERROR_MESSAGE); //同理判断是否为空
- }
- if(rpassword.equals("")){
- JOptionPane.showMessageDialog(null,"密码不能为空","警告⚠",JOptionPane.ERROR_MESSAGE);
- }
- try{
- new SQLConnection();
- Connection con= SQLConnection.getConnection();
- Statement sta=con.createStatement();
- String sql="select * from register where rname='"+rname+"'and rpassword= '"+rpassword+"'";
- ResultSet rs=sta.executeQuery(sql);
- if(rs.next()){
- this.dispose();//关闭窗口释放一定资源
- new Register();
- }else{
- JOptionPane.showMessageDialog(null,"账号或者密码错误","警告⚠",JOptionPane.ERROR_MESSAGE);
- JTpwd.requestFocus();
- }
- }catch (Exception e1) {
- }
- });
- });
- }
- public static void main(String []args){
- new login();
- }
- }
student.java:
- import java.util.Vector;
- import javax.swing.table.DefaultTableCellRenderer;
- import javax.swing.table.DefaultTableModel;
- //显示该登录的学生的基本信息 和 所学修的课程信息 数据库
- public class Student extends JFrame {
- private JButton bt1;
- public String sID;
- public String Grade;
- private JButton bt2;
- private JTable table1;
- String name = login.JTname.getText();
- public Student(){
- ImageIcon background = new ImageIcon("out/production/zhuceglixitong/sy1/student/01c8f15aeac135a801207fa16836ae.jpg@1280w_1l_2o_100sh.jpg");
- JLabel label = new JLabel(background);
- // 把标签的大小位置设置为图片刚好填充整个面板
- label.setBounds(0, 0, this.getWidth(), this.getHeight());
- // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
- JPanel imagePanel = (JPanel) this.getContentPane();
- imagePanel.setOpaque(false);
- // 把背景图片添加到分层窗格的最底层作为背景
- this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
- this.setTitle("学生界面");
- this.setBounds(450,100,1200,900);
- this.setVisible(true);
- this.setResizable(false);
- this.setLayout(null);
- bt1=new JButton("学生信息显示");
- bt2=new JButton("学生选课信息");
- bt1.setFont(new java.awt.Font("宋体",4,25));
- bt2.setFont(new java.awt.Font("宋体",4,25));
- JLabel jl=new JLabel();
- JLabel we=new JLabel("欢迎来到学生信息界面!");
- jl.setBounds(100,100,300,800);
- we.setBounds(600,300,600,300);
- we.setFont(new java.awt.Font("楷体",4,45));
- bt1.setBounds(100,150,200,100);
- bt2.setBounds(100,400,200,100);
- jl.add(bt1);
- jl.add(bt2);
- this.add(jl);
- this.add(we);
-
- bt1.addActionListener(e->{
- Vector titlename = new Vector();//{"学号","年级"};
- titlename.add("学号");
- titlename.add("年级");
- titlename.add("姓名");
- titlename.add("年龄");
- Vector rowdata = new Vector(); //数据
- ResultSet rs = null;
- try {
- new SQLConnection(); //连接数据库
- Connection con = SQLConnection.getConnection();
- Statement stmt = con.createStatement(); //statement声明
- String sql = "select sID,Grade,name,sage from student where username = '" + name + "' "; //SQL选择查询语句以该账号为条件查询该表
- rs = stmt.executeQuery(sql);
-
- } catch (Exception e1) {
- System.out.println(e1);
- System.out.println("查询出错");
- }
- try{
- while (rs.next()) {
- Vector hang = new Vector();
- hang.add(rs.getString("sID"));
- hang.add(rs.getString("Grade"));
- hang.add(rs.getString("name"));
- hang.add(rs.getString("sage"));
- rowdata.add(hang);
- }
- }catch(Exception e1){
- System.out.println("添加错误");
- }
-
- table1 = new JTable(rowdata, titlename);
- table1.setEnabled(false); //表格不能编辑
- table1.setFont(new java.awt.Font("宋体",4,20));
- JScrollPane sroll = new JScrollPane(table1);
- DefaultTableCellRenderer r=new DefaultTableCellRenderer();
- r.setHorizontalAlignment(JLabel.CENTER);
- table1.setDefaultRenderer(Object.class,r);
-
- JFrame jf = new JFrame();
- jf.setTitle("个人信息");
- jf.setBounds(200, 200, 600, 200); //使窗体居中
- jf.setResizable(false);
- jf.add(sroll);
- jf.setVisible(true);
-
- });
-
- bt2.addActionListener(e->{
- Vector tname = new Vector();
- tname.add("课程名");
- tname.add("课程号");
- tname.add("学时");
- tname.add("学分");
- tname.add("上课教室");
- tname.add("上课时间");
- Vector rowdata = new Vector(); //数据
- ResultSet rs = null;
- try {
- new SQLConnection(); //连接数据库
- Connection con = SQLConnection.getConnection();
- Statement stmt = con.createStatement(); //statement声明
- String sql = "select cName,course.cID,xSS,xF,sKroom,sKtime from course,student,course_offering where course.cID=course_offering.cID and student.sID=course_offering.sID and username = '" + name + "' ";
- rs = stmt.executeQuery(sql);
-
- } catch (Exception e1) {
- System.out.println(e1);
- System.out.println("查询出错");
- }
- try{
- while (rs.next()) {
- Vector hang=new Vector();
- hang.add(rs.getString("cName"));
- hang.add(rs.getString("course.cID"));
- hang.add(rs.getString("xSS"));
- hang.add(rs.getString("xF"));
- hang.add(rs.getString("sKroom"));
- hang.add(rs.getString("sKtime"));
- rowdata.add(hang);
- }
- }catch(Exception e1){
- System.out.println("添加错误");
- }
-
- table1 = new JTable(rowdata, tname);
- table1.setEnabled(false); //表格不能编辑
- table1.setFont(new java.awt.Font("宋体",4,20));
- JScrollPane sroll = new JScrollPane(table1);
- DefaultTableCellRenderer r=new DefaultTableCellRenderer();
- r.setHorizontalAlignment(JLabel.CENTER);
- table1.setDefaultRenderer(Object.class,r);
-
- JFrame jf = new JFrame();
- jf.setTitle("课程信息");
- jf.setBounds(200, 200, 600, 200); //使窗体居中
- jf.setResizable(false);
-
- jf.add(sroll);
- jf.setVisible(true);
-
- });
- }
-
- public static void main(String []args){
- new Student();//调用构造方法
- }
- }
SQLConnection.java:这里需创建lib文件下并在lib目录下导入jar包
- package sy1.student;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- public class SQLConnection {
- public static Connection getConnection(){
- String driver = "com.mysql.cj.jdbc.Driver";//使用Jar包驱动
- String url = "jdbc:mysql://localhost:3306/studentinform?useUnicode=true&characterEncoding=utf8&useSSL=true";
- String username = "root";//数据库用户名
- String password = "1828808086";//数据库密码
- Connection conn = null;
- try {
- Class.forName(driver); //classLoader,加载对应驱动
- conn = (Connection) DriverManager.getConnection(url, username, password);
- System.out.println("数据库已连接");
- } catch (ClassNotFoundException e) {//异常捕获
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return conn;
- }
- public static void main(String[] args) {
- SQLConnection.getConnection();
- }
- }
teacher表:
student表:
register表:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。