项目要求:
采取控制台的方式去书写学生管理系统。
-欢迎来到学生管理系统-
初始菜单:
"1:添加学生" "2:删除学生" "3:修改学生" "4:查询学生" "5:退出"
"请输入您的选择:"
学生类:
属性:id、姓名、年龄、家庭住址
添加功能
键盘录入每一个学生信息并添加,需要满足以下要求:
id 唯一
删除功能
键盘录入要删除的学生id,需要满足以下要求:
.id 存在删除
· id不存在,需要提示不存在,并回到初始菜单
修改功能
键盘录入要修改的学生id,需要满足以下要求:
.id存在,继续录入其他信息
·id不存在,需要提示不存在,并回到初始菜单
查询功能:
打印所有的学生信息,需要满足以下要求
如果没有学生信息,提示:当前无学生信息,请添加后再查询
·如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
id 姓名 年龄 家庭住址
lighthouse001 张三 23 南京
lighthouse002 李四 24 北京
lighthouse003 王五 25 广州
lighthouse004 赵六 26 深圳
import java.util.ArrayList;
import java.util.Scanner;
public class StudentSystem {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
loop:while(true) {
System.out.println("------------------欢迎来到学生管理系统---------------------");
System.out.println("1:添加学生");
System.out.println("2:删除学生");
System.out.println("3:修改学生");
System.out.println("4:查询学生");
System.out.println("5:退出");
System.out.println("请输入您的选项:");
@SuppressWarnings("resource")
Scanner sc= new Scanner(System.in);
String choose = sc.next();
switch(choose) {
case"1"->addStudent(list);
case"2"->deleteStudent(list);
case"3"->updateStudent(list);
case"4"->queryStudent(list);
case"5"->{System.out.println("退出成功");break loop;}
default->System.out.println("没有这个选项");
}
}
}
public static void addStudent(ArrayList<Student> list) {
Student s = new Student();
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
while(true) {
System.out.println("请输入学生的id");
String id = sc.next();
boolean flag = contains(list,id);
if(flag) {
System.out.println("id已经存在,请重新输入");
}else {
s.setId(id);
break;
}
}
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.add(s);
System.out.println("学生信息添加成功");
}
public static void deleteStudent(ArrayList<Student> list) {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
if(list.size()==0) {
System.out.println("当前无学生信息,请添加后再操作");
return;
}
System.out.println("请输入要删除的id");
String id = sc.next();
int index = getIndex(list,id);
if(index>=0) {
list.remove(index);
System.out.println("id为:"+id+"的学生删除成功");
}else {
System.out.println("id不存在,删除失败");
}
}
public static void updateStudent(ArrayList<Student> list) {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
if(list.size()==0) {
System.out.println("当前无学生信息,请添加后再操作");
return;
}
System.out.println("请输入要修改学生的id");
String id = sc.next();
int index=getIndex(list,id);
if(index==-1) {
System.out.println("要修改的id"+id+"不存在,请重新输入");
return;
}
Student stu = list.get(index);
System.out.println("请输入要修改的学生姓名");
String newName = sc.next();
stu.setName(newName);
System.out.println("请输入要修改的学生年龄");
int newAge = sc.nextInt();
stu.setAge(newAge);
System.out.println("请输入要修改的学生的地址");
String newAddress = sc.next();
stu.setAddress(newAddress);
System.out.println("学生信息修改成功");
}
public static void queryStudent(ArrayList<Student> list) {
if(list.size()==0) {
System.out.println("当前无学生信息,请添加后再查询");
return;
}
System.out.println("id\t\t姓名\t年龄\t家庭住址");
for(int i=0;i<list.size();i++) {
Student stu = list.get(i);
System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getAge()+"\t"+stu.getAddress());
}
}
public static boolean contains(ArrayList<Student> list,String id) {
for(int i=0;i<list.size();i++){
Student stu = list.get(i);
String sid = stu.getId();
if(sid.equals(id)) {
return true;
}
}
return false;
}
public static int getIndex(ArrayList<Student> list,String id) {
for(int i=0;i<list.size();i++) {
Student stu = list.get(i);
String sid = stu.getId();
if(sid.equals(id)) {
return i;
}
}
return -1;
}
}
public class Student{
private String id;
private String name;
private int age;
private String address;
public void setId(String id) {
// TODO Auto-generated method stub
this.id=id;
}
public void setName(String name) {
// TODO Auto-generated method stub
this.name=name;
}
public void setAge(int age) {
// TODO Auto-generated method stub
this.age=age;
}
public void setAddress(String address) {
// TODO Auto-generated method stub
this.address=address;
}
public String getId() {
// TODO Auto-generated method stub
return id;
}
public String getName() {
// TODO Auto-generated method stub
return name;
}
public String getAddress() {
// TODO Auto-generated method stub
return address;
}
public int getAge() {
return age;
}
}
分析:
菜单可以通过switch语句来实现,并在每个case语句后加上对应的方法;循环操作则可以通过用while循环包裹main函数的主体,至于退出可以先给while循环命名,再从执行退出的的case语句书写break 循环名;关于添加学生最好使用集合来存储。
如果还有需要改进的地方,还请各位学长学姐指出,感激不尽。