【案例6-2】 学生管理系统
【案例介绍】
1.任务描述
编写一个程序,模拟学生管理系统。可以实现对学生信息的添加、删除、修改和查询功能,要求使用List集合存储自定义的对象集合,并熟练使用List集合的中常用方法实现相关的操作。
StudentSysTest.java
package com.j2se.myInstances.example6_2;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class StudentSysTest {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Student> list = new ArrayList<>();
while (true) {
printInfo();
switch (sc.nextInt()) {
case 1:
addStudent(list);
break;
case 2:
deleteStudent(list);
break;
case 3:
updateStudent(list);
System.out.println("修改学生");
break;
case 4:
showStudent(list);
break;
case 5:
System.out.println("退出系统");
System.exit(0);
break;
default:
System.out.println("输入有误,请重新输入!");
break;
}
}
}
private static void updateStudent(List<Student> list) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要删除的学生的学号:");
long sno = sc.nextLong();
int idx = -1;
for (int i = 0; i<list.size(); i++) {
Student s = list.get(i);
if (s.getSno() == sno) {
idx = i;
break;
}
}
if (idx != -1) {
Student s = new Student();
System.out.println("修改姓名:");
String name = sc.next();
s.setName(name);
System.out.println("修改年龄:");
int age = sc.nextInt();
s.setAge(age);
System.out.println("修改地址:");
String address = sc.next();
s.setAddress(address);
list.set(idx, s);
System.out.println("修改完成!\n");
}
else {
System.out.println("没有这号人,请重新操作!\n");
}
}
private static void deleteStudent(List<Student> list) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入要删除的学生的学号:");
long sno = sc.nextLong();
int idx = -1;
for (int i=0; i<list.size();i++) {
Student stu = list.get(i);
if (sno == stu.getSno()) {
idx = i;
break;
}
}
if (idx != -1) {
System.out.println("删除成功!\n");
list.remove(idx);
} else {
System.out.println("没有这号人!请重新选择!");
}
}
private static void showStudent(List<Student> list) {
boolean empty = isEmpty(list);
if (empty) {
System.out.println("暂无数据,请先添加学生数据。\n");
return;
} else {
for (Student student : list) {
System.out.println(student.getSno() + ", " + student.getName() + ", " + student.getAge() + ", " + student.getAddress());
}
System.out.println();
}
}
private static boolean isEmpty(List<Student> list) {
if (list.isEmpty())
return true;
else return false;
}
private static void addStudent(List<Student> list) {
Student s = new Student();
Scanner sc = new Scanner(System.in);
long sno;
while (true) {
System.out.print("学号:");
sno = sc.nextLong();
boolean flag = false;
for (Student stu : list) {
if (sno == stu.getSno()) {
flag = true;
break;
}
}
if (flag) {
System.out.println("学号重复了!请重新输入:");
} else {
System.out.print("姓名:");
String name = sc.next();
System.out.print("年龄:");
int age = sc.nextInt();
System.out.print("地址:");
String address = sc.next();
s.setSno(sno);
s.setName(name);
s.setAge(age);
s.setAddress(address);
list.add(s);
System.out.println("添加完成!\n");
break;
}
}
}
public static void printInfo() {
System.out.println("\t学生信息管理系统\t");
System.out.println("1. 添加学生");
System.out.println("2. 删除学生");
System.out.println("3. 修改学生");
System.out.println("4. 查看学生");
System.out.println("5. 退出系统");
System.out.println("请输入你的选择:");
}
}
Student.java
package com.j2se.myInstances.example6_2;
public class Student {
private long sno;
private String name;
private int age;
private String address;
public Student() {
}
public Student(long sno, String name, int age, String address) {
this.sno = sno;
this.name = name;
this.age = age;
this.address = address;
}
public long getSno() {
return sno;
}
public void setSno(long sno) {
this.sno = sno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}