返回顶部
首页 > 资讯 > 数据库 >史上最详细的JAVA学生信息管理系统(MySQL实现)
  • 540
分享到

史上最详细的JAVA学生信息管理系统(MySQL实现)

javamysqlmvc数据库Poweredby金山文档 2024-01-21 15:01:51 540人浏览 薄情痞子
摘要

一、项目介绍 为了巩固Java的学习写了一个基于mvc设计模式的学生管理系统。 简单介绍一下MVC设计模式: 1、M也就是Model 模型层(也叫数据层)主要是通过这个类来进行数据的操作。 2、V是Views 视图层,主要就

一、项目介绍

为了巩固Java的学习写了一个基于mvc设计模式的学生管理系统。

简单介绍一下MVC设计模式:

1、M也就是Model 模型层(也叫数据层)主要是通过这个类来进行数据的操作。

2、V是Views 视图层,主要就是来显示页面信息。

3、C是Controller控制器,主要是用来做流程调度。

开发工具ideaMysql-5.5、Navicat、mysql-connector-java-5.0.8

二、项目分析

1.目录结构

这些就是这个项目的结构。

2.需求分析

首先进行登录,如果没有账户可以进行注册。

学生处理:

实现对于学生信息的增删改查。

每个用户都有自己的权限比如超级管理员可以进行学生信息的增删改查。

用户处理:

超级管理员可以进行用户信息的增删改(这里的改是只可以修改用户的权限)。

而普通用户是不可以对用户信息进行操作的。

以上介绍下面的图很清晰的写了出来。

三、数据库建表

1.创建学生表

字段分别为学号、姓名、性别、年龄、成绩、电话、班级。

这是一些测试数据以便进行系统的测试。

2.用户表

建表的方式跟学生表的一样我这里就不展示了。

用户表的字段为用户序号、用户名、密码、权限(0 - 超级管理员、1 - 普通管理员、2 - 普通用户)。

四、项目介绍及效果图

这是项目所用到的全部类。

1、controller这个包里存放了两个类分别是学生调度器和用户调度器,主要就是进行流程调度。

2、global这个包里存放的分别是JDBC工具类用来连接数据库从库里获取到数据,剩下的两个就是自定义的学生类和用户类。

3、model这个包里也就是模型层这两个模型层的作用是分别来处理学生数据和用户数据。

4、views这个包是视图层主要是在这里面进行数据的展示还有一些提示信息。

5、StuManagerMain是启动项,从这里开始运行程序。

6、最重要的一点就是最下面的那个.jar包,首先要将这个包导入才可以进行连接数据库的操作,具体步骤这里我就不过多赘述,可以自行查找。

1.登录界面(效果图)

(1) 注册

从这里可以选择要操作的序号,没有账号可以选择注册

这里选择注册,在输入用户名的时候程序会判断是否跟已存在的用户重名,如果重名则需重新输入

这里输入密码,接下来确认密码,提示注册成功将会自动登录,这里默认权限为普通用户

(2) 登录

这里就是登录成功之后展示的页面,在这里要进行管理用户或是学生的选择。

2.权限说明(效果图)

我在之前说到了权限的问题,这个账号的权限是超级管理员,我来登录一个普通用户看看还能否选择管理用户。

很明显在这里给出了提示说不能操作。

选择管理学生信息这里也是提示普通用户只能进行查看学生信息。

普通管理员可以进行进入管理用户信息,但是只可以进行查找

普通管理员在管理学生信息时候只可以进行查找和增加的操作

3.管理用户信息(效果图)

我登录超级管理员的账号来进行接下来的操作,在用户管理我没有弄增加用户信息,增加的操作是让用户在注册那里进行

(1) 查询用户信息

选择查找用户信息,显示出了查询的二级菜单,这里可以根据id、姓名、权限进行查找

选择根据姓名查找,输入用户名之后显示出来了该用户的信息

如果输入的用户名查询不到也会给出提示说用户信息不存在

(2) 修改用户信息

选择修改用户信息,这里修改的信息只能是权限,其他的用户信息是无法修改的

在选择修改后会给出该用户当前是什么权限,这里将root用户的权限修改为普通用户

可以看到成功将权限修改为普通用户

(3) 删除用户信息

选择删除用户信息弹出了删除的二级菜单,可以选择删除全部或是指定用户

这里选择删除指定用户,输入要删除的用户名之后会弹出该用户的信息来确认是否删除

4.管理学生信息(效果图)

接下来进行学生信息的管理介绍

(1) 查找学生信息

选择查找学生信息展示出来的是查找的二级菜单这里可以根据学号、姓名、性别等等来查找信息。

这里选择按照年龄查询,这里弹出了一个二级菜单可以按照精确年龄或是区间的方式来查找

选择区间来查询,查询结果如下

(2) 增加学生信息

接下来进行添加学生信息,这里显示添加成功

可以找到该学生信息

(3) 修改学生信息

修改时会将修改前的信息进行一个展示,显示修改成功

可以看出信息修改成功

(4) 删除学生信息

将要删除的信息展示出来确认是否要删除,提示删除成功

确认删除成功

五、项目思路及部分代码

1.MVC设计模式介绍

最开始我提到的MVC设计模式,分为模型层、视图层、调度器,这个程序的调用流程很简单

拿登录界面来说一上来从主方法来调用视图层的展示页面,并获取用户的操作数

package com.kxs.stu_manager;

import com.kxs.stu_manager.controller.UserController;
import com.kxs.stu_manager.global.User;
import com.kxs.stu_manager.model.UserModel;
import com.kxs.stu_manager.views.StuPage;
import com.kxs.stu_manager.views.UserPage;

import java.sql.SQLException;
import java.util.ArrayList;


public class StuManagerMain {
    public static void main(String[] args) throws SQLException {
        // 用户调度器
        UserController uc = new UserController();
        // 用户模型层
        UserModel um = new UserModel();
        // 通过用户页面获取用户操作数
        // 将操作数传入总调度器并且返回一个用户
        User user = uc.loginAction(UserPage.welcome());
        if(null != user){
            UserPage.welcomeToBack(user.getUserName());
        }else{
            UserPage.failed("注册或登录失败!~");
            System.exit(-1);
        }

        while (true){
            // 进行数据的刷新
            try{
                ArrayList userList = um.getUserInfoByName(user.getUserName());
                uc.userOrStuAction(UserPage.superManagerPage(userList.get(0).getCompetence()),
    userList.get(0).getCompetence());
            }catch (Exception e){
                StuPage.failed("用户不存在,退出系统!~");
                System.exit(-1);
            }
        }

    }
}

    public static int welcome() {
        System.out.println("* *********************************** *");
        System.out.println("* ************** 登录页面 ************ *");
        System.out.println("* ************* 1 - 登录 ************* *");
        System.out.println("* ************* 2 - 注册 ************* *");
        System.out.println("* ************* 0 - 退出系统  ******** *");
        System.out.println("* *********************************** *");
        int num;
        Scanner sc = new Scanner(System.in);
        do {
            System.out.print("请输入正确的选项:");
            num = sc.nextInt();
        } while (num < 0 || num > 2);
        return num;
    }

将返回的这个操作数作为参数传到登录或注册的调度器中,在这里用switch来进行程序调度


    public User loginAction(int num) throws SQLException {
        User user = null;
        switch (num) {
            case 1: // 登录
                user = um.doLogin(UserPage.getLoginUser());
                if (null == user) {
                    UserPage.failed("登陆失败!~");
                }
                break;
            case 2: // 注册
                user = um.doReg(UserPage.getRegUser());
                if (null == user) {
                    UserPage.failed("注册失败!~");
                }
                break;
            case 0: // 退出
                UserPage.bye();
                System.exit(-1);
                break;
        }
        return user;
    }

这里我选择了注册,这个分支里调用了视图层来获取一个要注册的用户对象


    public static User getRegUser() throws SQLException {
        String username;
        String passWord;
        // 模拟 ajax 做页面无刷新的情况下的数据同步
        do {
            System.out.print("请输入可用的用户名:");
            username = new Scanner(System.in).nextLine();
        } while (um.getUserByName(username) != null);

        do {
            System.out.print("请输入密码:");
            password = new Scanner(System.in).nextLine();
            System.out.print("请确认密码:");
        } while (!password.equals(new Scanner(System.in).nextLine()));

        return new User(username, password);
    }

将这个用户对象作为参数通过调度器传到模型层来进行添加用户信息的操作


    public User doReg(User regUser) throws SQLException {
        User user = null;

        conn = JdbcUtils.getConnection();
        String sql = "insert into `user`(`userName`, `password`) value (?,?)";
        pst = conn.prepareStatement(sql);

        pst.setString(1, regUser.getUserName());
        pst.setString(2, regUser.getPassword());

        int rows = pst.executeUpdate();
        if(rows > 0){
            UserPage.success("注册成功!~");
            user = getUserByName(regUser.getUserName());
        }

        JdbcUtils.free(rs, pst, conn);
        return user;
    }

这样一个完整的调度关系就完成了,是不是很简单!可以按照这种调度关系去实现其他的一些操作

2.部分源代码

(1) 学生类

package com.kxs.stu_manager.global;


public class Student {
    private int id;
    private String name;
    private String sex;
    private int age;
    private float score;
    private String tel;
    private String classid;

    public Student() {
    }

    public Student(int id, String name, String sex, int age, float score, String tel, String classid) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.score = score;
        this.tel = tel;
        this.classid = classid;
    }

    public Student(String name, String sex, int age, float score, String tel, String classid) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.score = score;
        this.tel = tel;
        this.classid = classid;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        if(sex.equals("0") || sex.equals("1") || sex.equals("2")){
            this.sex = sex;
        }else{
            System.out.println("性别非法!~");
        }
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if(age > 0 && age < 100){
            this.age = age;
        }else {
            System.out.println("年龄非法!~");
        }
    }

    public float getScore() {
        return score;
    }

    public void setScore(float score) {
        if(score >= 0 && score <= 100){
            this.score = score;
            System.out.println("成绩非法!~");
        }
    }

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getClassid() {
        return classid;
    }

    public void setClassid(String classid) {
        this.classid = classid;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", score=" + score +
                ", tel='" + tel + '\'' +
                ", classid='" + classid + '\'' +
                '}';
    }
}

(2) 用户类

package com.kxs.stu_manager.global;


public class User {
    private int id; // id
    private String userName; // 用户名
    private String password; // 密码
    private String competence; // 权限 0:超级管理员 1:普通管理员 2:普通用户
    
    public User() {
    }

    public User(int id, String userName, String competence) {
        this.id = id;
        this.userName = userName;
        this.competence = competence;
    }

    public User(String userName, String password) {
        this.userName = userName;
        this.password = password;
    }

    public User(int id, String userName, String password, String competence) {
        this.id = id;
        this.userName = userName;
        this.password = password;
        this.competence = competence;
    }

    public User(String userName, String password, String competence) {
        this.userName = userName;
        this.password = password;
        this.competence = competence;
    }

    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;
    }

    public String getCompetence() {
        return competence;
    }

    public void setCompetence(String competence) {
        this.competence = competence;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", password='" + password + '\'' +
                ", competence='" + competence + '\'' +
                '}';
    }
}

(3) JDBC工具类

package com.kxs.stu_manager.global;

import java.sql.*;


public class JdbcUtils {
    private static String URL = "jdbc:mysql://localhost:3306/kxs_data"; // 库名自行修改
    private static String USER = "root"; // 数据库用户名自行修改
    private static String PASSWORD = "toor"; // 密码自行修改

    // 构造方法私有化
    private JdbcUtils(){
    }

    // 注册驱动
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }
    }

    // 建立连接
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }

    // 释放资源
    public static void free(ResultSet rs, Statement st, Connection conn){
        try {
            if(null != rs){
                rs.close();
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally{
            try {
                if(null != st){
                    st.close();
                }
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }finally {
                try {
                    if(null != conn){
                        conn.close();
                    }
                } catch (SQLException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }

}

六、总结

以上就是我对这个学生信息管理系统的介绍,本文仅介绍了项目的效果展示及程序的一些设计思路,如果有错误欢迎大家指出,交流学习。

tips:如果大家觉得还不错,麻烦小伙伴们来一波免费的三连哦!!!👍👍👍

原文件我放在下方啦,有需要的小伙伴来个三连,拿去随便用👇👇👇(不许白嫖哦!!!😉

链接: https://pan.baidu.com/s/1loGI45PmkAkBNsYypHN3Uw
提取码:0624

来源地址:https://blog.csdn.net/LM0624/article/details/128721501

您可能感兴趣的文档:

--结束END--

本文标题: 史上最详细的JAVA学生信息管理系统(MySQL实现)

本文链接: https://lsjlt.com/news/556242.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 史上最详细的JAVA学生信息管理系统(MySQL实现)
    一、项目介绍 为了巩固Java的学习写了一个基于MVC设计模式的学生管理系统。 简单介绍一下MVC设计模式: 1、M也就是Model 模型层(也叫数据层)主要是通过这个类来进行数据的操作。 2、V是Views 视图层,主要就...
    99+
    2024-01-21
    java mysql mvc 数据库 Powered by 金山文档
  • 学生信息管理系统(JAVA+MYSQL)
    基于Java swing+MySQL实现学生信息管理系统:功能:1录入学生基本信息的功能; 2查询学生基本信息的功能; 3修改学生基本信息的功能 ;4删除学生基本信息的功能 ;5显示所有学生信息的功能;应付一般课设足矣,分享给大家。 通过百...
    99+
    2023-09-26
    java idea mysql
  • java+sqlserver实现学生信息管理系统
    目录一.实现效果二.实现代码1.DBUtil.java2.操作程序test.java前提: 1.建立了与sqlserver数据库的连接(JTDS连接sqlserver数据库的包jtd...
    99+
    2024-04-02
  • 【JAVA】学生信息管理系统
    目录 前言 一、环境搭建 二、功能实现 1.学生信息类的创建 2.学生信息的添加功能 3.学生信息的删除功能 4.学生信息的修改功能  5.学生信息的查看功能  三、主类的调用 1.界面的搭建 2.学生端和教师端 3.系统和功能的选择 总...
    99+
    2023-09-09
    java
  • Java实现简单学生信息管理系统
    最近在学习Java,所以写了个学生信息管理系统,话不多说,上代码。 Student.java: package com.mumu; public class Student {...
    99+
    2024-04-02
  • java怎样实现学生信息管理系统
    这篇文章将为大家详细讲解有关java怎样实现学生信息管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下 import java.util.Scanner;//导入jav...
    99+
    2023-05-30
    java
  • java+io+swing实现学生信息管理系统
    本文实例为大家分享了java+io+swing实现学生信息管理系统的具体代码,供大家参考,具体内容如下 说明: 1.开发环境基于eclipse外加windowbuilder插件。2....
    99+
    2024-04-02
  • Java实现学生信息管理系统IO版本
    学生信息管理系统IO版本代码实现(java),供大家参考,具体内容如下 之前写过的一个学生信息管理系统是用集合类来写的,但是不能实现代码在文档中的存储功能,每次运行过后都得重新输入数...
    99+
    2024-04-02
  • java控制台实现学生信息管理系统
    简介 最近学了java基础后对以前不会写的作业深有感触,想起以前各种在网上找资料找别人的代码参考,所以今天特地写了了简单的基于控制台的学生信息管理系统供还在学基础的同学参考,写的有问...
    99+
    2024-04-02
  • java+sqlserver如何实现学生信息管理系统
    小编给大家分享一下java+sqlserver如何实现学生信息管理系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前提:建立了与sqlserver数据库的连接(...
    99+
    2023-06-22
  • JavaScript+HTML实现学生信息管理系统
    目录一、前言二、效果图三、代码四、学生信息管理系统主界面一、前言 用数组来存储所有学生对象的信息,实现了双向更新,初始时(数组内的对象信息“填充界面”),后面的界面操作可以更新数组内...
    99+
    2024-04-02
  • JavaWeb实现学生信息管理系统(1)
    这是一个很简单的学生信息管理系统,会用到很多小知识,比如说: 数据库连接池 DBUtils JSP、EL、JSTL MVC设计模式 JavaWeb...
    99+
    2024-04-02
  • JavaWeb实现学生信息管理系统(2)
    本文接着上一篇,继续为大家分享了JavaWeb实现学生信息管理系统的第二篇,供大家参考,具体内容如下 今日任务:实现学生管理系统的查找和添加功能! 一、查询学生信息 1. index...
    99+
    2024-04-02
  • JavaWeb实现学生信息管理系统(3)
    本文接着第二篇,继续为大家分享了JavaWeb实现学生信息管理系统,供大家参考,具体内容如下 今日任务:实现学生管理系统的删除、更新、修改和模糊查询功能! 一、删除学生信息 点击超链...
    99+
    2024-04-02
  • python tkinter实现学生信息管理系统
    本文实例为大家分享了python tkinter实现学生信息管理系统的具体代码,供大家参考,具体内容如下 初学python,代码写的比较繁杂,系统功能还有完善的空间 系统使用了mys...
    99+
    2024-04-02
  • 用python实现学生信息管理系统
    用Python实现学生信息管理系统,供大家参考,具体内容如下 系统功能有: 1.录入,查找,删除,修改学生信息2.学生成绩排名3.显示全部学生信息 代码如下: filename = ...
    99+
    2024-04-02
  • Java web学生信息管理系统(jsp)
    🥞目录 🍬1 概述 1.1课程设计目的 1.2预备知识 JAVAWeb: MySQL: JSP: 1.3实训的内容和要求 🍬2 需求分析 2.1系统目标 2.2功能分析: 2.3开发环境: ...
    99+
    2023-09-16
    java javascript html5 mysql intellij-idea
  • java对象数组实现学生信息管理系统
    本文实例为大家分享了Java实现学生信息管理系统,供大家参考,具体内容如下 一、功能需求 case 10:添加学生 case 11:查找一个学生 case 12:根据编号更新学生基本...
    99+
    2024-04-02
  • Java实现学生信息管理系统(借助Array List)
    本文实例为大家分享了vue + element ui实现锚点定位的具体代码,供大家参考,具体内容如下 需求:   制作一个简单的学生信息管理系统 1、通过键盘选择操作进行添...
    99+
    2024-04-02
  • 基于JAVA的学生信息管理系统
    目录 前言 一、需求分析 二、开发环境、工具 1.开发语言 2.开发模式 三、系统需求分析 3.1系统的背景 3.2系统的功能需求 四、系统设计概要 4.1系统体系结构设计 4.2功能模块结构设计 五、数据库设计 1.学生信息数据表 2.班...
    99+
    2023-10-05
    java mysql eclipse 课程设计
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作