Java简易学生成绩系统写法实例
刚刚接触Java不久,写法上和一些术语还不是很熟悉,如有不对的地方,希望指正。本次学生成绩系统要求能实现成绩录入,修改成绩,绩点计算,退出系统四个功能,在进行思路分析后,我构建了三个大类:ScoreInformation类;Surface类;Main类。
一,ScoreInformation类:
publicclassScoreInformation{
privateStringstunumber;//学号
privateStringname;//姓名
privatedoublemathematicsscore;//高数成绩
privatedoubleenglishscore;//大学英语成绩
privatedoublenetworkscore;//计算机网络成绩
privatedoubledatabasescore;//数据库成绩
privatedoublesoftwarescore;//软件工程成绩
publicvoidsetStunumber(Stringstunumber){
this.stunumber=stunumber;
}
publicStringgetStunumber(){
returnstunumber;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetName(){
returnname;
}
publicvoidsetMath(doublemathematicssore){
this.mathematicsscore=mathematicssore;
}
publicdoublegetMath(){
returnmathematicsscore;
}
publicvoidsetEng(doubleenglishscore){
this.englishscore=englishscore;
}
publicdoublegetEng(){
returnenglishscore;
}
publicvoidsetNet(doublenetworkscore){
this.networkscore=networkscore;
}
publicdoublegetNet(){
returnnetworkscore;
}
publicvoidsetData(doubledatabasescore){
this.databasescore=databasescore;
}
publicdoublegetData(){
returndatabasescore;
}
publicvoidsetSoft(doublesoftwarescore){
this.softwarescore=softwarescore;
}
publicdoublegetSoft(){
returnsoftwarescore;
}
publicScoreInformation(){
stunumber="XXXXXXXX";//原代码录入的是我个人的信息,暂改为X
name="XXX";
mathematicsscore=0;
englishscore=0;
networkscore=0;
databasescore=0;
softwarescore=0;
}
publicScoreInformation(Stringstunumber,Stringname){
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类:
publicclassSurface{
publicvoidmainsur(){
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("***********************************************************");
}
publicvoidinStun(){
System.out.println("***********************************************************");
System.out.println("石家庄铁道大学软件工程系学生学籍管理系统2019版");
System.out.println("学生考试成绩录入");
System.out.println("***********************************************************");
System.out.println("请输入学生学号:");
System.out.println("***********************************************************");
}
publicvoidinMath(ScoreInformations){
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("***********************************************************");
}
publicvoidinEng(ScoreInformations){
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("***********************************************************");
}
publicvoidinNet(ScoreInformations){
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("***********************************************************");
}
publicvoidinData(ScoreInformations){
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("***********************************************************");
}
publicvoidinSoft(ScoreInformations){
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("***********************************************************");
}
publicvoidinall(ScoreInformations){
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("***********************************************************");
}
publicvoidchangeStun(){
System.out.println("***********************************************************");
System.out.println("石家庄铁道大学软件工程系学生学籍管理系统2019版");
System.out.println("学生考试成绩修改界面");
System.out.println("***********************************************************");
System.out.println("请输入学生学号:");
System.out.println("***********************************************************");
}
publicvoidoutscore(ScoreInformations){
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("***********************************************************");
}
publicvoidchangeMath(ScoreInformations){
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("***********************************************************");
}
publicvoidchangeEng(ScoreInformations){
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("***********************************************************");
}
publicvoidchangeNet(ScoreInformations){
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("***********************************************************");
}
publicvoidchangeData(ScoreInformations){
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("***********************************************************");
}
publicvoidchangeSoft(ScoreInformations){
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("***********************************************************");
}
publicvoidoverchange(ScoreInformations){
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("***********************************************************");
}
publicvoidstartgrade(){
System.out.println("***********************************************************");
System.out.println("石家庄铁道大学软件工程系学生学籍管理系统2019版");
System.out.println("学生考试成绩绩点计算界面");
System.out.println("***********************************************************");
System.out.println("请输入学生学号:");
System.out.println("***********************************************************");
}
publicvoidendscore1(ScoreInformations,doublea){
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("***********************************************************");
}
publicvoidendscore2(ScoreInformations,doublea){
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("***********************************************************");
}
publicvoidendsur(){
System.out.println("***********************************************************");
System.out.println("谢谢使用石家庄铁道大学软件工程系学生学籍管理系统2019版");
System.out.println("制作人:朴远东");
System.out.println("***********************************************************");
}
}
为了能让代码更容易检查,我特意将所有关于界面显示的方法归类到Surface类里。这个类里只有显示界面的功能代码,无其他作用
三,Main类:
importjava.util.Scanner;
publicclassMain{
staticSurfacex=newSurface();//调用界面类
staticScannerin=newScanner(System.in);
publicvoidstem1(ScoreInformationa[]){//执行学生成绩录入操作
inttemp1=0;
x.inStun();
Stringm=in.next();
for(inti=0;i<5;i++){
if(a[i].getStunumber().equals(m))
{
x.inMath(a[i]);
doubled1=in.nextDouble();
a[i].setMath(d1);
x.inEng(a[i]);
doubled2=in.nextDouble();
a[i].setEng(d2);
x.inNet(a[i]);
doubled3=in.nextDouble();
a[i].setNet(d3);
x.inData(a[i]);
doubled4=in.nextDouble();
a[i].setData(d4);
x.inSoft(a[i]);
doubled5=in.nextDouble();
a[i].setSoft(d5);
x.inall(a[i]);
Stringc=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();
}
}
publicvoidstem2(ScoreInformationa[]){//执行学生成绩修改操作。
inttemp1=0;
doubler1,r2,r3,r4,r5;
x.changeStun();
Stringm=in.next();
for(inti=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]);
intc=in.nextInt();
switch(c){
case1:
x.changeMath(a[i]);
doubled1=in.nextDouble();
a[i].setMath(d1);
break;
case2:
x.changeEng(a[i]);
doubled2=in.nextDouble();
a[i].setEng(d2);
break;
case3:
x.changeNet(a[i]);
doubled3=in.nextDouble();
a[i].setNet(d3);
break;
case4:
x.changeData(a[i]);
doubled4=in.nextDouble();
a[i].setData(d4);
break;
case5:
x.changeSoft(a[i]);
doubled5=in.nextDouble();
a[i].setSoft(d5);
break;
default:
System.out.println("无该选项,返回主界面");
x.mainsur();
break;
}
x.overchange(a[i]);
Stringh=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();
}
}
publicvoidstem3(ScoreInformationa[]){//执行绩点计算操作
Mainv=newMain();
doubleR;
doubler1,r2,r3,r4,r5;
doublex1,x2,x3,x4,x5;
x.startgrade();
Stringm=in.next();
for(inti=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);
}
Stringq=in.next();
if(q.equals("Y")){
x.mainsur();
}
break;
}
}
}
publicdoubleGpoint(doubled){//返回学分对应的绩点
doublee=0;
if(d>=90.0)
e=4.0;
elseif(d>=85&&d<=89.9)
e=3.7;
elseif(d>=82&&d<=84.9)
e=3.3;
elseif(d>=78&&d<=81.9)
e=3.0;
elseif(d>=75&&d<=77.9)
e=2.7;
elseif(d>=72&&d<=74.9)
e=2.3;
elseif(d>=68&&d<=71.9)
e=2.0;
elseif(d>=66&&d<=67.9)
e=1.7;
elseif(d>=64&&d<=65.9)
e=1.5;
elseif(d>=60&&d<=63.9)
e=1.0;
elseif(d<60)
e=0;
returne;
}
publicstaticvoidmain(String[]args){
Mainu=newMain();
ScoreInformationa[]=newScoreInformation[5];
a[0]=newScoreInformation();
a[1]=newScoreInformation("20180001","小赵");
a[2]=newScoreInformation("20180002","小张");
a[3]=newScoreInformation("20180003","小王");
a[4]=newScoreInformation("20180004","小李");
inttemp=0;
x.mainsur();
intT=in.nextInt();
while(temp==0){//重复调用
switch(T){
case1:
u.stem1(a);
T=in.nextInt();
break;
case2:
u.stem2(a);
T=in.nextInt();
break;
case3:
u.stem3(a);
T=in.nextInt();
break;
case4:
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判断的标志,根据它的值来决定接下来的操作,这是我个人的编写习惯,退出循环或者其他情况都会设置一个变量进行判断。
以上就是本次介绍的全部知识点内容,感谢大家对毛票票的支持。