当前位置:   article > 正文

学生课程注册管理系统_1.根据如下课程注册管理系统的类图,以java语言,应用面向对象的对象,类,继承,多态,

1.根据如下课程注册管理系统的类图,以java语言,应用面向对象的对象,类,继承,多态,

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

实验内容与步骤

1.设计课程注册管理系统的类图,应用面向对象的对象,类,继承,多态,聚合的方法实现各个类

 2.设计一个Student类 ,该类包括学生学号sID和用户账号及密码

 3.设计一个teacher类,该类包括教师号tID和职称Level实现教师信息显示及课程安排

 4.设计一个register类,包括实现注册管理员的信息显示及其课程设置           

     类图:

项目结构:

 login.java:

  1. package sy1.student;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.sql.Connection;
  5. import java.sql.ResultSet;
  6. import java.sql.Statement;
  7. public class login extends JFrame {
  8. public int width = Toolkit.getDefaultToolkit().getScreenSize().width;//获取屏幕的宽
  9. public int height = Toolkit.getDefaultToolkit().getScreenSize().height;//获取屏幕的高
  10. JPanel jp = new JPanel();
  11. ImageIcon image = new ImageIcon("out/production/zhuceglixitong/sy1/student/R-C.jpg");
  12. private JLabel JLtitle;
  13. private JLabel JLname;
  14. private JLabel JLpwd;
  15. static JTextField JTname;
  16. static JPasswordField JTpwd;
  17. private JButton JBsure;
  18. private JRadioButton Bt1, Bt2, Bt3; //定义单选按钮
  19. ButtonGroup group = new ButtonGroup(); //按钮组 实现单选
  20. public login() {// 登录界面
  21. this.setTitle("学生选课系统");
  22. this.setBounds((width - 800) / 2, (height - 600) / 2 - 20, 800, 600); //使窗体居中
  23. this.setResizable(false);
  24. JLtitle = new JLabel("用户登录界面");
  25. JLtitle.setFont(new java.awt.Font("宋体", 4, 50));
  26. JLtitle.setForeground(Color.black);
  27. JLname = new JLabel("用户名:");//设置Label和按钮名
  28. JLname.setForeground(Color.black);
  29. JLpwd = new JLabel("密 码:");
  30. JLpwd.setForeground(Color.black);
  31. JLpwd.setFont(new java.awt.Font("宋体", 4, 20));
  32. JTname = new JTextField(25);
  33. JTpwd = new JPasswordField(25);//文本框
  34. JLname.setFont(new java.awt.Font("宋体", 4, 20));
  35. JBsure = new JButton("登录");
  36. Bt1 = new JRadioButton("学生");
  37. Bt2 = new JRadioButton("老师");
  38. Bt3 = new JRadioButton("管理员");
  39. JLabel background = new JLabel(image); //将背景图片封装为一个JLable
  40. // Jrb1.setFocusPainted(false);
  41. // Jrb2.setFocusPainted(false);
  42. // Jrb3.setFocusPainted(false);
  43. Bt3.setBounds(525, 330, 65, 35);
  44. Bt2.setBounds(470, 330, 55, 35);
  45. Bt1.setBounds(415, 330, 55, 35);
  46. JLtitle.setBounds(360, 50, 300, 100);
  47. JLname.setBounds(370, 240, 80, 35);//设置Label和按钮大小
  48. JTname.setBounds(450, 240, 170, 25);
  49. JLpwd.setBounds(370, 280, 80, 35);
  50. JTpwd.setBounds(450, 280, 170, 25);
  51. JBsure.setBounds(420, 380, 170, 35);
  52. // JBexit.setBounds(180,130,60,25);
  53. background.setBounds(0, 0, 800, image.getIconHeight());
  54. background.setOpaque(false); //背景透明
  55. background.setLayout(null);
  56. group.add(Bt1);
  57. group.add(Bt2);
  58. group.add(Bt3); //将单选组件放在一个组件组里从而实现单选
  59. background.add(this.Bt1);
  60. background.add(this.Bt2);
  61. background.add(this.Bt3);
  62. background.add(JLtitle);
  63. background.add(JLname);
  64. background.add(JTname);
  65. background.add(JLpwd);
  66. background.add(JTpwd);
  67. background.add(JBsure);
  68. jp.add(background);
  69. this.add(jp);
  70. this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  71. this.setVisible(true);
  72. // //添加按钮组件监听
  73. Bt1.addActionListener(e -> {
  74. JBsure.addActionListener(a-> {
  75. String studentname= JTname.getText();
  76. String studentpassword= String.valueOf(JTpwd.getPassword());
  77. if(studentname.equals("")){
  78. JOptionPane.showMessageDialog(null,"账号不能为空","警告⚠",JOptionPane.ERROR_MESSAGE);
  79. }
  80. if(studentpassword.equals("")){
  81. JOptionPane.showMessageDialog(null,"密码不能为空","警告⚠",JOptionPane.ERROR_MESSAGE);
  82. }
  83. try{
  84. new SQLConnection();
  85. Connection con= SQLConnection.getConnection();
  86. Statement sta=con.createStatement();
  87. String sql="select * from student where username='"+studentname+"'and password= '"+ studentpassword+"'";
  88. ResultSet rs=sta.executeQuery(sql);
  89. if (rs.next()) {
  90. this.dispose();
  91. new Student();
  92. }
  93. else {
  94. //弹出消息对话框
  95. JOptionPane.showMessageDialog(null,"账号或者密码错误","警告⚠",JOptionPane.ERROR_MESSAGE);
  96. JTpwd.requestFocus();
  97. }
  98. }catch(Exception e1){
  99. e1.printStackTrace();
  100. }
  101. });
  102. });
  103. Bt2.addActionListener(e -> {//teacher登录
  104. JBsure.addActionListener(a->{
  105. String teachername=JTname.getText();
  106. String teacherpassword=String.valueOf(JTpwd.getPassword());//转换为String类型
  107. if(teachername.equals("")){
  108. JOptionPane.showMessageDialog(null,"账号不能为空","警告⚠",JOptionPane.ERROR_MESSAGE); //同理判断是否为空
  109. }
  110. if(teacherpassword.equals("")){
  111. JOptionPane.showMessageDialog(null,"密码不能为空","警告⚠",JOptionPane.ERROR_MESSAGE);
  112. }
  113. try{
  114. new SQLConnection();
  115. Connection con= SQLConnection.getConnection();
  116. Statement sta=con.createStatement();
  117. String sql="select * from teacher where teachername='"+teachername+"'and teacherpassword= '"+ teacherpassword+"'";
  118. ResultSet rs=sta.executeQuery(sql);
  119. if(rs.next()){
  120. this.dispose();//关闭窗口释放一定资源
  121. new teacher();
  122. }else{
  123. JOptionPane.showMessageDialog(null,"账号或者密码错误","警告⚠",JOptionPane.ERROR_MESSAGE);
  124. JTpwd.requestFocus();
  125. }
  126. }catch (Exception e1) {
  127. }
  128. });
  129. });
  130. Bt3.addActionListener(e -> {//管理员登录
  131. JBsure.addActionListener(a->{
  132. String rname=JTname.getText();
  133. String rpassword=String.valueOf(JTpwd.getPassword());//转换为String类型
  134. if(rname.equals("")){
  135. JOptionPane.showMessageDialog(null,"账号不能为空","警告⚠",JOptionPane.ERROR_MESSAGE); //同理判断是否为空
  136. }
  137. if(rpassword.equals("")){
  138. JOptionPane.showMessageDialog(null,"密码不能为空","警告⚠",JOptionPane.ERROR_MESSAGE);
  139. }
  140. try{
  141. new SQLConnection();
  142. Connection con= SQLConnection.getConnection();
  143. Statement sta=con.createStatement();
  144. String sql="select * from register where rname='"+rname+"'and rpassword= '"+rpassword+"'";
  145. ResultSet rs=sta.executeQuery(sql);
  146. if(rs.next()){
  147. this.dispose();//关闭窗口释放一定资源
  148. new Register();
  149. }else{
  150. JOptionPane.showMessageDialog(null,"账号或者密码错误","警告⚠",JOptionPane.ERROR_MESSAGE);
  151. JTpwd.requestFocus();
  152. }
  153. }catch (Exception e1) {
  154. }
  155. });
  156. });
  157. }
  158. public static void main(String []args){
  159. new login();
  160. }
  161. }

student.java:

  1. import java.util.Vector;
  2. import javax.swing.table.DefaultTableCellRenderer;
  3. import javax.swing.table.DefaultTableModel;
  4. //显示该登录的学生的基本信息 和 所学修的课程信息 数据库
  5. public class Student extends JFrame {
  6. private JButton bt1;
  7. public String sID;
  8. public String Grade;
  9. private JButton bt2;
  10. private JTable table1;
  11. String name = login.JTname.getText();
  12. public Student(){
  13. ImageIcon background = new ImageIcon("out/production/zhuceglixitong/sy1/student/01c8f15aeac135a801207fa16836ae.jpg@1280w_1l_2o_100sh.jpg");
  14. JLabel label = new JLabel(background);
  15. // 把标签的大小位置设置为图片刚好填充整个面板
  16. label.setBounds(0, 0, this.getWidth(), this.getHeight());
  17. // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明
  18. JPanel imagePanel = (JPanel) this.getContentPane();
  19. imagePanel.setOpaque(false);
  20. // 把背景图片添加到分层窗格的最底层作为背景
  21. this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));
  22. this.setTitle("学生界面");
  23. this.setBounds(450,100,1200,900);
  24. this.setVisible(true);
  25. this.setResizable(false);
  26. this.setLayout(null);
  27. bt1=new JButton("学生信息显示");
  28. bt2=new JButton("学生选课信息");
  29. bt1.setFont(new java.awt.Font("宋体",4,25));
  30. bt2.setFont(new java.awt.Font("宋体",4,25));
  31. JLabel jl=new JLabel();
  32. JLabel we=new JLabel("欢迎来到学生信息界面!");
  33. jl.setBounds(100,100,300,800);
  34. we.setBounds(600,300,600,300);
  35. we.setFont(new java.awt.Font("楷体",4,45));
  36. bt1.setBounds(100,150,200,100);
  37. bt2.setBounds(100,400,200,100);
  38. jl.add(bt1);
  39. jl.add(bt2);
  40. this.add(jl);
  41. this.add(we);
  42. bt1.addActionListener(e->{
  43. Vector titlename = new Vector();//{"学号","年级"};
  44. titlename.add("学号");
  45. titlename.add("年级");
  46. titlename.add("姓名");
  47. titlename.add("年龄");
  48. Vector rowdata = new Vector(); //数据
  49. ResultSet rs = null;
  50. try {
  51. new SQLConnection(); //连接数据库
  52. Connection con = SQLConnection.getConnection();
  53. Statement stmt = con.createStatement(); //statement声明
  54. String sql = "select sID,Grade,name,sage from student where username = '" + name + "' "; //SQL选择查询语句以该账号为条件查询该表
  55. rs = stmt.executeQuery(sql);
  56. } catch (Exception e1) {
  57. System.out.println(e1);
  58. System.out.println("查询出错");
  59. }
  60. try{
  61. while (rs.next()) {
  62. Vector hang = new Vector();
  63. hang.add(rs.getString("sID"));
  64. hang.add(rs.getString("Grade"));
  65. hang.add(rs.getString("name"));
  66. hang.add(rs.getString("sage"));
  67. rowdata.add(hang);
  68. }
  69. }catch(Exception e1){
  70. System.out.println("添加错误");
  71. }
  72. table1 = new JTable(rowdata, titlename);
  73. table1.setEnabled(false); //表格不能编辑
  74. table1.setFont(new java.awt.Font("宋体",4,20));
  75. JScrollPane sroll = new JScrollPane(table1);
  76. DefaultTableCellRenderer r=new DefaultTableCellRenderer();
  77. r.setHorizontalAlignment(JLabel.CENTER);
  78. table1.setDefaultRenderer(Object.class,r);
  79. JFrame jf = new JFrame();
  80. jf.setTitle("个人信息");
  81. jf.setBounds(200, 200, 600, 200); //使窗体居中
  82. jf.setResizable(false);
  83. jf.add(sroll);
  84. jf.setVisible(true);
  85. });
  86. bt2.addActionListener(e->{
  87. Vector tname = new Vector();
  88. tname.add("课程名");
  89. tname.add("课程号");
  90. tname.add("学时");
  91. tname.add("学分");
  92. tname.add("上课教室");
  93. tname.add("上课时间");
  94. Vector rowdata = new Vector(); //数据
  95. ResultSet rs = null;
  96. try {
  97. new SQLConnection(); //连接数据库
  98. Connection con = SQLConnection.getConnection();
  99. Statement stmt = con.createStatement(); //statement声明
  100. 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 + "' ";
  101. rs = stmt.executeQuery(sql);
  102. } catch (Exception e1) {
  103. System.out.println(e1);
  104. System.out.println("查询出错");
  105. }
  106. try{
  107. while (rs.next()) {
  108. Vector hang=new Vector();
  109. hang.add(rs.getString("cName"));
  110. hang.add(rs.getString("course.cID"));
  111. hang.add(rs.getString("xSS"));
  112. hang.add(rs.getString("xF"));
  113. hang.add(rs.getString("sKroom"));
  114. hang.add(rs.getString("sKtime"));
  115. rowdata.add(hang);
  116. }
  117. }catch(Exception e1){
  118. System.out.println("添加错误");
  119. }
  120. table1 = new JTable(rowdata, tname);
  121. table1.setEnabled(false); //表格不能编辑
  122. table1.setFont(new java.awt.Font("宋体",4,20));
  123. JScrollPane sroll = new JScrollPane(table1);
  124. DefaultTableCellRenderer r=new DefaultTableCellRenderer();
  125. r.setHorizontalAlignment(JLabel.CENTER);
  126. table1.setDefaultRenderer(Object.class,r);
  127. JFrame jf = new JFrame();
  128. jf.setTitle("课程信息");
  129. jf.setBounds(200, 200, 600, 200); //使窗体居中
  130. jf.setResizable(false);
  131. jf.add(sroll);
  132. jf.setVisible(true);
  133. });
  134. }
  135. public static void main(String []args){
  136. new Student();//调用构造方法
  137. }
  138. }

SQLConnection.java:这里需创建lib文件下并在lib目录下导入jar包

  1. package sy1.student;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.SQLException;
  5. public class SQLConnection {
  6. public static Connection getConnection(){
  7. String driver = "com.mysql.cj.jdbc.Driver";//使用Jar包驱动
  8. String url = "jdbc:mysql://localhost:3306/studentinform?useUnicode=true&characterEncoding=utf8&useSSL=true";
  9. String username = "root";//数据库用户名
  10. String password = "1828808086";//数据库密码
  11. Connection conn = null;
  12. try {
  13. Class.forName(driver); //classLoader,加载对应驱动
  14. conn = (Connection) DriverManager.getConnection(url, username, password);
  15. System.out.println("数据库已连接");
  16. } catch (ClassNotFoundException e) {//异常捕获
  17. e.printStackTrace();
  18. } catch (SQLException e) {
  19. e.printStackTrace();
  20. }
  21. return conn;
  22. }
  23. public static void main(String[] args) {
  24. SQLConnection.getConnection();
  25. }
  26. }

teacher表:

 student表:

register表:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/808117
推荐阅读
相关标签
  

闽ICP备14008679号