學生考勤管理系統(tǒng)方案_第1頁
學生考勤管理系統(tǒng)方案_第2頁
學生考勤管理系統(tǒng)方案_第3頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、課程設(shè)計報告課程名稱面向?qū)ο蟪绦蛟O(shè)計課題名稱學生考勤管理系統(tǒng)專 業(yè)計算機科學與技術(shù)班 級11_81班學 號 201113030128姓 名蔡彪指導(dǎo)教師珍輝譚小蘭2012年 12 月15 日工程學院課程設(shè)計任務(wù)書課程名稱面向?qū)ο蟪绦蛟O(shè)計課 題 學生考勤管理系統(tǒng)專業(yè)班級計算機1181班學生蔡彪學 號 201113030128指導(dǎo)老師珍輝譚小蘭審 批任務(wù)書下達日期2012年12 月15 日任務(wù)完成日期 2013 年01 月05 日設(shè)計容與設(shè)計要求1. 課程設(shè)計目的:面向?qū)ο蟪绦蛟O(shè)計課程設(shè)計是集中實踐性環(huán)節(jié)之一, 是學習完面向?qū)ο蟪绦蛟O(shè) 計課程后進行的一次全面的綜合練習。要求學生達到熟練掌握C+語言的

2、基本知識和技能;基本掌握面向?qū)ο蟪绦蛟O(shè)計的思想和方法;能夠利用所學的基本知識和技能,解 決簡單的面向?qū)ο蟪绦蛟O(shè)計問題,從而提高動手編程解決實際問題的能力。2. 課題題目學生考勤管理系統(tǒng)3設(shè)計要求:(1)根據(jù)自己對應(yīng)的課題完成以下主要工作:完成系統(tǒng)需求分析:包括 系統(tǒng)設(shè)計目的與意義;系統(tǒng)功能需求(系統(tǒng)流程圖) ;輸入輸出的要求。完 成系統(tǒng)總體設(shè)計:包括系統(tǒng)功能分析;系統(tǒng)功能模塊劃分與設(shè)計(系統(tǒng)功能模 塊圖)。完成系統(tǒng)詳細設(shè)計:包括數(shù)據(jù)庫需求分析;數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計( E -R圖);數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計;類層次圖;界面設(shè)計與各功能模塊實現(xiàn)。系 統(tǒng)調(diào)試:調(diào)試出現(xiàn)的主要問題,編譯語法錯誤及修改,重點是運

3、行邏輯問題修 改和調(diào)整。使用說明書及編程體會:說明如何使用你編寫的程序,詳細列出 每一步的操作步驟。關(guān)鍵源程序(帶注釋)(2)按規(guī)定格式完成課程設(shè)計報告,將其打印稿 (A4 紙) 上交給老師存 檔。(3)不得抄襲他人程序、課程設(shè)計報告,每個人應(yīng)體現(xiàn)自己的個性設(shè)計。進度安排第17周星期二8 :0012:00星期三8 :0012:00星期四8 :0012:00星期五8 :0012:00星期六8 :0012:00第18周星期五8 :0012:00三、參考書籍1. C+程序設(shè)計課程設(shè)計振安編著TP312C5632. C+ Builder 和 Delphi 課程設(shè)計與系統(tǒng)開發(fā)案例 伍俊良 清華大學 7-

4、302-06072-X3. Visual C+ 課程設(shè)計案例精編 嚴華峰 中國水利水電 7-5084-2007-1 20044. Visual C+ 課程設(shè)計與系統(tǒng)開發(fā)案例 伍俊良 清華大學 7-302-05968-3 20025.Visual C+ 語言課程設(shè)計 :案例精選與編程指導(dǎo)清華朱紅東南大學7-81089-275-4 20036.VisualC+ 課程設(shè)計案例精編中國水利水電7-5084-1004-120027. 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計案例精編:用C/C+苗述建學、【/ 光元口 十一TvH吳春芳清華大學7-302-14536-9 2007編程平臺不限, vc+, c+ Builder 等等

5、。)課題: 學生考勤管理系統(tǒng)一)、課程設(shè)計題目:學生考勤管理系統(tǒng)(二)、目的與要求 :1、目的:(1)要求學生達到熟練掌握 C+語言的基本知識和技能;( 2)基本掌握面向?qū)ο蟪绦蛟O(shè)計的基本思路和方法; (3)能夠利用所學的基本知識和技能, 解決簡單的面向?qū)ο蟪绦蛟O(shè)計問 題。2、基本要求:(1 )要求利用面向?qū)ο蟮姆椒ㄒ约?C+勺編程思想來完成系統(tǒng)的設(shè)計;(2)要求在設(shè)計的過程中,建立清晰的類層次;(3)在系統(tǒng)中至少要定義四個類,每個類中要有各自的屬性和方法;(4)在系統(tǒng)的設(shè)計中,至少要用到面向?qū)ο蟮囊环N機制。3、創(chuàng)新要求:在基本要求達到后, 可進行創(chuàng)新設(shè)計, 如根據(jù)查找結(jié)果進行修改的功能。4、

6、寫出設(shè)計說明書 (三)、設(shè)計方法和基本原理:1 、問題描述(功能要求) : 考勤信息記錄了學生的缺課情況, 它包括:缺課日期、第幾節(jié)課 (連續(xù)多 節(jié)課用 begin-end 的形式表示 )、課程名稱(課程名稱中不會出現(xiàn)空格) 、學生、 缺課類型(遲到、早退、請假及曠課) 。試設(shè)計考勤管理系統(tǒng),使之能提供以下 功能:1)錄入學生的缺課記錄:從鍵盤輸入數(shù)據(jù)(提示:為避免重復(fù)從鍵盤 輸入數(shù)據(jù),測試時可將數(shù)據(jù)存儲在文件中,利用輸入重定向功能讀入) ,輸 入格式為:缺課日期第幾節(jié)課 課程名稱學生 缺課類型 每行一條紀錄。例如:2008-04-29 3-4 C+ 程序設(shè)計實驗 三 遲到 2008-04-2

7、8 3-4 C+ 程序設(shè)計 四 曠課2)修改某個學生的缺課記錄:可以對缺課紀錄的任意部分進行修改, 然后顯示一下修改后的紀錄。3)查詢某個學生的缺課情況:查詢結(jié)果按照日期升序排序,同一天按 照所缺課程的時間升序排序。4)統(tǒng)計某段時間(以天為單位) ,曠課學生及曠課節(jié)數(shù),查詢結(jié)果先 按曠課節(jié)數(shù)降序排序,曠課節(jié)數(shù)相同的學生按升序排序;5)統(tǒng)計某段時間,有學生曠課的課程及曠課人次,按曠課人次由多到少排序,曠課人次相同的課程按課程名稱升序排序;6)系統(tǒng)以菜單方式工作。(所謂菜單指用戶可以自由選擇所要執(zhí)行的功 能)2、問題的解決方案: 根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟:(1)應(yīng)用系統(tǒng)分析,

8、建立該系統(tǒng)的功能模塊框圖以及界面的組織和設(shè)計;(2)分析系統(tǒng)中的各個實體及它們之間的關(guān)系包括屬性和行為;(3)根據(jù)問題描述,設(shè)計系統(tǒng)的類層次;( 4)完成類層次中各個類的描述(包括屬性和方法) ;(5)完成類中各個成員函數(shù)的定義;(6)完成系統(tǒng)的應(yīng)用模塊;(7)功能調(diào)試;(8)完成系統(tǒng)總結(jié)報告以及系統(tǒng)使用說明書目錄1. 系統(tǒng)需求分析 12. 總體設(shè)計 23. 詳細設(shè)計 44. 系統(tǒng)調(diào)試 .65. 結(jié)果分析 96. 總結(jié) 101. 系統(tǒng)需求分析 考勤信息記錄了學生的缺課情況,它包括:缺課日期、第幾節(jié)課 (連續(xù)用 begin-end 的形式表示 ) 、課程名稱 (課程名稱中不會出 現(xiàn)空格)、學生、

9、缺課類型(遲到、早退、請假及曠課) 。試設(shè)計 考勤管理系統(tǒng),使之能提供以下功能:(1) 錄入學生的缺課記錄:從鍵盤輸入數(shù)據(jù)(提示:為避免 重復(fù)從鍵盤輸入數(shù)據(jù),測試時可將數(shù)據(jù)存儲在文件中,利用輸入 重定向功能讀入),輸入格式為: 缺課日期 第幾節(jié)課 課程名稱學 生 缺課類型每行一條紀錄。例如:2009-04-29 2-4 中國近現(xiàn)代文學史 云龍 遲到2009-04-28 2-4 大學生社交禮儀 馬志鵬 曠課(2) 修改某個學生的缺課記錄: 可以對缺課紀錄的任意部分 進行修改,然后顯示一下修改后的紀錄。(3) 查詢某個學生的缺課情況: 查詢結(jié)果按照日期升序排序, 同一天按照所缺課程的時間升序排序。

10、(4) 統(tǒng)計某段時間(以天為單位) ,曠課學生及曠課節(jié)數(shù), 查詢結(jié)果先按曠課節(jié)數(shù)降序排序,曠課節(jié)數(shù)相同的學生按升序排 序;(5) 統(tǒng)計某段時間,有學生曠課的課程及曠課人次,按曠 課人次由多到少排序,曠課人次相同的課程按課程名稱升序排序;(6) 系統(tǒng)以菜單方式工作。 (所謂菜單指用戶可以自由選擇 所要執(zhí)行的功能。學生可以通過以上功能錄入信息、修改信息、 查詢信息、整理統(tǒng)計出所要了解的信息,除了要實現(xiàn)上述的基本 功能之外,本系統(tǒng)還應(yīng)該在細節(jié)上下工夫,使用戶使用方便,在 使用的過程中保持一個愉快的心情。學生考勤管理系統(tǒng)有廣大的 用戶群,這其中有老師、有教務(wù)處主任、有公司管理人員,也可 以供給一般用戶

11、使用。總之該系統(tǒng)可以滿足用戶需求,實現(xiàn)對其 管理的人員的考勤工作。2. 總體設(shè)計學生考勤管理系統(tǒng)包含五個大的功能,分別是:錄入學生缺課信 息、修改學生缺課信息、 查詢某個學生的缺課情況、 統(tǒng)計某段時間(以 天為單位),曠課學生及曠課節(jié)數(shù)和統(tǒng)計某段時間,有學生曠課的課 程及曠課人次。學生的缺課信息主要包含缺課日期,第幾節(jié)課、課程 名稱,學生,缺課類型。在錄入學生缺課信息時根據(jù)系統(tǒng)提示逐一輸入。每輸入完一條信 息,系統(tǒng)會提示是否繼續(xù)輸入,用戶可以選擇繼續(xù)或返回主菜單。在修改學生缺課信息時,用戶首先輸入要修改的學生,系統(tǒng)會檢 索如果系統(tǒng)中有該學生的相關(guān)信息則系統(tǒng)首先會提示用戶修改該學 生的那一部分信

12、息, 用戶可自行選擇。 如果系統(tǒng)中沒有該學生的相關(guān) 信息,則系統(tǒng)會給相關(guān)提示, 用戶可以選擇繼續(xù)輸入要修改的學生或 選擇退出返回主菜單。在查詢學生缺課信息時,用戶先輸入要查詢的學生,系統(tǒng)檢索判 斷是否存在該學生的信息然后做出相應(yīng)的提示。 總之,用戶可以方便 的在系統(tǒng)提示下進行使用。學生考勤管理系統(tǒng)中功能模塊圖:菜單錄入缺課學 生的姓名、 缺課日期、 缺課節(jié)次、 缺課課程按時間升序 顯示曠課學 生姓名及曠 課節(jié)數(shù)修改某學生的 缺課日期、缺 課節(jié)次、缺課 課程名稱、缺 課類型查詢某學生的 缺課日期、缺 課節(jié)次、缺課 課程名稱、缺 課類型按時間升序 顯示有學生 曠課的課程 及曠課人次3. 詳細設(shè)計(

13、1) 類的設(shè)計此系統(tǒng)設(shè)計了兩個類,一個是 record 類,一個是 records 類。 Record 類完 成對學生基本信息的聲明與獲取,包括學生、缺課日期、缺課課程名稱、缺課課 程類型、缺課節(jié)次。Record 類的設(shè)計class recordpublic:void set(string d,int cno,string c,string s,int type)date.assign(d);/ 缺課日期 cname.assign(c);/ 缺課課程名稱 sname.assign(s);/ 學生 this->cno=cno;/ 缺課節(jié)次 this->type=type;/ 缺課類型

14、void set(record re)date.assign(re.date);/ 獲取缺課日期 cname.assign(ame);/ 獲取缺課課程名稱 sname.assign(re.sname);/ 獲取學生 this->cno=o;/ 獲取缺課節(jié)次 this->type=re.type;/ 獲取缺課類型string date,cname,sname;/ 定義日期,課程名稱,學生 int cno,type;/ 定義缺課節(jié)次,缺課類型;(2) 學生考勤系統(tǒng)的顯示模塊void pri(records *r)/ 函數(shù) if(r->n=0)cout<<"

15、記錄為空 !"<<endl;return;cout<v"n序號t缺課日期節(jié)次t課程名稱t學生t缺課"<<endl;for(int i=0;i<r->n;i+)cout<<i<<"t"<<flush;prione(r->ri);(3) 學生考勤系統(tǒng)的查詢模塊void pri(records *r)/ 函數(shù)if(r->n=0)cout<<" 記錄為空 !"<<endl; return;coutvv"n 序號

16、t缺課日期節(jié)次t課程名稱t學生t缺課類型"<<endl;for(int i=0;i<r->n;i+)cout<<i<<"t"<<flush; prione(r->ri);(4) 學生考勤系統(tǒng)的修改模塊void edt(records *r)/ 函數(shù)if(r->n=0)cout<<" 記錄為空 !"<<endl;return;cout<<" 請輸入要修改缺課記錄的學生 : "<<flush;string t1

17、,t3,t4;char tmp30;int t2,t5,flag=0;cin>>tmp;t1.assign(tmp);for(int i=0;i<r->n;i+)if(r->ri.sname=t1)flag=7;break;if(!flag)cout<<" 查無此學生 !"<<endl; return;t1=r->ri.date;t2=r->o;t3=r->ame;t4=r->ri.sname;t5=r->ri.type;cout<<" 請輸入要修改

18、的項目 :n(1. 缺課日期 2. 缺課節(jié)次 3. 缺課名稱 4. 學生 5. 缺課類型 6. 全部) "<<flush;e0:cin>>flag;switch(flag)case 1:goto e1;case 2:goto e2;case 3:goto e3;case 4:goto e4;case 5:goto e5;case 6:goto e1;default:goto e0;e1:cout<<" 請輸入缺課日期 : ( 例如 100216) "<<flush;cin>>t1;if(flag!=6)g

19、oto e6;e2:cout<<" 請輸入缺第幾節(jié)課 : "<<flush;cin>>t2;if(flag!=6)goto e6;e3:cout<<" 請輸入缺課名稱 : "<<flush;cin>>t3;if(flag!=6)goto e6;e4:cout<<" 請輸入缺課學生 : "<<flush;cin>>t4;if(flag!=6)goto e6;e5:cout<<" 請輸入缺課類型 : (1. 遲

20、到 2. 早退 3. 請假 4. 曠課) "<<flush; cin>>t5;e6:r->ri.set(t1,t2,t3,t4,t5);char yn;cout<<" 保存修改 ? (y/n) "<<flush;cin>>yn;if(yn='y')wt(r);else return;(5) 學生考勤系統(tǒng)的刪除模塊void del(records *r)/ 函數(shù)if(r->n=0)cout<<" 記錄為空 !"<<endl;return

21、;cout<<" 請輸入要刪除的記錄的序號 : ( 輸入 -1 刪除全部 ) "<<flush; int flag;cin>>flag; if(flag>r->n-1&&flag<-1)cout<<" 不存在所要刪除的記錄 !"<<endl;return;else if(flag=-1)r->n=0;elsefor(int i=flag;i<r->n-1;i+) r->ri.set(r->ri+1);r->n-;char yn

22、;cout<<" 保存修改 ? (y/n) "<<flush;cin>>yn;if(yn='y')wt(r);else return;(6) 學生考勤系統(tǒng)的錄入模塊void input(records *r)/錄入string t1,t3,t4;int t2,t5,flag=0;char yn;cout<<" 請輸入學生缺課記錄 :"<<endl;m1:cout<<" 請輸入缺課日期 : ( 例如 100216) "<<flush; c

23、in>>t1;if(!(timechk(t1)goto m1;m2:cout<<" 請輸入缺第幾節(jié)課 : "<<flush;cin>>t2; if(t2<1|t2>10)cout<<" 節(jié)次錄入有誤 ! 請重新錄入 : "<<endl; goto m2;cout<<" 請輸入缺課名稱 : "<<flush;cin>>t3;cout<<" 請輸入缺課學生 : "<<flush

24、;cin>>t4;m3:cout<<" 請輸入缺課類型 : (1. 遲到 2. 早退 3. 請假 4. 曠課) "<<flush; cin>>t5;if(t5<1|t5>4)cout<<" 類型輸入有誤 ! 請重新錄入 : "<<endl; goto m3;for(int i=0;i<r->n;i+)if(r->ri.date=t1&&r->o=t2&&r->ame=t3&&

25、r->ri. sname=t4&&r->ri.type=t5) cout<<" 該條記錄已存在 , 是否添加為新記錄 ? (y/n) "<<flush;n1: cin>>yn; if(yn='y')break; else if(yn='n')goto n2; else goto n1; r->rr->n+.set(t1,t2,t3,t4,t5);n2:cout<<" 是否繼續(xù)輸入 ? (y/n) "<<flush;n3:ci

26、n>>yn;if(yn='y')goto m1;else if(yn='n')cout<<" 保存修改 ? (y/n) "<<flush; cin>>yn;if(yn='y')wt(r);else return;else goto n3;(7) 學生考勤系統(tǒng)的統(tǒng)計模塊void search_s(records *r)/ 統(tǒng)計if(r->n=0)cout<<" 記錄為空 !"<<endl; return;records *r1=ne

27、w records();g1:cout<<" 請輸入要檢索的時間圍 : ( 例如 080610-080612) "<<flush; string tmp,ld,hd;cin>>tmp; ld.assign(tmp.substr(0,6); hd.assign(tmp.substr(7,6); if(!timechk(ld)|!timechk(hd)goto g1;for(int i=0;i<r->n;i+)if(r->ripare(ld)>=0&&r->ripare(hd)<=0&

28、;&r->r i.type=4)r1->rr1->n+.set(r->ri);cout<<" 請選擇統(tǒng)計方式 : (1. 學生曠課情況降序顯示 2. 課程曠課情況降序 顯示 )"<<flush;g2:cin>>i;switch(i)case 1:cout«"n在"vvldvv"到"vvhdvv"期間學生曠課情況如下:"<<endl; r1->order_s();break;case 2:cout<<"

29、;n在"vvldvv"到"vvhdvv"期間課程曠課情況如下:"<<endl; r1->order_c();break;default:goto g2;4.程序調(diào)試(1)程序開始運行的界面X "C:DocuBents and SettinsXAdBinis1ratorfflc+Sil_5lCT0下載Y計 況錄>統(tǒng)> 錄墨記的/? 記錄課諜課況zt 課記缺缺缺情產(chǎn) M課的的的課74 生缺塞生曠/3 需瓷X靑Z2 .有生儼仆仆間統(tǒng)<1 列一丈詢改脣出擇 能唾唾層刪-T退選 IL 一! n- ft - -

30、 if HJr 主(2)程序顯示功能的界面"C: Docu»ent s and 孔"iiigslBdMiid.呂tratoH兒商 W+課性讖itl呂 ICTQ下豪-C-N .ui w.y計1 況艮曩統(tǒng)、 錄書薦4 記杲課星況zfi 怏記tttt就營 H課的的專 " 生缺注竝譲蟲 甬WfbE/2 ;肓主個個個曝tl ft旳亠T菲呆果E牛: 列_夭詢I*喙出擇 能罡靈自_>刪其退連 功2.3.4.S.6.庸型類課 到 缺#早曠fey曠曠退稱名>1asua性誘甘豆吠英白叵主Flrna皺節(jié)次缺課日期083412989623021314089314 0

31、89623 胸0仙111 311憾回功龍列越5巾,序號(3)程序錄入功能的界面I管理系統(tǒng)U1.角4034.B.課)2C+名<l/n 人恍悅-姓-5 肝笑節(jié)鷲舉? /2生 HRBSX -個個舅C1¥31課 石薩-T呆見呆片齊兼缺缺缺缺缺進 列一艾詢咬脣岀擇一入入入入X鍵 能顯 功1 .2. .4.5.靈人請錄請込aw厘PI疋 況錄錄統(tǒng) 錄愿遼的 記錄課課課撫 謨記缺缺缺情 H說的的的誄 性缺比生住曠 (-I1>21 2 60 > 8 丹00 zhl <3 艮 早 口器叟狗折音半;(4)程序查詢功能的界面p "C: Docu>cnts and Se

32、tt ingsAdiinist rat orMc+i程設(shè)計51CT0下建-C_2計況錄錄統(tǒng) 記錄課課課況 課記缺缺缺情 訣畀為対堤 4缺注生需 甫賽Z厲 =1個個個間統(tǒng)<1查 于某某某時系要 能顯畧一修刪養(yǎng)選輸 助2.3.4.SB.n-ffw芋號缺課日期節(jié)次060G233返回功能列裹?(5)程序修改功能的界面c* "C: &DciL>en-t s and Set t ingsAdKi_ni_st r at oi桌面'<:*課程'vh 5 I CTO下載-13 次/6錄:節(jié)5Z5記目課二 蟲諜項缺課;Z3缺的2-節(jié)znZ2改改田幾3 :有生禾個

33、間統(tǒng)08第? 耒頁丁M早T-TF 亍-尋 mwlri 列£詢改養(yǎng)出擇入入知入修毘wffi吟|<1請保計 況錄錄統(tǒng) 錄墨記的 記錄課課課況 課記缺缺缺情 缺課的的的課 注缺注注生曠(6)程序刪除功能的界面輸k-1刪除全部4杲圓門祝錄錄統(tǒng)苕 錄MP記的/7序 記錄課課課況兒的> 課記缺缺缺情Z5錄聖/n 缺諜的的的課/4記了 3 生缺生睪曠X3的巾?Z2除 3 表= -I個個個間統(tǒng)<1刪孑列,r «SU3 :要改能土 列-詢-SSSHS:A-修功 U?地某退選善回狗5. 結(jié)果分析這次的課設(shè),我寫的程序也沒有什么獨到之處,我覺得唯一可以從我的程序可以看 出的是數(shù)

34、組用得比較多,反正是沒啥特色,不僅如此,還寫得功能不全,實在是慚愧。 現(xiàn)在在這里也只能說說它的不足之處了。類層次不夠清晰,縱觀整個程序可以發(fā)現(xiàn)四個類之間的關(guā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然后

35、用cout«p;語句可以輸出字符數(shù)組里全部的容, 但利用函數(shù)返回指針值 卻不能做到這一點,在我思考一番后終于明白了,這與存中的地址值有關(guān)。具體為什么 我是解釋不清了在調(diào)用系統(tǒng)的顯示功能時,如果在 getname() 函數(shù)前加一個 *號輸出的只是一個字 符,不加反而能輸出所有字符。 getname() 函數(shù)的返回值為指針類型,但前面說過利用 函數(shù)返回指針類型的值并不能輸出字符數(shù)組中所有的字符, 為什么這里又可以呢?這是 為什么?我不知道這一知識,這也算我的程序的不足之處吧!對于兩個統(tǒng)計函數(shù)的功能不全,我感到無能為力,我為了這兩函數(shù)苦思了兩天,硬 是沒湊合來。到后來,腦子里都亂了,運行時

36、屏幕上盡是些亂七八糟的東西。結(jié)果不是 很好,但過程夠了就行。這也是自欺欺人的看法,讓我再一次自責吧。6. 總結(jié)這次的程序設(shè)計相對于上學期還是有了進步的。學生考勤管理系統(tǒng)要求 至少要有四個類,在起初,對于定義哪四個類我是不清楚的,通過仔細的 研讀問題描敘終于在腦海里確定了這四個類。既然是學生考勤管理系統(tǒng), 那由學生缺課信息中的日期我想到了時間類,這是一個很簡單的類。從系 統(tǒng)的幾大功能我又想到了系統(tǒng)的基礎(chǔ)就是缺課學生的缺課信息,于是我又 想到了一個信息類,還有兩個類是根據(jù)兩個統(tǒng)計功能想到的,在現(xiàn)在看來 似乎有些不妥。通過這次的課程設(shè)計我明白了學習程序設(shè)計語言必須要勤 做實驗,通過實驗總結(jié)經(jīng)驗。平時

37、遇到的一些小問題一定要重視,越是基 礎(chǔ)的知識越要理解透徹。比如指針與數(shù)組方面的知識,一旦沒有弄清楚, 在設(shè)計程序時就會吃虧。這次的課設(shè)中,我遇到了很多的問題, 有的通過思考或查看書本解決了, 有的還留在腦子里,只有通過孜孜不倦的求索我們才會有進步,不懂得思 考就不能真正的掌握一門知識。這次的實驗給以了我警示,它讓我明白我 所掌握的知識還很欠缺,對于繼承與派生這一章的知識,我以為自己勉強 掌握了,這次實驗后我發(fā)現(xiàn)我掌握得還不夠。基類的保護成員公有繼承到 派生類,類外是否可以通過對象來訪問呢,原先我認為是可以的,經(jīng)過這 次程序設(shè)計,我知道我錯了。總之,我覺得做學問不應(yīng)該馬虎,對于所學一定要有深入的

38、理解,這也 是我這次課設(shè)得到的啟示。附錄:源程序#include<iostream> #include<cstring> #include<windows.h> using namespace std;/ 時間類 class time public: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 time public:xinxi() tiaoshu+; xinxi()tiaoshu-;

39、 void setname(char *n)strcpy(name,n); void settime(int y,int m,int d)year=y;month=m;day=d; void setqklx(char *qk)strcpy(queke,qk); void setjieci(char *jc)strcpy(jieci,jc); void setkechen(char *kc)strcpy(kechen,kc); char *getname()char *n;n=name;return n; char *getqklx()char *qk=queke;return qk; char

40、 *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;int xinxi:tiaoshu=0;int *xinxi:gettime() int *t;t=tm;tm0=year;tm1=month;tm2=day;return t;/ / 缺課課程類class qkechen:public

41、xinxipublic:qkechen()kcshu+;qkechen()kcshu-;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;i<n;i+)if(*(st1i+1.gettime()+1)=*(st1j.gettime()+1)&&*(st1i+1

42、.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; / 靜態(tài)數(shù)據(jù)成員;int qstu:

43、qst=0;/ 類的實現(xiàn)void qstu:print(xinxi &st1)cout<<"| 缺課日期 |"<<" 第幾節(jié)課 |"<<" 課程名稱 |"<<" 缺課類型 |"<<endl; cout<<"|"<<*st1.gettime()<<"|"<<*(st1.gettime()+1)<<*(st1.gettime()+2)<<&q

44、uot;|" <<st1.getjieci()<<"|"<<st1.getkechen()<<"|"<<st1.getqklx()<<"|"<<endl;int qstu:getjs(xinxi st1,int n,int j) int i=0,js=0;xinxi min;if(*(st1j.getjieci()+2)!='0')js=+2;elsejs+;for(i=0;i<n;i+) if(*(st1i+1.get

45、time()+1)=*(st1j.gettime()+1)&&*(st1i+1.gettime()+2)=*(st1j.gettime()+2) if(strcmp(st1i+1.getname(),qstn)=0) if(*(st1i.getjieci()+2)!='0') js=+2;elsejs+;jieshu=js;return jieshu;/ 函數(shù)聲明int shuru(xinxi st1);void chaxun(xinxi st1,qstu qt);void xiugai(xinxi st1,int n);void tongji1(xinxi s

46、t1,qstu qt1);void tongji2(xinxi st1,qkechen qk1);void caidan();void xiansi(xinxi &st1);void setqstn(xinxi st1,qstu qt1,int n);void setqkn(xinxi st1,qkechen qk,int n);/ 全局變量int g,k=1,b=1;int q=-1;char name20,kechen10,queke10,jieci3;int y,m,d;/ 主函數(shù)int main() xinxi tl15; / 定義 15 條信息類對象 qstu qt10;qk

47、echen qk6;int ch;while(1)cout<<"* 歡迎進入學生考勤管理系統(tǒng)! *"<<endl; caidan();cout<<" 請選擇菜單項 :"<<endl;cin>>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); break; case 5: tongji2(tl,qk);

48、 break; case 6: exit(0); return 0;/ 菜單函數(shù) void caidan() system("color A");cout<<"*、'<<endlcout<<"*cout<<"*、'<<endl;cout<<"1. 錄入學生的缺課記錄*"<<endl;學生考勤管理系統(tǒng)*"<<endl;cout<<"2. 修 改 學 生 的缺課記錄*"<

49、<endl;cout<<"3. 查 詢 學 生 的缺課情況*"<<endl;cout<<"4.- 統(tǒng)計某段時間曠課學生及曠課節(jié)數(shù) -*"<<endl;cout<<"5.- 統(tǒng)計某段時間曠課的課程及曠課人次 *"<<endl;cout<<"6. 退 出系統(tǒng)*"<<endl;/ 輸入函數(shù)int shuru(xinxi st1) char a; cout<<" 輸入開始! "<<

50、;endl;do q+; cout<<" 請輸入學生 "<<endl; cin>>name; st1q.setname(name); cout<<" 請輸入課程名稱 "<<endl; cin>>kechen; st1q.setkechen(kechen); cout<<" 請輸入缺課日期 "<<endl; cin>>y>>m>>d; st1q.settime(y,m,d); cout<<&qu

51、ot; 請輸入缺課類型 "<<endl; cin>>queke; st1q.setqklx(queke); cout<<" 請輸入缺課節(jié)次 "<<endl; cin>>jieci; st1q.setjieci(jieci); cout<<" 是否還要繼續(xù)輸入 :(y/n)"<<endl; cin>>a; while(a='y'); return q+1;/ 修改函數(shù) void xiugai(xinxi st1,int n) int k

52、=1,j=0,a10;int flgh;int h; while(k=1) cout<<" 請輸入你要修改缺課記錄的學生 "<<endl; cin>>name;flgh=0;for(int i=0;i<n;i+) if(strcmp(name,st1i.getname()=0) do aj=i;"<<endl;cout<<"1. 修改日期 2. 修改節(jié)次 3. 修改課程名稱 4. 修改缺課類型cout<<" 請輸入要選擇的數(shù)值 (1,2,3,4)"<&

53、lt;endl;int b;cin>>b;if(b=1) cout<<" 請輸入新日期 "<<endl; cin>>y>>m>>d; st1i.settime(y,m,d);else if(b=2)cout<<" 請輸入新節(jié)次 "<<endl; cin>>jieci;st1i.setjieci(jieci);else if(b=3)cout<<" 請輸入新課程名稱 "<<endl; cin>>

54、kechen;st1i.setkechen(kechen);else if(b=4) cout<<" 請輸入新缺課類型 "<<endl; cin>>queke;st1i.setqklx(queke);flgh=1;j+; while(b<1|b>4);if(flgh=0)cout<<" 沒有你要找的學生,請重試要退出請按 0"<<endl; cin>>k;elsecout<<" 還要繼續(xù)嗎 (10) 退出請按 0"<<endl;

55、 cin>>k;for(int i=0;i<j;i+) h=ai; xiansi(st1h);/ 查詢函數(shù)void chaxun(xinxi st1,qstu qt) char n='y' int u10; while(n='y') int j=0;cout<<" 輸入你要查詢的學生 :"<<endl; cin>>name;int i=0; for(;i<g;i+) if(strcmp(name,st1i.getname()=0) uj=i; j+; if(j=0) cout<

56、<" 沒有你所要的學生名字 !"/ 沒有找到 cout<<" 是否退出退出請按 nn" cin>>n;for(int a=0;a<j;a+) / 只有一條信息if(j<2) i=ua;cout<<"| 缺課日期 |"<<" 第幾節(jié)課 |"<<" 課程名稱 |"<<" 缺課類型 |"<<endl;cout<<"| "<<*st1i.g

57、ettime()<<"| "<<*(st1i.gettime()+1)<<"| "<<*(st1i.gettime()+2)<<"| "<<st1i.getjieci()<<"| "<<st1i.getkechen()<<"| "<<st1i.getqklx()<<"| "<<endl;/ 兩條信息以上排序 else i=ua;if(

58、*(st1i.gettime()+1)<*(st1i+1.gettime()+1) qti.print(st1i);else if(*(st1i.gettime()+1)=*(st1i+1.gettime()+1)&&*(st1i.gettime()+2)<*( st1i+1.gettime()+2)qti.print(st1i); else if(*(st1i.gettime()+1)=*(st1i+1.gettime()+1)&&*(st1i.gettime()+2)=* (st1i+1.gettime()+2)if(strcmp(st1i.ge

59、tjieci(),st1i+1.getjieci()=-1)qti.print(st1i);cout<<" 是否繼續(xù)查詢 (y/n) 繼續(xù)請按 y 退出按 n"<<endl; cin>>n;/ 統(tǒng)計某段時間曠課學生及曠課節(jié)數(shù)void tongji1(xinxi st1,qstu qt1) int d1=0,js=0;xinxi min;if(g=0)cout<<" 沒有你要統(tǒng)計的學生信息請返回菜單錄入學生缺課信息 "<<endl; else if(g=1) cout<<":

60、"<<st10.getname()<<endl; if(*(st10.getjieci()+2)!='0')js=+2;elsejs+;cout<<" 節(jié)數(shù) :"<<js<<endl;else/ 信息按時間排序int i=0;for(;i<(g-1);i+) if(*(st1i.gettime()+1)<*(st1i+1.gettime()+1) min=st1i;st1i=st1i+1;st1i+1=st1i; elseif(*(st1i.gettime()+1)=*(st1

61、i+1.gettime()+1)&&*(st1i.gettime()+2)<*( st1i+1.gettime()+2)min=st1i;st1i=st1i+1;st1i+1=st1i; elseif(*(st1i.gettime()+1)=*(st1i+1.gettime()+1)&&*(st1i.gettime()+2)=* (st1i+1.gettime()+2)d1+;for(int j=0;j<(g-d1);j+)cout<<*st1j.gettime()<<*(st1j.gettime()+1)<<*(st1j.gettime()+2)<

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論