今天学习java,想着写个学生管理系统练练手,随便记下自己写的代码步骤。
1.需求分析如下
学生管理系统
需求:
采取控制台的方式去书写学生管理系统。
分析:
初始菜单:
-------------欢迎来到学生管理系统---------------- 1:添加学生 2:删除学生 3:修改学生 4:查询学生 5:退出 请输入您的选择:
学生类:
属性:id、姓名、年龄、家庭住址
添加功能:
键盘录入每一个学生信息并添加,需要满足以下要求:
-
id唯一
删除功能:
键盘录入要删除的学生id,需要满足以下要求:
-
id存在删除
-
id不存在,需要提示不存在,并回到初始菜单
修改功能:
键盘录入要修改的学生id,需要满足以下要求
-
id存在,继续录入其他信息
-
id不存在,需要提示不存在,并回到初始菜单
查询功能:
打印所有的学生信息,需要满足以下要求
-
如果没有学生信息,提示:当前无学生信息,请添加后再查询
-
如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
id 姓名 年龄 家庭住址 ptu001 张三 18 厦门 ptu002 李四 19 福州 ptu003 王五 20 深圳 ptu004 麻六 21 杭州
2.根据需求分析画出草图
3.开始写代码
先创建Student类和StudentTest类。
在Student类中创建id、name、age、address属性,构造空参和带全部参数的public Student类,并定义各属性的set和get方法。
在StudentTest中书写增删改查的代码,
注意:增删改查的方法简单的先写,我是最先写查 ,再写增。
附完整代码:
Student
package StudentSystem;
public class Student {
//1.创建属性
private String id;
private String name;
private int age;
private String address;
//2.空参构造和带全部参数的构造
public Student() {
}
public Student(String id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
/**
* 获取
* @return id
*/
public String getId() {
return id;
}
/**
* 设置
* @param id
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
/**
* 获取
* @return address
*/
public String getAddress() {
return address;
}
/**
* 设置
* @param address
*/
public void setAddress(String address) {
this.address = address;
}
}
StudentTest
package StudentSystem;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentTest {
public static void main(String[] args) {
//创建一个集合存储学生的信息
ArrayList<Student> list = new ArrayList<>();
//1.创建欢迎页面
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.print("请输入您的选择:");
//2.输入选择
Scanner sc = new Scanner(System.in);
String choice = sc.next();
switch (choice) {
case "1":addStudent(list);break;
case "2":removeStudent(list);break;
case "3":modifyStudent(list);break;
case "4":searchStudent(list);break;
case "5":{
System.out.println("退出系统");
System.exit(0);
};break;
default:
System.out.println("没有这个选项");break;
}
}
}
//1.添加学生
public static void addStudent(ArrayList<Student> list) {
Scanner sc = new Scanner(System.in);
//录入学生id
System.out.print("请输入学生id:");
String studentId = sc.next();
//调用方法,如果集合中已经有该学生则flag != -1
int flag = getIndex(list,studentId);
if(flag != -1) {
System.out.println("该学生在系统中已存在,请勿重复录入");
} else {
//创建学生对象,将id存入学生对象
Student stu = new Student();
stu.setId(studentId);
//姓名
System.out.print("请输入学生姓名:");
String studentName = sc.next();
stu.setName(studentName);
//年龄
System.out.print("请输入学生年龄:");
int studentAge = sc.nextInt();
stu.setAge(studentAge);
//地址
System.out.print("请输入学生地址:");
String studentAddress = sc.next();
stu.setAddress(studentAddress);
//将学生对象存入集合
list.add(stu);
}
}
//2.删除学生
public static void removeStudent(ArrayList<Student> list) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入你要删除的学生id:");
String studentId = sc.next();
int index = getIndex(list,studentId);
if (index == -1){
System.out.println("您要删除的学生不存在!");
} else {
list.remove(index);
System.out.println("已删除id为" + studentId + "的学生");
}
}
//3.修改学生
public static void modifyStudent(ArrayList<Student> list) {
//1.键盘录入要修改的学生id
Scanner sc = new Scanner(System.in);
System.out.print("请输入你要修改的学生id:");
String studentId = sc.next();
int index = getIndex(list,studentId);
if (index == -1){
System.out.println("学号为" + studentId + "的学生不存在");
} else {
System.out.print("请维护该学生的姓名:");
list.get(index).setName(sc.next());
System.out.print("请维护该学生的年龄:");
list.get(index).setAge(sc.nextInt());
System.out.print("请维护该学生的地址:");
list.get(index).setAddress(sc.next());
}
}
//4.根据id查询学生(需要给出id和在哪查询)
public static void searchStudent(ArrayList<Student> list) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入您要查询的学生id:");
String id = sc.next();
if (list.size() == 0){
System.out.println("当前无学生信息,请添加后再查询");
}
for (int i = 0; i < list.size(); i++) {
System.out.println("id" + "\t" + "姓名" + "\t" + "年龄" + "\t" + "家庭住址");
if (list.get(i).getId().equals(id)){
Student stu = list.get(i);
System.out.println(stu.getId() +"\t"+ stu.getName() +"\t"+ stu.getAge() +"\t"+ stu.getAddress());
}
}
}
//5.根据id查是否有学生,有则返回学生在集合中的索引,无则返回-1
public static int getIndex(ArrayList<Student> list,String id) {
if (list.size() == 0){
return -1;
}
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getId().equals(id)){
return i;
}
}
return -1;
}
}