Java简易学生成绩系统写法实例
作者:PYD-inazuma 发布时间:2021-08-18 08:06:03
刚刚接触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判断的标志,根据它的值来决定接下来的操作,这是我个人的编写习惯,退出循环或者其他情况都会设置一个变量进行判断。
来源:https://www.cnblogs.com/20183711PYD/p/11506245.html


猜你喜欢
- Kotlin 封装万能SharedPreferences存取任何类型详解/** * author: smart * time: 2016/1
- 在很多项目中,为了安全安全考虑,需要对数据包进行加密处理,本文实例所述的即为C#加密代码,在应用开发中有很大的实用价值。说起数据包加密,其实
- 【说明】 TextView是用来显示文本的组件。以下介绍的是XML代码中的属性,在java代码中同样可通过 ”组件名.setXXX()方法设
- 本文所述为使用WinForm相对路径时需要注意的陷阱。这类错误经常会遇到!现分析如下供大家参考。在Window系统上利用相对路径进行操作时,
- 为Repository添加自定义方法一、为某个Repository添加自定义方法1、定义一个接口PersonDao,声明要添加的方法。pub
- 这篇文章主要介绍了简单了解Spring中BeanFactory与FactoryBean的区别,文中通过示例代码介绍的非常详细,对大家的学习或
- 这篇文章主要介绍了简单了解java标识符的作用和命名规则,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 打包发布jar包部署相对较为简单,尤其是在分布式服务比较多的情况下。单体项目如果是单体项目,只需要找到maven的插件,点击package运
- 本文实例为大家分享了java实现马踏棋盘的具体代码,供大家参考,具体内容如下马踏棋盘算法介绍8X8棋盘,马走日字,要求每个方格只进入一次,走
- 本文讲述的是Android中RelativeLayout、FrameLayout的用法。具体如下:RelativeLayout是一个按照相对
- SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出):cache – 对给定命名空间的缓存配置。cache-ref – 对其他命
- 今天有位同事在使用System.err和System.out遇上了一些小问题.看了些资料总结下:1.JDK文档对两者的解释:out:“标准”
- 今天一直在绞尽脑汁的寻找解决两个字符之间的内容如何输出的问题,刚开始就使用了万能的正则表达式;但是不知哪里的原因自己的数据一直出不来,觉得应
- using System;using System.Collections.Generic;using System.Linq;using
- EditText和AutoCompleteTextView设置文字选中颜色 大多数Android Rom上,文本选择的背景色都是很好看的鲜绿
- @Validated和BindingResult 使用遇到的坑@Validated 与BindingResult 需要相邻,否则 变量res
- 本文项目为大家分享了C#实现点餐系统,供大家参考,具体内容如下项目介绍:一家店铺使用的外卖点餐系统本项目分三大模块:登录注册模块,用户模块,
- 一个项目可能会有不同的环境,例如dev/stating/prod等,不同的环境的配置文件是不同的,如何根据环境快速的切换到对应的配置文件很重
- 这篇文章主要介绍了Java数组扩容实现方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参
- 本文使用的Unicode+DLL+Debug的方式,因为不想最后生成的exe文件太大。环境搭建步骤如下:1、下载wxWidgets包:登录w