栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java简易学生成绩系统写法实例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java简易学生成绩系统写法实例

刚刚接触Java不久,写法上和一些术语还不是很熟悉,如有不对的地方,希望指正。本次学生成绩系统要求能实现成绩录入,修改成绩,绩点计算,退出系统四个功能,在进行思路分析后,我构建了三个大类:ScoreInformation类;Surface类;Main类。

一,ScoreInformation类:

public class ScoreInformation {
  private String stunumber;     //学号
  private String name;//姓名
  private double mathematicsscore; //高数成绩
  private double englishscore;   //大学英语成绩
  private double networkscore;   //计算机网络成绩
  private double databasescore;   //数据库成绩
  private double softwarescore;   //软件工程成绩
  
  public void setStunumber(String stunumber){
    this.stunumber = stunumber;
  }
  public String getStunumber(){
    return stunumber;
  }
  public void setName(String name){
    this.name = name;
  }
  public String getName(){
    return name;
  }
  public void setMath(double mathematicssore){
    this.mathematicsscore = mathematicssore;
  }
  public double getMath(){
    return mathematicsscore;
  }
  public void setEng(double englishscore){
    this.englishscore = englishscore;
  }
  public double getEng(){
    return englishscore;
  }
  public void setNet(double networkscore){
    this.networkscore = networkscore;
  }
  public double getNet(){
    return networkscore;
  }
  public void setData(double databasescore){
    this.databasescore = databasescore;
  }
  public double getData(){
    return databasescore;
  }
  public void setSoft(double softwarescore){
    this.softwarescore = softwarescore;
  }
  public double getSoft(){
    return softwarescore;
  }
  
  public ScoreInformation(){
    stunumber = "XXXXXXXX";//原代码录入的是我个人的信息,暂改为X
    name = "XXX";
    mathematicsscore = 0;
    englishscore = 0;
    networkscore = 0;
    databasescore = 0;
    softwarescore = 0;
  }
  public ScoreInformation(String stunumber,String name){
    this.stunumber = stunumber;
    this.name = name;
    this.mathematicsscore = 0;
    this.englishscore = 0;
    this.networkscore = 0;
    this.databasescore = 0;
    this.softwarescore = 0;
  }
}

ScoreInformation类用于存储信息,按题目要求,含7个私有变量。其中set和get函数分别用来设置和读取对应变量的值。本类中设置了两个构造方法,应老师的要求,无参默认我自己的学号和姓名,有参则自行设置学号和姓名,成绩均默认为0。

二,Surface类:

public class Surface {
  public void mainsur(){
    System.out.println("***********************************************************");
    System.out.println("      石家庄铁道大学软件工程系 ");
    System.out.println("      学生学籍管理系统 2019 版 ");
    System.out.println("***********************************************************");
    System.out.println("      1、 学生考试成绩录入 ");
    System.out.println("      2、 学生考试成绩修改 ");
    System.out.println("      3、 计算学生成绩绩点 ");
    System.out.println("      4、 退出学籍管理系统 ");
    System.out.println("***********************************************************");
  }
  public void inStun(){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println(" 学生考试成绩录入");
    System.out.println("***********************************************************");
    System.out.println(" 请输入学生学号:");
    System.out.println("***********************************************************");
  }
  public void inMath(ScoreInformation s){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println(" 学生考试成绩录入界面");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println("请输入高等数学成绩:");
    System.out.println("***********************************************************");
  }
  public void inEng(ScoreInformation s){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println(" 学生考试成绩录入界面");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println(" 高等数学成绩:"+s.getMath());
    System.out.println("请输入大学英语成绩:");
    System.out.println("***********************************************************");
  }
  public void inNet(ScoreInformation s){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println(" 学生考试成绩录入界面");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println(" 高等数学成绩:"+s.getMath());
    System.out.println(" 大学英语成绩:"+s.getEng());
    System.out.println("请输入计算机网络成绩:");
    System.out.println("***********************************************************");
  }
  public void inData(ScoreInformation s){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println(" 学生考试成绩录入界面");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println(" 高等数学成绩:"+s.getMath());
    System.out.println(" 大学英语成绩:"+s.getEng());
    System.out.println("计算机网络成绩:"+s.getNet());
    System.out.println("请输入数据库成绩:");
    System.out.println("***********************************************************");
  }
  public void inSoft(ScoreInformation s){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println(" 学生考试成绩录入界面");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println(" 高等数学成绩:"+s.getMath());
    System.out.println(" 大学英语成绩:"+s.getEng());
    System.out.println("计算机网络成绩:"+s.getNet());
    System.out.println("  数据库成绩:"+s.getData());
    System.out.println("请输入软件工程成绩:");
    System.out.println("***********************************************************");
  }
  public void inall(ScoreInformation s){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println("  学生考试成绩录入");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println(" 高等数学成绩:"+s.getMath());
    System.out.println(" 大学英语成绩:"+s.getEng());
    System.out.println("计算机网络成绩:"+s.getNet());
    System.out.println("  数据库成绩:"+s.getData());
    System.out.println(" 软件工程成绩:"+s.getSoft());
    System.out.println("该学生成绩已录入完毕,是否提交(Y/N)");
    System.out.println("***********************************************************");
  }
  public void changeStun(){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println(" 学生考试成绩修改界面");
    System.out.println("***********************************************************");
    System.out.println(" 请输入学生学号:");
    System.out.println("***********************************************************");
  }
  public void outscore(ScoreInformation s){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println("  学生考试成绩录入");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println("     1,高等数学成绩:"+s.getMath());
    System.out.println("     2,大学英语成绩:"+s.getEng());
    System.out.println("    3,计算机网络成绩:"+s.getNet());
    System.out.println("     4,数据库成绩:"+s.getData());
    System.out.println("     5,软件工程成绩:"+s.getSoft());
    System.out.println("***********************************************************");
  }
  public void changeMath(ScoreInformation s){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println(" 学生考试成绩录入界面");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println("请输入修改后高等数学成绩:");
    System.out.println("***********************************************************");
  }
  public void changeEng(ScoreInformation s){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println(" 学生考试成绩录入界面");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println("请输入修改后大学英语成绩:");
    System.out.println("***********************************************************");
  }
  public void changeNet(ScoreInformation s){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println(" 学生考试成绩录入界面");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println("请输入修改后计算机网络成绩:");
    System.out.println("***********************************************************");
  }
  public void changeData(ScoreInformation s){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println(" 学生考试成绩录入界面");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println("请输入修改后数据库成绩:");
    System.out.println("***********************************************************");
  }
  public void changeSoft(ScoreInformation s){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println(" 学生考试成绩录入界面");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println("请输入修改后软件工程成绩:");
    System.out.println("***********************************************************");
  }
  public void overchange(ScoreInformation s){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println("  学生考试成绩录入");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println("     1,高等数学成绩:"+s.getMath());
    System.out.println("     2,大学英语成绩:"+s.getEng());
    System.out.println("    3,计算机网络成绩:"+s.getNet());
    System.out.println("     4,数据库成绩:"+s.getData());
    System.out.println("     5,软件工程成绩:"+s.getSoft());
    System.out.println("该学生成绩已修改完毕,是否提交(Y/N)");
    System.out.println("***********************************************************");
  }
  public void startgrade(){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println(" 学生考试成绩绩点计算界面");
    System.out.println("***********************************************************");
    System.out.println(" 请输入学生学号:");
    System.out.println("***********************************************************");
  }
  public void endscore1(ScoreInformation s, double a){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println("  学生考试成绩绩点计算界面");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println("     1,高等数学成绩:"+s.getMath());
    System.out.println("     2,大学英语成绩:"+s.getEng());
    System.out.println("    3,计算机网络成绩:"+s.getNet());
    System.out.println("     4,数据库成绩:"+s.getData());
    System.out.println("     5,软件工程成绩:"+s.getSoft());
    System.out.print("   你的平均学分绩点为:");
    System.out.println(String.format("%.2f", a));
    System.out.println("     提示信息:你的学分绩点已达到毕业要求!");
    System.out.println("    是否返回系统主界面:(Y/N)");
    System.out.println("***********************************************************");
  }
  public void endscore2(ScoreInformation s, double a){
    System.out.println("***********************************************************");
    System.out.println("   石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println("  学生考试成绩绩点计算界面");
    System.out.println("***********************************************************");
    System.out.println(" 学生学号:"+s.getStunumber());
    System.out.println("  学生姓名:"+s.getName());
    System.out.println("     1,高等数学成绩:"+s.getMath());
    System.out.println("     2,大学英语成绩:"+s.getEng());
    System.out.println("    3,计算机网络成绩:"+s.getNet());
    System.out.println("     4,数据库成绩:"+s.getData());
    System.out.println("     5,软件工程成绩:"+s.getSoft());
    System.out.print("   你的平均学分绩点为:");
    System.out.println(String.format("%.2f", a));
    System.out.println("     提示信息:你的学分绩点不满足毕业要求!");
    System.out.println("    是否返回系统主界面:(Y/N)");
    System.out.println("***********************************************************");
  }
  public void endsur(){
    System.out.println("***********************************************************");
    System.out.println("     谢谢使用石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
    System.out.println("  制作人:朴远东");
    System.out.println("***********************************************************");
  }
}

为了能让代码更容易检查,我特意将所有关于界面显示的方法归类到Surface类里。这个类里只有显示界面的功能代码,无其他作用

三,Main类:

import java.util.Scanner;

public class Main {
  static Surface x = new Surface();//调用界面类
  static Scanner in = new Scanner(System.in);
  
  public void stem1(ScoreInformation a[]){   //执行学生成绩录入操作
    int temp1 = 0;
    x.inStun();
    String m = in.next();
    for(int i = 0; i < 5; i++){
      if(a[i].getStunumber().equals(m))
      {
 x.inMath(a[i]);
 double d1 = in.nextDouble();
 a[i].setMath(d1);
 x.inEng(a[i]);
 double d2 = in.nextDouble();
 a[i].setEng(d2);
 x.inNet(a[i]);
 double d3 = in.nextDouble();
 a[i].setNet(d3);
 x.inData(a[i]);
 double d4 = in.nextDouble();
 a[i].setData(d4);
 x.inSoft(a[i]);
 double d5 = in.nextDouble();
 a[i].setSoft(d5);
 x.inall(a[i]);
 String c = in.next();
 if(c.equals("N")){
   a[i].setMath(0);
   a[i].setEng(0);
   a[i].setNet(0);
   a[i].setData(0);
   a[i].setSoft(0);
 }
 x.mainsur();
 temp1 = 1;
 break;
      }
    }
    if(temp1 == 0)
    {
      System.out.println("该学号不存在");
      x.mainsur();
    }
  }
  
  public void stem2(ScoreInformation a[]){     //执行学生成绩修改操作。
    int temp1 = 0;
    double r1,r2,r3,r4,r5;
    x.changeStun();
    String m = in.next();
    for(int i = 0; i < 5; i++){
      if(a[i].getStunumber().equals(m))
      {
 r1 = a[i].getMath();
 r2 = a[i].getEng();
 r3 = a[i].getNet();
 r4 = a[i].getData();
 r5 = a[i].getSoft();
 x.outscore(a[i]);
 int c = in.nextInt();
 switch(c){
 case 1:
   x.changeMath(a[i]);
   double d1 = in.nextDouble();
   a[i].setMath(d1);
   break;
 case 2:
   x.changeEng(a[i]);
   double d2 = in.nextDouble();
   a[i].setEng(d2);
   break;
 case 3:
   x.changeNet(a[i]);
   double d3 = in.nextDouble();
   a[i].setNet(d3);
   break;
 case 4:
   x.changeData(a[i]);
   double d4 = in.nextDouble();
   a[i].setData(d4);
   break;
 case 5:
   x.changeSoft(a[i]);
   double d5 = in.nextDouble();
   a[i].setSoft(d5);
   break;
 default:
   System.out.println("无该选项,返回主界面");
   x.mainsur();
   break;
 }
 x.overchange(a[i]);
 String h = in.next();
 if(h.equals("N")){
   a[i].setMath(r1);
   a[i].setEng(r2);
   a[i].setNet(r3);
   a[i].setData(r4);
   a[i].setSoft(r5);
 }
 x.mainsur();
 temp1 = 1;
 break;
      }
    }
    if(temp1 == 0)
    {
      System.out.println("该学号不存在");
      x.mainsur();
    }
  }
  
  public void stem3(ScoreInformation a[]){//执行绩点计算操作
    Main v = new Main();
    double R;
    double r1,r2,r3,r4,r5;
    double x1,x2,x3,x4,x5;
    x.startgrade();
    String m = in.next();
    for(int i = 0; i < 5; i++){
      if(a[i].getStunumber().equals(m))
      {
 r1 = a[i].getMath();x1 = v.Gpoint(r1);
 r2 = a[i].getEng();x2 = v.Gpoint(r2);
 r3 = a[i].getNet();x3 = v.Gpoint(r3);
 r4 = a[i].getData();x4 = v.Gpoint(r4);
 r5 = a[i].getSoft();x5 = v.Gpoint(r5);
 R = (x1*r1+x2*r2+x3*r3+x4*r4+x5*r5)/(r1+r2+r3+r4+r5);
 if(R>=2){
   x.endscore1(a[i], R);
 }else{
   x.endscore2(a[i], R);
 }
 String q = in.next();
 if(q.equals("Y")){
   x.mainsur();
 }
 break;
      }
    }
  }
  
  public double Gpoint(double d){//返回学分对应的绩点
    double e = 0;
    if(d>=90.0)
      e = 4.0;
    else if(d>=85&&d<=89.9)
      e = 3.7;
    else if(d>=82&&d<=84.9)
      e = 3.3;
    else if(d>=78&&d<=81.9)
      e = 3.0;
    else if(d>=75&&d<=77.9)
      e = 2.7;
    else if(d>=72&&d<=74.9)
      e = 2.3;
    else if(d>=68&&d<=71.9)
      e = 2.0;
    else if(d>=66&&d<=67.9)
      e = 1.7;
    else if(d>=64&&d<=65.9)
      e = 1.5;
    else if(d>=60&&d<=63.9)
      e = 1.0;
    else if(d<60)
      e = 0;
    return e;
  }
  
  public static void main(String[] args) {
    Main u = new Main();
    ScoreInformation a[] = new ScoreInformation[5];
    a[0] = new ScoreInformation();
    a[1] = new ScoreInformation("20180001","小赵");
    a[2] = new ScoreInformation("20180002","小张");
    a[3] = new ScoreInformation("20180003","小王");
    a[4] = new ScoreInformation("20180004","小李");
    int temp = 0;
    x.mainsur();
    int T = in.nextInt();
    while(temp == 0){   //重复调用
      switch(T){
      case 1:
 u.stem1(a);
 T = in.nextInt();
 break;
      case 2:
 u.stem2(a);
 T = in.nextInt();
 break;
      case 3:
 u.stem3(a);
 T = in.nextInt();
 break;
      case 4:
 x.endsur();
 temp = 1;
 break;
      default:
 System.out.println("该选项不存在");
 x.mainsur();
 temp = 1;
 break;
      }
    }
      in.close();
  }
}

这个类就是主函数类了,用于实现各种操作。因为涉及到输入的问题,所以使用了Scanner。老师为我们放宽了要求,输入5位同学的信息即可,更改也是比较方便的,可以根据实际情况来进行对象数组的分配,在此就不多说了。题目中的系统是要重复调用的,又有4个选项,因此我选择while+switch两个结构来实现。代码中声明的Main和Surface类的对象,主要目的是在于调用MaIn和Surface类中的方法,操作数据都是ScoreInformation类的对象。在Main类中,stem1,stem2,stem3三个方法对应的是1-3的选项,将不同的实现操作分装在不同的方法里,目的是让代码看着更加清晰。最后,代码中多次出现的int型变量temp/temp1是我用来作为if判断的标志,根据它的值来决定接下来的操作,这是我个人的编写习惯,退出循环或者其他情况都会设置一个变量进行判断。

以上就是本次介绍的全部知识点内容,感谢大家对考高分网的支持。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/137069.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号