Java学生管理系统
车臣丿 人气:0名为StudentManageTest的Java测试类
import java.util.Scanner; public class StudentManageTest { public static void main(String[] args) { StudentManage stu = new StudentManage(); Scanner sc = new Scanner(System.in); 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("------ 6. 退出 -----"); System.out.println("--------------------------------------------------------------"); System.out.print("请输入您的选择:"); int num = sc.nextInt(); if(num==1){ stu.show(); } if(num==2) { System.out.println("姓名:"); String name = sc.next(); System.out.println("学号:"); int id = sc.nextInt(); System.out.println("成绩:"); int score = sc.nextInt(); Student s = new Student(name, id, score); stu.add(s); System.out.println("添加学生成功!!"); } if(num==3){ System.out.println("请输入需要删除第几个学生信息:"); int id = sc.nextInt(); stu.delete(id); System.out.println("删除成功!!"); } if(num==4){ System.out.println("请输入需要修改第几个学生信息:"); int n = sc.nextInt(); System.out.println("姓名:"); String name = sc.next(); System.out.println("学号:"); int id = sc.nextInt(); System.out.println("成绩:"); int score = sc.nextInt(); Student ch = new Student(name, id, score); stu.change(n,ch); System.out.println("修改成功!!"); } if(num==5){ System.out.println("请输入你需要查询第几个学生信息:"); int n = sc.nextInt(); stu.check(n); } if(num==6){ System.out.println("下次再来!!"); break; } } } }
名为Student的成员方法定义类
public class Student { private String name; private int id; private int score; public Student() { } public Student(String name, int id, int score) { this.name = name; this.id = id; this.score = score; } public String show() { return name +"\t\t" + id + "\t\t\t" + score; } }
名为StudentManage的方法类
public class StudentManage{ //初始三个学生对象,定义到一个叫ss的数组对象中 Student[] ss = new Student[]{new Student("张三",1,70), new Student("李四",2,80), new Student("王五",3,85)}; //添加操作 public void add(Student s){ //传入一个自定义的对象数据 Student[] newss = new Student[ss.length+1]; /*添加操作数组 因为数组一旦定义就无法改变长度 * 所以需要新定义比ss对象数组多一个长度的数组对象 * */ for (int i = 0; i <ss.length ; i++) { //该处循环的目的是把ss数组对象的数据复制一份到newss对象数组中 newss[i] = ss[i]; } newss[newss.length-1] = s; //该处是因为新定义的数组长度多1,目的是把新传入的对象数据赋值到新数组对象的最后一个 ss=newss; //将newss堆中的数据地址赋给ss,即ss指向堆中存有新数据的内存地址 //当执行show方法时,遍历输出的是堆中新的地址的新的数据 } public void show(){ //循环遍历输出ss中的数据 System.out.println("姓名:\t\t学号:\t\t成绩:"); for (int i = 0; i <ss.length ; i++) { System.out.println(ss[i].show()); } } public void delete(int n){ //删除操作 删除第n个数据 //因为对象数组不能改变长度,所以得重新创建个比ss对象数组少一个长度的对象数组 Student[] deletess = new Student[ss.length-1]; // 因为删除一个数据,所以该数据前面数据索引和新数组对象数据的索引一样,因此循环遍历到n-1 for (int i = 0; i <n-1 ; i++) { //所以新数组对象n-1前面的数据一样 deletess[i] = ss[i]; } //删除了第n个元素,对应数组的第n-1个数据,所以数组元素从(n-1)+1开始遍历,即从n开始遍历 for (int i = n; i <ss.length ; i++) { //所以ss的第n个元素就等于deletess的第n-1个元素 deletess[i-1] = ss[i]; } //将deletess堆中的数据地址赋给ss,即ss指向堆中存有新数据的内存地址 ss=deletess; } //修改操作,传入参数含义:修改第几个数据,把它修改成什么 public void change(int n,Student ch){ ss[n-1] = ch; //直接将ss的第n-1个元素修改成ch } //查询学生数据,查询第n个数据 public void check(int n){ System.out.println("姓名:\t\t学号:\t\t成绩:"); System.out.println(ss[n-1].show());//输出数组对象ss的第n-1个数据的show方法 } }
测试功能:
学生管理系统初始化界面
显示学生信息
新增学生信息
删除某个学生信息
修改某个学生信息
查询某个学生信息
退出
加载全部内容