1、
1.Student
@Data @AllArgsConstructor @NoArgsConstructor @Builder
public class Student implements Serializable {
@Serial
private static final long serialVersionUID = -416194835759765348L;
private int sid;
private String sname;
private int sage;
private String sgender;
private String address;
}
2、
2.StudentMennager
public class StudentMenager {
static {
}
public static void main(String[] args) {
// 1.建立集合
// List<Student> sm = new ArrayList<>();
//2.循环语句
menu:
while (true) {
// 3.建立键盘输入对象
Scanner sc = new Scanner(System.in);
System.out.println(Util.center(" 学生管理系统Ver1.0 ", 20, "*"));
System.out.println(Util.center(" 1.添加学生 ", 20, " "));
System.out.println(Util.center(" 2.删除学生 ", 20, " "));
System.out.println(Util.center(" 3.修改学生 ", 20, " "));
System.out.println(Util.center("4.查询所有学生 ", 20, " "));
System.out.println(Util.center("5.退出 ", 20, " "));
System.out.println("请输入[1-5]:");
int index = sc.nextInt();
switch (index) {
case 1:
Util.add();
break;
case 2:
Util.delete();
break;
case 3:
Util.modify();
break;
case 4:
Util.printAll();
break;
default:
System.out.println("程序退出");
break menu;
}
}
}
}
3、
3.Util
public class Util {
public final static String db = "dbsm.dat";
public static List<Student> sm = new ArrayList<>();
public static void save(){
// 保存数据 ObjectInputStream
try (var ois = new ObjectOutputStream(new FileOutputStream(db))){
ois.writeObject(sm);
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} catch (Exception e){
}
}
public static void load(){
File dd = new File(db);
if (dd.exists()){
// 读取数组 ObjectInputStream
try (var ois = new ObjectInputStream(new FileInputStream(db))){
sm = (java.util.List<Student>) ois.readObject();
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
} catch (Exception e){
}
} else {
save();
}
}
/* 实现录入学生的信息,并保存的集合中 */
public static void add() {
System.out.println(Util.center(" 添加 ",8," "));
Scanner sc = new Scanner(System.in);
Student st = new Student();
System.out.print("请输入学号,是一个整数:");
st.setSid(sc.nextInt());
System.out.print("请输入姓名:");
st.setSname(sc.next());
System.out.print("请输入性别[男|女]:");
st.setSgender(sc.next());
System.out.print("请输入年龄:");
st.setSage(sc.nextInt());
System.out.print("请输入家庭住址:");
st.setAddress(sc.next());
sm.add(st);
save();
try {
System.out.println("保存中...");
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
System.out.printf("学生:%s,信息录入成功!!!%n%n%n%n", st.getSname());
}
/* 实现查询添加的所有学生信息 */
public static void printAll() {
load();
System.out.println(Util.center(" 查看所有学生 ",8," "));
System.out.println(Util.left("学号",10) + Util.center("姓名",8," ") + Util.left("家庭地址",30));
System.out.println("-".repeat(50));
sm.forEach(s -> {
System.out.println(Util.left("" + s.getSid(),10) + Util.center(s.getSname(),8," ") + Util.left(s.getAddress(),30));
});
System.out.println("-".repeat(50));
System.out.printf("共有学生人数:%d%n%n%n%n", sm.size());
}
/* 实现左对齐 */
public static String left(String str, int length) {
return String.format("%-" + length + "s", str);
}
/* 实现右对齐 */
public static String right(String str, int length) {
return String.format("%" + length + "s", str);
}
/* 实现居中对齐 */
public static String center(String str, int length,String ch) {
int size = (length - str.length() / 2);
return ch.repeat(size).concat(str).concat(ch.repeat(size));
}
/* 实现删除学生信息 */
public static void delete(){
System.out.println(Util.center(" 删除 ",8," "));
Scanner sc = new Scanner(System.in);
System.out.print("请输入删除的学生学号:");
int sno = sc.nextInt();
boolean f = false;
for (int i = 0; i < sm.size(); i++) {
Student st = sm.get(i);
if (st.getSid() == sno){
f = true;
sm.remove(i);
}
}
if (f){
System.out.println("删除成功");
} else {
System.out.println("删除失败,请检查学号...");
}
save();
System.out.println();
}
/* 实现学生信息的修改 */
public static void modify(){
Scanner sc = new Scanner(System.in);
System.out.println("请输入需要修改的学生的学号:");
int sid = sc.nextInt();
// 键盘录入要修改的学生信息
System.out.println("请输入学生的新姓名:");
String name = sc.next();
System.out.println("请输入学生的新年龄:");
int age = sc.nextInt();
System.out.println("请输入学生的新住址:");
String address = sc.nextLine();
// 创建学生对象
Student st = new Student();
st.setSid(sid);
st.setSname(name);
st.setSage(age);
st.setAddress(address);
// 遍历集合修改对应的学生信息
for (int i = 0; i < sm.size(); i++) {
Student stu = sm.get(i);
if (stu.equals(sid)){
sm.set(i,st);
break;
}
}
save();
System.out.println("修改学生信息成功");
}
/* 实现程序的退出功能 */
public static void quit(){
}
}