描述
Java SE 综合案例:学生管理系统。
题目
该系统主要功能如下:
定义一个
添加学生:通过键盘录入学生信息,添加到集合中。
删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除。
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改。
查看学生:将集合中的学生对象信息进行展示。
退出系统:结束程序。
题目解决思路
在主方法中,设计系统总界面,利用
定义两个公共
分别定义添加学生、删除学生、修改学生、查看学生。
代码具体实现
定义学生类
public class Student{
private String sid;
private String name;
private String age;
private String address;
public Student(){
}
public Student(String sid, String name, String age, String address){
this.sid = sid;
this.name = name;
this.age = age;
this.address = address;
}
public String getSid(){
return sid;
}
public void setSid(String sid){
this.sid = sid;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getAge(){
return age;
}
public void setAge(String age){
this.age = age;
}
public String getAddress(){
return address;
}
public void setAddress(String address){
this.address = address;
}
}
学生信息管理系统具体实现
public class StudentManager{
public static void main(String[] args){
ArrayList students = new ArrayList<>();
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("嗨客网(www.haicoder.net)\n");
System.out.println("===========欢迎来到学生管理系统===========");
System.out.println("以下为操作命令:");
System.out.println("1. 添加学生信息:add");
System.out.println("2. 删除学生信息:delete");
System.out.println("3. 修改学生信息:update");
System.out.println("4. 查询学生信息:query");
System.out.println("5. 退出学生系统:exit");
System.out.print("请您输入您要操作的命令:");
String command = sc.nextLine();
switch (command) {
case "add":
addStudent(students);
System.out.println("添加信息成功!!");
break;
case "delete":
deleteStudent(students);
break;
case "update":
updateStudent(students);
break;
case "query":
queryStudent(students);
break;
case "exit":
System.out.println("退出系统!");
System.exit(0);
break;
default:
System.out.println("您输入的命令有误,请重新输入!");
}
System.out.println("");
}
}
/**
* 添加学生信息方法
*
* @param students
*/
public static void addStudent(ArrayList students){
System.out.println("=================添加学生信息============");
// 直接定义扫描器,录入学生信息
Scanner sc = new Scanner(System.in);
String sid;
// 接收学生信息
while (true) {
System.out.println("请您输入学号:");
sid = sc.nextLine();
// 判断学号是否重复
boolean bool = isSIdRepeat(sid, students);
if (bool) {
System.out.println("您输入的学号重复!");
} else {
break;
}
}
System.out.println("请您输入姓名:");
String name = sc.nextLine();
System.out.println("请您输入年龄:");
String age = sc.nextLine();
System.out.println("请您输入地址:");
String address = sc.nextLine();
// 封装学生信息
Student student = new Student(sid, name, age, address);
// 添加学生对象到集合容器
students.add(student);
}
/**
* 删除某个学生的信息
*
* @param students
*/
public static void deleteStudent(ArrayList students){
System.out.println("=================删除学生信息============");
if (students.size() > 0) {
while (true) {
System.out.println("请您删除要删除的学号:");
Scanner sc = new Scanner(System.in);
String sid = sc.nextLine();
// 判断学号是否存在
Boolean bool = isSIdRepeat(sid, students);
if (bool) {
int i = getIndex(sid, students);
students.remove(i);
break;
} else {
System.out.println("您删除的学生不存在");
System.out.println("请问您要继续吗? Y/N");
String rs = sc.nextLine();
if ("N".equals(rs)) {
break;
}
}
}
} else {
System.out.println("学生信息为空,请先添加学生信息!");
}
}
/**
* 修改某个学生的信息
*
* @param students
*/
public static void updateStudent(ArrayList students){
System.out.println("=================修改学生信息============");
Scanner sc = new Scanner(System.in);
if (students.size() > 0) {
while (true) {
System.out.println("请输入要修改的学生的学号:");
String sid = sc.nextLine();
// 判断学号是否存在
Boolean bool = isSIdRepeat(sid, students);
if (bool) {
// 获取到对象集合中的角标
int index = getIndex(sid, students);
// 用户输入新的学生信息
System.out.println("请您输入姓名:");
String name = sc.nextLine();
System.out.println("请您输入年龄:");
String age = sc.nextLine();
System.out.println("请您输入地址:");
String address = sc.nextLine();
Student newStu = new Student(sid, name, age, address);
students.set(index, newStu);
System.out.println("修改学生信息成功");
break;
} else {
System.out.println("您需要修改的学生不存在!");
System.out.println("请问您要继续吗? Y/N");
String rs = sc.nextLine();
if ("N".equals(rs)) {
break;
}
}
}
} else {
System.out.println("学生信息为空,请先添加学生信息!");
}
}
/**
* 查询全部学生信息
*
* @param students
*/
private static void queryStudent(ArrayList students){
System.out.println("学生信息为:");
if (students.size() > 0) {
System.out.println("学号\t\t姓名\t\t年龄\t\t住址");
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
StringBuilder sb = new StringBuilder();
System.out.println(sb.append(s.getSid()).append("\t\t").append(s.getName()).append("\t\t").append(s.getAge()).append("\t\t").append(s.getAddress()));
}
} else {
System.out.println("学生信息为空,请先添加学生信息!");
}
}
/**
* 判断学生的学号是否重复
*
* @param sid
* @param students
* @return true 代表重复 false 代表没有重复
*/
public static boolean isSIdRepeat(String sid, ArrayList students){
// 遍历集合获取到所有学生对象,并判断学号是否重复
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
if (sid.equals(s.getSid())) {
return true;
}
}
return false;
}
/**
* 获取对象在集合中的索引
*
* @param sid
* @param students
* @return
*/
public static int getIndex(String sid, ArrayList students){
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
if (sid.equals(s.getSid())) {
return i;
}
}
return -1;
}
}
当未添加学生信息时,进行其他操作,都会返回该学生为空的提示(此处只展示一种),运行如下:
添加学生信息(添加 3 个学生信息,此处只展示一个),运行如下:
查询学生信息,运行如下:
当删除或者更新学生信息时,输入的学号不存在,则提示用户该学生不存在,询问用户是否继续(此处只展示一个),运行如下:
删除学生信息,运行如下:
删除学生信息之后,查询学生信息,此时发现学号为 03 的学生信息已经删除,运行如下:
修改学生信息,运行如下:
修改学生信息之后,查询学生信息,此时发现学号为 01 的学生信息已经更改,运行如下:
最后执行退出系统操作,运行如下:
以上案例运用了 Java SE 知识,实现了一个简易的学生信息管理系统。