Java課程設(shè)計(jì)-獎(jiǎng)學(xué)金評(píng)定_第1頁(yè)
Java課程設(shè)計(jì)-獎(jiǎng)學(xué)金評(píng)定_第2頁(yè)
Java課程設(shè)計(jì)-獎(jiǎng)學(xué)金評(píng)定_第3頁(yè)
Java課程設(shè)計(jì)-獎(jiǎng)學(xué)金評(píng)定_第4頁(yè)
Java課程設(shè)計(jì)-獎(jiǎng)學(xué)金評(píng)定_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第1章課題概述本次java課程設(shè)計(jì)的題目是以本校學(xué)生手冊(cè)中獎(jiǎng)學(xué)金的評(píng)定辦法為背景,設(shè)計(jì)的一個(gè)學(xué)生獎(jiǎng)學(xué)金評(píng)定系統(tǒng)。1.1課題的目的獎(jiǎng)學(xué)金管理工作是高校學(xué)生管理工作的重要組成部分。高校為鼓勵(lì)學(xué)生在校期間刻苦學(xué)習(xí),設(shè)立了多種獎(jiǎng)學(xué)金,同時(shí)為了做好獎(jiǎng)學(xué)金的評(píng)審與管理工作,投入了大量的人力、物力和財(cái)力。獎(jiǎng)學(xué)金管理工作特別是評(píng)審工作具有涉及面廣、工作量大、發(fā)生時(shí)間相對(duì)集中的特點(diǎn)。高校的獎(jiǎng)學(xué)金評(píng)定工作每學(xué)年都要開(kāi)展,傳統(tǒng)的評(píng)審工作主要是以手工方式進(jìn)行的,存在著效率地下、容易出錯(cuò)等弊端。因此,實(shí)現(xiàn)獎(jiǎng)學(xué)金評(píng)定管理的信息化是十分必要的。1.2課題的要求1.2.1系統(tǒng)的性能需求由于對(duì)系統(tǒng)中學(xué)生的基本信息,學(xué)習(xí)成績(jī)等,不允許隨意增加、修改和刪除,因此在系統(tǒng)設(shè)計(jì)中主要是保證系統(tǒng)的可行性,并在保證可行性的前提下滿足數(shù)據(jù)錄入的準(zhǔn)確性和高效性。1、準(zhǔn)確性:為確保數(shù)據(jù)錄入的準(zhǔn)確性,系統(tǒng)提出了采取雙工錄入比較法和多次校對(duì)來(lái)確保錄入數(shù)據(jù)正確性的策略。2、高效性:系統(tǒng)設(shè)計(jì)要能高效的完成對(duì)學(xué)生基本信息和學(xué)科成績(jī)進(jìn)行錄入。3、可行性:對(duì)學(xué)生成績(jī)的錄入與管理系統(tǒng)要能夠及時(shí)對(duì)重要的數(shù)據(jù)進(jìn)行備份,當(dāng)數(shù)據(jù)遭到災(zāi)難性的毀壞后能及時(shí)重建和恢復(fù)。對(duì)學(xué)生成績(jī)和信息的錄入與管理系統(tǒng)是通過(guò)信息的正確錄入,在系統(tǒng)內(nèi)進(jìn)行分析處理輸出新的信息并利用反饋信息對(duì)相關(guān)事物進(jìn)行有效控制的具有一定特殊功能的人機(jī)交互系統(tǒng)。1.2.2系統(tǒng)的功能需求設(shè)計(jì)一個(gè)獎(jiǎng)學(xué)金評(píng)定系統(tǒng),該系統(tǒng)要能夠進(jìn)行信息和成績(jī)的錄入、修改、刪除、查詢(xún)。具體功能需求如下:1、由于大多數(shù)系統(tǒng)操作人員的都是非計(jì)算機(jī)專(zhuān)業(yè),要求系統(tǒng)要有良好的人機(jī)界面;2、能對(duì)學(xué)生成績(jī)進(jìn)行準(zhǔn)確、高效的錄入、校對(duì)和分析,并支持多條件查詢(xún)與修改;3、能夠及時(shí)地對(duì)重要數(shù)據(jù)進(jìn)行備份和恢復(fù),方便的導(dǎo)出數(shù)據(jù)文件;4、數(shù)據(jù)操作方便簡(jiǎn)單,穩(wěn)定性好,數(shù)據(jù)計(jì)算及成績(jī)分析要能夠自動(dòng)完成。第2章概要設(shè)計(jì)2.1整個(gè)程序的模塊結(jié)構(gòu)及流程根據(jù)課題要求,獎(jiǎng)學(xué)金評(píng)定系統(tǒng)由編輯信息、查詢(xún)信息、統(tǒng)計(jì)信息、獲獎(jiǎng)信息四大模塊組成。程序各功能模塊的劃分,及主要流程如圖2-1所示。圖2-1整個(gè)程序各功能模塊間的流程2.2各個(gè)功能模塊的描述2.2.1編輯信息輸入學(xué)生信息并以文件Score.dat保存,具有輸入新增學(xué)生基本信息,學(xué)生學(xué)科成績(jī),以及成績(jī)的添加、刪除和修改的功能。2.4.2查詢(xún)信息可以按學(xué)號(hào)或姓名查詢(xún)某學(xué)生的所有成績(jī),以及按學(xué)號(hào)或姓名修改指定學(xué)生的相關(guān)成績(jī)。2.4.3統(tǒng)計(jì)信息(1)具有能夠讀取Score.dat文件并顯示所有學(xué)生的所有成績(jī)的功能;(2)具有顯示輸出60分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息的功能。2.4.4獲獎(jiǎng)信息(1)具有按各門(mén)課程的學(xué)分和分?jǐn)?shù)計(jì)算所有同學(xué)的績(jī)點(diǎn),并根據(jù)績(jī)點(diǎn)排名得出各等級(jí)獎(jiǎng)學(xué)金的名單的功能;(2)具有將各等級(jí)獎(jiǎng)學(xué)金獲得者的名單寫(xiě)入文件Bonus.dat的功能。第3章程序功能的實(shí)現(xiàn)3.1主要功能模塊的實(shí)現(xiàn)3.1.1編輯信息的實(shí)現(xiàn)此模塊具有三個(gè)功能,能夠新增學(xué)生信息,刪除學(xué)生信息,修改學(xué)生信息,新增學(xué)生,通過(guò)自己的輸入,把相關(guān)的數(shù)據(jù)寫(xiě)入指定的文件中,需要用到對(duì)流的操作,在寫(xiě)入文件前,需要先保存到自己定義的集合里,再把集合的數(shù)據(jù)全部寫(xiě)入文件進(jìn)行保存,修改信息,刪除信息也是如此。新增學(xué)生信息的代碼實(shí)現(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查詢(xún)信息的實(shí)現(xiàn)查詢(xún)信息中有兩大功能,一個(gè)是根據(jù)指定的學(xué)號(hào)和姓名,查詢(xún)其相關(guān)的各項(xiàng)成績(jī)以及及其績(jī)點(diǎn)。這是自己輸入的學(xué)號(hào)和姓名,與集合中的對(duì)應(yīng)的數(shù)據(jù)進(jìn)行對(duì)比,當(dāng)發(fā)現(xiàn)一致時(shí),就輸出其成績(jī)與績(jī)點(diǎn)。另一個(gè)是根據(jù)自己輸入的學(xué)號(hào)姓名,對(duì)其相關(guān)的成績(jī)進(jìn)行修改,如果一項(xiàng)成績(jī)需要修改,就在集合中修改指定的數(shù)據(jù),其他不改變,結(jié)束后,在把集合中的數(shù)據(jù)全部寫(xiě)入到文件中。查詢(xún)成績(jī)與績(jī)點(diǎn)的代碼實(shí)現(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語(yǔ)言:"+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語(yǔ)言:"+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); } } } }修改個(gè)人成績(jī)的代碼實(shí)現(xiàn)如下:publicvoidactionPerformed(ActionEvente){ ArrayList<Student>list=InternalFrame.list; Stringm="確定要修改該學(xué)生成績(jī)嗎?"; 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)計(jì)信息的實(shí)現(xiàn)統(tǒng)計(jì)信息之中具有顯示所有學(xué)生成績(jī),以及各項(xiàng)科目各分?jǐn)?shù)段的人的相關(guān)信息。顯示所有學(xué)生的成績(jī)時(shí),利用集合,把集合中的各個(gè)學(xué)生的成績(jī)輸出來(lái),同樣在統(tǒng)計(jì)各分?jǐn)?shù)段的人的相關(guān)信息也是從集合中的對(duì)象的屬性中獲取。顯示所有學(xué)生成績(jī)的代碼實(shí)現(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[]={"班級(jí)","學(xué)號(hào)","姓名","C語(yǔ)言","高數(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獲獎(jiǎng)信息的實(shí)現(xiàn)獲獎(jiǎng)信息中主要是得到各等獎(jiǎng)的名單,通過(guò)比較每個(gè)學(xué)生的績(jī)點(diǎn),進(jìn)行排名,根據(jù)人數(shù)的比例,計(jì)算各等獎(jiǎng)的人數(shù),在根據(jù)排名確定人選,這些獲獎(jiǎng)人的信息依然是在集合中得到的。(1)獲獎(jiǎng)名單的主體代碼實(shí)現(xiàn)如下:publicAwardInternalFrame(Stringtitle){ super(); setTitle(title); setBounds(50,20,650,500); setResizable(true); setClosable(true); setIconifiable(true); setMaximizable(true); jl1=newJLabel("一等獎(jiǎng):"); jl2=newJLabel("二等獎(jiǎng):"); jl3=newJLabel("三等獎(jiǎng):"); 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("一等獎(jiǎng):"+jtagr1); bw.newLine(); bw.write("二等獎(jiǎng):"+jtagr2); bw.newLine(); bw.write("三等獎(jiǎng):"+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èn)題的解決雖然在程序的編寫(xiě)過(guò)程中遇到了很多問(wèn)題,但是通過(guò)上網(wǎng)查閱相關(guān)資料,與其它同學(xué)討論,詢(xún)問(wèn)指導(dǎo)老師等方式,最終都一一解決了,程序?qū)崿F(xiàn)及調(diào)試過(guò)程中遇到的主要問(wèn)題及解決方法如下。1、如何使定義的集合保持唯一性?解決方法:對(duì)于集合需要用靜態(tài)進(jìn)行定義,使之成為類(lèi)變量,如果是成員變量,每次實(shí)例化個(gè)對(duì)象,就會(huì)產(chǎn)生相應(yīng)的成員變量,無(wú)法保證其的唯一性,調(diào)用其中的數(shù)據(jù)會(huì)發(fā)生異常,所以必須使之成為靜態(tài),每次要用到時(shí),通過(guò)類(lèi)點(diǎn)名,得到整個(gè)集合,保證唯一性。2、當(dāng)修改某個(gè)學(xué)生的相關(guān)信息時(shí),包括成績(jī)時(shí),在獲取獎(jiǎng)學(xué)金名單時(shí),被修改的學(xué)生績(jī)點(diǎn)沒(méi)有得到改變,如何避免影響獲獎(jiǎng)名單的準(zhǔn)確性?解決方法:在學(xué)生類(lèi)中,定義一個(gè)方法,這個(gè)方法是得到其所有成績(jī)的績(jī)點(diǎn),在修改的方法中,最后調(diào)用學(xué)生類(lèi)的得到績(jī)點(diǎn)的方法,保證每次修改學(xué)生成績(jī)時(shí),績(jī)點(diǎn)也會(huì)發(fā)生相應(yīng)的變化,從而保證獲取名單的準(zhǔn)確性。3、在根據(jù)績(jī)點(diǎn)排名時(shí),同時(shí)出現(xiàn)了兩個(gè)相同的績(jī)點(diǎn),而在同一個(gè)等級(jí)的獎(jiǎng)學(xué)金中恰好兩個(gè)以上的名額,如何避免在同一個(gè)等級(jí)的獎(jiǎng)學(xué)金的名單上輸出相同的兩個(gè)人?解決方法:在排名前可以先克隆一個(gè)原來(lái)裝有所有數(shù)據(jù)的集合,然后對(duì)這個(gè)集合進(jìn)行操作。需要對(duì)這個(gè)集合進(jìn)行遍歷,一旦找到在集合中對(duì)象的數(shù)據(jù)中與比較的數(shù)據(jù)一致時(shí),立刻停止循環(huán),得到其相關(guān)信息,保存相關(guān)的變量中,接著便移除這個(gè)集合的對(duì)象,然后繼續(xù)在集合中對(duì)剩下的對(duì)象的數(shù)據(jù)進(jìn)行比較,一直到達(dá)到獲獎(jiǎng)的人數(shù),也就是每找到對(duì)象,便減小集合的大小,從而保證人不會(huì)重復(fù),信息也不會(huì)相同。4、如何避免每次需要用到某個(gè)人的相關(guān)的信息時(shí),都要實(shí)例化個(gè)對(duì)象?解決方法:在學(xué)生類(lèi)中,定義個(gè)方法,方法是得到其班級(jí),姓名,學(xué)號(hào),每次需要用到其相關(guān)的信息時(shí),可以直接通過(guò)集合中的指定的對(duì)象調(diào)用該方法,從而不需每次都去實(shí)例化對(duì)象,再獲取其相關(guān)信息。第5章程序測(cè)試及分析運(yùn)行程序,首先顯示程序主菜單,列出的功能選項(xiàng)有編輯信息、查詢(xún)信息、統(tǒng)計(jì)信息、獲獎(jiǎng)信息等。在編輯信息中執(zhí)行輸入信息的功能。圖5-1所示,是實(shí)現(xiàn)輸入信息的界面。圖5-1輸入信息圖5-2所示,是刪除信息的功能界面。圖5-2刪除信息圖5-3所示,查詢(xún)成績(jī)與績(jī)點(diǎn)的功能界面。圖5-3查詢(xún)成績(jī)與績(jī)點(diǎn)圖5-4所示,修改成績(jī)的功能界面。圖5-4修改成績(jī)統(tǒng)計(jì)信息中顯示所有學(xué)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論