一、JavaBean编写
public class Student {
private int id;
private String name;
private int age;
private String sex;
public Student() {
}
public Student(int id, String name, int age, String sex) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
二、页面搭建
import java.util.Scanner;
public class StudentView {
//反复键盘录入,没必要执行一次就new一个Scanner,所以将Scanner对象放在成员位置
Scanner sc = new Scanner(System.in);
/*
老数组,长度为50,代表班级最多能放50个人
后面每个功能都需要数组,所以将数组放到成员位置
*/
Student[] students = new Student[50];
/*
定义一个count,记录数组中有多少对象,遍历元素不能全部遍历
因为没有存对象的位置遍历出来是null,再调用getxxx方法,会出现空指针
所以我们应该记录存储对象的个数,存多少对象,就遍历多少次
而且后面可能会反复使用,所以放在成员位置
*/
int count = 0;
/*
新数组,一会删除元素的时候需要将删除后剩下的元素复制到新数组中
因为数组定长,不能直接在原来的数组基础上随意改变长度
由于一次删除一个,所以新数组长度为老数组长度-1
后面可能会反复使用新数组,所以定义到成员位置
*/
Student[] newStudents = new Student[students.length];
//start方法用于展示页面以及调用功能
public void start() {
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("请选择 1-5 ");
int num = sc.nextInt();
System.out.println("------------------------");
switch (num) {
case 1:
addStudent();
break;
case 2:
updateStudent();
break;
case 3:
deleteStudent();
break;
case 4:
findAllStudent();
break;
case 5:
System.out.println("退出功能");
break;
}
}
}
private void findAllStudent() {
System.out.println("查看功能");
}
private void deleteStudent() {
System.out.println("删除功能");
}
private void updateStudent() {
System.out.println("修改功能");
}
private void addStudent() {
System.out.println("添加功能");
}
}
三、添加功能
private void addStudent() {
//1.键盘录入学生信息
System.out.println("请您输入学生学号:");
int id=sc.nextInt();
System.out.println("请您输入学生姓名:");
String name=sc.next();
System.out.println("请您输入学生年龄:");
int age=sc.nextInt();
System.out.println("请您输入学生性别:");
String sex=sc.next();
//2.将学生信息封装到Student对象中
Student student=new Student(id,name,age,sex);
//3.将封装好的Student对象放到students数组中
students[count]=student;
count++;
System.out.println("添加成功");
}
四、查看功能
private void findAllStudent() {
System.out.println("学号" + " " + "姓名" + " " + "年龄" + " " + "性别");
//冒泡排序
for (int j = 0; j < count - 1; j++) {
for (int i = 0; i < count - 1 - j; i++) {
if (students[i].getId() > students[i+1].getId()) {
Student temp = students[i];
students[i] = students[i + 1];
students[i + 1] = temp;
}
}
}
//如果count为0,证明没有学生
if (count == 0) {
System.out.println("对不起,现在班级没有学生,待开班...");
} else {
for (int i = 0; i < count; i++) {
System.out.println(students[i].getId() + " " + students[i].getName() + " " + students[i].getAge() + " " + students[i].getSex());
}
}
}
五、修改功能
private void updateStudent() {
//1.录入要修改的学号id
System.out.println("请您输入要修改的学生学号:");
int id = sc.nextInt();
//2.注意:修改完之后不能直接将id当成索引去储存新的对象
// 原因:id和学生在数组中的索引不是一一对应的
// 解决:根据id查询相应的学生在数组中的索引位置
int updateIndex = ArrayUtils.findIndexById(students, id, count);
System.out.println("请您输入学生姓名:");
String name = sc.next();
System.out.println("请您输入学生年龄:");
int age = sc.nextInt();
System.out.println("请您输入学生性别:");
String sex = sc.next();
Student student = new Student(id, name, age, sex);
students[updateIndex]=student;
System.out.println("修改成功");
}
public class ArrayUtils {
private ArrayUtils() {
}
public static int findIndexById(Student[] students,int id,int count){
for (int i = 0; i < count; i++) {
if (id==students[i].getId()){
return i;
}
}
return -1;
}
}
五、删除&退出功能
数组复制
private void deleteStudent() {
System.out.println("请您输入要删除的学生学号:");
int id = sc.nextInt();
int removeIndex = ArrayUtils.findIndexById(students, id, count);
//复制被删除前面的元素
System.arraycopy(students,0,newStudents,0,removeIndex);
//复制被删除后面的元素
System.arraycopy(students,removeIndex+1,newStudents,removeIndex,students.length-removeIndex-1);
//将新数组的地址给老数组
students=newStudents;
//count--
count--;
System.out.println("删除成功");
}
System.out.println("是否退出?按0退出/按9取消");
int key = sc.nextInt();
if (key==0){
System.out.println("再见,欢迎再来");
return;
}else if (key==9){
break;
}