文章目录

  • 项目目标
  • 项目截图展示
  • 项目Java源程序
  • 项目数据库文件信息
  • 项目结构图设计
    • 系统功能结构图:
    • 软件架构设计

项目目标

    这篇文章是Java语言得课程设计大作业记录。
    项目由Java和Mysql实现。
    本片文章包含完整的源程序代码和结构图。
    实现对学生信息的增、删、改、查功能。

欢迎大家关注我的公众号【软件大爆炸

项目截图展示

  • 软件初始界面
  • 查询界面(按照姓名查找)
  • 添加学生信息界面

    修改删除界面

项目Java源程序

    各个源文件的名字在第一行的注释信息中给出,注意自己在保存的时候使用正确的命明,否则可能找不到包的位置或者类的位置。
    另外需要注意的是我使用的是数据库Mysql8版本的,一般学生可能使用的Mysql5版本的人比较多。两个版本在连接数据库时使用的语法是不同的具体应使用什么连接语句在像相应的代码位置处已给出,根据自身环境修改以下即可。
    还有一个需要修改的地方就是连接数据库时采用的账号和密码。一般账号是root,密码是你自己设置的,需要在代码中修改,否则是连接不上的。

//filename :Test3.java  这个是主程序
//package SchoolProject.src;
import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;public class Test3 extends JFrame implements ActionListener {// 定义一些控件JPanel jp1, jp2;JLabel jl1, jl2;JButton jb1, jb2, jb3, jb4;JTable jt;JScrollPane jsp;JTextField jtf;StuModel sm;// 定义连接数据库的变量Statement stat = null;PreparedStatement ps;Connection ct = null;ResultSet rs = null;public static void main(String[] args) {Test3 test3 = new Test3();}// 构造函数public Test3() {jp1 = new JPanel();jtf = new JTextField(10);jb1 = new JButton("查询");jb1.addActionListener(this);jl1 = new JLabel("请输入名字:");jp1.add(jl1);jp1.add(jtf);jp1.add(jb1);jb2 = new JButton("添加");jb2.addActionListener(this);jb3 = new JButton("修改");jb3.addActionListener(this);jb4 = new JButton("删除");jb4.addActionListener(this);jp2 = new JPanel();jp2.add(jb2);jp2.add(jb3);jp2.add(jb4);// 创建模型对象sm = new StuModel();// 初始化jt = new JTable(sm);jsp = new JScrollPane(jt);// 将jsp放入到jframe中this.add(jsp);this.add(jp1, "North");this.add(jp2, "South");this.setSize(600, 400);// this.setLocation(300, 200);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}public void actionPerformed(ActionEvent arg0) {// 判断是哪个按钮被点击if (arg0.getSource() == jb1) {System.out.println("用户希望被查询...");// 因为把对表的数据封装到StuModel中,可以比较简单的完成查询String name = this.jtf.getText().trim();// 写一个sql语句String sql = "select * from stu where stuName = '" + name + "' ";// 构建一个数据模型类,并更新sm = new StuModel(sql);// 更新jtablejt.setModel(sm);}// 一、弹出添加界面else if (arg0.getSource() == jb2) {System.out.println("添加...");StuAddDiag sa = new StuAddDiag(this, "添加学生", true);// 重新再获得新的数据模型,sm = new StuModel();jt.setModel(sm);} else if (arg0.getSource() == jb4) {// 二、删除记录// 1.得到学生的IDint rowNum = this.jt.getSelectedRow();// getSelectedRow会返回给用户点中的行// 如果该用户一行都没有选,就返回-1if (rowNum == -1) {// 提示JOptionPane.showMessageDialog(this, "请选中一行");return;}// 得到学术IDString stuId = (String) sm.getValueAt(rowNum, 0);System.out.println("Id: " + stuId);// 连接数据库,完成删除任务try {// 1.加载驱动
//              Class.forName("com.mysql.jdbc.Driver");Class.forName("com.mysql.cj.jdbc.Driver");// 2.连接数据库String url = "jdbc:mysql://localhost:3306/stuinfo?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC";String user = "root";String passwd = "1234";ct = DriverManager.getConnection(url, user, passwd);System.out.println("连接成功");ps = ct.prepareStatement("delete from stu where stuId = ?");ps.setString(1, stuId);ps.executeUpdate();} catch (Exception e) {e.printStackTrace();} finally {try {if (rs != null) {rs.close();rs = null;}if (ps != null) {ps.close();ps = null;}if (ct != null) {ct.close();ct = null;}} catch (Exception e) {e.printStackTrace();}}sm = new StuModel();// 更新jtablejt.setModel(sm);} else if (arg0.getSource() == jb3) {System.out.println("11111");// 三、用户希望修改int rowNum = this.jt.getSelectedRow();if (rowNum == -1) {// 提示JOptionPane.showMessageDialog(this, "请选择一行");return;}// 显示对话框System.out.println("12435");StuUpDiag su = new StuUpDiag(this, "修改学号", true, sm, rowNum);sm = new StuModel();jt.setModel(sm);}}
}
//filename: StuUpDiag.java
//package SchoolProject.src;/** 修改学生*/
import javax.swing.JDialog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.*;public class StuUpDiag extends JDialog implements ActionListener {// 定义我需要的swing组件JLabel jl1, jl2, jl3, jl4, jl5, jl6;JTextField jf1, jf2, jf3, jf4, jf5, jf6;JPanel jp1, jp2, jp3;JButton jb1, jb2;// owner代笔父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口public StuUpDiag(Frame owner, String title, boolean modal, StuModel sm, int rowNum) {// 调用父类方法super(owner, title, modal);jl1 = new JLabel("学号");jl2 = new JLabel("名字");jl3 = new JLabel("性别");jl4 = new JLabel("年龄");jl5 = new JLabel("专业");jl6 = new JLabel("院系");jf1 = new JTextField(10);jf1.setText((sm.getValueAt(rowNum, 0)).toString());jf2 = new JTextField(10);jf2.setText((String) sm.getValueAt(rowNum, 1));jf3 = new JTextField(10);jf3.setText(sm.getValueAt(rowNum, 2).toString());jf4 = new JTextField(10);jf4.setText((sm.getValueAt(rowNum, 3)).toString());jf5 = new JTextField(10);jf5.setText((String) sm.getValueAt(rowNum, 4));jf6 = new JTextField(10);jf6.setText((String) sm.getValueAt(rowNum, 5));jb1 = new JButton("修改");jb1.addActionListener(this);jb2 = new JButton("取消");jp1 = new JPanel();jp2 = new JPanel();jp3 = new JPanel();// 设置布局jp1.setLayout(new GridLayout(6, 1));jp2.setLayout(new GridLayout(6, 1));jp3.add(jb1);jp3.add(jb2);jp1.add(jl1);jp1.add(jl2);jp1.add(jl3);jp1.add(jl4);jp1.add(jl5);jp1.add(jl6);jp2.add(jf1);jp2.add(jf2);jp2.add(jf3);jp2.add(jf4);jp2.add(jf5);jp2.add(jf6);this.add(jp1, BorderLayout.WEST);this.add(jp2, BorderLayout.CENTER);this.add(jp3, BorderLayout.SOUTH);this.setSize(300, 200);this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (e.getSource() == jb1) {Connection ct = null;PreparedStatement pstmt = null;ResultSet rs = null;try {// 1.加载驱动Class.forName("com.mysql.cj.jdbc.Driver");System.out.println("加载成功");// 2.连接数据库// 定义几个常量String url = "jdbc:mysql://localhost:3306/stuinfo?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC";String user = "root";String passwd = "1234";ct = DriverManager.getConnection(url, user, passwd);// 与编译语句对象String strsql = "insert into stu values(?,?,?,?,?,?)";pstmt = ct.prepareStatement(strsql);// 给对象赋值pstmt.setString(1, jf1.getText());pstmt.setString(2, jf2.getText());pstmt.setString(3, jf3.getText());pstmt.setString(4, jf4.getText());pstmt.setString(5, jf5.getText());pstmt.setString(6, jf6.getText());pstmt.executeUpdate();this.dispose();// 关闭学生对话框} catch (Exception arg1) {arg1.printStackTrace();} finally {try {if (rs != null) {rs.close();rs = null;}if (pstmt != null) {pstmt.close();pstmt = null;}if (ct != null) {ct.close();ct = null;}} catch (Exception arg2) {arg2.printStackTrace();}}}}}
//filename:StuModel.java
//package SchoolProject.src;// 导入数据库相关包
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
// 导入向量包
import java.util.Vector;
// 导入Java界面组件
import javax.swing.table.*;public class StuModel extends AbstractTableModel {// 继承TableModel抽象类,实现学生模型
// 在rowData中存放行数据,在columnNames存放列名Vector rowData, columnNames;// 定义连接数据库的变量// 进行初始化,置为空Statement stat = null;Connection ct = null;ResultSet rs = null;// 初始化public void init(String sql) {if (sql.equals("")) {// 初始化时显示所有的存放在数据库中的数据sql = "select * from stu";}// 中间部分// 设置列名columnNames = new Vector();//创建向量columnNames.add("学号");columnNames.add("名字");columnNames.add("性别");columnNames.add("年龄");columnNames.add("专业");columnNames.add("院系");// rowData存放多行rowData = new Vector();try {// 1.加载驱动// 8版本MySQL使用的是"com.mysql.cj.jdbc.Driver",5版本使用的是"com.mysql.jdbc.Driver".Class.forName("com.mysql.cj.jdbc.Driver");System.out.println("加载成功");//控制台提示// 2.连接数据库// 定义几个常量// 8版本需要加"?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC"// 其中需要设置nullCatalogMeansCurrent=true,出现这种问题的原因是mysql版本问题,mysql8.xxx以上驱动会出现这个问题,下图是我原mysql配置,是8.0.16的。// 一开始因为使用的版本不一致导致总是连接不成功。后来驱动版本与数据库版本都统一之后连接成功。String url = "jdbc:mysql://localhost:3306/stuinfo?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC";String user = "root";  // 账号String passwd = "1234";  // 密码ct = DriverManager.getConnection(url, user, passwd);  // connectionstat = ct.createStatement(); // 创建stat对象,prepare statementrs = stat.executeQuery(sql); // 查询结果while (rs.next()) {Vector hang = new Vector();hang.add(rs.getString(1));hang.add(rs.getString(2));hang.add(rs.getString(3));hang.add(rs.getInt(4));hang.add(rs.getString(5));hang.add(rs.getString(6));// 加入到rowData中rowData.add(hang);}} catch (Exception e) {// 捕获异常e.printStackTrace();} finally {try {if (rs != null) {rs.close();rs = null;}if (stat != null) {stat.close();stat = null;}if (ct != null) {ct.close();ct = null;}} catch (Exception e) {e.printStackTrace();}}}// 增加学生函数public void addStu(String sql) {// 根据用户输入的sql语句,完成添加任务}// 构造函数,传递的sql语句获取数据模型public StuModel(String sql) {this.init(sql);}// 构造学生模型,并进行初始化public StuModel() {this.init("");}// 获取行数public int getRowCount() {// TODO Auto-generated method stubreturn this.rowData.size();}// 获取列数public int getColumnCount() {// TODO Auto-generated method stubreturn this.columnNames.size();}// 获取目标行及目标列的数据public Object getValueAt(int row, int column) {// TODO Auto-generated method stubreturn ((Vector) (this.rowData.get(row))).get(column);}// 获取属性字段名字public String getColumnName(int column) {// TODO Auto-generated method stubreturn (String) this.columnNames.get(column);}
}
//filename:StuAddDiag.java
//package SchoolProject.src;
import javax.swing.JDialog;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.*;public class StuAddDiag extends JDialog implements ActionListener {// 定义我需要的swing组件JLabel jl1, jl2, jl3, jl4, jl5, jl6;JTextField jf1, jf2, jf3, jf4, jf5, jf6;JPanel jp1, jp2, jp3;JButton jb1, jb2;// owner代笔父窗口,title是窗口的名字,modal指定是模式窗口()或者非模式窗口public StuAddDiag(Frame owner, String title, boolean modal) {// 调用父类方法super(owner, title, modal);jl1 = new JLabel("学号");jl2 = new JLabel("名字");jl3 = new JLabel("性别");jl4 = new JLabel("年龄");jl5 = new JLabel("专业");jl6 = new JLabel("院系");jf1 = new JTextField(10);jf2 = new JTextField(10);jf3 = new JTextField(10);jf4 = new JTextField(10);jf5 = new JTextField(10);jf6 = new JTextField(10);jb1 = new JButton("添加");jb1.addActionListener(this);jb2 = new JButton("取消");jp1 = new JPanel();jp2 = new JPanel();jp3 = new JPanel();// 设置布局jp1.setLayout(new GridLayout(6, 1));jp2.setLayout(new GridLayout(6, 1));jp3.add(jb1);jp3.add(jb2);jp1.add(jl1);jp1.add(jl2);jp1.add(jl3);jp1.add(jl4);jp1.add(jl5);jp1.add(jl6);jp2.add(jf1);jp2.add(jf2);jp2.add(jf3);jp2.add(jf4);jp2.add(jf5);jp2.add(jf6);this.add(jp1, BorderLayout.WEST);this.add(jp2, BorderLayout.CENTER);this.add(jp3, BorderLayout.SOUTH);this.setSize(300, 200);this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (e.getSource() == jb1) {Connection ct = null;PreparedStatement pstmt = null;ResultSet rs = null;try {// 1.加载驱动// 8版本MySQL使用的是"com.mysql.cj.jdbc.Driver",5版本使用的是"com.mysql.jdbc.Driver".Class.forName("com.mysql.cj.jdbc.Driver");System.out.println("加载成功");// 2.连接数据库// 定义几个常量// 8版本需要加"?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC"// 其中需要设置nullCatalogMeansCurrent=true,出现这种问题的原因是mysql版本问题,mysql8.xxx以上驱动会出现这个问题,下图是我原mysql配置,是8.0.16的。// 一开始因为使用的版本不一致导致总是连接不成功。后来驱动版本与数据库版本都统一之后连接成功。String url = "jdbc:mysql://localhost:3306/stuinfo?useUnicode=true&characterEncoding=utf8&nullCatalogMeansCurrent=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC";String user = "root";String passwd = "1234";ct = DriverManager.getConnection(url, user, passwd);// 插入语句String strsql = "insert into stu values(?,?,?,?,?,?)";pstmt = ct.prepareStatement(strsql);// 给对象赋值pstmt.setString(1, jf1.getText());pstmt.setString(2, jf2.getText());pstmt.setString(3, jf3.getText());pstmt.setString(4, jf4.getText());pstmt.setString(5, jf5.getText());pstmt.setString(6, jf6.getText());pstmt.executeUpdate();this.dispose();// 关闭学生对话框} catch (Exception arg1) {arg1.printStackTrace();} finally {try {if (rs != null) {rs.close();rs = null;}if (pstmt != null) {pstmt.close();pstmt = null;}if (ct != null) {ct.close();ct = null;}} catch (Exception arg2) {arg2.printStackTrace();}}}}}

项目数据库文件信息

注意要将数据库命名为 stu
否则你需要改上面代码中数据库的名字。
下面是各个属性名称的设计以及字段的设计。
这个名字也不能改,否则会造成无法正确读取库中的信息。
(当然也可以改库中的名字,不过你需要同时更改上述源程序中对应的名字。)

项目结构图设计

  • 系统功能结构图:

软件架构设计

    注意专业的应该用Visio画图,当时电脑上没有成功装上Visio,便用了WPS的画图工具,导致上面留有水印。推荐使用Visio再画一遍。

  • 逻辑架构
  • 开发架构
  • 数据架构
  • 运行架构
  • 物理架构

Java课程设计大作业学生管理系统的设计与开发(Java+Mysql)相关推荐

  1. HTML5期末大作业:管理系统网站设计——蓝色OA企业员工管理系统(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源

    HTML5期末大作业:管理系统网站设计--蓝色OA企业员工管理系统(10页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常 ...

  2. HTML5期末大作业:管理系统网站设计——学生信息管理系统模板 (13页) HTML+CSS+JavaScript html网页设计期末大作业_网页设计平时作业

    HTML5期末大作业:管理系统网站设计--学生信息管理系统模板 (13页) HTML+CSS+JavaScript html网页设计期末大作业_网页设计平时作业 常见网页设计作业题材有 个人. 美食. ...

  3. HTML期末大作业: 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计代做

    HTML期末大作业: 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计代做 1.临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大 ...

  4. MySQL数据库大作业——学生管理系统GUI

    MySQL数据库大作业--学生管理系统GUI 原程序链接: https://www.bbsmax.com/A/kmzL3WQBdG/ 为了完成数据库大作业, 我在其基础上进行了一定的修改和扩充. 如果 ...

  5. HTML期末大作业: 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计代做...

    1.临近期末, 你还在为HTML网页设计结课作业,老师的作业要求感到头大?HTML网页作业无从下手? 网页要求的总数量太多? 2.没有合适的模板?等等一系列问题.你想要解决的问题,在这篇博文中基本都能 ...

  6. web期末网站设计大作业:鲜花网站设计——鲜花礼品在线购物网站设计(21页) HTML+CSS+JavaScript web前端课程设计 web前端课程设计代码 web课程设计 HTML网页制作

    HTML5期末大作业:鲜花网站设计--鲜花礼品在线购物网站设计(21页) HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制作成品 常见网页设 ...

  7. 学生管理系统的mysql数据库设计_MySQL数据库--学生管理系统数据库设计

    目录 学生管理系统数据库设计 学生管理系统功能介绍 数据库设计步骤 第1步: 找对象 第2步:找属性 第3步: 找关系 建表原则 第4步: 找特例: 等级明显而且不包含敏感数据的信息建议保持为1张表 ...

  8. 学生管理系统的mysql数据库设计_MySQL 数据库 -- 学生管理系统数据库设计

    MySQL 数据库 -- 学生管理系统数据库设计 目录 学生管理系统数据库设计 学生管理系统功能介绍 数据库设计步骤 第 1 步: 找对象 第 2 步: 找属性 第 3 步: 找关系 建表遵守原则 第 ...

  9. C# 数据库大作业-学生管理系统

    文章目录 C# 学生管理系统 概览 C#代码 1.LoginForm(登录界面) 2.Reg(注册界面) 3.ResetP(重设密码界面) 4.MainForm(主界面,包括了选课和查询界面) 5.P ...

最新文章

  1. 看看你是《老朋友》(青春六人行)里的哪一个
  2. python 通过路径下载文件
  3. Error: vue-loader requires @vue/compiler-sfc to be
  4. C++ _countf
  5. 【Kafka】docker下kafka报错 IOException: Connection to xxx:19093 (id: 1002 rack: null) failed
  6. Linux---主机字节序与网络字节序
  7. 【OGG】OGG简单配置双向复制(三)
  8. 201612-2工资计算
  9. [转] 2018年最新桌面CPU性能排行天梯图(含至强处理器)
  10. win7 虚拟wifi服务器,win7虚拟wifi设置
  11. C语言超级搞笑的代码,冷笑话我们程序员也会讲的啊!
  12. 论文阅读:在Stiefel流形上的黎曼优化
  13. #loj3090 [BJOI2019] 勘破神机
  14. gamemaker 2 如何做一个过场动画的思路
  15. PTA浙大版《C语言程序设计(第3版)》练习2-4 温度转换
  16. png的计算机储存图片的格式吗,我电脑打不开png格式的图片,如何解决?
  17. SilverLight合计行设计
  18. 深度拆解高爷家:单品年销过亿的国产猫粮是怎么炼成的?
  19. VS编译器程序运行窗口一闪而过?教你一招!
  20. Verious结盟Elance力推“一站式组件交易服务”

热门文章

  1. SAP MM(物料管理)常用事务代码T-Code
  2. 百度大脑iOCR助力医疗处方电子化,配药流程高效
  3. Shopex迁移数据(商品)到Magento手把手教程
  4. 记录2019届秋季校园招聘:欢聚时代YY(2018.8.4)
  5. hj-game策划案
  6. 还原数据库bak文件
  7. MySQL数据库中字段类型与设计原则
  8. 老鬼微信机器人HttpApi接口之心跳模式
  9. Could not transfer artifact问题如何解决
  10. 五天修炼 网规_网络工程师的5天修炼 (朱小平) pdf扫描版 40M