2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  面向?qū)ο笳n程設(shè)計(jì)</b></p><p>  題 目 C++課程設(shè)計(jì) </p><p>  課題:C++課程設(shè)計(jì)</p><p>  (一)、課程設(shè)計(jì)題目:</p><p><b>  C++課程設(shè)計(jì) </b></p>&

2、lt;p> ?。ǘ⒛康呐c要求: </p><p><b>  1、目的: </b></p><p> ?。?)要求學(xué)生達(dá)到熟練掌握C++語言的基本知識和技能; </p><p>  (2)基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法; </p><p> ?。?)能夠利用所學(xué)的基本知識和技能,解決簡單的面向?qū)ο蟪绦?/p>

3、設(shè)計(jì)問題。 </p><p><b>  2、基本要求: </b></p><p>  (1)要求利用面向?qū)ο蟮姆椒ㄒ约癈++的編程思想來完成系統(tǒng)的設(shè)計(jì); </p><p> ?。?)要求在設(shè)計(jì)的過程中,建立清晰的類層次; </p><p> ?。?)在系統(tǒng)中至少要定義四個類,每個類中要有各自的屬性和方法; </p

4、><p>  (4)在系統(tǒng)的設(shè)計(jì)中,至少要用到面向?qū)ο蟮囊环N機(jī)制。 </p><p><b>  3、創(chuàng)新要求: </b></p><p>  在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如根據(jù)查找結(jié)果進(jìn)行修改的功能。 </p><p>  4、寫出設(shè)計(jì)說明書 </p><p> ?。ㄈ?、設(shè)計(jì)方法和基本原理:

5、 </p><p>  1、問題描述(功能要求): </p><p>  考勤信息記錄了學(xué)生的缺課情況,它包括:缺課日期、第幾節(jié)課(連續(xù)多節(jié)課用 begin-end 的形式表示)、課程名稱(課程名稱中不會出現(xiàn)空格)、學(xué)生姓名、缺課類型(遲到、早退、請假及曠課)。試設(shè)計(jì)考勤管理系統(tǒng),使之能提供以下功能:</p><p>  1).錄入學(xué)生的缺課記錄:從鍵盤輸入數(shù)據(jù)(提

6、示:為避免重復(fù)從鍵盤輸入數(shù)據(jù),測試時可將數(shù)據(jù)存儲在文件中,利用輸入重定向功能讀入),輸入格式為:</p><p>  缺課日期第幾節(jié)課 課程名稱學(xué)生姓名 缺課類型</p><p><b>  每行一條紀(jì)錄。</b></p><p><b>  例如:</b></p><p>  2008-04-29

7、 3-4 C++程序設(shè)計(jì)實(shí)驗(yàn) 張三 遲到</p><p>  2008-04-28 3-4 C++程序設(shè)計(jì) 李四 曠課</p><p>  2).修改某個學(xué)生的缺課記錄:可以對缺課紀(jì)錄的任意部分進(jìn)行修改,然后顯示一下修改后的紀(jì)錄。</p><p>  3).查詢某個學(xué)生的缺課情況:查詢結(jié)果按照日期升序排序,同一天內(nèi)按照所缺課程的時間升序排序。</p>

8、<p>  4).統(tǒng)計(jì)某段時間內(nèi)(以天為單位),曠課學(xué)生姓名及曠課節(jié)數(shù),查詢結(jié)果先按曠課節(jié)數(shù)降序排序,曠課節(jié)數(shù)相同的學(xué)生按姓名升序排序;</p><p>  5).統(tǒng)計(jì)某段時間內(nèi),有學(xué)生曠課的課程及曠課人次,按曠課人次由多到少排序,曠課人次相同的課程按課程名稱升序排序; </p><p>  6).系統(tǒng)以菜單方式工作。(所謂菜單指用戶可以自由選擇所要執(zhí)行的功能)</p&g

9、t;<p>  2、問題的解決方案: </p><p>  根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟: </p><p> ?。?)應(yīng)用系統(tǒng)分析,建立該系統(tǒng)的功能模塊框圖以及界面的組織和設(shè)計(jì);</p><p>  (2)分析系統(tǒng)中的各個實(shí)體及它們之間的關(guān)系包括屬性和行為; </p><p> ?。?)根據(jù)問題描述,設(shè)計(jì)系統(tǒng)的

10、類層次; </p><p> ?。?)完成類層次中各個類的描述(包括屬性和方法); </p><p> ?。?)完成類中各個成員函數(shù)的定義; </p><p> ?。?)完成系統(tǒng)的應(yīng)用模塊; </p><p><b> ?。?)功能調(diào)試; </b></p><p> ?。?)完成系統(tǒng)總結(jié)報告以及系

11、統(tǒng)使用說明書</p><p><b>  目 錄</b></p><p>  1.系統(tǒng)需求分析1</p><p><b>  2.總體設(shè)計(jì)1</b></p><p><b>  3.詳細(xì)設(shè)計(jì)1</b></p><p><b>  

12、4.系統(tǒng)調(diào)試1</b></p><p><b>  5.結(jié)果分析1</b></p><p><b>  6.總結(jié)1</b></p><p><b>  附錄:源程序清單</b></p><p><b>  系統(tǒng)需求分析</b><

13、;/p><p>  考勤信息記錄了學(xué)生的缺課情況,它包括:缺課日期、第幾節(jié)課(連續(xù)用begin-end的形式表示)、課程名稱(課程名稱中不會出現(xiàn)空格)、學(xué)生姓名、缺課類型(遲到、早退、請假及曠課)。試設(shè)計(jì)考勤管理系統(tǒng),使之能提供以下功能:</p><p>  1).錄入學(xué)生的缺課記錄:從鍵盤輸入數(shù)據(jù)(提示:為避免重復(fù)從鍵盤輸入數(shù)據(jù),測試時可將數(shù)據(jù)存儲在文件中,利用輸入重定向功能讀入),輸入格式

14、為:缺課日期 第幾節(jié)課 課程名稱學(xué)生姓名 缺課類型</p><p><b>  每行一條紀(jì)錄。</b></p><p><b>  例如:</b></p><p>  2009-04-29 2-4 中國近現(xiàn)代文學(xué)史 李云龍 遲到</p><p>  2009-04-28 2-4 大學(xué)生社交禮儀 馬志

15、鵬 曠課</p><p>  2).修改某個學(xué)生的缺課記錄:可以對缺課紀(jì)錄的任意部分進(jìn)行修改,然后顯示一下修改后的紀(jì)錄。</p><p>  3).查詢某個學(xué)生的缺課情況:查詢結(jié)果按照日期升序排序,同一天內(nèi)按照所缺課程的時間升序排序。</p><p>  4).統(tǒng)計(jì)某段時間內(nèi)(以天為單位),曠課學(xué)生姓名及曠課節(jié)數(shù),查詢結(jié)果先按曠課節(jié)數(shù)降序排序,曠課節(jié)數(shù)相同的學(xué)生按姓

16、名升序排序;</p><p>  5).統(tǒng)計(jì)某段時間內(nèi),有學(xué)生曠課的課程及曠課人次,按曠課人次由多到少排序,曠課人次相同的課程按課程名稱升序排序; </p><p>  6).系統(tǒng)以菜單方式工作。(所謂菜單指用戶可以自由選擇所要執(zhí)行的功能。學(xué)生可以通過以上功能錄入信息、修改信息、查詢信息、整理統(tǒng)計(jì)出所要了解的信息,除了要實(shí)現(xiàn)上述的基本功能之外,本系統(tǒng)還應(yīng)該在細(xì)節(jié)上下工夫,使用戶使用方便,

17、在使用的過程中保持一個愉快的心情。學(xué)生考勤管理系統(tǒng)有廣大的用戶群,這其中有老師、有教務(wù)處主任、有公司管理人員,也可以供給一般用戶使用??傊撓到y(tǒng)可以滿足用戶需求,實(shí)現(xiàn)對其管理的人員的考勤工作。</p><p><b>  總體設(shè)計(jì)</b></p><p>  學(xué)生考勤管理系統(tǒng)包含五個大的功能,分別是:錄入學(xué)生缺課信息、修改學(xué)生缺課信息、查詢某個學(xué)生的缺課情況、統(tǒng)計(jì)某段

18、時間內(nèi)(以天為單位),曠課學(xué)生姓名及曠課節(jié)數(shù)和統(tǒng)計(jì)某段時間內(nèi),有學(xué)生曠課的課程及曠課人次。學(xué)生的缺課信息主要包含缺課日期,第幾節(jié)課、課程名稱,學(xué)生姓名,缺課類型。</p><p>  在錄入學(xué)生缺課信息時根據(jù)系統(tǒng)提示逐一輸入。每輸入完一條信息,系統(tǒng)會提示是否繼續(xù)輸入,用戶可以選擇繼續(xù)或返回主菜單。</p><p>  在修改學(xué)生缺課信息時,用戶首先輸入要修改的學(xué)生姓名,系統(tǒng)會檢索如果系統(tǒng)中

19、有該學(xué)生的相關(guān)信息則系統(tǒng)首先會提示用戶修改該學(xué)生的那一部分信息,用戶可自行選擇。如果系統(tǒng)中沒有該學(xué)生的相關(guān)信息,則系統(tǒng)會給相關(guān)提示,用戶可以選擇繼續(xù)輸入要修改的學(xué)生姓名或選擇退出返回主菜單。</p><p>  在查詢學(xué)生缺課信息時,用戶先輸入要查詢的學(xué)生姓名,系統(tǒng)檢索判斷是否存在該</p><p>  學(xué)生的信息然后做出相應(yīng)的提示??傊?,用戶可以方便的在系統(tǒng)提示下進(jìn)行使用。</p&

20、gt;<p>  學(xué)生考勤管理系統(tǒng)中功能模塊圖:</p><p><b>  3. 詳細(xì)設(shè)計(jì)</b></p><p>  學(xué)生考勤管理系統(tǒng)中四個類的類層次圖為:</p><p>  圖2 學(xué)生考勤管理系統(tǒng)中中四個類的類層次圖</p><p>  學(xué)生考勤管理系統(tǒng)中各功能模塊的實(shí)現(xiàn):</p>

21、<p>  圖3 學(xué)生考勤管理系統(tǒng)中菜單函數(shù)的功能圖</p><p>  學(xué)生缺課信息錄用功能模塊:</p><p>  圖4 學(xué)生缺課信息錄入的功能</p><p>  修改某學(xué)生缺課信息功能的模塊圖</p><p>  圖5 學(xué)生考勤管理系統(tǒng)修改學(xué)生缺課信息功能圖</p><p>  3 查詢

22、某學(xué)生缺課信息功能圖:</p><p>  圖6 學(xué)生考勤管理系統(tǒng)查詢學(xué)生缺課信息功能圖</p><p>  統(tǒng)計(jì)某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)功能模塊:</p><p>  圖7統(tǒng)計(jì)某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)功能圖</p><p>  5、統(tǒng)計(jì)某段時間內(nèi),有學(xué)生曠課的課程及曠課人次功能模塊</p><p> 

23、 圖8 統(tǒng)計(jì)某段時間內(nèi),有學(xué)生曠課的課程及曠課人次功能圖</p><p>  圖 9 學(xué)生考勤管理系統(tǒng)中四個類的UML圖</p><p><b>  系統(tǒng)調(diào)試</b></p><p>  程序編寫完成后,我進(jìn)行了程序調(diào)試。調(diào)試過程中,出現(xiàn)了以下問題:當(dāng)錄入學(xué)生缺課信息時,出現(xiàn)了無法退出錄入函數(shù)的情況,主要原因是輸入函數(shù)中whi

24、le循環(huán)語句沒有設(shè)置跳出循環(huán)的條件。除此之外,修改某學(xué)生缺課信息時,如果沒有該學(xué)生的缺課信息,系統(tǒng)沒有提示要用戶沒有該學(xué)生信息,也沒有建議用戶重新輸入要修改的學(xué)生姓名。由此我發(fā)現(xiàn)了該系統(tǒng)修改學(xué)生缺課信息的不足。于是,我對修改函數(shù)進(jìn)行了修改與完善。在該函數(shù)中,我設(shè)置了if語句用來判斷系統(tǒng)中是否存有用戶要修改的學(xué)生缺課信息。如果沒有,則提示用戶沒有該學(xué)生的缺課信息,用戶可以選擇繼續(xù)輸入要修改的學(xué)生姓名或者退出修改環(huán)節(jié),可以在 循環(huán)語句中改變

25、循環(huán)進(jìn)行的條件從而終止循環(huán)。至于在修改后顯示該學(xué)生的缺課信息,運(yùn)行時發(fā)現(xiàn)系統(tǒng)并沒有做到這一點(diǎn),對源代碼檢查之后發(fā)現(xiàn)是修改函數(shù)中顯示函數(shù)的調(diào)用出了點(diǎn)問題,顯示函數(shù)的實(shí)參有誤,應(yīng)該把要修改缺課信息的學(xué)生所在的信息類對象作為實(shí)參,然后用顯示函數(shù)的形參引用實(shí)參對象,通過對象調(diào)用信息類的成員函數(shù),從而實(shí)現(xiàn)顯示功能。至于該系統(tǒng)的查詢功能的實(shí)現(xiàn),在調(diào)試時發(fā)現(xiàn)還有欠缺,當(dāng)隨便輸入一個學(xué)生姓名時,系統(tǒng)沒有顯示該學(xué)生的缺課信息,也沒有提</p>

26、<p><b>  5. 結(jié)果分析</b></p><p>  這次的課設(shè),我寫的程序也沒有什么獨(dú)到之處,我覺得唯一可以從我的程序可以看出的是數(shù)組用得比較多,反正是沒啥特色,不僅如此,還寫得功能不全,實(shí)在是慚愧。現(xiàn)在在這里也只能說說它的不足之處了。</p><p>  類層次不夠清晰,縱觀整個程序可以發(fā)現(xiàn)四個類之間的關(guān)系不甚恰當(dāng),我有這個感覺,但我不知如

27、何改進(jìn)。</p><p>  函數(shù)參數(shù)設(shè)定不夠完美,整個程序中對指針的運(yùn)用比較少。對于指針的巧妙運(yùn)用把握得不夠。還有就是容易missing;或者是},這都是些應(yīng)該改掉的毛病。</p><p>  除此以外,我對于怎樣用文件保存數(shù)據(jù)還沒深入了解,但我將數(shù)據(jù)保存到文件后又因文件打不開而無法訪問文件中的數(shù)據(jù),對于動態(tài)鏈表,我不是很清晰,也就是說無法做到熟稔運(yùn)用。在調(diào)試過程中我發(fā)現(xiàn)在主函數(shù)中把字符

28、數(shù)組名name賦值給字符指針p即p=name;然后用cout<<p;語句可以輸出字符數(shù)組里全部的內(nèi)容,但利用函數(shù)返回指針值卻不能做到這一點(diǎn),在我思考一番后終于明白了,這與內(nèi)存中的地址值有關(guān)。具體為什么我是解釋不清了</p><p>  在調(diào)用系統(tǒng)的顯示功能時,如果在getname()函數(shù)前加一個*號輸出的只是一個字符,不加反而能輸出所有字符。getname()函數(shù)的返回值為指針類型,但前面說過利用函數(shù)

29、返回指針類型的值并不能輸出字符數(shù)組中所有的字符,為什么這里又可以呢?老天,這是為什么?我不知道這一知識,這也算我的程序的不足之處吧!</p><p>  對于兩個統(tǒng)計(jì)函數(shù)的功能不全,我感到無能為力,我為了這兩函數(shù)苦思了兩天,硬是沒湊合來。到后來,腦子里都亂了,運(yùn)行時屏幕上盡是些亂七八糟的東西。老師幫我看看,看有沒有什么簡單的方法一下搞定它。</p><p>  結(jié)果不是很好,但過程夠了就行

30、。這也是自欺欺人的看法,讓我再一次自責(zé)吧。</p><p><b>  6.總結(jié)</b></p><p>  這次的程序設(shè)計(jì)相對于上學(xué)期還是有了進(jìn)步的。學(xué)生考勤管理系統(tǒng)要求至少要有四個類,在起初,對于定義哪四個類我是不清楚的,通過仔細(xì)的研讀問題描敘終于在腦海里確定了這四個類。既然是學(xué)生考勤管理系統(tǒng),那由學(xué)生缺課信息中的日期我想到了時間類,這是一個很簡單的類。從系統(tǒng)的幾

31、大功能我又想到了系統(tǒng)的基礎(chǔ)就是缺課學(xué)生的缺課信息,于是我又想到了一個信息類,還有兩個類是根據(jù)兩個統(tǒng)計(jì)功能想到的,在現(xiàn)在看來似乎有些不妥。通過這次的課程設(shè)計(jì)我明白了學(xué)習(xí)程序設(shè)計(jì)語言必須要勤做實(shí)驗(yàn),通過實(shí)驗(yàn)總結(jié)經(jīng)驗(yàn)。平時遇到的一些小問題一定要重視,越是基礎(chǔ)的知識越要理解透徹。比如指針與數(shù)組方面的知識,一旦沒有弄清楚,在設(shè)計(jì)程序時就會吃虧。</p><p>  這次的課設(shè)中,我遇到了很多的問題,有的通過思考或查看書本解

32、決了,有的還留在腦子里,只有通過孜孜不倦的求索我們才會有進(jìn)步,不懂得思考就不能真正的掌握一門知識。這次的實(shí)驗(yàn)給以了我警示,它讓我明白我所掌握的知識還很欠缺,對于繼承與派生這一章的知識,我以為自己勉強(qiáng)掌握了,這次實(shí)驗(yàn)后我發(fā)現(xiàn)我掌握得還不夠?;惖谋Wo(hù)成員公有繼承到派生類,類外是否可以通過對象來訪問呢,原先我認(rèn)為是可以的,經(jīng)過這次程序設(shè)計(jì),我知道我錯了。</p><p>  總之,我覺得做學(xué)問不應(yīng)該馬虎,對于所學(xué)一定

33、要有深入的理解,這也是我這次課設(shè)得到的啟示。</p><p><b>  附錄:源程序清單 </b></p><p>  #include<iostream></p><p>  #include<cstring></p><p>  #include<windows.h></p

34、><p>  using namespace std; </p><p><b>  //時間類</b></p><p>  class time</p><p><b>  {public:</b></p><p>  time(int y=0,int m=0,int d=0)

35、</p><p>  {year=y;month=m;day=d;}</p><p><b>  ~time(){}</b></p><p>  protected:</p><p>  int year,month,day;</p><p><b>  };</b><

36、/p><p><b>  //信息類</b></p><p>  class xinxi:public time</p><p><b>  { public:</b></p><p>  xinxi(){ tiaoshu++;}</p><p>  ~xinxi(){tiaos

37、hu--;}</p><p>  void setname(char *n){strcpy(name,n);}</p><p>  void settime(int y,int m,int d){year=y;month=m;day=d;}</p><p>  void setqklx(char *qk){strcpy(queke,qk);}</p>

38、<p>  void setjieci(char *jc){strcpy(jieci,jc);}</p><p>  void setkechen(char *kc){strcpy(kechen,kc);}</p><p>  char *getname(){char *n;n=name;return n;}</p><p>  char *getqklx

39、(){char *qk=queke;return qk;}</p><p>  char *getjieci(){char *jc;jc=jieci;return jc;}</p><p>  char *getkechen(){char *gk;gk=kechen;return gk;}</p><p>  int *gettime();</p>&

40、lt;p><b>  private:</b></p><p>  char name[20];//姓名</p><p>  char jieci[3],kechen[10],queke[10];</p><p>  int tm[3];</p><p>  static int tiaoshu;</p>

41、;<p><b>  };</b></p><p>  int xinxi::tiaoshu=0;</p><p>  int *xinxi::gettime()</p><p>  { int *t;</p><p><b>  t=tm;</b></p><

42、p>  tm[0]=year;</p><p>  tm[1]=month;</p><p>  tm[2]=day;</p><p><b>  return t;</b></p><p><b>  }</b></p><p><b>  //缺課課程類&

43、lt;/b></p><p>  class qkechen:public xinxi</p><p><b>  {public:</b></p><p>  qkechen(){kcshu++;}</p><p>  ~qkechen(){kcshu--;}</p><p>  int

44、getrc(xinxi st1[],int n,int j);</p><p>  char qkn[20];//公有數(shù)據(jù)成員</p><p><b>  private:</b></p><p>  int renci;</p><p>  static int kcshu;//靜態(tài)數(shù)據(jù)成員</p>&l

45、t;p><b>  };</b></p><p>  int qkechen::kcshu=0;</p><p>  int qkechen::getrc(xinxi st1[],int n,int j)</p><p>  { renci=0;</p><p><b>  renci++;</

46、b></p><p>  for(int i=0;i<n;i++)</p><p>  if(*(st1[i+1].gettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettime()+2)==</p><p>  *(st1[j].gettime()+2))</p><p

47、>  if(strcmp(qkn,st1[i].getkechen())==0)</p><p><b>  renci++;</b></p><p>  return renci;</p><p><b>  }</b></p><p><b>  //缺課學(xué)生類</b>

48、;</p><p>  class qstu:public xinxi</p><p><b>  {public:</b></p><p>  qstu(){qst++;}</p><p>  ~qstu(){qst--;}</p><p>  void print(xinxi &st1

49、);</p><p>  int getjs(xinxi st1[],int n,int j);</p><p>  int setjs(int js=0)</p><p>  {jieshu=js;}</p><p>  char qstn[20];</p><p><b>  private:</b

50、></p><p>  int jieshu; </p><p>  static int qst; //靜態(tài)數(shù)據(jù)成員</p><p><b>  };</b></p><p>  int qstu::qst=0; </p><p><b>  //類的實(shí)現(xiàn)</b>&l

51、t;/p><p>  void qstu::print(xinxi &st1)</p><p><b>  { </b></p><p>  cout<<"| 缺課日期 |"<<" 第幾節(jié)課 |"<<" 課程名稱 |"<<"

52、 缺課類型|"<<endl;</p><p>  cout<<"|"<<*st1.gettime()<<"|"<<*(st1.gettime()+1)<<*(st1.gettime()+2)<<"|"<<st1.getjieci()<<&

53、quot;|"</p><p>  <<st1.getkechen()<<"|"<<st1.getqklx()<<"|"<<endl;</p><p><b>  }</b></p><p>  int qstu::getjs(xinx

54、i st1[],int n,int j)</p><p>  { int i=0,js=0;</p><p>  xinxi min; </p><p>  if(*(st1[j].getjieci()+2)!='\0')</p><p><b>  js=+2;</b></p>&l

55、t;p><b>  else</b></p><p><b>  js++;</b></p><p>  for(i=0;i<n;i++)</p><p>  if(*(st1[i+1].gettime()+1)==*(st1[j].gettime()+1)&&*(st1[i+1].gettim

56、e()+2)==*(st1[j].gettime()+2))</p><p>  if(strcmp(st1[i+1].getname(),qstn)==0)</p><p><b>  { </b></p><p>  if(*(st1[i].getjieci()+2)!='\0')</p><p>

57、<b>  js=+2;</b></p><p><b>  else</b></p><p><b>  js++;</b></p><p><b>  }</b></p><p>  jieshu=js;</p><p>  r

58、eturn jieshu;</p><p><b>  }</b></p><p><b>  // 函數(shù)聲明</b></p><p>  int shuru(xinxi st1[]);</p><p>  void chaxun(xinxi st1[],qstu qt[]);</p>

59、<p>  void xiugai(xinxi st1[],int n);</p><p>  void tongji1(xinxi st1[],qstu qt1[]);</p><p>  void tongji2(xinxi st1[],qkechen qk1[]);</p><p>  void caidan();</p><p

60、>  void xiansi(xinxi &st1);</p><p>  void setqstn(xinxi st1[],qstu qt1[],int n);</p><p>  void setqkn(xinxi st1[],qkechen qk[],int n);</p><p><b>  //全局變量</b></

61、p><p>  int g,k=1,b=1;</p><p><b>  int q=-1;</b></p><p>  char name[20],kechen[10],queke[10],jieci[3];</p><p>  int y,m,d; </p><p><b>  //主

62、函數(shù)</b></p><p>  int main()</p><p>  { xinxi tl[15];//定義15條信息類對象</p><p>  qstu qt[10];</p><p>  qkechen qk[6];</p><p><b>  int ch;</b>&l

63、t;/p><p><b>  while(1)</b></p><p>  {cout<<"********歡迎進(jìn)入學(xué)生考勤管理系統(tǒng)!*********"<<endl;</p><p><b>  caidan();</b></p><p>  cout<

64、;<"--------請選擇菜單項(xiàng):"<<endl;</p><p><b>  cin>>ch;</b></p><p>  switch(ch)</p><p>  {case 1: g=shuru(tl); break;</p><p>  case 2: xiug

65、ai(tl,g); break;</p><p>  case 3: chaxun(tl,qt); break;</p><p>  case 4: tongji1(tl,qt); break;</p><p>  case 5: tongji2(tl,qk); break;</p><p>  case 6: exit(0);</p&

66、gt;<p><b>  }</b></p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  } </b></p><p><b>  //菜單函數(shù)</

67、b></p><p>  void caidan()</p><p>  { system("color A");</p><p>  cout<<"*************************************************************"<<endl;</

68、p><p>  cout<<"* 學(xué)生考勤管理系統(tǒng) *"<<endl;</p><p>  cout<<"*************************************************************"<

69、<endl; cout<<"1.-------------錄入學(xué)生的缺課記錄---------------------------*"<<endl; cout<<"2.-------------修改學(xué)生的缺課記錄---------------------------*"<<endl;</p><p>  cout<

70、<"3.-------------查詢學(xué)生的缺課情況---------------------------*"<<endl;</p><p>  cout<<"4.--------統(tǒng)計(jì)某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)--------------*"<<endl; </p><p>  cout<<

71、"5.--------統(tǒng)計(jì)某段時間內(nèi)曠課的課程及曠課人次----------------*"<<endl;</p><p>  cout<<"6.----------------退出系統(tǒng)----------------------------------*"<<endl;</p><p><b>  }&

72、lt;/b></p><p><b>  //輸入函數(shù)</b></p><p>  int shuru(xinxi st1[])</p><p><b>  { char a;</b></p><p>  cout<<"------輸入開始!----"<&

73、lt;endl;</p><p><b>  do{ q++;</b></p><p>  cout<<"請輸入學(xué)生姓名"<<endl;</p><p>  cin>>name;</p><p>  st1[q].setname(name);</p>

74、<p>  cout<<"請輸入課程名稱"<<endl;</p><p>  cin>>kechen;</p><p>  st1[q].setkechen(kechen);</p><p>  cout<<"請輸入缺課日期"<<endl;</p>

75、;<p>  cin>>y>>m>>d;</p><p>  st1[q].settime(y,m,d);</p><p>  cout<<"請輸入缺課類型"<<endl;</p><p>  cin>>queke;</p><p>  

76、st1[q].setqklx(queke);</p><p>  cout<<"請輸入缺課節(jié)次"<<endl;</p><p>  cin>>jieci;</p><p>  st1[q].setjieci(jieci);</p><p>  cout<<"是否還要

77、繼續(xù)輸入:(y/n)"<<endl;</p><p><b>  cin>>a;</b></p><p>  }while(a=='y');</p><p>  return q+1;</p><p><b>  }</b></p>&

78、lt;p><b>  //修改函數(shù)</b></p><p>  void xiugai(xinxi st1[],int n)</p><p><b>  { </b></p><p>  int k=1,j=0,a[10];</p><p><b>  int flgh;<

79、/b></p><p><b>  int h;</b></p><p>  while(k==1) </p><p>  { cout<<"請輸入你要修改缺課記錄的學(xué)生姓名"<<endl;</p><p>  cin>>name;</p>

80、<p><b>  flgh=0;</b></p><p>  for(int i=0;i<n;i++)</p><p>  if(strcmp(name,st1[i].getname())==0)</p><p>  do{ a[j]=i;</p><p>  cout<<"1.修

81、改日期2.修改節(jié)次3.修改課程名稱4.修改缺課類型"<<endl;</p><p>  cout<<"請輸入要選擇的數(shù)值(1,2,3,4)"<<endl;</p><p><b>  int b;</b></p><p><b>  cin>>b;</

82、b></p><p><b>  if(b==1)</b></p><p>  { cout<<"請輸入新日期"<<endl;</p><p>  cin>>y>>m>>d;</p><p>  st1[i].settime(y,m,d

83、);</p><p><b>  }</b></p><p>  else if(b==2)</p><p>  {cout<<"請輸入新節(jié)次"<<endl;</p><p>  cin>>jieci;</p><p>  st1[i].se

84、tjieci(jieci);</p><p><b>  }</b></p><p>  else if(b==3)</p><p>  {cout<<"請輸入新課程名稱"<<endl;</p><p>  cin>>kechen;</p><p

85、>  st1[i].setkechen(kechen);</p><p><b>  }</b></p><p>  else if(b==4)</p><p>  { cout<<"請輸入新缺課類型"<<endl;</p><p>  cin>>queke;

86、</p><p>  st1[i].setqklx(queke);</p><p><b>  } </b></p><p>  flgh=1;j++;</p><p>  }while(b<1||b>4);</p><p>  if(flgh==0)</p><p

87、>  {cout<<"沒有你要找的學(xué)生姓名,請重試要退出請按0"<<endl;</p><p><b>  cin>>k;</b></p><p><b>  }</b></p><p><b>  else</b></p>

88、<p>  {cout<<"還要繼續(xù)嗎(1\0)退出請按0"<<endl;</p><p><b>  cin>>k;</b></p><p><b>  }</b></p><p><b>  }</b></p><

89、;p>  for(int i=0;i<j;i++)</p><p>  { h=a[i];</p><p>  xiansi(st1[h]);</p><p><b>  }</b></p><p><b>  }</b></p><p><b> 

90、 // 查詢函數(shù)</b></p><p>  void chaxun(xinxi st1[],qstu qt[])</p><p><b>  { </b></p><p>  char n='y';</p><p>  int u[10];</p><p>  w

91、hile(n=='y')</p><p>  { int j=0;</p><p>  cout<<"輸入你要查詢的學(xué)生姓名:"<<endl;</p><p>  cin>>name; </p><p><b>  int i=0;</b>

92、</p><p>  for(;i<g;i++)</p><p>  if(strcmp(name,st1[i].getname())==0)</p><p>  { u[j]=i;</p><p><b>  j++;</b></p><p><b>  }</b>

93、</p><p><b>  if(j==0)</b></p><p>  { cout<<"沒有你所要的學(xué)生名字!";//沒有找到</p><p>  cout<<"是否退出退出請按n\n";</p><p><b>  cin>>

94、;n;</b></p><p><b>  }</b></p><p>  for(int a=0;a<j;a++)</p><p>  { //只有一條信息</p><p><b>  if(j<2)</b></p><p><b> 

95、 { i=u[a];</b></p><p>  cout<<"| 缺課日期 |"<<" 第幾節(jié)課 |"<<" 課程名稱 |"<<" 缺課類型|"<<endl;</p><p>  cout<<"| "<

96、;<*st1[i].gettime()<<"| "<<*(st1[i].gettime()+1)<<"| "<<*(st1[i].gettime()+2)<<"| "<<st1[i].getjieci()<<"| "</p><p>  <

97、;<st1[i].getkechen()<<"| "<<st1[i].getqklx()<<"| "<<endl;</p><p><b>  } </b></p><p>  //兩條信息以上排序</p><p><b>  el

98、se</b></p><p><b>  {</b></p><p><b>  i=u[a];</b></p><p>  if(*(st1[i].gettime()+1)<*(st1[i+1].gettime()+1))</p><p>  qt[i].print(st1[i]

99、);</p><p>  else if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*(st1[i+1].gettime()+2))</p><p>  qt[i].print(st1[i]);</p><p>  else if(*(st1[i]

100、.gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==*(st1[i+1].gettime()+2))</p><p>  if(strcmp(st1[i].getjieci(),st1[i+1].getjieci())==-1)</p><p>  qt[i].print(st1[i]);</p

101、><p><b>  }</b></p><p>  cout<<"是否繼續(xù)查詢(y/n)繼續(xù)請按y退出按n"<<endl;</p><p><b>  cin>>n;</b></p><p><b>  }</b></

102、p><p><b>  } </b></p><p><b>  } </b></p><p>  //統(tǒng)計(jì)某段時間內(nèi)曠課學(xué)生姓名及曠課節(jié)數(shù)</p><p>  void tongji1(xinxi st1[],qstu qt1[])</p><p>  { int

103、d1=0,js=0;</p><p>  xinxi min;</p><p><b>  if(g==0)</b></p><p>  cout<<"沒有你要統(tǒng)計(jì)的學(xué)生信息請返回菜單錄入學(xué)生缺課信息"<<endl;</p><p>  else if(g==1)</p&

104、gt;<p>  {cout<<"姓名:"<<st1[0].getname()<<endl;</p><p>  if(*(st1[0].getjieci()+2)!='\0')</p><p><b>  js=+2;</b></p><p><b&

105、gt;  else</b></p><p><b>  js++;</b></p><p>  cout<<"節(jié)數(shù):"<<js<<endl;</p><p><b>  } </b></p><p><b>  else

106、</b></p><p><b>  //信息按時間排序</b></p><p><b>  {int i=0;</b></p><p>  for(;i<(g-1);i++)</p><p><b>  {</b></p><p>

107、  if(*(st1[i].gettime()+1)<*(st1[i+1].gettime()+1))</p><p>  {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];}</p><p>  else if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].ge

108、ttime()+2)<*(st1[i+1].gettime()+2))</p><p>  {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];}</p><p>  else if(*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==*(s

109、t1[i+1].gettime()+2))</p><p><b>  d1++;</b></p><p><b>  }</b></p><p>  for(int j=0;j<(g-d1);j++)</p><p><b>  {</b></p><

110、;p>  cout<<*st1[j].gettime()<<*(st1[j].gettime()+1)<<*(st1[j].gettime()+2)<<endl;</p><p>  for(i=0;i<k;i++)</p><p>  { setqstn(st1,qt1,g);</p><p>  cou

111、t<<"姓名:"<<qt1[i].qstn<<endl;</p><p>  cout<<"節(jié)數(shù):"<<qt1[i].getjs(st1,g,i)<<endl;</p><p><b>  }</b></p><p><b>

112、;  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //統(tǒng)計(jì)某段時間內(nèi)曠課的課程及曠課人次 </p><p>  void tongji2(xinxi st1[],qkechen qk1[])</p><

113、;p>  { int d1=0,rc=0;</p><p>  xinxi min;</p><p><b>  if(g==0)</b></p><p>  cout<<"沒有你要統(tǒng)計(jì)的學(xué)生信息請返回菜單錄入學(xué)生缺課信息"<<endl;</p><p>  else i

114、f(g==1)</p><p>  {cout<<"課程名:"<<st1[0].getkechen()<<endl;</p><p><b>  rc++;</b></p><p>  cout<<"人數(shù):"<<rc<<endl;&

115、lt;/p><p><b>  } </b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  int i=0;</b></p><p>  for(;i<g;i+

116、+)</p><p><b>  {</b></p><p>  if(*(st1[i].gettime()+1)<*(st1[i+1].gettime()+1))</p><p>  {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];}</p><p>  else if(

117、*(st1[i].gettime()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)<*(st1[i+1].gettime()+2))</p><p>  {min=st1[i];st1[i]=st1[i+1];st1[i+1]=st1[i];}</p><p>  else if(*(st1[i].gettim

118、e()+1)==*(st1[i+1].gettime()+1)&&*(st1[i].gettime()+2)==*(st1[i+1].gettime()+2))</p><p><b>  d1++;</b></p><p><b>  }</b></p><p>  for(int j=0;j<(g

119、-d1);j++)</p><p><b>  {</b></p><p>  cout<<*st1[j].gettime()<<*(st1[j].gettime()+1)<<*(st1[j].gettime()+2)<<endl;</p><p>  for(i=0;i<b;i++)<

120、;/p><p>  { setqkn(st1,qk1,g);</p><p>  cout<<"課程名:"<<qk1[i].qkn<<endl;</p><p>  cout<<"人數(shù):"<<qk1[i].getrc(st1,g,i)<<endl;</p

121、><p><b>  } </b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //顯示函數(shù)</b></

122、p><p>  void xiansi(xinxi &st1)</p><p>  { cout<<"| 缺課日期 |"<<" 第幾節(jié)課 |"<<" 課程名稱 |"<<" 學(xué)生姓名|"<<" 缺課類型|"<&

123、lt;endl;</p><p>  cout<<"|"<<*(st1.gettime())<<"|"<<*(st1.gettime()+1)<<*(st1.gettime()+2)</p><p>  <<"|"<<st1.getjieci()&

124、lt;<"|"<<st1.getkechen()<<"|"<<st1.getname()<<"|"<<st1.getqklx()<<"|"<<endl; </p><p><b>  }</b></p>&l

125、t;p><b>  //設(shè)置缺課學(xué)生名</b></p><p>  void setqstn(xinxi st1[],qstu qt1[],int n)</p><p><b>  { </b></p><p><b>  int i=0;</b></p><p>  f

126、or(;i<n;i++)</p><p><b>  {if(i==0)</b></p><p>  strcpy(qt1[0].qstn,st1[i].getname());</p><p>  else if(strcmp(st1[i].getname(),st1[i+1].getname())!=0)</p><

127、p>  {strcpy(qt1[i].qstn,st1[i].getname());</p><p><b>  k++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b>

128、</p><p>  //設(shè)置有缺課學(xué)生的課程名</p><p>  void setqkn(xinxi st1[],qkechen qk[],int n)</p><p><b>  { </b></p><p><b>  int i=0;</b></p><p> 

129、 for(;i<n;i++)</p><p>  { if(i==0)</p><p>  strcpy(qk[0].qkn,st1[i].getkechen());</p><p>  else if(strcmp(st1[i].getkechen(),st1[i+1].getkechen())!=0)</p><p>  

130、{strcpy(qk[i].qkn,st1[i+1].getkechen());</p><p><b>  b++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論