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

实验内容与步骤

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. 课程注册管理系统(用例图及用例描述)

    案例名称:课程注册管理系统 案例系统描述: 为某学校的教务管理部门开发一个课程注册管理系统. 该校实施学分制,每学期开学前,教务管理人员利用该系统输入本学期开设的全部课程及相关信息,提供课程总表(所有 ...

  2. 学生课程信息管理系统【源码+后台服务器】

    [学生课程信息管理系统 使用文档] 本系统基于vue+element-UI搭建,配合面试题库中后端服务开发,具有学生信息管理.课程信息管理.选课表管理.学生选课等多种功能.将功能区域划分为组件,数据处 ...

  3. java毕业设计全套基于SSM+Vue的SSM学业预警平台信息管理|学生课程成绩管理系统作业[包运行成功]

    一.项目介绍 计算机毕业设计java毕设之SSM学业预警平台信息管理系统_哔哩哔哩_bilibili计算机毕业设计java毕设之SSM学业预警平台信息管理系统共计2条视频,包括:B149 248-SS ...

  4. c语言编制学生课程信息管理系统,C语言课程设计-学生信息管理系统.doc

    - III -- III - 中国海洋大学 青岛学院 C语言课程设计报告书 题 目 学生信息管理系统 学生姓名 指导教师 学 院 专业班级 组内分工 姓名 主要任务 占系统比例 学生信息的查看,主函数 ...

  5. php学生作业管理,学生课程作业成绩管理系统

     学生课程作业管理系统,由本站设计师开发完成.该软件有管理员.教师.学生三种用户角色,有课程管理.作业管理.管理员设置.教师管理.学生管理.作业批改等模块,程序功能齐全.我们的设计师从事学生毕业设 ...

  6. java课程管理系统_基于JAVA学生课程管理系统.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava 基于JAVA学生课程管理系统.doc62页 本文档一共 ...

  7. 可执行源码:基于javaweb实现学生成绩管理系统,三种角色学生和教师 管理员,实现了学生信息管理,课程管理,教师信息管理,学生成绩汇总,学生登录注册,教师和管理员的登录,个人信息修改等

    基于javaweb实现学生成绩管理系统,实现了学生信息管理,课程管理,教师信息管理,学生成绩汇总,学生登录注册,教师和管理员的登录,个人信息修改等. 系统功能大致描述:基于javaweb实现学生成绩管 ...

  8. 基于javaweb学生课程管理系统

    一.系统简介 本项目采用eclipse工具开发,jsp+servlet+jquery技术编写,数据库采用的是mysql,navicat开发工具. 系统一共分为2个角色分别是:学生,教师 二.模块简介 ...

  9. mysql查询各类课程的总学分_基于jsp+mysql的JSP学生选课信息管理系统

    运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以. IDE环境: Eclipse,Myeclipse,IDEA都可以 硬件环境: windows 7/8/10 ...

最新文章

  1. 从AppStore提取ipa
  2. 中间画一条短竖线_许愿孔明灯怎么画,简约好看的孔明灯简笔画教程
  3. C/C++内存分配与Linux内存管理进程所涉及到的五个数据段 .
  4. C++ 判断元音/辅音
  5. Python《第一次爬虫遭遇反盗链(下)》
  6. Ubuntu安装指定版本clang-format
  7. LAMP使开放源代码软件安全性提高
  8. 如何使用计算机小学生课件,小学信息技术计算机基础ppt课件
  9. Zabbix使用snmptrap方式监控vCenter Server
  10. python使用opencv进行身份证信息识别_基于opencv和tesseract实现身份证扫描件的身份证号码提取试验...
  11. 基于臻图ZTMAP 3DGIS平台打造线上线下融合的智慧展览中心
  12. vi/vim查看空格、制表符等特殊符号
  13. 理解 Joomla 的几个概念 - 读《Aprees.Begging.Joomla.From.Novice.to.Professional》
  14. Tic-Tac-Toe:基于Minimax算法的人机对弈程序(python实现)
  15. meta camp+21春季PAT乙级反思
  16. 该怎么图片转文字?怎么高效提取图片文字呢?
  17. php file_put_contents 根目录权限,php – Composer:file_put_contents(./ composer.json):无法打开流:权限被拒绝...
  18. 社会工程学在***中的应用--一个密码引发的“血案”
  19. 模电学习笔记_双极型晶体管及其放大电路(4)
  20. 【BeiJing2006】【BZOJ1001】狼抓兔子

热门文章

  1. python存储16bit和32bit图像
  2. 可实现一种个人微信二维码收款接口的方法
  3. 提升睡眠质量的助眠好物,拥有这些,不再担忧睡眠质量
  4. 知路,然后智行远;懂行,所以万业兴
  5. n*n蛇形方阵的输出
  6. 2023年全国最新机动车签字授权人精选真题及答案14
  7. Ultra Light Waterproof Jacket 2014 Warm down Coats Cheap
  8. 我的世界服务器皮肤显示怎么用,我的世界皮肤站怎么用 皮肤站使用方法介绍...
  9. 【学习日志】2023.04.24 C++ 调整黑点、白点和中值以增加、平衡或降低对比度
  10. Android发送接收短信的代码示例