经典案例:学生管理系统
学生管理系统的实现思路:
- 定义学生类
- 主界面的代码编写
- 添加学生的代码编写
- 查看学生的代码编写
- 删除学生的代码编写
- 修改学生的代码编写
主界面的代码编写思路:
- 用输出语句实现主界面编写
- 用Scanner实现键盘输入数据
- 用switch语句完成选择操作
- 用循环完成再次回到主界面
添加学生的代码编写思路:
- 用键盘输入选择添加学生
- 定义一个添加学生的方法
- 显示提示信息,提示输入的信息
- 键盘录入学生的各种信息
- 创建一个学生对象,把键盘输入的值传给学生对象的成员变量
- 将学生对象传入集合中
- 给出添加成功提示
3.调用方法
查看全部学生信息代码编写思路:
- 键盘输入选择查看学生信息
- 定义一个方法,查看学生信息
- 显示表头信息
- 判断是否有学生信息,没有返回没有提示
- 将集合中数据取出按照对应顺序显示
3.调用方法
删除学生的代码编写思路:
- 键盘录入选择删除学生
- 定义删除学生信息方法
- 提示删除信息
- 键盘录入要删除的学生学号
- 遍历集合将对应的学生对象从集合中删除
- 判断信息是否存在,若不存在,提示该信息不存在,无法删除
- 给出删除成功
3.调用方法
修改学生信息的代码编写思路:
- 用键盘录入学则修改学生
- 定义修改方法
- 显示提示信息
- 键盘录入要修改的学生学号
- 键盘录入要修改的学生信息
- 遍历集合,修改对应的学生信息
- 给出修改成功提示
3.调用方法
代码实现
先定义一个学生类
package com.xyh01;
public class Student {
private String id;
private String name;
private String age;
private String address;
public Student() {
}
public Student(String id, String name, String age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
}
在定义一个实现类
package com.xyh01;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentManager {
public static void main(String[] args) {
//创建集合对象,用于储存学生数据
ArrayList<Student> students = new ArrayList<>();
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("请输入你的选择:");
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
switch (line) {
case "1":
System.out.println("添加学生");
addStudent(students);
break;
case "2":
System.out.println("删除学生");
deleteStudent(students);
break;
case "3":
System.out.println("修改学生");
updateStudent(students);
break;
case "4":
System.out.println("查看所有学生");
findAllStudents(students);
break;
case "5":
System.out.println("退出系统");
// break;
return;
}
}
}
//添加学生的方法
public static void addStudent(ArrayList<Student> students) {
//键盘录入学生对象所需要的数据,显示提示信息,提示要填入什么数据
Scanner scanner = new Scanner(System.in);
//为了循环外的id能够访问,在循环外面定义一个id
String id;
//为了让程序可以返回,用循环
while (true) {
System.out.println("请输入学生学号:");
id = scanner.nextLine();
boolean flag = isUesd(students, id);
if (flag == true) {
System.out.println("该学生学号已经存在,请重新输入:");
} else
break;
}
System.out.println("请输入学生姓名:");
String name = scanner.nextLine();
System.out.println("请输入学生年龄:");
String age = scanner.nextLine();
System.out.println("请输入学生家庭地址:");
String address = scanner.nextLine();
//创建学生对象,把输入的值录入学生对象的尘缘变量中
Student student = new Student();
student.setId(id);
student.setName(name);
student.setAge(age);
student.setAddress(address);
//将学生对象添加到集合中
students.add(student);
//给出添加成功的提示
System.out.println("添加成功");
}
//判断添加方法中学号是否存在问题
public static boolean isUesd(ArrayList<Student> students, String id) {
boolean flag = false;
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
if (s.getId().equals(id)) {
flag = true;
break;
}
}
return flag;
}
//查找全部学生信息的方法
public static void findAllStudents(ArrayList<Student> students) {
//判断集合中是否有信息
if (students.size() == 0)
System.out.println("无信息,请先添加学生信息");
else
System.out.println("学号\t\t\t姓名\t\t年龄\t\t家庭地址");
//查看学生,就是要把集合遍历出来看一看
for (int i = 0; i < students.size(); i++) {
Student student = students.get(i);
System.out.println(student.getId() + "\t\t\t" + student.getName() + "\t\t" + student.getAge() + "岁" + "\t\t" + student.getAddress());
}
}
//删除学生信息的方法
public static void deleteStudent(ArrayList<Student> students) {
//键盘输入你要删除的学生学号
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要删除的学生的学号:");
String sc = scanner.nextLine();
//遍历集合将对应学生对象从集合中删除
//引入索引,判断要删除的信息是否存在
int index = -1;
for (int i = 0; i < students.size(); i++) {
Student s = students.get(i);
if (s.getId().equals(sc)) {
index = i;
break;
}
}
if (index == -1)
System.out.println("该信息不存在,无法删除,请重新输入");
else {
students.remove(index);
//给出删除成功的提示
System.out.println("删除成功");
}
}
//修改学生信息的方法
public static void updateStudent(ArrayList<Student> students) {
//键盘输入你要修改的学生学号
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要修改的学生的学号:");
String id = scanner.nextLine();
//键盘输入要修改的学生信息
System.out.println("请输入新姓名:");
String name = scanner.nextLine();
System.out.println("请输入新年龄:");
String age = scanner.nextLine();
System.out.println("请输入新地址:");
String address = scanner.nextLine();
//创建学生对象
Student student = new Student();
student.setId(id);
student.setName(name);
student.setAge(age);
student.setAddress(address);
//遍历集合修改学生的信息
for (int i = 0; i < students.size(); i++) {
Student student1 = students.get(i);
if (student1.getId().equals(id)) {
students.set(i, student);
break;
}
}
//给出修改成功的提示
System.out.println("修改成功");
}
//
}
总结
这个案例用了比较多集合的方法,比如add,remove,set方法,还有很多死循环判断输出,以及对代码的改进,主要是熟悉Scanner的用法,以及对Student对象的建立很调用。