Java实现学生成绩管理系统

本文实例为大家分享了Java实现学生成绩管理系统的具体代码,供大家参考,具体内容如下

新手练手小项目,主要练习面向对象、循环、数组、排序等等。本人也是自学练手,代码有不正确的或不完善的也请多多包涵,留言指导。感谢!

一、创建学生类

储存学生的基本信息

public class Student { private int no; private String name; Result result;  public Student() {  super(); } public Student(int no, String name,Result result) {  super();  this.result = result;  this.name = name;  this.no = no; } public Result getResult() {  return result; } public void setResult(Result result) {  this.result = result; } public String getName() {  return name; } public void setName(String name) {  this.name = name; } public int getNo() {  return no; } public void setNo(int no) {  this.no = no; }  public String toString(){  return "\t" + no + "\t" + name + "\t" + result; }}

二、创建成绩类

便于成绩的增加,易于管理

public class Result {//成绩类 private int java; private int python; private int c_shar; private int sql; private int sum; private int avg;  public Result() {   } public Result(int java, int python, int c_shar, int sql) {  super();  this.java = java;  this.python = python;  this.c_shar = c_shar;  this.sql = sql; } public int getJava() {  return java; } public void setJava(int java) {  this.java = java; } public int getPython() {  return python; } public void setPython(int python) {  this.python = python; } public int getC_shar() {  return c_shar; } public void setC_shar(int c_shar) {  this.c_shar = c_shar; } public int getSql() {  return sql; } public void setSql(int sql) {  this.sql = sql; }  public int getSum(){  return this.java + this.python + this.c_shar + this.sql; }  public int getAvg(){  return this.getSum() / 4; }  public String toString(){  return java + "\t" + python + "\t" + c_shar + "\t" + sql + "\t" + this.getSum() + "\t" + this.getAvg(); }}

三、创建学生管理类

主要功能在此类中,例如添加学生信息、查找学生等等

import java.util.Scanner;public class StudentAdmin {//管理学生类 Scanner in = new Scanner(System.in);  /**  *   * @param name 传一个name添加学生姓名  * @param Arr传一个学生数组,将学生对象保存  * @throws AddStudentException  */ public void addStudent(String name,Student[] Arr) throws AddStudentException{//添加学生方法  AddStudentException ase = new AddStudentException("学生已达上限,添加失败!");  Student stu = new Student();  Result r = new Result();  stu.setNo(setIndex(Arr) + 1);  stu.setName(name);  stu.setResult(r);  if(setIndex(Arr) == -1){   throw ase;  }else{   Arr[this.setIndex(Arr)] = stu;  } } /**  *   * @param Arr传一个数组  * @return返回空数组元素的下标  */ public int setIndex(Student[] Arr){  for(int i = 0; i < Arr.length; i++){   if(null == Arr[i]){    return i;   }  }  return -1; } public void print(Student[] arr){//打印学生对象  for(int i = 0; i < arr.length; i++){   if(judge(i+1,arr[i])){    System.out.println(arr[i]);   }  } } public boolean judge(int no,Student stu){//判断数组元素编号和传的编号是否一致  if(stu != null){   if(stu.getNo() == no){    return true;   }else{    return false;   }  }  return false; } public void search(String name,Student[] arr){//查找学生方法  for(int i = 0; i < arr.length; i++){   if(judge(i + 1,arr[i])){    if(arr[i].getName().equals(name)){     System.out.println(arr[i]);     return;    }   }  }  System.out.println("没有找到此学生,请确认输入的姓名是否正确!"); } public void update(int no,String name,Student[] arr){//更新学生姓名  for(int i = 0; i < arr.length; i++){   if(judge(i + 1,arr[i])){    arr[i].setName(name);    System.out.println(arr[i]);    return;   }  }  System.out.println("没有此编号,请确认输入的编号是否正确!"); } public void del(int no,Student[] arr){//删除学生信息  for(int i = 0; i < arr.length; i++){   if(judge(no,arr[i])){    arr[i] = null;    return;   }  }  System.out.println("没有此编号,请确认输入的编号是否正确!"); } public void stuResult(int no,Student[] arr){//根据编号输入学生各科成绩  for(int i = 0; i < arr.length; i++){   if(judge(i + 1,arr[i])){    if(arr[i].getNo() == no){     System.out.println("请输入" + arr[i].getName() + "的java成绩:");     arr[i].result.setJava(in.nextInt());     System.out.println("请输入" + arr[i].getName() + "的python成绩:");     arr[i].result.setPython(in.nextInt());     System.out.println("请输入" + arr[i].getName() + "的c_char成绩:");     arr[i].result.setC_shar(in.nextInt());     System.out.println("请输入" + arr[i].getName() + "的sql成绩:");     arr[i].result.setSql(in.nextInt());     break;    }   }  } } public void paiXu(int no,Student[] arr){//根据某科成绩排序  switch(no){   case 1:    for(int i = 0; i < arr.length-1; i++){     for(int j = i + 1; j < arr.length; j++){      if(arr[j].result.getJava() > arr[i].result.getJava()){       Student max = arr[i];       arr[i] = arr[j];       arr[j] = max;      }     }    }    for(int i = 0; i < arr.length; i++){     System.out.println(arr[i]);    }    break;   case 2:    for(int i = 0; i < arr.length-1; i++){     for(int j = i + 1; j < arr.length; j++){      if(arr[j].result.getPython() > arr[i].result.getPython()){       Student max = arr[i];       arr[i] = arr[j];       arr[j] = max;      }     }    }    for(int i = 0; i < arr.length; i++){     System.out.println(arr[i]);    }    break;   case 3:    for(int i = 0; i < arr.length-1; i++){     for(int j = i + 1; j < arr.length; j++){      if(arr[j].result.getC_shar() > arr[i].result.getC_shar()){       Student max = arr[i];       arr[i] = arr[j];       arr[j] = max;      }     }    }    for(int i = 0; i < arr.length; i++){     System.out.println(arr[i]);    }    break;   case 4:    for(int i = 0; i < arr.length-1; i++){     for(int j = i + 1; j < arr.length; j++){      if(arr[j].result.getSql() > arr[i].result.getSql()){       Student max = arr[i];       arr[i] = arr[j];       arr[j] = max;      }     }    }    for(int i = 0; i < arr.length; i++){     System.out.println(arr[i]);    }    break;   default:    System.out.println("你输入的编号错误!");  } } public void sumPaiXu(Student[] arr){//根据总分进行排序  for(int i = 0; i < arr.length-1; i++){   for(int j = i + 1; j < arr.length; j++){    if(arr[j].result.getSum() > arr[i].result.getSum()){     Student max = arr[i];     arr[i] = arr[j];     arr[j] = max;    }   }  }  for(int i = 0; i < arr.length; i++){   System.out.println(arr[i]);  }  return; }}

四、异常类

练习自定义异常类的创建及使用

public class AddStudentException extends Exception{ public AddStudentException(){} public AddStudentException(String s){  super(s); }}

五、测试类(主程序)

import java.util.Scanner;public class Test { public static void main(String[] args){  Scanner in = new Scanner(System.in);    StudentAdmin admin = new StudentAdmin();    System.out.println("请定义学生的人数:");  Student[] stuArr = new Student[in.nextInt()];    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("7:根据总分进行排序");   System.out.println("0:退出系统");   int num = in.nextInt();   switch(num){    case 0 :     System.exit(0);    case 1 :     System.out.println("请输入学生姓名:");     try {      admin.addStudent(in.next(), stuArr);     } catch (AddStudentException e) {      e.printStackTrace();     }     admin.print(stuArr);     break;    case 2 :     System.out.println("请输入要查找的学生姓名:");     String name = in.next();     admin.search(name, stuArr);     break;    case 3 :     System.out.println("请输入要修改的编号:");     int no = in.nextInt();     System.out.println("请重新输入学生姓名:");     String name1 = in.next();     admin.update(no, name1, stuArr);     break;    case 4 :     System.out.println("请输入学生编号:");     int no1 = in.nextInt();     admin.del(no1, stuArr);     System.out.println("删除学生信息成功!");     break;    case 5 :     System.out.println("请输入学生编号:");     int no2 = in.nextInt();     admin.stuResult(no2, stuArr);     admin.print(stuArr);     break;    case 6 :     System.out.println("请输入编号对应成绩进行排序【1:java 2:python 3:c_char 4:sql】");     int no3 = in.nextInt();     admin.paiXu(no3, stuArr);     break;    case 7 :     admin.sumPaiXu(stuArr);     break;    default :     System.out.println("您输入的编号有误,请重新输入!");     break;   }  } }}

总结

本人也是刚学习java不久,一直在看视频自学。目前学习到了集合(刚开始),线程、IO还没学。这个小的项目也是我自己在练手,巩固学习的基础知识,只用到了最基本的知识。在做这个项目的时候有很多不懂的地方。

例如:

1、Student类中的Result result这个实例变量的传参,我发现如果把Result result这个属性私有化无法赋值,最后便把访问权限改成了缺省2、“根据编号删除学生信息”不知道怎么删除数组中的学生对象,现在知道原来把数组赋值为“null”就行了等等

通过这个小练习,也学习到了很多很多。代码还有很多不完善的地方,分享给大家,请大家指导!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

青春气贯长虹,勇敢盖过怯懦,进取压倒苟安。

Java实现学生成绩管理系统

相关文章:

你感兴趣的文章:

标签云: