課程設(shè)計(jì)---簡(jiǎn)單學(xué)生管理系統(tǒng)_第1頁(yè)
已閱讀1頁(yè),還剩7頁(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>  C語(yǔ)言課程設(shè)計(jì)</b></p><p>  專 業(yè): </p><p>  班 級(jí): </p><p>  學(xué) 號(hào): </p><p>  姓 名:

2、 </p><p>  日 期: </p><p>  鏈表基本綜合操作(簡(jiǎn)單學(xué)生管理系統(tǒng))</p><p><b>  1. 系統(tǒng)需求分析</b></p><p>  在日常生活中,學(xué)生管理系統(tǒng)系統(tǒng)的應(yīng)用無(wú)處不在。學(xué)生成績(jī)管理系統(tǒng)是對(duì)學(xué)生基本信息及成績(jī)的管理。本程

3、序是綜合利用鏈表的基礎(chǔ)知識(shí)來(lái)編寫一個(gè)簡(jiǎn)單的學(xué)生管理系統(tǒng),功能包括建立、顯示、查詢、刪除以及退出功能。 </p><p>  學(xué)生管理系統(tǒng)首先需要通過(guò)函數(shù)建立儲(chǔ)存學(xué)生信息的鏈表,其中學(xué)生信息包括學(xué)號(hào)、姓名、成績(jī),這就需要建立包括上述信息的結(jié)構(gòu)體。當(dāng)然只建立儲(chǔ)存學(xué)生信息的鏈表是不夠的,因此需要一個(gè)輸出函數(shù)來(lái)把鏈表里儲(chǔ)存的學(xué)生信息按照一定的格式顯示出來(lái)。本系統(tǒng)還要求輸入一個(gè)學(xué)號(hào)即可檢索出該學(xué)生的有關(guān)信息并且檢索用函數(shù)實(shí)

4、現(xiàn),故該系統(tǒng)需要編寫查找學(xué)生信息的子函數(shù)。系統(tǒng)要求從鏈表中刪除成績(jī)低于50分的學(xué)生并且刪除節(jié)點(diǎn)用函數(shù)實(shí)現(xiàn),所以該系統(tǒng)又需編寫刪除子函數(shù)。</p><p><b>  2. 系統(tǒng)總體設(shè)計(jì)</b></p><p>  2.1 功能模塊設(shè)計(jì)</p><p>  該系統(tǒng)根據(jù)需求共設(shè)有四個(gè)模塊,即創(chuàng)建學(xué)生信息模塊、顯示學(xué)生信息模塊、刪除低于50分的學(xué)生的

5、學(xué)生信息模塊和查詢學(xué)生信息模塊。該系統(tǒng)具體模塊關(guān)系如下圖所示:</p><p>  輸入學(xué)生信息模塊主要是將用戶根據(jù)提示輸入的學(xué)生信息儲(chǔ)存在建立的鏈表之中,是最主要的子函數(shù)。</p><p>  顯示學(xué)生信息模塊是將通過(guò)輸入學(xué)生信息模塊輸入鏈表中的學(xué)生信息在系統(tǒng)界面中顯示出來(lái)。</p><p>  查詢學(xué)生信息模塊是將通過(guò)輸入學(xué)生信息模塊輸入鏈表中的學(xué)生信息在用戶輸

6、入所要查詢的學(xué)生學(xué)號(hào)后將相應(yīng)的學(xué)生信息顯示在系統(tǒng)界面中。</p><p>  刪除學(xué)生信息模塊是將通過(guò)輸入學(xué)生信息模塊輸入鏈表中的學(xué)生信息中成績(jī)低于50分的學(xué)生信息在鏈表中刪除并且提示用戶刪除完畢。</p><p><b>  2.2程序處理流程</b></p><p>  該系統(tǒng)的程序處理是通過(guò)主函數(shù)調(diào)用子函數(shù)來(lái)實(shí)現(xiàn)的。主函數(shù)中通過(guò)switc

7、h----case來(lái)調(diào)用子函數(shù),具體如下:</p><p><b>  Case1 :</b></p><p>  調(diào)用輸入學(xué)生信息模塊,來(lái)完成鏈表的建立進(jìn)而完成學(xué)生信息的輸入。</p><p><b>  Case2 :</b></p><p>  調(diào)用顯示學(xué)生信息模塊,來(lái)完成學(xué)生信息在系統(tǒng)界面中

8、的顯示。</p><p><b>  Case3 :</b></p><p>  調(diào)用查詢學(xué)生信息模塊,來(lái)完成用戶查詢學(xué)生信息的功能。</p><p><b>  Case4 :</b></p><p>  調(diào)用刪除學(xué)生信息模塊,來(lái)完成用戶刪除成績(jī)低于50分的學(xué)生的學(xué)生信息的需求。</p>

9、;<p><b>  Case5 :</b></p><p><b>  退出系統(tǒng)。</b></p><p>  模塊之間的接口,即模塊之間傳遞的信息如下:</p><p>  創(chuàng)建鏈表的子函數(shù):NODE *Creat(int n)</p><p>  函數(shù)入口的參數(shù)為用戶在主函數(shù)中輸

10、入的所有的學(xué)生人數(shù),函數(shù)返回值為NODE類型的指針。</p><p>  顯示學(xué)生信息的子函數(shù):void Out(NODE *head)</p><p>  函數(shù)入口的參數(shù)為1)中返回的NODE類型的指針,該函數(shù)無(wú)返回值。</p><p>  查詢學(xué)生信息的子函數(shù):void Search(NODE **head, long num)</p><p

11、>  函數(shù)入口的參數(shù)為指向NODE類型指針的指針以及所要查詢的學(xué)生信息的學(xué)號(hào),該函數(shù)無(wú)返回值。</p><p>  刪除低于50分的子函數(shù):void Del(NODE **head,int n)</p><p>  函數(shù)入口的參數(shù)為指向NODE類型指針的指針以及所要?jiǎng)h除的分?jǐn)?shù)(在此系統(tǒng)中該參數(shù)默認(rèn)為50),該函數(shù)無(wú)返回值。</p><p>  3.系統(tǒng)詳細(xì)設(shè)計(jì)

12、與實(shí)現(xiàn)</p><p><b>  3.1預(yù)處理</b></p><p>  該系統(tǒng)的頭文件為 #include<stdio.h> 和 #include<stdlib.h> 。宏定義為#define MAX 25和 #define SCORE 50 。其中MAX為儲(chǔ)存學(xué)生姓名的字符數(shù)組的大小,SCORE代表所要?jiǎng)h除的的學(xué)生信息是50分以下的。這

13、樣編寫的目的是提高程序的通用性和易讀性,減少不一致性,減少輸入錯(cuò)誤和便于修改。</p><p><b>  3.2數(shù)據(jù)結(jié)構(gòu)定義</b></p><p><b>  數(shù)據(jù)結(jié)構(gòu)定義如下:</b></p><p>  struct STU</p><p><b>  {</b><

14、;/p><p>  char name[MAX]; /*每個(gè)學(xué)生的姓名*/</p><p>  long number; /*每個(gè)學(xué)生的學(xué)號(hào)*/</p><p>  float score; /*每個(gè)學(xué)生的成績(jī)*/</p><p><b>  };</b></p&g

15、t;<p>  struct node /*建立一個(gè)結(jié)構(gòu)體作為鏈表的節(jié)點(diǎn)用來(lái)存儲(chǔ)學(xué)生信息*/</p><p><b>  {</b></p><p>  struct STU data;</p><p>  struct node *next;</p><p><

16、b>  };</b></p><p>  typedef struct node NODE;</p><p>  其中結(jié)構(gòu)體STU用來(lái)儲(chǔ)存學(xué)生信息,包括學(xué)生的學(xué)號(hào)、姓名及成績(jī)。NODE為鏈表的節(jié)點(diǎn)。</p><p>  3.3函數(shù)及變量聲明</p><p>  1)創(chuàng)建鏈表的子函數(shù):NODE *Creat(int n)<

17、;/p><p>  在此函數(shù)中所定義的變量為: </p><p>  struct STU one; 定義此STU類型的結(jié)構(gòu)體目的是儲(chǔ)存每個(gè)輸入的學(xué)生的學(xué)生信息。</p><p>  int num=0; 定義此整型變量目的是統(tǒng)計(jì)以輸入的學(xué)生人數(shù)。</p><p>  NODE *pNew,*pCur; 定義此NODE類型的指針目的是用 pNew

18、 指向?qū)⒂脩糨斎朐趕truct STU one 中的學(xué)生信息,再通過(guò)pCur=pNew; 語(yǔ)句來(lái)完成鏈表的創(chuàng)立。</p><p>  NODE *head=NULL;定義此NODE類型的指針并且指向NULL目的是確保鏈表的頭指針為空。</p><p>  2)顯示學(xué)生信息的子函數(shù):void Out(NODE *head)</p><p>  在此函數(shù)中所定義的變量為

19、:</p><p>  NODE *pCur=head; 定義此NODE類型的指針目的是將指針指向以創(chuàng)建好的鏈表以便在此函數(shù)中完成顯示學(xué)生信息的功能。將其初始化為head 是為了不遺漏任何一人的學(xué)生信息。</p><p>  3)刪除低于50分的子函數(shù):void Del(NODE **head,int n)</p><p>  在此函數(shù)中所定義的變量為:</p

20、><p>  int flag=1;定義此標(biāo)志量目的是在指針移動(dòng)至鏈表末尾后flag=0; 以便退出循環(huán)。</p><p>  NODE *p, *a;定義此NODE類型的指針目的是為了確保刪除無(wú)誤。</p><p>  a=p=*head; 將其初始化為head 是為了不遺漏任何一人的學(xué)生信息。</p><p>  4)查詢學(xué)生信息的子函數(shù):v

21、oid Search(NODE **head, long num)</p><p>  在此函數(shù)中所定義的變量為:</p><p>  NODE *p; 定義此NODE類型的指針的目的是將其作為一個(gè)查詢用的指針來(lái)逐個(gè)查詢,以防遺漏。</p><p>  p=*head; 將p初始化,即指向已有鏈表的第一項(xiàng),目的是從第一個(gè)學(xué)生開始查詢。</p><

22、p>  3.4主函數(shù)、主函數(shù)處理函數(shù)、輔助函數(shù)的設(shè)計(jì)</p><p><b>  主函數(shù)源代碼如下:</b></p><p>  int main()</p><p><b>  {</b></p><p>  int n,i,p,flag=1; /*通

23、過(guò)flag的值來(lái)控制是否退出循環(huán)*/</p><p><b>  long m;</b></p><p>  NODE *head;</p><p>  while(flag)</p><p><b>  {</b></p><p>  printf("******

24、**************************************************************************\n"); /*界面在主函數(shù)中顯示*/</p><p>  printf("***************************歡迎使用學(xué)生管理系統(tǒng)*********************************\n");&

25、lt;/p><p>  printf("1 Create students' information\n2 Output information\n3 Search information\n4 Delete students under 50\n5 Quit\n\n"); /* 在界面中顯示功能模塊代號(hào) */</p><p&

26、gt;  scanf("%d",&p); /* 用戶輸入所需功能模塊代號(hào) */</p><p><b>  switch(p)</b></p><p><b>  {</b></p><p>  case 1:

27、 /* 調(diào)用信息輸入模塊 */</p><p>  printf("Please input how many students?\n"); </p><p>  scanf("%d",&n); /* 用戶輸入學(xué)生人數(shù) */</p><p>  head=Creat(

28、n);</p><p><b>  break;</b></p><p>  case 2: /* 調(diào)用信息輸出模塊 */</p><p>  Out(head);</p><p><b>  break;</b></p>

29、<p>  case 3: /* 調(diào)用信息查找模塊 */</p><p>  printf("The student you want to find is:\n");</p><p>  scanf("%ld",&m); /

30、* 用戶輸入所要查詢學(xué)生學(xué)號(hào) */</p><p>  Search(&head,m);</p><p><b>  break;</b></p><p>  case 4: /* 調(diào)用信息刪除模塊 */</p><p>  Del(&head,SCORE)

31、;</p><p><b>  break;</b></p><p>  case 5: /* 退出程序功能 */</p><p>  printf("Goodbye!歡迎使用");</p><p><b>  flag=0;</b&g

32、t;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  getch();</b></p><p><b>  re

33、turn 0;</b></p><p><b>  }</b></p><p><b>  3.5系統(tǒng)實(shí)現(xiàn)</b></p><p><b>  系統(tǒng)主界面</b></p><p>  輸入學(xué)生信息模塊功能實(shí)現(xiàn)截圖</p><p>  顯示學(xué)生

34、信息模塊功能實(shí)現(xiàn)截圖</p><p>  查詢學(xué)生信息模塊功能實(shí)現(xiàn)截圖</p><p>  刪除低于50分以下學(xué)生信息功能實(shí)現(xiàn)截圖</p><p>  刪除后再次顯示學(xué)生信息截圖</p><p>  退出系統(tǒng)功能實(shí)現(xiàn)截圖</p><p>  結(jié)論(系統(tǒng)存在的問(wèn)題)</p><p>  該系統(tǒng)程序

溫馨提示

  • 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)論