项目演示
用户输入数字实现对应功能。
控制台打印要一直死循环,直到用户输入数字5退出应用。
项目思路
- 定义学生类
- 主界面代码编写
- 添加学生代码编写
- 查看学生代码编写
- 删除学生代码编写
- 修改学生代码编写
创建学生类并生成相应代码
学生类添加成员变量:学号、姓名、年龄、居住地
生成构造方法:无参构造、带四个参数的构造
生成成员方法: 每个成员变量设置为私有变量,然后对应出get/set方法
idea生成构造函数和get/set方法
Student类代码
package com.cz.py;
public class Student {
private int sid;
private String name;
private int age;
private String address;
public Student(int sid, String name, int age, String address) {
this.sid = sid;
this.name = name;
this.age = age;
this.address = address;
}
public Student() {
}
public int getSid() {
return sid;
}
public void setSid(int 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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student{" +
"sid=" + sid +
", name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'' +
'}';
}
}
main方法代码(注释详细)
package com.cz.py;
import java.util.ArrayList;
import java.util.Scanner;
public class runCode {
public static void main(String[] args) {
// 键盘输入对象
Scanner sc = new Scanner(System.in);
// 生成一个集合来存放学生对象<Student>为泛型,这个集合中只允许存在Student类的对象
ArrayList<Student> stus = new ArrayList<>();
// loop 循环标号 用于用户退出时结束死循环
loop:
// 死循环界面
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("-------------------------------------");
System.out.println("请输入你的选择:");
// 获取用户输入选择的是哪个功能
int input = sc.nextInt();
// 添加switch循环,来分别处理逻辑
switch (input) {
case 1:
// 如果用户输入1 添加学生,调用添加学生的方法,传入学生对象集合
addStu(stus);
break;
case 2:
// 如果用户输入2 删除学生,调用删除学生的方法,传入学生对象集合
removeStu(stus);
break;
case 3:
// 与上面同理
updateStu(stus);
break;
case 4:
getStu(stus);
break;
case 5:
// 用户输入5退出应用,使用循环标号结束最外层的死循环,应用结束
System.out.println("谢谢使用!");
break loop;
}
}
}
public static void updateStu(ArrayList<Student> stus) {
Scanner sc = new Scanner(System.in);
// 获取用户输入要修改的学生学号
System.out.println("请输入你要修改的学生的学号:");
int stu_id = sc.nextInt();
// 查询是否有该学生,如果有返回下标,否则返回-1
int index = getStuIndex(stus, stu_id);
if (index != -1) {
// 根据下标在集合中查询出该学生对象
Student stu = stus.get(index);
// 获取用户输入的修改后的信息
System.out.println("请输入学生的新姓名:");
String stu_name = sc.next();
System.out.println("请输入学生的新年龄:");
int stu_age = sc.nextInt();
System.out.println("请输入学生的新居住地:");
String stu_address = sc.next();
// 使用对象的set方法修改对象的值
stu.setName(stu_name);
stu.setAge(stu_age);
stu.setAddress(stu_address);
System.out.println("修改学生成功!");
} else {
// 如果是-1 则对象不存在
System.out.println("输入有误!查无此人!");
}
}
/**
* 在集合内删除学生对象的方法
*
* @param stus 存放学生对象的集合
*/
public static void removeStu(ArrayList<Student> stus) {
Scanner sc = new Scanner(System.in);
// 获取用户输入的要删除的学生的学号
System.out.println("请输入你要删除学生的学号:");
int stu_id = sc.nextInt();
// 调用集合内是否有该学生的方法,如果有返回学生对象在集合内的下标没有返回-1
int index = getStuIndex(stus, stu_id);
// 如果getStuIndex方法返回值不为-1说明学生存在
if (index != -1) {
// 集合根据下标删除学生对象
stus.remove(index);
System.out.println("删除成功!");
} else {
// 如果为-1说明要删除的学生不存在
System.out.println("要删除的学生不存在!");
}
}
/**
* 查询学生是否存在于stus集合中的方法,如果有返回下标,没有返回-1
* @param stus 存放学生对象的集合
* @param stu_id 用户输入的学生学号,删除、添加或者修改
* @return 如果集合中存在用户输入的学号就返回对象在集合中的下标,如果 不存在返回-1
*/
public static int getStuIndex(ArrayList<Student> stus, int stu_id) {
// index变量最初假设没有为-1
int index = -1;
// 遍历集合查询集合对象中的学号如果等于用户输入的学号index等于该对象的下标
for (int i = 0; i < stus.size(); i++) {
Student stu = stus.get(i);
int sid = stu.getSid();
if (stu_id == sid) {
index = i;
}
}
return index;
}
public static void getStu(ArrayList<Student> stus) {
// 如果存放学生对象的集合长度为0说明不存在数据
if (stus.size() == 0) {
System.out.println("暂无信息,请添加后再查看!");
return;
}
// 遍历集合获取对象打印出对象信息
System.out.println("学号" + "\t\t" + "姓名" + "\t\t" + "年龄" + "\t\t" + "居住地");
for (int i = 0; i < stus.size(); i++) {
Student stu = stus.get(i);
System.out.println(stu.getSid() + "\t\t" + stu.getName() + "\t" + stu.getAge() + "岁" + "\t" + stu.getAddress());
}
}
/**
* 往集合内添加学生对象的方法
*
* @param stus 存放学生对象的集合
*/
public static void addStu(ArrayList<Student> stus) {
// 获取用户要添加的学生信息:学号、姓名、年龄、居住地
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生学号:");
int sId = sc.nextInt();
// 调用集合内是否有该学生的方法,如果有返回学生对象在集合内的下标没有返回-1
int index = getStuIndex(stus, sId);
// 如果getStuIndex返回的不是-1说明学生已存在
if (index != -1) {
System.out.println("添加的学号已存在,请重新输入!");
return;
}
System.out.println("请输入学生姓名:");
String sName = sc.next();
System.out.println("请输入学生年龄:");
int sAge = sc.nextInt();
System.out.println("请输入学生居住地:");
String sAddress = sc.next();
// 创建一个学生对象 把用户输入的学号、姓名、年龄、地址等信息传入
Student stu = new Student(sId, sName, sAge, sAddress);
// 把创建好的学生对象放进stus集合内
stus.add(stu);
// 打印信息添加成功
System.out.println("添加学生成功!");
}
}