【JAVASE开发】JAVA项目(学生管理系统)

简介: 这里很明显存放的是我们的数据,那就 new 一个StudentDataBase,声明学号(stuNo)、姓名(stuName)、班级(stuClass)、性别(stuSex)、年龄(stuSex)、分数(stuScore),有参与无参的构造方法,getter 与 setter 方法、add 方法、print(输出)方法。......

  哈喽~大家好呀,首先感谢大家的支持,从本专栏开始,我们就开始了从零基础到就业实战的篇章了,首先是我们的第一阶段【JAVASE开发】,先来个小项目,练练手。


一、前言

我们先来看看需求

image.png

image.png

再来看看效果

image.png

image.png

image.png

image.pngimage.gif

image.png

我这里采用了 MVC 模式 M(Model 存放数据)、V(Veiw 存放可见视图)、C(Control),

先在 Veiw 层,创建四个界面类——FirstInterface、、SecondInterface、ThirdInterface、FourthInterface,将页面敲上去。

public void FirstInterface() {
        System.out.println("------------------------------------------------------主界面------------------------------------------------------");
        System.out.println("1、查询学生信息");
        System.out.println("2、信息统计");
        System.out.println("3、信息管理");
    }
    public void SecondInterface() {
        System.out.println("------------------查询学生信息界面------------------");
        System.out.println("1、查询全部学生信息");
        System.out.println("2、按学号查询学生信息");
        System.out.println("3、按班级查询学生信息");
        System.out.println("4、按名字模糊查询学生信息");
        System.out.println("5、返回上一界面");
    }
    public void ThirdInterface() {
        System.out.println("------------------信息统计界面------------------");
        System.out.println("1、按班级低到高,成绩高到底排序");
        System.out.println("2、统计每个班的平均分,高到低排序");
        System.out.println("3、统计每个班的最高分,最低分");
        System.out.println("4、返回上一个界面");
    }
    public void FourthInterface() {
        System.out.println("------------------信息管理界面------------------");
        System.out.println("1、添加学生");
        System.out.println("2、修改学生");
        System.out.println("3、删除学生");
        System.out.println("4、返回上一个界面");
    }

image.gif

二、Model 层界面

这里很明显存放的是我们的数据,那就 new 一个StudentDataBase,声明学号(stuNo)、姓名(stuName)、班级(stuClass)、性别(stuSex)、年龄(stuSex)、分数(stuScore),有参与无参的构造方法,getter 与 setter 方法、add 方法、print(输出)方法。

public class StudentDataBase {
    private int stuNo;
    private String stuName;
    private int stuClass;
    private String stuSex;
    private int stuAge;
    private int stuScore;
    public StudentDataBase() {
    }
    public StudentDataBase(int stuNo, String stuName, int stuClass, String stuSex, int stuAge, int stuScore) {
        this.stuNo = stuNo;
        this.stuName = stuName;
        this.stuClass = stuClass;
        this.stuSex = stuSex;
        this.stuAge = stuAge;
        this.stuScore = stuScore;
    }
    public int getStuNo() {
        return stuNo;
    }
    public void setStuNo(int stuNo) {
        this.stuNo = stuNo;
    }
    public String getStuName() {
        return stuName;
    }
    public void setStuName(String stuName) {
        this.stuName = stuName;
    }
    public int getStuClass() {
        return stuClass;
    }
    public void setStuClass(int stuClass) {
        this.stuClass = stuClass;
    }
    public String getStuSex() {
        return stuSex;
    }
    public void setStuSex(String stuSex) {
        this.stuSex = stuSex;
    }
    public int getStuAge() {
        return stuAge;
    }
    public void setStuAge(int stuAge) {
        this.stuAge = stuAge;
    }
    public int getStuScore() {
        return stuScore;
    }
    public void setStuScore(int stuScore) {
        this.stuScore = stuScore;
    }
    public void add(int stuNo, String stuName, int stuClass, String stuSex, int stuAge, int stuScore) {
        this.stuNo = stuNo;
        this.stuName = stuName;
        this.stuClass = stuClass;
        this.stuSex = stuSex;
        this.stuAge = stuAge;
        this.stuScore = stuScore;
    }
    public void print() {
        System.out.println("StudentDataBase{" + "stuNo=" + stuNo + ", stuName='" + stuName + '\'' + ", stuClass='" + stuClass + "班" + '\'' + ", stuSex='" + stuSex + '\'' + ", stuAge=" + stuAge + ", stuScore=" + stuScore + '}');
    }
}

image.gif

三、Control 层界面

首先我们模拟数据库肯定要添加,要添加就要有添加方法,在 Veiw 层建一个 Operate 类,里面存放我们的操作方法,一个 AddStudentInformation ,在上面的需求看到的是学号要是唯一的,那么就要在新建这里加上去重了,性别那里只能是两种情况(男或女),成功之后就遍历输出,失败就重新再来。

// 添加学生信息
    int flag = 0; // 去重的开关
    int[] deduplication = new int[100]; // 去重数组,存放学号,只能出现一次
    public void AddStudentInformation(int stuNo, String stuName, int stuClass, String stuSex, int stuAge, int stuScore, ArrayList<StudentDataBase> arrayList) {
        StudentDataBase studentDataBase = new StudentDataBase();
        studentDataBase.setStuNo(stuNo);
        studentDataBase.setStuName(stuName);
        studentDataBase.setStuClass(stuClass);
        studentDataBase.setStuSex(stuSex);
        studentDataBase.setStuAge(stuAge);
        studentDataBase.setStuScore(stuScore);
        if (Objects.equals(studentDataBase.getStuSex(), "男") || Objects.equals(studentDataBase.getStuSex(), "女")){
            deduplication[arrayList.size()] = studentDataBase.getStuNo();
            for (int i = 0; i < arrayList.size(); i++) {
                if (deduplication[i] == stuNo){
                    flag ++;
                }
            }
            if (flag <= 0){
                arrayList.add(studentDataBase);
                System.out.println("添加成功,现在的信息是:");
                PrintStudentInformation(arrayList);
            }else {
                System.out.println("添加失败,学号重复,请重新输入:");
                flag --;
            }
        }else {
            System.out.println("性别有误,请重新输入!");
        }
    }

image.gif

这里说到遍历输出了,那么我们看到有个需求查询所有学生信息,这里就要来一个方法了——PrintStudentInformation。

public static void PrintStudentInformation(ArrayList<StudentDataBase> arrayList) {
        if (arrayList.size() == 0) {
            System.out.println("目前数据库为空,暂时没有数据呢,请添加数据!");
        }
        for (int i = 0; i < arrayList.size(); i++) {
            StudentDataBase s = arrayList.get(i);
            System.out.println("学生信息{" + "学号:" + s.getStuNo() + ", 姓名:'" + s.getStuName() +
                    '\'' + ", 班级:'" + s.getStuClass() + '班' + '\'' + ", 性别:'" + s.getStuSex() + '\'' + ", 年龄:"
                    + s.getStuAge() + ", 分数:" + s.getStuScore() + '}');
        }
    }

image.gif

按学号查询,for 循环在里面来判断下输入的学号是否与模拟的数据库里面的学号是否相等,相等就输出。

public static void QueryStuNo(ArrayList<StudentDataBase> arrayList, int stuNo) {
        if (arrayList.size() == 0) {
            System.out.println("目前数据库为空,暂时没有数据呢,请添加数据!");
        }
        for (int i = 0; i < arrayList.size(); i++) {
            StudentDataBase s = arrayList.get(i);
            if (s.getStuNo() == stuNo) {
                System.out.println("学生信息{" + "学号:" + s.getStuNo() + ", 姓名:'" + s.getStuName() +
                        '\'' + ", 班级:'" + s.getStuClass() + '\'' + ", 性别:'" + s.getStuSex() + '\'' + ", 年龄:"
                        + s.getStuAge() + ", 分数:" + s.getStuScore() + '}');
            }
        }
    }

image.gif

这里先讲删除,删除也一样,找到学号了(因为学号是唯一的),就删掉去(调用remove)

public static void DeleteStudentInformation(int stuNo, ArrayList<StudentDataBase> arrayList) {
        if (arrayList.size() == 0) {
            System.out.println("目前数据库为空,暂时没有数据呢,请添加数据!");
        }
        for (int i = 0; i < arrayList.size(); i++) {
            StudentDataBase s = arrayList.get(i);
            if (arrayList.get(i).getStuNo() == stuNo){
                arrayList.remove(s);
            }
        }
    }

image.gif

然后是修改功能,思路:先查询学号,根据学号来修改信息,查到学号之后先删除这条信息,然后在调用添加,就能实现修改效果。

public static void ReviseStudentInformation(int stuNo, String stuName, int stuClass, String stuSex, int stuAge, int stuScore, ArrayList<StudentDataBase> arrayList) {
        if (arrayList.size() == 0) {
            System.out.println("目前数据库为空,暂时没有数据呢,请添加数据!");
        }
        StudentDataBase studentDataBase = new StudentDataBase();
        studentDataBase.setStuNo(stuNo);
        studentDataBase.setStuName(stuName);
        studentDataBase.setStuClass(stuClass);
        studentDataBase.setStuSex(stuSex);
        studentDataBase.setStuAge(stuAge);
        studentDataBase.setStuScore(stuScore);
        DeleteStudentInformation(stuNo,arrayList);
        arrayList.add(studentDataBase);
//        QueryStuNo(arrayList,stuNo);
        System.out.println("修改之后的数据:");
        PrintStudentInformation(arrayList);
    }

image.gif

后面的各个功能原理是一样的,像查询班级学生信息,就是当输入的信息与模拟数据库的信息相等时,就输出,模糊查询判断输入的是否被包含在模拟数据库的信息,包含就输出。这里就不一一显示了。

四、Main 总控制台

像输入的数据要不停的输进去那么就要使用到死循环了,while 里面加上 true,想退出加上个 break。

image.png


相关文章
|
1天前
|
搜索推荐 前端开发 Java
java医院绩效考核管理系统项目源码
系统需要和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作量,绩效考核系统设有手工录入功能(可以批量导入),对获取的数据系统按照设定的公式进行汇算,且设置审核机制,可以退回修正,系统功能强大,完全模拟医院实际绩效核算过程,且每步核算都可以进行调整和参数设置,能适应医院多种绩效核算方式。
3 0
|
2天前
|
Java 程序员 编译器
JavaSE&Java8 Lambda 表达式
JavaSE&Java8 Lambda 表达式
|
2天前
|
存储 Java 程序员
JavaSE&Java的异常
JavaSE&Java的异常
18 0
|
2天前
|
前端开发 Java 测试技术
Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
|
2天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
2天前
|
存储 安全 Java
滚雪球学Java(19):JavaSE中的内存管理:你所不知道的秘密
【4月更文挑战第8天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
29 4
滚雪球学Java(19):JavaSE中的内存管理:你所不知道的秘密
|
6天前
|
JavaScript Java 测试技术
基于Java的同城蔬菜配送管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的同城蔬菜配送管理系统的设计与实现(源码+lw+部署文档+讲解等)
11 0
|
6天前
|
JavaScript Java 测试技术
基于Java的心理预约咨询管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的心理预约咨询管理系统的设计与实现(源码+lw+部署文档+讲解等)
22 0
基于Java的心理预约咨询管理系统的设计与实现(源码+lw+部署文档+讲解等)
|
6天前
|
JavaScript Java 测试技术
基于Java的高校毕业生就业管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的高校毕业生就业管理系统的设计与实现(源码+lw+部署文档+讲解等)
22 0
基于Java的高校毕业生就业管理系统的设计与实现(源码+lw+部署文档+讲解等)
|
6天前
|
JavaScript Java 测试技术
基于Java的家纺用品销售管理系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的家纺用品销售管理系统的设计与实现(源码+lw+部署文档+讲解等)
17 0