1.学生类;
public class Student {
String name;
String sex;
public Student() {
}
/*getName()方法就是直接调用这个方法的时候就可以得到创建数组时new的姓名*/
public String getName() {
return name;
}
public String getSex() {
return sex;
}
/*setName()方法就是调用这个方法时可以修改name值的属性*/
public void setName(String name) {
= name;
}
public void setSex(String sex) {
this.sex = sex;
}
public Student(String name, String sex) {
= name;
this.sex = sex;
}
@Override
public String toString() {
return "{" +
"name='" + name + '\'' +
", sex='" + sex + '\'' +
'}';
}
}2.实现类
public class Test4 {
public static void main(String[] args) {
Student[] stus = new Student[10];
stus[0] = new Student("张三","男");
stus[1] = new Student("李四","女");
Scanner sc = new Scanner(System.in);
int count = 2;//学生总数
System.out.println("********欢迎来到学生管理系统********");
System.out.println("********您有如下选择:********");
while (true){
System.out.println("1.查看学生 2.添加学生 3.修改学生 4.删除学生");
System.out.println("请选择编号:");
int choose = sc.nextInt();
switch (choose){
case 1:
System.out.println("你选择了查看学生,学生信息如下:");
System.out.println("编号\t姓名\t性别");
/*循环遍历输出全部属性*/
for (int i=0;i<count;i++){
System.out.print((i+1)+"\t");
System.out.print(stus[i].name+"\t");
System.out.print(stus[i].sex+"\t");
System.out.println();
}
break;
case 2:
System.out.println("你选择了添加学生");
System.out.println("请输入学生的姓名");
String name = sc.next();
System.out.println("请输入学生的性别");
String sex = sc.next();
/*添加操作就是创建新数组*/
stus[count] = new Student(name,sex);
/*实际长度要加1*/
count++;
break;
case 3:
/*修改学生的操作就是用Student类中set方法可以将学生的姓名和性别修改 */
System.out.println("你选择了修改学生");
System.out.println("请输入你想修改学生的编号:");
int index = sc.nextInt();
//当输入的编号数小于等于学生的总人数时才能进行修改操作
if(index<=count) {
/*注意:***编号和学生的数组下标值差1,所以后面的index都要减-才能正确得到学生的信息****/
System.out.println("该学生的信息为: 姓名:" + stus[index - 1].name +
" 性别:" + stus[index - 1].sex);
System.out.println("请选择您的操作:1.修改该学生的姓名 2.修改该学生的性别 3.修改姓名及性别");
int choice = sc.nextInt();
if (choice == 1) {
System.out.println("请输入该学生应修改的姓名");
String updateName = sc.next();//接收输入的姓名方便修改
stus[index - 1].setName(updateName);//使用setName方法可以将姓名修改
} else if (choice == 2) {
System.out.println("请输入该学生应修改的性别");
String updateSex = sc.next();//接收输入的性别方便修改
stus[index - 1].setSex(updateSex);//使用setSex方法可以将姓名修改
} else if (choice == 3) {
System.out.println("请输入该学生应修改的姓名");
String updateName = sc.next();
stus[index - 1].setName(updateName);
System.out.println("请输入该学生应修改的性别");
String updateSex = sc.next();
stus[index - 1].setSex(updateSex);
}
}else{
/*如果输入学生编号越界 就输出提示*/
System.out.println("学生人数没那么多,请重新选择!");
}
break;
case 4:
System.out.println("你选择了删除学生");
System.out.println("请输入你想删除学生编号");
int index1 = sc.nextInt(); //接收输入的学生编号
for (int i=index1-1;i<count;i++){
/*必须加这个否则报空指针异常 当循环遍历到count-1时候将该处的所有属性都置为空*/
/*减- 是因为数组下标和编号值差1 然后结跳出循环就不会报空指针异常*/
if(i==count-1){
stus[i]=null;
break;
}
/*将后一个数组的姓名和性别都赋值给前一个数组的姓名和性别 这样就形成了数组值的覆盖 就是删除了
*
* */
stus[i].name = stus[i+1].name;
stus[i].sex = stus[i+1].sex;
}
/*删除完毕 数组的实际存储的数据总长度要减1*/
count--;
break;
}
}
}
}
















