![java課程設(shè)計報告-學(xué)生考勤系統(tǒng)的設(shè)計和實現(xiàn)_第1頁](http://file4.renrendoc.com/view/9ca1915c75b3917e1dd3c2b8cdf01fb4/9ca1915c75b3917e1dd3c2b8cdf01fb41.gif)
![java課程設(shè)計報告-學(xué)生考勤系統(tǒng)的設(shè)計和實現(xiàn)_第2頁](http://file4.renrendoc.com/view/9ca1915c75b3917e1dd3c2b8cdf01fb4/9ca1915c75b3917e1dd3c2b8cdf01fb42.gif)
![java課程設(shè)計報告-學(xué)生考勤系統(tǒng)的設(shè)計和實現(xiàn)_第3頁](http://file4.renrendoc.com/view/9ca1915c75b3917e1dd3c2b8cdf01fb4/9ca1915c75b3917e1dd3c2b8cdf01fb43.gif)
![java課程設(shè)計報告-學(xué)生考勤系統(tǒng)的設(shè)計和實現(xiàn)_第4頁](http://file4.renrendoc.com/view/9ca1915c75b3917e1dd3c2b8cdf01fb4/9ca1915c75b3917e1dd3c2b8cdf01fb44.gif)
![java課程設(shè)計報告-學(xué)生考勤系統(tǒng)的設(shè)計和實現(xiàn)_第5頁](http://file4.renrendoc.com/view/9ca1915c75b3917e1dd3c2b8cdf01fb4/9ca1915c75b3917e1dd3c2b8cdf01fb45.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGEPAGE11《JAVA程序設(shè)計課程設(shè)計》報告書學(xué)生考勤系統(tǒng)的設(shè)計和實現(xiàn)目 錄摘要 3一、前言 3二、設(shè)計分析 3三、實現(xiàn)方法 4四、調(diào)試問題,調(diào)試記錄及解決 4五、系統(tǒng)的使用說明書 5六、結(jié)論 5致謝 5附錄 6學(xué)生考勤系統(tǒng)的設(shè)計和實現(xiàn)摘 要:我這次的課程設(shè)計是學(xué)生考勤系統(tǒng)的設(shè)計和實現(xiàn)。具有如下功能:1、根據(jù)教師提供的excel考勤文件夾,統(tǒng)計學(xué)生出勤次數(shù),缺勤次數(shù),出勤分數(shù)(設(shè)考勤次數(shù)為N次,滿勤為100分,缺勤1次扣總分的1/N),并按分數(shù)排序。2、統(tǒng)計結(jié)果在屏幕上顯示出來,并保存到文本文件.txt之中。為了完成上述功能,我采用了java語言,用一個Student類數(shù)組專門存儲學(xué)生的每個學(xué)生的出勤信息,包括姓名,出勤次數(shù),出勤分數(shù)。具體使用了JFrame,JButton等組件。最終我成功的完成了具有以上功能的一個小系統(tǒng)。該系統(tǒng)具有了一個較為簡單的界面。用??傊@次課程設(shè)計讓我受益頗豐。關(guān)鍵詞:課程設(shè)計;功能;系統(tǒng);函數(shù);圖形界面;一、前言本次課程設(shè)計我選的是學(xué)生考勤系統(tǒng)的設(shè)計和實現(xiàn)。剛開始看到這個題我大意的認為這個題很簡單,用一些文件操作就可以完成。但動筆寫后才發(fā)現(xiàn)也不是那么簡單。使得我只能小心翼翼的去寫去學(xué)。總之在這次課程設(shè)計中,與其說我是在寫這個系統(tǒng)不如說我是在學(xué)著寫這個系統(tǒng)。二、設(shè)計分析我拿到的這個課題從名稱上就可以看出來是一個統(tǒng)計出勤次數(shù)的系統(tǒng),它的要求如下:具有如下功能:1、根據(jù)教師提供的excel考勤文件夾,統(tǒng)計學(xué)生出勤次數(shù),缺勤次數(shù),出勤分數(shù)(N10011/N),2、統(tǒng)計結(jié)果在屏幕上顯示出來,并保存到文本文件.txt計的成功。三、實現(xiàn)方法javaMyEclipse我設(shè)計了以下類:StudentAttendStatistics//繼承JFrame并實現(xiàn)相關(guān)功Student //存儲每位同學(xué)的信息MyCompare //Arraysjava.util.ComparatorStudentAttendStatistics對數(shù)據(jù)進行處理得到分數(shù)、然后按照分數(shù)排序、最后顯示統(tǒng)計后的結(jié)果并將結(jié)果保存txt首先對于數(shù)據(jù)的處理,對于一個信息的多元素問題我采用類數(shù)組存儲來解決。并1000正常數(shù)據(jù)每一行都是三個部分,于是我采用分割一行一行的數(shù)據(jù),并分辨該行信息是否具有完整的三部分來判斷該信息是否為有效信息,并將有效數(shù)據(jù)的學(xué)生姓名賦值給txtJFileChooserArrays.sort(),并實現(xiàn)了java.util.ComparatorJFramejava.awt.Color類,對顯示面板的背景顏色以及字體顏色進行設(shè)計,是界面更加美觀。四、調(diào)試問題,調(diào)試記錄及解決JTextAreaJTextAreaJScrollPaneboundsJScrollPane即可。JFileChooserJFileChooser.FILES_AND_DIRECTORIES就可以實現(xiàn)同時可以選定文件夾和文件。五、系統(tǒng)的使用說明書功能該系統(tǒng)是針對老師提供的考勤文件存放的文件夾來進行統(tǒng)計。具有如下功能:1)根據(jù)教師提供的excel考勤文件夾,統(tǒng)計學(xué)生出勤次數(shù),缺勤次數(shù),出勤分數(shù)(N10011/N),2)統(tǒng)計結(jié)果在屏幕上顯示出來,并保存到文本文件.txt使用方法:啟動系統(tǒng)點第一個瀏覽選定考勤情況文件的文件夾..txt可以重新統(tǒng)計或者點退出退出系統(tǒng)。六、結(jié)論完成了這個課題設(shè)計,同時我感覺自己的系統(tǒng)設(shè)計道路才剛剛起步。前方還有更多的任務(wù)等著我去完成。系統(tǒng)設(shè)計對我來說還是比較陌生的,在未來的日子里我一定會一點點的進步。該系統(tǒng)現(xiàn)在時能完成老師對考勤情況統(tǒng)計的要求。而經(jīng)過修改后就能完成更多的統(tǒng)計任務(wù)。相信使用得當(dāng)能給我的學(xué)習(xí)生活帶來便利。附錄:系統(tǒng)源代碼classMycompareimplementsjava.util.Comparator{publicintcompare(Objecto1,Objecto2){Studenta1=(Student)o1;Studenta2=(Student)o2;returna1.score<a2.score?1:-1;}}publicclassStringSname;intTime;doublepublicStudent(StringSname=name;Time=1;score=100;}}importjava.awt.Color;importjava.awt.event.*;importjava.io.*;importjava.util.*;importjavax.swing.*;publicclassStudentAttendStatisticsextendsprivateJTextAreajta;privatestaticintstucount=0;privateJFileChooserprivateFiledir,save;privateStudent[]stu;privateintN;publicStudentAttendStatistics()throwsException{this.setTitle("考勤情況統(tǒng)計系統(tǒng)");fileChooser=newJFileChooser();fileChooser.setCurrentDirectory(newFile("."));//設(shè)置當(dāng)前目錄fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//設(shè)置JFileChooser,以允許用戶只選擇文件、只選擇目錄,或者可選擇文件和目錄。this.setBounds(400,100,500,650);this.setLayout(null);//設(shè)置布局JLabeljla=newJLabel("請輸入你要統(tǒng)計文件所在的文件夾");jla.setBounds(0,0,200,20);this.add(jla);JButtonjb=newJButton("瀏覽");jb.setBounds(200,0,150,20);jb.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){try{intres=fileChooser.showOpenDialog(null);//彈出一個"OpenFile"文件選擇器對話框。if(resJFileChooser.APPROVE_OPTION){//(yes、ok)后返回該值。dir=newFile(fileChooser.getSelectedFile().getPath());//徑名轉(zhuǎn)換為一個路徑名字符串。stu=newStudent[1000];Stringstr[];str=dir.list();//返回由此抽象路徑名所表示的目錄中的文件和目錄的名稱所組成字符串?dāng)?shù)組。N=str.length;//需要統(tǒng)計的文件的個數(shù)//System.out.println(N);for(inti=0;i<str.length;++i){FileF=newFile(dir,str[i]);//System.out.println(F.toString());BufferedReaderbr=newBufferedReader(newFileReader(F));
Stringline;while(br.ready()){//判斷此流是否已準備好被讀取。如果緩沖區(qū)不為空,或者基礎(chǔ)字符流已準備就緒,則緩沖的字符流準備就緒。line=br.readLine();//讀取一個文本行。StringTokenizerrecord=newStringTokenizer(line,",");//字符串分詞器if(record.countTokens()==3){//選擇有效記錄record.nextToken();Stringname=record.nextToken();intj;for(j=0;j<stucount;++j){if(stu[j].Sname.equals(name)){stu[j].Time++;break;}}if(j==stucount){stu[stucount++]=newStudent(name);}//System.out.println(name);}}br.close();}}}catch(Exceptione){e.printStackTrace();}}});this.add(jb);JLabeljla1=newJLabel("保存路徑設(shè)定");jla1.setBounds(0,25,200,20);this.add(jla1);JButtonjb1=newJButton("瀏覽");jb1.setBounds(200,25,150,20);jb1.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){try{intres=fileChooser.showSaveDialog(null);if(res==fileChooser.APPROVE_OPTION){Stringpath=fileChooser.getSelectedFile().getPath();if(path.indexOf(".txt")==-1){path+=".txt";}save=newFile(path);}}catch(Exceptione){e.printStackTrace();}}});this.add(jb1);JButtonjb2=newJButton("統(tǒng)計");jb2.setBounds(400,0,100,20);jb2.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){try{for(inti=0;i<stucount;++i){stu[i].score=((stu[i].Time)/(double)N)*100;}Arrays.sort(stu,0,stucount,newMycompare());//Filesavepath=newFile(save,"考勤統(tǒng)計情況.txt");PrintWriterpw=newPrintWriter(newBufferedWriter(newFileWriter(save)));//向文本輸出流打印對象的格式化表示形式。java.text.DecimalFormatdf=newjava.text.DecimalFormat("0.00");pw.println("考勤統(tǒng)計情況:");for(inti=0;i<stucount;++i){//System.out.println("\t"+stu[i].Sname+"\t"+stu[i].Time+"\t"+(N-stu[i].Time)+"\t數(shù):"+df.format(stu[i].score));jta.append("姓名:"+stu[i].Sname+"\t出勤次數(shù):"+stu[i].Time+"\t缺勤次數(shù):"+(N-stu[i].Time)+"\t出勤分數(shù):"+df.format(stu[i].score)+"\n");pw.println("姓名:"+stu[i].Sname+"\t出勤次數(shù):"+stu[i].Time+"\t缺勤次數(shù):"+(N-stu[i].Time)+"\t出勤分數(shù):"+df.format(stu[i].score));}pw.close();}catch(Exceptione){e.printStackTrace();}}});this.add(jb2);JButtonjb3=newJButton("退出");jb3.setBounds(400,25,100,20);jb3.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventevent){System.exit(0);}});this.add(jb3);JLabelRes=newJLabel("考勤情況統(tǒng)計結(jié)果:");Res.setBounds(0,80,200,20);this.add(Res);jta=newJTextArea("");jta.setEditable(false);jta.setBac
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球桌面排版系統(tǒng)行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球醫(yī)療設(shè)備安全解決方案行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國一次性甲狀腺穿刺器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球亞歷山大變石激光器行業(yè)調(diào)研及趨勢分析報告
- 2025廣州市農(nóng)村集體經(jīng)濟承包合同管理規(guī)定
- 勞務(wù)派遣合同協(xié)議模板范本
- 2025地區(qū)展柜、物料定作布展合同
- 個人連帶擔(dān)保合同
- 房屋場地租賃合同
- 砌筑勞務(wù)分包合同范本
- 《中國古代寓言》導(dǎo)讀(課件)2023-2024學(xué)年統(tǒng)編版語文三年級下冊
- 五年級上冊計算題大全1000題帶答案
- 工程建設(shè)行業(yè)標準內(nèi)置保溫現(xiàn)澆混凝土復(fù)合剪力墻技術(shù)規(guī)程
- 液壓動力元件-柱塞泵課件講解
- 人教版五年級上冊數(shù)學(xué)脫式計算100題及答案
- 屋面細石混凝土保護層施工方案及方法
- 2024年1月山西省高三年級適應(yīng)性調(diào)研測試(一模)理科綜合試卷(含答案)
- 110kv各類型變壓器的計算單
- 5A+Chapter+1+Changes+at+home+課件(新思維小學(xué)英語)
- 安徽省2023年中考數(shù)學(xué)試卷(附答案)
- 護工(陪護)培訓(xùn)教材(完整版)資料
評論
0/150
提交評論