版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、合肥學院計算機科學與技術系課程設計報告20102011學年第二學期課程C語言課程設計課程設計名稱公交路線管理系統(tǒng)學生姓名楊莉莉學號1004013018專業(yè)班級計本(4)班指導教2011年6月24日一、需求分析本系統(tǒng)主要功能是實現對公交路線的管理和維護。我們都知道,每個城市都會有公 交路線的改動,如果使用這個系統(tǒng),就可以及時的對路線信息進行修改和保存,是非常方 便的,而且該系統(tǒng)使用起來也很方便。用戶只需根據顯示的提示信息進行選擇和輸入就可 以實現你要求的功能。該系統(tǒng)具有添加,查詢,刪除,修改和顯示所有記錄的功能。用戶 可以根據實際情況進行相應的功能選擇。其具體功能簡單描述如下:(1) 保存:即將
2、信息存入指定文件中。當用戶對原始數據進行相關的改動(主要是 對路線信息進行增加、刪除、修改)之后,用戶可以根據自己的選擇判斷是否要保存到文 件中,這樣就實現了信息的記錄功能,以方便用戶隨時進行查看。(2) 添加:即添加一條新的公交路線或者是某一條路線上的站點。每次可以添加一 條路線信息,若用戶想添加多條路線信息的話可以重復執(zhí)行該功能,同樣的,添加站點的 話也是每一次添加一個站點,若用戶想添加多條路線信息的話也只需要重復執(zhí)行該功能即 可。這樣,就實現了對公交路線的添加信息管理。(3) 查詢:即能夠查找出你要的公交路線信息和總共有多少站。簡單地說,就是用 戶先選擇你要查詢的公交路線號,在輸入起點站
3、和終點站名稱,然后系統(tǒng)就會自動顯示出 起點站和終點站之間共有多少站點,以及起點站和終點站之間所有站點的序號和名稱,從 而使用戶一目了然的知道站點信息,而不需要像看地圖那樣一個站點一個站點的用肉眼進 行查找,這就為用戶節(jié)省了很多時間。(4) 刪除:即能刪除掉一條你所不需要的公交路線信息和某一條路線上的站點。若 要刪除路線時只需要輸入你要刪除的公交路線號即可,若要刪除站點也只需輸入你要刪除 的站點序號,不需要輸入該站點名稱。(5) 修改:即能修改一條你需要該的路線信息。 修改內容包括:修改該條公交路線號、 修改站點名稱(輸入新的信息時該條路線的站點長度不能改變,若要改變站點長促可以選 擇增加和刪除
4、功能,即可實現)。(6) 顯示路線信息:即將路線信息顯示到屏幕中,供用戶查看。該功能比較簡單,在 這里不具體說明。二、算法設計1、設計思想:本系統(tǒng)的設計流程簡單比較簡單,原始數據全部都保存在文件中,用戶就不必自己一 個一個的輸入信息。程序執(zhí)行時從文件中讀出,文件的讀取操作在下文中我會詳細說明, 這里就不做具體說明了。創(chuàng)建動態(tài)鏈表和結構體數組對路線信息進行存儲,因為使用鏈表 時對程序的插入、刪除會比較方便,那么插入和刪除就相當于對鏈表節(jié)點的刪除和插入。 寫無返回值的主函數 void main()對系統(tǒng)的功能進行顯示,每次用戶選擇某一功能時都可 以看到路線的大致信息,以便于用戶更準確的選擇功能。其
5、中利用switch條件分支語句進行子函數功能的選擇和調用。并且使用 while循環(huán)語句進行多次循環(huán)執(zhí)行,就可以實現 對信息的多次刪除、增加、修改,知道達到用戶滿意時由用戶自己選擇退出系統(tǒng)。通同時使用了活屏函數,對上一次程序運行的結果活楚只顯示本次運行的相關信息,這樣的話就 做到了界面的友好化,簡單明了,不冗雜,更方便觀看。當用戶對信息進行有關的改動之 后,用戶根據自己的選擇是否保存入文件中,就可以保存他所要的信息了。其主要流程圖如下:2、設計表?。合旅嫖覍Ω鱾€子模塊的功能進行詳細的介紹和描述:模塊一:頭文件,定義結構體,結構體中還嵌套了一個結構體,定義結構體成員,同 時定義指向該類型的指針h
6、ead,其對整個程序都有效。模塊二:菜單顯示。顯示該系統(tǒng)所能完成的功能,一目了然。根據用戶的需求自由選擇功能實現。模塊三:從文件中讀取信息。該功能以子函數的形式給出,因為其返回值是head,而head是指向結構體的指針,所以該函數屆于指針函數。執(zhí)行此程序時首先定義文件指針FILE *fp,在打開此文件時,文本文檔里應該有用戶需要的數據,從而才能從文件中正確讀取出來,若文件打開不成功 則會顯示“不能打開此文件! ”。創(chuàng)建動態(tài)鏈表來存儲從文件中讀出來的數據,每讀取一組 數據后文件指針后移,這是系統(tǒng)約定俗成的,不需要用戶去考慮的,知道文件結束時停止 讀取。讀取結束后必須要關閉文件,即fclose(f
7、p),這樣就完成了從文件中讀取信息的功 能。模塊四:顯示路線信息。該功能以子函數的形式給出,無返回值。定義指向定義過的結構體類型的指針 p,并讓 p指向head,當p為非空時輸出結構體成員信息,在這里需要說明的是,在輸出站點信息 時,當最后一個站點名是end時,停止輸出,因此end是作為站點信息輸出的結束標志, 同時p指針指向鏈表的下一個節(jié)點,再次讀取一組數據。模塊五:增加線路信息。該函數的返回的是鏈表的頭指針 head,因此是一個指針函數。該函數不僅可以增加一 條路線信息,也可以增加某一條路線上的站點信息。用戶根據自己的需要進行選擇。本系 統(tǒng)添加一條公交路線時,是在鏈表的尾部添加的,因為我考
8、慮到公交線路號一般沒什么順 序可言,所以就簡單的添加在了鏈表的末節(jié)點。定義BL *p=head,*q。重新建立一個新的節(jié)點來存儲你添加的那條線路信息,判斷 p是否為空,若不為空的話,q指向p,p指針位 置后移一個節(jié)點,直到p為空。然后q->next指向新建立的節(jié)點,新節(jié)點的下一結點賦值 為空,從而完成了增加路線信息的功能。如果是添加路線站點,先確定要在哪條路線上添 加,所以要先找到該條路線,并用指針指向該節(jié)點,然后找該站點將要插入的位置,找到 后,將其后面的站點依次后移,把那個空的位置空間騰出來,用來置放添加的節(jié)點的信息, 這樣就實現了對站點的添加。模塊六:刪除線路信息。該函數返回的是頭
9、指針head,所以該函數是一個指針函數,也是作為子函數的形式出 現??梢詣h除整條路線,也可以刪除線路上的某一個站點,刪除一整條路線時,就相當于 刪除鏈表中的某一個節(jié)點,先確定你要刪除的線路號,找到后,只需要將其前一個節(jié)點指 向其后一個節(jié)點,所以刪除時還需要考慮到刪除的是首節(jié)點還是末節(jié)點還是中間節(jié)點,若 刪除首節(jié)點只需將head指向head的下一個節(jié)點,若刪除末節(jié)點,將倒數第二個節(jié)點之后 賦值為空即可,因此對線路的刪除還是相對比較簡單的,但是要求我們對鏈表的相關操作 熟練掌握。刪除站點時,先確定你要刪除的是哪條路線上的站點,找到后一個指針會指向 該節(jié)點,再確定你要刪除的站序號,確定后將其后一個站
10、名稱移到當前刪除節(jié)點的位置, 就可以將該站名覆蓋,從而實現站點的刪除。模塊七:修改線路信息。同上分析,該子函數也是一個指針函數,修改時,先確定你要修改哪條路線,指針指 向該節(jié)點,在重新輸入新的信息即可,新輸入的信息會覆蓋原有節(jié)點信息,所以可以實現對線路進行修改,但是修改時需要注意的是,修改時新輸入的站點數目不能改變。模塊八:查詢路線信息。該子函數是一個無返回值的函數。使用時先輸入你要找的路線號,再輸入你要經歷的 起點站和終點站,程序就會為你顯示出起點站和終點站之間共有多少站,并且輸出起點站 和終點站之間所有站序號和站點名稱。模塊九:將信息保存到文件中。當用戶對原始路線信息進行改動之后,或許要將
11、修改 過后的信息保存起來,此時用戶就可以自己選擇是否要將信息保存起來,保存的位置是本 系統(tǒng)實現設定好的,保存之后的信息在 D盤根目錄下,也方便用戶的查看。模塊十:主函數。構建無返回值的主函數,主函數用來實現對子模塊的調用功能,用while循環(huán)語句來控制循環(huán)次數,用戶可以根據自己的需求選擇任何時候退出系統(tǒng)。對子模塊的調用主要使 用switch開關控制語句,根據選擇實現用戶要求的功能。3、實現注釋:本系統(tǒng)對于菜單顯示表上的功能基本上都能實現,但是不是很完善,很多地方我還沒 有考慮到,或許是考慮的不夠周全,但是有些不足的地方,是我的能力所不能達到的,還 望老師體諒,不過等以后學過新的知識用新的方法或
12、許就能將系統(tǒng)做進一步的改進。4、算法設計中一些新的想法:我覺得本系統(tǒng)很不完善,很多功能雖然能實現,但是實現 的不夠完美,很多細節(jié)我都沒有考慮到,比如查詢路線時,不能大致故略出起點站和終點 站需要的時間;修改路線信息時,重新輸入該條路線的信息時,路線上站點的個數不能改 變,要改變的話還得選擇增加或刪除功能;還有就是用戶將改動過后的信息保存到文件中 后,以后該文件中的數據用戶如果要使用的話,不能從文件中讀取顯示到屏幕上。這些都 是我的系統(tǒng)一些不完善的地方,希望以后有能力的時候,能進一步對系統(tǒng)進行修改和完善。三、用戶手冊用戶在適用本系統(tǒng)時,我在這里有幾點說明要解釋一下。以便用戶更好的使用本系統(tǒng)。(1
13、) 路線號整形數據,站序號是整形數據,站名時字符申。(2) 輸入路線信息時,站的序號是有次序的,從 1開始依次往后增加。如果你要結 束站點的輸入,只需要在最后一個站點后在輸入下一個站的序號,但是本站的 站名一定要是end,用來表示站點錄入結束的結束標志。(3) 保存信息的文本文檔,一點要放入 D盤根目錄下,因為我在寫本程序時就規(guī)定了將文本文檔置于D盤根目錄下,所以以后用戶查看數據信息時可以從D盤根目錄下查找。四、調試及測試本程序的運行結果如下所示:-1 A-xiMJ c-tuprAs貧川:?N鞘3-12長蒞國s»B*IKS濕理4溯有« MR'TW科!rp展麻R展:苗
14、第rJ擊學一甥匕+>3HAWIrsnr M唇骯沏 H 鯽!4isls!一戳lllllcfl款渠醐醐I3lliW> 尋戲3沖埃i&蒞WH希劇忑<!落戶杠州邵酒鄂胸陽醉有a?i:F 敦酵耕* IHWWBn WS贛困牖a圭舅啊思箱州況漕輔觴陽網慢蜀都|:&喝構爵案IMW 雷Ir忡屈圈SI消£品引靠漏"X濟己$濟己盲章琳。NWJL ywFQQirtcUT 1GK<cc£,rQQAgoQ*1<sh:9i顯孺I3的廂昂-S»凸業(yè)6WS57牙亂» 呵、j鬲料I暮*&常肖5?申r洛薈rJ*N擊棗sp:tw+
15、>3:憂+目弓 小窺愚忘部N晶面3川+浙AsIS君Mk切爵國5X尸凸水q>5理翁借 0< »七«融串* alK75pH H 1.N M <*1>wn豎帽翌壬箱州輯溜我觴粕孫慢Q有私胄許陽豳繇m 丁看隔眥盅口WG葦低水漪區(qū)?和州*演融嗣村歐圍您餐爭小-野虱昭食同 弟芯虹密輯許亂蒯爭MnM費醇昌q濟己濟己需甲1NoMMUHJPGH<uL&rQCT k*c3® w*cflana.< ,化-膜髯二畔東門6小汁| 17凸牌樓8請選擇-?M城花 錦路口一3青年路口 一-4巷斧街-一S派河一-瑚- 學磔1一1*安荷卷凱堡比園-一
16、1眷龍浬311肥西客運公司礎巴西 園-=膛光中學-一宛航 -土3蓮茉路口、H :a交蒞錢MW m建代可口 ebu臥公天謎房言mw亮矣.ma白苫*息息=呈_呈亙曰一線線線線路息 ?祟熠 . 一 .克.舒-W?" 里.W 公功-5派河大樁7"& 花園-一弟源-輸入公交車輸入公交車號=i音選J至'- 半=;矗輯普呈學院蹈毓疽舞舞鮮;若酉客運公司桃花源 各苧岫序號及名粽為; 1吧酉套運會 司K肥西中壽亍凱易泛園8肥晃甫季茬;圣衛(wèi)青風路口3務學院-一I。任園H-13 蓬3U1肥西客走El時日-辨-T大東門-占小東門-.7四牌樓G大市場-7新城花 -一皿金錦路口一-藤鴦
17、巨拙魅羿禺站.矗一.充- 野一 Frt= 毒一 里一 至- 音一 線矛 ,.<能 “-H 晶城紡線線暨 :3祟凄詢信 二退將一一 一 一中-牛 _ R 息息息息_到 一真_寒置_¥ Jml五、課程小結通過這次實訓,增加了我學習軟件技術的興趣,雖然還不明確軟件技術包含的具體內容,但從C語言這門課程開始,已發(fā)現程序設計的樂趣,在學習C語言的過程中也學到了許多計算機應用基礎知識,對計算機的機體也有了一個大體的了解。這次實訓是老師給了題目,經過自己的努力,實現要求。先做簡單的輸出,一步步的再做其它要求,在實際操作過程中犯的一些錯誤還會有意外的收獲,感覺實訓很有意思。在具體操作中對這學期
18、所學的 C語言的理論知識得到鞏固,達到實訓的基本目的,也發(fā)現自己的不足之出,在以后的上機中應更加注意,同時體會到C語言具有的語句簡潔,使用靈活,執(zhí)行效率高等特點。發(fā)現上機實訓的重要作用,特別是對數組和循環(huán)有了深刻的理 解。通過實際操作,學會C語言程序編程的基本步驟、基本方法,開發(fā)了自己的邏輯思維 能力,培養(yǎng)了分析問題、解決問題的能力。深刻體會到“沒有做不到的,只有想不到的”“團結就是力量”,“實踐是檢驗真理的標準”,的寓意。在此希望以后應多進行這樣的實訓,加長設問,培養(yǎng)我們獨立思考問題的能力,提 高實際操作水平。六、參考文獻1 黃明等編著C語言課程設計北京:電子工業(yè)出版社;2 郭翠英編著C語言
19、課程設計案例精編北京:中國水利水電出版社;3 寧正元數據結構(c語言)南京:東南大學出版社。2000年6月第1;版;4 嚴蔚敏等 數據結構(c語言版)北京:活華大學出版社,1997年4月第1版;5 譚浩強編著C程序設計題解與上機指導(第3版)北京:活華大學出版社;6 譚浩強編著C程序設計(第3版)北京:活華大學出版社;7 洪國勝等編著C+ Builder程序設計輕松上手北京:活華大學出版社;8 寧正元數據結構(c語言)南京:東南大學出版社。2000年6月第1版;9 嚴蔚敏等 數據結構(c語言版)北京:活華大學出版社,1997年4月第1版;10 明日科技 編著Visual C+程序開發(fā)范例寶典北
20、京:人民郵電出版社;11 胡學鋼等數據結構算法設計指導北京:活華大學出版社, 1999年第1版。七、源程序代碼#include "stdio.h”#include "malloc.h"#include "string.h"#include "stdlib.h"struct station / 公交站int num; / 站序號char name20;/ 站名稱stop50;typedef struct busline /公交路線int busnum; /公交車號碼struct station stop50; /線路上的站st
21、ruct busline *next;void Menu() printf("nn");printf("tt= printf("tt= printf("tt0- printf("tt1- printf("tt2- printf("tt3- printf("tt4- printf("tt5- printf("tt6-/*從文件讀取路線信息*/BL;BL *head;菜單顯示 */*公交路線管理系統(tǒng)=n");功能顯示=n");退出-n");顯示線路信息n&qu
22、ot;);增加線路信息-n");刪除線路信息-n");修改線路信息-n");查詢路線n");將信息保存到文件中n");BL *Creat()BL *p,*q;int j=1;char ch5="end"FILE *fp;fp=fopen("busline.txt","r+");if(fp=NULL)printf("不能打開此文件!");exit(0);p=(BL *)malloc(sizeof(BL);head=p;q=p;fscanf(fp,"%d&qu
23、ot;,&(p->busnum);do fscanf(fp,"%d %s",&(p->stopj.num),p->); j+;while(strcmp(p->,ch)=1);while(!feof(fp)j=1;p=(BL *)malloc(sizeof(BL);q->next=p;q=p;fscanf(fp,"%d",&(p->busnum);do(fscanf(fp,"%d %s",&(p->stopj.num),
24、p->);j+;while(strcmp(p->,ch)!=0);q->next=NULL;fclose(fp);return head;顯示線路信息 */* void Put()(BL *p=head;int j;char ch5=("end"IIputs(-線路信息為-");while(p!=NULL)(printf("%dn",p->busnum);j=1;do(printf("%d%s-",p->stopj.num,p->stopj.na
25、me);j+;while(strcmp(p->,ch)!=0);p=p->next;printf("n");增加線路信息 */*BL *Add()(BL *p=head,*q,*t;char nme20;int j,choise,k,r,key,x,c;char ch5=("end"printf(-您要添加公交路線還是公交站點?n");puts("1-添加公交路線 2-添加公交站點n");printf("請選擇:");scanf("%d",&ch
26、oise);switch(choise)(case 1:j=1;t=(BL *)malloc(sizeof(BL);printf(-輸入你要添加的公交路線信息:n");scanf("%d",&(t->busnum);do(scanf("%d%s",&(t->stopj.num),t->);j+;while(strcmp(t->,ch)!=0);while(p!=NULL)(q=p;p=p->next; /* 在表尾插入*/q->next=t;t-&g
27、t;next=NULL;return head;case 2:j=1;printf(-選擇你要添加站點的公交路線:");scanf("%d",&key);while(p!=NULL)(q=p;if(p->busnum=key) break;p=p->next;printf("輸入你要添加的站序號及站名稱:");scanf("%d",&x);scanf("%s",nme);while(strcmp(p->,ch)!=0)(if(x=(p->stop
28、j.num)(r=j;break;j+;r=j;c=j;while(strcmp(p->,ch)!=0)c+;for(k=c;k>=r;k-)strcpy(p->stopk+1.name,p->);strcpy(p->,nme);return head;/*刪除線路信息 *BL *Delete()BL *q,*p=head;int key,r,j=1,x,choise,k;char ch5="end"printf("您是要刪除公交路線還是線路站點:n");print
29、f("1-刪除公交路線2- 刪除站點n");printf("你的選擇:");scanf("%d”,&choise);switch(choise)case 1:printf("請輸入你要刪除的公交路線號");scanf("%d",&key);while(key!=p->busnum && p!=NULL)q=p;p=p->next;if(p->busnum=key) if(p=head)head=p->next;elseq->next=p->
30、;next;elseprintf("return head;沒有找到你要刪除的公交路線!");case 2:printf("選擇線路:");scanf("%d",&key);while(key!=p->busnum && p!=NULL) q=p;p=p->next;printf(-輸入你要刪除的站點序號:");scanf("%d",&x);for(j=1;j<=x;j+)if(x=p->stopj.num)break;j+; r=j;for(k=r
31、;strcmp(p->,ch)!=0;k+)strcpy(p->,p->stopk+1.name);strcpy(p->,p->);return head;修改線路信息 */*BL *Correct()BL *p=head,*q;int key,j=1;:");char ch5="end"printf("選擇你要修改的路線號scanf("%d",&key);while(p!=NULL)if(p->busnum
32、=key) break;q=p;p=p->next;(包括路線號、站序號、站名稱,各個站的站數不變)printf("重新輸入該條路線信息n");scanf("%d",&p->busnum);doscanf("%d%s",&(p->stopj.num),p->);j+;while(strcmp(p->,ch)!=0);return head;查詢路線信息 */*void Search()BL *p=head,*q;int key,j=1,c,d;c
33、har str120,str220,ch5="end"printf("輸入公交車號:");scanf("%d",&key);printf("n輸入起始站和終點站名稱:");scanf("%s%s",str1,str2);while(p!=NULL)if(p->busnum=key) break;q=p;p=p->next;while(strcmp(p->,ch)!=0)if(strcmp(p->,str1)=0)c=j;if(strcmp(p->stop
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商丘職業(yè)技術學院《教育學概論》2023-2024學年第一學期期末試卷
- 商丘幼兒師范高等??茖W?!渡虡I(yè)插圖》2023-2024學年第一學期期末試卷
- 商丘學院《BM技術與工程應用》2023-2024學年第一學期期末試卷
- 商丘師范學院《影視后期特效》2023-2024學年第一學期期末試卷
- 商丘師范學院《物理性污染控制》2023-2024學年第一學期期末試卷
- 內蒙古農村建房合同范例
- 商洛職業(yè)技術學院《電力系統(tǒng)仿真》2023-2024學年第一學期期末試卷
- 物流公司接貨合同范例
- 擬制合同范例
- 陜西中醫(yī)藥大學《機械》2023-2024學年第一學期期末試卷
- 《電力設備預防性試驗規(guī)程》
- 高大模板工程安全技術交底
- 2023年托幼機構幼兒園衛(wèi)生保健人員考試題庫及參考答案
- 催化材料智慧樹知到答案章節(jié)測試2023年南開大學
- 工程造價司法鑒定難點與應對措施
- YY/T 1181-2021免疫組織化學試劑盒
- GB/T 4457.4-2002機械制圖圖樣畫法圖線
- GB/T 16991-1997紡織品色牢度試驗高溫耐光色牢度:氙弧
- GB/T 10051.3-2010起重吊鉤第3部分:鍛造吊鉤使用檢查
- GB 5009.3-2016食品安全國家標準食品中水分的測定
- 1000W準正弦逆變器
評論
0/150
提交評論