功能展示

启动类
java
public class Test {
public static void main(String[] args) {
new StudentView().start();
}
}
学生类
java
package StudentManager;
public class Student {
//学号
private int id;
//姓名
private String name;
//性别
private String sex;
//年龄
private int age;
public Student() {
}
public Student(int id, String name, int age,String sex) {
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
}
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 String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
菜单与前期准备
java
//获取键盘录入
Scanner sc = new Scanner(System.in);
//定义一个数组,用于存储学生信息
Student[] students = new Student[50];
//定义一个计数变量,用统计对学生数组的操作次数
//为什么定义新数组:没存对象的位置遍历出来的是null,调用getter方法会出现空指针
int count = 0;
//定义新数组,用于存储操作之后的学生数组
//原因:数组定长
Student[] newStudents = new Student[students.length - 1];
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:
addStudnet();
break;
case 2:
updateStudent();
break;
case 3:
removeStudent();
break;
case 4:
findAddStudent();
break;
case 5:
System.out.println("是否退出程序?退出按0,不退出按9");
int key = sc.nextInt();
if (key == 0) {
return; //退出方法
} else if (key == 9) {
break; //退出循环
}
}
}
}
添加功能
java
private void addStudnet() {
//添加功能
System.out.println("添加功能");
//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();
//将学生信息封装到Student对象中
Student student = new Student(id, name, age, sex);
//3、将封装好的student对象放到students中
students[count] = student;
//4、count++ 记录存储了多少个对象
count++;
System.out.println("添加成功!!!");
}
修改功能
java
private void updateStudent() {
System.out.println("修改功能");
System.out.println("请输入需要修改的学生学号:");
int id = sc.nextInt();
for (int i = 0; i < count; i++) {
if (id == students[i].getId()) {
int updateindex = ArrayUtils.fiandIndexById(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 student = new Student(id, name, age, sex);
students[updateindex] = student;
System.out.println("修改成功!!");
} else {
System.out.println("学号不存在,请核对后修改");
}
}
}
删除功能
java
private void removeStudent() {
System.out.println("删除功能");
System.out.println("输入要删除的学生学号:");
int id = sc.nextInt();
for (int i = 0; i < count; i++) {
if (id == students[i].getId()) {
//获取删除学号的下标
int deleteIndex = ArrayUtils.fiandIndexById(students, id, count);
//因为数组不支持删除,所以将数组中除删除元素外的元素复制到新的数组中
//第一次复制:复制删除学号之前的
System.arraycopy(students, 0, newStudents, 0, deleteIndex);
//第二次复制:复制删除学号之后的
System.arraycopy(students, deleteIndex + 1, newStudents, deleteIndex, students.length - deleteIndex - 1);
//将新数组的地址值给老数组
students = newStudents;
//删除学生之后,count--
count--;
System.out.println("删除成功");
} else {
System.out.println("学号不存在,请核对后删除");
}
}
}
查看功能
java
private void findAddStudent() {
System.out.println("查看功能");
System.out.println("学号" + "\t" + "姓名" + "\t" + "年龄" + "\t" + "性别");
//增加冒泡排序
for (int i = 0; i < count; i++) {
for (int j = 0; j < count - 1 - i; j++) {
if (students[j].getId() > students[j + 1].getId()) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
//count代表班级中的实际人数,故不能通过students.length 来进行判断
if (count == 0) {
System.out.println("班级人数为0,待开班");
} else {
//循环元的是班级中实际的人数
for (int i = 0; i < count; i++) {
System.out.println(students[i].getId() + "\t" + students[i].getName() + "\t" + students[i].getAge() + "\t" + students[i].getSex());
}
}
}
工具类
java
public class ArrayUtils {
private ArrayUtils() {
}
public static int fiandIndexById(Student[] students, int id, int count) {
//遍历查找下标值
for (int i = 0; i < count; i++) {
if (id == students[i].getId()) {
return i;
}
}
return -1;
}
}
数组复制
java
public class Test02 {
public static void main(String[] args) {
int[] arr1 ={1,2,3,4,5,8,6,7};
int[] arr2 = new int[7];
/**
* 工具类:System
* 静态方法:arrayCopy
* 参数1;原数组
* 参数2:开始索引
* 参数3:目标数组
* 参数4:目标数字的哪个索引开始粘贴
* 参数5;复制多少
*/
System.arraycopy(arr1,2,arr2,1,4);
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i]);
}
}
}