上次我们完成了一个酒店管理系统,这次我们使用面向对象思维,完成一个学生管理系统。
实现一个简单的学生管理系统,它具备5个功能,分别为
首先我们要额外定义一个Studnet类,包括学生的学号、姓名、年龄、性别等属性。
其次我们定义一个测试类Test,在测试类的主函数里面要做以下事情:定义学生类型数组、定义一个static变量currentNum来表示目前的学生数组里的学生数量、以及显示菜单包括显示所有的学生信息、添加学生、修改学生信息、删除学生以及退出本系统功能,根据用户选择的菜单,执行相应的功能。每个功能的具体分析思路如下:
Student类源码如下:
package 作业0331;
/**
* @Version:1.0
* @Description: TODO(一句话描述该类的功能)
* @Date: 2024/4/5 12:19
* @Author: wjy
*/
public class Student {
private int id;
private String name;
private String sex;
private int age;
public Student(int id, String name, String sex, int age) {
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
}
public Student() {
}
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 void show(){
System.out.println(id+"\t\t\t"+name+"\t\t\t"+sex+"\t\t\t"+age);
}
}
Test类源码如下:
package 作业0331;
import java.util.InputMismatchException;
import java.util.Scanner;
/**
* @Version:1.0
* @Description: TODO(一句话描述该类的功能)
* @Date: 2024/3/31 16:00
* @Author: wjy
*/
public class Test {
static int currentNum = 0;
public static void main(String[] args) {
Student[] student = new Student[1000];
System.out.println("***************欢迎进入学生管理系统***************");
System.out.println("\t\t\t\t1.显示所有的学生信息");
System.out.println("\t\t\t\t2.添加学生");
System.out.println("\t\t\t\t3.修改学生信息");
System.out.println("\t\t\t\t4.删除学生");
System.out.println("\t\t\t\t5.退出");
while (true) {
System.out.print("请选择: ");
Scanner scanner = new Scanner(System.in);
if (scanner.hasNextInt()) {
int choose = scanner.nextInt();
switch (choose) {
case 1: {
System.out.println("您选择的功能为显示所有的学生信息");
showAllStudent(student);
break;
}
case 2: {
System.out.println("您选择的功能为添加学生");
addStudent(student);
break;
}
case 3: {
System.out.println("您选择的功能为修改学生信息");
modifyStudent(student);
break;
}
case 4: {
System.out.println("您选择的功能为删除学生");
deleteStudent(student);
break;
}
case 5: {
System.out.println("您已成功退出本系统!");
System.exit(0);
}
default: {
System.out.println("您输入的数字有误,请重新选择");
break;
}
}
} else
System.out.println("您输入的不是数字,请重新输入!");
}
}
//显示所有学生
public static void showAllStudent(Student[] student) {
System.out.println("学号\t\t\t姓名\t\t\t性别\t\t\t年龄");
for (int i = 0; i < currentNum; i++) {
student[i].show();
}
}
//添加学生
public static void addStudent(Student[] student) {
String sex = null;
boolean flag = true;
Scanner scanner = new Scanner(System.in);
try {
System.out.println("请输入学号:");
int id = scanner.nextInt();
System.out.println("请输入姓名:");
String name = scanner.next();
while (flag) {
System.out.println("请选择性别:1.男\t2.女");
switch (scanner.nextInt()) {
case 1: {
sex = "男";
flag = false;
break;
}
case 2: {
sex = "女";
flag = false;
break;
}
default: {
System.out.println("您选择的性别不存在,请重新选择");
}
}
}
System.out.println("请输入年龄:");
int age = scanner.nextInt();
student[currentNum] = new Student(id, name, sex, age);
currentNum++;
System.out.println("添加成功");
} catch (InputMismatchException e) {
System.out.println("输入不匹配异常");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
//修改学生信息
public static void modifyStudent(Student[] student) {
Scanner scanner = new Scanner(System.in);
try {
System.out.println("请输入你要修改的学生的学号:");
int id = scanner.nextInt();
for (int i = 0; i < currentNum; i++) {
if (student[i].getId() == id) {
OUT1:
while (true) {
System.out.println("请选择你要修改的地方:1.姓名\t2.性别\t3.年龄");
switch (scanner.nextInt()) {
case 1: {
System.out.println("请输入修改后的姓名:");
student[i].setName(scanner.next());
break OUT1;
}
case 2: {
System.out.println("请输入修改后的性别:");
student[i].setSex(scanner.next());
break OUT1;
}
case 3: {
System.out.println("请输入修改后的年龄:");
student[i].setAge(scanner.nextInt());
break OUT1;
}
default: {
System.out.println("您选择的修改不存在,请重新输入");
}
System.out.println("修改成功!");
}
}
return;
}
}
System.out.println("找不到该学号!");
} catch (InputMismatchException e) {
System.out.println("输入不匹配异常");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
//删除学生
public static void deleteStudent(Student[] student) {
Scanner scanner = new Scanner(System.in);
try {
System.out.println("请输入需要删除的学生的学号");
int id = scanner.nextInt();
for (int i = 0; i < currentNum; i++) {
if (student[i].getId() == id) {
for (int j = i; j < currentNum; j++) {
student[j] = student[j + 1];
}
currentNum--;
System.out.println("删除成功!");
return;
}
}
System.out.println("找不到该学号!");
} catch (InputMismatchException e) {
System.out.println("输入不匹配异常");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
这个学生管理系统涉及到面向对象编程,通过定义Student类,学会了如何将数据(属性)和行为(方法)封装在一起,这有助于创建模块化和可重用的代码。使用了数组来存储学生对象,这有助于理解如何在Java中使用数组来存储集合数据。同时使用了if、switch和while等控制流程语句来处理不同的用户输入,这有助于理解程序的逻辑结构。通过使用try-catch块处理程序运行时可能出现的异常,如输入不匹配异常InputMismatchException。在添加、显示、修改和删除学生信息的过程中,使用了循环来处理重复的任务,这有助于理解循环结构的用途。
不仅学习了Java编程的基础,而且也获得了一些软件开发的实践经验。这些经验将为日后解决更复杂的问题和开发更大型的应用程序打下坚实的基础。