目录
5.StuPage类,StuCtrl类,StuModel类中方法的编写
学生信息管理系统是对前面的基础知识的一个综合运用
用到了MVC的设计模式
MVC是一种软件设计模式,用于将应用程序的逻辑进行分离和组织。MVC代表Model-View-Controller,即模型-视图-控制器。
模型(Model)是应用程序中处理数据逻辑的部分。它管理应用程序中的数据,并定义了数据的操作和访问方式。
视图(View)是用户界面的部分。它负责将数据呈现给用户,并根据用户的输入更新数据。
控制器(Controller)是连接模型和视图的部分。它接收用户的输入,并根据输入更新模型和视图。
MVC模式的优势在于分离了应用程序的不同部分,使得逻辑更加清晰和可维护。模型与视图分离,使得数据和展示相互独立,方便对数据的增删改查操作和UI的修改。控制器作为中间人,负责协调模型和视图之间的交互。
MVC模式也提供了良好的可扩展性和可重用性。不同的模型和视图可以被重复使用,因为它们之间的关系已经定义清楚。新的模型和视图可以很容易地添加到应用程序中。
总之,MVC设计模式通过将应用程序的逻辑分离和组织,提供了一种灵活和可维护的架构,使得开发人员可以更方便地开发和维护应用程序。
首先创建一下文件结构
1.Student类用来初始化学生信息
2.Global类用来搭载学生信息
3.StuPage类用来显示初始化界面
4.StuCtrl类用来实现功能调度,增删改查
5.StuModel类存储数据、处理数据逻辑和提供数据操作的接口的作用
我们来构思一下思路,学生信息管理系统最基本的实现学生信息的增删改查。首先我们需要学生信息,则需要在Student类中来初始化一下学生信息,定义一些和学生相关的属性。
- public class Student {
- private int id;
- private String name;
- private String sex;
- private int age;
- private float score;
-
- public Student() {
- }
-
- public Student(String name, String sex, int age, float score) {
- this.name = name;
- this.sex = sex;
- this.age = age;
- this.score = score;
- }
-
- public Student(int id, String name, String sex, int age, float score) {
- this.id = id;
- this.name = name;
- this.sex = sex;
- this.age = age;
- this.score = score;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int 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 int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- public float getScore() {
- return score;
- }
-
- public void setScore(float score) {
- this.score = score;
- }
-
- @Override
- public String toString() {
- return "Student{" +
- "id=" + id +
- ", name='" + name + '\'' +
- ", sex='" + sex + '\'' +
- ", age=" + age +
- ", score=" + score +
- '}';
- }
- }
这段代码定义了一个名为 Student
的Java类,用于表示学生对象。下面是对代码的解释:
类的属性包括:
id
:学生ID,整型。name
:学生姓名,字符串类型。sex
:学生性别,字符串类型。age
:学生年龄,整型。score
:学生成绩,浮点型。构造方法:
public Student()
:创建一个空的学生对象。public Student(String name, String sex, int age, float score)
:根据给定的姓名、性别、年龄和成绩创建学生对象。public Student(int id, String name, String sex, int age, float score)
:根据给定的ID、姓名、性别、年龄和成绩创建学生对象。Getter 和 Setter 方法:
getId()
, setId()
, getName()
, setName()
, getSex()
, setSex()
, getAge()
, setAge()
, getScore()
, setScore()
。toString()
方法:
Object
类的 toString()
方法,返回包含学生对象各个属性值的字符串表示,便于打印输出。通过以上定义,可以在程序中创建 Student
对象,并操作其属性值,同时也可以方便地将对象转换为字符串进行输出显示。
Global.initStudent();
下面是完整代码
- public class StuMain {
- private static StuCtr sc = new StuCtr();//定义静态私有StuCtr类型变量sc,以便在整个StuCtrl类中使用
- public static void main(String[] args) {
-
- Global.initStudent(); //Global调用initStudent()方法
-
- while (true){
- int a = StuPage.welcome();//输出欢迎页面,并让用户选择要操作的功能,获取功能对应的序号
- sc.action(a); //action为“用户操作的行为”的方法
- }
-
- }
- }
这段代码是一个 Java 类 StuMain
的定义,主要包括了一个静态私有变量 sc
和一个 main
方法。下面是对代码的解释:
类成员:
private static StuCtr sc = new StuCtr();
:声明了一个静态私有成员变量 sc
,类型为 StuCtr
。用于在整个 StuMain
类中使用该 StuCtr
实例。main
方法:
public static void main(String[] args)
:程序的入口方法,是程序执行的起点。Global.initStudent()
:调用 Global
类中的 initStudent()
方法进行学生信息的初始化。while (true)
,一直执行以下步骤:
StuPage.welcome()
方法显示欢迎页面,并获取用户选择的功能序号赋值给变量 a
。sc.action(a)
方法,实际上是调用 StuCtr
类中的 action
方法来处理用户选择的操作行为注意:我写代码的方式是先写出要调用的方法,然后通过alt+enter快捷键去生成所对应的方法,其实这样会使思路更清晰
就像这样,红色的是未生成的方法。
- public class Global {
- public static int stuID = 1;
- public static ArrayList
stuList = new ArrayList<>(); -
- public Global() {
- }
-
- public static void initStudent() {
- stuList.add(new Student(stuID++,"ZS","1",19,81));
- stuList.add(new Student(stuID++,"LS","0",18,86));
- stuList.add(new Student(stuID++,"WU","1",20,78));
- stuList.add(new Student(stuID++,"ZL","0",19,80));
- stuList.add(new Student(stuID++,"NQ","1",20,87));
- }
- }
这段代码是一个Java类 Global,其中定义了一个静态变量 stuID 和一个静态 ArrayList 存放 Student 对象。在构造方法中没有具体的代码实现,而在 initStudent() 方法中,向 stuList 中添加了五个 Student 对象,每个学生对象包括学号、姓名、性别、年龄和分数。每次添加完一个学生对象后,stuID 自增 1。这段代码的作用是初始化学生数据并存储在 stuList 列表中
接下来回到主函数中alt+enter 快捷键进入welcom()方法,在StuPage类中编写
- public class StuPage {
-
- public StuPage() {
- }
-
- public static int welcome() {
- System.out.println("******* 欢迎进入学生管理系统*********");
- System.out.println("********1.查看学生信息*************");
- System.out.println("********2.增加学生信息*************");
- System.out.println("********3.修改学生信息*************");
- System.out.println("********4.删除学生信息*************");
- System.out.println("********0.退出学生管理系统**********");
- int a;
- do {
- System.out.println("请输入功能选项:");
- a = new Scanner(System.in).nextInt();
- }while (a>4 || a<0);
- return a;
- }
- }
这段代码是一个名为 StuPage 的 Java 类,其中定义了一个静态方法 welcome()。在该方法中,首先打印欢迎信息和一些选项,然后使用 do-while 循环来接受用户输入的功能选项。循环会要求用户输入一个整数,并检查输入是否在 0 到 4 之间(包括 0 和 4)。如果输入不在这个范围内,就会提示用户重新输入,直到输入符合要求才跳出循环并返回该值。
这段代码的作用是展示学生管理系统的主页面,让用户选择不同的操作(查看学生信息、增加学生信息、修改学生信息、删除学生信息或退出系统),并返回用户选择的功能选项。
再回到主函数中alt+enter 快捷键进入action()方法,在StuCtrl类中编写增删改查退出功能
思路
定义二级查询菜单,通过二级界面获取一个查询请求,二级菜单的调度
- public class StuCtr {
-
- public StuCtr() {
- }
-
- public void action(int a) {
- switch (a){
- case 0://退出
- System.out.println("退出");
- System.exit(0);
- break;
- case 1://查询
- int ss = StuPage.selStu();
- selAction(ss);
- break;
- case 2://添加
- break;
- case 3://修改
- break;
- case 4://删除
- break;
-
- }
- }
-
- }
该代码是一个名为StuCtr的类,用于控制学生信息的操作。
构造方法:
方法:
-
- public static int selStu() {
- 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("** 0. 退出查询 **");
- System.out.println("*****************");
- int a;
- do{
- a = new Scanner(System.in).nextInt();
- }while (a>6 || a<0);
- return a;
-
- }
- private static StuModel sm = new StuModel();
- private void selAction(int ss) {
- switch (ss){
- case 0:
- System.out.println("退出查询功能");
- System.exit(0);
- break;
- case 1:
- ArrayList
allStu = sm.selAllStu(); - StuPage.ShowStuList(allStu);
- break;
- case 2:break;
- case 3:break;
- case 4:break;
- case 5:break;
- case 6:break;
- }
- }
- public class StuModel {
- public ArrayList
selAllStu() { - return Global.stuList;
- }
- }
该代码是一个名为StuModel的类,其中包含了一个名为selAllStu的方法。
方法体:
总结: StuModel类的selAllStu方法用于获取所有学生信息的列表。该方法返回了一个包含所有学生信息的ArrayList
- public static void ShowStuList(ArrayList
allStu) { - System.out.printf("┌────┬────────────┬──────┬──────┬──────┐ \n");
- System.out.printf("│%-4s│%-12s│%-6s│%-6s│%-6s│ \n","ID","NAME","SEX","AGE","SCORE");
- for (Student stu:
- allStu) {
- System.out.printf("├────┼────────────┼──────┼──────┼──────┤\n");
- System.out.printf("│ %-4d %-12s %-6s %-6d %-6.1f\n",stu.getId(),stu.getName(),stu.getSex(),stu.getAge(),stu.getScore());
- }
- System.out.printf("└────┴────────────┴──────┴──────┴──────┘\n");
- }
该代码是一个名为ShowStuList的静态方法,用于展示学生信息列表。
参数:
方法体:
总结: 该方法用于在控制台打印学生信息列表的表格形式,每个学生信息占据一行。每行包括ID、NAME、SEX、AGE和SCORE这五个字段的信息,并使用表格的形式展示出来。
- private static StuModel sm = new StuModel();
- private void selAction(int ss) {
- switch (ss){
- case 0:
- System.out.println("退出查询功能");
- System.exit(0);
- break;
- case 1:
- ArrayList
allStu = sm.selAllStu(); - StuPage.ShowStuList(allStu);
- break;
- case 2://按学号查询
- int StuID = StuPage.getStuID(); //获取学生ID
- ArrayList
getStuID = sm.getbyStuID(StuID);//通过学生ID获取学生信息 - StuPage.ShowStuList(getStuID);
- break;
- case 3://按姓名查询
- break;
- case 4:break;
- case 5:break;
- case 6:break;
- }
- }
case 2:获取学生ID,然后通过StuModel的getbyStuID方法获取指定学生信息的列表,并通过StuPage类的ShowStuList方法显示学生列表。
- public static int getStuID() {
- System.out.println("输入学生学号:");
- return new Scanner(System.in).nextInt();
- }
- public ArrayList
getbyStuID(int stuID) { - ArrayList
resList = new ArrayList<>(); - for (Student stu:
- Global.stuList) {
- if(stuID == stu.getId()){
- resList.add(stu);
- }
- }
- return resList;
- }
该代码是StuModel类中的一个方法,用于根据学生ID获取学生信息的列表。
方法体:
总结: getbyStuID方法通过遍历学生列表,将ID与参数stuID相等的学生信息添加到另一个列表中并返回。这样可以根据学生ID获取对应的学生信息列表。
代码思路和按学号查询的完全一样
- case 3://按姓名查询
- String StuName = StuPage.getStuName();
- ArrayList
getStuName = sm.getbyStuName(StuName); - StuPage.ShowStuList(getStuName);
- break;
先,它从界面类(StuPage)获取用户输入的学生姓名(StuName)。
然后,它调用学生管理类(sm)的getbyStuName()方法,传递StuName作为参数来查询学生列表。
查询结果是一个包含符合条件的学生对象的ArrayList。
最后,它调用StuPage的ShowStuList()方法,将查询结果作为参数来显示符合条件的学生列表。
- public static String getStuName() {
- System.out.println("输入学生姓名:");
- return new Scanner(System.in).nextLine();
- }
该代码片段是一个静态方法,方法名称为getStuName。该方法的作用是获取用户输入的学生姓名,并将其作为字符串返回。
在方法内部,首先会打印一条消息提示用户输入学生姓名。然后,使用Scanner类获取用户输入的字符串,这里使用了nextLine()方法。
最后,将获取到的学生姓名作为字符串返回给调用该方法的地方。
- public ArrayList
getbyStuName(String stuName) { - ArrayList
resList = new ArrayList<>(); - for (Student stu:
- Global.stuList) {
- if(stuName == stu.getName()){
- resList.add(stu);
- }
- }
- return resList;
- }
该代码片段是一个方法,方法名称为getbyStuName。该方法接收一个参数stuName,类型为String,表示要查找的学生姓名。
在方法内部,首先创建一个名为resList的ArrayList对象,用于存储符合条件的学生对象。然后,使用for-each循环遍历全局变量Global中的stuList列表,该列表存储了所有学生对象。
在循环中,通过调用stu对象的getName()方法获取学生的姓名,并与传入的stuName进行比较。如果相等,表示找到了目标学生对象,将其添加到resList列表中。
最后,返回resList列表,该列表中存储了所有符合条件的学生对象。
- case 4://性别
- String StuSex = StuPage.getStuSex();
- ArrayList
getStuSex = sm.getbyStuSex(StuSex); - StuPage.ShowStuList(getStuSex);
- break;
- public static String getStuSex() {
- System.out.println("输入学生性别:");
- return new Scanner(System.in).nextLine();
- }
- public ArrayList
getbyStuSex(String stuSex) { - ArrayList
resList = new ArrayList<>(); - for (Student stu:
- Global.stuList) {
- if(stuSex == stu.getSex()){
- resList.add(stu);
- }
- }
- return resList;
- }
- case 5://年龄
- int StuAge = StuPage.getStuAge();
- ArrayList
getStuAge = sm.getbyStuAge(StuAge); - StuPage.ShowStuList(getStuAge);
- break;
- public static int getStuAge() {
- System.out.println("输入学生年龄:");
- return new Scanner(System.in).nextInt();
- }
- public ArrayList
getbyStuAge(String stuAge) { - ArrayList
resList = new ArrayList<>(); - for (Student stu:
- Global.stuList) {
- if(stuAge == stu.getAge()){
- resList.add(stu);
- }
- }
- return resList;
- }
- case 6://成绩
- int StuScore = StuPage.getStuScore();
- ArrayList
getStuScore = sm.getbyStuScore(StuScore); - StuPage.ShowStuList(getStuScore);
- break;
- public static int getStuScore() {
- System.out.println("输入学生成绩:");
- return new Scanner(System.in).nextFloat();
- }
- public ArrayList
getbyStuAge(String stuScore) { - ArrayList
resList = new ArrayList<>(); - for (Student stu:
- Global.stuList) {
- if(stuSore == stu.getScore()){
- resList.add(stu);
- }
- }
- return resList;
- }
获取要添加的学生对象,将要添加的学生对象传递给model层来实现
- case 2://添加
- while (sm.doAddStu(StuPage.addStu()));
- break;
这段代码是在一个 switch
语句中的 case 2
中的逻辑。
在这段代码中,首先通过调用 StuPage.addStu()
方法获取一个 Student
对象,并将其传递给 sm.doAddStu()
方法进行添加。
接下来,使用 while
循环来不断执行添加学生的操作,直到 sm.doAddStu(StuPage.addStu())
返回 false
。
当 sm.doAddStu(StuPage.addStu())
返回 false
时,说明添加学生失败,此时循环结束。
- public static Student addStu() {
- System.out.println("输入学生姓名:");
- String name = new Scanner(System.in).nextLine();
- if("over".equals(name)){
- return null;
- }
- System.out.println("输入学生性别:");
- String sex = new Scanner(System.in).nextLine();
- System.out.println("输入学生年龄:");
- int age = new Scanner(System.in).nextInt();
- System.out.println("输入学生成绩:");
- float score = new Scanner(System.in).nextFloat();
-
- return new Student(name,sex,age,score);
-
- }
这段代码是一个静态方法 addStu
,它返回一个类型为 Student
的对象。
在方法的实现中,首先通过调用 System.out.println
打印出提示信息 "输入学生姓名:",然后通过 Scanner
类的 nextLine()
方法,从用户输入中获取学生的姓名,并将其赋值给 name
变量。
接下来,通过比较 name
和字符串 "over" 是否相等,如果相等,则返回 null
,表示结束学生输入。
如果 name
不等于 "over",则继续获取学生的性别,通过 System.out.println
打印出提示信息 "输入学生性别:",然后通过 Scanner
类的 nextLine()
方法,从用户输入中获取学生的性别,并将其赋值给 sex
变量。
然后,继续获取学生的年龄,通过 System.out.println
打印出提示信息 "输入学生年龄:",然后通过 Scanner
类的 nextInt()
方法,从用户输入中获取学生的年龄,并将其赋值给 age
变量。
最后,获取学生的成绩,通过 System.out.println
打印出提示信息 "输入学生成绩:",然后通过 Scanner
类的 nextFloat()
方法,从用户输入中获取学生的成绩,并将其赋值给 score
变量
- public boolean doAddStu(Student sa) {
- if (null == sa){
- return false;
- }
- Student student = new Student(
- Global.stuID++,
- sa.getName(),
- sa.getSex(),
- sa.getAge(),
- sa.getScore()
- );
- return Global.stuList.add(student);
- }
这段代码是一个方法,在方法签名中,它返回一个布尔值。方法名是 doAddStu
,并且它接受一个类型为 Student
的参数 sa
。
在方法的实现中,首先进行了一个判断,如果参数 sa
是 null
,则返回 false
。
接下来,通过使用参数 sa
的 getName()
、getSex()
、getAge()
和 getScore()
方法,创建了一个新的 Student
对象。在创建新的 Student
对象时,Global.stuID
自增,并将其作为新学生的 ID 属性。
最后,将新创建的学生对象添加到名为 Global.stuList
的列表中,并返回 add()
方法的结果,表示是否成功将学生对象添加到列表中。
思路:
获取要修改的学生ID,通过ID查出要修改的学生信息,在编辑页面中显示原有的学员信息,并且等待输入新息,更新学员信息
- case 3://修改
- int editStuID = StuPage.getStuID();
- ArrayList
editStu = sm.getbyStuID(editStuID); - Student newStu = StuPage.editStu(editStu.get(0));
- sm.doUpdate(newStu);
- break;
这段代码是在一个 switch
语句中的 case 3
中的逻辑。
在这段代码中,首先调用 StuPage.getStuID()
方法获取要修改的学生的ID。然后,使用该ID调用 sm.getbyStuID()
方法获取与该ID相匹配的学生列表。
接下来,从获取到的学生列表中取出第一个学生对象,并将其作为参数传递给 StuPage.editStu()
方法。该方法会显示该学生的信息,并允许用户修改。
用户修改完学生信息后,得到一个新的学生对象 newStu
。
最后,将 newStu
作为参数调用 sm.doUpdate()
方法进行更新操作。
- public static Student editStu(Student student) {
- System.out.println("输入姓名("+student.getName()+"):");
- String name = new Scanner(System.in).nextLine();
- System.out.println("输入性别("+student.getSex()+"):");
- String sex = new Scanner(System.in).nextLine();
- System.out.println("输入年龄("+student.getName()+"):");
- int age = new Scanner(System.in).nextInt();
- System.out.println("输入成绩("+student.getName()+"):");
- Float score = new Scanner(System.in).nextFloat();
- return new Student(student.getId(),name,sex,age,score);
- }
这段代码定义了一个静态方法 editStu(Student student)
,该方法用于修改学生信息。
在方法中,首先通过 student
参数获取要修改学生的原始信息,并在提示信息中显示出来。然后,分别提示用户输入新的姓名、性别、年龄和成绩。
用户输入完毕后,使用 Scanner
类接收用户输入的新的姓名、性别、年龄和成绩,并将其赋值给对应的变量。
最后,使用原始学生的 ID 和新的姓名、性别、年龄和成绩创建一个新的学生对象,并将其返回。
总结来说,这段代码的作用是在控制台上提示用户输入新的学生信息,并返回一个包含新信息的学生对象。
- public void doUpdate(Student newStu) {
- for (int i = 0; i < Global.stuList.size(); i++) {
- if (newStu.getId() == Global.stuList.get(i).getId()){
- Global.stuList.set(i,newStu);
- return;
- }
- }
-
- }
这段代码是一个方法,名为doUpdate,接受一个Student对象作为参数。
该方法的作用是根据传入的Student对象的id属性,在全局变量Global.stuList中查找对应的学生对象,并将传入的Student对象替换掉原来的对象。
具体流程如下:
思路
获取要删除的学生ID,通过ID查出要删除的学生信息,如果要删除的学生信息存在则删除(先展示学生列表,再显示界面提示删除信息,再开始进行删除操作),不存在则提示不存在
- case 4://删除
- int delStu = StuPage.getStuID();
- ArrayList
delStuID = sm.getbyStuID(delStu); - if (!delStuID.isEmpty()){
- StuPage.ShowStuList(delStuID);
- if (StuPage.delAlert()){
- sm.doDelStuID(delStu);
- }
- }else
- StuPage.failed("删除失败");
- break;
这段代码是一个switch语句的一个case分支,针对选项4(删除)进行处理。
具体流程如下:
- public static boolean delAlert() {
- System.out.println("Y/y(确认删除),N/n(取消删除)");
- switch (new Scanner(System.in).nextLine()){
- case "Y":
- case "y":
- return true;
- case "N":
- case "n":
- return false;
- default:
- System.out.println("输入非法,取消删除");
- }
- return false;
- }
这段代码是一个静态方法delAlert(),用于显示一个确认删除的提示信息,并根据用户的输入返回一个布尔值。
具体流程如下:
- public void doDelStuID(int delStu) {
- for (int i = 0; i < Global.stuList.size(); i++) {
- if (delStu == Global.stuList.get(i).getId()){
- Global.stuList.remove(i);
- return;
- }
- }
- }
这段代码是一个方法doDelStuID(int delStu),用于根据给定的学生ID删除学生信息。
具体流程如下:
- public static void failed(String info) {
- System.out.println("学员信息不存在"+info);
- }
这段代码是一个静态方法failed(String info),用于在控制台输出学员信息不存在的提示信息。
具体流程如下:
- package com.H.Demo03;
-
- /**
- * @Description:
- * @Author: Hongming
- */
- public class Student {
- private int id;
- private String name;
- private String sex;
- private int age;
- private float score;
-
- public Student(String name, String sex, int age, float score) {
- this.name = name;
- this.sex = sex;
- this.age = age;
- this.score = score;
- }
-
- public Student(int id, String name, String sex, int age, float score) {
- this.id = id;
- this.name = name;
- this.sex = sex;
- this.age = age;
- this.score = score;
- }
-
- public int getId() {
- return id;
- }
-
- public void setId(int 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 int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
- public float getScore() {
- return score;
- }
-
- public void setScore(float score) {
- this.score = score;
- }
-
- @Override
- public String toString() {
- return "Student{" +
- "id=" + id +
- ", name='" + name + '\'' +
- ", sex='" + sex + '\'' +
- ", age=" + age +
- ", score=" + score +
- '}';
- }
- }
- package com.H.Demo03;
-
- import java.util.ArrayList;
-
- /**
- * @Description:
- * @Author: Hongming
- */
- public class Global {
- public static int stuID = 1;
- public static ArrayList
stuList = new ArrayList<>(); -
- public Global() {
- }
-
- public static void initStudent() {
- stuList.add(new Student(stuID++,"ZS","1",19,81));
- stuList.add(new Student(stuID++,"LS","0",18,86));
- stuList.add(new Student(stuID++,"WU","1",20,78));
- stuList.add(new Student(stuID++,"ZL","0",19,80));
- stuList.add(new Student(stuID++,"NQ","1",20,87));
- }
- }
- package com.H.Demo03;
-
- import sun.util.locale.provider.FallbackLocaleProviderAdapter;
-
- import java.util.ArrayList;
- import java.util.Scanner;
-
- /**
- * @Description:
- * @Author: Hongming
- */
- public class StuPage {
-
- public StuPage() {
- }
-
- public static int welcome() {
- System.out.println("******* 欢迎进入学生管理系统*********");
- System.out.println("********1.查看学生信息*************");
- System.out.println("********2.增加学生信息*************");
- System.out.println("********3.修改学生信息*************");
- System.out.println("********4.删除学生信息*************");
- System.out.println("********0.退出学生管理系统**********");
- int a;
- do {
- System.out.println("请输入功能选项:");
- a = new Scanner(System.in).nextInt();
- }while (a>4 || a<0);
- return a;
- }
-
-
- public static int selStu() {
- 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("** 0. 退出查询 **");
- System.out.println("*****************");
- int a;
- do{
- a = new Scanner(System.in).nextInt();
- }while (a>6 || a<0);
- return a;
-
- }
-
- public static void ShowStuList(ArrayList
allStu) { - System.out.printf("┌────┬────────────┬──────┬──────┬──────┐ \n");
- System.out.printf("│%-4s│%-12s│%-6s│%-6s│%-6s│ \n","ID","NAME","SEX","AGE","SCORE");
- for (Student stu:
- allStu) {
- System.out.printf("├────┼────────────┼──────┼──────┼──────┤\n");
- System.out.printf("│ %-4d %-12s %-6s %-6d %-6.1f\n",stu.getId(),stu.getName(),stu.getSex(),stu.getAge(),stu.getScore());
- }
- System.out.printf("└────┴────────────┴──────┴──────┴──────┘\n");
- }
-
- public static int getStuID() {
- System.out.println("输入学生学号:");
- return new Scanner(System.in).nextInt();
- }
-
- public static String getStuName() {
- System.out.println("输入学生姓名:");
- return new Scanner(System.in).nextLine();
- }
-
- public static String getStuSex() {
- System.out.println("输入学生性别:");
- return new Scanner(System.in).nextLine();
- }
-
- public static int getStuAge() {
- System.out.println("输入学生年龄:");
- return new Scanner(System.in).nextInt();
- }
-
- public static float getStuScore() {
- System.out.println("输入学生成绩:");
- return new Scanner(System.in).nextFloat();
- }
-
- public static Student addStu() {
- System.out.println("输入学生姓名:");
- String name = new Scanner(System.in).nextLine();
- if("over".equals(name)){
- return null;
- }
- System.out.println("输入学生性别:");
- String sex = new Scanner(System.in).nextLine();
- System.out.println("输入学生年龄:");
- int age = new Scanner(System.in).nextInt();
- System.out.println("输入学生成绩:");
- float score = new Scanner(System.in).nextFloat();
-
- return new Student(name,sex,age,score);
-
- }
-
- public static Student editStu(Student student) {
- System.out.println("输入姓名("+student.getName()+"):");
- String name = new Scanner(System.in).nextLine();
- System.out.println("输入性别("+student.getSex()+"):");
- String sex = new Scanner(System.in).nextLine();
- System.out.println("输入年龄("+student.getAge()+"):");
- int age = new Scanner(System.in).nextInt();
- System.out.println("输入成绩("+student.getScore()+"):");
- Float score = new Scanner(System.in).nextFloat();
- return new Student(student.getId(),name,sex,age,score);
- }
-
- public static boolean delAlert() {
- System.out.println("Y/y(确认删除),N/n(取消删除)");
- switch (new Scanner(System.in).nextLine()){
- case "Y":
- case "y":
- return true;
- case "N":
- case "n":
- return false;
- default:
- System.out.println("输入非法,取消删除");
- }
- return false;
- }
-
- public static void failed(String info) {
- System.out.println("学员信息不存在"+info);
- }
- }
- package com.H.Demo03;
-
-
- import java.util.ArrayList;
-
- /**
- * @Description:
- * @Author: Hongming
- */
- public class StuCtr {
-
-
- public StuCtr() {
- }
-
- public void action(int a) {
- switch (a){
- case 0://退出
- System.out.println("退出");
- System.exit(0);
- break;
- case 1://查询
- int ss = StuPage.selStu();
- selAction(ss);
- break;
- case 2://添加
- while (sm.doAddStu(StuPage.addStu()));
- break;
- case 3://修改
- int editStuID = StuPage.getStuID();
- ArrayList
editStu = sm.getbyStuID(editStuID); - Student newStu = StuPage.editStu(editStu.get(0));
- sm.doUpdate(newStu);
- break;
- case 4://删除
- int delStu = StuPage.getStuID();
- ArrayList
delStuID = sm.getbyStuID(delStu); - if (!delStuID.isEmpty()){
- StuPage.ShowStuList(delStuID);
- if (StuPage.delAlert()){
- sm.doDelStuID(delStu);
- }
- }else
- StuPage.failed("删除失败");
- break;
-
- }
- }
-
- private static StuModel sm = new StuModel();
- private void selAction(int ss) {
- switch (ss){
- case 0:
- System.out.println("退出查询功能");
- System.exit(0);
- break;
- case 1:
- ArrayList
allStu = sm.selAllStu(); - StuPage.ShowStuList(allStu);
- break;
- case 2://按学号查询
- int StuID = StuPage.getStuID();
- ArrayList
getStuID = sm.getbyStuID(StuID); - StuPage.ShowStuList(getStuID);
- break;
- case 3://按姓名查询
- String StuName = StuPage.getStuName();
- ArrayList
getStuName = sm.getbyStuName(StuName); - StuPage.ShowStuList(getStuName);
- break;
- case 4://性别
- String StuSex = StuPage.getStuSex();
- ArrayList
getStuSex = sm.getbyStuSex(StuSex); - StuPage.ShowStuList(getStuSex);
- break;
- case 5://年龄
- int StuAge = StuPage.getStuAge();
- ArrayList
getStuAge = sm.getbyStuAge(StuAge); - StuPage.ShowStuList(getStuAge);
- break;
- case 6://成绩
- float StuScore = StuPage.getStuScore();
- ArrayList
getStuSore = sm.getbyStuScore(StuScore); - StuPage.ShowStuList(getStuSore);
- break;
- }
- }
-
-
- }
- package com.H.Demo03;
-
- import java.util.ArrayList;
-
- /**
- * @Description:
- * @Author: Hongming
- */
- public class StuModel {
- public ArrayList
selAllStu() { - return Global.stuList;
- }
-
- public ArrayList
getbyStuID(int stuID) { - ArrayList
resList = new ArrayList<>(); - for (Student stu:
- Global.stuList) {
- if(stuID == stu.getId()){
- resList.add(stu);
- }
- }
- return resList;
- }
-
- public ArrayList
getbyStuName(String stuName) { - ArrayList
resList = new ArrayList<>(); - for (Student stu:
- Global.stuList) {
- if(stuName == stu.getName()){
- resList.add(stu);
- }
- }
- return resList;
- }
-
- public ArrayList
getbyStuSex(String stuSex) { - ArrayList
resList = new ArrayList<>(); - for (Student stu:
- Global.stuList) {
- if(stuSex == stu.getSex()){
- resList.add(stu);
- }
- }
- return resList;
- }
-
- public ArrayList
getbyStuAge(int stuAge) { - ArrayList
resList = new ArrayList<>(); - for (Student stu:
- Global.stuList) {
- if(stuAge == stu.getAge()){
- resList.add(stu);
- }
- }
- return resList;
- }
-
- public ArrayList
getbyStuScore(float stuScore) { - ArrayList
resList = new ArrayList<>(); - for (Student stu:
- Global.stuList) {
- if(stuScore == stu.getScore()){
- resList.add(stu);
- }
- }
-
- return resList;
-
- }
-
- public boolean doAddStu(Student sa) {
- if (null == sa){
- return false;
- }
- Student student = new Student(
- Global.stuID++,
- sa.getName(),
- sa.getSex(),
- sa.getAge(),
- sa.getScore()
- );
- return Global.stuList.add(student);
- }
-
- public void doUpdate(Student newStu) {
- for (int i = 0; i < Global.stuList.size(); i++) {
- if (newStu.getId() == Global.stuList.get(i).getId()){
- Global.stuList.set(i,newStu);
- return;
- }
- }
-
- }
-
- public void doDelStuID(int delStu) {
- for (int i = 0; i < Global.stuList.size(); i++) {
- if (delStu == Global.stuList.get(i).getId()){
- Global.stuList.remove(i);
- return;
- }
- }
- }
- }
- package com.H.Demo03;
-
- /**
- * @Description:
- * @Author: Hongming
- */
- public class StuMain {
- private static StuCtr sc= new StuCtr();
- public static void main(String[] args) {
- Global.initStudent();
- while(true){
- int a = StuPage.welcome();
- sc.action(a);
- }
- }
- }