Java+Mysql学生管理系统源码

最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事。闲来无事,也就自己写了一个,不过功能实现的不是很多。

开发语言:java; 开发环境:Mysql, java; 开发工具:eclipse
开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com

此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加、删除、修改。
开发步骤:
 1.在数据库中建表:

create table stu(
stuId String,
stuName String,
stuSex String,
stuAge int,
stuJG String,
stuDept Sring
);

2.java 代码主要由四个类组成:
Test3包含主函数;StuModel用来刷新、呈现数据库;StuAddDiag用来实现增添读者功能;StuUpDiag是修改学生信息。具体代码如下:
 Test3.java:

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);
  //更新jtable
   jt.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.得到学生的ID
  int rowNum = this.jt.getSelectedRow();//getSelectedRow会返回给用户点中的行
  //如果该用户一行都没有选,就返回-1
  if(rowNum == -1){
  //提示
  JOptionPane.showMessageDialog(this, "请选中一行");
  return ;
  }
 //得到学术ID
  String stuId = (String)sm.getValueAt(rowNum, 0);
  System.out.println("Id: "+stuId);

  //连接数据库,完成删除任务
  try{
  //1.加载驱动
  Class.forName("com.mysql.jdbc.Driver");
  //2.连接数据库
  String url = "jdbc:mysql://localhost:3306/spdb1";
  String user = "root";
  String passwd = "lfdy";

  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();
 //更新jtable
  jt.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);
  }
 }
}

StuModel.java:

/*
 * 这是我的一个stu表的模型
 * 可以把对学生表的操作全都封装到这个类
 */
package com.test2;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Vector;
import javax.swing.table.*;

public class StuModel extends AbstractTableModel{

 //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.加载驱动
  Class.forName("com.mysql.jdbc.Driver");
  System.out.println("加载成功");
  //2.连接数据库
  //定义几个常量
  String url = "jdbc:mysql://localhost:3306/spdb1";
  String user = "root";
  String passwd = "lfdy";

  ct = DriverManager.getConnection(url,user,passwd);
  stat = ct.createStatement();//创建stat对象
  rs = 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 stub
  return this.rowData.size();
 }

 //得到共有多少列
 public int getColumnCount() {
  // TODO Auto-generated method stub
  return this.columnNames.size();
 }

 //得到某行某列的数据
 public Object getValueAt(int row, int column) {
  // TODO Auto-generated method stub
  return ((Vector)(this.rowData.get(row))).get(column);
 }

 //得到属性名字
 public String getColumnName(int column) {
  // TODO Auto-generated method stub
  return (String)this.columnNames.get(column);
 }
}

StuAddDiag.java:

package com.test2;

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);
 }
 @Override
 public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  if(e.getSource() == jb1){
   Connection ct = null;
   PreparedStatement pstmt = null;
   ResultSet rs = null;

   try{
    //1.加载驱动
    Class.forName("com.mysql.jdbc.Driver");
    System.out.println("加载成功");
    //2.连接数据库
    //定义几个常量
    String url = "jdbc:mysql://localhost:3306/spdb1";
    String user = "root";
    String passwd = "lfdy";
    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();
    }
   }

  }

 }

}

StuUpDiag.java:

package com.test2;
/*
 * 修改学生
 */
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);
 }
 @Override
 public void actionPerformed(ActionEvent e) {
  // TODO Auto-generated method stub
  if(e.getSource() == jb1){
   Connection ct = null;
   PreparedStatement pstmt = null;
   ResultSet rs = null;

   try{
    //1.加载驱动
    Class.forName("com.mysql.jdbc.Driver");
    System.out.println("加载成功");
    //2.连接数据库
    //定义几个常量
    String url = "jdbc:mysql://localhost:3306/spdb1";
    String user = "root";
    String passwd = "lfdy";
    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();
    }
   }

  }

 }

}

开发与测试结果:

1.系统主界面:

2.按名字查询:

3.选中一行,删除:

4.选中一行修改:

5.点击添加按钮,进行添加:

后续此系统将继续完善,有疑问和技术交流的,可联系本人:dingyelf@aliyun.com

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java学生信息管理系统设计

    本例的学生信息添加进入数据库的事务(可以提交事务,事务回滚,用本地线程完善) 主页面index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <htm

  • 简单实现Java版学生管理系统

    本文实例为大家分享了Java实现学生管理系统的具体代码,供大家参考,具体内容如下 package BookDemo_1; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test { public static void main(String[] args) { StudentSys stuSys=new StudentSys("学生管理系统"); stuSys.initWi

  • 一个简单的java学生寝室查询系统

    本文实例为大家分享了java学生寝室查询系统的具体代码,供大家参考,具体内容如下 前端部分: index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>AHPU Freshman dormitory inquiry</title> <script src="confirm.js

  • java学生信息管理系统设计(2)

    本例的学生信息添加进入数据库的事务(可以提交事务,事务回滚,用本地线程完善) 主页面index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <htm

  • Java+Mysql学生管理系统源码

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具:eclipse 开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com 此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加.删除.修改. 开发步骤:  

  • C语言学生管理系统源码分享

    本文实例为大家分享了C语言学生管理系统源码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> //结构体可以存放的学生信息最大个数,不可变变量 int const MAX_LENGTH=100; //学生信息结构体数组,最多可以存放100个学生信息 struct student{ int id; //学号 char *name; //姓名 int age; //年龄 float c_score; //C语言成绩 float engl

  • Java版水果管理系统源码

    水果管理系统Java版分享给大家. 主类 FruitsDemo /** * 功能: * 1. 查看所有的水果 * 2. 添加新的水果(添加的时候判断水果名是否有重复) * 3. 对所有的水果进行排序(价格排序.库存排序) * 4. 删除指定的水果 * 5. 退出系统 * * 注意: * 1. 每种水果都必须有水果id,水果名,水果数量,水果价格 * 2. 添加水果时,要由用户输入水果名.数量和价格 * 3. 删除水果时要二次确认 * * 评分依据: 功能实现的情况,代码规范性(命名规范.格式规范

  • python实现学生管理系统源码

    本文实例为大家分享了python实现学生管理系统的具体代码,供大家参考,具体内容如下 一.面向过程版 import os stu_list = [] def show_menu(): print('1.添加学生') print('2.删除学生') print('3.修改学生信息') print('4.查询单个学生信息') print('5.查询所有学生信息') print('6.退出系统') def insert_student(): name = input('请输入学生名字:') for s

  • java+SQL server2008学生信息管理系统源码

    本文实例为大家分享了java学生信息管理系统源码的具体代码,供大家参考,具体内容如下 1.StudetManage类(主界面) package com.sms3; import java.awt.*; import javax.swing.*; import java.awt.event.*; public class StudentManage extends JFrame implements ActionListener { /** * @param args */ public stat

  • java(swing)+ mysql实现学生信息管理系统源码

    本文实例为大家分享了java实现学生信息管理系统源码,供大家参考,具体内容如下 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import

  • Java实现学生管理系统

    项目描述:通过管理员帐号登录,对学员信息进行管理.可以实现学员信息的增加.修改.删除.查询. 知识点:数组.do{}while循环.for循环.if语句.switch条件语句 学生管理系统的流程图 import java.util.Scanner; public class Stu{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); boolean flag = false; int stuN

  • Java+MySQL 图书管理系统

    一,功能 管理员登录 图书借阅信息管理 图书信息管理 管理员更改密码 退出系统 二,工具 Eclipse Version: 2018-09 (4.9.0) MySQL Workbench 8.0 CE mysql-connector-java-8.0.13.jar 三.效果图: 登录界面: 主界面: 借阅书籍管理: 个人书库管理: 更改密码: 四.数据库设计 1)图书表 2)用户表 两个数据表间没有关联: 五.JAVA层次分析 (1)逻辑图 (2)包结构,采用MVC三层架构组织各个模块 六.主要

  • 最优雅地整合 Spring & Spring MVC & MyBatis 搭建 Java 企业级应用(附源码)

    这里使用 Maven 项目管理工具构建项目 初始化项目 打开 Intellij IDEA,点击 Create New Project 选择 Maven 构建项目 选择 JDK 版本 选择 maven-archetype-webapp 模板(Java Web 项目) 填写项目在 Maven 仓库中的坐标(在 Maven 仓库中根据这个坐标才能找到该项目) 选择 Maven 路径 选择 Maven 配置文件路径 选择 Maven 本地仓库路径 填写项目名 选择工作目录 创建目录 在 src > ma

  • Java实现学生管理系统(控制台版本)

    目录 前言介绍 创建学生类Student main方法实现CRUD 查询方法 添加方法 删除方法 修改方法 控制台打印 前言介绍 最近很多同学找我帮忙做一些课程设计或Web前端大作业.其中控制台项目应该是初学者必须经历的一个过程.作为java初学者这个控制台版本的学生信息管理系统十分合适.用到的技术也是最简单的JavaList集合.变量的声明.对象的创建.一些基本的while语句.switch语句.循环遍历等基础语法.一个最基础版本的控制台学生管理系统也就是CRUD功能. 直接上完整代码 创建学

随机推荐