需求分析:
?这个基础版的管理系统具有一般系统的增删改查功能。创建学生类,根据学生类创建一个集合,设置对应增删改查以及退出系统的方法。
学生类:
public class Student {
/*
利用Student类创建学生对象
成员变量:学号 姓名 性别 年龄 住址
*/
private String id;
private String name;
private int sex;
private int age;
private String address;
public Student() {
}
public Student(String id, String name, int sex, int age, String address) {
this.id = id;
this.name = name;
this.sex = sex;
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 int getSex() {
return sex;
}
public void setSex(int sex) {
if(sex == 1 || sex == 0) {
this.sex = sex;
}else{
System.out.println("输入错误,请重新输入!");
setSex(sex);
}
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
思路:学生类中包含学生的学号、姓名、性别、年龄、住址信息,在此设置为私有变量,并为外部提供set()和get()方法。
实现类:
package com.bow.learn.学生管理系统;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentSystem {
static Scanner sc = new Scanner(System.in);
/*
打印功能菜单
*/
public static void showMenu() {
System.out.println("*********************");
System.out.println("* 1、添加学生信息 *");
System.out.println("* 2、查找学生信息 *");
System.out.println("* 3、修改学生信息 *");
System.out.println("* 4、删除学生信息 *");
System.out.println("* 0、退出管理系统 *");
System.out.println("*********************");
}
/*
添加学生信息
*/
public static void addStudent(ArrayList<Student> stu) {
//对Student类实例化,创建一个对象
Student s = new Student();
//从键盘获取学生的学号
System.out.println("请输入学生学号:(001-999)");
String id = sc.next();
for (int i = 0; i < stu.size(); i++) {
if (id.equals(stu.get(i).getId())) {
System.out.println("该学号已存在!");
return;
}
}
s.setId(id);
//从键盘获取学生的姓名
System.out.println("请输入学生姓名:");
String name = sc.next();
s.setName(name);
//从键盘获取学生的性别
while (true) {
System.out.println("请输入学生性别(0 -- 男、 1 -- 女)");
int sex = sc.nextInt();
if (sex == 0 || sex == 1) {
s.setSex(sex);
break;
} else {
System.out.println("输入错误,请重新输入!");
}
}
//从键盘获取学生的年龄
while (true) {
System.out.println("请输入学生年龄:");
int age = sc.nextInt();
if (age > 0 && age <= 150) {
s.setAge(age);
break;
} else {
System.out.println("输入错误,请重新输入!");
}
}
//从键盘获取学生的地址
System.out.println("请输入学生住址:");
String address = sc.next();
s.setAddress(address);
//将学生信息添加到集合中
stu.add(s);
//PS:因为集合是引用类型对象,所以在方法中修改了集合,在外部的集合同时也被修改了,所以就不需要返回修改后的集合
//提示添加成功
System.out.println("添加成功!");
}
/*
查找学生信息
*/
public static void seekStudent(ArrayList<Student> stu) {
if (stu.size() == 0) {
System.out.println("学生管理系统中还未录入学生信息!");
return;
}
System.out.println("请输入您要查找的学生的学号(001-999):");
String id = sc.next();
for (int i = 0; i < stu.size(); i++) {
if (stu.get(i).getId().equals(id)) {
System.out.println("查询成功!");
System.out.println("id:" + stu.get(i).getId() + " name:" + stu.get(i).getName() +
" sex:" + (stu.get(i).getSex() == 0 ? "男" : "女") + " age:" + stu.get(i).getAge()
+ " address:" + stu.get(i).getAddress());
return;
}
}
System.out.println("未查到相关学生信息!");
}
/*
修改学生信息
*/
public static void changeStudent(ArrayList<Student> stu) {
if (stu.size() == 0) {
System.out.println("学生管理系统中还未录入学生信息!");
return;
}
System.out.println("请输入您要修改的学生的学号:");
String id = sc.next();
for (int i = 0; i < stu.size(); i++) {
if (stu.get(i).getId().equals(id)) {
System.out.println("查询成功,请重新录入该同学的信息!");
// addStudent(stu);
System.out.println("请输入学生学号(001-999):");
String idCard = sc.next();
for (int j = 0; j < stu.size(); j++) {
if(idCard.equals(stu.get(j).getId())){
System.out.println("该学号已存在!");
return;
}
}
stu.get(i).setId(idCard);
System.out.println("请输入学生姓名:");
stu.get(i).setName(sc.next());
System.out.println("请输入学生性别 (0 -- 男、 1 -- 女)");
stu.get(i).setSex(sc.nextInt());
System.out.println("请输入学生年龄:");
stu.get(i).setAge(sc.nextInt());
System.out.println("请输入学生住址:");
stu.get(i).setAddress(sc.next());
System.out.println("修改成功!");
return;
}
}
System.out.println("未查到相关学生信息!");
}
/*
删除学生信息
*/
public static void delStudent(ArrayList<Student> stu) {
if (stu.size() == 0) {
System.out.println("学生管理系统中还未录入学生信息!");
return;
}
System.out.println("请输入您要删除的学生的学号:");
String id = sc.next();
for (int i = 0; i < stu.size(); i++) {
if (stu.get(i).getId().equals(id)) {
stu.remove(i);
System.out.println("删除成功!");
return;
}
}
System.out.println("未查到相关学生信息!");
}
public static void main(String[] args) {
//创建一个ArrayList的集合
ArrayList<Student> stu = new ArrayList<>();
while (true) {
showMenu();
System.out.println("请输入您选择的操作: ");
int select = sc.nextInt();
switch (select) {
case 1://添加
addStudent(stu);
break;
case 2://查找
seekStudent(stu);
break;
case 3://修改
changeStudent(stu);
break;
case 4://删除
delStudent(stu);
break;
case 0://退出
System.out.println("欢迎下次使用!");
System.exit(0);
break;
}
}
}
}
思路:
? ? ? ? 设置一个可以打印菜单的方法,在菜单里显示学生管理系统的功能,以及提示用户操作的信息。
? ? ? ? 添加方法:创建一个学生类的对象,提示用户从键盘输入学生的信息,然后将学生类的对象添加到已经准备好的集合中。这里值得注意的是:因为对于查找、修改、删除都是根据学生的学号来查找学生信息,所以在添加方法里,我在提示用户输入学生的学号之后,进行了一个判断,判断新添加的学号是否存在,如果已经存在了,就提示用户“该学号已存在”,并结束这个方法的调用。反之则继续录入信息,在输入性别和年龄的时候我都有做判断,通过0、1的方式控制性别的输入只能是男生或女生,年龄设置在常规的范围内。
? ? ? ? 查找方法:先判断集合中是否有数据,如果集合的长度为0,直接提示用户“学生管理系统中还未录入学生信息”,并结束方法调用。如果有数据,并查到了要找的学号,则输出该学号对应的信息,没找到也会给用户一个提示。
? ? ? ? 修改和删除方法:在修改和删除之前,会先判断集合中是否存在数据,没有数据则不会继续执行操作,给出提示信息并结束方法调用。有数据的情况下,查找到学生信息才能修改,而且修改后的学生的学号不能是已经存在的。删除的操作也是要先查找是否有指定学号的学生的信息,如果存在会提示删除成功,不存在则提示”未找到该学号的相关信息“。
? ? ? ? 退出系统:使用System类的exit()方法即可退出系统,此处传入参数0.
PS:因为java控制台清屏,就要调用windows的命令(我自己用的是Windows的电脑),所以很繁琐,我就没有写,这里我推荐一个关于java清屏操作写的比较好的博客。
传送门
|