在学习完java入门知识后,可以完成一个小案例对已学知识进行总结和回顾,现在完成一个比较经典的"学生管理系统",对学生进行一些简单的增删查改功能,如下:
准备工作:1)创建学生类,添加:成员变量,成员方法,空参满参构造方法,geter,seter方法,toString方法.
2)创建学生测试类,并完成基本功能:添加学生信息,查看学生信息,修改学生信息,删除学生信息,退出系统.
学生类:
import java.util.Objects;
//创建学生类包含:学号,姓名,年龄,地址
public class Student {
private String stuId;
private String name;
private String age;
private String studress;
public Student() {
}
public Student(String stuId, String name, String age, String studress) {
this.stuId = stuId;
this.name = name;
this.age = age;
this.studress = studress;
}
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
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 getStudress() {
return studress;
}
public void setStudress(String studress) {
this.studress = studress;
}
@Override
public String toString() {
return "Student{" +
"stuId='" + stuId + '\'' +
", name='" + name + '\'' +
", age='" + age + '\'' +
", studress='" + studress + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return Objects.equals(stuId, student.stuId) &&
Objects.equals(name, student.name) &&
Objects.equals(age, student.age) &&
Objects.equals(studress, student.studress);
}
@Override
public int hashCode() {
return Objects.hash(stuId, name, age, studress);
}
}
学生测试类:
import java.util.ArrayList;
import java.util.Scanner;
public class StudentTest {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>(); //创建用来接收Student对象的集合
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退出");
Scanner scannere = new Scanner(System.in);
System.out.println("请输入您要进行的操作");
String choose = scannere.next(); //对用户的输入进行选择,选择swich语句
switch (choose) {
case "1":
addstu(list); //为了避免主方法中过于冗长,所有需求实现进行封装
System.out.println("===================================");
System.out.println();
break;
case "2":
charstu(list);
System.out.println("===================================");
System.out.println();
break;
case "3":
updatestu(list);
System.out.println("===================================");
System.out.println();
break;
case "4":
deletestu(list);
System.out.println("===================================");
System.out.println();
break;
case "5":
System.out.println("*谢谢使用,再见!*");
System.exit(0);
default:
System.out.println("输入错误,请重新输入");
System.out.println("===================================");
System.out.println();
break;
}
}
}
private static void deletestu(ArrayList<Student> list) { //删除方法:考虑1:集合中是否有元素可以删除
if (list.size() == 0) {
System.out.println("系统没有任何学生信息,请重新选择其他功能");
return;
}
Scanner scanner = new Scanner(System.in); //考虑2:集合中是否有用户要删除的元素
while (true) { //创建一个死循环
System.out.println("请输入您要删除的学生学号");
String s = scanner.next();
int index = -1;
for (int i = 0; i < list.size(); i++) {
if (s.equals(list.get(i).getStuId())) {
index = i;
}
}
if (index == -1) {
System.out.println("没有您要删除信息,请重新输入"); //如果没有则继续死循环,如果有就删除元素并跳出死循环
} else {
list.remove(index);
System.out.println("*学生信息删除完成!*");
break;
}
}
}
private static void updatestu(ArrayList<Student> list) { //修改方法:考虑1:集合中是否有元素可以修改
if (list.size() == 0) {
System.out.println("系统没有任何学生信息,请重新选择其他功能");
return;
}
Scanner sc = new Scanner(System.in); //考虑2:集合中是否有用户要修改的元素
System.out.println("请输入要修改的学生学号:");
int index = -1;
String id = " ";
while (true) {
id = sc.nextLine();
for (int i = 0; i < list.size(); i++) {
Student student = list.get(i);
if (student.getStuId().equals(id)) {
index = i;
}
}
if (index == -1) { //如果没有则继续死循环,如果跳出死循环,并进行相应的修改功能
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(id, name, age, address); //将要修改的信息添加到新创建的对象中,并在集合中将原对象替换
list.set(index, student);
System.out.println("*学生信息修改完成!*");
}
private static void charstu(ArrayList<Student> list) { //查询方法:考虑:集合中是否有元素可以查询
if (list.size() == 0) {
System.out.println("系统没有任何学生信息,请重新选择其他功能");
return;
}
System.out.println("*学号* *姓名* *年龄* *地址*"); //将控制台页面简单的美化更容易查看
for (Student student : list) {
System.out.println(student.getStuId() + " " +
student.getName() + " " +
student.getAge() + " " +
student.getStudress());
}
System.out.println("*查询学生信息成功*");
}
private static void addstu(ArrayList<Student> list) { //添加方法:考虑:集合中元素学号都是唯一的,不可重复
Scanner scanner = new Scanner(System.in);
String s = null;
while (true) { //创建死循环
System.out.println("请输入学生学号");
s = scanner.nextLine();
boolean flag = true;
for (int i = 0; i < list.size(); i++) {
String stuId = list.get(i).getStuId();
if (s.equals(stuId)) {
flag = false;
}
}
if (flag == true) { //如果学号在集合中不存在,跳出死循环进行添加功能
break;
} else { //如果学号在集合中已经存在,继续死循环
System.out.println("您输入的学生学号已存在,请重新输入");
}
}
Student student = new Student();
student.setStuId(s);
System.out.println("请输入学生姓名");
student.setName(scanner.next());
System.out.println("请输入学生年龄");
student.setAge(scanner.next());
System.out.println("请输入学生地址");
student.setStudress(scanner.next());
list.add(student);
System.out.println("*添加学生信息成功*");
}
}
完成学生管理系统并进行测试.