学生课程注册管理系统

        学生课程注册管理系统的实现

实验内容与步骤

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表:

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值