草庐IT

基于JAVA实现的简易学生信息管理系统(附源码)

梦如轨迹 2023-04-08 原文

一、前言    

       最近在学习JAVA,这几天跟着网上的视频学完基础知识之后,做了一个学生信息管理系统,写的比较普通,没太大亮点,希望可以给初学者一些参考经验,另外,如有不恰当的地方还请各位指正!

        学生信息管理系统主要包括:显示学生信息;添加学生信息;查找学生信息;删除学生信息;修改学生信息;按照成绩排序;统计学生总数。其中录入学生的信息包括学号、姓名、性别、年龄、出生日期、学院、成绩。

二、系统主要功能

        学生信息管理系统主要包括:

                1、显示学生信息;

                2、添加学生信息;

                3、查找学生信息;

                4、删除学生信息;

                5、修改学生信息;

                6、按照成绩排序;

                7、统计学生总数;

三、系统主要功能实现

        下面开始介绍代码,主要的代码处都给出了详细注释,如若有不懂的地方,请在评论区留言。

  • 学生信息管理系统功能菜单

        主界面函数代码部分,此函数主要将学生信息管理系统的功能键选择的提示信息打印出来组成了一个简易的登录界面。

实现方法具体如下:

static void show1(){
        System.out.println("********************************************************");
        System.out.println("**************        学生信息管理系统       **************");
        System.out.println("**************        1.显示学生信息        **************");
        System.out.println("**************        2.增加学生信息        **************");
        System.out.println("**************        3.删除学生信息        **************");
        System.out.println("**************        4.修改学生信息        **************");
        System.out.println("**************        5.查找学生信息        **************");
        System.out.println("**************        6.按照成绩排序        **************");
        System.out.println("**************        7.统计学生信息        **************");
        System.out.println("**************        0.退出系统           **************");
        System.out.println("********************************************************");
        System.out.print("请选择其功能:");
    }

实现效果如图所示:

  • 显示学生信息

        此函数是将初始存储的学生信息全部显示出来。

实现方法具体如下:

static void show(){                     //显示学生信息
        System.out.println("******************************************学生信息表************************************************");
        System.out.println("序号\t\t\t学号\t\t\t姓名\t\t\t\t性别\t\t\t年龄\t\t\t出生日期\t\t\t学院\t\t\t\t成绩");
        for (int i = 0; i < students.size(); i++) {
            final Student student = students.get(i);
            System.out.println(i + 1 + "\t\t" + student.getId() + "\t\t" + student.getName() + "\t\t\t" + student.getSex() + "\t\t\t"
                    +student.getAge() + "\t\t\t" +student.getBirthday() + "\t\t" + student.getCollege() + "\t\t\t" + student.getGrade());
        }
        System.out.println("**************************************************************************************************");
    }

实现效果如图所示:

  • 添加学生信息

实现方法具体如下:

static void add(){                      //增加学生信息
        System.out.print("请输入您要添加学生的个数:");
        int s = sc.nextInt();
        for (int i = 0; i < s; i++) {
            System.out.print("请输入您要添加的学号:");
            String str = sc.next();
            int count = 0;
            for (final Student student : students) {
                if (student.getId().equals(str)) {
                    System.out.println("已有此人!");
                    break;
                }
                count++;
            }
            if (count == students.size()){
                System.out.print("姓名:");
                String str1 = sc.next();
                System.out.print("性别:");
                String str2 = sc.next();
                System.out.print("年龄:");
                String str3 = sc.next();
                System.out.print("出生日期(yyyy-mm-dd):");
                String str4 = sc.next();
                System.out.print("学院:");
                String str5 = sc.next();
                System.out.print("成绩:");
                int str6 = sc.nextInt();
                Student student = new Student(str,str1,str2,str3,str4,str5,str6);
                students.add(student);
                System.out.println("添加成功!");
            }
        }
    }

实现效果如图所示:

  • 查找学生信息

        此函数主要功能是查询时分为按学号查询,若查无此人则输出提示信息。

实现方法具体如下:

static void search(){                          //查找学生信息
        System.out.print("请输入您要查找的学号:");
        String str = sc.next();
        int count = 0;
        for (final Student student : students) {
            if (student.getId().equals(str)) {
                System.out.println(student.getId() + "\t\t" + student.getName() + "\t\t\t" + student.getSex() + "\t\t\t"
                        + student.getAge() + "\t\t\t" + student.getBirthday() + "\t\t" + student.getCollege() + "\t\t\t" + student.getGrade());
                break;
            }
            count++;
        }
        if (count == students.size()){
            System.out.println("查无此人!");
        }
    }

实现效果如图所示:

  • 删除学生信息

        此函数主要功能是执行删除操作,输入学号进行查找,查找到学生信息之后,对学生信息进行删除。

实现方法具体如下:

static void delete(){                       //删除学生信息
        System.out.print("请输入您要删除的学号:");
        String str = sc.next();
        int a = students.size();
        int count = 0;
        for (int i = 0; i < students.size(); i++) {
            final Student student = students.get(i);
            if (student.getId().equals(str)){
                students.remove(i);
                System.out.println("删除成功!");
                break;
            }
            count++;
        }
        if (count == a){
            System.out.println("查无此人!");
        }
    }

实现效果如图所示:

  • 修改学生信息

        此函数的主要功能是对学生信息进行修改,当输入学号后,查询到学生信息之后,对学生信息进行修改。

实现方法具体如下:

static void modify() {                          //修改学生信息
        System.out.print("请输入您要修改的学号:");
        String str = sc.next();
        int count = 0;
        for (final Student student : students) {
            if (student.getId().equals(str)) {
                while (true) {
                    System.out.println("**************************************");
                    System.out.println("**********      1.姓名       *********");
                    System.out.println("**********      2.性别       *********");
                    System.out.println("**********      3.出生日期    *********");
                    System.out.println("**********      4.年龄       *********");
                    System.out.println("**********      5.学院       *********");
                    System.out.println("**********      6.成绩       *********");
                    System.out.println("**************************************");
                    System.out.print("请输入您要修改的选项:");
                    int a = sc.nextInt();
                    if (a == 1 || a == 2 || a == 3 || a == 4 || a == 5 || a == 6) {
                        System.out.print("修改为:");
                        String str0 = sc.next();
                        switch (a) {
                            case 1 -> student.setName(str0);
                            case 2 -> student.setSex(str0);
                            case 3 -> student.setBirthday(str0);
                            case 4 -> student.setAge(str0);
                            case 5 -> student.setCollege(str0);
                            case 6 -> student.setGrade(Integer.parseInt(str0));
                        }
                        System.out.println("修改成功!");
                        break;
                    } else {
                        System.out.println("请输入正确的序号!");
                    }
                }
                break;
            }
            count++;
        }
        if (count == students.size()){
            System.out.println("查无此人!");
        }
    }

实现效果如图所示:

  • 按照成绩排序

        此函数主要是根据学生成绩按照降序排序。

实现方法具体如下:

static void sort(){                         //按照成绩排序
        int [][]grade = new int[students.size()][2];
        for (int i = 0; i < students.size(); i++) {
            final Student student = students.get(i);
            grade[i][0] = student.getGrade();
            grade[i][1] = i;
        }
        for (int i = 0; i < students.size(); i++) {
            for (int j = 1; j < students.size() - i; j++) {
                if (grade[j - 1][0] > grade[j][0]){
                    int a = grade[j][0];
                    grade[j][0] = grade[j - 1][0];
                    grade[j - 1][0] = a;
                    int c = grade[j][1];
                    grade[j][1] = grade[j - 1][1];
                    grade[j - 1][1] = c;
                }
            }
        }
        for (int i = students.size() - 1; i >= 0; i--) {
            final Student student = students.get(grade[i][1]);
            System.out.println(student.getId() + "\t\t" + student.getName() + "\t\t\t" + student.getSex() + "\t\t\t"
                    + student.getAge() + "\t\t\t" + student.getBirthday() + "\t\t" + student.getCollege() + "\t\t\t" + student.getGrade());
        }
    }

实现效果如图所示:

  • 统计学生总数

实现方法具体如下: 

static void count(){                        //统计学生总数
        System.out.println("学生总人数为:" + students.size());
    }

实现效果如图所示:

完整代码:

Student.java

public class Student {
    private String id;                          //学号
    private String name;                        //姓名
    private String sex;                         //性别
    private String age;                         //年龄
    private String birthday;                    //出生日期
    private String college;                     //学院
    private int grade;                          //成绩

    public Student() {
    }

    public Student(String id, String name, String sex, String age, String birthday, String college, int grade) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.birthday = birthday;
        this.college = college;
        this.grade = grade;
    }

    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 getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public String getCollege() {
        return college;
    }

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

    public int getGrade() {
        return grade;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }
}

test.java

import java.util.ArrayList;
import java.util.Scanner;

public class test {
    static ArrayList<Student> students = new ArrayList<>();                 //定义学生集合
    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        show0();
        while (true) {
            show1();
            int a = sc.nextInt();
            if (a == 0){
                break;
            }
            switch (a) {
                case 1 -> show();
                case 2 -> add();
                case 3 -> delete();
                case 4 -> modify();
                case 5 -> search();
                case 6 -> sort();
                case 7 -> count();
                default -> System.out.println("请输入正确序号!");
            }
        }
    }

    static void show0(){                    //录入初始学生信息
        Student student = new Student("54213460501","许雅静","男","45","2002-01-24","软件学院",98);
        Student student1 = new Student("54213460502","段清堂","女","25","2002-07-24","通信学院",78);
        Student student2 = new Student("54213460503","曲双红","男","36","2002-04-14","外语学院",69);
        Student student3 = new Student("54213460504","伍四六","女","29","2001-09-21","国教学院",97);
        Student student4 = new Student("54213460505","葛瑞格","男","45","2002-01-24","艺设学院",82);
        students.add(student);students.add(student1);students.add(student2);students.add(student3);students.add(student4);
    }

    static void show1(){
        System.out.println("********************************************************");
        System.out.println("**************        学生信息管理系统       **************");
        System.out.println("**************        1.显示学生信息        **************");
        System.out.println("**************        2.增加学生信息        **************");
        System.out.println("**************        3.删除学生信息        **************");
        System.out.println("**************        4.修改学生信息        **************");
        System.out.println("**************        5.查找学生信息        **************");
        System.out.println("**************        6.按照成绩排序        **************");
        System.out.println("**************        7.统计学生信息        **************");
        System.out.println("**************        0.退出系统           **************");
        System.out.println("********************************************************");
        System.out.print("请选择其功能:");
    }
    static void show(){                     //显示学生信息
        System.out.println("******************************************学生信息表************************************************");
        System.out.println("序号\t\t\t学号\t\t\t姓名\t\t\t\t性别\t\t\t年龄\t\t\t出生日期\t\t\t学院\t\t\t\t成绩");
        for (int i = 0; i < students.size(); i++) {
            final Student student = students.get(i);
            System.out.println(i + 1 + "\t\t" + student.getId() + "\t\t" + student.getName() + "\t\t\t" + student.getSex() + "\t\t\t"
                    +student.getAge() + "\t\t\t" +student.getBirthday() + "\t\t" + student.getCollege() + "\t\t\t" + student.getGrade());
        }
        System.out.println("**************************************************************************************************");
    }

    static void add(){                      //增加学生信息
        System.out.print("请输入您要添加学生的个数:");
        int s = sc.nextInt();
        for (int i = 0; i < s; i++) {
            System.out.print("请输入您要添加的学号:");
            String str = sc.next();
            int count = 0;
            for (final Student student : students) {
                if (student.getId().equals(str)) {
                    System.out.println("已有此人!");
                    break;
                }
                count++;
            }
            if (count == students.size()){
                System.out.print("姓名:");
                String str1 = sc.next();
                System.out.print("性别:");
                String str2 = sc.next();
                System.out.print("年龄:");
                String str3 = sc.next();
                System.out.print("出生日期(yyyy-mm-dd):");
                String str4 = sc.next();
                System.out.print("学院:");
                String str5 = sc.next();
                System.out.print("成绩:");
                int str6 = sc.nextInt();
                Student student = new Student(str,str1,str2,str3,str4,str5,str6);
                students.add(student);
                System.out.println("添加成功!");
            }
        }
    }

    static void delete(){                       //删除学生信息
        System.out.print("请输入您要删除的学号:");
        String str = sc.next();
        int a = students.size();
        int count = 0;
        for (int i = 0; i < students.size(); i++) {
            final Student student = students.get(i);
            if (student.getId().equals(str)){
                students.remove(i);
                System.out.println("删除成功!");
                break;
            }
            count++;
        }
        if (count == a){
            System.out.println("查无此人!");
        }
    }

    static void modify() {                          //修改学生信息
        System.out.print("请输入您要修改的学号:");
        String str = sc.next();
        int count = 0;
        for (final Student student : students) {
            if (student.getId().equals(str)) {
                while (true) {
                    System.out.println("**************************************");
                    System.out.println("**********      1.姓名       *********");
                    System.out.println("**********      2.性别       *********");
                    System.out.println("**********      3.出生日期    *********");
                    System.out.println("**********      4.年龄       *********");
                    System.out.println("**********      5.学院       *********");
                    System.out.println("**********      6.成绩       *********");
                    System.out.println("**************************************");
                    System.out.print("请输入您要修改的选项:");
                    int a = sc.nextInt();
                    if (a == 1 || a == 2 || a == 3 || a == 4 || a == 5 || a == 6) {
                        System.out.print("修改为:");
                        String str0 = sc.next();
                        switch (a) {
                            case 1 -> student.setName(str0);
                            case 2 -> student.setSex(str0);
                            case 3 -> student.setBirthday(str0);
                            case 4 -> student.setAge(str0);
                            case 5 -> student.setCollege(str0);
                            case 6 -> student.setGrade(Integer.parseInt(str0));
                        }
                        System.out.println("修改成功!");
                        break;
                    } else {
                        System.out.println("请输入正确的序号!");
                    }
                }
                break;
            }
            count++;
        }
        if (count == students.size()){
            System.out.println("查无此人!");
        }
    }

    static void search(){                          //查找学生信息
        System.out.print("请输入您要查找的学号:");
        String str = sc.next();
        int count = 0;
        for (final Student student : students) {
            if (student.getId().equals(str)) {
                System.out.println(student.getId() + "\t\t" + student.getName() + "\t\t\t" + student.getSex() + "\t\t\t"
                        + student.getAge() + "\t\t\t" + student.getBirthday() + "\t\t" + student.getCollege() + "\t\t\t" + student.getGrade());
                break;
            }
            count++;
        }
        if (count == students.size()){
            System.out.println("查无此人!");
        }
    }

    static void sort(){                         //按照成绩排序
        int [][]grade = new int[students.size()][2];
        for (int i = 0; i < students.size(); i++) {
            final Student student = students.get(i);
            grade[i][0] = student.getGrade();
            grade[i][1] = i;
        }
        for (int i = 0; i < students.size(); i++) {
            for (int j = 1; j < students.size() - i; j++) {
                if (grade[j - 1][0] > grade[j][0]){
                    int a = grade[j][0];
                    grade[j][0] = grade[j - 1][0];
                    grade[j - 1][0] = a;
                    int c = grade[j][1];
                    grade[j][1] = grade[j - 1][1];
                    grade[j - 1][1] = c;
                }
            }
        }
        for (int i = students.size() - 1; i >= 0; i--) {
            final Student student = students.get(grade[i][1]);
            System.out.println(student.getId() + "\t\t" + student.getName() + "\t\t\t" + student.getSex() + "\t\t\t"
                    + student.getAge() + "\t\t\t" + student.getBirthday() + "\t\t" + student.getCollege() + "\t\t\t" + student.getGrade());
        }
    }

    static void count(){                        //统计学生总数
        System.out.println("学生总人数为:" + students.size());
    }
}

四、总结

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

有关基于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 - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

  6. 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

  7. 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

  8. 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)我

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

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

  10. 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

随机推荐