Java实现学生成绩管理系统

论坛 期权论坛 脚本     
niminba   2021-5-26 12:32   5426   0

本文实例为大家分享了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.nexrokkR2
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP