版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、面向?qū)ο蟪绦蛟O(shè)計(C+)課程設(shè)計任務(wù)書學(xué) 院計算機(jī)與信息工程學(xué)院專 業(yè)通信工程課程名稱面向?qū)ο蟪绦蛟O(shè)計(C+)題 目學(xué)生考勤管理系統(tǒng)的設(shè)計與實現(xiàn)完成期限自2017年6月12日至2017年6月17日共6天內(nèi)容及任務(wù)一、項目目的1鞏固和加深學(xué)生對程序設(shè)計課程基本知識的理解,綜合該課程中所學(xué)的理論知識,獨立或聯(lián)合完成一個應(yīng)用課題的設(shè)計;2根據(jù)選題需要,通過查閱手冊和文獻(xiàn)資料,培養(yǎng)分析和解決實際問題的能力;3進(jìn)一步提高使用C+進(jìn)行軟件開發(fā)的能力。二、項目任務(wù)的主要內(nèi)容和要求設(shè)計一個學(xué)生考勤管理系統(tǒng)??梢詫崿F(xiàn)對學(xué)生信息的添加功能、查詢功能、顯示功能、編輯功能、刪除功能、統(tǒng)計功能、保存功能、讀取功能、排序
2、功能。實現(xiàn):學(xué)生信息的錄入:修改:刪除和查詢,按姓名或?qū)W號查詢。應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設(shè)計,分析系統(tǒng)中的各個實體及它們之間的關(guān)系,根據(jù)問題描述,設(shè)計系統(tǒng)的類層次;完成系統(tǒng)的應(yīng)用模塊。三、項目設(shè)計(研究)思路考勤管理系統(tǒng)要實現(xiàn)對學(xué)生考勤的信息錄入,根據(jù)給定信息對學(xué)生考勤結(jié)果進(jìn)行分類統(tǒng)計,以及結(jié)果查詢。四、具體成果形式和要求成果形式:程序和報告。具體要求:建立一個學(xué)生考勤信息數(shù)據(jù)庫,文件名為“學(xué)生考勤管理系統(tǒng).txt”并從該文件寫入數(shù)據(jù)。學(xué)生考勤管理系統(tǒng)要實現(xiàn)對學(xué)生考勤的信息錄入,根據(jù)給定信息對學(xué)生考勤進(jìn)行分類。進(jìn)度安排起止日期工作內(nèi)容2017年6月12日需求分析,
3、按照課題要求,搜集查詢相關(guān)參考資料。2017年6月13日至2017年6月14日概要設(shè)計和詳細(xì)設(shè)計階段,根據(jù)前期的需求分析結(jié)果,定義系統(tǒng)實現(xiàn)所需要的自定義函數(shù)數(shù)據(jù)類型及個功能函數(shù)。2017年6月15日至2017年6月17日程序的進(jìn)一步完善,調(diào)試與測試撰寫課程設(shè)計報告。 主 要 參 資 料 考1.譚浩強.C程序設(shè)計(第三版)M.北京:清華大學(xué)出版社,20142.梁旭.C語言課程設(shè)計(第三版)M.北京:電子工業(yè)出版社,2013 3.刁成嘉.面向?qū)ο蟪绦蛟O(shè)計M.北京:機(jī)械工業(yè)出版社,2004 4.張鴻.C+語言程序設(shè)計M.北京:中國電力出版社,2014指導(dǎo)教師 意見(簽字): 年 月 日系(教研室)
4、主任意見 (簽字): 年 月 日面向?qū)ο蟪绦蛟O(shè)計(C+)課程設(shè)計說明書學(xué)院名稱: 計算機(jī)與信息工程學(xué)院 班級名稱: 通信 162 學(xué)生姓名: 沈杰 學(xué) 號: _題 目: 學(xué)生考勤管理系統(tǒng)的設(shè)計與實現(xiàn) 指導(dǎo)教師姓 名: 王南洋 起止日期:2017年6月12日至 2017年6月 17 日目錄1 系統(tǒng)需求分析51.1 錄入學(xué)生的缺課記錄51.2 修改學(xué)生的缺課記錄51.3 查詢學(xué)生的缺課情況51.4 統(tǒng)計51.4.1 統(tǒng)計姓名及節(jié)數(shù)51.4.2 統(tǒng)計課程及人次51.5 小結(jié)52 總體設(shè)計63 詳細(xì)設(shè)計73.1 學(xué)生缺課信息錄用功能模塊73.2 修改某學(xué)生缺課信息功能的模塊圖83.3 查詢某學(xué)生缺課信
5、息功能圖83.4 統(tǒng)計某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)功能模塊83.5 統(tǒng)計某段時間內(nèi)有學(xué)生曠課的課程及曠課人次功能模塊94 系統(tǒng)調(diào)試94.1系統(tǒng)實現(xiàn)94.2類的設(shè)計105 結(jié)果分析175.1 綜合測試原始界面185.1.1 錄入學(xué)生缺課記錄185.1.2 修改學(xué)生缺課記錄185.1.3 查詢學(xué)生缺課情況195.1.4 統(tǒng)計某段時間曠課學(xué)生姓名及曠課節(jié)數(shù)196 總結(jié)201 系統(tǒng)需求分析 考勤信息記錄了學(xué)生的缺課情況,它包括:缺課日期、第幾節(jié)課(連續(xù)用begin-end的形式表示)、課程名稱(課程名稱中不會出現(xiàn)空格)、學(xué)生姓名、缺課類型(遲到、早退、請假及曠課)。試設(shè)計考勤管理系統(tǒng),使之能提供以
6、下功能:1.1 錄入學(xué)生的缺課記錄從鍵盤輸入數(shù)據(jù)提示,為避免重復(fù)從鍵盤輸入數(shù)據(jù)測試時可將數(shù)據(jù)存儲在文件中,利用輸入重定向功能讀入。輸入格式為:缺課日期、第幾節(jié)課、課程名稱、學(xué)生姓名、缺課類型,每行一條紀(jì)錄。 例如: 2016-04-29 2-4 中國近代史 李某 遲到 2017-04-28 2-4 大學(xué)生心理素質(zhì) 馬某 曠課 1.2 修改學(xué)生的缺課記錄可以對缺課紀(jì)錄的任意部分進(jìn)行修改,然后顯示一下修改后的紀(jì)錄。 1.3 查詢學(xué)生的缺課情況查詢結(jié)果按照日期升序排序,同一天內(nèi)按照所缺課程的時間升序排序。 1.4 統(tǒng)計1.4.1 統(tǒng)計姓名及節(jié)數(shù)統(tǒng)計某段時間內(nèi)(以天為單位)曠課學(xué)生姓名及曠課節(jié)數(shù),查詢
7、結(jié)果先按曠課節(jié)數(shù)降序排序,曠課節(jié)數(shù)相同的學(xué)生按姓名升序排序。 1.4.2 統(tǒng)計課程及人次統(tǒng)計某段時間內(nèi),有學(xué)生曠課的課程及曠課人次,按曠課人次由多到少排序曠課人次相同的課程按課程名稱升序排序。 1.5 小結(jié)系統(tǒng)以菜單方式工作。所謂菜單指用戶可以自由選擇所要執(zhí)行的功能。學(xué)生可以通過以上功能錄入信息、修改信息、查詢信息、整理統(tǒng)計出所要了解的信息除了要實現(xiàn)上述的基本功能之外,本系統(tǒng)還應(yīng)該在細(xì)節(jié)上下工夫,使用戶使用方便,在使用的過程中保持一個愉快的心情。學(xué)生考勤管理系統(tǒng)有廣大的用戶群這其中有老師、有教務(wù)處主任、有公司管理人員,也可以供給一般用戶使用。總之,該系統(tǒng)可以滿足用戶需求,實現(xiàn)對其管理的人員的考
8、勤工作。 2 總體設(shè)計 學(xué)生考勤管理系統(tǒng)包含五個大的功能。分別是:錄入學(xué)生缺課信息、修改學(xué)生缺課信息、查詢某個學(xué)生的缺課情況、統(tǒng)計某段時間內(nèi)(以天為單位)曠課學(xué)生姓名及曠課節(jié)數(shù)和統(tǒng)計某段時間內(nèi),有學(xué)生曠課的課程及曠課人次。學(xué)生的缺課信息主要包含缺課日期、第幾節(jié)課、課程名稱、學(xué)生姓名、缺課類型。在錄入學(xué)生缺課信息時根據(jù)系統(tǒng)提示逐一輸入。每輸入完一條信息,系統(tǒng)會提示是否繼續(xù)輸入、用戶可以選擇繼續(xù)或返回主菜單。在修改學(xué)生缺課信息時,用戶首先輸入要修改的學(xué)生姓名,系統(tǒng)會檢索如果系統(tǒng)中有該學(xué)生的相關(guān)信息則系統(tǒng)首先會提示用戶修改該學(xué)生的那一部分信息,用戶可自行選擇。如果系統(tǒng)中沒有該學(xué)生的相關(guān)信息,則系統(tǒng)會
9、給相關(guān)提示,用戶可以選擇繼續(xù)輸入要修改的學(xué)生姓名或選擇退出返回主菜單。在查詢學(xué)生缺課信息時,用戶先輸入要查詢的學(xué)生姓名。系統(tǒng)檢索判斷是否存在該學(xué)生的信息然后做出相應(yīng)的提示??傊?,用戶可以方便的在系統(tǒng)提示下進(jìn)行使用。 圖1 學(xué)生考勤管理系統(tǒng)中功能模塊圖3 詳細(xì)設(shè)計 學(xué)生考勤管理系統(tǒng)中四個類的類層次圖為 圖2 學(xué)生考勤管理系統(tǒng)中中四個類的類層次圖學(xué)生考勤管理系統(tǒng)中各功能模塊的實現(xiàn)圖3 學(xué)生考勤管理系統(tǒng)中菜單函數(shù)的功能圖3.1 學(xué)生缺課信息錄用功能模塊圖4 學(xué)生缺課信息錄入的功能3.2 修改某學(xué)生缺課信息功能的模塊圖圖5 學(xué)生考勤管理系統(tǒng)修改學(xué)生缺課信息功能圖3.3 查詢某學(xué)生缺課信息功能圖圖6 學(xué)
10、生考勤管理系統(tǒng)查詢學(xué)生缺課信息功能圖3.4 統(tǒng)計某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)功能模塊 圖7統(tǒng)計某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)功能圖3.5 統(tǒng)計某段時間內(nèi)有學(xué)生曠課的課程及曠課人次功能模塊 圖8 統(tǒng)計某段時間內(nèi)有學(xué)生曠課的課程及曠課人次功能圖4 系統(tǒng)調(diào)試 4.1系統(tǒng)實現(xiàn)程序編寫完成后,我進(jìn)行了程序調(diào)試。調(diào)試過程中,出現(xiàn)了以下問題:當(dāng)錄入學(xué)生缺課信息時,出現(xiàn)了無法退出錄入函數(shù)的情況,主要原因是輸入函數(shù)中while循環(huán)語句沒有設(shè)置跳出循環(huán)的條件。除此之外,修改某學(xué)生缺課信息時,如果沒有該學(xué)生的缺課信息,系統(tǒng)沒有提示要用戶沒有該學(xué)生信息,也沒有建議用戶重新輸入要修改的學(xué)生姓名。由此我發(fā)現(xiàn)了該系統(tǒng)
11、修改學(xué)生缺課信息的不足。在該函數(shù)中,也可查詢要修改的學(xué)生缺課信息。如果沒有,則提示用戶沒有該學(xué)生的缺課信息,用戶可以選擇繼續(xù)輸入要修改的學(xué)生姓名或者退出修改環(huán)節(jié),可以在循環(huán)語句中改變循環(huán)進(jìn)行的條件從而終止循環(huán)。系統(tǒng)實現(xiàn)了提示用戶的功能,如果系統(tǒng)中沒有你要查詢的學(xué)生缺課信息,系統(tǒng)將會提示用戶,用戶可以繼續(xù)輸入要查詢的學(xué)生姓名也可以通過按系統(tǒng)設(shè)置的退出鍵選擇退出查詢環(huán)節(jié)。通過認(rèn)真調(diào)試,我發(fā)現(xiàn)我有了收獲。 4.2類的設(shè)計附錄:源程序代碼(部分主要程序) /缺課課程類 class qkechen:public xinxi public: qkechen()kcshu+; qkechen()kcshu-
12、; int getrc(xinxi st1,int n,int j); char qkn20;/公有數(shù)據(jù)成員 private: int renci; static int kcshu;/靜態(tài)數(shù)據(jù)成員 ; 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(qk
13、n,st1i.getkechen()=0) renci+; return renci; /缺課學(xué)生類 class qstu:public xinxi public: 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; /靜態(tài)數(shù)據(jù)成員 ; int qstu:qst=0;/全局變量 int g,k=1,b=1; int q=-1
14、; char name20,kechen10,queke10,jieci3; int y,m,d; /主函數(shù) int main() xinxi tl15;/定義15條信息類對象 qstu qt10; qkechen qk6; int ch; while(1) cout*歡迎進(jìn)入學(xué)生考勤管理系統(tǒng)*endl; caidan(); cout-請選擇菜單項:ch; switch(ch) case 1: g=shuru(tl); break; case 2: xiugai(tl,g); break; case 3: chaxun(tl,qt); break; case 4: tongji1(tl,qt)
15、; break; case 5: tongji2(tl,qk); break; case 6: exit(0); return 0; /修改函數(shù) void xiugai(xinxi st1,int n) int k=1,j=0,a10; int flgh; int h; while(k=1) cout請輸入你要修改缺課記錄的學(xué)生姓名name; flgh=0; for(int i=0;in;i+) if(strcmp(name,st1i.getname()=0) do aj=i; cout1.修改日期2.修改節(jié)次3.修改課程名稱4.修改缺課類型endl; cout請輸入要選擇的數(shù)值(1,2,3,
16、4)b; if(b=1) cout請輸入新日期ymd; st1i.settime(y,m,d); else if(b=2) cout請輸入新節(jié)次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沒有你要找的學(xué)生姓名請重試要退出請按0k; else cout還要繼續(xù)嗎(10)退出請按0k; for(
17、int i=0;ij;i+) h=ai; xiansi(st1h); / 查詢函數(shù) void chaxun(xinxi st1,qstu qt) char n=y; int u10; while(n=y) int j=0; cout輸入你要查詢的學(xué)生姓名:name; int i=0; for(;ig;i+) if(strcmp(name,st1i.getname()=0) uj=i; j+; if(j=0) cout沒有你所要的學(xué)生名字!;/沒有找到 coutn; for(int a=0;aj;a+) /只有一條信息 if(j2) i=ua; cout| 缺課日期 | 第幾節(jié)課 | 課程名稱
18、| 缺課類型|endl; cout| *st1i.gettime()| *(st1i.gettime()+1)| *(st1i.gettime()+2)| st1i.getjieci()| st1i.getkechen()| st1i.getqklx()| endl; /兩條信息以上排序 else i=ua; if(*(st1i.gettime()+1)*(st1i+1.gettime()+1) qti.print(st1i); else if(*(st1i.gettime()+1)=*(st1i+1.gettime()+1)&*(st1i.gettime()+2)*(st1i+1.getti
19、me()+2) qti.print(st1i); else if(*(st1i.gettime()+1)=*(st1i+1.gettime()+1)&*(st1i.gettime()+2)=*(st1i+1.gettime()+2) if(strcmp(st1i.getjieci(),st1i+1.getjieci()=-1) qti.print(st1i); cout是否繼續(xù)查詢(y/n)繼續(xù)請按y退出按nn; /統(tǒng)計某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù) void tongji1(xinxi st1,qstu qt1) int d1=0,js=0; xinxi min; if(g=0) cout
20、沒有你要統(tǒng)計的學(xué)生信息請返回菜單錄入學(xué)生缺課信息endl; else if(g=1) cout姓名:st10.getname()endl; if(*(st10.getjieci()+2)!=0) js=+2; else js+; cout節(jié)數(shù):jsendl; /顯示函數(shù) void xiansi(xinxi &st1) cout| 缺課日期 | 第幾節(jié)課 | 課程名稱 | 學(xué)生姓名| 缺課類型|endl; cout|*(st1.gettime()|*(st1.gettime()+1)*(st1.gettime()+2) |st1.getjieci()|st1.getkechen()|st1.ge
21、tname()|st1.getqklx()|n=0)cout記錄為空!endl;return;cout請輸入要刪除的記錄的序號: (輸入-1刪除全部) flag;if(flagr-n-1&flag-1)cout不存在所要刪除的記錄!n=0;elsefor(int i=flag;in-1;i+)r-ri.set(r-ri+1);r-n-;char yn;cout保存修改? (y/n) yn;if(yn=y)wt(r);else return;5 結(jié)果分析 這次的課設(shè),我寫的程序也沒有什么獨到之處,我覺得唯一可以從我的程序可以看出的是數(shù)組用得比較多,反正是沒啥特色。不僅如此,還寫得功能不全,實在是
22、慚愧?,F(xiàn)在在這里也只能說說它的不足之處了。類層次不夠清晰,縱觀整個程序可以發(fā)現(xiàn)四個類之間的關(guān)系不甚恰當(dāng),我有這個感覺。但我不知如何改進(jìn)。 函數(shù)參數(shù)設(shè)定不夠完美,整個程序中對指針的運用比較少。對于指針的巧妙運用把握得不夠。還有就是容易missing或者是這都是些應(yīng)該改掉的毛病。 除此以外,我對于怎樣用文件保存數(shù)據(jù)還沒深入了解。但我將數(shù)據(jù)保存到文件后又因文件打不開而無法訪問文件中的數(shù)據(jù),對于動態(tài)鏈表,我不是很清晰,也就是說無法做到熟稔運用。在調(diào)試過程中我發(fā)現(xiàn)在主函數(shù)中把字符數(shù)組名name賦值給字符指針p即p=name;然后用coutp;語句可以輸出字符數(shù)組里全部的內(nèi)容,但利用函數(shù)返回指針值卻不能做
23、到這一點。在我思考一番后終于明白了,這與內(nèi)存中的地址值有關(guān)。具體為什么我是解釋不清了,調(diào)用系統(tǒng)的顯示,如果在getname()函數(shù)前加一個*號輸出的只是一個字符,不加反而能輸出所功能時有字符。getname()函數(shù)的返回值為指針類型。但前面說過利用函數(shù)返回指針類型的值并不能輸出字符數(shù)組中所有的字符,為什么這里又可以呢?我不知道這一知識,這也算我的程序的不足之處吧!對于兩個統(tǒng)計函數(shù)的功能不全,我感到無能為力,我為了這兩函數(shù)苦思了兩天硬是沒湊合來。到后來腦子里都亂了,運行時屏幕上盡是些亂七八糟的東西。結(jié)果不是很好,但過程夠了就行。 5.1 綜合測試原始界面圖9 綜合測試原始界面5.1.1 錄入學(xué)生缺課記錄圖10 錄入學(xué)生缺課記錄5.1.2 修改學(xué)生缺課記錄圖11 修改學(xué)生缺課記錄5.1.3 查詢學(xué)生缺課情況圖12 查詢學(xué)生缺課情況5.1.4 統(tǒng)計某段時間
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商超供應(yīng)合同范本
- 招商合同回購協(xié)議
- 樣品櫥柜合同范本
- 農(nóng)戶種植合同簽訂流程標(biāo)準(zhǔn)
- 扶貧項目實施效果監(jiān)測方案
- 同行借調(diào)合同范本
- 外發(fā)貨合同女協(xié)議
- 大合同分包協(xié)議
- 標(biāo)準(zhǔn)合作合同范本
- 外銷代理合同范本
- 2025年沈陽華晨專用車有限公司公開招聘筆試歷年參考題庫附帶答案詳解
- 2026(蘇教版)數(shù)學(xué)五上期末復(fù)習(xí)大全(知識梳理+易錯題+壓軸題+模擬卷)
- 2024廣東廣州市海珠區(qū)琶洲街道招聘雇員(協(xié)管員)5人 備考題庫帶答案解析
- 蓄電池安全管理課件
- 建筑業(yè)項目經(jīng)理目標(biāo)達(dá)成度考核表
- 2025廣東肇慶四會市建筑安裝工程有限公司招聘工作人員考試參考題庫帶答案解析
- 第五單元國樂飄香(一)《二泉映月》課件人音版(簡譜)初中音樂八年級上冊
- 簡約物業(yè)交接班管理制度
- 收購摩托駕校協(xié)議書
- 2025年浙江省中考數(shù)學(xué)試卷(含答案)
- 汽車行業(yè)可信數(shù)據(jù)空間方案
評論
0/150
提交評論