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

下載本文檔

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

文檔簡介

1、<p>  《C語言程序設(shè)計》課程設(shè)計</p><p>  題 目: 單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng) </p><p>  專 業(yè): 計算機(jī)科學(xué)與技術(shù) </p><p>  班 級: </p><p><b&g

2、t;  目錄</b></p><p>  《C語言程序設(shè)計》課程設(shè)計1</p><p>  1. 程序分析與設(shè)計3</p><p><b>  2.流程圖3</b></p><p>  3. 源程序清單3</p><p><b>  4.調(diào)試過程4</b>

3、;</p><p><b>  參考文獻(xiàn)5</b></p><p><b>  附錄5</b></p><p>  單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)</p><p>  1. 程序分析與設(shè)計</p><p>  系統(tǒng)給用戶提供一個簡單的人機(jī)界面,使用戶可以根據(jù)提示輸入操作項,

4、調(diào)用相關(guān)的函數(shù)實現(xiàn)對應(yīng)的功能,主要功能描述如下:</p><p>  用文件保存試題庫:每個試題包括題干、4個備選答案、標(biāo)準(zhǔn)答案,本模塊的功能是將單鏈表中的信息存儲到文本文件中,系統(tǒng)將提示用戶輸入文本文件名,確認(rèn)后單鏈表中的信息存儲到文本文件中;</p><p>  試題抽?。簭拇疟P讀取文本文件,可以隨機(jī)的從中選取N個題目并顯示出來給用戶進(jìn)行測驗,每次從試題庫中可以隨機(jī)抽出N道題(N由鍵盤

5、輸入);</p><p>  自動判卷:用戶答完所選的題目后,系統(tǒng)可根據(jù)用答題戶答案與標(biāo)準(zhǔn)答案的對比實現(xiàn)判卷并給出成績;</p><p>  試題錄入:用戶可以隨時增加試題到試題庫中,根據(jù)提示輸入題目的主干、四個基本選項和一個標(biāo)準(zhǔn)答案;</p><p>  退 出 :退出系統(tǒng);</p><p>  系統(tǒng)主控平臺:顯示該系統(tǒng)可以進(jìn)行的操作選

6、項,允許用戶進(jìn)行其想要進(jìn)行的操作,包括添加試題信息、隨機(jī)抽取試題、保存到文件和退出系統(tǒng)等;</p><p><b>  總體設(shè)計:</b></p><p>  添加試題(add()函數(shù))</p><p>  首先建立單鏈表,調(diào)用input_exam()函數(shù)輸入試題的基本信息,將用戶輸入試題的基本信息儲存到單鏈表中,提示用戶是否繼續(xù)輸入,用戶輸入

7、“Y”或“y”,則調(diào)用add()函數(shù)實現(xiàn)繼續(xù)添加試題的操作;用戶輸入“”或“”,則返回主菜單界面。</p><p>  隨機(jī)抽取試題(ran_choice()函數(shù)) </p><p>  首先用typedef定義試題的結(jié)構(gòu)體類型的全局變量ran及rans,從鍵盤輸入,將該數(shù)及單鏈表的頭指針傳給ran_choice()函數(shù),調(diào)用rand()隨機(jī)數(shù)產(chǎn)生函數(shù)及srand(seed)設(shè)置一個

8、獨(dú)特的隨機(jī)數(shù)種子,運(yùn)用for()循環(huán)產(chǎn)生N個隨機(jī)數(shù),根據(jù)指針運(yùn)算從單鏈表中取出N個試題的信息并顯示出來。</p><p>  自動判卷系統(tǒng)功能:在自動抽取試題并將其顯示出來后,用一個getchar()函數(shù)從鍵盤接收一個選項的字符,并用if語句,將其與標(biāo)準(zhǔn)答案進(jìn)行比較,若兩者相同,則用計分器自加十分,并顯示當(dāng)前分?jǐn)?shù);</p><p>  保存到文件(save()函數(shù))</p>

9、<p>  首先定義一個exma_book類型的指針p,指向頭結(jié)點(diǎn)head,在定義一個文件類型的指針fp,根據(jù)文件的相關(guān)操作,用函數(shù)fprintf將鏈表中的實體信息逐個保存到文件中;</p><p>  退出系統(tǒng)(quit()函數(shù))</p><p>  首先定義一個exma_book類型的指針pdel,指向頭節(jié)點(diǎn)head,在定義一個exma_book類型的指針p并將其置空,使用i

10、f語句進(jìn)行判斷pdel是否為空,若為空,則使用exit(0)函數(shù)直接退出系統(tǒng);反之,則遍歷鏈表中的所有節(jié)點(diǎn),若不為空,則使用free()函數(shù)將該節(jié)點(diǎn)的內(nèi)存釋放掉。最后,將單鏈表中的數(shù)據(jù)全部釋放掉,防止內(nèi)存泄漏,退出系統(tǒng)。</p><p><b>  功能模塊圖</b></p><p><b>  程序流程圖</b></p><

11、p>  系統(tǒng)的執(zhí)行應(yīng)從選項菜單開始,用戶在輸入1~4后系統(tǒng)將執(zhí)行相應(yīng)的函數(shù)功能,輸入其它字符都是無效的,系統(tǒng)會自動給出錯誤提示。若用戶輸入1,則調(diào)用add()函數(shù),執(zhí)行添加試題的操作;若用戶輸入2,則調(diào)用random()函數(shù);若用戶輸入3,則調(diào)用save()函數(shù);若用戶輸入3,則調(diào)用函數(shù);若用戶輸入4,則調(diào)用exit()函數(shù);</p><p><b>  四、程序源代碼</b><

12、/p><p>  #include <stdio.h>/**/</p><p>  #include <stdlib.h>/**/</p><p>  #include <string.h>/**/</p><p>  #include <time.h> //</p><p&g

13、t;  #define MAX_TEXT 100</p><p>  #define MAX_OPTION 50</p><p>  /*數(shù)據(jù)類型的定義*/</p><p>  /*定義一個結(jié)構(gòu)體類型_exma,使用typedef語句定義一個新的類型exma,結(jié)構(gòu)體中包括試題的題號、主干信息、四個基本選項、一個標(biāo)</p><p&g

14、t;<b>  準(zhǔn)答案*/</b></p><p>  typedef struct _exma</p><p><b>  {</b></p><p><b>  int num;</b></p><p>  char name[MAX_TEXT];</p>&

15、lt;p>  char option[MAX_OPTION][4];</p><p>  char da_an;</p><p><b>  }exma;</b></p><p>  /*定義一個結(jié)構(gòu)體類型_exma_book,使用typedef語句定義一個新類型exma_book,結(jié)構(gòu)體中包括一個儲存試題基本信息的結(jié)構(gòu)體變量</p

16、><p>  per和指向下一個試題信息的指針變量*/</p><p>  typedef struct _exma_book</p><p><b>  {</b></p><p><b>  exma per;</b></p><p>  struct _exma_book

17、*next;</p><p>  }exma_book;</p><p>  /*定義一個頭節(jié)點(diǎn),將其初始化為空*/</p><p>  exma_book * head=NULL;/*exma_book為結(jié)構(gòu)體,鏈表的頭節(jié)點(diǎn),置空*/</p><p>  /*主要函數(shù)聲明*/</p><p>  void add()

18、; /*添加試題函數(shù)*/</p><p>  void random(); /*隨機(jī)抽取試題函數(shù)*/</p><p>  void show(); /*顯示被抽題目函數(shù)*/</p><p>  void judgment(); /*自動判卷函數(shù)*/</p><p>  void save(); /*保存到文件函數(shù)

19、*/</p><p>  void quit(); /*退出函數(shù)*/</p><p>  /*輔助函數(shù)定義*/</p><p>  int print_menu();/*打印主菜單界面*/</p><p>  exma_book * get_last(exma_book * from);/*取的鏈表的最后一個值*/</p>

20、<p>  void input_exma(exma * p);/*提示輸入一個試題具體信息*/ </p><p><b>  /*常量聲明*/</b></p><p>  /*以下是主菜單要顯示的字符聲明*/</p><p>  char menu[]={"+==============================

21、=================+\n"</p><p>  "| 單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng) |\n"</p><p>  "+-----------------------------------------------+\n"</p><p>  "| 1

22、 添加試題 |\n"</p><p>  "| 2 隨機(jī)抽取試題 |\n"</p><p>  "| 3 保存 |\n"</p><p>  "| 4 退出系統(tǒng)|\n"</p><p>  "+==========================

23、=====================+\n"</p><p><b>  };</b></p><p><b>  /*主函數(shù)*/</b></p><p>  int main()</p><p><b>  {</b></p><p>

24、  int flg=1;</p><p>  while(flg)</p><p><b>  {</b></p><p>  switch(print_menu())</p><p><b>  {</b></p><p><b>  case 1:{</b

25、></p><p><b>  add();</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  case 2:{</b></p><p><b&

26、gt;  random();</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  case 3:{</b></p><p><b>  save();</b></p

27、><p><b>  break;</b></p><p><b>  }</b></p><p><b>  case 4:{</b></p><p><b>  quit();</b></p><p><b>  brea

28、k;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /*程序

29、清單*/</b></p><p>  void add()</p><p><b>  {</b></p><p>  char input='N';</p><p>  exma_book * first;</p><p>  exma_book * last=NUL

30、L;</p><p>  first=last=(exma_book*)malloc(sizeof(_exma_book));</p><p>  memset(first,0,sizeof(_exma_book));</p><p>  first->next=NULL;</p><p>  if(head==NULL)</p&

31、gt;<p><b>  {</b></p><p>  head=first;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p&

32、gt;  last=get_last(head);</p><p>  last->next=first;</p><p><b>  }</b></p><p>  input_exma(&(first->per));</p><p>  printf(">是否繼續(xù)輸入?(Y 繼續(xù)

33、,N 返回菜單)");</p><p>  getchar();</p><p>  input=getchar();</p><p>  if(input='Y'||'y')</p><p><b>  {</b></p><p><b>  

34、add();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*隨機(jī)抽取試題*/</p><p>  void random()</p><p><b>  {</b></p

35、><p>  int ran_num;</p><p>  exma_book * p;</p><p>  char input='n'; </p><p>  int N,i,n=0;</p><p>  printf("請輸入要隨機(jī)抽取的題目總數(shù)N:");</p>&

36、lt;p>  scanf("%d",&N);</p><p>  srand((int)time(0));</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  ran_num=(int)rand();</p>

37、<p>  if(head==NULL) </p><p><b>  {</b></p><p>  printf("對不起!");</p><p>  printf("此系統(tǒng)中無試題,");</p><p>  printf("請回主菜單進(jìn)行試題輸入操作

38、!");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  p=head;</b></p><p>  printf(

39、"%d",p->per.num);</p><p>  printf(" ");</p><p>  printf("%s\n",p->per.name);</p><p>  printf("%s\n",p->per.option);</p><

40、p>  printf("請輸入你的選項,并按回車鍵確定:");</p><p>  getchar();</p><p>  if(p->per.da_an==getchar())</p><p><b>  {</b></p><p><b>  n++;</b>&

41、lt;/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  continue;</b></p><p><b>  }<

42、/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /*保存*/</b></p><p>  void save()<

43、;/p><p><b>  {</b></p><p>  FILE * fp;</p><p>  exma_book * p;</p><p><b>  p=head;</b></p><p>  char file[100];</p><p>  

44、printf("請輸入文件名");</p><p>  puts(file);</p><p>  fp=fopen(file,"w");</p><p>  if(head==NULL) </p><p><b>  {</b></p><p>  pri

45、ntf("對不起!");</p><p>  printf("此系統(tǒng)中無試題,");</p><p>  printf("請回主菜單進(jìn)行試題輸入操作!");</p><p><b>  }</b></p><p><b>  else</b>

46、;</p><p><b>  {</b></p><p><b>  p=head;</b></p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  fprintf(fp,"%d,%s,%

47、s,%c\n",</p><p>  p->per.num,p->per.name,p->per.option,p->per.da_an);</p><p><b>  }</b></p><p>  fclose(fp);</p><p>  printf("文件保存成功!\

48、n按任意鍵返回主菜單···");</p><p>  getchar();</p><p>  getchar();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  

49、/*退出系統(tǒng)*/</b></p><p>  void quit()</p><p><b>  {</b></p><p>  exma_book * pdel=head;</p><p>  exma_book * p =NULL;</p><p>  if(pdel==NULL)

50、</p><p><b>  {</b></p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</

51、b></p><p>  while(pdel->next !=NULL)</p><p><b>  {</b></p><p>  p=pdel->next;</p><p>  free(pdel);</p><p><b>  pdel=p;</b>

52、</p><p><b>  }</b></p><p>  free(pdel);</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  }</b></p&

53、gt;<p><b>  /*輔助函數(shù)*/</b></p><p>  /*主菜單顯示界面*/</p><p>  int print_menu()</p><p><b>  {</b></p><p>  int selected=0;</p><p>  

54、system("cls");</p><p>  printf(menu);</p><p>  printf(">請選擇【1~4】<:");</p><p>  scanf("%d",&selected);</p><p>  if(selected<1|

55、|selected>7)</p><p><b>  {</b></p><p>  printf("錯誤的選擇!(請輸入1~4).按任意鍵繼續(xù)···");</p><p>  getchar();</p><p>  getchar();</p>&

56、lt;p><b>  }</b></p><p>  return selected;</p><p><b>  }</b></p><p>  /*提示輸入試題信息*/</p><p>  void input_exma(exma * p)</p><p><

57、b>  {</b></p><p>  printf("請輸入試題基本信息:");</p><p>  printf("輸入試題題號···");</p><p>  scanf("%d",p->num);</p><p>  pr

58、intf("輸入試題主干信息···");</p><p>  scanf("%s",p->name);</p><p>  printf("輸入試題四個基本選項···");</p><p>  scanf("%s",p-&

59、gt;option);</p><p>  printf("輸入試題題號···");</p><p>  scanf("%c",p->da_an);</p><p><b>  }</b></p><p>  /*取得鏈表最夠一個值*/</

60、p><p>  exma_book * get_last(exma_book * from)</p><p><b>  {</b></p><p>  exma_book * p=from;</p><p>  while(p->next!=NULL)</p><p><b>  {

61、</b></p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  return p;</b></p><p><b>  }</b></p><p><b>  參考文獻(xiàn)&

62、lt;/b></p><p>  至少要按報告的格式寫出三個參考文獻(xiàn)如:</p><p>  [1] 楊有安. 程序設(shè)計基礎(chǔ)教程(C語言). 人民郵電出版社,2009.</p><p>  [2] 譚浩強(qiáng). C程序設(shè)計教程.清華大學(xué)出版社,2009.</p><p>  [3] 譚浩強(qiáng). C程序設(shè)計題解與上機(jī)指導(dǎo)(第三版) .清華大學(xué)出

溫馨提示

  • 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

提交評論