考勤系統設計.doc_第1頁
考勤系統設計.doc_第2頁
考勤系統設計.doc_第3頁
考勤系統設計.doc_第4頁
考勤系統設計.doc_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

湖北理工學院大型軟件項目實訓實訓報告學 號: 201340420224編 號: B04731017 實訓報告教 學 院計算機課程名稱大型軟件項目實訓專 業網絡工程班 級二班姓 名何娟2016年9月20日 17一.實訓內容 1.實訓目的與要求1.1、目的: (1)要求學生達到熟練掌握C+語言的基本知識和技能; (2)基本掌握面向對象程序設計的基本思路和方法; (3)能夠利用所學的基本知識和技能,解決簡單的面向對象程序設計問題。 1.2、基本要求: (1)要求利用面向對象的方法以及C+的編程思想來完成系統的設計; (2)要求在設計的過程中,建立清晰的類層次; (3)在系統中至少要定義四個類,每個類中要有各自的屬性和方法; (4)在系統的設計中,至少要用到面向對象的一種機制。 1.3、創新要求: 在基本要求達到后,可進行創新設計,如根據查找結果進行修改的功能。2項目背景2.1對現有系統的分析 目前高校學生上課考勤管理都是以任課老師上課點名,記錄學生上課情況。對于請假需要通過向輔導員遞交請假條并獲得同意方能生效。這種模式在目前高校管理中暴露了不可避免的弊端: a)學生對自己整個學期的上課出勤情況沒有整體的統計信息 b)班主任及輔導員對本班學生整個學期的上課出勤情況不易查看;c)學生請假不方便,如:學生生病或有其他急事需請假,必須找輔導員批假條,而輔導員事情比較多不可能經常坐在辦公室里等著;d)在這種方式下,由于學生考勤信息需要多次登記、反復輸入,因而出錯率較高,效率也低下。e)各學院與學生考勤管理中心各自記錄所有學生的考勤情況,對于各考勤表,考勤管理員要反復的執行登記、核對、統計,稍不注意就出錯,對于錯誤的改正,更是麻煩。浪費人力并且效率低。f)數據不能共享,無法互相利用,互相參照,導致大量數據冗余。g)難避免考勤中的弄虛作假現象。在這種情況下,學生考勤管理中心只能一次又一次地擴大員工隊伍,期望借此提高效率。但是事實上,工作效率不但沒有改善,工資支出卻年年增高,增加了學校的經濟支出。 在此情況下,開發一個新的、高效的、更加靈活方便、能實時記錄學生考勤信息的學生考勤管理系統迫在眉睫。 2.2處理流程和數據流程 人工的考勤系統主要包括請假系統,考勤系統,管理中心,主要供學生,輔導員,任課老師,班主任所使用。如下為系統流程圖: 在請假系統中,學生想要請假需要向輔導員老師寫請假條并說明原因,獲得輔導員的同意才能請假成功,否則失敗。而學生的請假情況記錄在請假條的存根上,在向任課老師請假時也需自己或請同學向老師出示請假條并說明原因,由任課老師在學生名單上記錄為“請假”。輔導員、任課老師、學生只有通過查詢請假條的存根或考勤表才可知道請假情況。 2.3局限性 該系統會浪費很多的時間而且會很麻煩,當學生需要請假時必須找到輔導員寫請假條才行,另外課堂上由于是由任課老師通過點名的方式考勤所以會造成混亂不清更問題。因此,開發一個新的高校學生考勤管理系統迫在眉睫,同時,我們的系統也應運而生。3.功能需求這是一個記錄學生上課情況的一個考勤系統,方便記錄、查詢、統計學生考勤信息。學生考勤管理系統用于記錄學生的缺課情況,它包括:缺課日期、第幾節課、課程名稱、學生姓名、學號、缺課類型(遲到、早退、請假及曠課)。優化界面使學生使用更加便捷,在保證信息共享的同時又注重了信息的安全性而不被篡改。該系統除了用于學生課堂的考勤,還可用于學生出早操情況的考核,開會出勤情況的考核等。而且可以進一步開發,與教務處學生成績數據庫相連接,將考勤結果作為平時成績或期末成績及評優的參考。另外該系統還可作為請假系統代替傳統寫請假條請假的問題。在安全方面,登陸系統時,需驗證身份和密碼,只有通過驗證的身份才能進入系統進行相關的操作。系統間信息的傳遞也需要進行安全設置,以防止學生的考勤信息被惡意篡改。主要分為6大模塊,分為錄入學生的缺課記錄、修改某個學生的缺課記錄、查詢某個學生的缺課情況、統計曠課學生姓名及曠課節數、統計曠課課程及曠課人次和系統以菜單方式工作。 具體需求如下:考勤信息記錄了學生的缺課情況,它包括:缺課日期、第幾節課(連續用begin-end的形式表示)、課程名稱(課程名稱中不會出現空格)、學生姓名、缺課類型(遲到、早退、請假及曠課)。試設計考勤管理系統,使之能提供以下功能:1)錄入學生的缺課記錄:從鍵盤輸入數據(提示:為避免重復從鍵盤輸入數據,測試時可將數據存儲在文件中,利用輸入重定向功能讀入),輸入格式為:缺課日期 第幾節課 課程名稱學生姓名 缺課類型每行一條紀錄。例如:2016-04-29 2-4 C+面向對象程序設計 李強 遲到2009-04-28 2-4 高數 馬志 曠課2)修改某個學生的缺課記錄:可以對缺課紀錄的任意部分進行修改,然后顯示一下修改后的紀錄。3)查詢某個學生的缺課情況:查詢結果按照日期升序排序,同一天內按照所缺課程的時間升序排序。4)統計某段時間內(以天為單位),曠課學生姓名及曠課節數,查詢結果先按曠課節數降序排序,曠課節數相同的學生按姓名升序排序;5)統計某段時間內,有學生曠課的課程及曠課人次,按曠課人次由多到少排序,曠課人次相同的課程按課程名稱升序排序; 6)系統以菜單方式工作。(所謂菜單指用戶可以自由選擇所要執行的功能)學生可以通過以上功能錄入信息、修改信息、查詢信息、整理統計出所要了解的信息,除了要實現上述的基本功能之外,本系統還應該在細節上下工夫,使用戶使用方便,在使用的過程中保持一個愉快的心情。學生考勤管理系統有廣大的用戶群,這其中有老師、有教務處主任、有公司管理人員,也可以供給一般用戶使用。總之該系統可以滿足用戶需求,實現對其管理的人員的考勤工作。4、總體設計學生考勤管理系統包含五個大的功能,分別是:錄入學生缺課信息、修改學生缺課信息、查詢某個學生的缺課情況、統計某段時間內(以天為單位),曠課學生姓名及曠課節數和統計某段時間內,有學生曠課的課程及曠課人次。學生的缺課信息主要包含缺課日期,第幾節課、課程名稱,學生姓名,缺課類型。在錄入學生缺課信息時根據系統提示逐一輸入。每輸入完一條信息,系統會提示是否繼續輸入,用戶可以選擇繼續或返回主菜單。在修改學生缺課信息時,用戶首先輸入要修改的學生姓名,系統會檢索如果系統中有該學生的相關信息則系統首先會提示用戶修改該學生的那一部分信息,用戶可自行選擇。如果系統中沒有該學生的相關信息,則系統會給相關提示,用戶可以選擇繼續輸入要修改的學生姓名或選擇退出返回主菜單。在查詢學生缺課信息時,用戶先輸入要查詢的學生姓名,系統檢索判斷是否存在該學生的信息然后做出相應的提示。總之,用戶可以方便的在系統提示下進行使用。學生考勤管理系統中功能模塊圖:修改某學生的缺課信息查詢某學生的缺課信息統計某段時間內曠課學生姓名及曠課節數統計某段時間內,有學生曠課的課程及曠課人次錄入學生的缺課信息學生考勤管理系統錄入缺課學生的姓名、缺課日期、缺課節次、缺課課程名稱、缺課類型修改某學生的缺課日期、缺課節次、缺課課程名稱、缺課類型查詢某學生的缺課日期、缺課節次、缺課課程名稱、缺課類型按時間升序顯示曠課學生姓名及曠課節數按時間升序顯示有學生曠課的課程及曠課人次5、詳細設計我在我們小組中負責的是修改某學生缺課信息功能和統計學生曠課的課程及曠課人次等這兩大功能模塊。1、 修改某學生缺課信息功能的模塊圖修改某學生缺課信息功能修改某學生的缺課節次修改某學生的缺課日期修改某學生的缺課課程修改某學生的缺課類型 圖1 學生考勤管理系統修改學生缺課信息功能圖2、統計某段時間內,有學生曠課的課程及曠課人次功能模塊統計某段時間內,有學生曠課的課程及曠課人次統計某段時間內,有學生曠課的課程及曠課人次功能顯示某段時間內,有學生曠課的課程及曠課人次返回菜單 圖2 統計學生曠課的課程及曠課人次功能圖此系統不僅可以直接統計某段時間內的曠課課程及曠課人次,除此之外,還可以查看學生的曠課課程及曠課人次。 下面是部分代碼分析 /時間類class timepublic:time(int y = 0, int m = 0, int d = 0)year = y; month = m; day = d;time()protected:int year, month, day; 這是一個基類,用來記錄時間信息,記錄年份,月份以及時刻點,以供其它類來進行派生。/信息類class xinxi :public timepublic:xinxi() tiaoshu+; xinxi() tiaoshu-; void setname(char *n) strcpy_s(name, n); void settime(int y, int m, int d) year = y; month = m; day = d; void setqklx(char *qk) strcpy_s(queke, qk); void setjieci(char *jc) strcpy_s(jieci, jc); void setkechen(char *kc) strcpy_s(kechen, kc); char *getname() char *n; n = name; return n; char *getqklx() char *qk = queke; return qk; char *getjieci() char *jc; jc = jieci; return jc; char *getkechen() char *gk; gk = kechen; return gk; int *gettime();private:char name20;/姓名char jieci3, kechen10, queke10;int tm3;static int tiaoshu; 這是一個信息類,用來記錄學生的姓名,以及上課課程名,還有缺課課程名和節次,以供后期查詢。/缺課課程類class qkechen :public xinxipublic:qkechen() kcshu+; qkechen() kcshu-; int getrc(xinxi st1, int n, int j);char qkn20;/公有數據成員private:int renci;static int kcshu;/靜態數據成員;int qkechen:kcshu = 0;int qkechen:getrc(xinxi st1, int n, int j)renci = 0;renci+;for (int i = 0; in; i+)if (*(st1i + 1.gettime() + 1) = *(st1j.gettime() + 1) & *(st1i + 1.gettime() + 2) =*(st1j.gettime() + 2)if (strcmp(qkn, st1i.getkechen() = 0)renci+;return renci;/缺課學生類class qstu :public xinxipublic:qstu() qst+; qstu() qst-; void print(xinxi &st1);int getjs(xinxi st1, int n, int j);int setjs(int js = 0)jieshu = js;char qstn20;private:int jieshu;static int qst; /靜態數據成員;/菜單函數void caidan()system(color A);cout * endl;cout * 學生考勤管理系統 * endl;cout * endl; cout 1.-錄入學生的缺課記錄-* endl; cout 2.-修改學生的缺課記錄-* endl;cout 3.-查詢學生的缺課情況-* endl;cout 4.-統計某段時間內曠課學生姓名及曠課節數-* endl;cout 5.-統計某段時間內曠課的課程及曠課人次-* endl;cout 6.-退出系統-* endl;/輸入函數int shuru(xinxi st1)char a;cout -輸入開始!- endl;doq+;cout 請輸入學生姓名 name;st1q.setname(name);cout 請輸入課程名稱 kechen;st1q.setkechen(kechen);cout 請輸入缺課日期 y m d;st1q.settime(y, m, d);cout 請輸入缺課類型 queke;st1q.setqklx(queke);cout 請輸入缺課節次 jieci;st1q.setjieci(jieci);cout 是否還要繼續輸入:(y/n) a; while (a = y);return q + 1;/修改函數void xiugai(xinxi st1, int n)int k = 1, j = 0, a10;int flgh;int h;while (k = 1)cout 請輸入你要修改缺課記錄的學生姓名 name;flgh = 0;for (int i = 0; in; i+)if (strcmp(name, st1i.getname() = 0)doaj = i;cout 1.修改日期2.修改節次3.修改課程名稱4.修改缺課類型 endl;cout 請輸入要選擇的數值(1,2,3,4) b;if (b = 1)cout 請輸入新日期 y m d;st1i.settime(y, m, d);else if (b = 2)cout 請輸入新節次 jieci;st1i.setjieci(jieci);else if (b = 3)cout 請輸入新課程名稱 kechen;st1i.setkechen(kechen);else if (b = 4)cout 請輸入新缺課類型 queke;st1i.setqklx(queke);flgh = 1; j+; while (b4);if (flgh = 0)cout 沒有你要找的學生姓名,請重試要退出請按0 k;elsecout 還要繼續嗎(10)退出請按0 k;for (int i = 0; ij; i+)h = ai;xiansi(st1h);二.項目調試與測試: 1.系統調試程序編寫完成后,我進行了程序調試。調試過程中,出現了以下問題:當錄入學生缺課信息時,出現了無法退出錄入函數的情況,主要原因是輸入函數中while循環語句沒有設置跳出循環的條件。除此之外,修改某學生缺課信息時,如果沒有該學生的缺課信息,系統沒有提示要用戶沒有該學生信息,也沒有建議用戶重新輸入要修改的學生姓名。由此我發現了該系統修改學生缺課信息的不足。于是,我對修改函數進行了修改與完善。在該函數中,我設置了if語句用來判斷系統中是否存有用戶要修改的學生缺課信息。如果沒有,則提示用戶沒有該學生的缺課信息,用戶可以選擇繼續輸入要修改的學生姓名或者退出修改環節,可以在循環語句中改變循環進行的條件從而終止循環。至于在修改后顯示該學生的缺課信息,運行時發現系統并沒有做到這一點,對源代碼檢查之后發現是修改函數中顯示函數的調用出了點問題,顯示函數的實參有誤,應該把要修改缺課信息的學生所在的信息類對象作為實參,然后用顯示函數的形參引用實參對象,通過對象調用信息類的成員函數,從而實現顯示功能。至于該系統的查詢功能的實現,在調試時發現還有欠缺,當隨便輸入一個學生姓名時,系統沒有顯示該學生的缺課信息,也沒有提示系統沒有找到該學生的有關信息,經過在查詢函數while循環中加入一個if條件語句后,系統實現了提示用戶的功能,如果系統中沒有你要查詢的學生缺課信息,系統將會提示用戶,用戶可以繼續輸入要查詢的學生姓名也可以通過按系統設置的退出鍵選擇退出查詢環節。至于兩個統計功能至今沒有完善,主要是特定時間學生缺課次數和課程的缺課人次的統計問題尚待解決,現如今只完成了一兩條學生缺課信息的統計。主要問題是特定時間這個前提條件對我造成了一定的障礙。對系統中存儲的信息進行查找和統計運用對象指針比較方便,但我沒有使用,也算有點遺憾。在調試過程中我出現的最嚴重的問題是函數形參引用對象數組,結果系統提示將近幾十個錯誤,在我把函數形參改為對象數組后,錯誤一下減少了很多。還有比較突出的問題是整個程序不知哪掉了個 號系統會提示有錯,但就不懂那專業術語啥意思。還有就是我以為派生類公有繼承的基類的保護成員在派生類內為公有成員,可編譯時才發現是不對的。通過認真調試,我發現我有了收獲。2.運行結果分析1.剛進入系統時界面這是開啟系統時的進入界面,用戶可以根據要求選擇不同的菜單項,輸入對應的數字即可,然后再根據提示進行信息錄入。2這是錄入學生的缺課記錄界面 這

溫馨提示

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

評論

0/150

提交評論