0


JAVA实训项目之学生管理系统(JDBC+GUI)

本系统设计采用的是Java作为设计语言,MySQL作为数据库,简单来说整个系统涉及到Swing界面的开发、以及对于数据库的一些操作,查询、增加、删除等,通过上述的操作来完成相应的学生管理系统的基本功能。

因为时间和精力的原因(该项目完全由博主一人独立完成),外观巨丑无比,但功能都实现了。因为篇幅太长,总共有25个类,大概2600-2700行代码,所以博主分了两篇文章来写,本文写的是学生功能。

这是博主大一期末时候的实训项目,做的相当相当的简陋不喜勿喷。此外,可以借鉴其中功能实现的过程以及思路,但不建议抄袭哦。

本文运用到的主要技术为:

GUI:java实现窗体、Swing。其实JAVA Swing的GUI目前企业中已经不用了,主要是一些学校和培训机构用来教导学生写一些游戏、小项目,练练手的

JDBC的全称是JAVA数据库连接(Java Database Connectivity)。它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系型数据库,并使用SQL语句完成对数据库中数据的新增、删除、修改和查询等操作。

实现的功能有:

用户登录功能

1、可以选择学生或者教师身份登录

学生****功能

1、修改密码

2、查询成绩

3、查询学籍信息

4、查看课程信息

5、退出系统

教师****功能

1、添加用户

2、删除用户

3、修改密码

4、退出系统

5、添加成绩信息

6、删除成绩信息

7、修改成绩信息

8、查询成绩信息

9、添加学籍信息

10、删除学籍信息

11、修改学籍信息

12、查询学籍信息

13、添加课程信息

14、删除课程信息

15、修改课程信息

16、查询课程信息

功能演示:

涉及到的数据库表以及数据:

学生功能实现代码:

登录页面:

用GUI写出窗体和相关内容,通过JDBC连接数据库。然后通过获取的学生身份或者教师身份,遍历数据库中对应的表中是否有该账号,从而完成登录,并将其转到对应的身份所拥有的所有功能页面。

  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import java.sql.*;
  5. public class 登录功能 {
  6. public static void main(String[] args) {
  7. new dl();
  8. }
  9. }
  10. class dl {
  11. public static String xh;//定义一个参数记录登录的账户
  12. public void dl(){
  13. }
  14. public static String getXh() {
  15. return xh;
  16. }
  17. public static void setXh(String xh) {
  18. dl.xh = xh;
  19. }
  20. JFrame jf;
  21. JLabel l1,l2,l3;
  22. JTextField f1;
  23. JPasswordField f2;
  24. JButton jb1,jb2;
  25. JCheckBox jc;
  26. String data;//存储学生或教师身份的选择
  27. public dl() {
  28. jf = new JFrame("系统登录窗口");
  29. jf.setSize(320,400);
  30. jf.setLocationRelativeTo(null);//设置窗口每次启动都显示在屏幕正中央
  31. jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  32. jf.setLayout(null);
  33. Font font = new Font("仿宋", Font.BOLD, 20);//设置统一的字体,让代码更加整洁美观
  34. JComboBox<String> jcb=new JComboBox<>();
  35. jcb.addItem("身份");
  36. jcb.addItem("学生");
  37. jcb.addItem("教师");
  38. JTextField textField=new JTextField(20);
  39. jcb.setBounds(10,55,90,25);
  40. jcb.setFont(font);
  41. //为JComboBox下拉框组件注册动作监听器
  42. jcb.addActionListener(e -> {
  43. data=(String)jcb.getSelectedItem();
  44. });
  45. l3 = new JLabel("欢迎来到学生管理系统");
  46. l3.setBounds(55,10,500,40);
  47. l3.setFont(font);
  48. l1 = new JLabel("账 号:");
  49. l1.setBounds(10,100,100,40);
  50. l1.setFont(font);
  51. f1 = new JTextField(null,20);
  52. f1.setBounds(90,107,180,30);
  53. f1.setFont(font);
  54. l2 = new JLabel("密 码:");
  55. l2.setBounds(8,145,100,40);
  56. l2.setFont(font);
  57. f2=new JPasswordField(null,20);
  58. f2.setBounds(90,150,180,30);
  59. f2.setEchoChar('*');//设置密码的外显为*
  60. f2.setFont(font);
  61. jc=new JCheckBox("显示密码");
  62. jc.setBounds(230,250,80,40);
  63. jc.addItemListener(new ItemListener() {
  64. public void itemStateChanged(ItemEvent e) {
  65. if (e.getStateChange() == ItemEvent.SELECTED) {//被选中
  66. f2.setEchoChar((char) 0);
  67. } else {
  68. f2.setEchoChar('*');
  69. }
  70. }
  71. });
  72. ActionListener listener=new AbstractAction() {
  73. @Override
  74. public void actionPerformed(ActionEvent e) {
  75. }
  76. };
  77. jc.addActionListener(listener);
  78. jb1 = new JButton("登录");
  79. jb1.setBounds(30,200,80,40);
  80. //匿名内部类
  81. jb1.addMouseListener(new MouseAdapter() {
  82. public void mouseClicked(MouseEvent e) {
  83. Statement st=null;
  84. Connection con=null;
  85. ResultSet rs=null;
  86. try {
  87. //注册驱动
  88. Class.forName("com.mysql.cj.jdbc.Driver");
  89. //这里的3306/后跟的是数据库名
  90. //获取数据库连接
  91. String url="jdbc:mysql://localhost:3306/students?serverTimezone=GMT%2B8";
  92. //通过DriverManager完成注册
  93. con= DriverManager.getConnection(url,"root","20031112");
  94. //执行SQL语句
  95. String sql="select * from dl";//from 后跟表名
  96. st=con.createStatement();
  97. rs=st.executeQuery(sql);
  98. boolean flag=false;
  99. while(rs.next()){
  100. //如果输入的用户名和密码与数据库中的用户和对应的密码相同,则弹出“登录成功!”的窗口
  101. if(f1.getText().equals(rs.getString(1))&&f2.getText().equals(rs.getString(2))
  102. &&data.equals("学生")){//学生账户登录,转到学生能够拥有的功能的页面上
  103. JOptionPane.showMessageDialog(null, "登录成功!");
  104. dl.setXh(f1.getText());
  105. new student();
  106. flag=true;//登陆成功后将标记改为true方便确认
  107. jf.dispose();//关闭窗体,释放所有资源
  108. break;
  109. }
  110. if(f1.getText().equals(rs.getString(1))&&f2.getText().equals(rs.getString(2))
  111. &&data.equals("教师")){//教师账户登录,转到教师能够拥有的功能的页面上
  112. JOptionPane.showMessageDialog(null, "登录成功!");
  113. xh=f1.getText();
  114. new teacher();
  115. flag=true;//登陆成功后将标记改为true方便确认
  116. jf.dispose();//关闭窗体,释放所有资源
  117. break;
  118. }
  119. }
  120. if(flag==false){//如果标记为false,则表示用户名和密码在数据库中未找到,弹出“登录失败!请重新输入!”的窗口
  121. JOptionPane.showMessageDialog(null, "登录失败!请重新输入!");
  122. f1.setText(null);//清空账号栏
  123. f2.setText(null);//清空密码栏
  124. }
  125. } catch (ClassNotFoundException ex) {
  126. ex.printStackTrace();
  127. } catch (SQLException ex) {
  128. ex.printStackTrace();
  129. }
  130. }
  131. });
  132. jb1.setFont(font);
  133. jb2 = new JButton("退出");
  134. jb2.setBounds(150,200,80,40);
  135. //匿名内部类
  136. jb2.addMouseListener(new MouseAdapter() {
  137. //重写鼠标点击事件
  138. public void mouseClicked(MouseEvent e) {//如果点击了退出按钮,则弹出“退出成功!”的窗口
  139. JOptionPane.showMessageDialog(null, "退出成功!");
  140. //系统退出
  141. System.exit(0);
  142. }
  143. });
  144. jb2.setFont(font);
  145. //将这些按钮和文本等加入到窗体中
  146. jf.add(l1);
  147. jf.add(f1);
  148. jf.add(l2);
  149. jf.add(f2);
  150. jf.add(l3);
  151. jf.add(jb1);
  152. jf.add(jb2);
  153. jf.add(jc);
  154. jf.add(jcb);
  155. jf.setVisible(true);//让组件显示
  156. }
  157. }

学生主页面:

通过GUI实现窗体创建和相关内容填充,通过对相关按钮绑定监听事件,从而达到点击按钮转换到相关功能页面。

  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.MouseAdapter;
  4. import java.awt.event.MouseEvent;
  5. public class 学生页面 {
  6. public static void main(String[] args) {
  7. new student();
  8. }
  9. }
  10. class student{
  11. JFrame jf;
  12. JLabel l1;
  13. JButton jb1, jb2,jb3,jb4,jb5,jb6;
  14. public student() {
  15. jf = new JFrame("学生管理系统");
  16. jf.setSize(260, 400);//设置窗体大小
  17. jf.setLocationRelativeTo(null);//设置窗口每次启动都显示在屏幕正中央
  18. jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  19. jf.setLayout(null);
  20. Font font = new Font("仿宋", Font.BOLD, 20);//设置统一的字体,让代码更加整洁美观
  21. l1 = new JLabel("请选择你需要进行的操作");
  22. l1.setBounds(10,10,500,40);
  23. l1.setFont(font);
  24. jb1 = new JButton("系统管理");
  25. jb1.setBounds(45, 50, 150, 30);
  26. jb1.setFont(font);
  27. //匿名内部类
  28. jb1.addMouseListener(new MouseAdapter() {
  29. public void mouseClicked(MouseEvent e) {
  30. //跳转到学生的系统管理页面
  31. new sxt();
  32. jf.dispose();//关闭窗体,释放所有资源
  33. }
  34. });
  35. jb2=new JButton("成绩管理");
  36. jb2.setBounds(45,100,150,30);
  37. jb2.setFont(font);
  38. jb2.addMouseListener(new MouseAdapter() {
  39. @Override
  40. public void mouseClicked(MouseEvent e) {
  41. //跳转到学生的成绩管理页面
  42. new scj();
  43. jf.dispose();//关闭窗体,释放所有资源
  44. }
  45. });
  46. jb3=new JButton("学籍管理");
  47. jb3.setBounds(45,150,150,30);
  48. jb3.setFont(font);
  49. jb3.addMouseListener(new MouseAdapter() {
  50. @Override
  51. public void mouseClicked(MouseEvent e) {
  52. //跳转到学生的学籍管理页面
  53. new sxj();
  54. jf.dispose();//关闭窗体,释放所有资源
  55. }
  56. });
  57. jb4=new JButton("课程管理");
  58. jb4.setBounds(45,200,150,30);
  59. jb4.setFont(font);
  60. jb4.addMouseListener(new MouseAdapter() {
  61. @Override
  62. public void mouseClicked(MouseEvent e) {
  63. new skc();
  64. jf.dispose();//关闭窗体,释放所有资源
  65. }
  66. });
  67. jb5=new JButton("返回");
  68. jb5.setBounds(17,250,80,30);
  69. jb5.setFont(font);
  70. jb5.addMouseListener(new MouseAdapter() {
  71. @Override
  72. public void mouseClicked(MouseEvent e) {
  73. new dl();
  74. jf.dispose();//关闭窗体,释放所有资源
  75. }
  76. });
  77. jb6 = new JButton("退出");
  78. jb6.setBounds(150, 250, 80, 30);
  79. //匿名内部类
  80. jb6.addMouseListener(new MouseAdapter() {
  81. public void mouseClicked(MouseEvent e) {
  82. JOptionPane.showMessageDialog(null, "退出成功!");
  83. //系统退出
  84. System.exit(0);
  85. }
  86. });
  87. jb6.setFont(font);
  88. //将这些按钮和文本等加入到窗体中
  89. jf.add(l1);
  90. jf.add(jb1);
  91. jf.add(jb2);
  92. jf.add(jb3);
  93. jf.add(jb4);
  94. jf.add(jb5);
  95. jf.add(jb6);
  96. jf.setVisible(true);//让组件显示
  97. }
  98. }

系统管理:

通过获取登录时输入的账号来确定操作的对象,通过JDBC遍历对应的表找到账号,然后对其进行修改密码操作。

  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.ItemEvent;
  4. import java.awt.event.ItemListener;
  5. import java.awt.event.MouseAdapter;
  6. import java.awt.event.MouseEvent;
  7. import java.sql.*;
  8. public class 学生系统管理 {
  9. public static void main(String[] args) {
  10. new sxt();
  11. }
  12. }
  13. class sxt {
  14. JFrame jf;
  15. JLabel l1,l2;
  16. JPasswordField f1,f2;
  17. JButton jb1,jb2,jb3;
  18. JCheckBox jc;
  19. public sxt() {
  20. jf = new JFrame("系统管理");
  21. jf.setSize(320,280);//设置窗体大小
  22. jf.setLocationRelativeTo(null);//设置窗口每次启动都显示在屏幕正中央
  23. jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  24. jf.setLayout(null);
  25. Font font = new Font("仿宋", Font.BOLD, 20);//设置统一的字体,让代码更加整洁美观
  26. l1 = new JLabel("新密码:");
  27. l1.setBounds(10, 10, 130, 40);
  28. l1.setFont(font);
  29. f1 = new JPasswordField(null, 20);
  30. f1.setBounds(90, 15, 180, 30);
  31. f1.setEchoChar('*');//设置密码的外显为*
  32. f1.setFont(font);
  33. l2 = new JLabel("确认密码:");
  34. l2.setBounds(8, 50, 130, 40);
  35. l2.setFont(font);
  36. f2 = new JPasswordField(null, 20);
  37. f2.setBounds(110, 55, 160, 30);
  38. f2.setEchoChar('*');//设置密码的外显为*
  39. f2.setFont(font);
  40. jc=new JCheckBox("显示密码");//创建一个复选按钮
  41. jc.setBounds(230,110,80,40);
  42. jc.addItemListener(new ItemListener() {
  43. public void itemStateChanged(ItemEvent e) {
  44. if (e.getStateChange() == ItemEvent.SELECTED) {//被选中
  45. f2.setEchoChar((char) 0);//显示原本的数据
  46. f1.setEchoChar((char)0);//显示原本的数据
  47. } else {
  48. f2.setEchoChar('*');//设置密码的外显为*
  49. f1.setEchoChar('*');//设置密码的外显为*
  50. }
  51. }
  52. });
  53. jb1 = new JButton("修改密码");
  54. jb1.setBounds(20, 100, 120, 30);
  55. //匿名内部类
  56. jb1.addMouseListener(new MouseAdapter() {
  57. public void mouseClicked(MouseEvent e) {
  58. PreparedStatement ps = null;//PreparedStatement==>表示预编译的SQL语句的对象。
  59. // SQL语句已预编译并存储在PreparedStatement对象中。
  60. Connection con = null;//Connection==>与特定数据库的连接
  61. Statement st=null;
  62. ResultSet rs=null;
  63. try {
  64. //注册驱动
  65. Class.forName("com.mysql.cj.jdbc.Driver");
  66. //这里的3306/后跟的是数据库名
  67. //获取数据库连接
  68. String url = "jdbc:mysql://localhost:3306/students?serverTimezone=GMT%2B8";
  69. //通过DriverManager完成注册
  70. con = DriverManager.getConnection(url, "root", "20031112");
  71. //执行SQL语句
  72. String sql = "update dl set password=? where studentnumber=?";
  73. ps = con.prepareStatement(sql);
  74. String sql2 = "select * from dl";
  75. st=con.createStatement();
  76. rs=st.executeQuery(sql2);
  77. while (rs.next()) {
  78. if (rs.getString("studentnumber").equals(dl.getXh())) {//根据登录时的账户找到相应的人
  79. if (f1.getText().length() != 0) {
  80. //注:这里的所有getText()都不能写成!=null
  81. ps.setString(1, f1.getText());
  82. ps.setString(2,rs.getString("studentnumber"));
  83. } else {
  84. JOptionPane.showMessageDialog(null, "新密码不能为空!");//弹出窗口
  85. }
  86. }
  87. }
  88. if (new String(f1.getPassword()).equals(new String(f2.getPassword()))
  89. &&f1.getText().length()!=0) {//如果新密码与确认密码一致,并且新密码不为空
  90. JOptionPane.showMessageDialog(null, "修改成功!");
  91. try {
  92. int i = ps.executeUpdate();//将数据存储到数据库中
  93. } catch (SQLException ex) {
  94. ex.printStackTrace();
  95. }
  96. //修改成功后跳转到学生页面
  97. new student();
  98. jf.dispose();//关闭窗体,释放所有资源
  99. } else {
  100. JOptionPane.showMessageDialog(null, "修改失败!新密码与确认密码不一致!");
  101. f1.setText(null);//清空新密码
  102. f2.setText(null);//清空确认密码
  103. }
  104. } catch (ClassNotFoundException ex) {
  105. ex.printStackTrace();
  106. } catch (SQLException ex) {
  107. ex.printStackTrace();
  108. }
  109. }
  110. });
  111. jb1.setFont(font);
  112. jb2 = new JButton("退出");
  113. jb2.setBounds(170, 150, 80, 40);
  114. jb2.addMouseListener(new MouseAdapter() {
  115. public void mouseClicked(MouseEvent e) {
  116. JOptionPane.showMessageDialog(null, "退出成功!");
  117. //系统退出
  118. System.exit(0);
  119. }
  120. });
  121. jb3=new JButton("上一步");
  122. jb3.setBounds(30,150,100,40);
  123. jb3.setFont(font);
  124. jb3.addMouseListener(new MouseAdapter() {
  125. @Override
  126. public void mouseClicked(MouseEvent e) {
  127. new student();
  128. jf.dispose();//关闭窗体,释放所有资源
  129. }
  130. });
  131. jb2.setFont(font);
  132. //将这些按钮和文本等加入到窗体中
  133. jf.add(l1);
  134. jf.add(f1);
  135. jf.add(l2);
  136. jf.add(f2);
  137. jf.add(jc);
  138. jf.add(jb1);
  139. jf.add(jb2);
  140. jf.add(jb3);
  141. jf.setVisible(true);//让组件显示
  142. }
  143. }

成绩管理:

通过获取登录时输入的账号来确定操作的对象,然后通过JDBC连接数据库,获取用户输入的课程名遍历对应的表,查询该用户课程的成绩。

  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.MouseAdapter;
  4. import java.awt.event.MouseEvent;
  5. import java.sql.*;
  6. public class 学生成绩管理 {
  7. public static void main(String[] args) {
  8. new scj();
  9. }
  10. }
  11. class scj {
  12. JLabel l1;
  13. //文本域
  14. private JTextArea jta;
  15. //滚动条
  16. private JScrollPane jsp;
  17. //面板
  18. private JPanel jp;
  19. //文本框
  20. private JTextField jtf;
  21. //按钮
  22. private JButton jb,jb2;
  23. //窗体
  24. JFrame jf;
  25. public scj(){
  26. //初始化组件
  27. jta=new JTextArea();
  28. jf = new JFrame("成绩管理");
  29. //将文本域添加到滚动条中,实现滚动效果
  30. jsp=new JScrollPane(jta);
  31. //面板
  32. jp=new JPanel();
  33. l1 = new JLabel("课程名:");
  34. jtf=new JTextField(10);
  35. jb=new JButton("查询");
  36. //将文本框和按钮添加到面板中
  37. jb2=new JButton("返回");
  38. jb2.addMouseListener(new MouseAdapter() {
  39. @Override
  40. public void mouseClicked(MouseEvent e) {
  41. new student();
  42. jf.dispose();//关闭窗体,释放所有资源
  43. }
  44. });
  45. jp.add(l1);
  46. jp.add(jtf);
  47. jp.add(jb);
  48. jp.add(jb2);
  49. //将滚动条和面板都添加到窗体中
  50. jf.add(jsp, BorderLayout.CENTER);
  51. jf.add(jp,BorderLayout.SOUTH);
  52. jf.setSize(400,400);
  53. jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  54. jf.setLocationRelativeTo(null);
  55. jf.setVisible(true);//设置组件显示
  56. //给查询按钮绑定一个监听点击事件
  57. jb.addMouseListener(new MouseAdapter() {
  58. @Override
  59. public void mouseClicked(MouseEvent e) {
  60. Statement st=null;
  61. Connection con=null;
  62. ResultSet rs=null;
  63. try {
  64. //注册驱动
  65. Class.forName("com.mysql.cj.jdbc.Driver");
  66. //这里的3306/后跟的是数据库名
  67. //获取数据库连接
  68. String url = "jdbc:mysql://localhost:3306/students?serverTimezone=GMT%2B8";
  69. //通过DriverManager完成注册
  70. con = DriverManager.getConnection(url, "root", "20031112");
  71. //执行SQL语句
  72. String sql = "select * from chengji";
  73. st=con.createStatement();
  74. rs=st.executeQuery(sql);
  75. String text;
  76. while (rs.next()){
  77. if(rs.getString("course").equals(jtf.getText())&&rs.getString("studentnumber").equals(dl.getXh())) {
  78. text ="课程名:"+rs.getString("course")+"\n"+"成绩:"+rs.getString("cj");
  79. if(jta.getText().length()!=0) {//如果文本域中有数据,则先清空再显示出所查询的数据
  80. jta.setText(null);
  81. jta.append(text);
  82. }else {//如果文本域中没有数据,则直接显示所查询的数据
  83. jta.append(text);
  84. }
  85. }
  86. }
  87. } catch (ClassNotFoundException ex) {
  88. ex.printStackTrace();
  89. } catch (SQLException ex) {
  90. ex.printStackTrace();
  91. }
  92. }
  93. });
  94. }
  95. }

学籍管理:

通过获取登录时输入的账号来确定操作的对象,然后通过JDBC连接数据库,在用户点击查询时,遍历对应的表,查询用户的学籍信息。

  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.MouseAdapter;
  5. import java.awt.event.MouseEvent;
  6. import java.sql.*;
  7. public class 学生学籍管理 {
  8. public static void main(String[] args) {
  9. new sxj();
  10. }
  11. }
  12. class sxj {
  13. //文本域
  14. private JTextArea jta;
  15. //滚动条
  16. private JScrollPane jsp;
  17. //面板
  18. private JPanel jp;
  19. //按钮
  20. private JButton jb,jb2;
  21. //窗体
  22. JFrame jf;
  23. public sxj(){
  24. //初始化组件
  25. jta=new JTextArea();
  26. jf = new JFrame("学籍管理");
  27. //将文本域添加到滚动条中,实现滚动效果
  28. jsp=new JScrollPane(jta);
  29. //面板
  30. jp=new JPanel();
  31. jb=new JButton("查询");
  32. //将文本框和按钮添加到面板中
  33. jb2=new JButton("返回");
  34. jb2.addMouseListener(new MouseAdapter() {
  35. @Override
  36. public void mouseClicked(MouseEvent e) {
  37. new student();
  38. jf.dispose();//关闭窗体,释放所有资源
  39. }
  40. });
  41. jp.add(jb);
  42. jp.add(jb2);
  43. //将滚动条和面板都添加到窗体中
  44. jf.add(jsp, BorderLayout.CENTER);
  45. jf.add(jp,BorderLayout.SOUTH);
  46. jf.setSize(400,300);
  47. jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  48. jf.setLocationRelativeTo(null);
  49. jf.setVisible(true);//设置组件显示
  50. //给查询按钮绑定一个监听点击事件
  51. jb.addActionListener(new AbstractAction() {
  52. @Override
  53. public void actionPerformed(ActionEvent e) {
  54. Statement st=null;
  55. Connection con=null;
  56. ResultSet rs=null;
  57. try {
  58. //注册驱动
  59. Class.forName("com.mysql.cj.jdbc.Driver");
  60. //这里的3306/后跟的是数据库名
  61. //获取数据库连接
  62. String url = "jdbc:mysql://localhost:3306/students?serverTimezone=GMT%2B8";
  63. //通过DriverManager完成注册
  64. con = DriverManager.getConnection(url, "root", "20031112");
  65. //执行SQL语句
  66. String sql = "select * from student_status";
  67. st=con.createStatement();
  68. rs=st.executeQuery(sql);
  69. String text;
  70. while (rs.next()){
  71. if(rs.getString("studentnumber").equals(dl.getXh())) {
  72. text = "班级:"+rs.getString(1) + "\n" +"学号:"+ rs.getString(2) + "\n" +"姓名:"+ rs.getString(3) +
  73. "\n" +"性别:"+ rs.getString(4) + "\n" +"出生年月:"+ rs.getString(5);
  74. jta.append(text);
  75. }
  76. }
  77. } catch (ClassNotFoundException ex) {
  78. ex.printStackTrace();
  79. } catch (SQLException ex) {
  80. ex.printStackTrace();
  81. }
  82. }
  83. });
  84. }
  85. }

课程管理:

通过获取登录时输入的账号来确定操作的对象,然后通过JDBC连接数据库,在用户点击查询时,遍历对应的表,查询用户所有的课程信息。

  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.MouseAdapter;
  5. import java.awt.event.MouseEvent;
  6. import java.sql.*;
  7. public class 课程管理 {
  8. public static void main(String[] args) {
  9. new skc();
  10. }
  11. }
  12. class skc{
  13. //文本域
  14. private JTextArea jta;
  15. //滚动条
  16. private JScrollPane jsp;
  17. //面板
  18. private JPanel jp;
  19. //按钮
  20. private JButton jb,jb2;
  21. //窗体
  22. JFrame jf;
  23. public skc(){
  24. //初始化组件
  25. jta=new JTextArea();
  26. jf = new JFrame("课程管理");
  27. //将文本域添加到滚动条中,实现滚动效果
  28. jsp=new JScrollPane(jta);
  29. //面板
  30. jp=new JPanel();
  31. jb=new JButton("查询");
  32. //将文本框和按钮添加到面板中
  33. jb2=new JButton("返回");
  34. jb2.addMouseListener(new MouseAdapter() {
  35. @Override
  36. public void mouseClicked(MouseEvent e) {
  37. new student();
  38. jf.dispose();//关闭窗体,释放所有资源
  39. }
  40. });
  41. jp.add(jb);
  42. jp.add(jb2);
  43. //将滚动条和面板都添加到窗体中
  44. jf.add(jsp, BorderLayout.CENTER);
  45. jf.add(jp,BorderLayout.SOUTH);
  46. jf.setSize(400,300);
  47. jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  48. jf.setLocationRelativeTo(null);
  49. jf.setVisible(true);//设置组件显示
  50. //给查询按钮绑定一个监听点击事件
  51. jb.addActionListener(new AbstractAction() {
  52. @Override
  53. public void actionPerformed(ActionEvent e) {
  54. Statement st=null;
  55. Connection con=null;
  56. ResultSet rs=null;
  57. try {
  58. //注册驱动
  59. Class.forName("com.mysql.cj.jdbc.Driver");
  60. //这里的3306/后跟的是数据库名
  61. //获取数据库连接
  62. String url = "jdbc:mysql://localhost:3306/students?serverTimezone=GMT%2B8";
  63. //通过DriverManager完成注册
  64. con = DriverManager.getConnection(url, "root", "20031112");
  65. //执行SQL语句
  66. String sql = "select * from kecheng";
  67. st=con.createStatement();
  68. rs=st.executeQuery(sql);
  69. String text;
  70. while (rs.next()){
  71. text = "课程名:"+rs.getString(1)+"\n"+"学分:"+rs.getString(2)+"\n";
  72. jta.append(text);
  73. }
  74. } catch (ClassNotFoundException ex) {
  75. ex.printStackTrace();
  76. } catch (SQLException ex) {
  77. ex.printStackTrace();
  78. }
  79. }
  80. });
  81. }
  82. }

缺陷:外观并不美观。查询页面应用表格的形式显示,不应该用文本域的形式显示。数据库表与表之间并无关联。


本文转载自: https://blog.csdn.net/qq_62731133/article/details/125371568
版权归原作者 遇安.112 所有, 如有侵权,请联系我们删除。

“JAVA实训项目之学生管理系统(JDBC+GUI)”的评论:

还没有评论