好友
阅读权限 10
听众
最后登录 1970-1-1
本帖最后由 苏紫方璇 于 2020-11-23 12:39 编辑
写了一个管理系统,求优化
初次发帖,若有不当之处, 请删
[Java] 纯文本查看 复制代码
public class StudentManager {
public static void main(String[] args) {
ArrayList<Student> sList = new ArrayList<>();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println();
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("-----------------输入对应序号,可选择对应功能,请输入:");
String str1 = scanner.nextLine();
if ("1".equals(str1)) {
addStudent(scanner, sList);
} else if ("2".equals(str1)) {
updateStudent(scanner, sList);
} else if ("3".equals(str1)) {
findAll(sList);
} else if ("4".equals(str1)) {
deleteStudent(scanner, sList);
} else if ("5".equals(str1)) {
System.out.println("-----------------您输入的序号是 5. 已退出系统.");
System.out.println("-----------------再见!-----------------");
break;
} else {
System.out.println("-----------------输入的序号有误, 已返回主菜单.");
System.out.println();
}
}
}
private static void deleteStudent(Scanner scanner, ArrayList<Student> sList) {
System.out.println("-----------------您输入的序号是 4. 已进入学生资料清理系统.");
if (sList.size() != 0) {
int count = 0;
int index = -1;
String id;
while (true) {
if (count == 0) {
System.out.println("-----------------请输入被删除学生的ID号, 若想放弃删除操作,请输入9527");
} else {
System.out.println("-----------------请重新输入被删除学生的ID号, 若想放弃删除操作,请输入9527");
}
id = scanner.nextLine();
if ("9527".equals(id)) {
System.out.println("-----------------取消删除操作. 返回主菜单.");
break;
} else {
for (int i = 0; i < sList.size(); i++) {
if (sList.get(i).getId().equals(id)) {
index = i;
break;
}
}
}
if (index != -1) {
sList.remove(index);
System.out.println("-----------------删除成功. 返回主菜单.");
break;
} else {
count++;
System.out.println("-----------------经查询, 此次输入ID号和系统中学生信息不匹配.");
}
}
} else {
System.out.println("-----------------系统中无数据,无法删除. 返回主菜单.");
}
}
private static void findAll(ArrayList<Student> sList) {
System.out.println("-----------------您输入的序号是 3. 已进入查看学生信息系统.");
if (sList.size() != 0) {
System.out.println("当前前系统内共有 " + sList.size() + " 名学生,信息如下:");
System.out.println("学生id号\t\t\t" + "学生姓名");
for (Student student : sList) {
System.out.println(student.getId() + "\t\t\t" + student.getName());
}
System.out.println("-----------------查询完毕,返回主菜单.");
} else {
System.out.println("-----------------经查询,系统内暂无数据.");
}
}
private static void updateStudent(Scanner scanner, ArrayList<Student> sList) {
System.out.println("-----------------您输入的序号是 2. 已进入学生信息变更系统.");
if (sList.size() != 0) {
System.out.println("-----------------请输入想要变更信息的学生id号,若要放弃变更请输入9527");
String id;
int count = 0;
int size;
while (true) {
id = scanner.nextLine();
if ("9527".equals(id)) {
System.out.println("-----------------放弃变更,返回主菜单.");
break;
}
for (int i = 0; i < sList.size(); i++) {
if (id.equals(sList.get(i).getId())) {
size = sList.size();
count++;
System.out.println("已获取到该生信息");
System.out.println("学生id号: " + id);
System.out.println("学生姓名: " + sList.get(i).getName());
System.out.println();
System.out.println("-----------------请为该生录入新的学生信息.");
sList.remove(i);
//通过判断原集合的长度, 来保证删除一个之后, 务必添加回一个, 才可以结束循环.
while (size != sList.size()) {
//保证修改之后的位置和之前一致, 比如1,2,3. 对2修改, 保证修改后是 1,x,3
realAdd(scanner, sList, i, id);
}
break;
}
}
if (count == 0) {
System.out.println("!!!经查询,输入的id与系统中信息不匹配,无法变更,请重新输入id号,若要放弃变更请输入9527");
} else {
break;
}
}
} else {
System.out.println("-----------------经查询,系统内暂无数据.");
}
}
private static void addStudent(Scanner scanner, ArrayList<Student> sList) {
System.out.println("-----------------您输入的序号是 1. 已进入新生录入系统.");
realAdd(scanner, sList);
}
private static void realAdd(Scanner scanner, ArrayList<Student> sList, int index, String id) {
System.out.println("请输入学生姓名:");
String name = scanner.nextLine();
Student student = new Student(id, name);
sList.add(index,student);
System.out.println("-----------------更新成功. 返回主菜单.");
}
private static void realAdd(Scanner scanner, ArrayList<Student> sList) {
int number;
String id;
while (true) {
System.out.println("请输入学生id号:");
id = scanner.nextLine();
number = checkId(sList, id);
if (number == 0) {
break;
} else {
System.out.println("!!!该id号归属其他学生, 请重新输入学生id号:");
}
}
System.out.println("请输入学生姓名:");
String name = scanner.nextLine();
Student student = new Student(id, name);
sList.add(student);
System.out.println("-----------------录入完成. 返回主菜单.");
}
//通过id校验学生id是否存在----------返回值 1表示存在, 0表示不存在
private static int checkId(ArrayList<Student> sList, String id) {
for (Student student : sList) {
if (id.equals(student.getId())) {
return 1;
}
}
return 0;
}
}
实体类代码如下:
[Java] 纯文本查看 复制代码
public class Student {
private String id;
private String name;
public Student() {
}
public Student(String id, String name) {
this.id = id;
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return Objects.equals(id, student.id) &&
Objects.equals(name, student.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
免费评分
查看全部评分