c語言課程設計報告-高速公路收費系統(tǒng)_第1頁
已閱讀1頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  題目:高速公路計費系統(tǒng)設計</p><p>  功能:在某高速公路出口收費處,對三種類型的車輛計費,大型車每公里0。5元,中型車每公里0。4元,小型車每公里0。3元,來車驗條,乘公里數(shù)即得該收的款項。在交班時要統(tǒng)計出總數(shù)。</p><p><b>  分步實施:</b></p><p>  1、初步完成總體設計,搭好框架,

2、確定人機對話的界面,確定函數(shù)個數(shù);</p><p>  2、完成最低要求:建立一個只有三個入口的計費系統(tǒng),并能進行統(tǒng)計計算,打印出報表;</p><p>  3、進一步要求:完成任意多個入口的通用系統(tǒng)。</p><p><b>  要求:</b></p><p>  1、用C語言實現(xiàn)程序設計;</p>&l

3、t;p>  2、利用結構體數(shù)組實現(xiàn)信息的數(shù)據結構設計;</p><p>  3、系統(tǒng)的各個功能模塊要求用函數(shù)的形式實現(xiàn);</p><p>  4、界面友好(良好的人機交互),程序加必要的注釋。</p><p><b>  總體設計</b></p><p>  1.本程序涉及的知識點</p><p

4、>  變量的定義,輸入輸出函數(shù)、對文件的輸入和輸出和保存、for、switch、if等語句的使用,定義和使用結構體數(shù)組等等。</p><p>  進入系統(tǒng)首頁為主菜單,主菜單下分4個模塊:</p><p>  模塊1:錄入車輛信息</p><p>  進入模塊1后按提示要求錄入車牌號碼、時間、型號大小(用a、b、c分別表示大型、中型、小型)和入站口(1、2、3

5、、4……表示不同入口站名稱并分別對應不同公里路程數(shù))。</p><p>  模塊2:查詢車輛信息</p><p>  進入模塊2后按提示要求錄入所要查詢的車牌號碼,即可查詢其進站入口,時間,及所需費用等信息</p><p>  模塊3:車輛統(tǒng)計報表</p><p>  進入模塊3后即可顯示操作員之前錄入的所有車輛的各個信息,并統(tǒng)計出車輛總數(shù)及

6、應收總費用。</p><p>  模塊4:保存關閉系統(tǒng)</p><p>  進入模塊4后 系統(tǒng)自動保存所有車輛信息,并按提示可推出本系統(tǒng)。</p><p><b>  流程圖</b></p><p><b>  主函數(shù):</b></p><p>  #include<s

7、tdio.h></p><p>  #include<stdlib.h></p><p>  #include<string.h></p><p>  #include<conio.h></p><p>  #define N 100</p><p>  #define M 4

8、 //入口數(shù)量,可設置多個路口</p><p>  char a[]={20,30,40,50}; //路口1 :20公里,路口2 :30公里,路口3 :40公里, 路口4 :50公里</p><p>  char str[][3]={"k1","k2","k3",&qu

9、ot;k4"}; //入口名稱,分別對應上面數(shù)組的公里數(shù)</p><p><b>  FILE*fp;</b></p><p>  int count;</p><p>  void input();</p><p>  void cheak();</p><p>  void tong

10、ji();</p><p>  void read();</p><p>  void menu();</p><p>  void writefile();</p><p>  struct vehicle //車輛信息</p><p><b>  {</b>&

11、lt;/p><p>  char num[15];</p><p>  char time[6];</p><p>  char size[2];</p><p>  char road[3];</p><p>  float cost;</p><p><b>  }ve[N];<

12、/b></p><p>  void main()</p><p><b>  {</b></p><p><b>  read();</b></p><p><b>  while(1)</b></p><p><b>  {</

13、b></p><p><b>  menu();</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void read() //導入文件</p><p>

14、;<b>  {</b></p><p>  char filename[20];</p><p>  if((fp=fopen("tql.txt","r"))==NULL)</p><p><b>  {</b></p><p>  printf("

15、;無此文件,新建一個文件\n");</p><p>  printf("輸入文件名,回車鍵結束:");</p><p>  scanf("%s",filename);</p><p>  if((fp=fopen(filename,"w"))==NULL)</p><p>

16、<b>  {</b></p><p>  printf("新建失敗");</p><p><b>  exit(0);</b></p><p><b>  }</b></p><p><b>  else</b></p>

17、<p><b>  {</b></p><p>  printf("新建文件成功,按任意鍵返回主菜單");</p><p>  getchar(); </p><p><b>  return;</b></p><p><b>  }&

18、lt;/b></p><p><b>  } </b></p><p>  fseek(fp,0,2); // 文件內部指針退回到離文件結尾0位置,即指針指向文件內部末尾處</p><p>  if(ftell(fp)>0) // 使用fseek函數(shù)后再調用函數(shù)ftell()就能非常

19、容易地確定文件的當前位置。</p><p><b>  {</b></p><p>  fseek(fp,0,0);</p><p>  for(count=0;!feof(fp)&&fread(&ve[count],sizeof(struct vehicle),1,fp);count++);</p>&l

20、t;p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void menu()</p><p><b>  { </b></p><p>

21、;  system("cls");</p><p><b>  char i;</b></p><p>  printf("\t☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆\n\t****************歡迎來到公路計費系統(tǒng)*************\n\n\t\t\t 主菜單\n\n");</p>

22、<p>  printf("\t********\t錄入車輛信息 請按 1\t ********\n\n");</p><p>  printf("\t********\t查詢車輛信息 請按 2\t ********\n\n");</p><p>  printf("\t********\t車輛統(tǒng)計報表 請按 3\t *

23、*******\n\n");</p><p>  printf("\t********\t保存關閉系統(tǒng) 請按 4\t ********\n\n\t*************************************************\n");</p><p>  i=getch();</p><p><b>  

24、switch(i)</b></p><p><b>  {</b></p><p>  case '1': input(); break;</p><p>  case '2': cheak(); break;</p><p>  case '3': t

25、ongji(); break;</p><p>  case '4': writefile();</p><p>  default : break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  v

26、oid input() //錄入車輛信息函數(shù)</p><p><b>  {</b></p><p><b>  char i,j;</b></p><p>  system("cls");</p><p

27、>  printf("\n 請錄入車輛信息:");</p><p>  printf("\n車牌號碼(5位字符)\n");</p><p>  scanf("%s",&ve[count].num);</p><p>  printf("\n進站時

28、間(輸入格式**:**)\n"); </p><p>  scanf("%s",&ve[count].time);</p><p>  printf("\n車輛型號(a,b,c分別代表大中?。‐n"); // 大車 0.5元/每公里;中型車 0.4元/每公里;小車 0.3元/每公里</p><p> 

29、 scanf("%s",&ve[count].size);</p><p>  printf("\n入口通道(輸入k1,k2,k3....)\n");</p><p>  scanf("%s",&ve[count].road);</p><p>  i=count;

30、 //計算該車路費</p><p>  if(strcmp(ve[i].size,"a")==0)</p><p><b>  {</b></p><p>  for(j=0;j<M;j++)</p><p><b>  {&l

31、t;/b></p><p>  if(strcmp(ve[i].road,str[j])==0)</p><p><b>  {</b></p><p>  ve[i].cost=a[j]*0.5;</p><p><b>  break;</b></p><p>&l

32、t;b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(strcmp(ve[i].size,"b")==0)</p><p><b>  {</b><

33、/p><p>  for(j=0;j<M;j++)</p><p><b>  {</b></p><p>  if(strcmp(ve[i].road,str[j])==0)</p><p><b>  {</b></p><p>  ve[i].cost=a[j]*0.

34、4;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(strcm

35、p(ve[i].size,"c")==0)</p><p><b>  {</b></p><p>  for(j=0;j<M;j++)</p><p><b>  {</b></p><p>  if(strcmp(ve[i].road,str[j])==0)</p

36、><p><b>  {</b></p><p>  ve[i].cost=a[j]*0.3;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p

37、><p><b>  }</b></p><p>  else ve[i].cost=00.00;</p><p><b>  count++;</b></p><p>  printf("\n\n是否繼續(xù)錄入車輛信息?\n按 1 繼續(xù)錄入 按任意鍵返回\n");</p&

38、gt;<p>  switch(getch())</p><p><b>  {</b></p><p>  case '1' : input();</p><p>  default : return;</p><p><b>  } </b></p>

39、;<p><b>  }</b></p><p>  void cheak() //查詢車輛信息函數(shù)</p><p><b>  { </b></p><p>  char ch,num[10],i,k=0;</p><p> 

40、 system("cls");</p><p>  printf(" 查詢車輛信息\n\n");</p><p>  printf("請輸入車牌號碼\n");</p><p>  scanf("%s",num);</p><p>  for(i=count

41、-1;i>=0;i--) //需顯示車輛最新進站信息</p><p><b>  { </b></p><p>  if(strcmp(ve[i].num,num)==0)</p><p>  { k=1;break;}</p><p><b>  }</b>&

42、lt;/p><p><b>  if(k==1)</b></p><p><b>  { </b></p><p>  printf("車牌號碼 進站時間 車型大小 進站入口 應收費用\n"); </p><p>  printf("%s\t &q

43、uot;,ve[i].num); </p><p>  printf("%s ",ve[i].time); </p><p>  printf("%s\t",ve[i].size);</p><p>  printf(" %s\t",ve[i].road);</p><

44、;p>  printf(" %.2f元",ve[i].cost);</p><p>  printf("\n\n\n按 1繼續(xù)查詢 按任意鍵返回主菜單");</p><p>  ch=getchar(); //用來接收前面指令的最后一個回車鍵</p><p>  ch=getch()

45、; //接收選擇鍵</p><p>  switch(ch)</p><p><b>  {</b></p><p>  case '1' : cheak();</p><p>  default : return;</p><p><b>

46、  } </b></p><p><b>  } </b></p><p><b>  else </b></p><p>  { </p><p>  printf("\n無可顯示內容\n\n按 1繼續(xù)查詢 按任意鍵返回主菜單\n&q

47、uot;);</p><p>  ch=getch();</p><p>  switch(ch)</p><p><b>  {</b></p><p>  case '1' : cheak();</p><p>  default : return;</p>&l

48、t;p><b>  }</b></p><p><b>  } </b></p><p><b>  }</b></p><p>  void tongji() //匯總報表</p><p><b>  {

49、 </b></p><p><b>  int i,j;</b></p><p>  float sum=0.00;</p><p>  system("cls");</p><p>  printf("\n\n\t\t報表匯總\n\n");</p>

50、<p>  printf("車牌號碼 進站時間 車型大小 進站入口 應收費用");</p><p>  for(i=0;i<count;i++)</p><p><b>  {</b></p><p>  printf("\n\n%s ",ve[i].num);</p&g

51、t;<p>  printf(" %s",ve[i].time); </p><p>  printf(" %s ",ve[i].size);</p><p>  printf(" %s ",ve[i].road);</p><p>  printf(&quo

52、t; %.2f",ve[i].cost);</p><p><b>  }</b></p><p>  for(j=0;j<count;j++)</p><p><b>  {</b></p><p>  sum=sum+ve[j].cost;</p><p

53、><b>  }</b></p><p>  printf("\n\n\n\t\t\t\t 車輛總數(shù):%d 輛",count);</p><p>  printf("\n\n\t\t\t\t 收費總額:%.2f元",sum);</p><p>  printf("\n\n\n\

54、n按任意鍵返回\n");</p><p>  getch();</p><p><b>  }</b></p><p>  void writefile() //文件保存函數(shù)</p><p><b>  { </b></p>

55、<p>  system("cls");</p><p><b>  int i,ch;</b></p><p>  if((fp=fopen("tql.txt","w"))==NULL)</p><p><b>  {</b></p>

56、<p>  printf("打開文件失敗");</p><p><b>  }</b></p><p>  for(i=0;i<count;i++)</p><p><b>  {</b></p><p>  if(fwrite(&ve[i],sizeo

57、f(struct vehicle),1,fp)!=1)</p><p>  printf("無法讀入文件");</p><p><b>  }</b></p><p>  fclose(fp);</p><p>  printf("\n\n\n\n\n\t\t\t文件保存成功\n\n\n\t

58、\t按 1 退出程序\t按任意鍵返回\n");</p><p>  ch=getch();</p><p>  switch(ch)</p><p><b>  {</b></p><p>  case '1' : exit(0);</p><p>  default :

59、 return;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  部分截圖:</b></p><p><b>  主菜單:</b></p><p>  模塊1:錄入車輛信息

60、截圖</p><p>  模塊2:查詢車輛信息截圖</p><p>  模塊3:匯總報表截圖</p><p>  模塊4:保存退出系統(tǒng)截圖</p><p><b>  C程序設計總結</b></p><p>  本程序在剛開始調試時有許多錯誤,但在我的努力及同學的幫助下都被一一克服,現(xiàn)在在操作本程

61、序時可根據提示進行相關操作,能正確輸出結果。</p><p>  在剛開始的幾次調試中曾經出現(xiàn)過不能運行,彈出提示警告框令到調試終止。其中,為力求界面簡潔美觀,需要多次調試輸出數(shù)據,圖形符號的位置,使其整齊劃一,這花了相當一部分時間。</p><p>  在調試check()函數(shù)時,當輸入完車牌號碼并顯示出該車輛信息后,當按任意鍵后屏幕馬上跳回菜單頁面而無法按設計要求輸出選擇項,經過查找書

62、本得知要在switch語句前再加上一句getchar()語句用來接收前面指令的最后一個回車鍵,之后經修改功能得到實現(xiàn)。</p><p>  完成題目要求的基本功能后</p><p><b>  收獲:</b></p><p>  在這次設計過程中,不僅復習課本上所學知識,還通過上網查資料、問同學學到了課本上沒有的知識。從而啟發(fā)我,要想寫好程序,

63、在寫好課本知識的同時還需要多讀和專業(yè)有關的一些書籍,同時還需要多動腦子,勤于實踐,盡量把所學的知識綜合起來應用,力爭寫出完美的程序。除此之外,我還得到了一些有用的教訓:寫程序時必須要細心,不能輸錯一個字符標點,就連全角半角也得注意。在修改時要有耐心,編譯出錯后必須逐個錯誤去改正,絕不能心急浮躁,否則修改之后還會有新的錯誤。</p><p><b>  參考文獻</b></p>

64、<p>  [1] 嚴蔚敏,吳偉民.數(shù)據結構(C語言版).北京:清華大學出版社,2007</p><p>  [2] 張長海.C語言程設計[M].北京:高等教育出版社,2006</p><p>  [3] 陳建新,李志敏.數(shù)據結構實驗指導與課程設計教程.北京:科學出版社,2010</p><p>  [4] 吳玉蓉,李勁.數(shù)據結構(C語言版).北京:中國水

65、利水電出版社,2008</p><p>  [5]《C程序設計》(第四版),主編:譚浩強,清華大學出版社</p><p><b>  課程設計總結:</b></p><p>  我的課程設計題目是高速公路收費系統(tǒng),這個程序題目相對來說不是很難,但由于我的c語言基礎較差,編寫程序代碼的練習也做的較少,與同學們的水平也有不小的差距,所以在編寫過程中

66、,我也遇到了不小的難題。</p><p>  在最初的時候,我很是厭煩,對程序編寫有些抵觸情緒,完全談不上喜歡。但是,漸漸地,通過不斷地查詢、了解、學習,我發(fā)現(xiàn)我的興趣漸漸上來了,因為在學習了解的同時,我覺得編寫程序不再像以前那樣枯燥乏味、難得一塌糊涂,只不過是以前從內心上就沒有接受它,這也造成了我的基礎較差。</p><p>  本次課程設計,我基本是從頭學起,從最基本的#include

67、<stdio.h>是什么意思,再到很好地運用判斷語句和循環(huán)語句,還有在學習過程中我還了解到c語言還有很多的庫函數(shù)。</p><p>  本程序在剛開始調試時有許多錯誤,但在我的努力及同學的幫助下都被一一克服,現(xiàn)在在操作本程序時可根據提示進行相關操作,能正確輸出結果。在剛開始的幾次調試中曾經出現(xiàn)過不能運行、不能產生十以內隨機數(shù)字、不能隨機出現(xiàn)加減、不會正確輸出結果、不能進行循環(huán)練習等等問題。經過我的努力

68、及同學的幫助,這些問題得到克服,并且使程序的功能也得到了一定的完善?,F(xiàn)在它能對出錯的題目發(fā)出報警聲,并且給出正確答案。最后還能分別輸出對錯的題數(shù)及所得分數(shù)。</p><p>  在這次設計過程中,不僅復習課本上所學知識,還通過查資料、問同學學到了課本上沒有的知識。從而啟發(fā)我,要想寫好程序,在寫好課本知識的同時還需要多讀和專業(yè)有關的一些書籍,這也讓我買了一本c語言c++函數(shù)查詢手冊去進行深一步的學習與了解,以便能更

溫馨提示

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

評論

0/150

提交評論