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

下載本文檔

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

文檔簡介

1、<p><b>  計算機與通信學院</b></p><p><b>  2011年春季學期</b></p><p>  C程序設計 課程設計</p><p>  題 目:學生選課系統(tǒng) </p><p><b>  專業(yè)班級: </b></p>

2、<p>  姓 名: </p><p>  學 號: </p><p>  指導教師: </p><p>  成 績: </p><p><b>  摘 要</b></p><p>  學生選課系統(tǒng)是一

3、個教育單位不可缺少的重要系統(tǒng)組成部分,它對于學校的決策者、管理者管理、查看課程來說都有至關重要,所以學生選課管理系統(tǒng)應該能夠為廣大學、師生提供充足的信息和快捷的課程選擇過程,有助于學生選好每一門課程,此系統(tǒng)系統(tǒng)選課方便、快捷,用簡單的界面來展示學生的選課信息,應用簡單明了、存儲量大、可靠性高、保密性好、壽命長、成本低等優(yōu)點,可以極大的提高對學生信息管理的效率。利用C語言開發(fā),實現了簡單的學生課程信息的錄入、修改、查詢、刪除等操作,并且能

4、夠利用文件系統(tǒng)長久的保留原始數據。</p><p><b>  目 錄</b></p><p><b>  一、需求分析1</b></p><p><b>  二、總體設計1</b></p><p><b>  三、詳細設計2</b></p

5、><p><b>  1、數據定義3</b></p><p><b>  2、算法流程圖3</b></p><p><b>  四、編碼6</b></p><p><b>  五、調試7</b></p><p><b>

6、;  六、設計總結10</b></p><p><b>  致謝11</b></p><p><b>  參考文獻12</b></p><p><b>  附錄13</b></p><p><b>  一、需求分析</b></p&

7、gt;<p>  語言文字描述系統(tǒng)要做什么</p><p>  數據結構可用結構體,包括課程和選修兩個結構體,其中課程結構體成員結構體成員包括課程編號,課程名稱,課程性質,總學時,授課學時,實驗或上機學時,學分,開課學期。選修結構體成員包括學號,課程編號,該結構體的建立主要是為了查詢某門課程學生選修情況。</p><p><b>  二、總體設計</b>

8、</p><p>  系統(tǒng)由哪幾個功能模塊構成,給出功能模塊圖。C中模塊化的工具是函數</p><p>  根據上面的需求分析,可以將這個系統(tǒng)的設計分為如下七大模塊:</p><p>  選課模塊、按學分查找模塊、按編號查找模塊、查看課程模塊、查看選課情況模塊、課程輸入模塊、完成選擇模塊。</p><p><b>  三、詳細設計&

9、lt;/b></p><p><b>  1.數據定義</b></p><p><b>  2,算法流程圖</b></p><p> ?。?)錄入課程信息表</p><p><b> ?。?)課程管理</b></p><p><b>  

10、Y</b></p><p><b> ?。?)錄入課程信息</b></p><p><b>  Y</b></p><p><b>  (4)學生信息管理</b></p><p><b>  Y</b></p><p>

11、<b>  Y</b></p><p><b>  (5)學生選課</b></p><p> ?。?)系統(tǒng)信息及查看系統(tǒng)</p><p><b> ?。?)退出系統(tǒng)</b></p><p><b>  四、編碼</b></p><p&

12、gt;  1.struct couse * head1;結構</p><p>  2. void keyboardc()//錄入課程子函數(從鍵盤錄入)</p><p>  3. void filec()//錄入鍵盤子函數(從文件錄入)</p><p>  4. void inputc()//錄入課程主函數</p><p>  5. void

13、 insertc(struct couse *incouse)//課程管理子函數(增加課程)</p><p>  6. void delc(int num1)//課程管理子函數(刪除課程)</p><p>  7. void elect(struct student * s)//選課</p><p>  8. void cheak()//學生選課子函數(查詢可選課程

14、)</p><p>  9. void back(struct student * p)//退課</p><p>  10. void hcheak()//學生選課子函數(查詢已選課程)</p><p>  11.void elective()//學生選課主函數</p><p>  12.void listc()//輸出課程信息</p&

15、gt;<p>  13.void lists()//輸出學生信息</p><p>  14.void intoc()//存儲課程信息</p><p>  15.void intos()//存儲學生信息</p><p>  16.void into()//存儲信息</p><p>  17.void store()//信息主函數&

16、lt;/p><p>  18. int main()//主函數</p><p><b>  五、測試</b></p><p><b>  1.主菜單</b></p><p><b>  2.錄入課程信息</b></p><p><b>  3,從文

17、件輸入</b></p><p><b>  4,學生選課菜單 </b></p><p><b>  5,學生信息管理 </b></p><p>  6,管理員輸入課程信息界面:</p><p><b>  六、設計總結</b></p><p>

18、;  問題一:無法讀取文txt文件。</p><p>  困難就是txt 無法讀取,輸入路徑后沒有文件顯示。</p><p>  解決辦法是,向老師求助。</p><p>  最后,在老師細心的指導下,才知道是自己的計算機操作水平緣故,沒有很好的了解計算機路徑結構,最后做出了一定的修改,才得以實現。</p><p><b>  問題

19、二:程序錯誤。</b></p><p>  這是一個比較典型的錯誤,通過查閱書本相關資料。才發(fā)覺是函數相關問題,沒有能夠很好的理解函數思想,導致程序運行錯誤。</p><p><b>  致謝</b></p><p>  在這次c語言課程設計中,首先得感謝*老師給予我們指導與幫助,在她的指導幫助下,才使得我們能夠順利的完成課程設計,

20、更重要的是在這次課程設計中,極大的提高我的c語言設計能力,也讓我深刻的了解到自己在這方面的諸多不足,使得我能更清楚的了解自己的水平,加強了我對這門學科的認識。同時也感謝和我一起完成這課設的**同學,我們在互相交流幫助中也相互學習到許多小的應用技巧,解決了一些列問題。還要感謝那些給予我們幫助的同學,也給了我很大的幫助。</p><p><b>  參考文獻</b></p><

21、;p>  1.姜靈芝,余健. C語言課程設計案例精編.北京:清華大學出版社,2008</p><p>  2.王新,孫雷. C語言課程設計.北京:清華大學出版社,2009</p><p>  3.游洪躍、彭駿、譚斌.C語言程序設計實驗與課程設計教程.北京:清華大學出版社,2011</p><p>  4.王連相.C/C++程序設計上機指導與測試. 北京:中國鐵

22、道出版社,2006</p><p>  5.C語言函數手冊,機械工業(yè)出版社,1999</p><p><b>  附錄</b></p><p>  #include<stdio.h> </p><p>  #include<stdlib.h></p><p>  int N

23、1,N2,kk1,kk2,kk3;</p><p>  struct couse * head1;</p><p>  struct student * head2;</p><p>  struct couse//課程信息結構體</p><p><b>  {</b></p><p>  int

24、 num1;//課程編號</p><p>  char name1[20];//課程名稱</p><p>  char xinzhi[30];//課程性質i</p><p>  int ztime;//課程總學時</p><p>  int stime;//授課學時</p><p>  int shiyan;//實驗學

25、時</p><p>  int score;//學分</p><p>  long int date;//開學學期</p><p>  int nelepeo;//課程已選人數</p><p>  int Melepeo;//課程人數上限</p><p>  struct couse * next;</p>

26、<p><b>  };</b></p><p>  struct student//學生信息結構體</p><p><b>  {</b></p><p><b>  int num2;</b></p><p>  char name2[20];</p&g

27、t;<p>  int nelenum[50];//已選課程編號</p><p>  int nelen;//已選課程數量</p><p>  struct student * next;</p><p><b>  };</b></p><p><b>  void Ms()</b>

28、</p><p><b>  {</b></p><p>  for(kk1=0;kk1<1100;kk1++)</p><p>  for(kk2=0;kk2<1200;kk2++)</p><p>  for(kk3=0;kk3<1200;kk3++);</p><p>&l

29、t;b>  }</b></p><p>  void keyboardc()//錄入課程子函數(從鍵盤錄入)</p><p><b>  {</b></p><p>  struct couse *p1,*p2;</p><p><b>  N1=0;</b></p>

30、<p>  p1=p2=(struct couse*)malloc(sizeof(struct couse));</p><p>  printf("課程編號 課程名稱 課程性質 總學時 授課學時 實驗學時 學分 開課學期 人數上限\n");</p><p>  scanf("%d%s%s%d%d%d%d%d",&p1->n

31、um1,p1->name1,&p1->xinzhi,&p1->ztime,&p1->stime,&p1->shiyan,&p1->score,&p1->date,&p1->Melepeo);</p><p>  p1->nelepeo=0;</p><p>  head1=NULL

32、;</p><p>  while(p1->num1!=0)</p><p><b>  {</b></p><p><b>  N1=N1+1;</b></p><p>  if(N1==1)head1=p1;</p><p>  else p2->next=p

33、1;</p><p><b>  p2=p1;</b></p><p>  p1=(struct couse * )malloc(sizeof(struct couse));</p><p>  scanf("%d%s%s%d%d%d%d%d",&p1->num1,p1->name1,&p1-&g

34、t;xinzhi,&p1->ztime,&p1->stime,&p1->shiyan,&p1->score,&p1->date,&p1->Melepeo);</p><p>  p1->nelepeo=0;</p><p><b>  }</b></p><p

35、>  p2->next=NULL;</p><p><b>  }</b></p><p>  void filec()//錄入鍵盤子函數(從文件錄入)</p><p><b>  {</b></p><p>  FILE * fp;</p><p>  char

36、 filepath[20]; </p><p>  struct couse *p1,*p2;</p><p><b>  N1=0;</b></p><p>  printf("輸入要讀入的文件路徑:");</p><p>  getchar();</p><p>  get

37、s(filepath); </p><p>  if((fp=fopen(filepath,"r"))==NULL) </p><p><b>  { </b></p><p>  printf("找不到%s文件!\n",filepath); </p><p><b> 

38、 exit(0); </b></p><p><b>  } </b></p><p>  p1=p2=(struct couse*)malloc(sizeof(struct couse));</p><p>  fscanf(fp,"%d%s%s%d%d%d%d%d",&p1->num1,&

39、;p1->name1,&p1->xinzhi,&p1->ztime,&p1->stime,&p1->shiyan,&p1->score,&p1->date,&p1->Melepeo);</p><p>  printf("課程編號 課程名稱 課程性質 總學時 授課學時 實驗學時 學分 開課學期 人數上

40、限\n");</p><p>  fprintf(stdout,"%d\t %s\t%s\t %d\t%d\t%d\t%d\t%d\t%d\n",p1->num1,p1->name1,p1->xinzhi,p1->ztime,p1->stime,p1->shiyan,p1->score,p1->date,p1->Melepeo

41、);</p><p>  head1=NULL;</p><p>  while(!feof(fp))</p><p><b>  {</b></p><p><b>  N1=N1+1;</b></p><p>  if(N1==1)head1=p1;</p>

42、<p>  else p2->next=p1;</p><p><b>  p2=p1;</b></p><p>  p1=(struct couse * )malloc(sizeof(struct couse));</p><p>  fscanf(fp,"%d%s%s%d%d%d%d%d",&p

43、1->num1,p1->name1,&p1->xinzhi,&p1->ztime,&p1->stime,&p1->shiyan,&p1->score,&p1->date,&p1->Melepeo);</p><p>  fprintf(stdout,"%d %s %s %d %d %d %d %

44、d %d\n",p1->num1,p1->name1,p1->xinzhi,p1->ztime,p1->stime,p1->shiyan,p1->score,p1->date,p1->Melepeo);</p><p><b>  } </b></p><p>  p2->next=NULL;<

45、;/p><p><b>  }</b></p><p>  void inputc()//錄入課程主函數</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  printf("\t\t\t錄入

46、課程信息\n");</p><p>  printf("\n1.從鍵盤錄入\n");</p><p>  printf("2.從文件錄入\n");</p><p>  printf("3.返回主菜單\n");</p><p>  printf("請選擇(1~3):

47、\n");</p><p>  scanf("%d",&i);</p><p><b>  switch(i)</b></p><p><b>  {</b></p><p>  case(1):keyboardc();break;</p><

48、;p>  case(2):filec();break;</p><p>  case(3):break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void insertc(struct couse *incouse)//課程管理子函數

49、(增加課程)</p><p><b>  {</b></p><p>  struct couse *p0,*p1,*p2;</p><p><b>  p1=head1;</b></p><p>  p0=incouse;</p><p>  if(head1==NULL)

50、</p><p><b>  {</b></p><p><b>  head1=p0;</b></p><p>  p0->next=NULL;</p><p><b>  }</b></p><p><b>  else</b&

51、gt;</p><p><b>  {</b></p><p>  while((p0->num1 > p1->num1) && (p1->next!=NULL))</p><p><b>  {</b></p><p>  p2=p1;

52、 p1=p1->next;</p><p><b>  }</b></p><p>  if(p0->num1 <= p1->num1)</p><p><b>  {</b></p><p>  if(head1==p1) head1=p0;</p><

53、p>  else p2->next=p0;</p><p>  p0->next=p1;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  

54、p1->next=p0; p0->next=NULL;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  N1=N1+1;</b></p><p><b>  }</b&

55、gt;</p><p>  void delc(int num1)//課程管理子函數(刪除課程)</p><p><b>  {</b></p><p>  struct couse *p1,*p2;</p><p>  if(head1==NULL)</p><p><b>  {&l

56、t;/b></p><p>  printf("\n沒有課程,無法刪除!\n");</p><p><b>  goto end;</b></p><p><b>  }</b></p><p><b>  p1=head1;</b></p>

57、;<p>  while(num1!=p1->num1 && p1->next!=NULL)</p><p><b>  {</b></p><p>  p2=p1; p1=p1->next;</p><p><b>  }</b></p><

58、;p>  if(num1==p1->num1)</p><p><b>  {</b></p><p>  if(p1==head1) head1=p1->next;</p><p>  else p2->next=p1->next;</p><p>  printf("已刪除該編

59、號課程!\n");</p><p><b>  N1=N1-1;</b></p><p><b>  }</b></p><p>  else printf("無該編號的課程!\n");</p><p><b>  end:;</b></p&

60、gt;<p><b>  }</b></p><p>  void managementc()//課程管理主函數</p><p><b>  {</b></p><p>  struct couse * incouse;</p><p>  int i,num1;</p>

61、<p>  printf("\t\t\t課程管理\n");</p><p>  printf("1.新增課程\n");</p><p>  printf("2.刪除課程\n");</p><p>  printf("3.返回主菜單\n");</p><p&

62、gt;  printf("請選擇(1~3):\n");</p><p>  scanf("%d",&i);</p><p><b>  switch(i)</b></p><p><b>  {</b></p><p><b>  case(

63、1):</b></p><p><b>  {</b></p><p>  incouse=(struct couse *)malloc(sizeof(struct couse));</p><p>  printf("課程編號 課程名稱 課程性質 總學時 授課學時 實驗學時 學分 開課學期 人數上限\n");&

64、lt;/p><p>  scanf("%d\n%s\n%s\n%d\n%d\n%d\n%d\n%d\n%d\n",&incouse->num1,&incouse->name1,&incouse->xinzhi,&incouse->ztime,&incouse->stime,&incouse->score,&

65、incouse->date,&incouse->Melepeo);</p><p>  incouse->nelepeo=0;</p><p>  insertc(incouse);</p><p><b>  break;</b></p><p><b>  }</b>&

66、lt;/p><p><b>  case(2):</b></p><p><b>  {</b></p><p>  printf("請輸入要刪除課程的編號:\n");</p><p>  scanf("%d",&num1);</p><

67、;p>  delc(num1);</p><p><b>  break;</b></p><p><b>  }</b></p><p>  case(3):break;</p><p><b>  }</b></p><p><b>

68、  }</b></p><p>  void keyboards()//錄入學生信息子函數(從鍵盤錄入)</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  struct student *p1,*p2;</p>&

69、lt;p><b>  N2=0;</b></p><p>  p1=p2=(struct student *)malloc(sizeof(struct student));</p><p>  printf("學生學號\t學生姓名\n");</p><p>  scanf("%d%s",&p

70、1->num2,p1->name2);</p><p>  p1->nelen=0;</p><p>  for(i=0;i<20;i++) p1->nelenum[i]=0;</p><p>  head2=NULL;</p><p>  while(p1->num2!=0)</p><

71、;p><b>  {</b></p><p>  N2=N2+1; if(N2==1)head2=p1;</p><p>  else p2->next=p1;</p><p><b>  p2=p1;</b></p><p>  p1=(struct student *

72、)malloc(sizeof(struct student));</p><p>  scanf("%d%s",&p1->num2,p1->name2);</p><p>  p1->nelen=0;</p><p>  for(i=0;i<20;i++) p1->nelenum[i]=0;</p>

73、;<p><b>  }</b></p><p>  p2->next=NULL;</p><p><b>  }</b></p><p>  void files()//錄入學生信息子函數(從文件錄入)</p><p><b>  {</b></p&

74、gt;<p><b>  int i=0;</b></p><p>  FILE * fp;</p><p>  char filepath[20]; </p><p>  struct student *p1,*p2;</p><p><b>  N2=0;</b></p>

75、;<p>  printf("輸入要讀入的文件路徑:");</p><p>  getchar();</p><p>  gets(filepath); </p><p>  if((fp=fopen(filepath,"r"))==NULL) </p><p><b>  {

76、</b></p><p>  printf("找不到%s文件!\n",filepath); </p><p><b>  exit(0); </b></p><p><b>  } </b></p><p>  p1=p2=(struct student*)mallo

77、c(sizeof(struct student));</p><p>  fread(p1,sizeof(struct student),1,fp);</p><p>  head2=NULL;</p><p>  while(!feof(fp))</p><p><b>  {</b></p><p

78、><b>  i=0;</b></p><p><b>  N2=N2+1;</b></p><p>  if(N2==1)head2=p1;</p><p>  else p2->next=p1;</p><p><b>  p2=p1;</b></p>

79、;<p>  p1=(struct student * )malloc(sizeof(struct student));</p><p>  fread(p1,sizeof(struct student),1,fp);</p><p><b>  } </b></p><p>  p2->next=NULL;</p&g

80、t;<p><b>  }</b></p><p>  void inputs()//錄入學生信息主函數</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  printf("\t\t\t錄入學生信

81、息\n");</p><p>  printf("\n1.從鍵盤錄入\n");</p><p>  printf("2.從文件錄入\n");</p><p>  printf("3.返回主菜單\n");</p><p>  printf("請選擇(1~3):\n&

82、quot;);</p><p>  scanf("%d",&i);</p><p><b>  switch(i)</b></p><p><b>  {</b></p><p>  case(1):keyboards();break;</p><p&

83、gt;  case(2):files();break;</p><p>  case(3):break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void inserts(struct student * incouse)//學生信息管理子

84、函數(填加學生信息)</p><p><b>  {</b></p><p>  struct student *p0,*p1,*p2;</p><p><b>  p1=head2;</b></p><p>  p0=incouse;</p><p>  if(head2=

85、=NULL)</p><p><b>  {</b></p><p><b>  head2=p0;</b></p><p>  p0->next=NULL;</p><p><b>  }</b></p><p><b>  else&

86、lt;/b></p><p><b>  {</b></p><p>  while((p0->num2 > p1->num2) && (p1->next!=NULL))</p><p><b>  {</b></p><p><b>  p2

87、=p1;</b></p><p>  p1=p1->next;</p><p><b>  }</b></p><p>  if(p0->num2 <= p1->num2)</p><p><b>  {</b></p><p>  if(

88、head2==p1) head2=p0;</p><p>  else p2->next=p0;</p><p>  p0->next=p1;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>

89、  {</b></p><p>  p1->next=p0;</p><p>  p0->next=NULL;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  N2=N2+1;<

90、;/b></p><p><b>  }</b></p><p>  void dels(int num2)//學生信息管理子函數(刪除學生信息)</p><p><b>  {</b></p><p>  struct student *p1,*p2;</p><p>

91、;  if(head2==NULL)</p><p><b>  {</b></p><p>  printf("\n沒有該學生信息,無法刪除!\n");</p><p><b>  goto end;</b></p><p><b>  }</b><

92、/p><p><b>  p1=head2;</b></p><p>  while(num2!=p1->num2 && p1->next!=NULL)</p><p><b>  {</b></p><p><b>  p2=p1;</b></p

93、><p>  p1=p1->next;</p><p><b>  }</b></p><p>  if(num2==p1->num2)</p><p><b>  {</b></p><p>  if(p1==head2) head2=p1->next;<

94、;/p><p>  else p2->next=p1->next;</p><p>  printf("已刪除該學生信息!\n");</p><p><b>  N2=N2-1;</b></p><p><b>  }</b></p><p>  

95、else printf("無該學號的學生!\n");</p><p><b>  end:;</b></p><p><b>  }</b></p><p>  void managements()//學生信息管理主函數</p><p><b>  {</b>

96、;</p><p>  struct student * incouse;</p><p>  int i,num2;</p><p>  printf("\t\t\t學生信息管理\n");</p><p>  printf("1.新增學生信息\n");</p><p>  pr

97、intf("2.刪除學生信息\n");</p><p>  printf("3.返回主菜單\n");</p><p>  printf("請選擇(1~3):\n");</p><p>  scanf("%d",&i);</p><p><b> 

98、 switch(i)</b></p><p><b>  {</b></p><p><b>  case(1):</b></p><p><b>  {</b></p><p>  incouse=(struct student *)malloc(sizeof(s

99、truct student));</p><p>  incouse->nelen=0;</p><p>  incouse->nelenum[0]=0;</p><p>  printf("學生學號\t學生姓名\n");</p><p>  scanf("%d%s",&incous

100、e->num2,incouse->name2);</p><p>  inserts(incouse);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  case(2):</b></p>

101、;<p><b>  {</b></p><p>  printf("請輸入要刪除學生的學號:\n");</p><p>  scanf("%d",&num2);</p><p>  dels(num2);</p><p><b>  break;&

102、lt;/b></p><p><b>  }</b></p><p>  case(3):break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void elect(struct stud

103、ent * s)//選課</p><p><b>  {</b></p><p>  struct couse * p;</p><p>  int num1,i;</p><p>  printf("請輸入要選課的編號:\n");</p><p>  scanf("

104、%d",&num1);</p><p>  for(i=0;s->nelenum[i]!=0;i++);</p><p>  s->nelenum[i]=num1;</p><p>  (s->nelen)++;</p><p><b>  p=head1;</b></p>

105、<p>  while(p->num1!=num1) p=p->next;</p><p>  (p->nelepeo)++;</p><p><b>  }</b></p><p>  void cheak()//學生選課子函數(查詢可選課程)</p><p><b>  {&

106、lt;/b></p><p><b>  char e;</b></p><p>  struct couse * c;</p><p>  struct student * s;</p><p>  int num2,i,j=0,t=0;</p><p>  printf("請輸

107、入你的學號:");</p><p>  scanf("%d",&num2);</p><p><b>  s=head2;</b></p><p>  while(s->num2!=num2 && s->next!=NULL) s=s->next;</p>&

108、lt;p>  if(s->num2!=num2)</p><p><b>  {</b></p><p>  printf("不存在你的信息,請進入主菜單錄入你的信息!\n");</p><p><b>  goto end;</b></p><p><b>

109、;  }</b></p><p><b>  c=head1;</b></p><p>  printf("你的可選課程編號:\n");</p><p>  while(c!=NULL)</p><p><b>  {</b></p><p>

110、  for(t=0,i=0;s->nelenum[i]!=0;i++)</p><p><b>  {</b></p><p>  if(c->num1==s->nelenum[i]) t=1;</p><p><b>  }</b></p><p>  if(t==0 &

111、& (c->nelepeo!=c->Melepeo))</p><p><b>  {</b></p><p>  printf("%d\n",c->num1);</p><p><b>  j++;</b></p><p><b>  }&l

112、t;/b></p><p>  c=c->next;</p><p><b>  }</b></p><p><b>  if(j==0) </b></p><p><b>  {</b></p><p>  printf("你已選

113、完所有課程,無法再多選!\n");</p><p><b>  goto end;</b></p><p><b>  }</b></p><p>  printf("選課(y/n)?:\n");</p><p>  getchar();</p><

114、p>  e=getchar();</p><p><b>  i=0;</b></p><p>  while(e=='y')</p><p><b>  {</b></p><p><b>  elect(s);</b></p><p

115、>  printf("繼續(xù)選課(y/n)?:\n");</p><p>  getchar();</p><p>  e=getchar();</p><p><b>  }</b></p><p><b>  end:;</b></p><p>&

116、lt;b>  }</b></p><p>  void back(struct student * p)//退課</p><p><b>  {</b></p><p>  struct couse * p1;</p><p>  int num1,i,j;</p><p>  

117、printf("請輸入你要退掉的課程編號:\n");</p><p>  scanf("%d",&num1);</p><p><b>  p1=head1;</b></p><p>  while(p1->num1!=num1) p1=p1->next;</p><

118、;p>  for(i=0;p->nelenum[i]!=num1;i++);</p><p>  for(j=i;p->nelenum[j]!=0;j++) p->nelenum[j]=p->nelenum[j+1];</p><p>  p->nelenum[--j]=0;</p><p>  (p1->nelepeo)-

119、-;</p><p>  printf("退課成功!\n");</p><p><b>  }</b></p><p>  void hcheak()//學生選課子函數(查詢已選課程)</p><p><b>  {</b></p><p><b&g

120、t;  char c;</b></p><p>  struct couse * p0;</p><p>  struct student * p;</p><p>  int num2,i,f=0;</p><p>  printf("請輸入學號:\n");</p><p>  sca

121、nf("%d",&num2);</p><p><b>  p=head2;</b></p><p>  while(p->num2!=num2 && p!=NULL) p=p->next;</p><p>  if(p==NULL)</p><p><b&g

122、t;  {</b></p><p>  printf("不存在你的信息,請回主菜單錄入信息:\n");</p><p><b>  goto end;</b></p><p><b>  }</b></p><p>  printf("已選課程編號:\n&q

123、uot;);</p><p>  if(p->nelenum[0]==0)</p><p><b>  {</b></p><p>  printf("你還沒選課!\n");</p><p><b>  goto end;</b></p><p>&

124、lt;b>  }</b></p><p>  for(i=0;p->nelenum[i]!=0;i++) </p><p><b>  {</b></p><p>  printf("%d\n",p->nelenum[i]);</p><p><b>  p0=

125、head1;</b></p><p>  while(p0->num1!=p->nelenum[i]) p0=p0->next;</p><p>  f=f+p0->score;</p><p><b>  }</b></p><p>  printf("總學分:%d\n&q

126、uot;,f);</p><p>  printf("是否進行退課(y/n)?");</p><p>  getchar();</p><p>  c=getchar();</p><p>  while(c=='y')</p><p><b>  {</b>&

127、lt;/p><p><b>  back(p);</b></p><p>  printf("繼續(xù)退課(y/n)?");</p><p>  getchar();</p><p>  c=getchar();</p><p>  (p->nelen)--;</p>

128、<p><b>  }</b></p><p><b>  end:;</b></p><p><b>  }</b></p><p>  void elective()//學生選課主函數</p><p><b>  {</b></p&

129、gt;<p><b>  int i;</b></p><p>  printf("\t\t\t學生選課\n");</p><p>  printf("1.查詢可選課程\n");</p><p>  printf("2.查詢已選課程\n");</p><

130、;p>  printf("3.返回主菜單\n");</p><p>  printf("請輸入(1~3):\n");</p><p>  scanf("%d",&i);</p><p><b>  switch(i)</b></p><p><

131、;b>  {</b></p><p>  case(1):cheak();break;</p><p>  case(2):hcheak();break;</p><p>  case(3):break;</p><p><b>  }</b></p><p><b>

132、  }</b></p><p>  void listc()//輸出課程信息</p><p><b>  {</b></p><p>  struct couse * p;</p><p><b>  p=head1;</b></p><p>  printf(&

133、quot;課程編號 名稱 性質 總學時 授課學時 實驗學時 學分 開課學期 已選人數 人數上限\n");</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  printf("%d %s %s %d %d %d %d %d %d %d\n",p->nu

134、m1,p->name1,p->xinzhi,p->ztime,p->stime,p->shiyan,p->score,p->date,p->nelepeo,p->Melepeo);</p><p>  p=p->next;</p><p><b>  }</b></p><p><

135、;b>  }</b></p><p>  void lists()//輸出學生信息</p><p><b>  {</b></p><p>  struct student * p;</p><p><b>  p=head2;</b></p><p>  

136、printf("學生學號 學生姓名 已選課程數量\n");</p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  printf("%-4d %10s %6d\n",p->num2,p->name2,p->nelen);</

137、p><p>  p=p->next;</p><p><b>  }</b></p><p><b>  }</b></p><p>  void intoc()//存儲課程信息</p><p><b>  {</b></p><p

138、>  FILE * fp;</p><p>  struct couse * p;</p><p>  char filepath[30]; </p><p>  printf("輸入課程信息要保存的文件路徑:");</p><p>  getchar(); </p><p>  get

139、s(filepath); </p><p>  if((fp=fopen(filepath,"w"))==NULL) </p><p><b>  { </b></p><p>  printf("\n保存失敗!"); </p><p><b>  exit(0); &l

140、t;/b></p><p><b>  }</b></p><p><b>  p=head1;</b></p><p>  while(p!=NULL)</p><p><b>  {</b></p><p>  fprintf(fp,"

141、;%d %s %s %d %d %d %d %d %d %d\n",p->num1,p->name1,p->xinzhi,p->ztime,p->stime,p->shiyan,p->score,p->date,p->nelepeo,p->Melepeo);</p><p>  p=p->next;</p><p>

142、;<b>  }</b></p><p>  fclose(fp); </p><p>  printf("課程信息已保存在%s中!\n",filepath); </p><p><b>  }</b></p><p>  void intos()//存儲學生信息</p&g

143、t;<p><b>  {</b></p><p>  FILE * fp;</p><p>  struct student * p;</p><p>  char filepath[30]; </p><p>  printf("輸入學生信息要保存的文件路徑:");</p>

144、;<p>  getchar(); </p><p>  gets(filepath); </p><p>  if((fp=fopen(filepath,"w"))==NULL) </p><p><b>  { </b></p><p>  printf("\n保存失

145、敗!"); </p><p><b>  exit(0); </b></p><p><b>  }</b></p><p><b>  p=head2;</b></p><p>  while(p!=NULL)</p><p><b&g

146、t;  {</b></p><p>  fwrite(p,sizeof(struct student),1,fp);</p><p>  p=p->next;</p><p><b>  }</b></p><p>  fclose(fp); </p><p>  printf(

147、"學生信息已保存在%s中!\n",filepath); </p><p><b>  }</b></p><p>  void into()//存儲信息</p><p><b>  {</b></p><p><b>  int i;</b></p&g

148、t;<p>  printf("1.存儲課程信息\n");</p><p>  printf("2.存儲學生信息\n");</p><p>  printf("3.返回主菜單\n");</p><p>  printf("請輸入(1~3)\n");</p>&

149、lt;p>  scanf("%d",&i);</p><p><b>  switch(i)</b></p><p><b>  {</b></p><p>  case(1):intoc();break;</p><p>  case(2):intos();bre

150、ak;</p><p>  case(3):break;</p><p><b>  } </b></p><p><b>  }</b></p><p>  void store()//信息主函數</p><p><b>  {</b></

151、p><p><b>  int i;</b></p><p>  printf("\t\t系統(tǒng)信息查看及存儲\n");</p><p>  printf("1.查看課程信息\n");</p><p>  printf("2.查看學生信息\n");</p>

152、<p>  printf("3.存儲信息\n");</p><p>  printf("4.返回主菜單\n");</p><p>  printf("請輸入(1~4):\n");</p><p>  scanf("%d",&i);</p><p&

溫馨提示

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

評論

0/150

提交評論