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

这篇具有很好参考价值的文章主要介绍了史上最详细的JAVA学生信息管理系统(MySQL实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、项目介绍

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

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

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

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

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

开发工具:IDEA、MySQL-5.5、Navicat、mysql-connector-java-5.0.8

二、项目分析

1.目录结构

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

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

2.需求分析

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

学生处理:

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

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

用户处理:

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

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

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

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

三、数据库建表

1.创建学生表

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

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

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

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

2.用户表

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

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

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

四、项目介绍及效果图

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

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

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

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

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

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

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

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

1.登录界面(效果图)

(1) 注册

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

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

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

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

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

(2) 登录

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

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

2.权限说明(效果图)

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

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

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

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

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

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

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

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

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

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

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

(1) 查询用户信息

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

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

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

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

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

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

(2) 修改用户信息

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

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

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

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

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

(3) 删除用户信息

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

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

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

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

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

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

(1) 查找学生信息

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

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

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

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

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

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

(2) 增加学生信息

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

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

可以找到该学生信息

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

(3) 修改学生信息

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

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

可以看出信息修改成功

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

(4) 删除学生信息

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

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

确认删除成功

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

五、项目思路及部分代码

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;

/**
 * @ClassName StuManagerMain
 * @Description: TODO 主方法类
 * @Author: 2119475835@qq.com
 * @Date: 2023/1/9
 */
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<User> 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);
            }
        }

    }
}
/**
     * 用户操作界面 (登录或注册)
     * 视图层
     * @return 用户选择的操作数
     */
    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来进行程序调度

/**
     * 用户登录或注册的调度器
     * 调度器
     * @param num 用户选择的操作数
     * @return 返回注册或登录的用户
     */
    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;
    }

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

/**
     * 填写注册信息
     * 视图层
     * @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);
    }

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

/**
     * 将用户输入的信息对象添加到数据库中
     * @param regUser 用户注册的信息
     * @return 成功 - 返回一个全部信息的对象 失败 - 返回null
     */
    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;

/**
 * @ClassName Student
 * @Description: TODO 学生类
 * @Author: 2119475835@qq.com
 * @Date: 2023/1/9
 */
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;

/**
 * @ClassName User
 * @Description: TODO 用户类
 * @Author: 2119475835@qq.com
 * @Date: 2023/1/9
 */
public class User {
    private int id; // id
    private String userName; // 用户名
    private String password; // 密码
    private String competence; // 权限 0:超级管理员 1:普通管理员 2:普通用户
    /**
     * 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.*;

/**
 * @ClassName JdbcUtils
 * @Description: TODO JDBC的工具类
 * @Author: 2119475835@qq.com
 * @Date: 2023/1/9
 */
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://www.toymoban.com/news/detail-479082.html

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

到了这里,关于史上最详细的JAVA学生信息管理系统(MySQL实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学生信息管理系统——JAVA

          学生信息管理系统是一个实现信息管理的多功能平台,本文主要介绍一个简易功能的java 程序。 1、添加学生信息。 2、删除学生信息。 3、查看学生信息。 4、修改学生信息。 1、创建一个标准的学生类 2、分布实现功能         (1)添加学生信息         (2)删除

    2024年02月08日
    浏览(53)
  • java学生成绩管理信息系统

    学生成绩管理信息系统是一个基于Java Swing的桌面应用程序,旨在方便学校、老师和学生对学生成绩进行管理和查询。本文档将提供系统的详细说明,包括系统特性、使用方法和技术实现。 添加学生信息:录入学生基本信息,包括学号、姓名、班级等。 编辑学生信息:修改学

    2024年01月18日
    浏览(52)
  • Java实训:学生信息管理系统

    利用Java完成一个学生信息程序的简单改动。 添加学生信息 修改学生信息 查询学生信息 删除学生信息 1.学号 2.姓名 3.班级 4.专业 5.电话号码 当然,这只是简单的包括几个信息,其他的信息,如果也想要可以自己加入 在test包里建立student(学生实体类) (1)无参构造方法 (

    2024年02月05日
    浏览(41)
  • 基于JAVA的学生信息管理系统

    目录 前言 一、需求分析 二、开发环境、工具 1.开发语言 2.开发模式 三、系统需求分析 3.1系统的背景 3.2系统的功能需求 四、系统设计概要 4.1系统体系结构设计 4.2功能模块结构设计 五、数据库设计 1.学生信息数据表 2.班级信息数据表 3.用户信息数据表 六、管理系统详细设

    2023年04月23日
    浏览(83)
  • 学生信息管理系统完整版(JAVA)

    创建学生管理系统,先定义一个类,代码如下 : 学生管理系统,代码如下: 再创建一个学生管理系统登录界面,代码如下: 创建学生管理系统登录注册页面(此代码已调用学生管理系统),代码如下: 代码最终运行结果如下;

    2024年02月11日
    浏览(41)
  • Java课设--学生信息管理系统(例1)

    前提 一、运行效果 二、Text实现类 三、Manage选择类 四、StudentWay学生方法类 五、StudnetSql数据库类 例1为无使用GUI图形界面,例2使用GUI图形界面! 首先自己的JDBC驱动已经接好了,连接自己的数据库没有问题。连接数据库可以看其他博主教程,不是很难。 其次我用的是idea+SQ

    2024年02月14日
    浏览(49)
  • 基于java大学生兼职信息管理系统

    目前的兼职中介不仅损害了大学生的经济利益,让他们对网上兼职避而远之,与此同时,很多客户比如家里有小孩子的家长都想找一个安全、可靠的家教帮助孩子提高成绩,通过中介找到的既不安全可靠,价格也相对昂贵。因此,为大学生与客户之间搭建一个能直接联系的沟

    2023年04月08日
    浏览(48)
  • JAVA学生信息管理系统(数据库实现)

    这次的项目是用数据库实现学生的信息管理系统,有三步组成,写项目链接数据库实现相关的操作 开发工具: eclipse、MySQL、navicat、mysql-connector-java-8.0.27     (1)主页面   (2)添加界面   (3)删除界面    (4)修改界面  (5)查找界面 (6)数据库链接   添加Java驱动包

    2024年02月11日
    浏览(45)
  • Java基础——学生成绩信息管理系统(简单实现)

    1、 定义一个学生类 Student,包含姓名、成绩信息; 2、使用 ArrayList集合存储学生对象; 3、 对集合中的元素进行增删查改的操作。 学生类可以包含姓名、成绩、学号、年龄等等,这里只包含了前两项学生类属性。 在该类中定义了简单的增、删、查、改的方法。 其中,遍历集

    2024年02月11日
    浏览(35)
  • JAVA GUI 学生信息管理系统(Swing)

    一、JAVA GUI 项目介绍 ​ GUI 是指图形用户界面显示的计算机操作用户界面,GUI主要有两个核心库,分别是AWT和Swing,本项目就是使用Swing进行开发。项目基于Swing,使用JDBC操作数据库,并且在程序运行阶段创建数据库表结构信息,可做为JAVA课程实训。 容器 ​ 容器是组件的子

    2024年02月04日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包