这个作业,鸽了好久。本来大家都在中秋前发了,我摸摸索索加上各种缓慢的学习,终于是将他做完了。
做完之后,java最基本的输入输出功能都基本学习到了。下面附上代码:
import java.util.*;
import java.util.Scanner;
public class ScoreManagement {
//调用自定义类数组
static ScoreInformation[] a= new ScoreInformation[5];
static Scanner scan = new Scanner(System.in);
static boolean pd = true;
//打印主界面
public static void printmain(){
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系\r"+
" 学生学籍管理系统 2019 版\r"+
"***********************************************************\r"+
" 1、 学生考试成绩录入\r"+
" 2、 学生考试成绩修改\r"+
" 3、 计算学生成绩绩点\r"+
" 4、 退出学籍管理系统\r"+
"**********************************************************");
}
static void score_enter1(){
boolean pd2=true;
//打印成绩录入界面
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"
+ " 学生考试成绩录入\r"+
"***********************************************************\r"+
" 请输入学生学号:XXXXXXXX\r"+
"**********************************************************");
//将用户输入的学号与数组内对比
int sum;
String Stunnumber = scan.next();
for(sum=0;sum<5;sum++){
if((Stunnumber.equals(a[sum].getStunnumber()))){
break;
}
}
if(sum==5){
pd2=false;
System.out.println("您输入的学号不存在,请重新输入!");
score_enter1();
}
if(pd2){
int i;
score_enter2();
System.out.println(" 学生学号:"+a[sum].getStunnumber());
System.out.println(" 学生姓名:"+a[sum].getname());
//用循环挨个刷出成绩结果
for(i=1;i<=7;i++){
if(i>1)
{
score_enter2();
System.out.println(" 高等数学成绩:"+a[sum].getmathematicsscore());
}
if(i>2)
{
System.out.println(" 大学英语成绩:"+a[sum].getenglishscore());
}
if(i>3)
{
System.out.println(" 计算机网络成绩:"+a[sum].getnetworkscore());
}
if(i>4)
{
System.out.println(" 数据库成绩:"+a[sum].getdatabasescore());
}
if(i>5)
{
System.out.println(" 软件工程成绩:"+a[sum].getsoftwarescore());
}
if(i>6)
{
System.out.println(" 该学生成绩已录入完毕,是否提交(Y/N)");
System.out.println("**********************************************************");
String s=scan.next();
if(s.equals("Y"))
{
break;
}
if(s.equals("N"))
{
a[sum].setdatabasecore(0);
a[sum].setenglishscore(0);
a[sum].setmathematicsscore(0);
a[sum].setnetworkscore(0);
a[sum].setsoftwarescore(0);
score_enter1();
} }
//用循环挨个录入成绩
if(i==1)
{
System.out.println(" 请输入高等数学成绩:XXX");
System.out.println("**********************************************************");
double c=scan.nextDouble();
a[sum].setmathematicsscore(c); }
else if(i==2)
{
System.out.println(" 请输入大学英语成绩:XXX");
System.out.println("**********************************************************");
double c=scan.nextDouble();
a[sum].setenglishscore(c);
}
else if(i==3)
{
System.out.println(" 请输入计算机网络成绩:XXX");
System.out.println("**********************************************************");
double c=scan.nextDouble();
a[sum].setnetworkscore(c);
}
else if(i==4)
{
System.out.println(" 请输入数据库成绩:XXX");
System.out.println("**********************************************************");
double c=scan.nextDouble();
a[sum].setdatabasecore(c);
}
else if(i==5)
{
System.out.println(" 请输入软件工程成绩:XXX");
System.out.println("**********************************************************");
double c=scan.nextDouble();
a[sum].setsoftwarescore(c);
}
}
}
}
static void score_enter2(){
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩录入界面\r"+
"***********************************************************\r");
}
static void score_revise1(){
score_revise2();
int sum=0;
String Stunnumber = scan.next();
double primary=0;
//将输入的学号与数组内容匹配
for(sum=0;sum<5;sum++){
if(Stunnumber.equals(a[sum].getStunnumber())){
break;
}
}
if(sum==5){
System.out.println("您输入的学号不正确,请重新输入!");
score_revise1();
}
//输出该学生的各科成绩
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩录入\r"+
"***********************************************************\r"+
" 学生学号:"+a[sum].getStunnumber()+"\r"+
" 学生姓名:"+a[sum].getname()+"\r"+
" 1、高等数学成绩:"+a[sum].getmathematicsscore()+"\r"+
" 2、大学英语成绩:"+a[sum].getenglishscore()+"\r"+
" 3、计算机网络成绩:"+a[sum].getnetworkscore()+"\r"+
" 4、数据库成绩:"+a[sum].getdatabasescore()+"\r"+
" 5、软件工程成绩:"+a[sum].getsoftwarescore()+"\r"+
"**********************************************************");
int x = scan.nextInt();
System.out.println("***********************************************************\r" +
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r" +
" 学生考试成绩录入界面\r" +
"***********************************************************\r"+
" 学生学号:"+a[sum].getStunnumber()+"\r" +
" 学生姓名:"+a[sum].getname()
);
//用 Switch语句实现各个成绩的修改操作
switch(x){
case 1 : System.out.println(" 请输入修改后的高等数学成绩:");
System.out.println("**********************************************************");
primary = a[sum].getmathematicsscore();
a[sum].setmathematicsscore(scan.nextDouble());break;
case 2 : System.out.println(" 请输入修改后的大学英语成绩:");
System.out.println("**********************************************************");
primary = a[sum].getenglishscore();
a[sum].setenglishscore(scan.nextDouble());break;
case 3 : System.out.println(" 请输入修改后的计算机网络成绩:");
System.out.println("**********************************************************");
primary = a[sum].getnetworkscore();
a[sum].setnetworkscore(scan.nextDouble());break;
case 4 : System.out.println(" 请输入修改后的数据库成绩:");
System.out.println("**********************************************************");
primary = a[sum].getdatabasescore();
a[sum].setdatabasecore(scan.nextDouble());break;
case 5 : System.out.println(" 请输入修改后的软件工程成绩:");
System.out.println("**********************************************************");
a[sum].setsoftwarescore(scan.nextDouble());break;
}
//输出修改后的各科成绩
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩录入\r"+
"***********************************************************\r"+
" 学生学号:"+a[sum].getStunnumber()+"\r"+
" 学生姓名:"+a[sum].getname()+"\r"+
" 1、高等数学成绩:"+a[sum].getmathematicsscore()+"\r"+
" 2、大学英语成绩:"+a[sum].getenglishscore()+"\r"+
" 3、计算机网络成绩:"+a[sum].getnetworkscore()+"\r"+
" 4、数据库成绩:"+a[sum].getdatabasescore()+"\r"+
" 5、软件工程成绩:"+a[sum].getsoftwarescore()+"\r"+
" 该学生成绩已修改完毕,是否提交(Y/N)\r"+
"**********************************************************");
String pan = scan.next();
if(pan.equals("Y")){
return;
}
//还原原成绩
if(pan.equals("N")){
switch(x){
case 1 : a[sum].setmathematicsscore(primary);break;
case 2 : a[sum].setenglishscore(primary);break;
case 3 : a[sum].setnetworkscore(primary);break;
case 4 : a[sum].setdatabasecore(primary);break;
case 5 : a[sum].setsoftwarescore(primary);break;
}
score_revise1(); }
}
static void score_revise2(){
//打印修改界面
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩修改界面\r"+
"***********************************************************\r"+
" 请输入学生学号:XXXXXXXX\r"+
"**********************************************************");
}
static void score_countgpa(){
score_printcountgpamain();
String stunumber = scan.next();
int sum;
for(sum=0;sum<5;sum++){
if(stunumber.equals(a[sum].getStunnumber())){
break;
}
}
boolean pd1=false;
double gpa1=(score_countgpa1(a[sum].getdatabasescore())*3+score_countgpa1(a[sum].getenglishscore())*3+
score_countgpa1(a[sum].getmathematicsscore())*4+score_countgpa1(a[sum].getnetworkscore())*4+
score_countgpa1(a[sum].getsoftwarescore())*2)/16;
if(gpa1>=2.0) pd1=true;
if(pd1) {
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩绩点计算界面\r"+
"***********************************************************\r"+
" 学生学号:"+a[sum].getStunnumber()+"\r"+
" 学生姓名:"+a[sum].getname()+"\r"+
" 1、高等数学成绩绩点:"+score_countgpa1(a[sum].getmathematicsscore())+"\r"+
" 2、大学英语成绩绩点:"+score_countgpa1(a[sum].getenglishscore())+"\r"+
" 3、计算机网络成绩绩点:"+score_countgpa1(a[sum].getnetworkscore())+"\r"+
" 4、数据库成绩绩点::"+score_countgpa1(a[sum].getdatabasescore())+"\r"+
" 5、软件工程成绩绩点:"+score_countgpa1(a[sum].getsoftwarescore())+"\r"+
" 你的平均学分绩点为:"+gpa1+"\r"+
" 提示信息:您的绩点已经达到毕业要求!"+"\r"+
" 是否返回系统主界面:(Y/N)"+
"**********************************************************");}
if(!pd1){ System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩绩点计算界面\r"+
"***********************************************************\r"+"\r"+
" 学生学号:"+a[sum].getStunnumber()+"\r"+
" 学生姓名:"+a[sum].getname()+"\r"+
" 1、高等数学成绩绩点:"+score_countgpa1(a[sum].getmathematicsscore())+"\r"+
" 2、大学英语成绩绩点:"+score_countgpa1(a[sum].getenglishscore())+"\r"+
" 3、计算机网络成绩绩点:"+score_countgpa1(a[sum].getnetworkscore())+"\r"+
" 4、数据库成绩绩点::"+score_countgpa1(a[sum].getdatabasescore())+"\r"+
" 5、软件工程成绩绩点:"+score_countgpa1(a[sum].getsoftwarescore())+"\r"+
" 你的平均学分绩点为:"+gpa1+"\r"+
" 提示信息:您的绩点未达到毕业要求!"+"\r"+
" 是否返回系统主界面:(Y/N)"+"\r"+
"**********************************************************");
}
String s = scan.next();
if(s.equals("Y")) ;
if(s.equals("N")) pd=false;
}
static void score_printcountgpamain(){
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩绩点计算界面\r"+
"***********************************************************\r"+
" 请输入学生学号:XXXXXXXX\r"+
"**********************************************************");
} public static double score_countgpa1(double x){
double gpa=0.0;
if(x<60) gpa=0.0;
if(x>=60&&x<=63.9) gpa=1.0;
if(x>=64&&x<=65.9) gpa=1.5;
if(x>=66&&x<=67.9) gpa=1.7;
if(x>=68&&x<=71.9) gpa=2.0;
if(x>=72&&x<=74.9) gpa=2.3;
if(x>=75&&x<=77.9) gpa=2.7;
if(x>=78&&x<=81.9) gpa=3.0;
if(x>=82&&x<=84.9) gpa=3.3;
if(x>=85&&x<=89.9) gpa=3.7;
if(x>=90) gpa=4.0;
return gpa;
}
static void exit(){
//打印退出界面
System.out.println("***********************************************************\r"+
" 谢谢使用石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 制作人:刘梦鑫\r"+
"***********************************************************\r");
}
public static void main(String[] args){
//为数组开辟对应的空间
a[0]= new ScoreInformation();
a[1]= new ScoreInformation();
a[2]= new ScoreInformation();
a[3]= new ScoreInformation();
a[4]= new ScoreInformation();
//为数组内容赋值学号与姓名
a[0].setname("一号");
a[0].setStunnumber("20182766");
a[1].setname("二号");
a[1].setStunnumber("20182767");
a[2].setname("三号");
a[2].setStunnumber("20182768");
a[3].setname("四号");
a[3].setStunnumber("20182769");
a[4].setname("五号");
a[4].setStunnumber("20182770");
while(pd)
{
printmain();
int c = scan.nextInt();
switch(c){
case 1:score_enter1();break;
case 2:score_revise1();break;
case 3:score_countgpa();break;
case 4:exit();pd=false;break;
default:System.out.println("您输入的数字有误,请重新输入!");break;
}
}
}
}
public class ScoreInformation {/*定义七个变量*/
private String stunnumber;/*学号*/
private String name;/*学生姓名*/
private double mathematicsscore;/*数学成绩*/
private double englishscore;/*英语成绩*/
private double networkscore;/*计算机网络成绩*/
private double databasescore;//数据库成绩
private double softwarescore;//软件工程成绩
public String getStunnumber(){
return stunnumber;//学号的输出
}
public void setStunnumber(String n){
stunnumber=n;//学号的输入
}
public String getname(){
return name;//名字的输出
}
public void setname(String a){
name=a;}//名字的输入
public double getmathematicsscore(){
return mathematicsscore;//数学成绩的输入
}
public void setmathematicsscore(double b){
mathematicsscore=b;//数学成绩的输出
}
public double getenglishscore(){
return englishscore;//英语成绩的输入
}
public void setenglishscore(double c){
englishscore=c;//英语成绩的输出
}
public double getnetworkscore(){
return networkscore;//计算机网络成绩的输入
}
public void setnetworkscore(double s){
networkscore=s;//计算机网络成绩的输出
}
public double getdatabasescore(){
return databasescore;//数据库成绩的输出
}
public void setdatabasecore(double e){
databasescore=e;//数据库成绩的输入
}
public double getsoftwarescore(){
return softwarescore;//软件工程成绩的输入
}
public void setsoftwarescore(double s){
softwarescore=s;//软件工程成绩的输出
} }
总结:
1.这个程序其实并不具有太强的功能,界面的打印基本都是依靠手工输出。其他各个功能的实现其实就是一堆方法的编写。
2.在这个小软件中,我们使用了private定义的变量,使得变量的引用变得安全,但使用的方式却略显复杂。
3.第一个功能,成绩录入,其实就是将学号与姓名和对应的数组匹配起来,然后将输入的成绩存储在数组中,其实也可以通过创建文件的方式进行储存,这样就会使得代码更加便捷。但这么长的程序谁愿意改呢~
4.成绩的修改,其实就是第一个功能,基本一致。
5.绩点计算,也比较简单,基本就是基本的计算就好了。
总的来说,其实就是各个方法的最基本实现。看着代码比较长,其实在理解后编写也是比较的简单。