StudentManager系統
系統的數據:
變量 stunumber 為字符串類型 String,用於存儲學生的學號(有 8 位數字組成)
變量 name 為字符串類型 String,用於存儲學生的姓名。
變量 mathematicsscore 為 double 類型,用於存儲學生的高等數學成績,高等數學的學分為 4 分。
變量 englishiscore 為 double 類型,用於存儲學生的大學英語成績,大學英語的學分為 3 分。
變量 networkscore 為 double 類型,用於存儲學生的計算機網絡成績,計算機網絡的學分為 4 分。
變量 databasescore 為 double 類型,用於存儲學生的數據庫成績,數據庫的學分為 3 分。
變量 softwarescore 為 double 類型,用於存儲學生的軟件工程成績,軟件工程的學分為 2 分。
功能要求:
1.實現成績的錄入
2.學生成績修改
3.計算學生成績績點
4.退出程序界面
思路:
首先,利用對象數組來存儲5個數據,只存學號和姓名,成績都默認為零
利用while循環來控制選擇的功能,選擇4就退出循環,否則繼續循環
根據所選的功能,利用case語句分開,分被執行功能
該程序會重復用到查找學號的方法,因此建立一個find()方法
該錄入功能會有一個難題,就是如何實現實時的更新
因此,建立了一個方法來專門實現它
public void display5(int p) { System.out.println("*******************************"); System.out.println("石家庄鐵道大學軟件工程系學生學籍管理系統 2019 版 "); System.out.println(" 學生考試成績錄入界面 "); System.out.println("*******************************"); System.out.println(" 學生學號:"+s[p].getStunumber()); System.out.println(" 學生姓名:"+s[p].getName()); if(s[p].getMathematicsscore()!=0) System.out.println(" 1.高等數學成績為:"+s[p].getMathematicsscore()); if(s[p].getEnglishiscore()!=0) System.out.println(" 2.大學英語成績為:"+s[p].getEnglishiscore()); if(s[p].getNetworkscore()!=0) System.out.println(" 3.計算機網絡成績為:"+s[p].getNetworkscore()); if(s[p].getDatabasescore()!=0) System.out.println(" 4.數據庫成績為:"+s[p].getDatabasescore()); if(s[p].getSoftwarescore()!=0) System.out.println(" 5.軟件工程成績為:"+s[p].getSoftwarescore()); }
這樣根據成績初始值為0,就可以實現更新輸出;
這樣第一個功能就完成了,接下來進行修改的功能
修改的時候,有一個問題就是:如果不錄入修改的程序,那么之前的數據如何找回?
此時,我們就是需要找個變量去等於修改之前的數據,這樣就避免了修改后的數據不能再找回之前的數據的問題。
第三步:就是計算學分績點
根據
我們可以用if語句,來算出各科成績的績點,最終保留兩位小數可以用String.format("%.2f",v)
來判斷是否大於等於2,滿足畢業要求!!
下面就是全部的代碼:
package com.開學測試; import java.util.Scanner; /* 信1805-3班 */ /* 徐利峰 */ class ScoreInformation { private String stunumber; private String name; private double mathematicsscore; private double englishiscore; private double networkscore; private double databasescore; private double softwarescore; public String getStunumber() { return stunumber; } public void setStunumber(String stunumber) { this.stunumber = stunumber; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getMathematicsscore() { return mathematicsscore; } public void setMathematicsscore(double mathematicsscore) { this.mathematicsscore = mathematicsscore; } public double getEnglishiscore() { return englishiscore; } public void setEnglishiscore(double englishiscore) { this.englishiscore = englishiscore; } public double getNetworkscore() { return networkscore; } public void setNetworkscore(double networkscore) { this.networkscore = networkscore; } public double getDatabasescore() { return databasescore; } public void setDatabasescore(double databasescore) { this.databasescore = databasescore; } public double getSoftwarescore() { return softwarescore; } public void setSoftwarescore(double softwarescore) { this.softwarescore = softwarescore; } } public class ScoreManagement { Scanner in=new Scanner(System.in); public void display1() { 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("*******************************"); } public int find(String t) { int i=0,k=0; for(i=0;i<5;i++) { if(s[i].getStunumber().compareTo(t)==0) { k=1; break; } } if(k==0) return -1; else { return i; } } public void display2() { System.out.println("*******************************"); System.out.println("石家庄鐵道大學軟件工程系學生學籍管理系統 2019 版 "); System.out.println(" 學生考試成績錄入 "); System.out.println("*******************************"); } public void display3() { System.out.println("*******************************"); System.out.println("謝謝使用石家庄鐵道大學軟件工程系學生學籍管理系統 2019 版 "); System.out.println(" 制作人:徐利峰 "); System.out.println("*******************************"); } public void display4(int k) { System.out.println("*******************************"); System.out.println("石家庄鐵道大學軟件工程系學生學籍管理系統 2019 版 "); System.out.println(" 學生考試成績錄入界面 "); System.out.println("*******************************"); System.out.println(" 學生學號:"+s[k].getStunumber()); System.out.println(" 學生姓名:"+s[k].getName()); } public void display5(int p) { System.out.println("*******************************"); System.out.println("石家庄鐵道大學軟件工程系學生學籍管理系統 2019 版 "); System.out.println(" 學生考試成績錄入界面 "); System.out.println("*******************************"); System.out.println(" 學生學號:"+s[p].getStunumber()); System.out.println(" 學生姓名:"+s[p].getName()); if(s[p].getMathematicsscore()!=0) System.out.println(" 1.高等數學成績為:"+s[p].getMathematicsscore()); if(s[p].getEnglishiscore()!=0) System.out.println(" 2.大學英語成績為:"+s[p].getEnglishiscore()); if(s[p].getNetworkscore()!=0) System.out.println(" 3.計算機網絡成績為:"+s[p].getNetworkscore()); if(s[p].getDatabasescore()!=0) System.out.println(" 4.數據庫成績為:"+s[p].getDatabasescore()); if(s[p].getSoftwarescore()!=0) System.out.println(" 5.軟件工程成績為:"+s[p].getSoftwarescore()); } public void display6() { System.out.println("*******************************"); System.out.println("石家庄鐵道大學軟件工程系學生學籍管理系統 2019 版 "); System.out.println(" 學生考試成績修改界面 "); System.out.println("*******************************"); } public void display7() { System.out.println("*******************************"); System.out.println("石家庄鐵道大學軟件工程系學生學籍管理系統 2019 版 "); System.out.println(" 學生考試成績績點計算界面 "); System.out.println("*******************************"); } static ScoreInformation []s=new ScoreInformation[10]; public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); ScoreManagement stu=new ScoreManagement(); boolean flag=true,flag2=true,flag3=true,flag4=true,flag5=true,flag6=true,flag7=true; String xuehao; int i,number; for(i=0;i<10;i++) s[i]=new ScoreInformation(); s[0].setStunumber("20183516"); s[0].setName("徐利峰"); s[1].setStunumber("20183517"); s[1].setName("小華"); s[2].setStunumber("20183518"); s[2].setName("小李"); s[3].setStunumber("20183519"); s[3].setName("小剛"); s[4].setStunumber("20183520"); s[4].setName("小風"); for(i=0;i<5;i++) { s[i].setDatabasescore(0); s[i].setEnglishiscore(0); s[i].setMathematicsscore(0); s[i].setNetworkscore(0); s[i].setSoftwarescore(0); } while(flag) { stu.display1(); System.out.println("請選擇要執行的功能序號"); number=in.nextInt(); if(number<1||number>4) System.out.println("該選項不存在"); else { switch(number) { case 1: { while(flag2==true) { stu.display2(); System.out.println("請輸入學生學號:"); xuehao=in.next(); System.out.println("*******************************"); if(stu.find(xuehao)==-1) { flag2=true; System.out.println("該不存在"); } else { double m; String c; flag2=false; int b=stu.find(xuehao); while(flag7==true) { flag7=false; stu.display4(b); System.out.println("請輸入高等數學成績:"); m=in.nextDouble(); s[b].setMathematicsscore(m); stu.display5(b); System.out.println("請輸入大學英語成績:"); m=in.nextDouble(); s[b].setEnglishiscore(m); stu.display5(b); System.out.println("請輸入計算機網絡成績:"); m=in.nextDouble(); s[b].setNetworkscore(m); stu.display5(b); System.out.println("請輸入數據庫成績:"); m=in.nextDouble(); s[b].setDatabasescore(m); stu.display5(b); System.out.println("請輸入軟件工程成績:"); m=in.nextDouble(); s[b].setSoftwarescore(m); stu.display5(b); System.out.println("該學生成績已錄入完畢,是否提交(Y/N) "); c=in.next(); if(c.compareTo("N")==0) { flag7=true; s[b].setDatabasescore(0); s[b].setEnglishiscore(0); s[b].setMathematicsscore(0); s[b].setNetworkscore(0); s[b].setSoftwarescore(0); } } } } break; } case 2: { String q; while(flag3==true) { stu.display6(); flag3=false; System.out.println("請輸入學號:"); q=in.next(); System.out.println("*******************************"); if(stu.find(q)==-1) { flag3=true; System.out.println("該不存在"); } else { int r; int k=stu.find(q); double j; flag3=false; stu.display5(k); System.out.println("請選擇要修改的成績序號:"); r=in.nextInt(); if(r==1) { String m; double old; stu.display4(k); old=s[k].getMathematicsscore(); System.out.println("請輸入要修改后的高等數學成績:"); j=in.nextDouble(); s[k].setMathematicsscore(j); stu.display5(k); System.out.println("該學生成績已修改完畢,是否提交(Y/N) "); m=in.next(); if(m.compareTo("N")==0) { flag3=true; s[k].setMathematicsscore(old); } } else if(r==2) { String m; double old; old=s[k].getEnglishiscore(); stu.display4(k); System.out.println("請輸入要修改后的大學英語成績:"); j=in.nextDouble(); s[k].setEnglishiscore(j); stu.display5(k); System.out.println("該學生成績已修改完畢,是否提交(Y/N) "); m=in.next(); if(m.compareTo("N")==0) { flag3=true; s[k].setEnglishiscore(old); } } else if(r==3) { String m; double old; old=s[k].getNetworkscore(); stu.display4(k); System.out.println("請輸入要修改后的計算機網絡成績:"); j=in.nextDouble(); s[k].setNetworkscore(j); stu.display5(k); System.out.println("該學生成績已修改完畢,是否提交(Y/N) "); m=in.next(); if(m.compareTo("N")==0) { flag3=true; s[k].setNetworkscore(old); } } else if(r==4) { String m; double old; old=s[k].getDatabasescore(); stu.display4(k); System.out.println("請輸入要修改后的數據庫成績:"); j=in.nextDouble(); s[k].setDatabasescore(j); stu.display5(k); System.out.println("該學生成績已修改完畢,是否提交(Y/N) "); m=in.next(); if(m.compareTo("N")==0) { flag3=true; s[k].setDatabasescore(old); } } else if(r==5) { String m; double old; old=s[k].getSoftwarescore(); stu.display4(k); System.out.println("請輸入要修改后的軟件工程成績:"); j=in.nextDouble(); s[k].setSoftwarescore(j); stu.display5(k); System.out.println("該學生成績已修改完畢,是否提交(Y/N) "); m=in.next(); if(m.compareTo("N")==0) { flag3=true; s[k].setSoftwarescore(old); } } else { System.out.println("請重新輸入:"); } } } break; } case 3: { String l; while(flag4==true) { stu.display7(); in.nextLine(); flag4=false; System.out.println("請輸入學生學號:"); l=in.nextLine(); System.out.println("*******************************"); if(stu.find(l)==-1) { flag4=true; System.out.println("該不存在"); } else { int p=stu.find(l); double []a=new double[5]; double []g=new double[]{4,3,4,3,2}; double v=0; for(i=0;i<5;i++) { if(i==0) { if(s[p].getMathematicsscore()>=72) { if(s[p].getMathematicsscore()<=74.9) a[i]=2.3; else if(s[p].getMathematicsscore()<=77.9) a[i]=2.7; else if(s[p].getMathematicsscore()<=81.9) a[i]=3.0; else if(s[p].getMathematicsscore()<=84.9) a[i]=3.3; else if(s[p].getMathematicsscore()<=89.9) a[i]=3.7; else a[i]=4.0; } else { if(s[p].getMathematicsscore()>=68) a[i]=2.0; else if(s[p].getMathematicsscore()>=66) a[i]=1.7; else if(s[p].getMathematicsscore()>=64) a[i]=1.5; else if(s[p].getMathematicsscore()>=60) a[i]=1.0; else a[i]=0; } } if(i==1) { if(s[p].getEnglishiscore()>=72) { if(s[p].getEnglishiscore()<=74.9) a[i]=2.3; else if(s[p].getEnglishiscore()<=77.9) a[i]=2.7; else if(s[p].getEnglishiscore()<=81.9) a[i]=3.0; else if(s[p].getEnglishiscore()<=84.9) a[i]=3.3; else if(s[p].getEnglishiscore()<=89.9) a[i]=3.7; else a[i]=4.0; } else { if(s[p].getEnglishiscore()>=68) a[i]=2.0; else if(s[p].getEnglishiscore()>=66) a[i]=1.7; else if(s[p].getEnglishiscore()>=64) a[i]=1.5; else if(s[p].getEnglishiscore()>=60) a[i]=1.0; else a[i]=0; } } if(i==2) { if(s[p].getNetworkscore()>=72) { if(s[p].getNetworkscore()<=74.9) a[i]=2.3; else if(s[p].getNetworkscore()<=77.9) a[i]=2.7; else if(s[p].getNetworkscore()<=81.9) a[i]=3.0; else if(s[p].getNetworkscore()<=84.9) a[i]=3.3; else if(s[p].getNetworkscore()<=89.9) a[i]=3.7; else a[i]=4.0; } else { if(s[p].getNetworkscore()>=68) a[i]=2.0; else if(s[p].getNetworkscore()>=66) a[i]=1.7; else if(s[p].getNetworkscore()>=64) a[i]=1.5; else if(s[p].getNetworkscore()>=60) a[i]=1.0; else a[i]=0; } } if(i==3) { if(s[p].getDatabasescore()>=72) { if(s[p].getDatabasescore()<=74.9) a[i]=2.3; else if(s[p].getDatabasescore()<=77.9) a[i]=2.7; else if(s[p].getDatabasescore()<=81.9) a[i]=3.0; else if(s[p].getDatabasescore()<=84.9) a[i]=3.3; else if(s[p].getDatabasescore()<=89.9) a[i]=3.7; else a[i]=4.0; } else { if(s[p].getDatabasescore()>=68) a[i]=2.0; else if(s[p].getDatabasescore()>=66) a[i]=1.7; else if(s[p].getDatabasescore()>=64) a[i]=1.5; else if(s[p].getDatabasescore()>=60) a[i]=1.0; else a[i]=0; } } if(i==4) { if(s[p].getSoftwarescore()>=72) { if(s[p].getSoftwarescore()<=74.9) a[i]=2.3; else if(s[p].getSoftwarescore()<=77.9) a[i]=2.7; else if(s[p].getSoftwarescore()<=81.9) a[i]=3.0; else if(s[p].getSoftwarescore()<=84.9) a[i]=3.3; else if(s[p].getSoftwarescore()<=89.9) a[i]=3.7; else a[i]=4.0; } else { if(s[p].getSoftwarescore()>=68) a[i]=2.0; else if(s[p].getSoftwarescore()>=66) a[i]=1.7; else if(s[p].getSoftwarescore()>=64) a[i]=1.5; else if(s[p].getSoftwarescore()>=60) a[i]=1.0; else a[i]=0; } } } for(i=0;i<5;i++) v+=a[i]*g[i]; v=v/16; if(v>=2) flag5=true; else flag5=false; stu.display7(); System.out.println(" 學生學號:"+s[p].getStunumber()); System.out.println(" 學生姓名:"+s[p].getName()); System.out.println(" 1、高等數學成績績點:"+a[0]); System.out.println(" 2、大學英語成績績點::"+a[1]); System.out.println(" 3、計算機網絡成績績點:"+a[2]); System.out.println(" 4、數據庫成績績點:"+a[3]); System.out.println(" 5、軟件工程成績績點:"+a[4]); System.out.println(" 6、你的平均學分績點為:"+String.format("%.2f",v)); if(flag5==true) System.out.println(" 你的學分績點已達到畢業要求!"); else System.out.println(" 你的學分績點不滿足畢業要求!"); System.out.println(" 是否返回系統主界面:(Y/N) "); String c; c=in.next(); if(c.compareTo("Y")==0) flag6=false; } if(flag6==false&&flag4==false) break; } break; } case 4: { stu.display3(); flag=false; break; } } } } in.close(); } }