/* 要求:
* 设计学生管理系统,实现添加、删除、修改、查询学生信息的功能
* 大体思路:
* 添加——>查询——>修改、删除
*/
import java.util.Scanner;//引包,Scanner类不在java.lang包中,需引包
public class Main {
static int index = 0;//index用于排序,安置对象
static Student [] students = new Student[45];//数组中可包含45个学生
public static void main(String[] args) {
System.out.println("***********************************");//系统头部
System.out.println("* 欢迎使用学生管理系统 *");
System.out.println("***********************************");
System.out.println("1、添加学生信息");//操作项
System.out.println("2、删除学生信息");
System.out.println("3、修改学生信息");
System.out.println("4、查询学生信息");
for(;;) {//用死循环执行方法,才能保证存储对象,若单单执行一次,执行结束后直接释放内存,无法存储
menu();
}
}
private static void menu() { //static修饰,因为要在main方法里使用,main方法为静态
System.out.println("输入操作项,按下Enter键");
Scanner scanner = new Scanner(System.in);//创建Scanner对象,以使用其中方法实现输入操作
int option = scanner.nextInt();//输入
switch(option) {//输入不同操作项,完成不同的功能
case 1:{
if(index > students.length-1) {//若人数已满便无法继续添加
System.out.println("人员已满!");
return;
}
System.out.println("添加学生信息");
Student student = new Student();
System.out.println("请输入姓名后,按下Enter键");
String name = scanner.next();
student.setName(name);
System.out.println("请输入学号后,按下Enter键");
String id = scanner.next();
student.setId(id);
for(Student stu : students) {//判断所输入的学号是否有重复
if(stu==null) {
break;
}
if(stu.getId().equals(student.getId())) {
System.out.println("学号重复!");
return;
}
}
System.out.println("请输入手机号后,按下Enter键");
String mobile = scanner.next();
student.setMobile(mobile);
System.out.println("请输入地址后,按下Enter键");
String address = scanner.next();
student.setAddress(address);
students[index] = student;//存储信息
index = index+1;//改变下次存储位置
System.out.println("添加成功");
System.out.println(index);
break;
}
case 2: {
System.out.println("删除学生信息");
for(int i = 0;;i++) {
System.out.println("请输入学号:");
String yourid = scanner.next();
int j = 0;//j用于删除时的排序
for(;j<students.length;j++) {//此处查询与case4不同,是为了更方便地操作对象,使逻辑更清晰
if(students[j]==null) {
break;
}
if(students[j].getId().equals(yourid)) {
System.out.println("找到该学生:");
System.out.println(students[j]);
System.out.println("要删除该学生全部信息吗?");
System.out.println("1.是"+" 2.不是");
System.out.println("输入操作项:");
option = scanner.nextInt();
switch(option) {
case 1:{//确认删除
for(;j<students.length;j++) {
if(j==students.length-1) {//如果到最后一个位置,直接删除,结束循环
students[j]=null;
break;
}
//这里的排序比较巧妙,若后一位是空对象,则本对象直接删除,循环结束;若不是空对象,将后面每一个
//对象向前移一位,直到遇见空对象或到达最后一位
students[j]= students[j+1];
if(students[j+1]==null) {
break;
}
}
index--;//使下次添加学生时补到最前面的空位
System.out.println("删除成功!");
return;
}
case 2:{
return;
}
default:
System.out.println("系统未找到"+option+"操作项");
return;
}
}
}
System.out.println("未找到该学号,请重新输入");
if(i>=1) {
System.out.println("如需返回请按0");
option = scanner.nextInt();
if(option == 0) {
return;
}
}
}
}
case 3: {
System.out.println("修改学生信息");
for(int i = 0;;i++ ) {
System.out.println("请输入学号:");
String yourid = scanner.next();
for(Student student : students) {
if(student==null) {
break;
}
if(student.getId().equals(yourid)) {//在查询的基础上添加修改的部分
System.out.println("找到该学生:");
System.out.println(student);
System.out.println("进行修改");
System.out.println("请输入姓名后,按下Enter键");
String name = scanner.next();
student.setName(name);
System.out.println("请输入手机号后,按下Enter键");
String mobile = scanner.next();
student.setMobile(mobile);
System.out.println("请输入地址后,按下Enter键");
String address = scanner.next();
student.setAddress(address);
System.out.println("修改成功!");
return;
}
}
System.out.println("未找到该学号,请重新输入");
if(i>=1) {
System.out.println("如需返回请按0");
option = scanner.nextInt();
if(option == 0) {
return;
}
}
}
}
case 4:{
System.out.println("查询学生信息");
for(int i = 0;;i++) {//此循环用于输入错误时的重新输入,i用于记录输错次数
System.out.println("请输入学号:");
String yourid = scanner.next();
for(Student student : students) {//逐个查找寻找学号匹配的学生
if(student==null) {//寻找到空对象,说明已查找所有添加的对象,脱离循环,对未找到的情况进行处理
break;
}
if(student.getId().equals(yourid)) {//寻找到对应的对象,输出对象所有信息
System.out.println("找到该学生:");
System.out.println(student);//输出Student类里的toString方法,对该方法重写,达到输出所有信息的目的
return;
}
}
System.out.println("未找到该学号,请重新输入");//当搜索了所有对象或找到空对象,即未找到,脱离循环
if(i>=1) {//输错达到两次,提示返回操作
System.out.println("如需返回请按0");
option = scanner.nextInt();
if(option == 0) {
return;
}
}
}
}
default:System.out.println("系统未找到"+option+"操作项");//处理开始输入操作项错误的情况
}
}
}