作业要求:
定义学生类:
(1)成员变量:学号(String),姓名(String),专业(String)。
(2)构造方法:已知学号,姓名,专业创建学生对象。
(3) 编写获取学生信息的方法public String info(),学生信息格式要求如下: 学号***,姓名***,专业***。
定义学生集合类StudentGroup(用数组实现)。
- 成员变量:学生数组,学生实际个数size;
- 构造方法:创建学生数组,长度为100,size初值为0。
- 编写添加一条学生记录、根据学号修改学生记录、根据学号删除记录、列出所有学生记录、记录按学号排序的五个方法(add,update,delete,query,sort)。功能尽量考虑全面,比如添加记录时学号不能重复,且超过数组长度给出提示不能添加。
代码如下:
import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; class Student {//单个学生 String NO,name,major; public Student() { this.NO=null; this.name=null; this.major=null; } public Student(String NO,String name,String major) { this.NO=NO; this.name=name; this.major=major; } public void update(String name,String major) { this.name=name; this.major=major; } public String info() { return "学号:\t"+this.NO+"\n姓名:\t"+this.name+"\n专业:\t"+this.major+"\n"; } } class StudentGroupClass { Scanner stuIn=new Scanner(System.in); Student[] StudentGroup=new Student[100];//学生数据库 int size=0; public void add() {//正常的添加信息 System.out.println("输入要添加的学生记录:学号,姓名,专业。"); Student student=new Student(stuIn.next(),stuIn.next(),stuIn.next()); if(size>=100) { System.out.println("容量已满,无法添加!"); return; } for(int i=0;i<size;i++) { if(StudentGroup[i].NO.equals(student.NO)){ System.out.println("学号重复,无法添加!"); return; } } StudentGroup[size++]=student; System.out.println("添加完成\n"); } public void add(String no) {//额外添加的学生信息 System.out.println("输入学号为"+no+"的学生的姓名与专业"); Student student=new Student(no,stuIn.next(),stuIn.next()); if(size>=100) { System.out.println("容量已满,无法添加!"); return; } for(int i=0;i<size;i++) { if(StudentGroup[i].NO.equals(student.NO)){ System.out.println("学号重复,无法添加!"); return; } } StudentGroup[size++]=student; System.out.println("添加完成\n"); } public void update() {//修改 System.out.println("输入想要修改学生的学号"); String no=stuIn.next(); int index=0; boolean flag=false; for(int i=0;i<size;i++) { if(StudentGroup[i].NO.equals(no)) { index=i; flag=true; break; } } if(flag) { System.out.println("对学号为"+no+"的同学信息进行更改,输入你想改成的名字和专业"); StudentGroup[index].update(stuIn.next(),stuIn.next()); System.out.println("修改完成"); return; } System.out.println("未找到该学生,按Y把该学生添加到数据库?任意键返回"); char judge=stuIn.next().charAt(0); if(judge=='Y'||judge=='y') { add(no); } System.out.println("操作完成\n"); } public void delete() {//删除 System.out.println("输入想要删除学生的学号"); String no=stuIn.next(); int index=0; boolean flag=false; for(int i=0;i<size;i++) { if(StudentGroup[i].NO.equals(no)) { index=i; flag=true; break; } } if(flag) { System.out.println("已经找到这条记录"); System.out.println(StudentGroup[index].info()+"\n是否删除?(按Y确认,任意键取消该操作)\n"); char judge=stuIn.next().charAt(0); if(!(judge=='y'||judge=='Y')) return; else { size-=1; for(int i=index;i<size;i++) StudentGroup[i]=StudentGroup[i+1]; System.out.println("删除成功!"); } } } public void query() { for(int i=0;i<size;i++) { System.out.println("数据库中的第"+(i+1)+"个记录\n"+StudentGroup[i].info()); } System.out.println("输出完成\n"); } public void sort() { Arrays.sort(StudentGroup,0,size,new Comparator<Student>() { public int compare(Student A, Student B) { return Integer.parseInt(A.NO)-Integer.parseInt(B.NO); } }); System.out.println("排序完成!\n输出排序结果:\n"); query(); } } public class Main { static Scanner cin=new Scanner(System.in); public static void menu(){ System.out.println("**********学生信息管理系统**********"); 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("***********************************"); } public static void main(String []args) { StudentGroupClass yuheng=new StudentGroupClass(); int judge; while(true) { menu(); judge=cin.nextInt(); switch(judge) { case 1:{ yuheng.add(); break; } case 2:{ yuheng.update(); break; } case 3:{ yuheng.sort(); break; } case 4:{ yuheng.query(); break; } case 5:{ System.out.println("系统成功退出!"); System.exit(0); break; } } } } }