信息管理系统 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…

mysql explain insert_简述Mysql Explain 命令

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

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;按提示走就可以安装完成之后…

php mysql bootstart_PHP MySQL 创建数据库

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

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

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

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源代码_微信开放平台基于网站应用授权登录源码(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)被优化成相当精简的原生型指令码…

java注解 源码_详解Java注解教程及自定义注解

详解Java注解教程及自定义注解更新时间&#xff1a;2016-02-26 11:47:06 作者&#xff1a;佚名 我要评论(0)Java注解提供了关于代码的一些信息&#xff0c;但并不直接作用于它所注解的代码内容。在这个教程当中&#xff0c;我们将学习Java的注解&#xff0c;如何定制注解&…

win7卸载java_Win7彻底卸载Oracle 11g图文步骤(靠谱)

网上资料结合自己的操作整理出的一套靠谱的彻底卸载Oracle 11g的步骤&#xff01;(Win7)&#xff0c;具体内容详情如下所示&#xff1a;1&#xff1a;停掉所有Oracle相关的服务1.1打开服务方式如下&#xff1a;1.1.1&#xff1a;右击“计算机”–>管理–>服务和应用程序–…

vba与python相比2019_重大改变!Python 或将取代 VBA 成为 Excel 官方脚本语言

点击上方“CSDN”&#xff0c;选择“置顶公众号”关键时刻&#xff0c;第一时间送达&#xff01;如果微软的 Excel 中支持了人生苦短的 Python&#xff0c;你还会喜欢那个直接且易上手的 VBA 编程吗&#xff1f;近日&#xff0c;据国外媒体 BLEEPINGCOMPUTER 报道&#xff0c;微…

会话标识未更新 java_Appscan漏洞之会话标识未更新

本次针对 Appscan漏洞 会话标识未更新进行总结&#xff0c;如下&#xff1a;1. 会话标识未更新1.1、攻击原理在认证用户或者以其他方式建立新用户会话时&#xff0c;如果不使任何现有会话标识失效&#xff0c;攻击者就有机会窃取已认证的会话&#xff0c;此漏洞可结合XSS获取用…

arcgis的python接口_arcgis-Python的ArcGIS API-Esri Screenshots

作者:Esri### 作者邮箱:pythonesri.com### 首页:https://developers.arcgis.com/python/### 文档:None### 下载链接# ArcGIS API for PythonWork with maps and geospatial data in Python using The ArcGIS API for Python.Use simple and efficient tools powered by Web GIS…

linux es连接mysql_Linux下ES,kibana,mysql,kafka,zookeeper启动关闭方式

Linux下ES&#xff0c;kibana,mysql,kafka&#xff0c;zookeeper启动关闭方式ES前台方式启动切换到ES的bin目录下&#xff0c;执行./elasticsearch命令关闭窗口或者ctrlc会停止运行后台方式启动同样切换到ES的bin目录下&#xff0c;执行 ./elasticsearch -d 命令查看实时的日志…

java.util.timertask_java.util.TimerTask翻译

java.utilClass TimerTaskjava.lang.Objectjava.util.TimerTask All Implemented Interfaces:public abstract class TimerTaskextendsObjectimplementsRunnableA task that can be scheduled for one-time or repeated execution by a Timer. 由Timer安排执行一次或重复执行的…

java还值_Java到底是引用传递还是值传递

前言前段时间在群里看到类似这样一个问题&#xff0c;下面的代码会输出什么呢&#xff1f;public void test(){String str "hello";change(str);System.out.println(str);}private void change(String str){str "world";}当时看到这题&#xff0c;瞬间勾…

什么是java中的面向对象编程_什么是面向对象编程

什么是面向对象编程时间&#xff1a;2018-01-23 来源&#xff1a;面向对象编程讲解一.前言其实不管是java还是.net都是属于面向对象程序设计语言&#xff0c;归根结底&#xff0c;它们都离不开面向对象&#xff0c;所以什么是面向对象呢&#xff0c;意思就是object-oriente…

java如何给顺序表赋值_JAVA模拟新增顺序表及单链表

最近在回顾大学学的数据结构&#xff0c;这里给大家用javwww.cppcns.coma模拟顺序表和单链表的新增1顺序表新增/*** 顺序www.cppcns.com表** author cjd**/public class ArrayList {private Object[] elementData; // 底层是一个数组&#xff0c;目前还没有确定长度private int…

php浏览服务器某一文件夹内容,php删除web服务器中指定目录下的指定格式的文件...

今天还在写VipSystem Pro的授权部分&#xff0c;用户授权后&#xff0c;生成匹配该用户的唯一的php文件集合(在一个目录下)&#xff0c;然后进行zip下所并弹出下载。这个临时生成的zip文件存放在我指定的一个目录。每个用户授权不同的功能&#xff0c;都会产生一个唯一的zip压缩…