草庐IT

【JAVA】学生信息管理系统

Lx_Hy_ 2023-04-18 原文

目录

前言

一、环境搭建

二、功能实现

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

总结       

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

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

有关【JAVA】学生信息管理系统的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  4. java - 等价于 Java 中的 Ruby Hash - 2

    我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/

  5. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  6. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  7. java - 我的模型类或其他类中应该有逻辑吗 - 2

    我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我

  8. java - 什么相当于 ruby​​ 的 rack 或 python 的 Java wsgi? - 2

    什么是ruby​​的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht

  9. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  10. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

随机推荐