地鐵價格查詢系統C課程設計報告_第1頁
地鐵價格查詢系統C課程設計報告_第2頁
地鐵價格查詢系統C課程設計報告_第3頁
地鐵價格查詢系統C課程設計報告_第4頁
地鐵價格查詢系統C課程設計報告_第5頁
免費預覽已結束,剩余17頁可下載查看

下載本文檔

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

文檔簡介

1、 C語言程序設計課程設計報告一目的通過本教學環節的充分編程實踐和實際應用,進一步熟悉與鞏固C語言語法知識和程序設計的基本方法,通過應用進一步體會數據就夠重常用算法的實質,建立算法優劣的概念以及算法評估分析和比較的方法。借助適當題材的程序設計實訓,加深體會利用數據結構的算法和C語言程序設計解決實際問題的思維過程。通過一定的文檔要求,培養學生良好的程序設計風格,包括程序結構形式,行文格式和程序正文格式等。二內容利用C語言這種程序設計語言設計一個應用程序,實現的題目和具體內容自擬三 實驗要求進行簡單的需求分析、設計說明,寫出程序結構框架,闡明設計思路、用到的原理和方法。程序規模適中,著重于內核功能,

2、對界面無要求。要求采用面向對象的程序設計方法來進行課程設計。四算法思想 該程序為地鐵的價格查詢系統,用到C語言中的選擇結構程序設計,循環控制,函數。其中,選擇結構程序設計用到了if語句的嵌套,switch語句;循環控制用到了for,dowhile語句實現循環,還有break語句,循環的嵌套;函數就用到了函數的嵌套調用。該系統難點在于轉站問題,不過已經解決了。a) 需求分析:1.該系統主要提供地鐵的價格查詢功能,外附顯示所要乘坐的站數以及經過的地鐵站,轉站等功能。2.該系統還可以讓地鐵的乘客清晰地知道自己乘坐所需要的付費,還有知道一共要經過多少個站,經過哪些站等,讓乘客對自己的行程有個了解。3.

3、該系統的界面清晰易懂,乘客看著界面可以明白地知道自己所在的位置以及可以輕松地選擇目的地。其中,界面如下所示:歡迎使用廣州地鐵價格查詢系統 * * * * 廣州地鐵一號線 * *_* * 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 * * 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 * * 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 * * 西 坑 花 芳 黃 長 陳 西 公 農 烈 東 楊 體 體 廣 * * 湖 口 地 村 沙 壽 家 門 園 講 士 山 箕 育 育 州 * * 灣 路 祠 口 前 所 陵 口 西 中 東 * * 園

4、 路 心 站 * * * * 廣州地鐵二號線 * *_* * 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 * * 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 * * 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 * * 琶 新 磨 赤 客 鷺 中 曉 江 市 海 公 紀 越 廣 三 遠 廣 新 江* * 洲 港 碟 崗 村 江 大 港 南 二 珠 園 念 秀 州 元 景 州 市 夏* * 東 沙 西 宮 廣 前 堂 公 火 里 體 * * 場 園 車 育 * * 站 館 * * * *4.

5、對輸入數據的格式要求為:只要輸入數字就行了,可是輸入的數字必需在101106,201220之間,否則輸出錯誤提示,乘客需要繼續輸入,直到輸入正確為止,輸出結果后會有提示是否要繼續。5.該軟件可以在Turbo C/C+ for Windows內測試。 b) 概要設計第一模塊:函數調用模塊(分兩種情況討論):第一種情況:起點站和輸出站都在同一號線if(c/100=d/100)a=max(c,d);b=min(c,d);j=a-b;subway(j); change_line( c, d); name_passed_station( c, d); 第一種情況:起點站和終點站不在同一號線(又分兩種情況

6、):(1)起點站在一號線,終點站在二號線在: if(c<200) a=max(109,c)-min(109,c);b=max(212,d)-min(212,d);j=a+b;subway(j); change_line( c, d); name_passed_station( c, d);(2)起點站在二號線,終點站在一號線:else a=max(212,c)-min(212,c);b=max(109,d)-min(109,d);j=a+b; subway(j); change_line( c, d); name_passed_station(c, d);第二模塊:函數定義模塊把起點站序

7、號跟終點站序號比較,取出較少著:int min(int c,int d) int z; if(c>d) z=d; else z=c; return(z);把起點站跟終點站比較,取出較大者:int max(int c,int d) int z; if(c>d) z=c; else z=d; return(z);輸出所要的費用:void subway(int j) switch(j) case 0: printf("Sorry,你已經在本站,不用再乘座了。Thanks! _n");break; case 1: case 2: case 3: printf("

8、;收費2元,Thanks! _n");break; case 4: case 5: case 6: printf("收費3元, Thanks! _n");break; case 7: case 8: case 9: printf("收費4元, Thanks! _n");break; case 10: case 11: case 12: printf("收費5元, Thanks! _n");break; case 13: case 14: case 15: printf("收費6元, Thanks! _n"

9、);break; case 16: case 17: case 18: printf("收費7元, Thanks! _n");break; case 19: case 20: printf("收費8元,Thands! _n"); 該函數檢查是否需要轉線void change_line(int c,int d) if(c/100=d/100) printf("不需要轉線,可直達_n"); else printf("請注意:要到公園前站轉線n");輸出途徑的站名,分兩種情況:情況一:不需要轉線(1)起點站和終點站都在一

10、號線if(c/100=1&&d/100=1) for(i=c%100;i<=d%100;i+)switch(i)case 1: printf("西湖t");break;case 2: printf("坑口t");break;case 3: printf("花地灣t");break;case 4: printf("芳村t");break;case 5: printf("黃沙t");break;case 6: printf("長壽路t");break;cas

11、e 7: printf("陳家祠t");break;case 8: printf("西門口t");break;case 9: printf("公園前t");break;case 10: printf("農講所t");break;case 11: printf("烈士陵園t");break;case 12: printf("東山口t");break;case 13: printf("楊箕t");break;case 14: printf("體育西路

12、t");break;case 15: printf("體育中心t");break;case 16: printf("廣州東站t");break;(2)起點站和終點站都在二號線if(c/100=2&&d/100=2) for(i=c%100;i<=d%100;i+)switch(i)case 1: printf("琶洲t");break;case 2: printf("新港東t");break;case 3: printf("磨碟沙t");break;case 4:

13、 printf("赤崗t");break;case 5: printf("客村t");break;case 6: printf("鷺江t");break;case 7: printf("中大t");break;case 8: printf("曉港t");break;case 9: printf("江南西t");break;case 10: printf("市兒宮t");break;case 11: printf("海珠廣場t");bre

14、ak;case 12: printf("公園前t");break;case 13: printf("紀念堂t");break;case 14: printf("越秀公園t");break;case 15: printf("廣州火車站t");break;case 16: printf("三元里t");break;case 17: printf("遠景t");break;case 18: printf("廣州體育館t");break;case 19: prin

15、tf("新市t");break;case 20: printf("江夏t");break; 情況二:需要轉線分四種情況(1)起點站和終點站都是在公園前站前面if(c<=109&&d<=212&&d>=201) for(i=c%10;i<=9;i+)switch(i)case 1: printf("西湖t");break;case 2: printf("坑口t");break;case 3: printf("花地灣t");break;case

16、 4: printf("芳村t");break;case 5: printf("黃沙t");break;case 6: printf("長壽路t");break;case 7: printf("陳家祠t");break;case 8: printf("西門口t");break;case 9: printf("公園前t");break;for(j=d%100;j<=11;j+)switch(j)case 1: printf("琶洲t");break;c

17、ase 2: printf("新港東t");break;case 3: printf("磨碟沙t");break;case 4: printf("赤崗t");break;case 5: printf("客村t");break;case 6: printf("鷺江t");break;case 7: printf("中大t");break;case 8: printf("曉港t");break;case 9: printf("江南西t");

18、break;case 10: printf("市兒宮t");break;case 11: printf("海珠廣場t");break;(2)起點站在公園前站前面,而終點站在公園前站后面if(c<=109&&d>=212) for(i=c%10;i<=9;i+)switch(i)case 1: printf("西湖t");break;case 2: printf("坑口t");break;case 3: printf("花地灣t");break;case 4: p

19、rintf("芳村t");break;case 5: printf("黃沙t");break;case 6: printf("長壽路t");break;case 7: printf("陳家祠t");break;case 8: printf("西門口t");break;case 9: printf("公園前t");break;for(j=13;j<=d%100;j+)switch(j)case 13: printf("紀念堂t");break;case

20、 14: printf("越秀公園t");break;case 15: printf("廣州火車站t");break;case 16: printf("三元里t");break;case 17: printf("遠景t");break;case 18: printf("廣州體育館t");break;case 19: printf("新市t");break;case 20: printf("江夏t");break; (3)起點站在公園前站后面,終點站在前面i

21、f(c>=109&&d<=212&&d>=201) for(i=9;i<=c%100;i+)switch(i)case 9: printf("公園前t");break;case 10: printf("農講所t");break;case 11: printf("烈士陵園t");break;case 12: printf("東山口t");break;case 13: printf("楊箕t");break;case 14: printf(&q

22、uot;體育西路t");break;case 15: printf("體育中心t");break;case 16: printf("廣州東站t");break;for(j=d%100;j<=11;j+)switch(j)case 1: printf("琶洲t");break;case 2: printf("新港東t");break;case 3: printf("磨碟沙t");break;case 4: printf("赤崗t");break;case 5:

23、printf("客村t");break;case 6: printf("鷺江t");break;case 7: printf("中大t");break;case 8: printf("曉港t");break;case 9: printf("江南西t");break;case 10: printf("市兒宮t");break;case 11: printf("海珠廣場t");break; (4)起點站和終點站都在公園前站后面if(c>=109&

24、&d>=212) for(i=9;i<=c%100;i+)switch(i)case 9: printf("公園前t");break;case 10: printf("農講所t");break;case 11: printf("烈士陵園t");break;case 12: printf("東山口t");break;case 13: printf("楊箕t");break;case 14: printf("體育西路t");break;case 15: pri

25、ntf("體育中心t");break;case 16: printf("廣州東站t");break;for(j=13;j<d%100;j+)switch(j)case 13: printf("紀念堂t");break;case 14: printf("越秀公園t");break;case 15: printf("廣州火車站t");break;case 16: printf("三元里t");break;case 17: printf("遠景t");br

26、eak;case 18: printf("廣州體育館t");break;case 19: printf("新市t");break;case 20: printf("江夏t");break; c)詳細設計開始聲明函數name_passed_station(),change_line(),subway(),Max(),min(),stull()定義變量a,b,c,d,j,n調用stull()輸出界面輸入c(101<=c&&c<=116)|(201<=c&&c<=220)輸入錯誤,請重

27、輸輸入d(101<=d&&d<=117)|(201<=d&&d<=220)輸入錯誤,請重輸c/100=d/100a=max(c,d);b=min(c,d); j=a-b;subway(j);change_line( c, d);name_passed_station( c, d);調用函數見附圖函數調用部分c<200a=max(c,d);b=min(c,d); j=a-b;subway(j);change_line( c, d);name_passed_station( c, d);調用函數見附圖函數調用部分a=max(212,c)

28、-min(212,c);b=max(109,d)-min(109,d);j=a+b; subway(j);change_line( c, d);name_passed_station(c, d);輸入nn='Y'返回開始結束附圖:max()Int c,d ,zc>dz=cz=dreturn(z)min()Int c,d ,zz=creturn(z)c>dz=dsubway(int j)判斷I值輸出票價結束change_line(int c,int d)c/100=d/100輸出不用轉線輸出在公元前轉線結束name_passed_station(int c,int d

29、)int i,jc/100=1&&d/100=1)c/100=2&&d/100=2i=c%100;i<=d%100;i+c/100=2&&d/100=2輸出各站名輸出各站名c<=109&&d<=212&&d>=201c<=109&&d>=212c>=109&&d<=212&&d>=201i=c%10;i<=9j=d%100;j<=11輸出站點輸出站點i=c%10;i<=9j=13;j<=d%

30、100輸出站點輸出站點i=9;i<=c%100j=d%100;j<=11輸出站點輸出站點c>=109&&d>=212i=9;i<=c%100輸出站點j=13;j<d%100輸出站點d)調試分析界面顯示為:若輸入正確,即在101116和201220范圍內,則輸出:若輸入范圍不在101116和201220,則輸出錯誤提示:若要繼續查詢,則按 “Y”,清除之前的記錄,重新執行;若要停止,則按“N”,輸出:五總結:在課程設計過程中,我意識到原來編一個程序不是那么簡單的,還要考慮到很多問題,比如:你所編的程序有什么功能,主要有什么用途,軟件有什么開發潛能等,還有軟件有什么改進的思想。雖然有難度,可是我覺得很有挑戰性,在程序的設計過程中,我還加深了對C語言數據結構的認識,真的使我受益菲淺。因為C語言知識不是那么好,所以所用的結構都是比較簡單的,如只用到for,

溫馨提示

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

評論

0/150

提交評論