信息管理系统 github_Java+MySQL实现学生信息管理系统

基于Java swing+MySQL实现学生信息管理系统:主要实现JDBC对学生信息进行增删改查,应付一般课设足矣,分享给大家。

源码:

https://github.com/ZhuangM/student.git

a6ae63bf6075146e281dd889bfead1f1.png

1、 开发环境:jdk7+MySQL5+win7

代码结构:model-dao-view

2、 数据库设计——建库建表语句

CREATE DATABASE student;
DROP TABLE IF EXISTS `admin`;CREATE TABLE `admin` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `username` varchar(20) NOT NULL, `password` varchar(20) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;LOCK TABLES `admin` WRITE;INSERT INTO `admin` VALUES (1,'admin','admin','admin');UNLOCK TABLES;DROP TABLE IF EXISTS `student`;CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `sno` varchar(20) NOT NULL, `department` varchar(20) NOT NULL, `hometown` varchar(20) NOT NULL, `mark` varchar(20) NOT NULL, `email` varchar(20) NOT NULL, `tel` varchar(20) NOT NULL, `sex` varchar(20) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;LOCK TABLES `student` WRITE;INSERT INTO `student` VALUES (18,'张三','001','信息科学技术学院','辽宁','80','zhangsan@163.com','13888888888','男'),(19,'李四','002','理学院','上海','70','lisi@sina.com','13812341234','男'),(20,'王五','003','外国语学院','北京','88','wangwu@126.com','13698765432','女');UNLOCK TABLES;

3、model——管理员、学生

/*** 项目名:student* 修改历史:*/package com.student.model;/*** 模块说明:admin* */public class Admin { private int id; private String name; private String username; private String password; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}
/*** 项目名:student* 修改历史:*/package com.student.model;/*** 模块说明: 学生* */public class Student { private int id; private String sno;// 学号 private String name; private String sex; private String department;// 院系 private String homeTown;// 籍贯 private String mark;// 学分 private String email; private String tel;// 联系方式 public int getId() { return id; } public void setId(int id) { this.id = id; } public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } public String getHomeTown() { return homeTown; } public void setHomeTown(String homeTown) { this.homeTown = homeTown; } public String getMark() { return mark; } public void setMark(String mark) { this.mark = mark; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; }}

4、 工具类DBUtil(对jdbc进行封装)

/*** 项目名:student* 修改历史:*/package com.student.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import com.student.AppConstants;/*** 模块说明:数据库工具类* */public class DBUtil { private static DBUtil db; private Connection conn; private PreparedStatement ps; private ResultSet rs; private DBUtil() { } public static DBUtil getDBUtil() { if (db == null) { db = new DBUtil(); } return db; } public int executeUpdate(String sql) { int result = -1; if (getConn() == null) { return result; } try { ps = conn.prepareStatement(sql); result = ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } return result; } public int executeUpdate(String sql, Object[] obj) { int result = -1; if (getConn() == null) { return result; } try { ps = conn.prepareStatement(sql); for (int i = 0; i < obj.length; i++) { ps.setObject(i + 1, obj[i]); } result = ps.executeUpdate(); close(); } catch (SQLException e) { e.printStackTrace(); } return result; } public ResultSet executeQuery(String sql) { if (getConn() == null) { return null; } try { ps = conn.prepareStatement(sql); rs = ps.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } return rs; } public ResultSet executeQuery(String sql, Object[] obj) { if (getConn() == null) { return null; } try { ps = conn.prepareStatement(sql); for (int i = 0; i < obj.length; i++) { ps.setObject(i + 1, obj[i]); } rs = ps.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } return rs; } private Connection getConn() { try { if (conn == null || conn.isClosed()) { Class.forName(AppConstants.JDBC_DRIVER); conn = DriverManager.getConnection(AppConstants.JDBC_URL, AppConstants.JDBC_USERNAME, AppConstants.JDBC_PASSWORD); } } catch (ClassNotFoundException e) { System.out.println("jdbc driver is not found."); e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } public void close() { try { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } }}

5、dao:主要调用DBUtil操作相应的model——增删改查

BaseDAO.java

/*** 项目名:student* 修改历史:*/package com.student.base;import java.sql.ResultSet;import java.sql.SQLException;import com.student.DAO;import com.student.dao.AdminDAO;import com.student.dao.StudentDAO;import com.student.util.DBUtil;/*** 模块说明: DAO基类* */public abstract class BaseDAO { protected final DBUtil db = DBUtil.getDBUtil(); protected ResultSet rs; private static BaseDAO baseDAO; public BaseDAO() { init(); } private void init() { // buildAbilityDAO(); } // protected abstract void buildAbilityDAO(); public static synchronized BaseDAO getAbilityDAO(DAO dao) { switch (dao) { case AdminDAO: if (baseDAO == null || baseDAO.getClass() != AdminDAO.class) { baseDAO = AdminDAO.getInstance(); } break; case StudentDAO: if (baseDAO == null || baseDAO.getClass() != StudentDAO.class) { baseDAO = StudentDAO.getInstance(); } break; default: break; } return baseDAO; } protected void destroy() { try { if (rs != null) { rs.close(); } } catch (SQLException se) { se.printStackTrace(); } finally { db.close(); } }}

AdminDAO.java

/*** 项目名:student* 修改历史:*/package com.student.dao;import java.sql.SQLException;import com.student.base.BaseDAO;/*** 模块说明: 管理员增删改查* */public class AdminDAO extends BaseDAO { private static AdminDAO ad = null; public static synchronized AdminDAO getInstance() { if (ad == null) { ad = new AdminDAO(); } return ad; } public boolean queryForLogin(String username, String password) { boolean result = false; if (username.length() == 0 || password.length() == 0) { return result; } String sql = "select * from admin where username=? and password=?"; String[] param = { username, password }; rs = db.executeQuery(sql, param); try { if (rs.next()) { result = true; } } catch (SQLException e) { e.printStackTrace(); } finally { destroy(); } return result; }}

StudentDAO.java

/*** 项目名:student* 修改历史:*/package com.student.dao;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;import com.student.base.BaseDAO;import com.student.model.Student;/*** 模块说明: 学生增删改查* */public class StudentDAO extends BaseDAO { private final int fieldNum = 9; private final int showNum = 15; private static StudentDAO sd = null; public static synchronized StudentDAO getInstance() { if (sd == null) { sd = new StudentDAO(); } return sd; } // update public boolean update(Student stu) { boolean result = false; if (stu == null) { return result; } try { // check if (queryBySno(stu.getSno()) == 0) { return result; } // update String sql = "update student set sex=?,department=?,email=?,tel=?,hometown=?,mark=? where name=? and sno=?"; String[] param = { stu.getSex(), stu.getDepartment(), stu.getEmail(), stu.getTel(), stu.getHomeTown(), stu.getMark(), stu.getName(), stu.getSno() }; int rowCount = db.executeUpdate(sql, param); if (rowCount == 1) { result = true; } } catch (SQLException se) { se.printStackTrace(); } finally { destroy(); } return result; } // delete public boolean delete(Student stu) { boolean result = false; if (stu == null) { return result; } String sql = "delete from student where name=? and sno=?"; String[] param = { stu.getName(), stu.getSno() }; int rowCount = db.executeUpdate(sql, param); if (rowCount == 1) { result = true; } destroy(); return result; } // add public boolean add(Student stu) { boolean result = false; if (stu == null) { return result; } try { // check if (queryBySno(stu.getSno()) == 1) { return result; } // insert String sql = "insert into student(name,sno,sex,department,hometown,mark,email,tel) values(?,?,?,?,?,?,?,?)"; String[] param = { stu.getName(), stu.getSno(), stu.getSex(), stu.getDepartment(), stu.getHomeTown(), stu.getMark(), stu.getEmail(), stu.getTel() }; if (db.executeUpdate(sql, param) == 1) { result = true; } } catch (SQLException se) { se.printStackTrace(); } finally { destroy(); } return result; } // query by name public String[][] queryByName(String name) { String[][] result = null; if (name.length() < 0) { return result; } List stus = new ArrayList(); int i = 0; String sql = "select * from student where name like ?"; String[] param = { "%" + name + "%" }; rs = db.executeQuery(sql, param); try { while (rs.next()) { buildList(rs, stus, i); i++; } if (stus.size() > 0) { result = new String[stus.size()][fieldNum]; for (int j = 0; j < stus.size(); j++) { buildResult(result, stus, j); } } } catch (SQLException se) { se.printStackTrace(); } finally { destroy(); } return result; } // query public String[][] list(int pageNum) { String[][] result = null; if (pageNum < 1) { return result; } List stus = new ArrayList(); int i = 0; int beginNum = (pageNum - 1) * showNum; String sql = "select * from student limit ?,?"; Integer[] param = { beginNum, showNum }; rs = db.executeQuery(sql, param); try { while (rs.next()) { buildList(rs, stus, i); i++; } if (stus.size() > 0) { result = new String[stus.size()][fieldNum]; for (int j = 0; j < stus.size(); j++) { buildResult(result, stus, j); } } } catch (SQLException se) { se.printStackTrace(); } finally { destroy(); } return result; } // 将rs记录添加到list中 private void buildList(ResultSet rs, List list, int i) throws SQLException { Student stu = new Student(); stu.setId(i + 1); stu.setName(rs.getString("name")); stu.setDepartment(rs.getString("department")); stu.setEmail(rs.getString("email")); stu.setHomeTown(rs.getString("hometown")); stu.setMark(rs.getString("mark")); stu.setSex(rs.getString("sex")); stu.setSno(rs.getString("sno")); stu.setTel(rs.getString("tel")); list.add(stu); } // 将list中记录添加到二维数组中 private void buildResult(String[][] result, List stus, int j) { Student stu = stus.get(j); result[j][0] = String.valueOf(stu.getId()); result[j][1] = stu.getName(); result[j][2] = stu.getSno(); result[j][3] = stu.getSex(); result[j][4] = stu.getDepartment(); result[j][5] = stu.getHomeTown(); result[j][6] = stu.getMark(); result[j][7] = stu.getEmail(); result[j][8] = stu.getTel(); } // query by sno private int queryBySno(String sno) throws SQLException { int result = 0; if ("".equals(sno) || sno == null) { return result; } String checkSql = "select * from student where sno=?"; String[] checkParam = { sno }; rs = db.executeQuery(checkSql, checkParam); if (rs.next()) { result = 1; } return result; }}

6、 view:与用户交互的界面(包括LoginView.java、MainView.java、AddView.java、DeleteView.java、UpdateView.java),主要使用DAO提供的接口,由于篇幅原因,仅列出MainView即首页。

/*** 项目名:student* 修改历史:*/package com.student.view;import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableColumn;import com.student.AppConstants;import com.student.DAO;import com.student.base.BaseDAO;import com.student.dao.StudentDAO;/*** 模块说明: 首页* */public class MainView extends JFrame { private static final long serialVersionUID = 5870864087464173884L; private final int maxPageNum = 99; private JPanel jPanelNorth, jPanelSouth, jPanelCenter; private JButton jButtonFirst, jButtonLast, jButtonNext, jButtonPre, jButtonAdd, jButtonDelete, jButtonUpdate, jButtonFind; private JLabel currPageNumJLabel; private JTextField condition; public static JTable jTable; private JScrollPane jScrollPane; private DefaultTableModel myTableModel; public static String[] column = { "id

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

smith标准型_线性系统理论(八)多项式矩阵Smith-McMillan标准型计算方法

1 参考[1]Chenglin Li&#xff1a;线性系统理论&#xff08;七&#xff09;finite- and infinite-zeros​zhuanlan.zhihu.com多项式矩阵Smith-McMillan标准型确定方法分析2 单模矩阵法Chenglin Li&#xff1a;线性系统理论&#xff08;七&#xff09;finite- and infinite-zero…

Python学习笔记(二) 数据类型及相关函数

本文主要介绍了python中注释方法、变量定义规则、数据类型及相关函数的内容 注释 注释方法&#xff1a; “”“ ”“” ’’’ ‘’’ 解释器位置特殊注释&#xff1a; #!/usr/bin/python3 #coding:utf-8 指定编码格式 #--coding:utf8-- 变量名称定义规则 python变量名称…

mysql explain insert_简述Mysql Explain 命令

MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP)。这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL语句的。这条命令并没有提供任何调整建议&#xff0c;但它能够提供重要的信息帮助你做出调优决策。参考官方文档地址:为什么用explain . 如果你的页面返回结果很…

没有varselect这个函数_C++的虚函数,虚析构函数,纯虚函数

修改日期&#xff1a;2020/9/6C的虚函数C的虚函数的特点就是动态绑定&#xff0c;它的意思是动态绑定&#xff0c;在运行的时候&#xff0c;通过引用和指针&#xff0c;可以用基类的类&#xff0c;引用继承该c类的派生类&#xff0c;虽然指针是基类&#xff0c;但实际上运行的是…

mysql数据库初识实训总结_MySQL(数据库)的初识

1.什么是数据库数据库(Database)是按照数据结构来组织、存储和管理数据的仓库2.什么是MySQLMySQL 是最流行的关系型数据库管理系统&#xff0c;在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Management System&#xff1a;关系数据库管理系统)应用软件之一。3.关系数…

jdk1.8要安装什么mysql_Window下安装JDK1.8+Tomcat9.0.27+Mysql5.7.28的教程图解

JDK1.8安装下载打开链接: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html.下拉选择不同jdk版本&#xff0c;图示为window系统下载提示需登录账号可查看这个帖子Oracle账号.安装双击下载的安装包&#xff0c;按提示走就可以安装完成之后…

mysql 实例启动利用binlog恢复_mysql利用binlog进行数据恢复

mysql利用binlog进行数据恢复最近线上误操作了一个数据&#xff0c;由于是直接修改的数据库&#xff0c;所有唯一的恢复方式就在mysql的binlog。binlog使用的是ROW模式&#xff0c;即受影响的每条记录都会生成一个sql。同时利用了binlog基本配置和格式binlog基本配置binlog需要…

php mysql bootstart_PHP MySQL 创建数据库

PHP MySQL 创建数据库数据库存有一个或多个表。你需要 CREATE 权限来创建或删除 MySQL 数据库。使用 MySQLi 和 PDO 创建 MySQL 数据库CREATE DATABASE 语句用于在 MySQL 中创建数据库。在下面的实例中&#xff0c;创建了一个名为 "myDB" 的数据库&#xff1a;实例 (…

.net mysql 类库_(精华)2020年6月27日 C#类库 MySqlHelper(Ado.net数据库封装)

using EFCore.Sharding;using MySql.Data.MySqlClient;using System;using System.Collections.Generic;using System.Data.Common;namespace Core.Util{////// MySql数据库操作帮助类///public class MySqlHelper : DbHelper{#region 构造函数////// 构造函数////// 完整连接字…

ironpython console怎么用_如何在表單中插入ironpython控制台?

I want to make a winform by C#, and add a ironpython console window in it, like a multiline textbox. So I can write python program into it to do some operations in my Winform software.我想通過C&#xff03;進行winform&#xff0c;並在其中添加一個ironpython控…

mysql修改客户端编码命令_mysql命令行修改字符编码

1、修改数据库字符编码mysql> alter database mydb character set utf8 ;2、创建数据库时&#xff0c;指定数据库的字符编码mysql> create database mydb character set utf8 ;3、查看mysql数据库的字符编码mysql> show variables like character%; //查询当前mysql数…

mysql 查看运行级别_运行级别及进程

/etc/rc.d/rc.sysinit由init进程调用执行完成设置网络、主机名、加载文件系统等初始化工作/etc/rc.d/rc脚本文件由init进程调用执行根据指定的运行级别, 加载或终止相应的系统服务/etc/rc.local脚本文件由rc脚本调用执行保存用户定义的需开机后自动执行的命令默认的7种运行级别…

中班机器人歌曲_机器人幼儿园大班音乐教案

机器人幼儿园大班音乐教案作为一名无私奉献的老师&#xff0c;有必要进行细致的教案准备工作&#xff0c;教案是教学活动的总的组织纲领和行动方案。那么问题来了&#xff0c;教案应该怎么写&#xff1f;以下是小编为大家收集的机器人幼儿园大班音乐教案&#xff0c;供大家参考…

java 主线程等待_Java实现主线程等待子线程

本文介绍两种主线程等待子线程的实现方式&#xff0c;以5个子线程来说明&#xff1a;1、使用Thread的join()方法&#xff0c;join()方法会阻塞主线程继续向下执行。2、使用Java.util.concurrent中的CountDownLatch&#xff0c;是一个倒数计数器。初始化时先设置一个倒数计数初始…

java四个权限_java四种访问权限

引言Java中的访问权限理解起来不难&#xff0c;但完全掌握却不容易&#xff0c;特别是4种访问权限并不是任何时候都可以使用。下面整理一下&#xff0c;在什么情况下&#xff0c;有哪些访问权限可以允许选择。一、访问权限简介访问权限控制&#xff1a; 指的是本类及本类内部的…

java map removeall_Java删除Map中元素

前言&#xff1a;关于Java从Map中删除元素的使用&#xff0c;可以使用删除单个元素的事实Map.remove。示例&#xff1a;初始化一个Map对象Map map new HashMap<>();map.put(1, "value 1");map.put(2, "value 2");map.put(3, "value 3");m…

java中0x07_JAVA里0X00的表示

相信很多针对报文进行组织与拆解&#xff0c;在C、C里有memset的功能很容易完成字符串里填充0x00&#xff0c;在java里同样很容易做到&#xff0c;则是用\000,八进制来表示。测试代码如下&#xff1a;package j8583.example;import java.util.ArrayList;import java.util.Array…

java nio集群_java – Hazelcast:连接到远程集群

14:58:26.717 [main] INFO c.m.b.p.s.s.HazelcastCacheClient – creatingnew Hazelcast instance14:58:26.748 [main] INFO com.hazelcast.core.LifecycleService –HazelcastClient[hz.client_0_dev][3.2.1] is STARTING14:58:27.029 [main] INFO com.hazelcast.core.Lifecyc…

微信第三方扫描登录 java源代码_微信开放平台基于网站应用授权登录源码(java)...

1. 第三方发起微信授权登录请求&#xff0c;微信用户允许授权第三方应用后&#xff0c;微信会拉起应用或重定向到第三方网站&#xff0c;并且带上授权临时票据code参数&#xff1b;2. 通过code参数加上AppID和AppSecret等&#xff0c;通过API换取access_token&#xff1b;3. 通…

java性能优化方案_Java性能优化要点

Java性能优化要点本文介绍如何通过以下几点从Java中挤压出性能&#xff0c;该大部分经验来自于Netty作者。JITJava即时编译器当Java执行runtime环境时&#xff0c;每遇到一个新的类&#xff0c;JIT编译器在此时就会针对这个类别进行编译(compile)被优化成相当精简的原生型指令码…