【JAVA】学生信息管理系统

news2024/12/24 2:20:39

目录

前言

一、环境搭建

二、功能实现

1.学生信息类的创建

2.学生信息的添加功能

3.学生信息的删除功能

4.学生信息的修改功能 

5.学生信息的查看功能

 三、主类的调用

1.界面的搭建

2.学生端和教师端

3.系统和功能的选择

总结       


前言

JAVA实现的学生信息管理系统(包含教师端和学生端)

教师端有登录过程,功能包括对学生信息的增删改查

学生端无登录过程,功能只包括查看信息


一、环境搭建

  1. 在idea创建一个工程文件,在工程文件下创建一个model模块,在model模块下载创建三个package包分别用来存放(Management)管理信息包、(function)功能包、(information)学生信息对象类,再在三个包中创建如下图所示文件
  2. 容器选择:因为本次使用的是自己创建的Student类并且信息数量不确定,所以选择集合作为Student类的容器

二、功能实现

1.学生信息类的创建

       为了防止属性不能被外类随意访问,因此采用private对学生类中的属性进行修饰并且进行创建set、get方法以便于调用属性,再创建打印数据方法,方便数据打印,代码如下:

public class Student {
    private String id;
    private String name;
    private String college;
    private String major;

    public Student() {}

    public Student(String id, String name, String college, String major) {
        this.id = id;
        this.name = name;
        this.college = college;
        this.major = major;
    }

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getCollege() {
        return college;
    }

    public void setCollege(String college) {
        this.college = college;
    }

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public void information_printf() {
        System.out.printf("%-16s%-13s" + "\t" + "%-12s" + "\t" + "%s\n", getId(), getName(), getCollege(), getMajor());
    }
}

2.学生信息的添加功能

       在Addtion添加类中,先创建集合容器用来存放数据,并且键盘录入的数据(使用Scanner()方法),再进行对输入的判断是否合法,最后将录入的数据存入集合中,具体实现方法如下:

    public Student Add_information(ArrayList<Student> newList) {
        Scanner sc = new Scanner(System.in);
        Student stu = new Student();
        System.out.println("请输入学生学号:");
        //学生学号信息输入检查
        add_check_id(newList, sc, stu);
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        stu.setName(name);
        System.out.println("请输入学生所在学院(4-6字):");
        //学生学院信息输入检查
        add_check_college(sc, stu);
        //学生专业班级信息输入检查
        System.out.println("请输入学生专业班级(4-8字):");
        add_check_major(sc, stu);
        return stu;
    }

实现效果如图:

3.学生信息的删除功能

       在Delete删除类中,先创建集合容器用来存放数据,并且键盘录入的数据(使用Scanner()方法),再进行信息的判断是否存在,最后将需要删除的信息从集合中删除,具体实现方法如下:

public ArrayList<Student> Delete_information(ArrayList<Student> newList) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的学生的学号:");
        while (true) {
            String id = sc.next();
            if (getList_id(newList, id)) {
                System.out.println("学生信息删除成功!");
                break;
            }
            System.out.println("该学生信息不存在,请重新输入:");
        }
        return newList;
    }

 实现效果如图:

4.学生信息的修改功能 

       在Modify修改类中,先创建集合容器用来存放数据,并且键盘录入的数据(使用Scanner()方法),再进行信息的判断是否存在,再将新录入的数据代替之前的数据,最后将新的数据重新添加至集合中,具体实现方法如下:

public ArrayList<Student> Modify_information(ArrayList<Student> newList) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改的学生的学号:");
        while (true) {
            String id = sc.next();
            if (getList_id(newList, id)) {
                System.out.println("学生信息修改成功!");
                break;
            }
            System.out.println("该学生信息不存在,请重新输入:");
        }
        return newList;
    }

 实现效果如图:

5.学生信息的查看功能

       在View查看类中,先创建集合容器用来存放数据,利用for循环对集合遍历并且调用Student类中的information_printf()方法打印出所有学生信息,具体实现方法如下:

public void View_information(ArrayList<Student> newList) {
        for (int i = 0; i < newList.size(); i++) {
            Student s = newList.get(i);
            s.information_printf();
        }
    }

 实现效果如图:

 三、主类的调用

1.界面的搭建

使用System.out.println()方法输出界面,具体实现方法如下:

//选择登录系统界面           
System.out.println("----------学生信息管理系统----------");
System.out.println("* 1、学生登录  2、教师登录  3、退出  *");
System.out.println("---------------------------------");

//学生端界面
System.out.println("----------学生信息管理系统----------");
System.out.println("*     1、查看信息      2、返回     *");
System.out.println("---------------------------------");

//教师登录界面
System.out.println("----------学生信息管理系统----------");
System.out.println("*1、添加信息  2、删除信息  3、修改信息*");
System.out.println("*4、查看信息  5、返回              *");
System.out.println("---------------------------------");

2.学生端和教师端

       学生端只能查看学生信息,教师端可以对信息进行增加、删除、修改、查看四个功能,并且登录教师端需要输入用户名和密码;先使用Scanner()方法在控制台接收用户键盘录入的数据,再将输入的数据通过对字符串的判断实现是否登陆成功。具体实现方法如下:

//教师端登录
public static void Login_teacher(ArrayList<Student> list) {
        Scanner sc1 = new Scanner(System.in);
        Scanner sc2 = new Scanner(System.in);
        //已知用户名密码
        String name = "Login";
        String passwords = "123456";
        //获取用户名密码
        while (true) {
            System.out.println("请输入用户名:");
            String username = sc1.next();
            System.out.println("请输入密码:");
            String user_password = sc2.next();
            if (name.equals(username) && password.equals(user_password)) {
                System.out.println("登陆成功");
                Management_teacher(list);
                break;
            } else {
                System.out.println("用户名或密码错误,请重新输入:");
            }
        }
    }

 实现效果如图:

   

3.系统和功能的选择

       先使用Scanner()方法在控制台接收用户键盘录入的数据,再将输入的数据,通过switch(int flag) case :方法进行判断选择对应的系统或对应的功能,具体实现方法如下图:

//登陆系统选择
Scanner sc = new Scanner(System.in);
        wc:
        while (true) {
            System.out.println("----------学生信息管理系统----------");
            System.out.println("* 1、学生登录  2、教师登录  3、退出  *");
            System.out.println("---------------------------------");
            int flag = sc.nextInt();
            switch (flag) {
                case 1:
                    Management_student(list);
                    break;
                case 2:
                    Login_teacher(list);
                    break;
                case 3:
                    break wc;
                default:
                    System.out.println("输入有误,请重新输入:");
                    break;
            }
        }


//学生功能选择
Scanner sc = new Scanner(System.in);
        wc2:
        while (true) {
            System.out.println("----------学生信息管理系统----------");
            System.out.println("*     1、查看信息      2、返回     *");
            System.out.println("---------------------------------");
            int flags = sc.nextInt();
            switch (flags) {
                case 1:
                    view_Student_information(list);
                    break;
                case 2:
                    break wc2;
            }
        }


//教师端功能选择
Scanner sc = new Scanner(System.in);
        wc:
        while (true) {
            System.out.println("----------学生信息管理系统----------");
            System.out.println("*1、添加信息  2、删除信息  3、修改信息*");
            System.out.println("*4、查看信息  5、返回              *");
            System.out.println("---------------------------------");
            int flag = sc.nextInt();
            switch (flag) {
                case 1://学生信息的添加
                    add_Student_information(list);
                    break;
                case 2://学生信息的删除
                    delete_Student_information(list);
                    break;
                case 3://学生信息的修改
                    modify_Student_information(list);
                    break;
                case 4://学生信息的查询
                    view_Student_information(list);
                    break;
                case 5:
                    break wc;
                default:
                    System.out.println("输入有误,请重新输入:");
                    break;
            }
        }

总结       

       以上就是我实现学生信息管理系统的方案,本文仅仅介绍了实现方案及制作流程,仅供参考,若有问题请帮忙留言指出,欢迎交流学习。

需要所有源文件的或者私人订制的可以私聊

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

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

相关文章

8.6 socket套接字及TCP的实现框架

socket套接字 目录 socket套接字 体系结构的两种形式 几种常见的网络编程接口 socket套接字 socket常用API介绍 socket套接字 三元组【IP地址&#xff0c;端口&#xff0c;协议】 地址族结构体 套接字类型 TCP通信的实现过程 体系结构的两种形式 网络的体系结构 (N…

保护云环境:云渗透测试和安全策略探究

随着云计算技术的快速发展&#xff0c;越来越多的组织将他们的数据和应用程序迁移到云端。然而&#xff0c;与此同时&#xff0c;云安全也面临着新的挑战。云渗透测试是一种评估云环境安全性的方法&#xff0c;它帮助组织发现并解决可能存在的漏洞和弱点。在本文中&#xff0c;…

docker - 部署java/python项目

目录 1、docker - 部署 java 项目 1. 创建 mysql 容器 2. 验证mysql&#xff0c;dbserver 连接 mysql &#xff0c;服务器ip:3306 ,账户&#xff1a;root 密码&#xff1a;123456 3. 创建tomcat容器 4. 验证&#xff1a;http://ip:80 5. 开发项目war包&#xff0c;放到to…

【MOOC 作业】第2章 应用层

不是标答也不是参考答案 仅从个人理解出发去做题 1、(20分) 什么是持久性连接&#xff1f;什么是非持久性连接&#xff1f;持久性连接与非持久性连接区别如何&#xff1f; 持久性连接&#xff1a;每个请求/响应对都经同一个 TCP 连接发送。非持久性连接&#xff1a;每个请求/…

【1401. 圆和矩形是否有重叠】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个以 (radius, xCenter, yCenter) 表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2) &#xff0c;其中 (x1, y1) 是矩形左下角的坐标&#xff0c;而 (x2, y2) 是右上角的坐标。 如果圆和矩…

灰狼优化算法GWO,优化VMD,适应度函数为最小样本熵或最小包络熵(可自行选择,代码已集成好,很方便修改)包含MATLAB源代码

近期评论区有小伙伴私信需要灰狼优化算法GWO法化VMD的&#xff0c;所以打算再写一篇。 与之前的文章不同&#xff0c;这篇文章作者考虑到&#xff0c;大家有可能会以最小样本熵或最小包络熵为适应度函数的&#xff0c;在这个程序中将会直接把样本熵和包络熵集成&#xff0c;在…

了解Facebook的算法如何工作,提高您的帖子曝光率

Facebook是全球最大的社交媒体平台之一&#xff0c;每天有数亿用户在上面发布内容、互动交流。然而&#xff0c;由于用户数量巨大&#xff0c;每天产生的信息量也是相当惊人的。 为了让用户看到最有用和最相关的内容&#xff0c;Facebook采用了一种复杂的算法来过滤和排序用户…

迅为RK3568开发板Buildroot 系统设置状态栏

Weston 支持在 weston.ini 配置文件的 shell 段设置状态栏的背景色、位置,以及在 launcher 段设置快捷启动程序&#xff0c;修改文件系统的/etc/xdg/weston/weston.ini 文件&#xff0c;如下所示&#xff1a; [shell] # 颜色格式为 ARGB8888 panel-color0xff002244 # top|…

【新星计划回顾】第八篇学习-多表联表查询(完结)

&#x1f3c6;&#x1f3c6;时间过的真快&#xff0c;这是导师回顾新星计划学习的第八篇文章&#xff01; 在学习过程中&#xff0c;学员们也咨询了很多问题&#xff0c;我把一些问题整理以文章形式总结分享下。 最近这段时间非常忙&#xff0c;虽然导师首次参与新星计划活动已…

[内核笔记1]内核文件结构与缓存——inode和对应描述

由来&#xff1a;公司内部外网记录日志的方式现在都是通过Nginx模块收到数据发送到系统消息队列&#xff0c;然后由另外一个进程来从消息队列读取然后写回磁盘这样的操作&#xff0c;尽量的减少Nginx的阻塞。 但是由于System/V消息队列在使用前需要规定消息长度&#xff0c;且…

从古欧洲的四大族群变迁梳理欧洲两千年历史脉络

我们看今天的欧洲&#xff0c;不难发现有几种完全不同的生活方式和行为习惯&#xff0c;以北欧三国再加英德与荷兰等国人为代表&#xff0c;他们信奉新教&#xff0c;勤劳&#xff0c;做事一丝不苟&#xff0c;颇为绅士&#xff0c;所以瑞典、英国、德国创造出了极其辉煌的工业…

canvas判断画笔是否铺满区域

判断画布形状是否填满和百分比 <body> <canvas id"myCanvas" width"300" height"150" style"border:1px solid #d3d3d3;"> </canvas> <script> var cdocument.getElementById("myCanvas"); var ctx…

智慧水务调度系统-智慧水务大数据可视化管理系统

平台概述 智慧水务调度系统平台&#xff08;智慧水务大数据可视化管理系统平台&#xff09;是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心&#xff0c;以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧…

数据库模型设计案例分享(GaussDB版)

目录 一、前言 二、应用系统数据库设计的基本流程 三、数据库模型设计 1、概念结构设计阶段 2、逻辑结构设计阶段 3、物理结构设计阶段 四、小结 一、前言 GaussDB数据库是一款企业级分布式数据库&#xff0c;支持集中式和分布式两种部署形态。它面向金融互联网交易和政…

面试官:说下简历中提到的优化……

作者&#xff1a;张力尹 先来点废话&#xff1a; 听说最近 Android 岗位变多了&#xff0c;你去面试了么&#xff1f; 面试官&#xff1a;你简历中提到了卡顿优化&#xff0c;做了哪些优化呢&#xff0c;展开说说。 你&#xff1a;哦&#xff0c;脑子飞速闪过网上的文章&#x…

Python模块pytest全局初始化和局部初始化前置后置操作

在 pytest 中&#xff0c;我们可以通过 conftest.py 文件来实现全局的前置和后置操作。 conftest.py 文件是一个特殊的 pytest 文件&#xff0c;它可以定义一些 fixture 和钩子函数&#xff0c;这些 fixture 和钩子函数可以在当前目录及其子目录下的所有测试文件中使用。 下面…

VR全景如何制作,可以用在哪些领域?

引言&#xff1a; 虚拟现实&#xff08;VR&#xff09;全景制作正在以惊人的速度改变着我们的感官体验。通过VR全景技术&#xff0c;我们可以身临其境地探索虚拟世界&#xff0c;感受前所未有的沉浸式体验。 一&#xff0e;如何进行VR全景制作 1.什么是VR全景制作&#xff1f…

【雕爷学编程】Arduino动手做(127)---2004A LCD液晶屏模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

【状态估计】基于卡尔曼滤波器和扩展卡尔曼滤波器用于 INS/GNSS 导航、目标跟踪和地形参考导航研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

计算机网络——自顶向下方法(第五章学习记录)

本章学习网络层&#xff1a;控制平面 控制平面作为一种网络范围的逻辑&#xff0c;不仅控制沿着从源主机到目的主机的端到端路径间路由器如何转发数据报&#xff0c;而且控制网络层组件和服务如何配置和管理。 概述 通过前面的学习&#xff0c;我们已经知道转发表&#xff0…