内存上的学生信息管理系统
完成一个学生(姓名、年龄、性别、学号)管理系统:
1、可以添加学生.
2、可以按照学号修改学生信息.
3、可以按照学号删除学生信息.
4、可以通过学号查询学生信息.
实体节点类
package com.csoracle.练习;
import java.util.Objects;
public class StudentNode {
private String name;
private Integer age;
private String sex;
private Integer number;
public StudentNode(String name, Integer age, String sex, Integer number) {
this.name = name;
this.age = age;
this.sex = sex;
this.number = number;
}
public StudentNode() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
StudentNode that = (StudentNode) o;
return Objects.equals(name, that.name) &&
Objects.equals(age, that.age) &&
Objects.equals(sex, that.sex) &&
Objects.equals(number, that.number);
}
@Override
public int hashCode() {
return Objects.hash(name, age, sex, number);
}
@Override
public String toString() {
return "StudentNode{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", number=" + number +
'}';
}
}
实现方法类
package com.csoracle.练习;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
public class StudentSystem {
private static final HashMap students = new HashMap();
private static final Scanner sc = new Scanner(System.in);
public void start() {
System.out.println(">>>>>>>>>>>>>>>>>欢迎来到J09的学生管理系统<<<<<<<<<<<<<<<<<<");
wecome();
}
public void wecome() {
System.out.println("请你选择需要执行的操作:");
System.out.print("0、按学号查询学生信息,");
System.out.print("1、添加学生的个人信息,");
System.out.print("2、按学号删除学生信息" + "\n");
System.out.print("3、按学号更改学生信息,");
System.out.print("4、查看所以的学生信息,");
System.out.println("5、退出信息管理系统..");
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<");
choose();
}
public void choose() {
System.out.print("请选择操作:");
int i = sc.nextInt();
while (true) {
change(i);
}
}
public void change(int i) {
switch (i) {
case 0:
System.out.println("按学号查询学生信息");
showIndex();
wecome();
case 1:
System.out.println("添加学生的个人信息");
add();
wecome();
break;
case 2:
System.out.println("按学号删除学生信息");
remove();
wecome();
break;
case 3:
System.out.println("按学号更改学生信息");
changeStu();
wecome();
break;
case 4:
System.out.println("查看所以的学生信息");
showAll();
wecome();
break;
case 5:
System.out.println("退出信息管理系统中..");
System.out.println("退出成功!");
System.exit(0);
break;
default:
System.out.println("输入不合法");
wecome();
break;
}
}
public void add() {
StudentNode student = new StudentNode();
System.out.print("输入学号:");
student.setNumber(sc.nextInt());
System.out.print("输入名字:");
student.setName(sc.next());
System.out.print("输入年龄:");
student.setAge(sc.nextInt());
System.out.print("输入性别:");
student.setSex(sc.next());
if (students.containsKey(student.getNumber())) {
System.out.print("该学号已有学生,是否继续:(y/n)");
String isContinue = sc.next();
if ("n".equals(isContinue)) {
System.out.println("添加失败");
return;
}
}
students.put(student.getNumber(), student);
System.out.println("添加成功:" + student);
}
public void changeStu() {
StudentNode student = new StudentNode();
System.out.print("输入要更改学生信息的学号:");
int index = sc.nextInt();
StudentNumberJudgment(index);
student.setNumber(index);
System.out.print("输入名字:");
student.setName(sc.next());
System.out.print("输入年龄:");
student.setAge(sc.nextInt());
System.out.print("输入性别:");
student.setSex(sc.next());
students.put(student.getNumber(), student);
System.out.println("修改成功!");
}
// fast-tail
public void remove() {
System.out.print("输入要删除学生信息的学号:");
int index = sc.nextInt();
StudentNumberJudgment(index);
/*Set set = students.keySet();
for (Object o : set) {
if(o.equals(index)){
students.remove(index);
}
}*/
//很大的可能报错,因为在迭代的时候,不允许增加删除操作,会引起线程异常、不安全
students.remove(index);
System.out.println("删除成功");
}
public void showAll() {
Set set = students.entrySet();
for (Object o : set) {
System.out.println(o);
}
}
public void showIndex() {
System.out.print("输入要查询学生信息的学号:");
int index = sc.nextInt();
StudentNumberJudgment(index);
Object o = students.get(index);
System.out.println(o);
}
public void StudentNumberJudgment(int index) {
if (!students.containsKey(index)) {
System.out.println("您输入的学号不存在");
wecome();
} else {
return;
}
}
}
测试类
package com.csoracle.练习;
public class Test01 {
public static void main(String[] args) {
StudentSystem studentSystem = new StudentSystem();
studentSystem.start();
}
}
测试结果


浙公网安备 33010602011771号