版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第1章課題概述本次java課程設(shè)計的題目是以本校學(xué)生手冊中獎學(xué)金的評定辦法為背景,設(shè)計的一個學(xué)生獎學(xué)金評定系統(tǒng)。1.1課題的目的獎學(xué)金管理工作是高校學(xué)生管理工作的重要組成部分。高校為鼓勵學(xué)生在校期間刻苦學(xué)習(xí),設(shè)立了多種獎學(xué)金,同時為了做好獎學(xué)金的評審與管理工作,投入了大量的人力、物力和財力。獎學(xué)金管理工作特別是評審工作具有涉及面廣、工作量大、發(fā)生時間相對集中的特點。高校的獎學(xué)金評定工作每學(xué)年都要開展,傳統(tǒng)的評審工作主要是以手工方式進(jìn)行的,存在著效率地下、容易出錯等弊端。因此,實現(xiàn)獎學(xué)金評定管理的信息化是十分必要的。1.2課題的要求1.2.1系統(tǒng)的性能需求由于對系統(tǒng)中學(xué)生的基本信息,學(xué)習(xí)成績等,不允許隨意增加、修改和刪除,因此在系統(tǒng)設(shè)計中主要是保證系統(tǒng)的可行性,并在保證可行性的前提下滿足數(shù)據(jù)錄入的準(zhǔn)確性和高效性。1、準(zhǔn)確性:為確保數(shù)據(jù)錄入的準(zhǔn)確性,系統(tǒng)提出了采取雙工錄入比較法和多次校對來確保錄入數(shù)據(jù)正確性的策略。2、高效性:系統(tǒng)設(shè)計要能高效的完成對學(xué)生基本信息和學(xué)科成績進(jìn)行錄入。3、可行性:對學(xué)生成績的錄入與管理系統(tǒng)要能夠及時對重要的數(shù)據(jù)進(jìn)行備份,當(dāng)數(shù)據(jù)遭到災(zāi)難性的毀壞后能及時重建和恢復(fù)。對學(xué)生成績和信息的錄入與管理系統(tǒng)是通過信息的正確錄入,在系統(tǒng)內(nèi)進(jìn)行分析處理輸出新的信息并利用反饋信息對相關(guān)事物進(jìn)行有效控制的具有一定特殊功能的人機交互系統(tǒng)。1.2.2系統(tǒng)的功能需求設(shè)計一個獎學(xué)金評定系統(tǒng),該系統(tǒng)要能夠進(jìn)行信息和成績的錄入、修改、刪除、查詢。具體功能需求如下:1、由于大多數(shù)系統(tǒng)操作人員的都是非計算機專業(yè),要求系統(tǒng)要有良好的人機界面;2、能對學(xué)生成績進(jìn)行準(zhǔn)確、高效的錄入、校對和分析,并支持多條件查詢與修改;3、能夠及時地對重要數(shù)據(jù)進(jìn)行備份和恢復(fù),方便的導(dǎo)出數(shù)據(jù)文件;4、數(shù)據(jù)操作方便簡單,穩(wěn)定性好,數(shù)據(jù)計算及成績分析要能夠自動完成。第2章概要設(shè)計2.1整個程序的模塊結(jié)構(gòu)及流程根據(jù)課題要求,獎學(xué)金評定系統(tǒng)由編輯信息、查詢信息、統(tǒng)計信息、獲獎信息四大模塊組成。程序各功能模塊的劃分,及主要流程如圖2-1所示。圖2-1整個程序各功能模塊間的流程2.2各個功能模塊的描述2.2.1編輯信息輸入學(xué)生信息并以文件Score.dat保存,具有輸入新增學(xué)生基本信息,學(xué)生學(xué)科成績,以及成績的添加、刪除和修改的功能。2.4.2查詢信息可以按學(xué)號或姓名查詢某學(xué)生的所有成績,以及按學(xué)號或姓名修改指定學(xué)生的相關(guān)成績。2.4.3統(tǒng)計信息(1)具有能夠讀取Score.dat文件并顯示所有學(xué)生的所有成績的功能;(2)具有顯示輸出60分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息的功能。2.4.4獲獎信息(1)具有按各門課程的學(xué)分和分?jǐn)?shù)計算所有同學(xué)的績點,并根據(jù)績點排名得出各等級獎學(xué)金的名單的功能;(2)具有將各等級獎學(xué)金獲得者的名單寫入文件Bonus.dat的功能。第3章程序功能的實現(xiàn)3.1主要功能模塊的實現(xiàn)3.1.1編輯信息的實現(xiàn)此模塊具有三個功能,能夠新增學(xué)生信息,刪除學(xué)生信息,修改學(xué)生信息,新增學(xué)生,通過自己的輸入,把相關(guān)的數(shù)據(jù)寫入指定的文件中,需要用到對流的操作,在寫入文件前,需要先保存到自己定義的集合里,再把集合的數(shù)據(jù)全部寫入文件進(jìn)行保存,修改信息,刪除信息也是如此。新增學(xué)生信息的代碼實現(xiàn)如下:publicvoidactionPerformed(ActionEvente){ if(e.getSource()==confirm){ Stringclassno=classnotf.getText(); Stringstuid=stuidtf.getText(); Stringname=nametf.getText(); Stringclan=clantf.getText(); Stringmath=mathtf.getText(); StringEnglish=Englishtf.getText(); Stringphysics=physicstf.getText(); Stringmaxphil=maxphiltf.getText(); s=newStudent(classno,stuid,name,clan,math,English,physics, maxphil); classnotf.setText(""); stuidtf.setText(""); nametf.setText(""); clantf.setText(""); mathtf.setText(""); Englishtf.setText(""); physicstf.setText(""); maxphiltf.setText(""); list.add(s); save(); }elseif(e.getSource()==save){ this.dispose(); } }3.1.2查詢信息的實現(xiàn)查詢信息中有兩大功能,一個是根據(jù)指定的學(xué)號和姓名,查詢其相關(guān)的各項成績以及及其績點。這是自己輸入的學(xué)號和姓名,與集合中的對應(yīng)的數(shù)據(jù)進(jìn)行對比,當(dāng)發(fā)現(xiàn)一致時,就輸出其成績與績點。另一個是根據(jù)自己輸入的學(xué)號姓名,對其相關(guān)的成績進(jìn)行修改,如果一項成績需要修改,就在集合中修改指定的數(shù)據(jù),其他不改變,結(jié)束后,在把集合中的數(shù)據(jù)全部寫入到文件中。查詢成績與績點的代碼實現(xiàn)如下:publicvoidactionPerformed(ActionEvente){ ArrayList<Student>list=InternalFrame.list; Strings=null; Stringclangrade=null; Stringmathgrade=null; StringEnglishgrade=null; Stringphysicsgrade=null; Stringmaxphilgrade=null; if(e.getSource()==confirm){ for(inti=0;i<list.size();i++){ if(jtf2.getText().equals(list.get(i).stuid) ||jtf3.getText().equals(list.get(i).name)){ s="c語言:"+list.get(i).clan+"\t高數(shù):" +list.get(i).math+"\t大英:"+list.get(i).English +"\t大物:"+list.get(i).physics+"\t馬哲:" +list.get(i).maxphil; list.get(i).calgrade(); Doubleclan1=Double.valueOf(list.get(i).clangrade); Doublemath1=Double.valueOf(list.get(i).mathgrade); DoubleEnglish1=Double.valueOf(list.get(i).Englishgrade); Doublephysics1=Double.valueOf(list.get(i).physicsgrade); Doublemaxphil1=Double.valueOf(list.get(i).maxphilgrade); clangrade=clan1.toString(); mathgrade=math1.toString(); Englishgrade=English1.toString(); physicsgrade=physics1.toString(); maxphilgrade=maxphil1.toString(); jtf4.setText("c語言:"+clangrade+"\t高數(shù):"+mathgrade +"\t大英:"+Englishgrade+"\t大物:"+physicsgrade +"\t馬哲:"+maxphilgrade); jtf4.setEditable(false); jtf4.setEditable(false); jtf1.setEditable(false); jtf1.setText(s); jtf1.setEditable(false); } } } }修改個人成績的代碼實現(xiàn)如下:publicvoidactionPerformed(ActionEvente){ ArrayList<Student>list=InternalFrame.list; Stringm="確定要修改該學(xué)生成績嗎?"; if(e.getSource()==confirm){ intok=JOptionPane.showConfirmDialog(this,m,"確認(rèn)", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if(ok==JOptionPane.YES_OPTION){ Stringclan=clantf.getText(); Stringmath=mathtf.getText(); StringEnglish=Englishtf.getText(); Stringphysics=physicstf.getText(); Stringmaxphil=maxphiltf.getText(); for(inti=0;i<list.size();i++){ if(nametf.getText().equals(list.get(i).classno) ||stuidtf.getText().equals(list.get(i).stuid)){ if(!clan.trim().equals("")){ list.get(i).clan=clan; } if(!math.trim().equals("")){ list.get(i).math=math; } if(!English.trim().equals("")){ list.get(i).English=English; } if(!physics.trim().equals("")){ list.get(i).physics=physics; } if(!maxphil.trim().equals("")){ list.get(i).maxphil=maxphil; } list.get(i).calgrade(); InternalFrame.save(); } } try{ setClosed(true); }catch(PropertyVetoExceptione1){ e1.printStackTrace(); } }else{ clantf.setText(""); mathtf.setText(""); Englishtf.setText(""); physicstf.setText(""); maxphiltf.setText(""); } } }3.1.3統(tǒng)計信息的實現(xiàn)統(tǒng)計信息之中具有顯示所有學(xué)生成績,以及各項科目各分?jǐn)?shù)段的人的相關(guān)信息。顯示所有學(xué)生的成績時,利用集合,把集合中的各個學(xué)生的成績輸出來,同樣在統(tǒng)計各分?jǐn)?shù)段的人的相關(guān)信息也是從集合中的對象的屬性中獲取。顯示所有學(xué)生成績的代碼實現(xiàn)如下:publicShowInternalFrame(Stringtitle){ super(); setTitle(title); setBounds(50,20,700,500); setResizable(true); setClosable(true); setIconifiable(true); setMaximizable(true); list=InternalFrame.list; jp=newJPanel(newGridLayout(list.size(),1,1,1)); Strings[]={"班級","學(xué)號","姓名","C語言","高數(shù)","大英","大物","馬哲"}; Stringss[][]=newString[list.size()][s.length]; JTablejt; for(inti=0;i<list.size();i++){ ss[i][0]=list.get(i).classno; ss[i][1]=list.get(i).stuid; ss[i][2]=list.get(i).name; ss[i][3]=list.get(i).clan; ss[i][4]=list.get(i).math; ss[i][5]=list.get(i).physics; ss[i][6]=list.get(i).English; ss[i][7]=list.get(i).maxphil; } jt=newJTable(ss,s); jsp=newJScrollPane(jt); jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); this.add(jsp); setVisible(true);}3.1.4獲獎信息的實現(xiàn)獲獎信息中主要是得到各等獎的名單,通過比較每個學(xué)生的績點,進(jìn)行排名,根據(jù)人數(shù)的比例,計算各等獎的人數(shù),在根據(jù)排名確定人選,這些獲獎人的信息依然是在集合中得到的。(1)獲獎名單的主體代碼實現(xiàn)如下:publicAwardInternalFrame(Stringtitle){ super(); setTitle(title); setBounds(50,20,650,500); setResizable(true); setClosable(true); setIconifiable(true); setMaximizable(true); jl1=newJLabel("一等獎:"); jl2=newJLabel("二等獎:"); jl3=newJLabel("三等獎:"); jta1=newJTextArea(8,50); jta2=newJTextArea(8,50); jta3=newJTextArea(8,50); jp=newJPanel(newGridLayout(3,1,1,1)); jp1=newJPanel(); jp2=newJPanel(); jp3=newJPanel(); list=(ArrayList<Student>)InternalFrame.list.clone(); grade=newdouble[list.size()]; for(inti=0;i<list.size();i++){ list.get(i).calgrade(); grade[i]=list.get(i).allgrade; } no1num=list.size()*0.05; no2num=list.size()*0.1; no3num=list.size()*0.15; bd1=newBigDecimal(no1num).setScale(0,BigDecimal.ROUND_HALF_UP); bd2=newBigDecimal(no2num).setScale(0,BigDecimal.ROUND_HALF_UP); bd3=newBigDecimal(no3num).setScale(0,BigDecimal.ROUND_HALF_UP); bd1int=Value(); bd2int=Value(); bd3int=Value(); Arrays.sort(grade); for(inti=0;i<bd1int;i++){ gradeno1=grade[list.size()-1]; for(intj=0;j<list.size();j++){ if(gradeno1==list.get(j).allgrade){ jtagr1+=list.get(j).getinf(); list.remove(j); break; } } } for(inti=0;i<bd2int;i++){ gradeno2=grade[list.size()-1]; for(intj=0;j<list.size();j++){ if(gradeno2==list.get(j).allgrade){ jtagr2+=list.get(j).getinf(); list.remove(j); break; } } } for(inti=0;i<bd3int;i++){ gradeno3=grade[list.size()-1]; for(intj=0;j<list.size();j++){ if(gradeno3==list.get(j).allgrade){ jtagr3+=list.get(j).getinf(); list.remove(j); break; } } } jta1.setText(jtagr1); jta2.setText(jtagr2); jta3.setText(jtagr3); Filef=newFile("D:/bat/Bonus.dat"); BufferedWriterbw=null; try{ bw=newBufferedWriter(newFileWriter(f)); bw.write("一等獎:"+jtagr1); bw.newLine(); bw.write("二等獎:"+jtagr2); bw.newLine(); bw.write("三等獎:"+jtagr3); bw.flush(); bw.close(); }catch(Exceptione){ e.printStackTrace(); } jta1.setEditable(false); jta2.setEditable(false); jta3.setEditable(false); jta1.setLineWrap(true); jta2.setLineWrap(true); jta3.setLineWrap(true);第4章調(diào)試及發(fā)現(xiàn)問題的解決雖然在程序的編寫過程中遇到了很多問題,但是通過上網(wǎng)查閱相關(guān)資料,與其它同學(xué)討論,詢問指導(dǎo)老師等方式,最終都一一解決了,程序?qū)崿F(xiàn)及調(diào)試過程中遇到的主要問題及解決方法如下。1、如何使定義的集合保持唯一性?解決方法:對于集合需要用靜態(tài)進(jìn)行定義,使之成為類變量,如果是成員變量,每次實例化個對象,就會產(chǎn)生相應(yīng)的成員變量,無法保證其的唯一性,調(diào)用其中的數(shù)據(jù)會發(fā)生異常,所以必須使之成為靜態(tài),每次要用到時,通過類點名,得到整個集合,保證唯一性。2、當(dāng)修改某個學(xué)生的相關(guān)信息時,包括成績時,在獲取獎學(xué)金名單時,被修改的學(xué)生績點沒有得到改變,如何避免影響獲獎名單的準(zhǔn)確性?解決方法:在學(xué)生類中,定義一個方法,這個方法是得到其所有成績的績點,在修改的方法中,最后調(diào)用學(xué)生類的得到績點的方法,保證每次修改學(xué)生成績時,績點也會發(fā)生相應(yīng)的變化,從而保證獲取名單的準(zhǔn)確性。3、在根據(jù)績點排名時,同時出現(xiàn)了兩個相同的績點,而在同一個等級的獎學(xué)金中恰好兩個以上的名額,如何避免在同一個等級的獎學(xué)金的名單上輸出相同的兩個人?解決方法:在排名前可以先克隆一個原來裝有所有數(shù)據(jù)的集合,然后對這個集合進(jìn)行操作。需要對這個集合進(jìn)行遍歷,一旦找到在集合中對象的數(shù)據(jù)中與比較的數(shù)據(jù)一致時,立刻停止循環(huán),得到其相關(guān)信息,保存相關(guān)的變量中,接著便移除這個集合的對象,然后繼續(xù)在集合中對剩下的對象的數(shù)據(jù)進(jìn)行比較,一直到達(dá)到獲獎的人數(shù),也就是每找到對象,便減小集合的大小,從而保證人不會重復(fù),信息也不會相同。4、如何避免每次需要用到某個人的相關(guān)的信息時,都要實例化個對象?解決方法:在學(xué)生類中,定義個方法,方法是得到其班級,姓名,學(xué)號,每次需要用到其相關(guān)的信息時,可以直接通過集合中的指定的對象調(diào)用該方法,從而不需每次都去實例化對象,再獲取其相關(guān)信息。第5章程序測試及分析運行程序,首先顯示程序主菜單,列出的功能選項有編輯信息、查詢信息、統(tǒng)計信息、獲獎信息等。在編輯信息中執(zhí)行輸入信息的功能。圖5-1所示,是實現(xiàn)輸入信息的界面。圖5-1輸入信息圖5-2所示,是刪除信息的功能界面。圖5-2刪除信息圖5-3所示,查詢成績與績點的功能界面。圖5-3查詢成績與績點圖5-4所示,修改成績的功能界面。圖5-4修改成績統(tǒng)計信息中顯示所有學(xué)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第45屆世界技能大賽全國選拔賽-汽車噴漆-試題
- 2024故宮科技課件:利用AR技術(shù)重現(xiàn)古宮殿風(fēng)貌
- 《中國建筑史》課件
- 《養(yǎng)成好習(xí)慣》教案創(chuàng)新
- 《鐵杵成針》創(chuàng)新教學(xué)策略
- 2HAZOP分析及風(fēng)險評估課件:2024年專業(yè)版
- 初三上冊化學(xué)第十單元酸和堿測試題及答案
- 產(chǎn)房護(hù)理質(zhì)量評價標(biāo)準(zhǔn)
- 2024年教育改革:《生理學(xué)》電子教案在混合式教學(xué)中的應(yīng)用
- 2024年環(huán)境科學(xué):《蜜蜂》課件
- 漢字演變500例(中)
- 地下車庫頂板加固專項施工方案
- 領(lǐng)導(dǎo)干部政治品德建設(shè)的價值意蘊PPT德才兼?zhèn)湟缘抡頌檎缘翽PT課件(帶內(nèi)容)
- 希臘神話-大力神-赫拉克勒斯
- 軍隊文職招聘(數(shù)學(xué)2+物理)近年考試真題題庫(含真題、典型題匯總)
- 結(jié)構(gòu)加固改造施工方案
- 《診斷學(xué)》心臟聽診
- 咽鼓管異常開放課件
- 部編版高中語文必修下冊整本書閱讀《紅樓夢》課件
- GB/T 4358-1995重要用途碳素彈簧鋼絲
- GB/T 31422-2015個體防護(hù)裝備護(hù)聽器的通用技術(shù)條件
評論
0/150
提交評論