哈喽~大家好呀,首先感谢大家的支持,从本专栏开始,我们就开始了从零基础到就业实战的篇章了,首先是我们的第一阶段【JAVASE开发】,先来个小项目,练练手。
一、前言
我们先来看看需求
再来看看效果
我这里采用了 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、返回上一个界面"); }
二、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 + '}'); } }
三、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("性别有误,请重新输入!"); } }
这里说到遍历输出了,那么我们看到有个需求查询所有学生信息,这里就要来一个方法了——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() + '}'); } }
按学号查询,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() + '}'); } } }
这里先讲删除,删除也一样,找到学号了(因为学号是唯一的),就删掉去(调用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); } } }
然后是修改功能,思路:先查询学号,根据学号来修改信息,查到学号之后先删除这条信息,然后在调用添加,就能实现修改效果。
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); }
后面的各个功能原理是一样的,像查询班级学生信息,就是当输入的信息与模拟数据库的信息相等时,就输出,模糊查询判断输入的是否被包含在模拟数据库的信息,包含就输出。这里就不一一显示了。
四、Main 总控制台
像输入的数据要不停的输进去那么就要使用到死循环了,while 里面加上 true,想退出加上个 break。