java 实现学籍管理系统
这里有新鲜出炉的 Java 函数式编程, 程序狗速度看过来!
Java 程序设计语言
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
这篇文章主要为大家详细介绍了 java 实现学籍管理系统, 具有一定的参考价值, 感兴趣的小伙伴们可以参考一下
1. 需求分析
1.1 系统功能设计
(1)能够查询学生的基本信息, 如: 学号, 姓名年龄, 班级和性别
(2)能对表格中的学生信息实现增加, 删除, 查找, 修改等功能
(3)能将数据保存到 MySQL 数据库中, 记录下来
(4)能把数据通过 mysql 数据库进行数据更新
1.2 系统模块设计
学籍管理系统包括增加信息模块, 删除信息模块, 修改信息模块, 查询信息模块, 更新数据模块系统管理人员能够查询学生的学号, 姓名, 性别, 年龄, 所获奖项等信息
(具体的系统结构设计 E-R 图请翻阅附录 2)
2. 系统实现
本系统使用 Java/JDBC 语言编程的方法实现学籍管理
用 Java 实现 mysql 数据库, 该技术主要是使用了导入 JDBC.jar, 使得 Java 程序员能够自由调用标准数据库访问类和接口
JDBC 和 Java 结合使用, 使用户可以容易的使用 sql 语句实现数据库的大部分操作, 而 Java 的容易移植, 适合于多种操作系统的特点配合 JDBC 使用, 可以满足用户需求
2.1 主要布局文件
根据一事一地原则, 进行该程序的布局, 书写了相关文档供用户阅读, mysql 中的数据也可以导出到 studinfo.txt 文件中, 便于用户打印或者查阅采用的 JDBC 为 5.0.8 版本 2.2 关键接口段代码及其注解
- package jdbc;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- public class TestJDBC {
- public static void main(String[] args) {
- try {
- Class.forName("com.mysql.jdbc.Driver");
- // 建立与数据库的 Connection 连接
- // 数据库所处于的 ip:127.0.0.1 (本机)
- // 数据库的端口号: 3306 (mysql 专用端口号)
- // 数据库名称 studinfo
- // 编码方式 UTF-8
- // 账号 root
- // 密码 admin
- Connection c = DriverManager
- .getConnection(
- "jdbc:mysql://127.0.0.1:3306/studinfo?characterEncoding=UTF-8",
- "root", "admin");
- System.out.println("连接成功, 获取连接对象:" + c);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
} catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
2.2 DAO 接口
- package jdbc;
- import java.util.List;
- import charactor.student;
- public interface DAO {
- // 增加
- public void add(student stud);
- // 修改
- public void update(student stud);
- // 删除
- public void delete(int id);
- // 获取
- public Hero get(int id);
- // 查询
- public List < student > list();
- // 分页查询
- public List < student > list(int start, int count);
- }
- // 详细 sql 语句和代码实现请查后页附录备注!
2.3 设计方法
采用单例化的设计模式, 在分别设计增删查改功能时, 分别独立的调用数据库, 以免后期维护软件麻烦, 本软件将连接数据库功能独立的拿出来作为一个类, 在后期使用的时候只需要调用即可, 无需反复实现大段的数据库连接代码, 减少代码冗余, 利于后期系统的进一步完善, 以及便于其他程序员阅读
(下面为了老师阅读方便, 只做 sql-conncet 连接的单例展示!)
- package util;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.SQLException;
- public class DBUtil {
- static String ip = "127.0.0.1";
- static int port = 3306;
- static String database = "student";
- static String encoding = "UTF-8";
- static String loginName = "root";
- static String password = "admin";
- static {
- try {
- Class.forName("com.mysql.jdbc.Driver");
- } catch(ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- public static Connection getConnection() throws SQLException {
- String url = String.format("jdbc:mysql://%s:%d/%s?characterEncoding=%s", ip, port, database, encoding);
- return DriverManager.getConnection(url, loginName, password);
- }
- }
2.4 界面展示
在界面下方通过按钮实现增删修改和导入功能, 在下方的填选框中可键入学生 id 实现查询功能(这里假设 id 为该系统唯一的主键, 触发回车即可)
3. 系统缺陷
该系统存在很多 bug, 例如在导入导出数据的时候, 新数据和旧数据之间的空行无法消除, 新的学号插入时和旧学号可能会引起冲突, 导致软件自动关闭, 总体来说还有很多进步的地方, 望进一步修复
其次就是, 本次设计的软件的实体只有一个学生, 较为单一, 所以实现起来不是太麻烦, 只是没有很多的余地将上课学的 E-R 图等设计的实现加入考察, 希望寒假可以实现学生, 课程, 以及老师三表之间的查询, 将这个系统进一步完善
4. 文件系统实现和数据库实现的优劣
文件系统面向某一应用程序, 共享性差, 冗余度大, 数据独立性差, 记录内有结构, 整体无结构, 由应用程序自己控制
数据库系统面向现实世界, 共享性高, 冗余度小, 具有较高的物理独立性和一定的逻辑独性, 整体结构化, 用数据模型描述, 由数据库管理系统提供数据的安全性完整性并发控制和恢复能力提高了数据的共享性; 降低了数据的冗余度, 提高了数据的一致性; 采用一定的数据模型实现数据结构化; 数据由 DBMS 统一管理和控制, 且更利于非计算机人士的操作和使用, 降低了学习成本并且随着数据库技术的发展和当今软件配合使用, 使得用户都意识不到自己的软件在使用数据库功能
附录 1: 代码片段中的 sql 语句实现增删查改
(功能的实现较为相同, 这里展示第一个 update,add,delete 功能就不重复展示繁琐的代码了, 只列出关键代码以供查阅)
1. 更新的实现
- // update 实现代码片段
- public 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 id=?,name=?,class=?,sex=?";
- String[] param = { stu.getId(), stu.getName(), stu.getClass(), stu.getSex() };
- int rowCount = db.executeUpdate(sql, param);
- if (rowCount == 1) {
- result = true;
- }
- } catch (SQLException se) {
- se.printStackTrace();
- } finally {
- destroy();
- }
- return result;
- }
2.delete 实现代码(格式和类的建立都与 1 相同, 更改 sql 语句即可)
- String sql = "delete from student where id=?;
- String[] param = { stu.getId()};"
3.add 实现代码
- String sql = "insert into student(id,name,class,sex) values(?,?,?,?)";
- String[] param = { stu.getId(), stu.getName(), stu.getClass(), stu.getSex()};
4. 查询实现(根据 id 查询)
- private int queryById(String id) throws SQLException {
- int result = 0;
- if ("".equals(id) || id == null) {
- return result;
- }
- String checkSql = "select * from student where id=?";
- String[] checkParam = { id };
- rs = db.executeQuery(checkSql, checkParam);
- if (rs.next()) {
- result = 1;
- }
- return result;
- }
- }
来源: http://www.phperz.com/article/18/0206/359035.html