c語言程序設(shè)計報告—學生選修課程系統(tǒng)_第1頁
已閱讀1頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  C語言程序設(shè)計報告</b></p><p>  一、C語言課程設(shè)計的目的: 高級語言課程設(shè)計是學習完《高級語言程序設(shè)計》課程后進行的一次全面的綜合性上機實驗。其目的在于為同學提供了一個既動手又動腦,獨立實踐的機會,將課本上的理論知識和實際有機的結(jié)合起來,鍛煉同學的分析解決實際問題的能力。提高學生適應實際,實踐編程的能力。</p><

2、p><b>  二、題目</b></p><p>  學生選修課程系統(tǒng)設(shè)計</p><p>  假定有n門課程,每門課程有課程編號、課程名稱、課程性質(zhì)、總學時、授課學時、實驗或商機學時、血粉、開課學期等信息,學生可按要求(如總學分不得少于60)自由選課。</p><p><b>  1、要求:</b></p&g

3、t;<p>  試設(shè)計一個選修課程系統(tǒng),使之能提供以下功能:</p><p>  系統(tǒng)以菜單方式工作。</p><p>  課程信息和學生選課信息輸入功能(課程信息用文件保存)——輸入。</p><p>  課程信息瀏覽功能——輸出。</p><p>  查詢功能(至少一種查詢方式)——算法。</p><p&

4、gt;<b>  按學分查詢。</b></p><p>  某門課程學生選修情況(可選項)。</p><p><b>  2、分析:</b></p><p>  由于題目要求將學生的選課信息用結(jié)構(gòu)體形式輸入,并寫入文件中,所以應提供文件的輸入輸出等操作:在過程中需有瀏覽、插入、修改、查找、刪除學生選課信息等操作,顧應分別建

5、立個功能模塊;另外還應提供鍵盤式選擇菜單實現(xiàn)程序運行。</p><p><b>  3、總體設(shè)計:</b></p><p>  根據(jù)題目要求,可以將系統(tǒng)分為六個模塊:</p><p>  系統(tǒng)以菜單方式工作模塊;</p><p>  課程信息與學生選課信息錄入功能模塊;</p><p>  課程信

6、息瀏覽功能模塊;</p><p><b>  查詢模塊;</b></p><p><b>  按學分查詢模塊;</b></p><p>  某些課程學生選修情況模塊。</p><p><b>  4詳細設(shè)計:</b></p><p>  #include

7、 <stdio.h></p><p>  #include <stdlib.h> 主流程圖:</p><p>  #include <string.h> </p><p>  typedef struct subjects</p><p><b>  {</b></p

8、><p><b>  int num;</b></p><p>  char name[20];</p><p>  char kind[10];</p><p>  int stime;</p><p>  int ttime;</p><p>  int etime;<

9、;/p><p>  int score;</p><p><b>  int term;</b></p><p>  struct subjects *next;</p><p><b>  }SUB;</b></p><p>  SUB *create_form()</p

10、><p><b>  {</b></p><p>  SUB *head,*tail,*p;</p><p>  int num,stime,ttime;</p><p>  int etime,score,term;</p><p>  char name[20],kind[10];</p&g

11、t;<p>  int size=sizeof(SUB);</p><p>  head=tail=NULL;</p><p>  printf("輸入選修課程信息:\n");</p><p>  scanf("%d %s %s %d %d %d %d %d",&num,&name,&ki

12、nd,&stime,&ttime,&etime,&score,&term);</p><p>  while(num!=0){</p><p>  p=(SUB *)malloc(size);</p><p>  p->num=num;</p><p>  strcpy(p->name,na

13、me);</p><p>  strcpy(p->kind,kind);</p><p>  p->stime=stime;</p><p>  p->ttime=ttime;</p><p>  p->etime=etime;</p><p>  p->score=score;</

14、p><p>  p->term=term;</p><p>  if(head==NULL)</p><p><b>  head=p;</b></p><p><b>  else</b></p><p>  tail->next=p;</p><

15、;p><b>  tail=p;</b></p><p>  scanf("%d %s %s %d %d %d %d %d",&num,&name,&kind,&stime,&ttime,&etime,&score,&term);</p><p><b>  }<

16、/b></p><p>  tail->next=NULL;</p><p>  return head;</p><p><b>  }</b></p><p>  void savefile(SUB *head)</p><p><b>  {</b><

17、/p><p><b>  SUB *p;</b></p><p><b>  FILE *fp;</b></p><p>  fp=fopen("subjects.txt","w");</p><p>  fprintf(fp,"課程編號 課程名稱

18、課程性質(zhì) 總學時 授課學時 實驗或上機學時 學分 開課學期\n");</p><p>  for(p=head;p;p=p->next)</p><p>  fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->t

19、time,p->etime,p->score,p->term);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void savefileadd(SUB *head)</p><p><b>  {</b></p>

20、;<p><b>  SUB *p;</b></p><p><b>  FILE *fp;</b></p><p>  fp=fopen("subjectsadd.txt","w");</p><p>  fprintf(fp,"課程編號 課程名稱 課程

21、性質(zhì) 總學時 授課學時 實驗或上機學時 學分 開課學期\n");</p><p>  for(p=head;p;p=p->next)</p><p>  fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->tti

22、me,p->etime,p->score,p->term);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void savefiledel(SUB *head)</p><p><b>  {</b></p>

23、<p><b>  SUB *p;</b></p><p><b>  FILE *fp;</b></p><p>  fp=fopen("subjectsdel.txt","w");</p><p>  fprintf(fp,"課程編號 課程名稱 課程性質(zhì)

24、 總學時 授課學時 實驗或上機學時 學分 開課學期\n");</p><p>  for(p=head;p;p=p->next)</p><p>  fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime

25、,p->etime,p->score,p->term);</p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void prin(SUB *head)</p><p><b>  {</b></p><p>

26、;<b>  SUB *ptr;</b></p><p>  if(head==NULL){</p><p>  printf("沒有此門課程記錄!\n");</p><p><b>  return;</b></p><p><b>  }</b><

27、/p><p>  printf("課程編號 課程名稱 課程性質(zhì) 總學時 授課學時 實踐或上機學時 學分 開課學期\n");</p><p>  for(ptr=head;ptr;ptr=ptr->next)</p><p>  printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr

28、->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);</p><p><b>  }</b></p><p>  void search(SUB *head)</p><p><b&

29、gt;  {</b></p><p>  int a,num;</p><p><b>  int t=1;</b></p><p>  char type[10];</p><p>  char ch='a',ch1;</p><p><b>  SUB *

30、ptr;</b></p><p>  while(ch!=' '){</p><p>  printf("若要按課程性質(zhì)查找請輸入1,若要按學分查找請輸入2:\n");</p><p>  scanf("%d",&a);</p><p>  switch(a){<

31、;/p><p>  case 1:printf("請輸入要查找的課程的性質(zhì):\n");</p><p>  scanf("%s",type);</p><p>  printf("課程編號 課程名稱 課程性質(zhì) 總學時 授課學時 實踐或上機學時 學分 開課學期\n");</p><

32、;p>  for(ptr=head;ptr;ptr=ptr->next)</p><p>  if(strcmp(type,ptr->kind)==0){</p><p>  printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stim

33、e,ptr->ttime,ptr->etime,ptr->score,ptr->term);</p><p><b>  t=0;</b></p><p><b>  }</b></p><p>  if(t) printf("未找到!\n");</p><p

34、><b>  t=1;</b></p><p><b>  break;</b></p><p>  case 2:printf("輸入要查找的課程的學分\n");</p><p>  scanf("%d",&num);</p><p>  pr

35、intf("課程編號 課程名稱 課程性質(zhì) 總學時 授課學時 實踐或上機學時 學分 開課學期\n");</p><p>  for(ptr=head;ptr;ptr=ptr->next)</p><p>  if(ptr->score==num){</p><p>  printf("%5d%12s%9s%9d%

36、9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);</p><p><b>  t=0;</b></p><p><b>  }</b>&

37、lt;/p><p>  if(t) printf("未找到!\n");</p><p><b>  t=1;</b></p><p><b>  }</b></p><p>  printf("繼續(xù)查找請按回車鍵,結(jié)束請按空格鍵:\n");</p>

38、<p>  ch1=getchar(); //將回車鍵賦給CH1,否則CASE里面最后輸入的回車鍵會賦給CH,因此用CH1填補。</p><p>  ch=getchar();</p><p><b>  }</b></p><p><b>  }</b>

39、</p><p>  SUB *insert(SUB *head)</p><p><b>  {</b></p><p>  SUB *ptr,*ptr2,*subj;</p><p>  int size=sizeof(SUB);</p><p>  char ch='a',c

40、h1;</p><p>  while(ch!=' '){</p><p>  subj=(SUB *)malloc(size);</p><p><b>  ptr=subj;</b></p><p>  printf("輸入要插入的課程信息:\n");</p><

41、;p>  scanf("%d%s%s%d%d%d%d%d",&subj->num,subj->name,subj->kind,&subj->stime,&subj->ttime,&subj->etime,&subj->score,&subj->term);</p><p>  if(head=

42、=NULL){</p><p><b>  head=ptr;</b></p><p>  head->next=NULL;</p><p><b>  }</b></p><p><b>  else{</b></p><p>  for(ptr

43、2=head;ptr2;ptr2=ptr2->next)</p><p>  if(ptr2->next==NULL){</p><p>  ptr2->next=subj;</p><p>  subj->next=NULL;</p><p><b>  break;</b></p>

44、<p><b>  }</b></p><p><b>  }</b></p><p>  printf("繼續(xù)插入請按回車,結(jié)束請按空格:\n");</p><p>  ch1=getchar(); //將回車鍵賦給CH1,否則subj->

45、term輸完后輸入的回車鍵會賦給CH,因此用CH1填補。</p><p>  ch=getchar();</p><p><b>  }</b></p><p>  return head;</p><p><b>  }</b></p><p>  SUB *del(SUB

46、 *head)</p><p><b>  {</b></p><p>  SUB *p1,*p2;</p><p>  char ch='a',ch1;</p><p><b>  int num;</b></p><p>  while(ch!='

47、 '){</p><p>  printf("輸入想要刪除的課程編號:\n");</p><p>  scanf("%d",&num);</p><p>  if(head->num==num){</p><p><b>  p2=head;</b></

48、p><p>  head=head->next;</p><p><b>  free(p2);</b></p><p><b>  }</b></p><p>  if(head==NULL)</p><p>  return NULL;</p><p

49、><b>  p1=head;</b></p><p>  p2=head->next;</p><p>  while(p2){</p><p>  if(p2->num==num){</p><p>  p1->next=p2->next;</p><p><

50、;b>  free(p2);</b></p><p><b>  }</b></p><p>  else p1=p2;</p><p>  p2=p1->next;</p><p><b>  }</b></p><p>  printf("

51、;繼續(xù)刪除請按回車,結(jié)束請按空格:\n");</p><p>  ch1=getchar(); //將回車鍵賦給CH1,否則num輸完后再輸入的回車鍵會賦給CH,因此用CH1填補。</p><p>  ch=getchar();</p><p><b>  }</b></p>

52、<p>  return head;</p><p><b>  }</b></p><p>  void choose(SUB *head)</p><p><b>  {</b></p><p>  SUB *p,*q;</p><p><b>  i

53、nt a[5];</b></p><p>  int num,total=0,i=0,j;</p><p>  printf("輸入要選修的課程的編號,編號之間以空格分開,輸完后以0結(jié)束\n");</p><p>  scanf("%d",&num);</p><p>  while

54、(num!=0){</p><p>  for(p=head;p;p=p->next)</p><p>  if(p->num==num){</p><p>  total=total+p->score;</p><p><b>  a[i]=num;</b></p><p>&

55、lt;b>  i++;</b></p><p><b>  }</b></p><p>  scanf("%d",&num);</p><p><b>  }</b></p><p>  if(total<60) printf("選修總學

56、分未達到60,選修失敗!\n");</p><p><b>  else {</b></p><p>  printf("選修成功!\n");</p><p>  printf("您選修的課程為:\n");</p><p>  for(j=0;j<i;j++) &

57、lt;/p><p>  for(q=head;q;q=q->next)</p><p>  if(q->num==a[j])</p><p>  printf("%s ",q->name);</p><p>  printf("\n");</p><p>  pr

58、intf("***********************************\n");</p><p>  printf("***********************************\n");</p><p>  printf("***********************************\n");&l

59、t;/p><p>  printf("***********************************\n");</p><p><b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p>

60、<b>  {</b></p><p>  SUB *head=create_form();</p><p>  savefile(head);</p><p>  prin(head);</p><p>  search(head);</p><p>  head=insert(head);//

61、注意此處的必要性函數(shù)insert的的返回值重新賦給head!</p><p>  savefileadd(head);</p><p>  printf("修改后的信息為:\n");</p><p>  prin(head);</p><p>  head=del(head); //注意此處的必要性,數(shù)del的

62、的返回值重新賦給head!</p><p>  savefiledel(head);</p><p>  printf("修改后的課程信息為:\n");</p><p>  prin(head);</p><p>  choose(head);</p><p><b>  }</b&

63、gt;</p><p><b>  運行結(jié)果:</b></p><p><b>  輸入選修課程信息:</b></p><p>  1 maths bx 15 14 0 25 1</p><p>  2 Entg bx 15 14 0 25 1</p><p>  3 hh

64、xx 10 8 2 15 1</p><p>  4 bb xx 25 14 0 35 1</p><p>  0 gg xx 12 10 0 10 1</p><p>  課程編號 課程名稱 課程性質(zhì) 總學時 授課學時 實踐或上機學時 學分 開課學期</p><p>  1 maths bx

65、 15 14 0 25 1</p><p>  2 Entg bx 15 14 0 25 1</p><p>  3 hh xx 10 8 2 15

66、 1</p><p>  4 bb xx 25 14 0 35 1</p><p>  若要按課程性質(zhì)查找請輸入1,若要按學分查找請輸入2:</p><p><b>  1</b></p><p>  請輸入要查找的課

67、程的性質(zhì):</p><p><b>  bx</b></p><p>  課程編號 課程名稱 課程性質(zhì) 總學時 授課學時 實踐或上機學時 學分 開課學期</p><p>  1 maths bx 15 14 0 25 1</p>

68、<p>  2 Entg bx 15 14 0 25 1</p><p>  繼續(xù)查找請按回車鍵,結(jié)束請按空格鍵:</p><p>  若要按課程性質(zhì)查找請輸入1,若要按學分查找請輸入2:</p><p><b>  2</b></

69、p><p>  輸入要查找的課程的學分</p><p><b>  15</b></p><p>  課程編號 課程名稱 課程性質(zhì) 總學時 授課學時 實踐或上機學時 學分 開課學期</p><p>  3 hh xx 10 8 2

70、 15 1</p><p>  繼續(xù)查找請按回車鍵,結(jié)束請按空格鍵:</p><p><b>  課程設(shè)計體會:</b></p><p>  通過學習和練習C程序的設(shè)計基礎(chǔ),學習到了很多關(guān)于C的知識。在這次學習過程中,毫無疑問的遇到了很多困惑、疑問,難免心情沮喪,失去耐心,信心受挫,但同學的幫助,老師的解惑和自己的堅持。終于做

溫馨提示

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

評論

0/150

提交評論