




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算機科學(xué)與技術(shù)系課程設(shè)計任務(wù)書20 17 20 18學(xué)年第 一 學(xué)期課程C 語言課程設(shè)計課 程 設(shè)計 名 稱公交路線管理系統(tǒng)學(xué)生姓名學(xué)號專業(yè)班級指導(dǎo)教師20 181 年8 月一、需求分析本系統(tǒng)主要功能是實現(xiàn)對公交路線的管理和維護。我們都知道,每個城市都會有公交路線的改動,如果使用這個系統(tǒng),就可以及時的對路線信息進(jìn)行修改和保存,是非常方便的,而且該系統(tǒng)使用起來也很方便。用戶只需根據(jù)顯示的提示信息進(jìn)行選擇和輸入就可以實現(xiàn)你要求的功能。該系統(tǒng)具有添加,查詢,刪除,修改和顯示所有記錄的功能。用戶可以根據(jù)實際情況進(jìn)行相應(yīng)的功能選擇。其具體功能簡單描述如下:(1)保存:即將信息存入指定文件中。當(dāng)用戶對原
2、始數(shù)據(jù)進(jìn)行相關(guān)的改動(主要是對路線信息進(jìn)行增加、刪除、修改)之后,用戶可以根據(jù)自己的選擇判斷是否要保存到文件中,這樣就實現(xiàn)了信息的記錄功能,以方便用戶隨時進(jìn)行查看。(2)添加:即添加一條新的公交路線或者是某一條路線上的站點。每次可以添加一條路線信息,若用戶想添加多條路線信息的話可以重復(fù)執(zhí)行該功能,同樣的,添加站點的話也是每一次添加一個站點,若用戶想添加多條路線信息的話也只需要重復(fù)執(zhí)行該功能即可。這樣,就實現(xiàn)了對公交路線的添加信息管理。(3)查詢:即能夠查找出你要的公交路線信息和總共有多少站。簡單地說,就是用戶先選擇你要查詢的公交路線號,在輸入起點站和終點站名稱,然后系統(tǒng)就會自動顯示出起點站和終
3、點站之間共有多少站點,以及起點站和終點站之間所有站點的序號和名稱,從而使用戶一目了然的知道站點信息,而不需要像看地圖那樣一個站點一個站點的用肉眼進(jìn)行查找,這就為用戶節(jié)省了很多時間。(4)刪除:即能刪除掉一條你所不需要的公交路線信息和某一條路線上的站點。若要刪除路線時只需要輸入你要刪除的公交路線號即可,若要刪除站點也只需輸入你要刪除的站點序號,不需要輸入該站點名稱。5) 修改:即能修改一條你需要該的路線信息。 修改內(nèi)容包括:修改該條公交路線號、修改站點名稱(輸入新的信息時該條路線的站點長度不能改變,若要改變站點長促可以選擇增加和刪除功能,即可實現(xiàn)) 。6) 顯示路線信息 : 即將路線信息顯示到屏
4、幕中,供用戶查看。該功能比較簡單,在這里不具體說明。(7)二、算法設(shè)計1、設(shè)計思想:本系統(tǒng)的設(shè)計流程簡單比較簡單,原始數(shù)據(jù)全部都保存在文件中,用戶就不必自己一個一個的輸入信息。程序執(zhí)行時從文件中讀出,文件的讀取操作在下文中我會詳細(xì)說明,這里就不做具體說明了。創(chuàng)建動態(tài)鏈表和結(jié)構(gòu)體數(shù)組對路線信息進(jìn)行存儲,因為使用鏈表時對程序的插入、刪除會比較方便,那么插入和刪除就相當(dāng)于對鏈表節(jié)點的刪除和插入。寫無返回值的主函數(shù)void main()對系統(tǒng)的功能進(jìn)行顯示,每次用戶選擇某一功能時都可以看到路線的大致信息,以便于用戶更準(zhǔn)確的選擇功能。其中利用switch條件分支語句進(jìn)行子函數(shù)功能的選擇和調(diào)用。并且使用w
5、hile 循環(huán)語句進(jìn)行多次循環(huán)執(zhí)行,就可以實現(xiàn)對信息的多次刪除、增加、修改,知道達(dá)到用戶滿意時由用戶自己選擇退出系統(tǒng)。通同時使用了清屏函數(shù),對上一次程序運行的結(jié)果清楚只顯示本次運行的相關(guān)信息,這樣的話就做到了界面的友好化,簡單明了,不冗雜,更方便觀看。當(dāng)用戶對信息進(jìn)行有關(guān)的改動之后,用戶根據(jù)自己的選擇是否保存入文件中,就可以保存他所要的信息了。2其主要流程圖如下:開始路線信息輸入選擇信息 nnnext 指向新建立的節(jié)點,新節(jié)點的下一結(jié)點賦值為空,從而完成了增加路線信息的功能。如果是添加路線站點,先確定要在哪條路線上添加,所以要先找到該條路線,并用指針指向該節(jié)點,然后找該站點將要插入的位置,找到
6、后,將其后面的站點依次后移, 把那個空的位置空間騰出來, 用來置放添加的節(jié)點的信息,這樣就實現(xiàn)了對站點的添加。模塊六:刪除線路信息。該函數(shù)返回的是頭指針 head,所以該函數(shù)是一個指針函數(shù), 也是作為子函數(shù)的形式出現(xiàn)。可以刪除整條路線,也可以刪除線路上的某一個站點,刪除一整條路線時,就相當(dāng)于刪除鏈表中的某一個節(jié)點,先確定你要刪除的線路號,找到后,只需要將其前一個節(jié)點指向其后一個節(jié)點,所以刪除時還需要考慮到刪除的是首節(jié)點還是末節(jié)點還是中間節(jié)點,若刪除首節(jié)點只需將 head 指向 head 的下一個節(jié)點,若刪除末節(jié)點,將倒數(shù)第二個節(jié)點之后賦值為空即可,因此對線路的刪除還是相對比較簡單的,但是要求我
7、們對鏈表的相關(guān)操作熟練掌握。刪除站點時,先確定你要刪除的是哪條路線上的站點,找到后一個指針會指向該節(jié)點,再確定你要刪除的站序號,確定后將其后一個站名稱移到當(dāng)前刪除節(jié)點的位置,就可以將該站名覆蓋,從而實現(xiàn)站點的刪除。模塊七:修改線路信息。同上分析,該子函數(shù)也是一個指針函數(shù),修改時,先確定你要修改哪條路線,指針指向該節(jié)點,在重新輸入新的信息即可,新輸入的信息會覆蓋原有節(jié)點信息,所以可以實現(xiàn)對線路進(jìn)行修改,但是修改時需要注意的是,修改時新輸入的站點數(shù)目不能改變模塊八:查詢路線信息。該子函數(shù)是一個無返回值的函數(shù)。使用時先輸入你要找的路線號,再輸入你要經(jīng)歷的起點站和終點站,程序就會為你顯示出起點站和終點
8、站之間共有多少站,并且輸出起點站和終點站之間所有站序號和站點名稱。模塊九:將信息保存到文件中。當(dāng)用戶對原始路線信息進(jìn)行改動之后,或許要將修改過后的信息保存起來,此時用戶就可以自己選擇是否要將信息保存起來,保存的位置是本系統(tǒng)實現(xiàn)設(shè)定好的,保存之后的信息在 D 盤根目錄下,也方便用戶的查看。模塊十:主函數(shù)。構(gòu)建無返回值的主函數(shù),主函數(shù)用來實現(xiàn)對子模塊的調(diào)用功能,用 while 循環(huán)語句來控制循環(huán)次數(shù),用戶可以根據(jù)自己的需求選擇任何時候退出系統(tǒng)。對子模塊的調(diào)用主要使用 switch 開關(guān)控制語句,根據(jù)選擇實現(xiàn)用戶要求的功能。3、實現(xiàn)注釋:本系統(tǒng)對于菜單顯示表上的功能基本上都能實現(xiàn),但是不是很完善,很
9、多地方我還沒有考慮到,或許是考慮的不夠周全,但是有些不足的地方,是我的能力所不能達(dá)到的,還望老師體諒,不過等以后學(xué)過新的知識用新的方法或許就能將系統(tǒng)做進(jìn)一步的改進(jìn)。4、算法設(shè)計中一些新的想法:我覺得本系統(tǒng)很不完善,很多功能雖然能實現(xiàn),但是實現(xiàn)的不夠完美,很多細(xì)節(jié)我都沒有考慮到,比如查詢路線時,不能大致故略出起點站和終點站需要的時間;修改路線信息時,重新輸入該條路線的信息時,路線上站點的個數(shù)不能改變,要改變的話還得選擇增加或刪除功能;還有就是用戶將改動過后的信息保存到文件中后,以后該文件中的數(shù)據(jù)用戶如果要使用的話,不能從文件中讀取顯示到屏幕上。這些都是我的系統(tǒng)一些不完善的地方, 希望以后有能力的
10、時候, 能進(jìn)一步對系統(tǒng)進(jìn)行修改和完善。三、用戶手冊用戶在適用本系統(tǒng)時, 我在這里有幾點說明要解釋一下。 以便用戶更好的使用本系統(tǒng)。(1)路線號整形數(shù)據(jù),站序號是整形數(shù)據(jù),站名時字符串。(2)輸入路線信息時,站的序號是有次序的,從 1 開始依次往后增加。如果你要結(jié)束站點的輸入,只需要在最后一個站點后在輸入下一個站的序號,但是本站的站名一定要是 end,用來表示站點錄入結(jié)束的結(jié)束標(biāo)志。(3)保存信息的文本文檔,一點要放入G 盤根目錄下,因為我在寫本程序時就規(guī)定了將文本文檔置于G 盤根目錄下,所以以后用戶查看數(shù)據(jù)信息時可以從G 盤根目錄下查找。四、調(diào)試及測試本程序的運行結(jié)果如下所示:5( 1)( 2
11、)6( 3)( 4)7( 5)五、課程小結(jié)通過這次實訓(xùn),增加了我學(xué)習(xí)軟件技術(shù)的興趣,雖然還不明確軟件技術(shù)包含的具體內(nèi)容,但從 C 語言這門課程開始,已發(fā)現(xiàn)程序設(shè)計的樂趣,在學(xué)習(xí)C語言的過程中也學(xué)到了許多計算機應(yīng)用基礎(chǔ)知識,對計算機的機體也有了一個大體的了解。這次實訓(xùn)是老師給了題目,經(jīng)過自己的努力,實現(xiàn)要求。先做簡單的輸出,一步步的再做其它要求,在實際操作過程中犯的一些錯誤還會有意外的收獲,感覺實訓(xùn)很有意思。在具體操作中對這學(xué)期所學(xué)的 C 語言的理論知識得到鞏固,達(dá)到實訓(xùn)的基本目的,也發(fā)現(xiàn)自己的不足之出,在以后的上機中應(yīng)更加注意,同時體會到C語言具有的語句簡潔,使用靈活,執(zhí)行效率高等特點。發(fā)現(xiàn)上
12、機實訓(xùn)的重要作用,特別是對數(shù)組和循環(huán)有了深刻的理解。通過實際操作,學(xué)會C 語言程序編程的基本步驟、基本方法,開發(fā)了自己的邏輯思維能力,培養(yǎng)了分析問題、解決問題的能力。深刻體會到“沒有做不到的,只有想不到的” ,“團結(jié)就是力量”,“實踐是檢驗真理的標(biāo)準(zhǔn)”的寓意。在此希望以后應(yīng)多進(jìn)行這樣的實訓(xùn),加長設(shè)間,培養(yǎng)我們獨立思考問題的能力,提高實際操作水平。六、參考資料81、 譚浩強編著, C 程序設(shè)計 1991 年 7 月2、 裘宗燕 著,從問題到程序科學(xué)出版社,北京大學(xué)出版社,1999 年 4 月。3、 劉瑞挺主編,計算機二級教程,南開大學(xué)出版社,1996 年 10 月。4、 陳朔鷹等編著, C語言程
13、序設(shè)計基礎(chǔ)教程,兵器工業(yè)出版社,1994 年 9 月5、 姜仲秋等主編, C語言程序設(shè)計,南京大學(xué)出版社,1998 年 1 月。6、C程序設(shè)計(第二版),譚浩強編,清華大學(xué)出版社, 1999 年 12 月。 本書以初學(xué)者為讀者對象,要求的起點低,詳細(xì)而透徹地講述了C語言各個語句的語法規(guī)則,通過典型的簡單的例題,引領(lǐng)初學(xué)者進(jìn)入C 語言的世界。7、C 語言程序設(shè)計題解與上機指導(dǎo) ,譚浩強編,清華大學(xué)出版社, 2000 年 11 月。 與教材配套的上機指導(dǎo)。附錄:1、源程序清單:#include stdio.h #include malloc.h #include string.h #include
14、 stdlib.h struct stationint num;char name20; stop50;/* 公交站 */typedef struct buslineint busnum;struct station stop50;struct busline *next;BL;BL *head;/* 菜單 */void Menu() printf(*n);printf(*歡迎進(jìn)入公交信息管理系統(tǒng)*n);printf(*n);printf(*);9printf(*n);printf(*0.退出系統(tǒng) *n);printf(*n);printf(*1.顯示公交車線路信息 *n);printf(*n
15、);printf(*2.增加公交車線路信息 *n);printf(*n);printf(*3.刪除公交車線路信息 *n);printf(*n);printf(*4.修改公交車線路信息 *n);printf(*n);printf(*5.查詢公交車線路信息 *n);printf(*n);printf(*6.保存公交車線路信息 *n);printf(*n);/* 函數(shù)功能:刪除 */BL *Delete() BL *q,*p=head;int key,r,j=1,x,choise,k; char ch5=end;printf( 您是要刪除公交路線還是線路站點: n); printf(1- 刪除公交路
16、線 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)10head=p-next;elseq-next=p-next;elseprintf( 沒有找到你要刪除的公交路線! ); return head;case 2:printf( 選擇線路: ); scanf(%d,&key);while(
17、key!=p-busnum & p!=NULL) q=p;p=p-next;printf( 輸入你要刪除的站點序號: ); scanf(%d,&x);for(j=1;jstopj.num)break;j+;r=j; for(k=r;strcmp(,ch)!=0;k+)strcpy(,p-stopk+1.name); strcpy(,);return head;BL *Correct() BL *p=head,*q; int key,j=1;char ch5=end; printf( 選擇你要修改
18、的路線號 :); scanf(%d,&key);while(p!=NULL) if(p-busnum=key) break;11q=p; p=p-next;printf(重新輸入該條路線信息(包括路線號、站序號、站名稱,各個站的站數(shù)不變):n); scanf(%d,&p-busnum); doscanf(%d%s,&(p-stopj.num),); j+;while(strcmp(,ch)!=0); return head;/* 函數(shù)功能:添加路線 */BL *Add()BL *p=head,*q,*t; char nme20;int j,c
19、hoise,k,r,key,x,c; char ch5=end;printf( 您要添加公交路線還是公交站點? n); puts(1- 添加公交路線 2- 添加公交站點 n); printf( 請選擇: );scanf(%d,&choise);switch(choise)case 1:j=1;t=(BL *)malloc(sizeof(BL); printf( 輸入你要添加的公交路線信息: n); scanf(%d,&(t-busnum);doscanf(%d%s,&(t-stopj.num),); j+;while(strcmp(,ch)!
20、=0); while(p!=NULL)12q=p;p=p-next;q-next=t; 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(,ch)!=0)if(x=(p-stopj.num)r=j;break;j+;r=j;c=j;
21、while(strcmp(,ch)!=0)c+; for(k=c;k=r;k-)strcpy(p-stopk+1.name,); strcpy(,nme);return head;13/* 函數(shù)功能:查找路線 */void Search() BL *p=head,*q; int key,j=1,c,d;char str120,str220,ch5=end; printf( 輸入公交車號: ); scanf(%d,&key);printf(n 輸入起始站和終點站名稱: ); scanf(%s%s,str1,str2);whi
22、le(p!=NULL) if(p-busnum=key) break; q=p;p=p-next;while(strcmp(,ch)!=0) if(strcmp(,str1)=0)c=j; if(strcmp(,str2)=0)d=j;j+;printf( 起始站和終點站之間共有 %d站n,d-c-1); printf( 各個站的序號及名稱為: n); for(j=c;jstopj.num,); printf(n);/* 函數(shù)功能:保存數(shù)據(jù) */Save()FILE *fp;BL *t;14int
23、j;char ch5=end; t=head;fp=fopen( 保存的數(shù)據(jù) .txt,w+); if(fp=NULL)printf(File can not open!n); exit(0);while(t!=NULL) fprintf(fp,%dt,t-busnum); j=1;dofprintf(fp,%d%s-,t-stopj.num,); j+;while(strcmp(,ch)!=0); fprintf(fp,n);t=t-next;fclose(fp);/* 函數(shù)功能:讀取數(shù)據(jù) */BL *Creat() BL *p,*q; int
24、 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;15fscanf(fp,%d,&(p-busnum); dofscanf(fp,%d %s,&(p-stopj.num),); j+;while(strcmp(,ch)=1); while(!feof(fp)j=1;p=(BL *)malloc(sizeof(BL); q-next=p;q=p; fscanf(fp,%d,&(p-busnum); dofscanf(fp,%d %s,&(p-stop
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度居民房屋租賃合同能源審計與節(jié)能改造合同
- 浙江國企招聘2024寧波奉化國有資本投資控股有限公司招聘1人筆試參考題庫附帶答案詳解
- 浙江國企招聘2024嘉興市秀洲傳媒有限公司招聘8人筆試參考題庫附帶答案詳解
- 2025重慶高新技術(shù)產(chǎn)業(yè)研究院有限責(zé)任公司招聘3人(26截止)筆試參考題庫附帶答案詳解
- 2025河北衡水金湖公路養(yǎng)護工程有限公司招聘勞務(wù)派遣人員10人筆試參考題庫附帶答案詳解
- 2025新疆機場(集團)有限責(zé)任公司下轄機場第一季度招聘(15人)筆試參考題庫附帶答案詳解
- 教你讀懂化驗單知到智慧樹章節(jié)測試課后答案2024年秋浙江中醫(yī)藥大學(xué)
- 香精香料知識培訓(xùn)課件
- 2025山西交通控股集團招聘450人筆試參考題庫附帶答案詳解
- 工業(yè)滑升門安裝及施工方案
- 高考必知的自然科學(xué)類基礎(chǔ)知識考試題庫(400題)
- 設(shè)計思維電子課件
- 建筑施工企業(yè)安全生產(chǎn)風(fēng)險分級管控體系-實施指南
- 配位鍵和配位化合物課件
- 國際貨物運輸與保險課后習(xí)題參考答案
- 房地產(chǎn)銷售培訓(xùn)PPT培訓(xùn)課件
- 職業(yè)暴露(銳器傷)應(yīng)急預(yù)案演練腳本
- 建筑設(shè)計電梯計算
- 蘇教版數(shù)學(xué)二年級下冊《認(rèn)識時分》教案(無錫公開課)
- 軌道交通云平臺業(yè)務(wù)關(guān)鍵技術(shù)發(fā)展趨勢
- 打造金融級智能中臺的數(shù)據(jù)底座
評論
0/150
提交評論