Java课程设计课题:学生成绩管理系统一、问题及功能分析1、身份验证,和使用系统的权限设置、判定。
2、实现同学的学号、性别、成绩等信息的录入、编辑3、提供对学号或姓名,进行成绩或所有信息的查询。
4、计算学生平均成绩,显示最高成绩学生信息5、能实现按成绩、学号、姓名排序列出学生信息。
6、能统计学生成绩分数段的分布(60以下、60~70、70~80、80~90、90~100)情况,并输出。
7、用文件保存数据,以便反复使用。
二、概要设计三、详细设计学生成绩管理系统代码设计:import java.util.*;import ng.*;import java.io.*;class Mytest{public static void main(String[] args)throws IOException{{int select;select = 1;Student stu[]= new Student[10];StudentMis mis=new StudentMis();Scanner sc = new Scanner(System.in);System.out.println();System.out.println(" ---------------------------------------");System.out.println(" * *");System.out.println(" 欢迎进入学生成绩管理系统 ");System.out.println(" * *");System.out.println(" ---------------------------------------");while(true){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(" 6.修改学生信息;");System.out.println(" 7.按成绩排序学生信息;");System.out.println(" 8.学生信息库扩容;");System.out.println(" 9.学生成绩分段输出;");System.out.println(" 0.退出;");System.out.println(" 请输入数字选项(0-9): ");select =sc.nextInt();System.out.println();//判断输入,0退出if(select>=0 && select<=9){switch(select){case 1:mis.Inputstu(stu);break;case 2:System.out.println(" 所有学生成绩信息如下:");mis.print(stu);System.out.println("您选择了显示所有学生成绩信息。
");break;case 3:System.out.println(" 学生平均成绩信息如下:");System.out.println("平均成绩:="+mis.Pingfen(stu));System.out.println("一共有学生人数为:"+Student.sumstu);break;case 4:System.out.println(" 最高成绩学生信息如下:");mis.Topchengji(stu).print();break;case 5:System.out.print(" 输入需要查找的学生姓名:");mis.search(stu);break;case 6:System.out.print(" 输入需要修改的学生姓名:");String tmp = sc.next();mis.change(tmp,stu);break;case 7:System.out.println(" 排序后学生信息如下:");Student[] sort1=mis.sort(stu);//mis.print(sort1);break;case 8:System.out.println(" 学生信息扩容进行中.....");stu = mis.kourong(stu);System.out.println(" 学生信息扩容完成.....");break;case 9:mis.test(stu);break;case 0:System.exit(0);}}else{System.out.println("输入错误,请重新输入!");continue;}}}}}class StudentMis {public StudentMis() {}public void Inputstu(Student a[]) //增加学生对象,通过键盘接受相关资料throws IOException{String tmp ;boolean flat= false;Scanner sc = new Scanner(System.in);int num= Student.sumstu;System.out.print(" 请输入学生的学号:");tmp = sc.next();do //检查学号的唯一性{for (int i=0;i<Student.sumstu;i++)if (tmp.equals(a[i].id)) {System.out.println("该学号已存在!");System.out.print(" 请输入学生的学号:");tmp = sc.next();flat = true;}else flat=false; //学号不重复}while (flat);if(num<a.length){ //判断是否要扩容a[num] =new Student(tmp); //可以增加学生对象,调用带参数的,实际增加a[num].id= tmp;System.out.print(" 请输入学生姓名:");a[num].name = sc.next();System.out.print(" 请输入学生成绩:");a[num].chengji =sc.nextInt();System.out.println();}else System.out.println("学生数组已满,要扩容!");}public Student Topchengji(Student a[]){ //查找成绩最高的学生 int max = a[0].chengji;int id=0;for(int i = 1; i < Student.sumstu; i++)if(a[i].chengji > max){max = a[i].chengji;id=i;}return a[id];}public Student search (Student a[]){ //查找学生String tmpname;int searchid = -1;Scanner sc = new Scanner(System.in);tmpname = sc.next(); //按输入的姓名去查找for (int i=0;i<Student.sumstu;i++){if (tmpname.equals(a[i].name)) {a[i].print();searchid =i;}}if (searchid == -1){System.out.println("没有符合条件的学生");return null;}else return a[searchid];}public Student search (String name,Student a[]){ //按姓名去查找学生 int searchid = -1;for (int i=0;i<Student.sumstu;i++){if (name.equals(a[i].name)) {a[i].print();searchid =i;}}if (searchid == -1){System.out.println("没有符合条件的学生");return null;}else return a[searchid];}public void test(Student a[]){int b = 0,c = 0,d = 0,e = 0,f = 0;for(int i = 0;i<Student.sumstu;i++){ //将成绩分段输出if(a[i].chengji < 60){b++;System.out.print("成绩小于60的学生");a[i].print();}if(a[i].chengji >= 60&& a[i].chengji < 70){c++;System.out.println("成绩在60-70的学生");a[i].print();}if(a[i].chengji >= 70 && a[i].chengji <80) {d++;System.out.println("成绩在70-80的学生");a[i].print();}if(a[i].chengji >= 80 && a[i].chengji < 90){e++;System.out.println("成绩在80-90的学生");a[i].print();}if(a[i].chengji >= 90 && a[i].chengji <= 100){f++;System.out.println("成绩在90-100的学生");a[i].print();}}System.out.println("成绩在<60的学生总数为\t"+b);System.out.println("成绩在60-70的学生总数为\t"+c);System.out.println("成绩在70-80的学生总数为\t"+d);System.out.println("成绩在80-90的学生总数为\t"+e);System.out.println("成绩在90-100的学生总数为\t"+f);}public Student change(String name,Student a[]){ //修改给定名字的学生成绩Student tmp = search (name,a);if (tmp==null) {System.out.println("没有符合条件的学生");return null;}else {System.out.print(" 请输入修改成绩:");Scanner sc = new Scanner(System.in);tmp.chengji =sc.nextInt();return tmp;}}double Pingfen(Student a[]){ //求所有学生的成绩平均分double sum=0;for (int i=0;i<Student.sumstu;i++)sum = sum+a[i].chengji;return sum/Student.sumstu;}public Student[] sort(Student[] stu1){ //按成绩排序,放到新的数组中Student[] sortstu =new Student[Student.sumstu]; //声明新数组int i,j,k;Student temp =new Student();for (i = 0;i < Student.sumstu; i++){ //将要排序的数组拷贝到新数组,创建对象时调用不带参数的构造函数,学生人数不增加sortstu[i]= new Student();sortstu[i]=stu1[i];}for ( i = 0;i < Student.sumstu-1; i++ ) { //排序k = i;for ( j = i ; j < Student.sumstu; j++ )if ( sortstu[j].chengji <sortstu[k].chengji) k = j;temp = sortstu[i];sortstu[i] = sortstu[k];sortstu[k] = temp;}for ( i = 0;i < Student.sumstu; i++)sortstu[i].print(); //输出打印return sortstu;}public Student[] kourong(Student[] stu1){ //扩容,增加20人Student[] newstu =new Student[stu1.length+20]; //声明新数组int i,j,k;Student temp =new Student();for (i = 0;i <stu1.length; i++){ //将原数组拷贝到新数组,创建对象时调用不带参数的构造函数,学生人数不增加newstu[i]= new Student();newstu[i]=stu1[i];}stu1=newstu;return stu1;}void print(Student a[] ) { //输出学生数组中每个学生的信息 for (int i=0;i<Student.sumstu;i++)a[i].print();}}class Student{ //创建一个Student类String id;String name;String sex;int age;int chengji;public static int sumstu=0; //类变量,统计学生的数量public Student(){id="00";name="aa";sex="man";age=18;chengji=0; //每创建一个对象时,学生数量加1;}public Student(String tmp){id=tmp;name="aa";sex="man";age=18;chengji=0;sumstu++; //每创建一个对象时,学生数量加1;}void SetChengji(int n ){chengji=n;}String Getname(){ //获取学生姓名return name;}int Getchengji(){ //获取学生成绩return chengji;}void print( ){ //输出一个学生的信息的方法.System.out.println("姓名:"+name+" 成绩:"+chengji);}}四、调试分析1.源代码编写完成并编译成功。