//Student类
public class Student {
private String id;
private String name;
private String mobile;
private String address;
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {//鼠标右键——>source——>Generate toString()
return "Student [id=" + id + ", name=" + name + ", mobile=" + mobile + ", adddress=" + address + "]";
}
//Main类
import java.util.Scanner;
import venus.Student;
public class Main {
static Student [] students = new Student[45];
static int index = 0;
public static void main(String[] args) {
System.out.println("********************************");
System.out.println("* 欢迎使用教学管理系统 *");
System.out.println("********************************");
for(;;) {
menu();
}
}
private static void menu() {
System.out.println("1、添加学生信息");
System.out.println("2、查询学生信息");
System.out.println("3、修改学生信息");
System.out.println("4、删除学生信息");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入操作项,点击Enter键");
int option = scanner.nextInt();//接收输入的内容
switch (option) {//当值明确时,用switch比用if好,因为switch性能更好
case 1:{//注意加{},从而规定其中定义的变量的作用范围
if(index>44) {//保证学生不超过45人
System.out.println("人数已满");
break;
}
System.out.println("请添加学生信息");
Student student = new Student();
System.out.println("请输入学生的学号,点击Enter键");
//student.setId(scanner.next());
//System.out.println(student.getId());
String id = scanner.next();
student.setId(id);
System.out.println(id);
if(index!=0) {//注意此段代码的位置
for(Student stu : students) {//判断学号是否重复
if(stu==null) {//该if条件语句必须在前,否则报错,因为若下面的条件语句放在前面的话,会一直执行下去,轮不到该条件语句
break;//结束for循环
}
if(stu.getId().equals(student.getId())) {//不能用==,在引用数据类型中==判断地址是否相同
System.out.println("该学号已存在");
return;//注意这两个if条件语句不能互换,否则会报错 //不能用break
}
}
}
System.out.println("请输入学生的姓名,点击Enter键");
String name = scanner.next();
student.setName(name);
System.out.println(name);
System.out.println("请输入学生的手机号码,点击Enter键");
String mobile = scanner.next();
student.setMobile(mobile);
System.out.println(mobile);
System.out.println("请输入学生的家庭地址,点击Enter键");
String address = scanner.next();
student.setAddress(address);;
System.out.println(address);
students[index]=student;//添加学生
index = index+1;//位置下移,为添加下一个学生做铺垫
System.out.println("学生人数"+index);
System.out.println("添加成功");
break;
}
case 2:{
System.out.println("请查询学生信息");
System.out.println("请输入学生的姓名");
String name = scanner.next();
boolean hasDate = false;
for(Student student : students) {
if(student==null) {//注意不是 if(student.getName==null)
break;
}
if(student.getName().equals(name)) {
System.out.println(student);//直接输出对象时输出的是toString方法返回值结果
hasDate = true;
//此处不能有break,因为可能有重名现象
}
}
if(!hasDate) {
System.out.println("该学生不存在");
}
break;
}
case 3:{
System.out.println("请修改学生信息");
System.out.println("请输入学生学号,点击Enter键");//学号一般不能更改
String id = scanner.next();
boolean hasDate = false;
for(Student student : students) {
if(student==null) {//注意不是 if(student.getId==null)
break;
}
if(student.getId().equals(id)) {
System.out.println("请输入新的学生名,点击Enter键");
String name = scanner.next();
student.setName(name);
System.out.println(name);
System.out.println("请输入新的手机号码,点击Enter键");
String mobile = scanner.next();
student.setMobile(mobile);
System.out.println(mobile);
System.out.println("请输入新的家庭地址,点击Enter键");
String address = scanner.next();
student.setAddress(address);
System.out.println(address);
hasDate = true;
System.out.println("修改成功");
return;
}
}
if(!hasDate) {
System.out.println("该学生不存在");
}
break;
}
case 4:{
System.out.println("请删除学生信息");
System.out.println("请输入要删除的学生的学号,点击Enter键");
String id = scanner.next();
/*boolean hasDate = false;
for(Student student : students) {
if(student==null) {
break;
}
if(student.getId().equals(id)) {
student = students[index-1];
students[index-1]=null;
hasDate = true;
break;
}
}
if(!hasDate) {
System.out.println("该学号对应的学生不存在");
return;//不能是break,否则下面的代码还会执行。
}
index = index-1;
System.out.println(index);
System.out.println("删除成功");
break;*/
//查询
boolean hasDate = false;
int i = 0;
for(;i<students.length;i++) {
if(students[i]==null) {
break;
}
if(id.equals(students[i].getId())) {
hasDate = true;
break;
}
}
if(!hasDate) {
System.out.println("学号为"+id+"的学生不存在");
return;
}
//删除
for(;i<students.length;i++) {//i的起始值是i=0经上述循环后得到的值
if(i==students.length-1) {//人员已满的情况
students[i]=null;
break;
}
students[i] = students[i+1];
if(students[i+1]==null) {
break;
}
}
index = index-1;
System.out.println("学生人数"+index);
System.out.println("删除成功");
break;
}
default:
System.out.println("该操作项不存在");
break;
}
}
}