刚刚接触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判断的标志,根据它的值来决定接下来的操作,这是我个人的编写习惯,退出循环或者其他情况都会设置一个变量进行判断。
原文地址:https://www.cnblogs.com/20183711PYD/p/11506245.html