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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  目 錄 </b></p><p>  1程序目標及功能--------------------------------------------------------------- 1</p><p>  1.1課題背景------------------------------------------------------------

2、-----2</p><p>  1.2系統功能 ---------------------------------------------------------------2</p><p>  1.3設計要求 ---------------------------------------------------------------3</p><p>  2

3、程序功能模塊組成及流程圖 -----------------------------------------------3</p><p>  2.1系統功能模塊-----------------------------------------------------------5</p><p>  2.2各模塊流程圖-----------------------------------

4、------------------------6</p><p>  3程序主要數據結構及函數列表 ---------------------------------------------8</p><p>  3.1 程序中使用的數據結構----------------------------------------------8</p><p>  3.2

5、函數列表--------------------------------------------------------------10</p><p>  4程序代碼及運行結果 -------------------------------------------------------12</p><p>  5總結與體會 ------------------------------

6、------------------------------------15 </p><p><b>  程序目標及功能</b></p><p><b>  1.1、課題背景</b></p><p>  當今社會是一個信息時代,計算機技術發展迅速,同時信息的自動處理以及網絡式的信息交

7、互方式越來越被人們認可和運用,讓計算機來管理學生的信息是現在各個高校都在積極進行的工作之一,也是高校教學管理工作的重要內容之一。網上選課與傳統的選課方式相比更節約資源,同時,隨著學生選課自主權的增加,網上選課有效的避免了許多不良現象,使教學更加透明。</p><p><b>  1.2、系統功能</b></p><p> ?、僬n程信息錄入。建立課程信息鏈表,由鍵盤輸入

8、課程信息。</p><p> ?、谡n程信息輸出。輸出所有課程信息。</p><p> ?、鄄樵冋n程。按課程編號、課程名稱、學分、按課程性質、開課學期等查詢(至少實現1種)。</p><p> ?、軐W生選修課程。輸入學生學號和課程編號,形成一條選課信息,保存在“選修信息文件”里。</p><p> ?、莶樵儗W生選修的課程。輸入學生學號,輸出該生

9、已選修的課程編號和課程名稱。</p><p> ?、薇4嬲n程信息到磁盤文件。建立一個磁盤文件,把所建立的課程表寫入文件。</p><p> ?、邚拇疟P文件中讀出課程信息。</p><p><b>  1.3、設計要求</b></p><p> ?、偌俣ㄓ衝門課程,每門課程有課程編號、課程名稱、課程性質(專業選修課、公選課

10、)、總學時、總學分、理論學時、實驗學時、開課學期、已選修本課程的學生人數等信息;每門課最多允許60個學生選修。</p><p>  選修信息文件,用來保存每個學生選修課程的信息,每條記錄包括:學生的學號、所選修的課程編號和課程名稱。</p><p>  系統以菜單方式工作(程序主界面包括程序名稱及編程者學號、姓名、班級;同時要求輸入功能號碼,選擇進入功能模塊程序)。</p>

11、<p> ?、苡煤瘮捣謩e實現動態鏈表的建立、動態鏈表輸出等功能。</p><p> ?、萁缑嬗押?,程序中加入必要的注釋。</p><p> ?、藓瘮倒δ芤獎澐趾茫ńY構化程序設計);函數要求使用指針作形參。</p><p> ?、邔W生選修一門課后,要同時更新課程信息和選修信息文件。</p><p>  程序功能模塊組成及流程圖<

12、/p><p><b>  2.1系統功能模塊</b></p><p>  根據設計要求分為8個模塊,分別是:</p><p>  1: 創建課程信息:課程信息的錄入,建立課程信息鏈表,有鍵盤輸入課程信息。</p><p>  2: 課程信息輸出:輸入所有課程信息。</p><p>  3: 查詢課程信

13、息:按課程編號、課程名稱、課程性質、學分、開課學期等查詢(此程序按課程編號實現)。</p><p>  4: 學生選修課程:輸入學生學號和課程編號,形成一條選課信息,保存在“選修信息文件”里。</p><p>  5: 查詢學生選修課程:輸入學生學號,輸入該省已選修的課程編號和課程名稱。</p><p>  6: 保存課程信息到磁盤:建立磁盤文件,把所建立的課程表寫

14、入文件。</p><p>  7: 從磁盤文件中讀出課程信息:從磁盤文件中讀出課程信息并輸出,顯示主界面。</p><p>  8: 退出:結束程序,退出系統。</p><p><b>  2.2各模塊流程圖</b></p><p><b>  選擇模塊</b></p><p&g

15、t;<b>  創建課程信息</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  cp1=(struct stu*)malloc(sizeof(struct stu));</p><p>  if(i==1) chead

16、=cp2=cp1;</p><p>  else cp2->next=cp1;</p><p>  scanf("%d %s",&cp1->num,&cp1->name);</p><p>  scanf("%s %d %d %d",&cp1->quale,&cp1-&g

17、t;time,&cp1->credit,&cp1->thtime);</p><p>  scanf("%d %d %d",&cp1->extime,&cp1->term,&cp1->alnum);</p><p><b>  cp2=cp1;</b></p>&l

18、t;p>  fflush(stdin); //刷新scanf()函數緩沖,防止自動循環</p><p><b>  i++;</b></p><p>  }while(am>=i);</p><p>  cp2->next=NULL;</p><p><b>  學生選

19、課</b></p><p><b>  int snum;</b></p><p>  struct stu*head,*p1;</p><p><b>  p1=p;</b></p><p>  printf("請輸入學生學號:");</p><

20、p>  scanf("%d",&snum);</p><p>  printf("輸入課程編號:");</p><p>  scanf("%d",&num);</p><p><b>  do</b></p><p><b>  

21、{</b></p><p>  if (p1->num=num)</p><p><b>  {</b></p><p><b>  FILE*fp;</b></p><p>  fp=fopen("選修信息文件.txt","w");<

22、/p><p>  fprintf(fp,"學生學號 課程編號 名稱 性質 總學時 總學分 理論學時 實驗學時 開課學期 已修本課的人數\n");</p><p>  fprintf(fp,"%d\t%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d",snum,p1->num,p1->name,p1->quale,p1

23、->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);</p><p>  fclose(fp);</p><p>  printf("已保存至“選修信息文件.txt”\n");</p><p><b>  }</b><

24、;/p><p><b>  else </b></p><p>  p1=p1->next;</p><p>  }while(p1=NULL);</p><p>  3、程序主要數據結構及函數列表</p><p>  3.1 程序中使用的數據結構</p><p><

25、;b>  鏈表的使用</b></p><p>  struct stu //聲明結構體類型struct student</p><p><b>  {</b></p><p>  int num; //課程編號</p><p>  char name[20]; //課程名稱&

26、lt;/p><p>  char quale[10]; //課程性質</p><p>  int time; //總學時</p><p>  int credit; //總學分</p><p>  int thtime; //理論學時</p><p>  int extime; //實驗學時<

27、;/p><p>  int term; //開課學期</p><p>  int alnum; //已選本課程的學生人數</p><p>  struct stu*next;</p><p><b>  };</b></p><p><b>  3.2 函數列表</b&g

28、t;</p><p>  struct stu * creat(int am); // 創建鏈表,錄入課程信息 </p><p>  void output(struct stu *p); //聲明輸入課程信息的函數,按課程編號查詢</p><p>  void inquire(struct stu*p,int n); //聲明查詢課程的函數<

29、;/p><p>  void stu_classes(struct stu*p,int num); //聲明保存文件的的函數</p><p>  void inquire_stu(struct stu*p,int numb); //查詢學生選課信息 </p><p>  void save_inf(struct stu*p); //聲明

30、保存課程信息函數</p><p>  void read_inf(struct stu*p); //聲明讀出課程信息的函數</p><p>  void reset(); //聲明清除界面函數</p><p><b>  程序代碼及運行結果</b></p&g

31、t;<p><b>  程序代碼:</b></p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<conio.h></p><p>  #define NULL 0</

32、p><p>  #define N 2 //定義共5門課程</p><p>  struct stu //聲明結構體類型struct student</p><p><b>  {</b></p><p>  int num; //課程編號</p><p>  char na

33、me[20]; //課程名稱</p><p>  char quale[10]; //課程性質</p><p>  int time; //總學時</p><p>  int credit; //總學分</p><p>  int thtime; //理論學時</p><p>  int

34、extime; //實驗學時</p><p>  int term; //開課學期</p><p>  int alnum; //已選本課程的學生人數</p><p>  struct stu*next;</p><p><b>  };</b></p><p>  int ma

35、in(void)</p><p><b>  {</b></p><p>  struct stu * creat(int am); // 創建鏈表,錄入課程信息 </p><p>  void output(struct stu *p); //聲明輸入課程信息的函數,按課程編號查詢</p><p>  vo

36、id inquire(struct stu*p,int n); //聲明查詢課程的函數</p><p>  void stu_classes(struct stu*p,int num); //聲明保存文件的的函數</p><p>  void inquire_stu(struct stu*p,int numb); //查詢學生選課信息 </p><p>

37、;  void save_inf(struct stu*p); //聲明保存課程信息函數</p><p>  void read_inf(struct stu*p); //聲明讀出課程信息的函數</p><p>  void reset(); //聲明清除界面函數</p>

38、<p>  struct stu *head;</p><p>  int M,n,num,numb,fail;</p><p>  loop:printf("\n");</p><p>  printf("*******************學生選修課程系統*******************\n");&l

39、t;/p><p>  printf(" 學號:******* 姓名:*** 班級:***** \n" );</p><p>  printf("\n");</p><p>  printf("******************************************************\n&q

40、uot;);</p><p>  printf("*\t\t※1: 創建課程信息表 *\n");</p><p>  printf("*\t\t※2: 課程信息輸出 *\n");</p><p>  printf("*\t\t※3: 查詢課程信息

41、 *\n");</p><p>  printf("*\t\t※4: 學生選修課程 *\n");</p><p>  printf("*\t\t※5: 查詢學生選修課程 *\n");</p><p>  prin

42、tf("*\t\t※6: 保存課程信息到磁盤 *\n");</p><p>  printf("*\t\t※7: 從磁盤文件中讀出課程信息 *\n");</p><p>  printf("*\t\t※8: 退出 *\n");

43、 //菜單形式的主界面</p><p>  printf("******************************************************\n");</p><p>  printf("\n\n\t\t請輸入功能號 [1-8]:"); //提示輸入功能號</p><p>  scan

44、f("%d",&M); </p><p><b>  if (M==1)</b></p><p><b>  {</b></p><p>  if (fail==1) //判斷是否創建列表</p>

45、<p>  {printf("已經創建列表,請選擇其他功能??!\n");</p><p>  goto loop; //返回初始界面</p><p><b>  }</b></p><p><b>  else </b></p><

46、;p>  head=creat(N); //使用列表,錄入信息</p><p><b>  fail=1;</b></p><p>  //reset(); //清除界面</p><p><b>  }</b></p><p><

47、b>  else </b></p><p><b>  if (M==2)</b></p><p><b>  {</b></p><p>  if(fail==1) //判斷是否創建列表</p><p>  {output(head);reset();}

48、 //輸入信息,清除界面</p><p><b>  else </b></p><p>  printf("沒有數據,請先錄入信息??!\n");</p><p>  goto loop; //返回初始界面</p><p><b>  }</

49、b></p><p><b>  else </b></p><p><b>  if (M==3)</b></p><p><b>  {</b></p><p>  if (fail==1) //判斷是否創建列表</p>&l

50、t;p>  {inquire(head,n);reset();} //查詢信息函數,清除界面</p><p><b>  else </b></p><p>  printf("沒有數據,請先錄入信息??!\n");</p><p>  goto loop; //返回初始

51、界面</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  if (M==4)</b></p><p><b>  {</b></p><p>  if(fail==1)

52、</p><p>  {stu_classes(head,num);reset();} //形成信息并保存,清除界面</p><p><b>  else </b></p><p>  printf("沒有數據,請先錄入信息??!\n");</p><p>  goto loop;

53、 //返回初始界面</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  if (M==5)</b></p><p><b>  {</b></p><

54、p>  if(fail==1)</p><p><b>  {</b></p><p>  inquire_stu(head,numb); //查詢信息</p><p><b>  fail=2;</b></p><p>  reset(); //清

55、除界面</p><p><b>  }</b></p><p><b>  else </b></p><p>  printf("沒有數據,請先錄入信息??!\n");</p><p>  goto loop; //返回初始界面</p>

56、<p><b>  }</b></p><p><b>  else </b></p><p><b>  if (M==6)</b></p><p><b>  {</b></p><p>  if (fail==2)</p>&

57、lt;p><b>  {</b></p><p>  save_inf(head); //保存文件</p><p><b>  fail=3;</b></p><p>  reset(); //清除界面</p><p><b>  }</b>

58、;</p><p><b>  else </b></p><p>  printf("沒有選課,請先選課??!\n");</p><p>  goto loop; //返回初始界面</p><p><b>  }</b></p>&

59、lt;p><b>  else </b></p><p><b>  if (M==7)</b></p><p><b>  {</b></p><p>  if (fail==1||fail==2||fail==3)</p><p>  {read_inf(head);

60、reset();}</p><p><b>  else </b></p><p>  printf("沒有數據,請先錄入信息??!\n");</p><p>  goto loop; //返回初始界面</p><p><b>  }</b>

61、;</p><p><b>  else</b></p><p><b>  if (M==8)</b></p><p>  exit(0); //退出程序</p><p><b>  else </b></p><p>  print

62、f("輸入錯誤\n"); //錯誤提示</p><p>  goto loop; //轉至功能號的輸入</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  struct stu * cr

63、eat(int am) //創建鏈表</p><p><b>  {</b></p><p>  int i=1;am=N;</p><p>  struct stu *cp1,*cp2,*chead;</p><p>  printf("\t請輸入以下信息:(名稱和性質請輸入小寫字母,其余均為數字)\

64、n");</p><p>  printf("課程的編號 名稱 性質 總學時 總學分 理論學時 實驗學時 開課學期 已修本課的人數:");</p><p>  printf("\n");</p><p><b>  do</b></p><p><b>  {&

65、lt;/b></p><p>  cp1=(struct stu*)malloc(sizeof(struct stu));</p><p>  if(i==1) chead=cp2=cp1;</p><p>  else cp2->next=cp1;</p><p>  scanf("%d %s",&c

66、p1->num,&cp1->name);</p><p>  scanf("%s %d %d %d",&cp1->quale,&cp1->time,&cp1->credit,&cp1->thtime);</p><p>  scanf("%d %d %d",&cp1-

67、>extime,&cp1->term,&cp1->alnum);</p><p><b>  cp2=cp1;</b></p><p>  fflush(stdin); //刷新scanf()函數緩沖,防止自動循環</p><p><b>  i++;</b><

68、;/p><p>  }while(am>=i);</p><p>  cp2->next=NULL;</p><p>  return (chead);</p><p><b>  }</b></p><p>  void output(struct stu *p) //定義輸出信

69、息函數</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  struct stu *p1;</p><p><b>  p1=p;</b></p><p>  printf("編號 名稱

70、 性質 總學時 總學分 理論學時 實驗學時 開課學期 已修本課的人數\n");</p><p>  for (i=1;p1!=NULL;i++)</p><p><b>  {</b></p><p>  printf("%d %s %s\t%d\t%d\t%d\t%d\t%d\t%d",p1->num,p1

71、->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);</p><p>  printf("\n");</p><p>  p1=p1->next;</p><p><b>  }

72、</b></p><p><b>  }</b></p><p>  void inquire(struct stu*p,int n) //定義查詢信息函數</p><p><b>  {</b></p><p>  printf("輸入要查詢的編號:");

73、</p><p>  scanf("%d",&n);</p><p>  struct stu *p1;</p><p><b>  p1=p;</b></p><p>  printf("您所查詢的信息是:\n");</p><p><b&g

74、t;  do </b></p><p><b>  {</b></p><p>  if (p1->num==n)</p><p><b>  {</b></p><p>  printf("編號 名稱 性質 總學時 總學分 理論學時 實驗學時 開課學期 已修本課的人數\

75、n");</p><p>  printf("%d %s %s\t%d\t%d\t%d\t%d\t%d\t%d",p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);</p><p>

76、;  printf("\n");</p><p>  p1=p1->next;</p><p><b>  }</b></p><p><b>  else </b></p><p>  p1=p1->next;</p><p>  }whil

77、e(p1!=NULL);</p><p><b>  }</b></p><p>  void stu_classes(struct stu*p,int num) //定義學生選課信息的函數,并保存至"選修信息文件.txt"</p><p><b>  {</b></p>&l

78、t;p><b>  int snum;</b></p><p>  struct stu*head,*p1;</p><p><b>  p1=p;</b></p><p>  printf("請輸入學生學號:");</p><p>  scanf("%d&quo

79、t;,&snum);</p><p>  printf("輸入課程編號:");</p><p>  scanf("%d",&num);</p><p><b>  do</b></p><p><b>  {</b></p>&l

80、t;p>  if (p1->num=num)</p><p><b>  {</b></p><p><b>  FILE*fp;</b></p><p>  fp=fopen("選修信息文件.txt","w");</p><p>  fprint

81、f(fp,"學生學號 課程編號 名稱 性質 總學時 總學分 理論學時 實驗學時 開課學期 已修本課的人數\n");</p><p>  fprintf(fp,"%d\t%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d",snum,p1->num,p1->name,p1->quale,p1->time,p1->credit,p

82、1->thtime,p1->extime,p1->term,p1->alnum);</p><p>  fclose(fp);</p><p>  printf("已保存至“選修信息文件.txt”\n");</p><p><b>  }</b></p><p><b&g

83、t;  else </b></p><p>  p1=p1->next;</p><p>  }while(p1=NULL);</p><p><b>  }</b></p><p>  void inquire_stu(struct stu*p,int numb) //定義查詢學生信息的函數&

84、lt;/p><p><b>  {</b></p><p><b>  int snum;</b></p><p>  printf("請輸入學號:");</p><p>  scanf("%d",&snum);</p><p> 

85、 struct stu*head,*p1;</p><p><b>  p1=p;</b></p><p>  printf("學號 課程編號 課程名稱\n");</p><p>  printf("%d\t%d\t%s",snum,p1->num,p1->name);</p>

86、<p>  printf("\n");</p><p><b>  }</b></p><p>  void save_inf(struct stu*p) //定義保存課程信息的文件</p><p><b>  {</b></p><p><b>

87、;  int i;</b></p><p>  struct stu *p1,*head;</p><p><b>  p1=p;</b></p><p><b>  FILE*fp;</b></p><p>  fp=fopen("課程信息.txt","w

88、");</p><p>  for (i=0;p1!=NULL;i++)</p><p><b>  {</b></p><p>  fprintf(fp,"課程編號 名稱 性質 總學時 總學分 理論學時 實驗學時 開課學期 已修本課的人數\n");</p><p>  fprintf(fp

89、,"%d\t%s\t%s\t%d\t%d\t%d\t%d\t%d\t%d\n",p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);</p><p>  p1=p1->next;</p><

90、p><b>  }</b></p><p>  fclose(fp); </p><p>  printf("已保存至“課程信息.txt”\n");</p><p><b>  }</b></p><p>  void read_inf(struct stu*p)

91、 //定義讀出課程信息的函數</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  struct stu *p1,*head;</p><p><b>  p1=p;</b></p><p&

92、gt;<b>  FILE*fp;</b></p><p>  if ((fp=fopen("課程信息.txt","r"))==NULL)</p><p><b>  {</b></p><p>  printf("無法打開文件\n");</p>&

93、lt;p>  printf("請先建立文件\n");</p><p><b>  }</b></p><p>  for (i=1;p1!=NULL;i++)</p><p><b>  {</b></p><p>  fread(&p,sizeof(head),

94、1,fp);</p><p>  printf("%d %s %s\t%d\t%d\t%d\t%d\t%d\t%d\n",p1->num,p1->name,p1->quale,p1->time,p1->credit,p1->thtime,p1->extime,p1->term,p1->alnum);</p><p>

95、  p1=p1->next;</p><p><b>  }</b></p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void reset() //定義清楚界面函數</p>

96、<p><b>  {</b></p><p>  printf("按任意鍵繼續");</p><p><b>  getch();</b></p><p>  system("CLS");</p><p><b>  }</b>

97、;</p><p><b>  各階段運行結果:</b></p><p><b>  主界面的輸出:</b></p><p><b>  數據的輸入:</b></p><p><b>  數據的輸出:</b></p><p><

98、;b>  查詢信息 :</b></p><p><b>  選課并保存:</b></p><p><b>  保存的文件:</b></p><p><b>  查詢選課信息:</b></p><p><b>  保存課程信息:</b>&l

99、t;/p><p><b>  保存的文件:</b></p><p><b>  讀取以保存的文件:</b></p><p><b>  錯誤提示:</b></p><p><b>  總結與體會</b></p><p>  這次的課程設

100、計實驗是對我們進入大學以來學習C語言結果的一次大考驗。自己動手,發現問題和解決問題。并發現了許多自己的不足,平時沒掌握的知識在實踐中暴漏,經過不斷的思考,查閱書籍和上網查資料及上機運行,解決了大部分問題,還稍微有些小問題。但是,我相信經過深入的的學習,一定能把它解決好。當今計算機應用在生活中可以說得是無處不在。因此作為二十一世紀的大學來說掌握程序開發技術是十分重要的,而C語言又是最常見,功能最強大的一種高級語言,因此做好C語言課程設計是

101、十分必要的。 </p><p>  我不僅鞏固《C語言程序設計》課程學習的內容,掌握設計的基本方法,強化上機動手能力,還進一步掌握以下了知識:數據類型、循環控制、函數的定義及調用、結構體及指針、文件操作、編譯預處理等;通過課程設計,增強了自己動手的能力,有了這次成功的設計,給了我極大的信心,在以后的學習中會更加認真,努力。 </p><p>  通過這次課程設計使我們懂

溫馨提示

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

評論

0/150

提交評論