c++課程設(shè)計(jì)學(xué)生選修課選課系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩27頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  學(xué)生選修課選課系統(tǒng)</b></p><p><b>  目 錄</b></p><p><b>  1 前言1</b></p><p><b>  2 需求分析2</b></p><p>  2.1 編寫(xiě)目的2<

2、;/p><p>  2.2 需求概述2</p><p>  2.3 需求說(shuō)明2</p><p>  2.4 開(kāi)發(fā)環(huán)境2</p><p><b>  3 總體設(shè)計(jì)3</b></p><p>  3.1功能模塊圖3</p><p><b>  3.2 流程圖4

3、</b></p><p>  3.3 類(lèi)的設(shè)計(jì)圖5</p><p>  4 各功能模塊設(shè)計(jì)7</p><p><b>  4.1整體設(shè)計(jì)7</b></p><p>  4.2主要的功能函數(shù)設(shè)計(jì)7</p><p><b>  5 系統(tǒng)調(diào)試8</b><

4、/p><p>  6 總結(jié)與體會(huì)14</p><p><b>  6.1 總結(jié)14</b></p><p>  6.2 編寫(xiě)程序中遇到的問(wèn)題及解決辦法14</p><p><b>  參考文獻(xiàn)15</b></p><p><b>  附錄 源程序16</

5、b></p><p><b>  須眉原作</b></p><p><b>  1 前言</b></p><p>  隨著計(jì)算機(jī)的普及,各高校均采用計(jì)算機(jī)進(jìn)行學(xué)生選課。學(xué)生選修課系統(tǒng)主要包含選修課管理系統(tǒng)及學(xué)生選課系統(tǒng)兩部分。</p><p>  學(xué)生選修課系統(tǒng)一般需要有管理員管理選修課課程,

6、然后學(xué)生對(duì)經(jīng)過(guò)管理員操作后的選修課進(jìn)行選課。選修課管理系統(tǒng)由管理員登錄,對(duì)當(dāng)前所有選修課課程進(jìn)行管理操作。學(xué)生選課系統(tǒng)則是由學(xué)生登錄,學(xué)生可以查看由管理員整理好的所有選修課,并從顯示出的選修課中選擇自己要選擇的課程。</p><p>  管理員管理選修課實(shí)質(zhì)是對(duì)后臺(tái)選修課庫(kù)中的選修課信息進(jìn)行操作,可以在庫(kù)中添加課程或刪除課程。學(xué)生選課的實(shí)質(zhì)即是先打印出后臺(tái)選修課庫(kù)中所有選修課信息以供選擇,選擇課程即是對(duì)后臺(tái)學(xué)生信

7、息庫(kù)里的學(xué)生信息進(jìn)行修改。</p><p><b>  2 需求分析</b></p><p><b>  2.1 編寫(xiě)目的</b></p><p> ?。?)要求學(xué)生達(dá)到熟練掌握C++語(yǔ)言的基本知識(shí)和技能; </p><p>  (2)基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本思路和方法; </p>

8、<p>  (3)能夠利用所學(xué)的基本知識(shí)和技能,解決簡(jiǎn)單的面向?qū)ο蟪绦蛟O(shè)計(jì)問(wèn)題;</p><p>  (4)通過(guò)編寫(xiě)此系統(tǒng),實(shí)現(xiàn)選修課系統(tǒng)的基本功能。</p><p><b>  2.2 需求概述</b></p><p>  (1)系統(tǒng)中包括兩個(gè)登陸身份(管理員與學(xué)生),并對(duì)應(yīng)不同的功能;</p><p>

9、 ?。?)對(duì)于管理員,此系統(tǒng)具有添加、刪除、查看選修課等功能;</p><p>  (3)對(duì)于學(xué)生,此系統(tǒng)具有選課、查詢等功能</p><p><b>  2.3 需求說(shuō)明</b></p><p>  此系統(tǒng)可以實(shí)現(xiàn)學(xué)生選課,管理員管理課程的基本功能</p><p><b>  2.4 開(kāi)發(fā)環(huán)境</b&g

10、t;</p><p>  使用Visual C++6.0編程軟件</p><p><b>  3 總體設(shè)計(jì)</b></p><p><b>  3.1功能模塊圖</b></p><p><b>  (1)學(xué)生</b></p><p>  學(xué)生身份有兩個(gè)功

11、能,分別是選課與查看個(gè)人信息。如圖3.1所示。</p><p>  圖 3.1 學(xué)生功能模塊圖</p><p><b>  管理員</b></p><p>  管理員可以對(duì)選修課課程進(jìn)行管理。如下圖所示。</p><p>  圖 3.2 管理員功能模塊圖</p><p><b>  3.

12、2 流程圖</b></p><p>  進(jìn)入系統(tǒng)后可以選擇以學(xué)生身份或者管理員身份登錄。學(xué)生登錄需要輸入個(gè)人的學(xué)號(hào)及姓名,成功登錄后可以選課或查詢個(gè)人信息。管理員的登錄需要輸入密碼,成功登錄后則可以對(duì)當(dāng)前所有的選修課進(jìn)行管理操作,可添加新選修課或刪除已有的選修課。詳細(xì)操作流程如下圖所示。</p><p><b>  圖 3.3 流程圖</b></p&

13、gt;<p><b>  3.3 類(lèi)的設(shè)計(jì)圖</b></p><p><b>  Course類(lèi)</b></p><p>  Course類(lèi)即選修課課程類(lèi)。數(shù)據(jù)成員分別是:課程編號(hào)、課程名稱(chēng)、課程類(lèi)型、開(kāi)課時(shí)間、授課學(xué)時(shí)、實(shí)驗(yàn)學(xué)時(shí)、總學(xué)時(shí)以及學(xué)分。成員函數(shù)則包含所有數(shù)據(jù)成員的get函數(shù),用以獲取數(shù)據(jù)成員的值,set函數(shù)用來(lái)修改課程

14、,print函數(shù)則是打印課程的信息。如下圖所示。</p><p>  圖 3.4 Course類(lèi)</p><p><b>  Student類(lèi)</b></p><p>  Student類(lèi)即學(xué)生類(lèi)。其中包含了學(xué)生的學(xué)號(hào)、學(xué)生姓名、所選的兩門(mén)課程及兩門(mén)選修課課程的總學(xué)分。setId和setName是用來(lái)修改相關(guān)成員的值,getName獲取學(xué)生的

15、姓名,print函數(shù)用來(lái)打印學(xué)生的相關(guān)信息,個(gè)selectCourse則是用來(lái)選課。如下圖所示。</p><p>  圖3.5 Student類(lèi)</p><p><b>  4 各功能模塊設(shè)計(jì)</b></p><p><b>  4.1整體設(shè)計(jì)</b></p><p>  對(duì)于學(xué)生和選修課,我們分別

16、定義了相應(yīng)的類(lèi)Student和類(lèi)Course,其間的關(guān)系就是學(xué)生類(lèi)中有兩個(gè)選修課類(lèi)對(duì)象成員。而對(duì)于管理員我們并沒(méi)有單獨(dú)去定義類(lèi),因?yàn)楣芾韱T只是對(duì)選修課進(jìn)行操作,程序中并不需要訪問(wèn)管理員的信息。</p><p>  為了方便對(duì)選修課進(jìn)行管理及多位學(xué)生的登錄,我們定義了一個(gè)選修課數(shù)組和學(xué)生數(shù)組。</p><p>  4.2主要的功能函數(shù)設(shè)計(jì)</p><p><b&

17、gt;  選課函數(shù) </b></p><p>  void selectCourse(Student s1[10], Course c1[M], int s_num1) </p><p>  對(duì)當(dāng)前學(xué)生對(duì)象進(jìn)行操作,覆蓋其選修課對(duì)象成員c1或c2,即學(xué)生的選課。</p><p>  兩種輸出所需選修課函數(shù)</p><p> 

18、 按學(xué)分輸出選修課函數(shù) void selectScore(Course c1[M])</p><p>  按類(lèi)型輸出選修課void selectNature(Course c1[M])</p><p>  對(duì)傳遞進(jìn)來(lái)的選修課數(shù)組進(jìn)行掃描,輸出符合要求的選修課。</p><p><b>  選修課排序函數(shù) </b></p><

19、p>  void xu(Course c1[M])</p><p>  使用冒泡排序法對(duì)選修課數(shù)組進(jìn)行編號(hào)從小到大的排序。</p><p><b>  主菜單函數(shù) </b></p><p>  void menu(Course c1[6], Student s1[10])</p><p>  所有菜單循環(huán)都在其中,

20、調(diào)用其他函數(shù)來(lái)實(shí)現(xiàn)具體功能。</p><p><b>  5 系統(tǒng)調(diào)試</b></p><p><b>  系統(tǒng)主界面</b></p><p>  進(jìn)入系統(tǒng)主界面后可以選擇登錄身份或退出程序。如圖5.1所示。</p><p>  圖5.1 系統(tǒng)主界面</p><p><

21、b>  2.選修課管理系統(tǒng)</b></p><p>  圖5.1選擇登錄身份為管理員,默認(rèn)密碼123,輸入-1可返回圖5.1界面。密碼輸入正確后可進(jìn)入管理員登錄系統(tǒng)。如圖5.2所示。</p><p>  圖5.2 選修課管理系統(tǒng)</p><p><b>  按學(xué)分查看選修課</b></p><p>  

22、圖5.2選擇查看選修課,可以查看當(dāng)前所有的選修課課程的相關(guān)信息。可以選擇不同的輸出方式:按學(xué)分查詢、按類(lèi)型查詢、顯示全部。選擇按學(xué)分查詢,在選擇0.5,可打印當(dāng)前所有課程中學(xué)分為0.5的課程信息。如圖5.3所示。</p><p>  圖5.3 按學(xué)分查看選修課</p><p><b>  查詢?nèi)窟x修課</b></p><p>  查看選修課功

23、能中可以選擇顯示全部,即羅列出當(dāng)前所有的選修課課程信息。如圖5.4所示。</p><p>  圖5.4 查詢?nèi)窟x修課</p><p><b>  管理員添加選修課</b></p><p>  圖5.2選擇添加選修課,可以添加一門(mén)新的選修課,然后按要求輸入課程信息。如圖5.5所示。</p><p>  圖5.5 管理員添

24、加選修課</p><p><b>  添加后的選修課信息</b></p><p>  添加選修課后選擇返回上一層,再選擇顯示全部選修課可以看到已新增的選修課已添加成功。如圖5.6所示。</p><p>  圖5.6 添加后的選修課</p><p><b>  管理員刪除選修課</b></p&g

25、t;<p>  圖5.2選擇刪除選修課。輸入要?jiǎng)h除的選修課的編號(hào),即可刪除相應(yīng)的選修課。如圖5.7所示。</p><p>  圖5.7 管理員刪除選修課</p><p><b>  刪除后的選修課信息</b></p><p>  刪除選修課后選擇返回上一層,再選擇顯示全部選修課可以看到已刪除的選修課已刪除成功。如圖5.8所示。&l

26、t;/p><p>  圖5.8 刪除后的選修課信息</p><p><b>  學(xué)生選課系統(tǒng)</b></p><p>  圖5.1選擇學(xué)生,然后輸入學(xué)生的姓名及學(xué)號(hào)就能進(jìn)入學(xué)生選課系統(tǒng)。如圖5.9所示。</p><p>  圖5.9 學(xué)生選課系統(tǒng)</p><p><b>  學(xué)生選課<

27、/b></p><p>  以學(xué)生身份登錄成功后,可以選擇選課或是查詢個(gè)人信息。選擇選課可以選擇按學(xué)分選課、按課程類(lèi)型選課或顯示全部課程再進(jìn)行選課。選擇按學(xué)分選課,再選藝術(shù)類(lèi),再輸入課程編號(hào)即可選擇相應(yīng)課程。如圖5.10所示。</p><p>  圖5.10 學(xué)生選課</p><p><b>  學(xué)生信息</b></p>&

28、lt;p>  選擇查看個(gè)人信息程序即打印出當(dāng)前學(xué)生的相關(guān)信息。如圖5.11 所示。</p><p>  圖5.11 學(xué)生信息</p><p><b>  退出</b></p><p>  圖5.1選擇退出即退出程序。如圖5.12所示。</p><p>  圖5.12 退出程序</p><p>

29、;<b>  6 總結(jié)與體會(huì)</b></p><p><b>  6.1 總結(jié)</b></p><p>  本程序?qū)崿F(xiàn)了學(xué)生選課及管理員對(duì)課程的操作功能,而學(xué)生的選課及管理員對(duì)課程的管理,都可以按學(xué)分或類(lèi)型來(lái)進(jìn)行操作。管理員登錄的默認(rèn)密碼是123,管理員可以添加新的選修課課程,也可以刪除原有的選修課。</p><p>  

30、經(jīng)過(guò)此次的課程設(shè)計(jì),我們受益頗豐,尤其是對(duì)在編寫(xiě)過(guò)程中遇到的難題的處理方法,學(xué)會(huì)了很多程序設(shè)計(jì)的技巧。</p><p>  6.2 編寫(xiě)程序中遇到的問(wèn)題及解決辦法</p><p>  (1)在無(wú)法與后臺(tái)交互的情況下如何實(shí)現(xiàn)用戶登錄?</p><p>  因?yàn)橹恍枰芾韱T有對(duì)選修課操作的能力,因此不需儲(chǔ)存管理員的信息,只需在其登錄前詢問(wèn)密碼即可。而學(xué)生的登錄,在其登錄

31、時(shí)分配一個(gè)對(duì)象空間,儲(chǔ)存在其登錄時(shí)獲取的學(xué)號(hào)及姓名即可,即每一個(gè)學(xué)生的登錄相當(dāng)于注冊(cè)過(guò)程。</p><p>  (2)如何在不退出程序的情況下,能夠讓多位學(xué)生進(jìn)行選課?</p><p>  定義學(xué)生類(lèi)對(duì)象數(shù)組,每一位學(xué)生選完課后,再分配一個(gè)新的學(xué)生類(lèi)對(duì)象空間。</p><p>  (3)如何實(shí)現(xiàn)對(duì)學(xué)生對(duì)象中課程對(duì)象成員的覆蓋?</p><p>

32、;  一開(kāi)始我們?yōu)榱朔奖闫鹨?jiàn)是考慮學(xué)生類(lèi)課程對(duì)象定義為引用,這樣只需引用已有的選修課課程即可,但這樣的話,在對(duì)學(xué)生對(duì)象初始化時(shí)引用的初始化就成了問(wèn)題,因此只能放棄。最終是選擇了使用set和get方法對(duì)對(duì)象成員的成員一個(gè)個(gè)覆蓋。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 黃維通.Visual C++面向?qū)ο笈c可視化程序設(shè)計(jì)(第2版)

33、.北京:清華大學(xué)出版社,2007.</p><p>  [2] 張乃孝,陳光,孫猛.算法與數(shù)據(jù)結(jié)構(gòu)——C語(yǔ)言描述(第三版),2011.</p><p>  [3] 譚浩強(qiáng).C程序語(yǔ)言設(shè)計(jì)(第三版)[M].北京:清華大學(xué)出版社,2007.</p><p>  [4] 楊永斌.數(shù)據(jù)結(jié)構(gòu)理論與實(shí)踐[M].天津:科學(xué)技術(shù)出版社,2011.</p><p&

34、gt;  [5] 羅建軍.C++程序射機(jī)槍教程(第2版).北京:高等教育出版社,2004.</p><p>  [6] 鄭振杰.C++程序設(shè)計(jì). 北京:人民郵電出版社,2005.</p><p>  [7] 劉覺(jué)夫,王更生等.c++程序設(shè)計(jì).北京:郵電大學(xué)出版社,2011.</p><p>  [8] 邵偉忠.C常用算法程序集.天津:人民出版社,2009.</

35、p><p>  [9] 徐世亮.C++大學(xué)教程.北京:人民郵電出版社,2010.</p><p>  [10] 吳華恩.C++程序設(shè)計(jì).北京:機(jī)械工業(yè)出版社,2008.</p><p>  [11] 邵偉忠.C常用算法程序集.天津:人民出版社,2009.</p><p><b>  附錄 源程序</b></p>

36、<p>  #include <iostream.h></p><p>  #include <string.h></p><p>  #define M 10</p><p>  class Course //選修課課程類(lèi)</p><p><b>  {private:</b&

37、gt;</p><p>  char * id;</p><p>  char * name;</p><p>  char * nature;</p><p>  char * date;</p><p>  int shours;</p><p>  int ahours;</p>

38、;<p>  int zhours;</p><p>  double score;</p><p><b>  public:</b></p><p><b>  Course()</b></p><p><b>  {</b></p><p

39、>  id = "unknown";</p><p>  name = "unknown";</p><p>  nature = "unknown";</p><p>  zhours = 0;</p><p>  shours = 0;</p><

40、p>  ahours = 0;</p><p>  date = "unknown";</p><p>  score = 0;</p><p><b>  }</b></p><p>  Course(char *a, char *b, char *c, char *d, int e, i

41、nt f, double g)</p><p><b>  {</b></p><p><b>  id = a;</b></p><p><b>  name = b;</b></p><p>  nature = c;</p><p><b&

42、gt;  date = d;</b></p><p>  shours = e;</p><p>  ahours = f;</p><p>  score = g;</p><p>  zhours = e + f;</p><p><b>  }</b></p>

43、<p>  void set(char *a, char *b, char *c, char *d, int e, int f, double g)</p><p><b>  {</b></p><p><b>  id = a;</b></p><p><b>  name = b;</b&

44、gt;</p><p>  nature = c;</p><p><b>  date = d;</b></p><p>  shours = e;</p><p>  ahours = f;</p><p>  score = g;</p><p>  zhou

45、rs = e + f;</p><p><b>  }</b></p><p>  char * getDate()</p><p>  {return date;}</p><p>  int getZhours()</p><p>  {return zhours;}</p>&

46、lt;p>  int getShours()</p><p>  {eturn shours;}</p><p>  int getAhours()</p><p>  {return ahours;}</p><p>  double getScore()</p><p>  {return score;}&l

47、t;/p><p>  char * getNature()</p><p>  {return nature;}</p><p>  char * getId()</p><p>  {eturn id;}</p><p>  char * getName()</p><p>  {return n

48、ame;}</p><p>  void print()</p><p><b>  {</b></p><p>  cout << "編號(hào): " << id << '\t';</p><p>  cout << "名稱(chēng):

49、" << name << '\t';</p><p>  cout << "類(lèi)型: " << nature << '\t';</p><p>  cout << "上課時(shí)間: " << date << endl

50、;</p><p>  cout << "總學(xué)時(shí): " << zhours << 'h' << '\t';</p><p>  cout << "授課學(xué)時(shí): " << shours << 'h' << &

51、#39;\t';</p><p>  cout << "實(shí)驗(yàn)學(xué)時(shí): " << ahours << 'h' << '\t';</p><p>  cout << "學(xué)分: " << score << endl;</p&g

52、t;<p><b>  }</b></p><p><b>  };</b></p><p>  class Student //學(xué)生類(lèi)</p><p><b>  {</b></p><p>  private:

53、 //學(xué)生選的課程是對(duì)象的成員</p><p>  char * id;</p><p>  char * name;</p><p>  Course c1;</p><p>  Course c2;</p><p>  double zscore;</p><p><b>  pu

54、blic:</b></p><p><b>  Student()</b></p><p>  {id = "unknown";</p><p>  name = "unknown";</p><p>  zscore = 0;</p><p>

55、<b>  }</b></p><p>  void setId(char * a1)</p><p><b>  {d = a1;}</b></p><p>  void setName(char * a1)</p><p>  {name = a1;}</p><p> 

56、 char * getName()</p><p>  {return name;}</p><p>  void print()</p><p><b>  {</b></p><p>  cout << "\n學(xué)號(hào): " << id << endl;</

57、p><p>  cout << "姓名: " << name << endl;</p><p>  cout << "您已選的選修課:\n1.";</p><p>  c1.print();</p><p>  cout << "2.&

58、quot;;</p><p>  c2.print();</p><p>  cout << "選修課總學(xué)分: " << c1.getScore() + c2.getScore() << '\n' <<endl;</p><p><b>  }</b><

59、/p><p>  void selectCourse_1(Course cc) //修改對(duì)象的課程成員</p><p>  {c1.set(cc.getId(),cc.getName(),cc.getNature(),cc.getDate(),cc.getShours(),cc.getAhours(),cc.getScore());</p><p><

60、;b>  }</b></p><p>  void selectCourse_2(Course cc)</p><p>  {c2.set(cc.getId(),cc.getName(),cc.getNature(),cc.getDate(),cc.getShours(),cc.getAhours(),cc.getScore());</p><p&g

61、t;<b>  }</b></p><p><b>  };</b></p><p>  void selectCourse(Student s1[10], Course c1[M], int s_num1) //選課</p><p><b>  {</b></p>

62、<p>  char id[2][10], select1;</p><p>  int i, j, k;</p><p>  for(j=0; j<2; j++)</p><p><b>  {</b></p><p>  cout << "\n您想選您的第幾門(mén)選修課(1 or

63、2):";</p><p><b>  cin >> k;</b></p><p>  cout << "請(qǐng)輸入您想要選的選修課的編號(hào):";</p><p>  cin >> id[j];</p><p>  for(i=0; i<M &&a

64、mp; c1[i].getScore() !=0; i++) //掃描所有選修課,如果當(dāng)前選修課為空則跳出循環(huán)</p><p><b>  {</b></p><p>  if(strcmp(id[j], c1[i].getId())==0)</p><p><b>  {</b></p>&l

65、t;p>  if(1 == k)</p><p><b>  {</b></p><p>  s1[s_num1].selectCourse_1(c1[i]);</p><p><b>  break;</b></p><p><b>  }</b></p>

66、<p>  if(2 == k)</p><p><b>  {</b></p><p>  s1[s_num1].selectCourse_2(c1[i]);</p><p><b>  break;</b></p><p><b>  }</b></p&g

67、t;<p><b>  }</b></p><p><b>  }</b></p><p>  if(0 == j)</p><p><b>  {</b></p><p>  cout << "\n您是否想要繼續(xù)選課?(y/n):"

68、;;</p><p>  cin >> select1;</p><p>  if('n' == select1) break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  cout <

69、< "\n選課成功!" << endl;</p><p><b>  }</b></p><p>  void selectScore(Course c1[M]) //按學(xué)分查詢選修課</p><p><b>  {</b></p><p>  in

70、t select, num, i;</p><p>  cout << "\n請(qǐng)輸入選修課的學(xué)分:";</p><p>  cout << "\n 1. 0.5\n 2. 1.0" << endl;</p><p>  cout << " 請(qǐng)選擇:";&

71、lt;/p><p>  cin >> select;</p><p><b>  num = 1;</b></p><p>  if(1 == select)</p><p><b>  {</b></p><p>  for(i=0; i<M &&am

72、p; c1[i].getScore() !=0; i++)</p><p><b>  {</b></p><p>  if(0.5 == c1[i].getScore())</p><p><b>  {</b></p><p>  cout << num << '

73、.';</p><p>  c1[i].print();</p><p>  cout << endl;</p><p><b>  num++;</b></p><p><b>  }</b></p><p><b>  }</b>

74、</p><p><b>  }</b></p><p>  else if(2 == select)</p><p><b>  {</b></p><p>  for(i=0; i<M && c1[i].getScore() !=0; i++)</p>&l

75、t;p><b>  {</b></p><p>  if(1.0 == c1[i].getScore())</p><p><b>  {</b></p><p>  cout << num << '.';</p><p>  c1[i].print()

76、;</p><p>  cout << endl;</p><p><b>  num++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b>

77、</p><p>  else cout << "對(duì)不起,您的輸入有誤,請(qǐng)重新輸入!\n\n";</p><p><b>  }</b></p><p>  void selectNature(Course c1[M]) //按類(lèi)型查詢選修課</p><p><b&g

78、t;  {</b></p><p>  int select, num, i;</p><p>  char n1[10]="藝術(shù)類(lèi)", n2[10] ="學(xué)術(shù)類(lèi)";</p><p>  cout << "請(qǐng)輸入選修課的學(xué)分:";</p><p>  cout

79、 << "\n 1. 藝術(shù)類(lèi)\n 2. 學(xué)術(shù)類(lèi)" << endl;</p><p>  cout << " 請(qǐng)選擇:";</p><p>  cin >> select;</p><p><b>  num = 1;</b></p>&l

80、t;p>  if(1 == select)</p><p><b>  {</b></p><p>  for(i=0; i<M && c1[i].getScore() !=0; i++)</p><p><b>  {</b></p><p>  if(strcmp(n

81、1, c1[i].getNature()) == 0)</p><p><b>  {</b></p><p>  cout << num << '.';</p><p>  c1[i].print();</p><p>  cout << endl;</p>

82、;<p><b>  num++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(2 == select)</p>

83、;<p><b>  {</b></p><p>  for(i=0; i<M && c1[i].getScore() !=0; i++)</p><p><b>  {</b></p><p>  if(strcmp(n2, c1[i].getNature()) == 0)</

84、p><p><b>  {</b></p><p>  cout << num << '.';</p><p>  c1[i].print();</p><p>  cout << endl;</p><p><b>  num++;<

85、;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else cout << "對(duì)不起,您的輸入有誤,請(qǐng)重新輸入!\n\n";</p&

86、gt;<p><b>  }</b></p><p>  void xu(Course c1[M]) //當(dāng)前所有選修課進(jìn)行排序(編號(hào)從小到大)</p><p><b>  {</b></p><p>  int i,j,k=0,num=0;</p><p>  Cours

87、e cc;</p><p>  for(j=0; j<M && c1[j].getScore() !=0; j++)</p><p><b>  {</b></p><p>  for(i=num; i<M && c1[i].getScore() !=0; i++)</p><p&

88、gt;<b>  {</b></p><p>  if(strcmp( c1[i].getId(), c1[i+1].getId() ) > 0)</p><p><b>  {</b></p><p>  k++;cc.set(c1[i].getId(),c1[i].getName(),c1[i].getNatu

89、re(),c1[i].getDate(),c1[i].getShours(),c1[i].getAhours(),c1[i].getScore());</p><p>  c1[i].set(c1[i+1].getId(),c1[i+1].getName(),c1[i+1].getNature(),c1[i+1].getDate(),c1[i+1].getShours(),c1[i+1].getAhours(),

90、c1[i+1].getScore());</p><p>  c1[i+1].set(cc.getId(),cc.getName(),cc.getNature(),cc.getDate(),cc.getShours(),cc.getAhours(),cc.getScore());</p><p><b>  }</b></p><p>  el

91、se k = 2;</p><p>  if(1 == k) num = i;</p><p><b>  }</b></p><p><b>  k = 0;</b></p><p><b>  }</b></p><p><b>  }&l

92、t;/b></p><p>  void menu(Course c1[6], Student s1[10]) //菜單</p><p><b>  {</b></p><p>  int flag0, flag1, flag2, flag3, flag4, password=0 ;</p><p> 

93、 int select, s_num=0, i, j, num, newNum;</p><p>  char id[10][10];</p><p>  char select1;</p><p>  char id1[10];</p><p>  char name1[10];</p><p>  char da[

94、20];</p><p>  char na[10];</p><p><b>  int sh;</b></p><p><b>  int ah;</b></p><p>  double sc;</p><p>  flag0 = 1;</p><p

95、>  while(flag0)</p><p><b>  {</b></p><p>  cout << "\n============" << endl;</p><p>  cout << "| 菜 單 |" << endl;</p&

96、gt;<p>  cout << "============" << endl;</p><p>  cout << "| 1.管理員 |" << endl;</p><p>  cout << "| 2.學(xué)生 |" << endl;<

97、/p><p>  cout << "| 3.退出 |" << endl;</p><p>  cout << "============" << endl;</p><p>  cout << "\n請(qǐng)選擇:";</p><p&

98、gt;  cin >> select;</p><p>  switch(select)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  flag3 = 1;</p><p><b>  w

99、hile(1)</b></p><p><b>  {</b></p><p>  cout << "請(qǐng)輸入密碼(輸入-1退出):";</p><p>  cin >> password;</p><p>  if(-1 == password) </p>

100、;<p><b>  {</b></p><p><b>  flag3 =0;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  if(123 == password)

101、 </p><p><b>  {</b></p><p>  cout << "\n 管理員,你好!歡迎登錄!" <<endl;</p><p><b>  break;</b></p><p><b>  }</

102、b></p><p>  cout << "密碼錯(cuò)誤,請(qǐng)重新輸入!\n";</p><p><b>  }</b></p><p>  while(flag3)</p><p><b>  {</b></p><p>  cout <

103、;< "\n================" <<endl;</p><p>  cout << "| 菜 單 |" <<endl;</p><p>  cout << "================" <<endl;</p>&l

104、t;p>  cout << "| 1.添加選修課 |" << endl;</p><p>  cout << "| 2.刪除選修課 |" << endl;</p><p>  cout << "| 3.查看選修課 |" << endl;</p>

105、;<p>  cout << "| 4.返回上一層 |" << endl;</p><p>  cout << "================" <<endl;</p><p>  cout << "\n請(qǐng)選擇:";</p><p&g

106、t;  cin >> select;</p><p>  switch(select)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  newNum = 0;</p><p>  for(i=0; i

107、<M && c1[i].getScore() !=0; i++) newNum++;</p><p>  cout << "\n請(qǐng)按格式依次輸入選修課的編號(hào)、名稱(chēng)、上課時(shí)間(x.xx-x.xx)、類(lèi)型(藝術(shù)類(lèi)或?qū)W術(shù)類(lèi))、授課學(xué)時(shí)、實(shí)驗(yàn)學(xué)時(shí)、學(xué)分:" << endl;</p><p>  cin >> id1 &g

108、t;> name1 >> da >> na >> sh >> ah >> sc;</p><p>  c1[newNum].set(id1, name1, da, na, sh, ah, sc);</p><p><b>  xu(c1);</b></p><p>  cout

109、<< "添加成功!" << endl;</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  flag4 = 1;</p><p><b>  j = 0;</b>&

110、lt;/p><p><b>  num = 0;</b></p><p>  while(flag4)</p><p><b>  {</b></p><p>  cout << "\n請(qǐng)輸入您想要?jiǎng)h除課程的編號(hào):";</p><p>  cin

111、>> id[j];</p><p>  for(i=0; i<M && c1[i].getScore() !=0; i++)</p><p><b>  {</b></p><p>  if(strcmp(id[j], c1[i].getId())==0)</p><p><b&g

112、t;  {</b></p><p>  for(num=i; num<M && c1[i].getScore() !=0; num++)</p><p><b>  {</b></p><p>  c1[num].set(c1[num+1].getId(),c1[num+1].getName(),c1[num+

113、1].getNature(),c1[num+1].getDate(),c1[num+1].getShours(),c1[num+1].getAhours(),c1[num+1].getScore());</p><p><b>  }</b></p><p>  c1[num] = Course();</p><p><b>  br

114、eak;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  cout << "刪除成功!\n";</p><p>  cout << "\n您是否想要繼續(xù)刪除?(y/n):&q

115、uot;;</p><p>  cin >> select1;</p><p>  if('n' == select1) break;</p><p><b>  j++;</b></p><p><b>  }</b></p><p><b

116、>  break;</b></p><p><b>  case 3:</b></p><p>  flag2 = 1;</p><p>  while(flag2)</p><p><b>  {</b></p><p>  cout << &

117、quot;\n============================" <<endl;</p><p>  cout << "| 菜 單 |" <<endl;</p><p>  cout << "============================"

118、; <<endl;</p><p>  cout << "| 1.按學(xué)分查詢選修課 |" << endl;</p><p>  cout << "| 2.按選修課類(lèi)型查詢選修課 |" << endl;</p><p>  cout << &qu

119、ot;| 3.顯示全部 |" << endl;</p><p>  cout << "| 4.返回上一層 |" << endl;</p><p>  cout << "============================" <<

120、;endl;</p><p>  cout << "請(qǐng)選擇:";</p><p>  cin >> select;</p><p>  switch(select)</p><p><b>  {</b></p><p><b>  case

121、1:</b></p><p>  selectScore(c1);</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  selectNature(c1);</p><p><b>  

122、break;</b></p><p><b>  case 3:</b></p><p>  for(i=0; i<M && c1[i].getScore() !=0; i++)</p><p><b>  {</b></p><p>  cout <<

123、; i+1 << '.' ;</p><p>  c1[i].print();</p><p>  cout << endl;</p><p><b>  }</b></p><p><b>  break;</b></p><p>&

124、lt;b>  case 4:</b></p><p>  flag2 = 0;</p><p><b>  break;</b></p><p><b>  default :</b></p><p>  cout << "對(duì)不起,您的輸入有誤,請(qǐng)重新輸入!\

125、n\n";</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  flag

126、3 = 0;</p><p><b>  break;</b></p><p><b>  default :</b></p><p>  cout << "對(duì)不起,您的輸入有誤,請(qǐng)重新輸入!\n\n";</p><p><b>  }</b>&

127、lt;/p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  char a[10], b[10];</p><p>  s1[s_num] = Stude

128、nt();</p><p>  cout << "\n請(qǐng)輸入您的學(xué)號(hào):";</p><p><b>  cin >> a;</b></p><p>  s1[s_num].setId(a);</p><p>  cout << "請(qǐng)輸入您的姓名:"

129、;;</p><p><b>  cin >> b;</b></p><p>  s1[s_num].setName(b);</p><p>  flag1 = 1;</p><p>  while(flag1)</p><p><b>  {</b></

130、p><p>  cout << "\n================" <<endl;</p><p>  cout << "| 菜單 |" <<endl;</p><p>  cout << "================" &

131、lt;<endl;</p><p>  cout << "| 1.選課 |" << endl;</p><p>  cout << "| 2.個(gè)人信息 |" << endl;</p><p>  cout << "| 3.返回上一層 |

132、" << endl;</p><p>  cout << "================" <<endl;</p><p>  cout << "請(qǐng)選擇:";</p><p>  cin >> select;</p><p>  

133、switch(select)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  flag2 = 1;</p><p>  cout << "\n" << s1[s_num].getName()

134、<< ",你好!歡迎登錄!" << endl;</p><p>  while(flag2)</p><p><b>  {</b></p><p>  cout << "\n============================" <<endl;<

135、/p><p>  cout << "| 菜 單 |" <<endl; </p><p>  cout << "=============================" <<endl;</p><p>  cout << &quo

136、t;| 1.按學(xué)分查詢選修課 |" << endl;</p><p>  cout << "| 2.按選修課類(lèi)型查詢選修課 |" << endl;</p><p>  cout << "| 3.顯示全部 |" << endl;</

137、p><p>  cout << "| 4.返回上一層 |" << endl;</p><p>  cout << "=============================" <<endl;</p><p>  cout << "請(qǐng)選

138、擇:";</p><p>  cin >> select;</p><p>  switch(select)</p><p><b>  {</b></p><p><b>  case 1:</b></p><p>  selectScore(c1);

139、</p><p>  selectCourse(s1, c1 ,s_num);</p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  selectNature(c1);</p><p>  selectCou

140、rse(s1, c1 ,s_num);</p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  for(i=0; i<M && c1[i].getScore() !=0; i++)</p><p><b&

141、gt;  {</b></p><p>  cout << i+1 << '.' ;</p><p>  c1[i].print();</p><p>  cout << endl;</p><p><b>  }</b></p><p&g

142、t;  selectCourse(s1, c1, s_num);</p><p><b>  break;</b></p><p><b>  case 4:</b></p><p>  flag2 = 0;</p><p><b>  break;</b></p>

143、<p><b>  default :</b></p><p>  cout << "對(duì)不起,您的輸入有誤,請(qǐng)重新輸入!\n\n";</p><p><b>  }</b></p><p><b>  }</b></p><p>&

144、lt;b>  break;</b></p><p><b>  case 2:</b></p><p>  s1[s_num].print();</p><p><b>  break;</b></p><p><b>  case 3:</b></p&

145、gt;<p>  flag1 = 0;</p><p><b>  s_num++;</b></p><p><b>  break;</b></p><p><b>  default :</b></p><p>  cout << "對(duì)不

146、起,您的輸入有誤,請(qǐng)重新輸入!\n\n";</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p><b>  case 3:</b></p>

147、<p>  flag0 = 0;</p><p>  cout << " 謝謝使用!\n 再見(jiàn)!" << endl;</p><p><b>  break;</b></p><p><b>  default :</b></p><p&g

148、t;  cout << "對(duì)不起,您的輸入有誤,請(qǐng)重新輸入!\n\n";</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()

149、 //管理員默認(rèn)密碼:123</p><p><b>  {</b></p><p>  Student s[10]; //學(xué)生數(shù)組,用于不同學(xué)生的選課</p><p>  Course c[M]; //定義了一個(gè)課程類(lèi)的數(shù)組,儲(chǔ)存所有選修課</p><p>

150、  c[0] = Course("001", "健康與養(yǎng)生", "學(xué)術(shù)類(lèi)", "5.13-5.30", 15, 0, 1.0);</p><p>  c[1] = Course("003", "音樂(lè)鑒賞", "藝術(shù)類(lèi)", "5.21-6.10", 12,

151、3, 0.5);</p><p>  c[2] = Course("006", "數(shù)學(xué)建模", "學(xué)術(shù)類(lèi)", "5.7-6.2", 10, 6, 1.0);</p><p>  c[3] = Course("007", "酒文化與鑒賞", "藝術(shù)類(lèi)",

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論