转入软工后第一节java课的作业
这个作业,鸽了好久。本来大家都在中秋前发了,我摸摸索索加上各种缓慢的学习,终于是将他做完了。
做完之后,java最基本的输入输出功能都基本学习到了。下面附上代码:
1 import java.util.*; 2 import java.util.Scanner; 3 public class ScoreManagement { 4 //调用自定义类数组 5 static ScoreInformation[] a= new ScoreInformation[5]; 6 static Scanner scan = new Scanner(System.in); 7 static boolean pd = true; 8 //打印主界面 9 public static void printmain(){ 10 System.out.println("***********************************************************\r"+ 11 " 石家庄铁道大学软件工程系\r"+ 12 " 学生学籍管理系统 2019 版\r"+ 13 "***********************************************************\r"+ 14 " 1、 学生考试成绩录入\r"+ 15 " 2、 学生考试成绩修改\r"+ 16 " 3、 计算学生成绩绩点\r"+ 17 " 4、 退出学籍管理系统\r"+ 18 "**********************************************************"); 19 } 20 static void score_enter1(){ 21 boolean pd2=true; 22 //打印成绩录入界面 23 System.out.println("***********************************************************\r"+ 24 " 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r" 25 + " 学生考试成绩录入\r"+ 26 "***********************************************************\r"+ 27 " 请输入学生学号:XXXXXXXX\r"+ 28 "**********************************************************"); 29 //将用户输入的学号与数组内对比 30 int sum; 31 String Stunnumber = scan.next(); 32 for(sum=0;sum<5;sum++){ 33 if((Stunnumber.equals(a[sum].getStunnumber()))){ 34 break; 35 } 36 } 37 if(sum==5){ 38 pd2=false; 39 System.out.println("您输入的学号不存在,请重新输入!"); 40 score_enter1(); 41 } 42 if(pd2){ 43 int i; 44 score_enter2(); 45 System.out.println(" 学生学号:"+a[sum].getStunnumber()); 46 System.out.println(" 学生姓名:"+a[sum].getname()); 47 //用循环挨个刷出成绩结果 48 for(i=1;i<=7;i++){ 49 if(i>1) 50 { 51 score_enter2(); 52 System.out.println(" 高等数学成绩:"+a[sum].getmathematicsscore()); 53 } 54 if(i>2) 55 { 56 System.out.println(" 大学英语成绩:"+a[sum].getenglishscore()); 57 } 58 if(i>3) 59 { 60 System.out.println(" 计算机网络成绩:"+a[sum].getnetworkscore()); 61 } 62 if(i>4) 63 { 64 System.out.println(" 数据库成绩:"+a[sum].getdatabasescore()); 65 } 66 if(i>5) 67 { 68 System.out.println(" 软件工程成绩:"+a[sum].getsoftwarescore()); 69 } 70 if(i>6) 71 { 72 System.out.println(" 该学生成绩已录入完毕,是否提交(Y/N)"); 73 System.out.println("**********************************************************"); 74 String s=scan.next(); 75 if(s.equals("Y")) 76 { 77 break; 78 } 79 if(s.equals("N")) 80 { 81 a[sum].setdatabasecore(0); 82 a[sum].setenglishscore(0); 83 a[sum].setmathematicsscore(0); 84 a[sum].setnetworkscore(0); 85 a[sum].setsoftwarescore(0); 86 score_enter1(); 87 } 88 89 } 90 //用循环挨个录入成绩 91 if(i==1) 92 { 93 System.out.println(" 请输入高等数学成绩:XXX"); 94 System.out.println("**********************************************************"); 95 double c=scan.nextDouble(); 96 a[sum].setmathematicsscore(c); 97 98 } 99 else if(i==2) 100 { 101 System.out.println(" 请输入大学英语成绩:XXX"); 102 System.out.println("**********************************************************"); 103 double c=scan.nextDouble(); 104 a[sum].setenglishscore(c); 105 } 106 else if(i==3) 107 { 108 System.out.println(" 请输入计算机网络成绩:XXX"); 109 System.out.println("**********************************************************"); 110 double c=scan.nextDouble(); 111 a[sum].setnetworkscore(c); 112 } 113 else if(i==4) 114 { 115 System.out.println(" 请输入数据库成绩:XXX"); 116 System.out.println("**********************************************************"); 117 double c=scan.nextDouble(); 118 a[sum].setdatabasecore(c); 119 } 120 else if(i==5) 121 { 122 System.out.println(" 请输入软件工程成绩:XXX"); 123 System.out.println("**********************************************************"); 124 double c=scan.nextDouble(); 125 a[sum].setsoftwarescore(c); 126 } 127 } 128 } 129 } 130 static void score_enter2(){ 131 System.out.println("***********************************************************\r"+ 132 " 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+ 133 " 学生考试成绩录入界面\r"+ 134 "***********************************************************\r"); 135 } 136 static void score_revise1(){ 137 score_revise2(); 138 int sum=0; 139 String Stunnumber = scan.next(); 140 double primary=0; 141 //将输入的学号与数组内容匹配 142 for(sum=0;sum<5;sum++){ 143 if(Stunnumber.equals(a[sum].getStunnumber())){ 144 break; 145 } 146 } 147 if(sum==5){ 148 System.out.println("您输入的学号不正确,请重新输入!"); 149 score_revise1(); 150 } 151 //输出该学生的各科成绩 152 System.out.println("***********************************************************\r"+ 153 " 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+ 154 " 学生考试成绩录入\r"+ 155 "***********************************************************\r"+ 156 " 学生学号:"+a[sum].getStunnumber()+"\r"+ 157 " 学生姓名:"+a[sum].getname()+"\r"+ 158 " 1、高等数学成绩:"+a[sum].getmathematicsscore()+"\r"+ 159 " 2、大学英语成绩:"+a[sum].getenglishscore()+"\r"+ 160 " 3、计算机网络成绩:"+a[sum].getnetworkscore()+"\r"+ 161 " 4、数据库成绩:"+a[sum].getdatabasescore()+"\r"+ 162 " 5、软件工程成绩:"+a[sum].getsoftwarescore()+"\r"+ 163 "**********************************************************"); 164 int x = scan.nextInt(); 165 System.out.println("***********************************************************\r" + 166 " 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r" + 167 " 学生考试成绩录入界面\r" + 168 "***********************************************************\r"+ 169 " 学生学号:"+a[sum].getStunnumber()+"\r" + 170 " 学生姓名:"+a[sum].getname() 171 ); 172 //用 Switch语句实现各个成绩的修改操作 173 switch(x){ 174 case 1 : System.out.println(" 请输入修改后的高等数学成绩:"); 175 System.out.println("**********************************************************"); 176 primary = a[sum].getmathematicsscore(); 177 a[sum].setmathematicsscore(scan.nextDouble());break; 178 case 2 : System.out.println(" 请输入修改后的大学英语成绩:"); 179 System.out.println("**********************************************************"); 180 primary = a[sum].getenglishscore(); 181 a[sum].setenglishscore(scan.nextDouble());break; 182 case 3 : System.out.println(" 请输入修改后的计算机网络成绩:"); 183 System.out.println("**********************************************************"); 184 primary = a[sum].getnetworkscore(); 185 a[sum].setnetworkscore(scan.nextDouble());break; 186 case 4 : System.out.println(" 请输入修改后的数据库成绩:"); 187 System.out.println("**********************************************************"); 188 primary = a[sum].getdatabasescore(); 189 a[sum].setdatabasecore(scan.nextDouble());break; 190 case 5 : System.out.println(" 请输入修改后的软件工程成绩:"); 191 System.out.println("**********************************************************"); 192 a[sum].setsoftwarescore(scan.nextDouble());break; 193 } 194 //输出修改后的各科成绩 195 System.out.println("***********************************************************\r"+ 196 " 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+ 197 " 学生考试成绩录入\r"+ 198 "***********************************************************\r"+ 199 " 学生学号:"+a[sum].getStunnumber()+"\r"+ 200 " 学生姓名:"+a[sum].getname()+"\r"+ 201 " 1、高等数学成绩:"+a[sum].getmathematicsscore()+"\r"+ 202 " 2、大学英语成绩:"+a[sum].getenglishscore()+"\r"+ 203 " 3、计算机网络成绩:"+a[sum].getnetworkscore()+"\r"+ 204 " 4、数据库成绩:"+a[sum].getdatabasescore()+"\r"+ 205 " 5、软件工程成绩:"+a[sum].getsoftwarescore()+"\r"+ 206 " 该学生成绩已修改完毕,是否提交(Y/N)\r"+ 207 "**********************************************************"); 208 String pan = scan.next(); 209 if(pan.equals("Y")){ 210 return; 211 } 212 //还原原成绩 213 if(pan.equals("N")){ 214 switch(x){ 215 case 1 : a[sum].setmathematicsscore(primary);break; 216 case 2 : a[sum].setenglishscore(primary);break; 217 case 3 : a[sum].setnetworkscore(primary);break; 218 case 4 : a[sum].setdatabasecore(primary);break; 219 case 5 : a[sum].setsoftwarescore(primary);break; 220 } 221 score_revise1(); 222 223 224 } 225 } 226 static void score_revise2(){ 227 //打印修改界面 228 System.out.println("***********************************************************\r"+ 229 " 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+ 230 " 学生考试成绩修改界面\r"+ 231 "***********************************************************\r"+ 232 " 请输入学生学号:XXXXXXXX\r"+ 233 "**********************************************************"); 234 } 235 static void score_countgpa(){ 236 score_printcountgpamain(); 237 String stunumber = scan.next(); 238 int sum; 239 for(sum=0;sum<5;sum++){ 240 if(stunumber.equals(a[sum].getStunnumber())){ 241 break; 242 } 243 } 244 boolean pd1=false; 245 double gpa1=(score_countgpa1(a[sum].getdatabasescore())*3+score_countgpa1(a[sum].getenglishscore())*3+ 246 score_countgpa1(a[sum].getmathematicsscore())*4+score_countgpa1(a[sum].getnetworkscore())*4+ 247 score_countgpa1(a[sum].getsoftwarescore())*2)/16; 248 if(gpa1>=2.0) pd1=true; 249 if(pd1) { 250 System.out.println("***********************************************************\r"+ 251 " 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+ 252 " 学生考试成绩绩点计算界面\r"+ 253 "***********************************************************\r"+ 254 " 学生学号:"+a[sum].getStunnumber()+"\r"+ 255 " 学生姓名:"+a[sum].getname()+"\r"+ 256 " 1、高等数学成绩绩点:"+score_countgpa1(a[sum].getmathematicsscore())+"\r"+ 257 " 2、大学英语成绩绩点:"+score_countgpa1(a[sum].getenglishscore())+"\r"+ 258 " 3、计算机网络成绩绩点:"+score_countgpa1(a[sum].getnetworkscore())+"\r"+ 259 " 4、数据库成绩绩点::"+score_countgpa1(a[sum].getdatabasescore())+"\r"+ 260 " 5、软件工程成绩绩点:"+score_countgpa1(a[sum].getsoftwarescore())+"\r"+ 261 " 你的平均学分绩点为:"+gpa1+"\r"+ 262 " 提示信息:您的绩点已经达到毕业要求!"+"\r"+ 263 " 是否返回系统主界面:(Y/N)"+ 264 "**********************************************************");} 265 if(!pd1){ System.out.println("***********************************************************\r"+ 266 " 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+ 267 " 学生考试成绩绩点计算界面\r"+ 268 "***********************************************************\r"+"\r"+ 269 " 学生学号:"+a[sum].getStunnumber()+"\r"+ 270 " 学生姓名:"+a[sum].getname()+"\r"+ 271 " 1、高等数学成绩绩点:"+score_countgpa1(a[sum].getmathematicsscore())+"\r"+ 272 " 2、大学英语成绩绩点:"+score_countgpa1(a[sum].getenglishscore())+"\r"+ 273 " 3、计算机网络成绩绩点:"+score_countgpa1(a[sum].getnetworkscore())+"\r"+ 274 " 4、数据库成绩绩点::"+score_countgpa1(a[sum].getdatabasescore())+"\r"+ 275 " 5、软件工程成绩绩点:"+score_countgpa1(a[sum].getsoftwarescore())+"\r"+ 276 " 你的平均学分绩点为:"+gpa1+"\r"+ 277 " 提示信息:您的绩点未达到毕业要求!"+"\r"+ 278 " 是否返回系统主界面:(Y/N)"+"\r"+ 279 "**********************************************************"); 280 } 281 String s = scan.next(); 282 if(s.equals("Y")) ; 283 if(s.equals("N")) pd=false; 284 } 285 static void score_printcountgpamain(){ 286 System.out.println("***********************************************************\r"+ 287 " 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+ 288 " 学生考试成绩绩点计算界面\r"+ 289 "***********************************************************\r"+ 290 " 请输入学生学号:XXXXXXXX\r"+ 291 "**********************************************************"); 292 } 293 294 public static double score_countgpa1(double x){ 295 double gpa=0.0; 296 if(x<60) gpa=0.0; 297 if(x>=60&&x<=63.9) gpa=1.0; 298 if(x>=64&&x<=65.9) gpa=1.5; 299 if(x>=66&&x<=67.9) gpa=1.7; 300 if(x>=68&&x<=71.9) gpa=2.0; 301 if(x>=72&&x<=74.9) gpa=2.3; 302 if(x>=75&&x<=77.9) gpa=2.7; 303 if(x>=78&&x<=81.9) gpa=3.0; 304 if(x>=82&&x<=84.9) gpa=3.3; 305 if(x>=85&&x<=89.9) gpa=3.7; 306 if(x>=90) gpa=4.0; 307 return gpa; 308 } 309 static void exit(){ 310 //打印退出界面 311 System.out.println("***********************************************************\r"+ 312 " 谢谢使用石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+ 313 " 制作人:刘梦鑫\r"+ 314 "***********************************************************\r"); 315 } 316 public static void main(String[] args){ 317 //为数组开辟对应的空间 318 a[0]= new ScoreInformation(); 319 a[1]= new ScoreInformation(); 320 a[2]= new ScoreInformation(); 321 a[3]= new ScoreInformation(); 322 a[4]= new ScoreInformation(); 323 //为数组内容赋值学号与姓名 324 a[0].setname("一号"); 325 a[0].setStunnumber("20182766"); 326 a[1].setname("二号"); 327 a[1].setStunnumber("20182767"); 328 a[2].setname("三号"); 329 a[2].setStunnumber("20182768"); 330 a[3].setname("四号"); 331 a[3].setStunnumber("20182769"); 332 a[4].setname("五号"); 333 a[4].setStunnumber("20182770"); 334 while(pd) 335 { 336 printmain(); 337 int c = scan.nextInt(); 338 switch(c){ 339 case 1:score_enter1();break; 340 case 2:score_revise1();break; 341 case 3:score_countgpa();break; 342 case 4:exit();pd=false;break; 343 default:System.out.println("您输入的数字有误,请重新输入!");break; 344 } 345 } 346 } 347 }
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.绩点计算,也比较简单,基本就是基本的计算就好了。
总的来说,其实就是各个方法的最基本实现。看着代码比较长,其实在理解后编写也是比较的简单。