Java测试题---简易学生成绩系统

Posted QUX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java测试题---简易学生成绩系统相关的知识,希望对你有一定的参考价值。

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

  一,ScoreInformation类:

 1 public class ScoreInformation {
 2     private String stunumber;         //学号
 3     private String name;              //姓名
 4     private double mathematicsscore;  //高数成绩
 5     private double englishscore;      //大学英语成绩
 6     private double networkscore;      //计算机网络成绩
 7     private double databasescore;     //数据库成绩
 8     private double softwarescore;     //软件工程成绩
 9     
10     public void setStunumber(String stunumber){
11         this.stunumber = stunumber;
12     }
13     public String getStunumber(){
14         return stunumber;
15     }
16     public void setName(String name){
17         this.name = name;
18     }
19     public String getName(){
20         return name;
21     }
22     public void setMath(double mathematicssore){
23         this.mathematicsscore = mathematicssore;
24     }
25     public double getMath(){
26         return mathematicsscore;
27     }
28     public void setEng(double englishscore){
29         this.englishscore = englishscore;
30     }
31     public double getEng(){
32         return englishscore;
33     }
34     public void setNet(double networkscore){
35         this.networkscore = networkscore;
36     }
37     public double getNet(){
38         return networkscore;
39     }
40     public void setData(double databasescore){
41         this.databasescore = databasescore;
42     }
43     public double getData(){
44         return databasescore;
45     }
46     public void setSoft(double softwarescore){
47         this.softwarescore = softwarescore;
48     }
49     public double getSoft(){
50         return softwarescore;
51     }
52     
53     public ScoreInformation(){
54         stunumber = "XXXXXXXX";//原代码录入的是我个人的信息,暂改为X
55         name = "XXX";
56         mathematicsscore = 0;
57         englishscore = 0;
58         networkscore = 0;
59         databasescore = 0;
60         softwarescore = 0;
61     }
62     public ScoreInformation(String stunumber,String name){
63         this.stunumber = stunumber;
64         this.name = name;
65         this.mathematicsscore = 0;
66         this.englishscore = 0;
67         this.networkscore = 0;
68         this.databasescore = 0;
69         this.softwarescore = 0;
70     }
71 }

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

  二,Surface类:

  1 public class Surface {
  2     public void mainsur(){
  3         System.out.println("***********************************************************");
  4         System.out.println("           石家庄铁道大学软件工程系 ");
  5         System.out.println("           学生学籍管理系统 2019 版 ");
  6         System.out.println("***********************************************************");
  7         System.out.println("           1、 学生考试成绩录入 ");
  8         System.out.println("           2、 学生考试成绩修改 ");
  9         System.out.println("           3、 计算学生成绩绩点 ");
 10         System.out.println("           4、 退出学籍管理系统 ");
 11         System.out.println("***********************************************************");
 12     }
 13     public void inStun(){
 14         System.out.println("***********************************************************");
 15         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
 16         System.out.println("                学生考试成绩录入");
 17         System.out.println("***********************************************************");
 18         System.out.println("                请输入学生学号:");
 19         System.out.println("***********************************************************");
 20     }
 21     public void inMath(ScoreInformation s){
 22         System.out.println("***********************************************************");
 23         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
 24         System.out.println("                学生考试成绩录入界面");
 25         System.out.println("***********************************************************");
 26         System.out.println("                学生学号:"+s.getStunumber());
 27         System.out.println("                  学生姓名:"+s.getName());
 28         System.out.println("             请输入高等数学成绩:");
 29         System.out.println("***********************************************************");
 30     }
 31     public void inEng(ScoreInformation s){
 32         System.out.println("***********************************************************");
 33         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
 34         System.out.println("                学生考试成绩录入界面");
 35         System.out.println("***********************************************************");
 36         System.out.println("                学生学号:"+s.getStunumber());
 37         System.out.println("                  学生姓名:"+s.getName());
 38         System.out.println("                高等数学成绩:"+s.getMath());
 39         System.out.println("             请输入大学英语成绩:");
 40         System.out.println("***********************************************************");
 41     }
 42     public void inNet(ScoreInformation s){
 43         System.out.println("***********************************************************");
 44         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
 45         System.out.println("                学生考试成绩录入界面");
 46         System.out.println("***********************************************************");
 47         System.out.println("                学生学号:"+s.getStunumber());
 48         System.out.println("                  学生姓名:"+s.getName());
 49         System.out.println("                高等数学成绩:"+s.getMath());
 50         System.out.println("                大学英语成绩:"+s.getEng());
 51         System.out.println("             请输入计算机网络成绩:");
 52         System.out.println("***********************************************************");
 53     }
 54     public void inData(ScoreInformation s){
 55         System.out.println("***********************************************************");
 56         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
 57         System.out.println("                学生考试成绩录入界面");
 58         System.out.println("***********************************************************");
 59         System.out.println("                学生学号:"+s.getStunumber());
 60         System.out.println("                  学生姓名:"+s.getName());
 61         System.out.println("                高等数学成绩:"+s.getMath());
 62         System.out.println("                大学英语成绩:"+s.getEng());
 63         System.out.println("              计算机网络成绩:"+s.getNet());
 64         System.out.println("              请输入数据库成绩:");
 65         System.out.println("***********************************************************");
 66     }
 67     public void inSoft(ScoreInformation s){
 68         System.out.println("***********************************************************");
 69         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
 70         System.out.println("                学生考试成绩录入界面");
 71         System.out.println("***********************************************************");
 72         System.out.println("                学生学号:"+s.getStunumber());
 73         System.out.println("                  学生姓名:"+s.getName());
 74         System.out.println("                高等数学成绩:"+s.getMath());
 75         System.out.println("                大学英语成绩:"+s.getEng());
 76         System.out.println("              计算机网络成绩:"+s.getNet());
 77         System.out.println("                  数据库成绩:"+s.getData());
 78         System.out.println("             请输入软件工程成绩:");
 79         System.out.println("***********************************************************");
 80     }
 81     public void inall(ScoreInformation s){
 82         System.out.println("***********************************************************");
 83         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
 84         System.out.println("                  学生考试成绩录入");
 85         System.out.println("***********************************************************");
 86         System.out.println("                学生学号:"+s.getStunumber());
 87         System.out.println("                  学生姓名:"+s.getName());
 88         System.out.println("                高等数学成绩:"+s.getMath());
 89         System.out.println("                大学英语成绩:"+s.getEng());
 90         System.out.println("              计算机网络成绩:"+s.getNet());
 91         System.out.println("                  数据库成绩:"+s.getData());
 92         System.out.println("                软件工程成绩:"+s.getSoft());
 93         System.out.println("             该学生成绩已录入完毕,是否提交(Y/N)");
 94         System.out.println("***********************************************************");
 95     }
 96     public void changeStun(){
 97         System.out.println("***********************************************************");
 98         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
 99         System.out.println("                学生考试成绩修改界面");
100         System.out.println("***********************************************************");
101         System.out.println("                请输入学生学号:");
102         System.out.println("***********************************************************");
103     }
104     public void outscore(ScoreInformation s){
105         System.out.println("***********************************************************");
106         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
107         System.out.println("                  学生考试成绩录入");
108         System.out.println("***********************************************************");
109         System.out.println("                学生学号:"+s.getStunumber());
110         System.out.println("                  学生姓名:"+s.getName());
111         System.out.println("         1,高等数学成绩:"+s.getMath());
112         System.out.println("         2,大学英语成绩:"+s.getEng());
113         System.out.println("        3,计算机网络成绩:"+s.getNet());
114         System.out.println("          4,数据库成绩:"+s.getData());
115         System.out.println("         5,软件工程成绩:"+s.getSoft());
116         System.out.println("***********************************************************");
117     }
118     public void changeMath(ScoreInformation s){
119         System.out.println("***********************************************************");
120         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
121         System.out.println("                学生考试成绩录入界面");
122         System.out.println("***********************************************************");
123         System.out.println("                学生学号:"+s.getStunumber());
124         System.out.println("                  学生姓名:"+s.getName());
125         System.out.println("             请输入修改后高等数学成绩:");
126         System.out.println("***********************************************************");
127     }
128     public void changeEng(ScoreInformation s){
129         System.out.println("***********************************************************");
130         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
131         System.out.println("                学生考试成绩录入界面");
132         System.out.println("***********************************************************");
133         System.out.println("                学生学号:"+s.getStunumber());
134         System.out.println("                  学生姓名:"+s.getName());
135         System.out.println("             请输入修改后大学英语成绩:");
136         System.out.println("***********************************************************");
137     }
138     public void changeNet(ScoreInformation s){
139         System.out.println("***********************************************************");
140         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
141         System.out.println("                学生考试成绩录入界面");
142         System.out.println("***********************************************************");
143         System.out.println("                学生学号:"+s.getStunumber());
144         System.out.println("                  学生姓名:"+s.getName());
145         System.out.println("             请输入修改后计算机网络成绩:");
146         System.out.println("***********************************************************");
147     }
148     public void changeData(ScoreInformation s){
149         System.out.println("***********************************************************");
150         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
151         System.out.println("                学生考试成绩录入界面");
152         System.out.println("***********************************************************");
153         System.out.println("                学生学号:"+s.getStunumber());
154         System.out.println("                  学生姓名:"+s.getName());
155         System.out.println("             请输入修改后数据库成绩:");
156         System.out.println("***********************************************************");
157     }
158     public void changeSoft(ScoreInformation s){
159         System.out.println("***********************************************************");
160         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
161         System.out.println("                学生考试成绩录入界面");
162         System.out.println("***********************************************************");
163         System.out.println("                学生学号:"+s.getStunumber());
164         System.out.println("                  学生姓名:"+s.getName());
165         System.out.println("             请输入修改后软件工程成绩:");
166         System.out.println("***********************************************************");
167     }
168     public void overchange(ScoreInformation s){
169         System.out.println("***********************************************************");
170         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
171         System.out.println("                  学生考试成绩录入");
172         System.out.println("***********************************************************");
173         System.out.println("                学生学号:"+s.getStunumber());
174         System.out.println("                  学生姓名:"+s.getName());
175         System.out.println("         1,高等数学成绩:"+s.getMath());
176         System.out.println("         2,大学英语成绩:"+s.getEng());
177         System.out.println("        3,计算机网络成绩:"+s.getNet());
178         System.out.println("          4,数据库成绩:"+s.getData());
179         System.out.println("         5,软件工程成绩:"+s.getSoft());
180         System.out.println("             该学生成绩已修改完毕,是否提交(Y/N)");
181         System.out.println("***********************************************************");
182     }
183     public void startgrade(){
184         System.out.println("***********************************************************");
185         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
186         System.out.println("                学生考试成绩绩点计算界面");
187         System.out.println("***********************************************************");
188         System.out.println("                请输入学生学号:");
189         System.out.println("***********************************************************");
190     }
191     public void endscore1(ScoreInformation s, double a){
192         System.out.println("***********************************************************");
193         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
194         System.out.println("                  学生考试成绩绩点计算界面");
195         System.out.println("***********************************************************");
196         System.out.println("                学生学号:"+s.getStunumber());
197         System.out.println("                  学生姓名:"+s.getName());
198         System.out.println("         1,高等数学成绩:"+s.getMath());
199         System.out.println("         2,大学英语成绩:"+s.getEng());
200         System.out.println("        3,计算机网络成绩:"+s.getNet());
201         System.out.println("          4,数据库成绩:"+s.getData());
202         System.out.println("         5,软件工程成绩:"+s.getSoft());
203         System.out.print("                   你的平均学分绩点为:");
204         System.out.println(String.format("%.2f", a));
205         System.out.println("         提示信息:你的学分绩点已达到毕业要求!");
206         System.out.println("        是否返回系统主界面:(Y/N)");
207         System.out.println("***********************************************************");
208     }
209     public void endscore2(ScoreInformation s, double a){
210         System.out.println("***********************************************************");
211         System.out.println("      石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
212         System.out.println("                  学生考试成绩绩点计算界面");
213         System.out.println("***********************************************************");
214         System.out.println("                学生学号:"+s.getStunumber());
215         System.out.println("                  学生姓名:"+s.getName());
216         System.out.println("         1,高等数学成绩:"+s.getMath());
217         System.out.println("         2,大学英语成绩:"+s.getEng());
218         System.out.println("        3,计算机网络成绩:"+s.getNet());
219         System.out.println("          4,数据库成绩:"+s.getData());
220         System.out.println("         5,软件工程成绩:"+s.getSoft());
221         System.out.print("                   你的平均学分绩点为:");
222         System.out.println(String.format("%.2f", a));
223         System.out.println("         提示信息:你的学分绩点不满足毕业要求!");
224         System.out.println("        是否返回系统主界面:(Y/N)");
225         System.out.println("***********************************************************");
226     }
227     public void endsur(){
228         System.out.println("***********************************************************");
229         System.out.println("          谢谢使用石家庄铁道大学软件工程系学生学籍管理系统 2019 版 ");
230         System.out.println("                  制作人:朴远东");
231         System.out.println("***********************************************************");
232     }
233 }

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

  三,Main类:

  1 import java.util.Scanner;
  2 
  3 public class Main {
  4     static Surface x = new Surface();              //调用界面类
  5     static Scanner in = new Scanner(System.in);
  6     
  7     public void stem1(ScoreInformation a[]){      //执行学生成绩录入操作
  8         int temp1 = 0;
  9         x.inStun();
 10         String m = in.next();
 11         for(int i = 0; i < 5; i++){
 12             if(a[i].getStunumber().equals(m))
 13             {
 14                 x.inMath(a[i]);
 15                 double d1 = in.nextDouble();
 16                 a[i].setMath(d1);
 17                 x.inEng(a[i]);
 18                 double d2 = in.nextDouble();
 19                 a[i].setEng(d2);
 20                 x.inNet(a[i]);
 21                 double d3 = in.nextDouble();
 22                 a[i].setNet(d3);
 23                 x.inData(a[i]);
 24                 double d4 = in.nextDouble();
 25                 a[i].setData(d4);
 26                 x.inSoft(a[i]);
 27                 double d5 = in.nextDouble();
 28                 a[i].setSoft(d5);
 29                 x.inall(a[i]);
 30                 String c = in.next();
 31                 if(c.equals("N")){
 32                     a[i].setMath(0);
 33                     a[i].setEng(0);
 34                     a[i].setNet(0);
 35                     a[i].setData(0);
 36                     a[i].setSoft(0);
 37                 }
 38                 x.mainsur();
 39                 temp1 = 1;
 40                 break;
 41             }
 42         }
 43         if(temp1 == 0)
 44         {
 45             System.out.println("该学号不存在");
 46             x.mainsur();
 47         }
 48     }
 49     
 50     public void stem2(ScoreInformation a[]){          //执行学生成绩修改操作。
 51         int temp1 = 0;
 52         double r1,r2,r3,r4,r5;
 53         x.changeStun();
 54         String m = in.next();
 55         for(int i = 0; i < 5; i++){
 56             if(a[i].getStunumber().equals(m))
 57             {
 58                 r1 = a[i].getMath();
 59                 r2 = a[i].getEng();
 60                 r3 = a[i].getNet();
 61                 r4 = a[i].getData();
 62                 r5 = a[i].getSoft();
 63                 x.outscore(a[i]);
 64                 int c = in.nextInt();
 65                 switch(c){
 66                 case 1:
 67                     x.changeMath(a[i]);
 68                     double d1 = in.nextDouble();
 69                     a[i].setMath(d1);
 70                     break;
 71                 case 2:
 72                     x.changeEng(a[i]);
 73                     double d2 = in.nextDouble();
 74                     a[i].setEng(d2);
 75                     break;
 76                 case 3:
 77                     x.changeNet(a[i]);
 78                     double d3 = in.nextDouble();
 79                     a[i].setNet(d3);
 80                     break;
 81                 case 4:
 82                     x.changeData(a[i]);
 83                     double d4 = in.nextDouble();
 84                     a[i].setData(d4);
 85                     break;
 86                 case 5:
 87                     x.changeSoft(a[i]);
 88                     double d5 = in.nextDouble();
 89                     a[i].setSoft(d5);
 90                     break;
 91                 default:
 92                     System.out.println("无该选项,返回主界面");
 93                     x.mainsur();
 94                     break;
 95                 }
 96                 x.overchange(a[i]);
 97                 String h = in.next();
 98                 if(h.equals("N")){
 99                     a[i].setMath(r1);
100                     a[i].setEng(r2);
101                     a[i].setNet(r3);
102                     a[i].setData(r4);
103                     a[i].setSoft(r5);
104                 }
105                 x.mainsur();
106                 temp1 = 1;
107                 break;
108             }
109         }
110         if(temp1 == 0)
111         {
112             System.out.println("该学号不存在");
113             x.mainsur();
114         }
115     }
116     
117     public void stem3(ScoreInformation a[]){              //执行绩点计算操作
118         Main v = new Main();
119         double R;
120         double r1,r2,r3,r4,r5;
121         double x1,x2,x3,x4,x5;
122         x.startgrade();
123         String m = in.next();
124         for(int i = 0; i < 5; i++){
125             if(a[i].getStunumber().equals(m))
126             {
127                 r1 = a[i].getMath();x1 = v.Gpoint(r1);
128                 r2 = a[i].getEng();x2 = v.Gpoint(r2);
129                 r3 = a[i].getNet();x3 = v.Gpoint(r3);
130                 r4 = a[i].getData();x4 = v.Gpoint(r4);
131                 r5 = a[i].getSoft();x5 = v.Gpoint(r5);
132                 R = (x1*r1+x2*r2+x3*r3+x4*r4+x5*r5)/(r1+r2+r3+r4+r5);
133                 if(R>=2){
134                     x.endscore1(a[i], R);
135                 }else{
136                     x.endscore2(a[i], R);
137                 }
138                 String q = in.next();
139                 if(q.equals("Y")){
140                     x.mainsur();
141                 }
142                 break;
143             }
144         }
145     }
146     
147     public double Gpoint(double d){              //返回学分对应的绩点
148         double e = 0;
149         if(d>=90.0)
150             e = 4.0;
151         else if(d>=85&&d<=89.9)
152             e = 3.7;
153         else if(d>=82&&d<=84.9)
154             e = 3.3;
155         else if(d>=78&&d<=81.9)
156             e = 3.0;
157         else if(d>=75&&d<=77.9)
158             e = 2.7;
159         else if(d>=72&&d<=74.9)
160             e = 2.3;
161         else if(d>=68&&d<=71.9)
162             e = 2.0;
163         else if(d>=66&&d<=67.9)
164             e = 1.7;
165         else if(d>=64&&d<=65.9)
166             e = 1.5;
167         else if(d>=60&&d<=63.9)
168             e = 1.0;
169         else if(d<60)
170             e = 0;
171         return e;
172     }
173     
174     public static void main(String[] args) {
175         Main u = new Main();
176         ScoreInformation a[] = new ScoreInformation[5];
177         a[0] = new ScoreInformation();
178         a[1] = new ScoreInformation("20180001","小赵");
179         a[2] = new ScoreInformation("20180002","小张");
180         a[3] = new ScoreInformation("20180003","小王");
181         a[4] = new ScoreInformation("20180004","小李");
182         int temp = 0;
183         x.mainsur();
184         int T = in.nextInt();
185         while(temp == 0){                   //重复调用
186             switch(T){
187             case 1:
188                 u.stem1(a);
189                 T = in.nextInt();
190                 break;
191             case 2:
192                 u.stem2(a);
193                 T = in.nextInt();
194                 break;
195             case 3:
196                 u.stem3(a);
197                 T = in.nextInt();
198                 break;
199             case 4:
200                 x.endsur();
201                 temp = 1;
202                 break;
203             default:
204                 System.out.println("该选项不存在");
205                 x.mainsur();
206                 temp = 1;
207                 break;
208             }
209         }
210             in.close();
211     }
212 }

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

以上是关于Java测试题---简易学生成绩系统的主要内容,如果未能解决你的问题,请参考以下文章

简易学生成绩管理系统

Java设计开发一个简单的学生管理系统!

java课堂测试样卷-----简易学籍管理系统

JAVA语言课堂测试01源代码(学生成绩管理系统)

搭建一个简易的成绩管理系统的数据库

一个简易的学生成绩管理系统