版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PAGEPAGE11《JAVA程序設(shè)計(jì)課程設(shè)計(jì)》報(bào)告書學(xué)生考勤系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)目 錄摘要 3一、前言 3二、設(shè)計(jì)分析 3三、實(shí)現(xiàn)方法 4四、調(diào)試問題,調(diào)試記錄及解決 4五、系統(tǒng)的使用說明書 5六、結(jié)論 5致謝 5附錄 6學(xué)生考勤系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)摘 要:我這次的課程設(shè)計(jì)是學(xué)生考勤系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。具有如下功能:1、根據(jù)教師提供的excel考勤文件夾,統(tǒng)計(jì)學(xué)生出勤次數(shù),缺勤次數(shù),出勤分?jǐn)?shù)(設(shè)考勤次數(shù)為N次,滿勤為100分,缺勤1次扣總分的1/N),并按分?jǐn)?shù)排序。2、統(tǒng)計(jì)結(jié)果在屏幕上顯示出來,并保存到文本文件.txt之中。為了完成上述功能,我采用了java語言,用一個(gè)Student類數(shù)組專門存儲(chǔ)學(xué)生的每個(gè)學(xué)生的出勤信息,包括姓名,出勤次數(shù),出勤分?jǐn)?shù)。具體使用了JFrame,JButton等組件。最終我成功的完成了具有以上功能的一個(gè)小系統(tǒng)。該系統(tǒng)具有了一個(gè)較為簡(jiǎn)單的界面。用??傊@次課程設(shè)計(jì)讓我受益頗豐。關(guān)鍵詞:課程設(shè)計(jì);功能;系統(tǒng);函數(shù);圖形界面;一、前言本次課程設(shè)計(jì)我選的是學(xué)生考勤系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)。剛開始看到這個(gè)題我大意的認(rèn)為這個(gè)題很簡(jiǎn)單,用一些文件操作就可以完成。但動(dòng)筆寫后才發(fā)現(xiàn)也不是那么簡(jiǎn)單。使得我只能小心翼翼的去寫去學(xué)??傊谶@次課程設(shè)計(jì)中,與其說我是在寫這個(gè)系統(tǒng)不如說我是在學(xué)著寫這個(gè)系統(tǒng)。二、設(shè)計(jì)分析我拿到的這個(gè)課題從名稱上就可以看出來是一個(gè)統(tǒng)計(jì)出勤次數(shù)的系統(tǒng),它的要求如下:具有如下功能:1、根據(jù)教師提供的excel考勤文件夾,統(tǒng)計(jì)學(xué)生出勤次數(shù),缺勤次數(shù),出勤分?jǐn)?shù)(N10011/N),2、統(tǒng)計(jì)結(jié)果在屏幕上顯示出來,并保存到文本文件.txt計(jì)的成功。三、實(shí)現(xiàn)方法javaMyEclipse我設(shè)計(jì)了以下類:StudentAttendStatistics//繼承JFrame并實(shí)現(xiàn)相關(guān)功Student //存儲(chǔ)每位同學(xué)的信息MyCompare //Arraysjava.util.ComparatorStudentAttendStatistics對(duì)數(shù)據(jù)進(jìn)行處理得到分?jǐn)?shù)、然后按照分?jǐn)?shù)排序、最后顯示統(tǒng)計(jì)后的結(jié)果并將結(jié)果保存txt首先對(duì)于數(shù)據(jù)的處理,對(duì)于一個(gè)信息的多元素問題我采用類數(shù)組存儲(chǔ)來解決。并1000正常數(shù)據(jù)每一行都是三個(gè)部分,于是我采用分割一行一行的數(shù)據(jù),并分辨該行信息是否具有完整的三部分來判斷該信息是否為有效信息,并將有效數(shù)據(jù)的學(xué)生姓名賦值給txtJFileChooserArrays.sort(),并實(shí)現(xiàn)了java.util.ComparatorJFramejava.awt.Color類,對(duì)顯示面板的背景顏色以及字體顏色進(jìn)行設(shè)計(jì),是界面更加美觀。四、調(diào)試問題,調(diào)試記錄及解決JTextAreaJTextAreaJScrollPaneboundsJScrollPane即可。JFileChooserJFileChooser.FILES_AND_DIRECTORIES就可以實(shí)現(xiàn)同時(shí)可以選定文件夾和文件。五、系統(tǒng)的使用說明書功能該系統(tǒng)是針對(duì)老師提供的考勤文件存放的文件夾來進(jìn)行統(tǒng)計(jì)。具有如下功能:1)根據(jù)教師提供的excel考勤文件夾,統(tǒng)計(jì)學(xué)生出勤次數(shù),缺勤次數(shù),出勤分?jǐn)?shù)(N10011/N),2)統(tǒng)計(jì)結(jié)果在屏幕上顯示出來,并保存到文本文件.txt使用方法:?jiǎn)?dòng)系統(tǒng)點(diǎn)第一個(gè)瀏覽選定考勤情況文件的文件夾..txt可以重新統(tǒng)計(jì)或者點(diǎn)退出退出系統(tǒng)。六、結(jié)論完成了這個(gè)課題設(shè)計(jì),同時(shí)我感覺自己的系統(tǒng)設(shè)計(jì)道路才剛剛起步。前方還有更多的任務(wù)等著我去完成。系統(tǒng)設(shè)計(jì)對(duì)我來說還是比較陌生的,在未來的日子里我一定會(huì)一點(diǎn)點(diǎn)的進(jìn)步。該系統(tǒng)現(xiàn)在時(shí)能完成老師對(duì)考勤情況統(tǒng)計(jì)的要求。而經(jīng)過修改后就能完成更多的統(tǒng)計(jì)任務(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)計(jì)系統(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("請(qǐng)輸入你要統(tǒng)計(jì)文件所在的文件夾");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);//彈出一個(gè)"OpenFile"文件選擇器對(duì)話框。if(resJFileChooser.APPROVE_OPTION){//(yes、ok)后返回該值。dir=newFile(fileChooser.getSelectedFile().getPath());//徑名轉(zhuǎn)換為一個(gè)路徑名字符串。stu=newStudent[1000];Stringstr[];str=dir.list();//返回由此抽象路徑名所表示的目錄中的文件和目錄的名稱所組成字符串?dāng)?shù)組。N=str.length;//需要統(tǒng)計(jì)的文件的個(gè)數(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()){//判斷此流是否已準(zhǔn)備好被讀取。如果緩沖區(qū)不為空,或者基礎(chǔ)字符流已準(zhǔn)備就緒,則緩沖的字符流準(zhǔn)備就緒。line=br.readLine();//讀取一個(gè)文本行。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)計(jì)");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)計(jì)情況.txt");PrintWriterpw=newPrintWriter(newBufferedWriter(newFileWriter(save)));//向文本輸出流打印對(duì)象的格式化表示形式。java.text.DecimalFormatdf=newjava.text.DecimalFormat("0.00");pw.println("考勤統(tǒng)計(jì)情況:");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出勤分?jǐn)?shù):"+df.format(stu[i].score)+"\n");pw.println("姓名:"+stu[i].Sname+"\t出勤次數(shù):"+stu[i].Time+"\t缺勤次數(shù):"+(N-stu[i].Time)+"\t出勤分?jǐn)?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)計(jì)結(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 劇作家解聘合同證明
- 消防設(shè)備租賃協(xié)議模板
- 2024年項(xiàng)目評(píng)估與審計(jì)協(xié)議3篇
- 橋梁涂料施工合同
- 2025版綠色生態(tài)住宅區(qū)規(guī)劃設(shè)計(jì)合同3篇
- 市場(chǎng)營(yíng)銷策略組織管理辦法
- 玩具行業(yè)售后服務(wù)管理策略
- 2025版礦山土方運(yùn)輸及環(huán)保處理一體化合同3篇
- 2025版旅游度假合同管理規(guī)范建議合同3篇
- 2024年戶外拓展食堂租賃合同含野外生存技能培訓(xùn)3篇
- 餐館食材訂購(gòu)合同
- 小學(xué)高學(xué)段學(xué)生課堂消極沉默現(xiàn)象及應(yīng)對(duì)的研究
- 康復(fù)科發(fā)展規(guī)劃方案(2篇)
- 精神病院感染管理
- 2024河北工業(yè)職業(yè)技術(shù)大學(xué)教師招聘考試筆試試題
- 地震應(yīng)急演練實(shí)施方案村委會(huì)(2篇)
- 2024年合肥市梅山飯店有限公司招聘筆試沖刺題(帶答案解析)
- 基礎(chǔ)有機(jī)化學(xué)實(shí)驗(yàn)智慧樹知到期末考試答案章節(jié)答案2024年浙江大學(xué)
- 幼兒園進(jìn)餐案例及分析總結(jié)
- 2024年中考英語第一次模擬考試(南京卷)
- 2023-2024學(xué)年江西省南昌二十八中教育集團(tuán)八年級(jí)(上)期末英語試卷
評(píng)論
0/150
提交評(píng)論