学生管理系统。该系统主要功能如下:
添加学生:通过键盘录入学生信息,添加到集合中
删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:将集合中的学生对象信息进行展示
退出系统:结束程序
初始菜单:
"---------------欢迎来到学生管理系统----------------"
"1:添加学生"
"2:删除学生"
"3:修改学生"
"4:查询学生"
"5:退出"
"请输入您的选择:"
学生类:
属性:id、姓名、年龄、家庭住址
添加功能:
键盘录入每一个学生信息并添加,需要满足以下要求:
● id唯一
删除功能:
键盘录入要删除的学生id,需要满足以下要求:
● id存在删除
● id不存在,需要提示不存在,并回到初始菜单
修改功能:
键盘录入要修改的学生id,需要满足以下要求
● id存在,继续录入其他信息
● id不存在,需要提示不存在,并回到初始菜单
查询功能:
打印所有的学生信息,需要满足以下要求
● 如果没有学生信息,提示:当前无学生信息,请添加后再查询
● 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
id 姓名 年龄 家庭住址
001 张三 23 南京
002 李四 24 北京
003 王五 25 广州
004 赵六 26 深圳
需求:
采取控制台的方式去书写学生管理系统。
代码如下:
Student类:
package StudentManagementSystem;
public class Student {
private String id;
private String name;
private int age;
private String address;
//无参构造
public Student() {
}
//带参构造
public Student(String id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
//取id
public String getId() {
return id;
}
//设置id
public void setId(String id) {
this.id = id;
}
//取name
public String getName() {
return name;
}
//设置name
public void setName(String name) {
this.name = name;
}
//取age
public int getAge() {
return age;
}
//设置age
public void setAge(int age) {
this.age = age;
}
//取address
public String getAddress() {
return address;
}
//设置address
public void setAddress(String address) {
this.address = address;
}
}
主方法:
package StudentManagementSystem;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentManagementSystem {
public static void main(String[] args) {
ArrayList <Student> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
while (true) {
welcome();
System.out.println("请输入您的选择:");
String choose = sc.next();
switch (choose){
//添加学生
case "1":
addStudent(list);
break;
//删除学生
case "2":
deleteStudent(list);
break;
//修改学生
case "3":
updateStudent(list);
break;
//查询学生
case "4":
queryStudent(list);
break;
//退出系统
case "5":
System.exit(0);//停止虚拟机运行
default:
System.out.println("输入错误,请重新输入");
break;
}
}
}
welcome方法:
public static void welcome(){
//打印欢迎界面
System.out.println("---------------欢迎来到学生管理系统----------------");
System.out.println("1:添加学生");
System.out.println("2:删除学生");
System.out.println("3:修改学生");
System.out.println("4:查询学生");
System.out.println("5:退出");
}
addStudent方法:
//添加学生
public static void addStudent(ArrayList <Student> list){
Scanner sc = new Scanner(System.in);
//新建学生对象
Student student = new Student();
//添加id
String id = null;
//用一个循环添加id,
while (true) {
System.out.println("请添加id:");
id = sc.next();
//判断id的唯一性
if(judgeOnly(list,id)){
//不唯一则提示添加失败,继续循环直至添加成功
System.out.println("添加失败,已经有该id");
}
//唯一则添加完id结束循环
else{
student.setId(id);
break;
}
}
//添加年龄
System.out.println("请添加年龄:");
int age = sc.nextInt();
student.setAge(age);
//添加姓名
System.out.println("请添加姓名:");
String name = sc.next();
student.setName(name);
//添加家庭住址
System.out.println("请添加家庭住址:");
String address = sc.next();
student.setAddress(address);
list.add(student);
}
deleteStudent方法:
//删除学生
public static void deleteStudent(ArrayList <Student> list){
Scanner sc =new Scanner(System.in);
System.out.println("请输入要删除的学生id:");
String id =sc.next();
boolean flag = judgeOnly(list, id);
//判断是否存在相同id,如果存在,就删除
if(flag){
//遍历集合,找相同id索引
for (int i = 0; i < list.size(); i++) {
Student student = list.get(i);
if(id.equals(student.getId())){
//找到索引,用集合remove方法移除该索引对应元素
list.remove(i);
}
}
}
else{
System.out.println("不存在该id");
return;
}
}
updateStudent方法:
//修改学生
public static void updateStudent(ArrayList <Student> list){
Scanner sc =new Scanner(System.in);
System.out.println("请输入要修改的学生id:");
String id = sc.next();
//判断id是否存在
boolean flag = judgeOnly(list, id);
if(flag){
//存在则修改id
System.out.println("该学生存在,请输入要修改的学生信息:");
//创建一个新的学生对象
Student newStudent = new Student();
//将原id传递给新学生对象
newStudent.setId(id);
System.out.println("请输入学生的姓名:");
String name = sc.next();
newStudent.setName(name);
System.out.println("请输入学生的年龄:");
int age = sc.nextInt();
newStudent.setAge(age);
System.out.println("请输入学生的家庭住址:");
String address = sc.next();
newStudent.setAddress(address);
//遍历集合,获取id相同的索引
for (int i = 0; i < list.size(); i++) {
Student student = list.get(i);
if(id.equals(student.getId())){
list.set(i,newStudent);
}
}
}
else{
System.out.println("不存在该id");
return;
}
}
queryStudent方法:
//查询学生
public static void queryStudent(ArrayList <Student> list){
if(list.size() == 0){
System.out.println("当前无学生信息,请添加后再查询");
return;
}
else{
System.out.println("id"+"\t\t"+"姓名"+"\t\t"+"年龄"+"\t\t"+"家庭住址");
for (int i = 0; i < list.size(); i++) {
Student student = list.get(i);
System.out.println(student.getId()+"\t\t"+student.getName()+"\t\t"+student.getAge()+"\t\t"+student.getAddress());
}
}
}
judgeOnly方法:
//判断唯一性
public static boolean judgeOnly(ArrayList <Student> list,String id){
//遍历集合
for (int i = 0; i < list.size(); i++) {
Student student = list.get(i);
if(id.equals(student.getId())){
return true;
}
}
return false;
}
效果展示:
欢迎菜单:
添加学生&查询学生:
删除学生:
修改学生:
不足:
代码还存在冗余的地方,有待完善,比如每次都要写一个循环遍历集合然后获取id相同的索引,这个地方可以用一个方法来实现。