• 【JAVASE开发】带你零基础学JAVA项目(学生管理系统篇)


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

     🥇个人主页:个人主页​​​​​                

    🥈 系列专栏:【JAVASE开发】 

    🥉与这篇相关的文章:               

    还没出生呢!目前内容已经好了,后续会持续更新, 欢迎大家来多多支持~

    目录

    一、前言

    二、Model 层界面

    三、Control 层界面

    四、Main 总控制台


    一、前言

    我们先来看看需求

     

     再来看看效果

     

     

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

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

    1. public void FirstInterface() {
    2. System.out.println("------------------------------------------------------主界面------------------------------------------------------");
    3. System.out.println("1、查询学生信息");
    4. System.out.println("2、信息统计");
    5. System.out.println("3、信息管理");
    6. }
    7. public void SecondInterface() {
    8. System.out.println("------------------查询学生信息界面------------------");
    9. System.out.println("1、查询全部学生信息");
    10. System.out.println("2、按学号查询学生信息");
    11. System.out.println("3、按班级查询学生信息");
    12. System.out.println("4、按名字模糊查询学生信息");
    13. System.out.println("5、返回上一界面");
    14. }
    15. public void ThirdInterface() {
    16. System.out.println("------------------信息统计界面------------------");
    17. System.out.println("1、按班级低到高,成绩高到底排序");
    18. System.out.println("2、统计每个班的平均分,高到低排序");
    19. System.out.println("3、统计每个班的最高分,最低分");
    20. System.out.println("4、返回上一个界面");
    21. }
    22. public void FourthInterface() {
    23. System.out.println("------------------信息管理界面------------------");
    24. System.out.println("1、添加学生");
    25. System.out.println("2、修改学生");
    26. System.out.println("3、删除学生");
    27. System.out.println("4、返回上一个界面");
    28. }

    二、Model 层界面

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

    1. public class StudentDataBase {
    2. private int stuNo;
    3. private String stuName;
    4. private int stuClass;
    5. private String stuSex;
    6. private int stuAge;
    7. private int stuScore;
    8. public StudentDataBase() {
    9. }
    10. public StudentDataBase(int stuNo, String stuName, int stuClass, String stuSex, int stuAge, int stuScore) {
    11. this.stuNo = stuNo;
    12. this.stuName = stuName;
    13. this.stuClass = stuClass;
    14. this.stuSex = stuSex;
    15. this.stuAge = stuAge;
    16. this.stuScore = stuScore;
    17. }
    18. public int getStuNo() {
    19. return stuNo;
    20. }
    21. public void setStuNo(int stuNo) {
    22. this.stuNo = stuNo;
    23. }
    24. public String getStuName() {
    25. return stuName;
    26. }
    27. public void setStuName(String stuName) {
    28. this.stuName = stuName;
    29. }
    30. public int getStuClass() {
    31. return stuClass;
    32. }
    33. public void setStuClass(int stuClass) {
    34. this.stuClass = stuClass;
    35. }
    36. public String getStuSex() {
    37. return stuSex;
    38. }
    39. public void setStuSex(String stuSex) {
    40. this.stuSex = stuSex;
    41. }
    42. public int getStuAge() {
    43. return stuAge;
    44. }
    45. public void setStuAge(int stuAge) {
    46. this.stuAge = stuAge;
    47. }
    48. public int getStuScore() {
    49. return stuScore;
    50. }
    51. public void setStuScore(int stuScore) {
    52. this.stuScore = stuScore;
    53. }
    54. public void add(int stuNo, String stuName, int stuClass, String stuSex, int stuAge, int stuScore) {
    55. this.stuNo = stuNo;
    56. this.stuName = stuName;
    57. this.stuClass = stuClass;
    58. this.stuSex = stuSex;
    59. this.stuAge = stuAge;
    60. this.stuScore = stuScore;
    61. }
    62. public void print() {
    63. System.out.println("StudentDataBase{" + "stuNo=" + stuNo + ", stuName='" + stuName + '\'' + ", stuClass='" + stuClass + "班" + '\'' + ", stuSex='" + stuSex + '\'' + ", stuAge=" + stuAge + ", stuScore=" + stuScore + '}');
    64. }
    65. }

    三、Control 层界面

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

    1. // 添加学生信息
    2. int flag = 0; // 去重的开关
    3. int[] deduplication = new int[100]; // 去重数组,存放学号,只能出现一次
    4. public void AddStudentInformation(int stuNo, String stuName, int stuClass, String stuSex, int stuAge, int stuScore, ArrayList<StudentDataBase> arrayList) {
    5. StudentDataBase studentDataBase = new StudentDataBase();
    6. studentDataBase.setStuNo(stuNo);
    7. studentDataBase.setStuName(stuName);
    8. studentDataBase.setStuClass(stuClass);
    9. studentDataBase.setStuSex(stuSex);
    10. studentDataBase.setStuAge(stuAge);
    11. studentDataBase.setStuScore(stuScore);
    12. if (Objects.equals(studentDataBase.getStuSex(), "男") || Objects.equals(studentDataBase.getStuSex(), "女")){
    13. deduplication[arrayList.size()] = studentDataBase.getStuNo();
    14. for (int i = 0; i < arrayList.size(); i++) {
    15. if (deduplication[i] == stuNo){
    16. flag ++;
    17. }
    18. }
    19. if (flag <= 0){
    20. arrayList.add(studentDataBase);
    21. System.out.println("添加成功,现在的信息是:");
    22. PrintStudentInformation(arrayList);
    23. }else {
    24. System.out.println("添加失败,学号重复,请重新输入:");
    25. flag --;
    26. }
    27. }else {
    28. System.out.println("性别有误,请重新输入!");
    29. }
    30. }

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

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

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

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

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

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

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

    1. public static void ReviseStudentInformation(int stuNo, String stuName, int stuClass, String stuSex, int stuAge, int stuScore, ArrayList<StudentDataBase> arrayList) {
    2. if (arrayList.size() == 0) {
    3. System.out.println("目前数据库为空,暂时没有数据呢,请添加数据!");
    4. }
    5. StudentDataBase studentDataBase = new StudentDataBase();
    6. studentDataBase.setStuNo(stuNo);
    7. studentDataBase.setStuName(stuName);
    8. studentDataBase.setStuClass(stuClass);
    9. studentDataBase.setStuSex(stuSex);
    10. studentDataBase.setStuAge(stuAge);
    11. studentDataBase.setStuScore(stuScore);
    12. DeleteStudentInformation(stuNo,arrayList);
    13. arrayList.add(studentDataBase);
    14. // QueryStuNo(arrayList,stuNo);
    15. System.out.println("修改之后的数据:");
    16. PrintStudentInformation(arrayList);
    17. }

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

    四、Main 总控制台

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

     (求关注)持续更新中……

  • 相关阅读:
    RK主机 CPU、NPU使用频率查看和设置
    Java集合之Set集合
    聊聊最近很火的混合专家模型(MoE)
    尚硅谷设计模式学习(十三)代理模式
    《NFT区块链进阶指南二》Etherscan验证Solidity智能合约(Remix插件验证)
    tp6.1多应用控制器不存在:app\应用名\controller\应用名
    LyScript 插件官方API调用案例
    批流一体数据集成框架ChunJun数据传输模块详解分享
    四大场景化模型算法搞定贷中营销场景|实操与效果比对
    对象临时中间状态的条件竞争覆盖
  • 原文地址:https://blog.csdn.net/aasd23/article/details/125607765