




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、面向對象程序設計(C+ )課程設計任務書學院計算機與信息工程學院專業通信工程課程名稱面向對象程序設計(C+題目學生考勤管理系統的設計與實現完成期限自2017年6月12日至2017年6月17日共6天內容及任務一、項目目的1 鞏固和加深學生對程序設計課程基本知識的理解,綜合該 課程中所學的理論知識,獨立或聯合完成一個應用課題的設計;2 根據選題需要,通過查閱手冊和文獻資料,培養分析和解 決實際問題的能力;3 進一步提高使用C+進行軟件開發的能力。二、項目任務的主要內容和要求設計一個學生考勤管理系統。可以實現對學生信息的添加功 能、查詢功能、顯示功能、編輯功能、刪除功能、統計功能、保 存功能、讀取功
2、能、排序功能。實現:學生信息的錄入:修改: 刪除和查詢,按姓名或學號查詢。應用系統分析,建立該系統的 功能模塊框圖以及界面的組織和設計,分析系統中的各個實體及 它們之間的關系,根據問題描述,設計系統的類層次;完成系統 的應用模塊。三、項目設計(研究)思路考勤管理系統要實現對學生考勤的信息錄入,根據給定信息 對學生考勤結果進行分類統計,以及結果查詢。四、具體成果形式和要求成果形式:程序和報告。具體要求:建立一個學生考勤信息數據庫,文件名為“學生 考勤管理系統.txt ”并從該文件寫入數據。學生考勤管理系統要 實現對學生考勤的信息錄入,根據給疋信息對學生考勤進行分類。進度 安 排起止日期工作內容2
3、017年6月12日需求分析,按照課題要求,搜集查詢相關 參考資料。2017年6月13日至2017年6月14日概要設計和詳細設計階段,根據前期的需 求分析結果,定義系統實現所需要的自定 義函數數據類型及個功能函數。2017年6月15日至2017年6月17日程序的進一步完善,調試與測試撰寫課程 設計報告。主 要 參 資 料 考1 .譚浩強.C程序設計(第三版)M.北京:清華大學出版 社,20142 .梁旭.C語言課程設計(第三版)M.北京:電子工業出 版社,20133 .刁成嘉.面向對象程序設計M.北京:機械工業出版社,20044 .張鴻.C+語言程序設計M.北京:中國電力出版社,2014指導教師
4、意見(簽字):年 月曰系(教研室)主任意見(簽字):年 月曰面向對象程序設計(C+ )課程設計說明書學院名稱:計算機與信息工程學院班級名稱:通信162學生姓名:沈杰學號:2016211881題目:學生考勤管理系統的設計與實現指導教師姓名:王南洋起止日期:2017年6月12日至2017年6月17日目錄1系統需求分析 5.1.1錄入學生的缺課記錄 5.1.2修改學生的缺課記錄5.1.3 查詢學生的缺課情況 5.1.4統計5.1.4.1 統計姓名及節數5.1.4.2統計課程及人次5.1.5 小結5.2總體設計6.3詳細設計7.3.1學生缺課信息錄用功能模塊83.2修改某學生缺課信息功能的模塊圖83.
5、3查詢某學生缺課信息功能圖93.4統計某段時間內曠課學生姓名及曠課節數功能模塊 93.5統計某段時間內有學生曠課的課程及曠課人次功能模塊 94系統調試104.1系統實現104.2類的設計105結果分析185.1綜合測試原始界面 195.1.1錄入學生缺課記錄 195.1.2修改學生缺課記錄195.1.3 查詢學生缺課情況 205.1.4統計某段時間曠課學生姓名及曠課節數 206總結201系統需求分析考勤信息記錄了學生的缺課情況,它包括:缺課日期、第幾節課(連續用 begin-end的形式表示)、課程名稱(課程名稱中不會出現空格)、學生姓名、缺 課類型(遲到、早退、請假及曠課)。試設計考勤管理系
6、統,使之能提供以下功 能:1.1錄入學生的缺課記錄從鍵盤輸入數據提示,為遏兌空勢錄省血軸垛拯淡応目匚將數霽芹鐳仁 文件中,禾U用輸入重定向功能讀入。輸入格式為:缺課日期、第幾節課、課程名 稱、學生姓名、缺課類型,每行一條紀錄。例如:2016- 04-29 2-4 中國近代史 李某 遲到2017- 04-28 2-4 大學生心理素質馬某曠課1.2修改學生的缺課記錄可以對缺課紀錄的任意部分進行修改,然后顯示一下修改后的紀錄。1.3查詢學生的缺課情況查詢結果按照日期升序排序,同一天內按照所缺課程的時間升序排序。1.4統計1.4.1統計姓名及節數統計某段時間內(以天為單位)曠課學生姓名及曠課節數,查詢
7、結果先按曠 課節數降序排序,曠課節數相同的學生按姓名升序排序。1.4.2統計課程及人次統計某段時間內,有學生曠課的課程及曠課人次,按曠課人次由多到少排序 曠課人次相同的課程按課程名稱升序排序。1.5小結系統以菜單方式工作。所謂菜單指用戶可以自由選擇所要執行的功能。學生可以通過以上功能錄入信息、修改信息、查詢信息、整理統計出所要了解的信息 除了要實現上述的基本功能之外,本系統還應該在細節上下工夫,使用戶使用方 便,在使用的過程中保持一個愉快的心 環 學生詣勘營理系統有廣應帆冃戶群 這其中有老師、有教務處主任、有公司管理人員,也可以供給一般用戶使用。總 之,該系統可以滿足用戶需求,實現對其管理的人
8、員的考勤工作。2總體設計學生考勤管理系統包含五個大的功能。分別是:錄入學生缺課信息、修改學 生缺課信息、查詢某個學生的缺課情況、統計某段時間內(以天為單位)曠課學 生姓名及曠課節數和統計某段時間內, 有學生曠課的課程及曠課人次。學生的缺 課信息主要包含缺課日期、第幾節課、課程名稱、學生姓名、缺課類型。在錄入 學生缺課信息時根據系統提示逐一輸入。每輸入完一條信息,系統會提示是否繼 續輸入、用戶可以選擇繼續或返回主菜單。在修改學生缺課信息時,用戶首先輸 入要修改的學生姓名,系統會檢索如果系統中有該學生的相關信息則系統首先會 提示用戶修改該學生的那一部分信息,用戶可自行選擇。如果系統中沒有該 學生的
9、相關信息,則系統會給相關提示,用戶可以選擇繼續輸入要修改的學生姓 名或選擇退出返回主菜單。在查詢學生缺課信息時,用戶先輸入要查詢的學生姓 名。系統檢索判斷是否存在該學生的信息然后做出相應的提示。總之,用戶可以方便的在系統提示下進行使用。學生考勤管理系統統計某段時 間內曠課學 生姓名及礦 課節數錄入學牛的 缺譙信息統H某段吋間 內,有學生W課 的課程及0課 人次錄入缺課學修改某學生牛的姓珮、的缺課日缺課曰Wh期、缺課節缺課節次、次、缺課課缺課課程稈#稱、缺名稱說課課類空類型I杳詢某學生 的缺諜H 期、缺課節 次、缺課課 程名稱、缺升曠姓課 間示生曠 吋顯學及數 按序課常節按時間升 序顯示冇 學主
10、曠課 的課程及 曠麋人次圖1學生考勤管理系統中功能模塊圖3詳細設計學生考勤管理系統中四個類的類層次圖為Time :類圖2學生考勤管理系統中中四個類的類層次圖學生考勤管理系統中各功能模塊的實現圖3學生考勤管理系統中菜單函數的功能圖3.1學生缺課信息錄用功能模塊圖4 學生缺課信息錄入的功能3.2修改某學生缺課信息功能的模塊圖圖5學生考勤管理系統修改學生缺課信息功能圖3.3查詢某學生缺課信息功能圖杏詢某 學生缺 麋信息 功能4輸入要査詢的學生姓名顯示要查詢的學生缺課信息繼續查詢或返回菜單圖6學生考勤管理系統查詢學生缺課信息功能圖3.4統計某段時間內曠課學生姓名及曠課節數功能模塊統計某段 時間內曠 課
11、學生姓 名及曠課 節數功能統計某段時間內曠課學生姓金及曠 課節數*顯示某段時同內曠課學生姓名及 曠課節數返回菜單圖7統計某段時間內曠課學生姓名及曠課節數功能圖3.5統計某段時間內有學生曠課的課程及曠課人次功能模塊圖8統計某段時間內有學生曠課的課程及曠課人次功能圖4系統調試4.1系統實現程序編寫完成后,我進行了程序調試。調試過程中,出現了以下問題:當錄 入學生缺課信息時,出現了無法退出錄入函數的情況,主要原因是輸入函數中 while循環語句沒有設置跳出循環的條件。除此之外,修改某學生缺課信息時, 如果沒有該學生的缺課信息,系統沒有提示要用戶沒有該學生信息,也沒有建議用戶重新輸入要修改的學生姓名。
12、由此我發現了該系統修改學生缺課信息的不 足。在該函數中,也可查詢要修改的學生缺課信息。如果沒有,則提示用戶沒有 該學生的缺課信息,用戶可以選擇繼續輸入要修改的學生姓名或者退出修改環 節,可以在循環語句中改變循環進行的條件從而終止循環。系統實現了提示用戶 的功能,如果系統中沒有你要查詢的學生缺課信息,系統將會提示用戶,用戶可以繼續輸入要查詢的學生姓名也可以通過按系統設置的退出鍵選擇退出查詢環 節。通過認真調試,我發現我有了收獲。4.2類的設計附錄:源程序代碼(部分主要程序)/缺課課程類class qkeche n:public xinxipublic:qkeche n( )kcshu+;qkec
13、he n( )kcshu-;int getrc(x inxi st1,i nt n ,i nt j);char qkn 20;/公有數據成員private:int renci;static int kcshu;/靜態數據成員;int qkeche n:kcshu=0;int qkeche n:getrc(x inxi st1,i nt n ,i nt j) ren ci=0;ren ci+;for(i nt i=0;i< n;i+)if(*(st1i+1.gettime()+1)=*(st1j.gettime()+1)&&*(st1i+1.gettime ()+2)= *
14、(st1j.gettime()+2)if(strcmp(qk n,st1i.getkeche n()=0)ren ci+;return renci;/缺課學生類class qstu:public xinxipublic:qstu()qst+;qstu()qst-;void prin t(x inxi & st1);int getjs(x inxi st1,i nt n ,i nt j);int setjs(i nt js=0)jieshu=js;char qst n 20;private:int jieshu;static int qst; /靜態數據成員;int qstu:qst=O
15、;/全局變量int g,k=1,b=1;int q=-1;char name20,keche n10,queke10,jieci3;int y,m,d;/主函數定義15條信息類對象int main() xinxi tl15;qstu qt10;qkeche n qk6; int ch;while(1)cout«"*駛汕蛙學三弓藏背即誤統*"<<endl;caida n();coutvv"請選擇菜單項:"<<endl;cin> >ch;switch(ch)case 1: g=shuru(tl); break;
16、case 2: xiugai(tl,g); break; case 3: chax un (tl,qt); break; case 4: ton gji1(tl,qt); break; case 5: ton gji2(tl,qk); break; case 6: exit(0);return 0;/修改函數void xiugai(x inxi st1,i nt n)int k=1,j=O,a1O;int flgh;int h;while(k=1) coutvv"請輸入你要修改缺課記錄的學生姓名"<<e ndl;cin>>n ame;flgh=0;f
17、or(i nt i=0;i< n;i+)if(strcmp( name,st1i.get name()=0)do aj=i;cout<<"1.修改日期2.修改節次3.修改課程名稱4.修改缺課類型"<<endl;coutvv"請輸入要選擇的數值(1,2,3,4)"vvendl;int b;cin> >b;if(b=1) coutvv" 請輸入新日期"<<endl;cin>>y> >m>>d;st1i.settime(y,m,d);else if(b
18、=2)coutvv"請輸入新節次"<<endl;cin> >jieci;st1i.setjieci(jieci);else if(b=3)coutvv"請輸入新課程名稱"vvendl;cin> >keche n;st1i.setkeche n( keche n);else if(b=4) cout«"請輸入新缺課類型"<<endl;cin>> queke;st1i.setqklx(queke);flgh=1;j+;while(b<1|b>4);if(fl
19、gh=0)coutvv" 沒有你要找的學生姓名 帛理式要迅V青妹0"<<endl;cin> >k;elsecoutvv"還要繼續嗎(10)退出請按0"<<endl;cin> >k;for(i nt i=0;i<j;i+) h=ai;xia nsi(st1h);/查詢函數void chax un(xinxi st1,qstu qt)char n='y'int u10;while( n=二'y') int j=0;coutvv"輸入你要查詢的學生姓名:"
20、<<endl;cin>>n ame;int i=0;for(;i<g;i+)if(strcmp( name,st1i.get name()=O) uj=i;j+;沒有你所要的學生名字!";沒有找到if(j=O) cout«"coutvv"是否退出退出請按nn"cin>>n;for(i nt a=0;a<j;a+) / 只有一條信息if(j<2)第幾節課|"<<"課程名稱|"<<"缺"<<*st1i.gett
21、ime()<<"|"<<*(st1i.gettime()+2)<<"|<<st1i.getkeche n() <<"| i=ua;cout<<"|缺課日期 |"<<"課類型|"<<endl;cout<<"|"<<*(st1i.gettime()+1)<<"|"<<st1i.getjieci()<<"|"
22、"<<st1i.getqklx()<<"| "<<e ndl;/兩條信息以上排序elsei=ua;if(*(st1i.gettime()+1)<*(st1i+1.gettime()+1) qti.pri nt(st1i);elseif(*(st1i.gettime()+1)=*(st1i+1.gettime()+1)&&*(st1i.gettime()+2)v*(st1i+1.gettime()+2)qti.pri nt(st1i);elseif(*(st1i.gettime()+1)=*(st1i+1.g
23、ettime()+1)&&*(st1i.gettime() +2)=*(st1i+1.gettime()+2)if(strcmp(st1i.getjieci(),st1i+1.getjieci()=-1)qti.pri nt(st1i);coutvv"是否繼續查詢(y/n)繼續請按y退出按n"<<endl;cin>>n;/統計某段時間內曠課學生姓名及曠課節數void ton gji1(xi nxi st1,qstu qt1) int d1=0,js=0;xinxi mi n;if(g=0)coutvv"沒有你要統計的學生信息
24、請返回菜單錄入學生缺課信息else if(g=1) coutvv" 姓名:"<<st1O.get name()<<e ndl;if(*(st10.getjieci()+2)!='0')js=+2;elsejs+;coutvv" 節數:"vvjsvve ndl;/顯示函數void xia nsi(x inxi & st1)vve ndl;學生姓 coutvv"|缺課日期|"vv"第幾節課|"vv"課程名稱|"vv" 名|"<
25、<" 缺課類型|"<<endl;coutv<Tvv*(st1.gettime()vvTvv*(st1.gettime()+1)vv*(st1.gettime()+2)<<"|"<<st1.getjieci()<<"|"<<st1.getkeche n() v<T<vst1.get name()v<T<<st1.getqklx()<<"|"<<e ndl;/ 刪除信息主要代碼如下void de
26、l(records *r)/ 刪除學生信息if(r->n=O)cout«"記錄為空!"<<endl;return;coutvv"請輸入要刪除的記錄的序號:(輸入-1刪除全部)"vvflush;int flag;cin> >flag;if(flag>r-> n-1 &&flagv-1)coutvv"不存在所要刪除的記錄!"<<endl;return;else if(flag=-1)r- >n=0;elsefor(i nt i=flag;i<r-
27、>n-1;i+)r->ri.set(r->ri+1);r->n-;char yn;cout«"保存修改?(y/n) "vvflush;cin»yn;if(yn二二'y')wt(r);else return;5結果分析這次的課設,我寫的程序也沒有什么獨到之處,我覺得唯一可以從我的程序 可以看出的是數組用得比較多,反正是沒啥特色。不僅如此,還寫得功能不全, 實在是慚愧。現在在這里也只能說說它的不足之處了。類層次不夠清晰,縱觀整個程序可以發現四個類之間的關系不甚恰當, 我有這個感覺。但我不知如何改進。 函數參數設定不夠完
28、美,整個程序中對指針的運用比較少。對于指針的巧妙運用 把握得不夠。還有就是容易missing或者是 N謨杲些應詢改掠旳£疥:除此 以外,我對于怎樣用文件保存數據還沒深入了解。但我將數據保存到文件后又因 文件打不開而無法訪問文件中的數據,對于動態鏈表,我不是很清晰,也就是說無法做到熟稔運用。在調試過程中我發現在主函數中把字符數組名n ame賦值給字符指針p即p=name然后用cout<<p;語句可以輸出字符數組里全部的內容,但 利用函數返回指針值卻不能做到這一點。在我思考一番后終于明白了,這與內存 中的地址值有關。具體為什么我是解釋不清了,調用系統的顯示,如果在 getna
29、me()函數前加一個*號輸出的只是一個字符,不加反而能輸出所功能時有字 符。getname()函數的返回值為指針類型。但前面說過利用函數返回指針類型的 值并不能輸出字符數組中所有的字符,為什么這里又可以呢?我不知道這一知 識,這也算我的程序的不足之處吧! 對于兩個統計函數的功能不全, 我感到無能 為力,我為了這兩函數苦思了兩天硬是沒湊合來。到后來腦子里都亂了,運行時屏幕上盡是些亂七八糟的東西。結果不是很好,但過程夠了就行。5.1綜合測試原始界面贋*水*材*歡迎進入學生考勤管理系統 *學生考勤管理系統r.4.錄入學生的缺課記錄修改學生的缺課記錄杳詢學生的缺課情況 一統計某段時間內曠課學生姓名及曠
30、課節數 統計某段時間內曠課的課程及曠課人次一 退岀系統請選擇菜單項:圖9綜合測試原始界面5.1.1錄入學生缺課記錄宅水和:水材和欠迎進入學土老7勤管理系統襯揪*P§C ?|c«r?|c #:?|CZC?§C 5P§C s« ?Jc冶學生考勤管理系統冶aC 3C3 3C3Caa 3*a3C3C33C3a3C3C(rC 31.2.3.4.5.6.錄入學生的缺課記錄 修改學生的缺課記錄 査詢學生的缺課情況 統計某段時間內曠課學生姓名及曠課節數 統計某段時間內曠課的課程及曠課人次一 退出系統 請選擇菜單項:*:7-輸入開始請輸入學生姓名圖10錄入學生缺
31、課記錄5.1.2修改學生缺課記錄*材:t*歡迎進入學生考勤管理系統 *;:;>:常倉*常*圳富*京*富* *富窗京*:案*常*寒*案*歎*常常*帝*歎歩常富*:富*:常案丈學生考勤管理系統tfc 5C 3S ZCZC "2| DC rZ5§C P|j 5|jC3C ZZ "ri 3C 313CZZ 51 ZC ?|C"31 ZC ZC "SC ZC ZC |C"5|C3C IC ZZ ZjrZZ "?|C*'*錄入學生的缺課記錄 修改學生的缺課記錄 査詢學生的缺課情況 統計某段時間內曠課學生姓名及曠課節數 一統
32、計某段時間內曠課的課程及曠課人次一 退出系統 請選擇菜單項:請輸入你要修改缺課記錄的學生姓名 撫木沒著你要找的學生姓名Q請重試要退出請按Q圖11修改學生缺課記錄5.1.3查詢學生缺課情況材申*半*歡迎進入學生考勤管理系統 *水襯料林:*;5)C"Cr-P-|C?C-4PC -ZP4 r"1-rJ1- -"4學生考勤管理系統JLJ J *J % J U|R. J b J <1 " ", J ur,- J 11、-,. J Ufa. J °;=7占",J %" J U.3 L;J t. J L. J * J*" % .J 7” JLJ %. J 氣話>, J J*. J U. J、J Lp.J % . J 1.5 i J . J1.2.3.5.6.錄入學生的缺課記錄 修改學主的缺課記錄 査詢學生的缺課情
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 21638-2025微束分析鋼鐵材料缺陷電子束顯微分析方法通則
- 燈具環境友好型設計與綠色制造考核試卷
- 生物質能發電項目的社會影響評估考核試卷
- 生態產品價值實現機制考核試卷
- 石墨礦石的浮選與熔煉過程考核試卷
- 管道工程法律法規與政策考核試卷
- 糖果與巧克力品牌營銷經驗分享考核試卷
- 山東旅游職業學院《計算機數學》2023-2024學年第一學期期末試卷
- 喀什理工職業技術學院《安全監測技術及實驗》2023-2024學年第二學期期末試卷
- 山東藝術設計職業學院《土建工程基礎》2023-2024學年第二學期期末試卷
- DPtechIPS2000系列入侵防御系統培訓膠片課件
- “四不傷害”安全生產專題培訓課件
- 阿特拉斯空壓機保養課件
- (房屋建筑部分)工程建設標準強制性條文2023年版
- 幼兒園中班語言《小兔子開鋪子》課件
- 公司面談表模板
- 蘇教版科學一年級下冊第10課形形色色的動物課件25張
- 超聲診斷學:局灶性肝病(肝臟占位性病變)
- GB∕T 5019.8-2009 以云母為基的絕緣材料 第8部分:玻璃布補強B階環氧樹脂粘合云母帶
- 延期還款申請表
- OSN9800光傳輸網絡解決方案
評論
0/150
提交評論