1.定义学生类
学生类:
Student
成员变量:
学号:id
姓名:name
年龄:age
生日:birthday
构造方法:
无参构造
带四个参数的构造
成员方法:
每个成员呢变量对应给出get/set方法
下面我们来实现一下:
public class StudentManger {
private String sid; //学号
private String name; //姓名
private int age; //年龄
private String birthday; //生日
public StudentManger() {
}
public StudentManger(String sid, String name, int age, String birthday) {
this.sid = sid;
this.name = name;
this.age = age;
this.birthday = birthday;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
2.主界面的编写
思路:
1.用输出语句完成主界面的编写
2.用Scanner实现键盘录入数据
3.用switch语句完成操作的选择
4.用循环完成再次回到主界面
下面我们去实现一下:
public class Manager {
public static void main(String[] args) {
flag:
while (true){
// 搭建一个主界面
Scanner sc = new Scanner(System.in);
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("请输入你的选择");
String choice = sc.next();
/*
这里通过Switch语句进行流程的选择
*/
switch (choice){
case "1":
// System.out.println("添加学生");
addStudent();
break;
case "2":
System.out.println("删除学生");
break;
case "3":
System.out.println("修改学生");
break;
case "4":
System.out.println("查看所有学生");
break;
case "5":
System.out.println("感谢你的使用");
break flag;
default:
System.out.println("你输入的有误!");
break;
}
}
}
3.添加学生的代码编写
思路:
1.用键盘录入选择添加学生
2.定义一个方法,用于添加学生
(1).显示提示信息,提示要输入何种信息
(2).键盘录入学生对象所需要的数据
(3).创建学生对象,把键盘录入的数据赋值给学生对象的成员bianl
(4).将学生对象添加到集合中(保存)
(5).给出添加成功提示
3.调用方法.
下面我们去实现一下:
/*
这里用来进行添加学生的模块
*/
public static void addStudent(ArrayList<StudentManger> list) {
Scanner sc = new Scanner(System.in);
//1.给出录入的提示信息
System.out.println("请输入学号:");
String sid = sc.next();
System.out.println("请输入姓名:");
String name = sc.next();
System.out.println("请输入年龄:");
int age = sc.nextInt();
System.out.println("请输入生日:");
String birthday = sc.next();
//2.将键盘录入的信息封装为学生对象
StudentManger stu = new StudentManger(sid,name,age,birthday);
//3.将封装好的学生对象,添加到集合容器当中
list.add(stu);
//4.给出添加成功的提示信息
System.out.println("添加成功");
}
4.查看学生的代码编写
思路:
1.用键盘录入选择查看所有学生信息
2.定义一个方法,用于查看学生信息
(1).判断集合中是否有数据,如果没有显示提示信息
(2).显示表头信息
(3).将集合中数据取出按照对应格式显示学生信息,年龄显示补充"岁".
3.调用方法.
下面我们去实现一下:
// 查询学生的方法
public static void queryStudent(ArrayList<StudentManger> list) {
//1.判断集合中是否存在数据,如果不存在直接给出提示
if (list.size() == 0){
System.out.println("无信息,请添加后再重新查询");
return;
}
//2.存在:展示表头数据
System.out.println("学号\t姓名\t年龄\t生日");
//3.遍历集合,获取每一个学生对象的信息,打印在控制台
for (int i = 0; i < list.size(); i++) {
StudentManger stu = list.get(i);
System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" +stu.getAge() + "\t" +stu.getBirthday());
}
}
5.删除学生的代码编写
思路:
1.用键盘录入选择删除学生信息
2.定义一个方法,用于删除学生信息
(1).显示提示信息
(2).键盘录入要删除的学生学号
(3).调用getindex方法,查找该学号在集合中的索引
(4.)如果索引为-1,提示信息不存在
(5.)如果索引不是-1,调用remove方法删除并提示删除成功
3.调用方法
// getIndex方法,查找学号在集合中的位置
public static int getIndex(ArrayList<StudentManger> list,String sid){
//1.假设传入的学号,在集合中不存在
int index = -1;
// 2.遍历集合,获取每一个学生对象,准备进行查找
for (int i = 0; i < list.size(); i++) {
StudentManger stu = list.get(i);
//3.获取每一个学生对象的学号
String id = stu.getSid();
//4.使用获取出的学生学号,和传入的学号(查找的学号)进行比对
if(id.equals(sid)){
//存在,让index变量记录正确的索引位置
index = i;
}
}
return index;
}
// 这里是删除学生信息的方法
public static void deleteStudent(ArrayList<StudentManger> list) {
// 1.给出提示信息,请输入你要删除的学号
System.out.println("请输入你要删除的学生学号:");
//2.键盘接收要删除的学号
Scanner sc = new Scanner(System.in);
String deleteSid = sc.next();
//3.调用getIndex方法,查找该学号在集合中出现的索引位置
int index = getIndex(list,deleteSid);
//4.根据索引判断,学号在集合中是否存在
if (index == -1){
// 不存在:给出提示
System.out.println("查无信息,请重新输入");
}else{
// 存在:删除
list.remove(index);
System.out.println("删除成功");
}
}
6.修改学生的代码编写
思路:
1.用键盘录入选择修改学生信息
2.定义一个方法,用于修改学生信息
(1).显示提示信息
(2).键盘录入要修改的学生学号
(3)调用getIndex方法,查找该学号在集合中的索引你
(4).如果索引为-1,提示信息不存在
(5).如果索引不是-1,键盘录入要修改的学生信息
(6).集合修改对应的学生信息
(7).给出修改成功提示
3.调用方法
下面我们去实现一下:
//这里是修改学生信息方法
public static void updateStudent(ArrayList<StudentManger> list) {
System.out.println("请你输入要修改的学生学号");
Scanner sc = new Scanner(System.in);
String updateSid = sc.next();
//3.调用getIndex方法,查找该学号在集合中出现的索引位置
int index = getIndex(list,updateSid);
//4.根据索引判断,学号在集合中是否存在
if (index == -1){
// 不存在:给出提示
System.out.println("查无信息,请重新输入");
}else{
// 存在:接受新的学生信息
System.out.println("请输入新的学生姓名:");
String name = sc.next();
System.out.println("请输入新的学生年龄:");
int age = sc.nextInt();
System.out.println("请输入新的学生生日:");
String birthday = sc.next();
// 封装为新的学生对象
StudentManger stu = new StudentManger(updateSid,name,age,birthday);
// 调用集合的set方法,完成修改
list.set(index,stu);
System.out.println("修改成功!");
}
}
7.解决添加学生学号重复问题
思路:
1.在添加学生录入学号后,调用getIndex方法
2.根据方法的返回值,判断学号是否存在
返回值为-1:不存在,可以存储
返回值为正确索引:存在,给出提示,重新接受信息
下面我们去实现一下:
Scanner sc = new Scanner(System.in);
//1.给出录入的提示信息
String sid;
while (true){
System.out.println("请输入学号:");
sid = sc.next();
int index = getIndex(list,sid);
if (index == -1){
//sid不存在,学号可以使用
break;
}
}
8.系统测试
我们依次对添加学生,查看学生,修改学生,删除学生,退出进行测试
----欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择
1
请输入学号:
基础001
请输入学号:
基础001
请输入姓名:
老王
请输入年龄:
18
请输入生日:
2000-11-11
添加成功
----欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择
4
学号 姓名 年龄 生日
基础001 老王 18 2000-11-11
----欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择
3
请你输入要修改的学生学号
基础001
请输入新的学生姓名:
老李
请输入新的学生年龄:
19
请输入新的学生生日:
2000-2-2
修改成功!
----欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择
4
学号 姓名 年龄 生日
基础001 老李 19 2000-2-2
----欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择
2
请输入你要删除的学生学号:
基础001
删除成功
----欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择
4
无信息,请添加后再重新查询
----欢迎来到学生管理系统------
1 添加学生
2 删除学生
3 修改学生
4 查看所有学生
5 退出
请输入你的选择
5
感谢你的使用
Process finished with exit code 0
9.代码
1.这是封装对象的全部代码
public class StudentManger {
private String sid; //学号
private String name; //姓名
private int age; //年龄
private String birthday; //生日
public StudentManger() {
}
public StudentManger(String sid, String name, int age, String birthday) {
this.sid = sid;
this.name = name;
this.age = age;
this.birthday = birthday;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
2.这里是main主函数的所有代码
import java.util.ArrayList;
import java.util.Scanner;
public class Manager {
public static void main(String[] args) {
ArrayList<StudentManger> list = new ArrayList<>();
flag:
while (true){
// 搭建一个主界面
Scanner sc = new Scanner(System.in);
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("请输入你的选择");
String choice = sc.next();
/*
这里通过Switch语句进行流程的选择
*/
switch (choice){
case "1":
// System.out.println("添加学生");
addStudent(list);
break;
case "2":
//System.out.println("删除学生");
deleteStudent(list);
break;
case "3":
//System.out.println("修改学生");
updateStudent(list);
break;
case "4":
// System.out.println("查看所有学生");
queryStudent(list);
break;
case "5":
System.out.println("感谢你的使用");
break flag;
default:
System.out.println("你输入的有误!");
break;
}
}
}
//这里是修改学生信息方法
public static void updateStudent(ArrayList<StudentManger> list) {
System.out.println("请你输入要修改的学生学号");
Scanner sc = new Scanner(System.in);
String updateSid = sc.next();
//3.调用getIndex方法,查找该学号在集合中出现的索引位置
int index = getIndex(list,updateSid);
//4.根据索引判断,学号在集合中是否存在
if (index == -1){
// 不存在:给出提示
System.out.println("查无信息,请重新输入");
}else{
// 存在:接受新的学生信息
System.out.println("请输入新的学生姓名:");
String name = sc.next();
System.out.println("请输入新的学生年龄:");
int age = sc.nextInt();
System.out.println("请输入新的学生生日:");
String birthday = sc.next();
// 封装为新的学生对象
StudentManger stu = new StudentManger(updateSid,name,age,birthday);
// 调用集合的set方法,完成修改
list.set(index,stu);
System.out.println("修改成功!");
}
}
public static void deleteStudent(ArrayList<StudentManger> list) {
// 1.给出提示信息,请输入你要删除的学号
System.out.println("请输入你要删除的学生学号:");
//2.键盘接收要删除的学号
Scanner sc = new Scanner(System.in);
String deleteSid = sc.next();
//3.调用getIndex方法,查找该学号在集合中出现的索引位置
int index = getIndex(list,deleteSid);
//4.根据索引判断,学号在集合中是否存在
if (index == -1){
// 不存在:给出提示
System.out.println("查无信息,请重新输入");
}else{
// 存在:删除
list.remove(index);
System.out.println("删除成功");
}
}
// 查询学生的方法
public static void queryStudent(ArrayList<StudentManger> list) {
//1.判断集合中是否存在数据,如果不存在直接给出提示
if (list.size() == 0){
System.out.println("无信息,请添加后再重新查询");
return;
}
//2.存在:展示表头数据
System.out.println("学号\t姓名\t年龄\t生日");
//3.遍历集合,获取每一个学生对象的信息,打印在控制台
for (int i = 0; i < list.size(); i++) {
StudentManger stu = list.get(i);
System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" +stu.getAge() + "\t" +stu.getBirthday());
}
}
public static int getIndex(ArrayList<StudentManger> list,String sid){
//1.假设传入的学号,在集合中不存在
int index = -1;
// 2.遍历集合,获取每一个学生对象,准备进行查找
for (int i = 0; i < list.size(); i++) {
StudentManger stu = list.get(i);
//3.获取每一个学生对象的学号
String id = stu.getSid();
//4.使用获取出的学生学号,和传入的学号(查找的学号)进行比对
if(id.equals(sid)){
//存在,让index变量记录正确的索引位置
index = i;
}
}
return index;
}
/*
这里用来进行添加学生的模块
*/
public static void addStudent(ArrayList<StudentManger> list) {
Scanner sc = new Scanner(System.in);
//1.给出录入的提示信息
String sid;
while (true){
System.out.println("请输入学号:");
sid = sc.next();
int index = getIndex(list, sid);
if (index == -1){
//sid不存在,学号可以使用
break;
}
}
System.out.println("请输入学号:");
sid = sc.next();
System.out.println("请输入姓名:");
String name = sc.next();
System.out.println("请输入年龄:");
int age = sc.nextInt();
System.out.println("请输入生日:");
String birthday = sc.next();
//2.将键盘录入的信息封装为学生对象
StudentManger stu = new StudentManger(sid,name,age,birthday);
//3.将封装好的学生对象,添加到集合容器当中
list.add(stu);
//4.给出添加成功的提示信息
System.out.println("添加成功");
}
}