javaSE經典綜合例項之學生管理系統1.0版(初學者)
阿新 • • 發佈:2020-12-27
第一次釋出時間:2020年12月27日 01:58
持續更新中.......
文章一共分為三大部分:初級、進階、圖形介面化三個階段。此為1.0版
目標是進階到:
2.0版綜合應用程式
3.0版javaweb網站開發
4.0版maven專案管理SSM技術的綜合應用
文章目錄:
1.學生管理系統的初級階段01
主要知識點:控制語句結構及陣列的應用
2.學生管理系統的初級階段02
主要知識點:面向物件的綜合應用
3.學生管理系統的初級階段03
主要知識點:圖形使用者化介面、表格元件、以及資料庫的簡單使用
1.學生管理系統的初級階段01
1.總體設計: (1)首先輸入學生人數和學科數目 (2)其次輸入各學科名稱和各學生姓名 (3)輸入各學生各學科成績 (4)最後顯示所有學生所有科目資訊以及平均分、總分和排名 2.程式碼實現與分析: (1)輸入需要一個Scanner類建立的物件,獲取鍵盤輸入內容 Scanner input=new Scanner(System.in);//表示建立一個讀取從控制檯輸入內容的流物件 (2)輸入學生人數和學生科目,使用上述物件讀取從控制檯輸入的字元即可 int studentNum=input.nextInt();//表示讀取的是一個整數,非整數將報錯,這裡是學生人數 int subjectNum=input.nextInt();//表示讀取的是一個整數,非整數將報錯,這裡是科目總數 (3)輸入學生的姓名及各科名稱、以及各個學生的各科成績。使用陣列的思想遍歷輸入 String[] studentName=new String[studentNum];//建立一個指定學生人數的陣列,記錄學生的姓名 String[] subjectName=new String[subjectNum];//建立一個指定科目總數的陣列,記錄科目的名稱 String[] stuInfo=new String[studentNum];//建立一個指定學生人數的陣列,記錄各個學生的姓名、科目成績資訊 int[] scoreSum=new int[studentNum];//建立一個指定學生人數的陣列,記錄各個學生的各科成績總和 String header="序號"+"\t"+"姓名"+"\t";//輸出的列名稱 (4)輸入學生的姓名及各科名稱、以及各個學生的各科成績。使用迴圈遍歷輸入 //1.輸入學生的姓名,同時更新學生的資訊 for(int i=0;i<studentName.length;i++){ System.out.println("請輸入第 "+(i+1)+" 位學生的姓名:"); String name=input.next();//輸入學生的姓名 studentName[i]=name;//更新儲存學生姓名陣列 stuInfo[i] = name+"\t";//更新學生資訊陣列 } //2.輸入各個科目的,同時更新列名的資訊 for(int i=0;i<subjectName.length;i++){ System.out.println("請輸入第 "+(i+1)+" 科的科目名稱:"); String name=input.next();//輸入科目的名稱 subjectName[i]=name;//更新儲存科目名稱陣列 stuInfo[i] += name+"\t";//更新學生資訊陣列 } //3.輸入各個學生的各科科目的成績,同時更新學生的資訊和計算他們的總分 for(int i=0;i<studentName.length;i++){ int sum=0;//記錄學生的各科成績之和 for(int j=0;j<subjectName.length;j++){ System.out.println("請輸入學生"+studentName[i]+"的"+subjectName[j]+"科目成績:"); int score=input.nextInt();//輸入科目的成績 sum += score;//計算總分 stuInfo[i] += score+"\t";//更新學生的資訊 } scoreSum[i]=sum;//更新學生總分的資訊 double avg=sum*1.0/subjectName.length;//計算平均分 DecimalFormat df=new DecimalFormat("0.00");//格式不嚴格處理,保留兩位小數 avg=Double.valueOf(df.format(avg));//轉換為double型 stuInfo[i] +=sum +"\t"+avg+"\t"; } //4.所有輸入結束,關閉流 input.close(); (5)根據總分排序 //5.根據總分對學生進行排名(使用選擇排序從高分到低分,同時更新學生資訊陣列) for (int i = 0; i < scoreSum.length-1; i++) { for (int j = i+1; j < scoreSum.length-1; j++) { if(scoreSum[i]<scoreSum[j]){ //交換比較值 int temp=scoreSum[i]; scoreSum[i]=scoreSum[j]; scoreSum[j]=temp; //同時資訊也交換,實現資訊跟著總分排序 String str=stuInfo[i]; stuInfo[i]=stuInfo[j]; stuInfo[j]=str; } } } //6.輸出結果 System.out.println(header+"總分\t平均分\t排名");//輸出列名 for (int i = 0; i < stuInfo.length; i++) { System.out.println(stuInfo[i]+"第"+(i+1)+"名");//輸出最後結果 } ====================================測試過程============================================== 請輸入學生的總人數: 3 請輸入科目的總數: 3 請輸入第 1 位學生的姓名: 語程峰 請輸入第 2 位學生的姓名: 楊慧慧 請輸入第 3 位學生的姓名: 劉子琪 請輸入第 1 科的科目名稱: 語文 請輸入第 2 科的科目名稱: 數學 請輸入第 3 科的科目名稱: 英語 請輸入學生語程峰的語文科目成績: 98 請輸入學生語程峰的數學科目成績: 98 請輸入學生語程峰的英語科目成績: 96 請輸入學生楊慧慧的語文科目成績: 98 請輸入學生楊慧慧的數學科目成績: 92 請輸入學生楊慧慧的英語科目成績: 96 請輸入學生劉子琪的語文科目成績: 96 請輸入學生劉子琪的數學科目成績: 98 請輸入學生劉子琪的英語科目成績: 90 序號 姓名 語文 數學 英語 總分 平均分 排名 1 語程峰 98 98 96 292 97.33 第1名 2 楊慧慧 98 92 96 286 95.33 第2名 3 劉子琪 96 98 90 284 94.67 第3名 Process finished with exit code 0 ==================================================================================================================================================================================
2.學生管理系統的初級階段02
1.總體設計要求與目的 (1)先規定學生的人數 (2)實現學生的新增和查詢 (3)根據學生編號更新學生資訊和刪除學生 (4)根據學生編號輸入學生各門成績 (5)根據某門成績或總分排名 (6)上述所有操作均可迴圈操作 2.鞏固知識點:控制語句結構及陣列知識,物件及類的綜合使用 3.總體設想與設計 (1)系統的上限人數由控制檯輸入人數決定 (2)整個小實驗是分為三大類: 封裝類Student,包含學生的基本資訊,包括科目名稱與成績。 主程式是實現迴圈操作的專案選擇 方法實現類實現的各個操作的具體方法 (3)所有輸入內容進行驗證,檢視是否符合要求 (4)執行順序大致可以分為:主程式操作選擇--->呼叫處理方法---->呼叫封裝類獲取相關類的資料 (5)初步學習階段儘可能少用系統工具類 4.具體實現步驟與思路分析: (1)主程式部分實現的是學生人數的輸入,這就限定了這個管理系統的學生人數上限,使用輸入流獲取 //1.建立輸入流物件 Scanner input=new Scanner(System.in); //2.輸入學生總人數和科目的總數 System.out.println("請輸入學生的總人數:"); int studentNum=input.nextInt(); //3.建立一個指定人數的學生類陣列 Student[] stu=new Student[studentNum]; //4.建立執行方法類物件 StudentService stuService=new StudentServiceImpl(stu); (2)主程式部分實現的操作的迴圈使用,使用一個while迴圈實現,直至選擇退出程式才結束 //5.執行選擇操作 while (true) { System.out.println("請選擇要執行的操作:"); System.out.println("00:新增一個學生"); System.out.println("01:根據學號修改學生資訊"); System.out.println("02:根據學號查詢學生"); System.out.println("03:根據性別查詢學生"); System.out.println("04:根據平均分查詢學生"); System.out.println("05:根據學號刪除學生"); System.out.println("06:刪除所有學生"); System.out.println("07:顯示所有學生的所有資訊"); System.out.println("08:根據某門成績進行降序排列顯示"); System.out.println("88:退出系統"); String choose=input.next(); if(choose.equals("00")){ }else if(choose.equals("01")){ }else if(choose.equals("02")){ }else if(choose.equals("03")){ }else if(choose.equals("04")){ }else if(choose.equals("05")){ }else if(choose.equals("06")){ }else if(choose.equals("07")){ }else if(choose.equals("08")){ }else if(choose.equals("88")){ System.out.println("謝謝使用學生管理系統,再見!"); System.exit(0); }else{ System.out.println("抱歉,沒有該選項,請重新選擇!"); } } (3)封裝類設計:Student.java 屬性有:Long型 stu_ID; String型 stu_name,stu_gender; Double型 scoreAvg; Integer型 stu_age,java,phython,computer,scoreSum,rank 以及一個處理平均數格式的屬性:DecimalFormat df=new DecimalFormat("0.00"); 重寫其toString方法,使用"\t"分隔 (4)主類設計:StudentAdmin.java,就是(1)(2)的主要內容,還有一個方法,實現學生資訊修改選項:private String updateStudentByChoosing(); (5)介面設計:介面:StudentService.java;就是把要執行的方法全部列舉一遍 (6)實現類設計:StudentServiceImpl.java;實現具體的方法 (7)工具類設計1:Condition.java;各種輸入判斷以及部分條件判斷,以確保執行操作是在合理的要求內實現 (8)工具類設計2:Regex.java;正則表示式類 ================================================================================================================================================================================== 5.介面類:StudentService.java //1.新增學生的方法 void addStudentInformation(); //2.根據學號修改學生資訊 void updateStudentInformationByStu_ID(String stu_ID); //3.根據學號查詢學生資訊 void queryStudentInformationByStu_ID(String stu_ID); //4.根據性別查詢學生 void queryStudentInformationByStu_gender(String stu_gender); //5.根據平均分查詢學生 void queryStudentInformationByScoreAvg(String level,Double scoreAvg); //6.根據學號刪除學生 void deleteStudentInformationByStu_ID(String stu_ID); //7.根據學號查詢學生 void deleteAllStudentInformation(); //8.顯示所有學生的所有資訊 void queryAllStudentInformation(); //9.根據某門成績進行降序排列顯示學生資訊 void queryStudentInformationBySubject(String subject); ================================================================================================================================================================================== 5.介面實現類:StudentServiceImpl.java;逐步實現上面的方法
3.學生管理系統的初級階段03