客運(yùn)站信息管理系統(tǒng)_第1頁
客運(yùn)站信息管理系統(tǒng)_第2頁
客運(yùn)站信息管理系統(tǒng)_第3頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、面向?qū)ο蠹夹g(shù)實(shí)訓(xùn)課程實(shí)訓(xùn)報(bào)告客運(yùn)站信息管理系統(tǒng)姓 名:班 級(jí):學(xué) 號(hào):指導(dǎo)教師:成 績:完成時(shí)間: 2016年 12月完成地點(diǎn): S4111設(shè)計(jì)題目(問題)描述和要求某客運(yùn)站因春運(yùn)即將到來,客流量急劇增加,工作人員無法按時(shí)完成服務(wù)工 作,不能滿足乘客的出行需求,于是想開發(fā)一套智能客運(yùn)站系統(tǒng), 實(shí)現(xiàn)工作人員 后臺(tái)操作,乘客自主選票,訂票,退票的程序,以緩解出行壓力。要求:(1)增加車輛信息(2)更新車輛信息(3)刪除車輛信息(4)乘客查票(5)乘客買票(6)乘客退票、2系統(tǒng)分析根據(jù)問題描述和要求,系統(tǒng)要求能夠編寫程序?qū)崿F(xiàn)輸入、輸出、查詢、增加、 刪除、修改、取消操作等功能,這些功能需要調(diào)用車輛類

2、的成員函數(shù)實(shí)現(xiàn)。根據(jù)案例需求可以定義一個(gè)車輛類,車輛的基本信息有車輛編號(hào)、車輛路線、 票價(jià)、余票和發(fā)車時(shí)間。由于需要對(duì)車輛信息進(jìn)行讀入和存儲(chǔ),在程序中需要文 件的輸入輸出操作。先從相應(yīng)的文件中讀入車輛,管理員可以對(duì)信息處理后,在 退出系統(tǒng)的時(shí)候?qū)⒁研薷馁Y料重新存儲(chǔ)到原文件中去。3設(shè)計(jì)3.1Bus類的設(shè)計(jì)clBn?4publd.c 二±nt getid(J:int getri:Fig < > ;in t ±±cket=s < > ;c:tiar * ct n-an J ;uold etzn-ame( cH-ar n-aI J J ;ucilc

3、l del bus (),uci:Lcl addbu5(±ntz n chaK * nm);void n tz± d< p"tz 與 I);void sho v«( ) 7itctior ndmc?2C;數(shù)據(jù)成員int id; /車輛編號(hào)int tag; /車輛數(shù)量char road20; / 車輛路線函數(shù)成員及其實(shí)現(xiàn)思路(1)獲取行車路線,即返回車輛路線成員變量road的值char * Bus:getroad() retur n road;獲取車輛編號(hào),即返回車輛成員變量id的值int Bus:getid() return id;獲取車輛數(shù)量,即

4、返回車輛成員變量tag的值int Bus:gettag()return tag;獲取用戶名,返回用戶名name的值char * User:get name() return n ame;獲取用戶人數(shù),返回tag的值int User:gettag() retur n tag;獲取用戶編號(hào),返回id的值int User:getid() return id;(2)設(shè)置車輛路線,即設(shè)置車輛成員變量road的值road=newroadvoid User:setroad(char ro) strcpy(road,ro);Rjoid d eXIsus (); vo±dir»tuni rl

5、 * tz cl<eI-£ f i n 1 uoid s ho u(y;3.2 User類的設(shè)計(jì)Liu»±lI)>z)n v G: It -ar*til 11 rlpr-iuate 二X H r Lag;±n± id ;chaa nantef d 01 ;321數(shù)據(jù)成員i nt tag; /用戶總數(shù)int id; /用戶編號(hào)char n ame10; / 用戶函數(shù)成員及其實(shí)現(xiàn)思路(1) void User:adduser(int n,char * na)/用戶注冊信息 添加功能的設(shè)計(jì)思路是:用戶輸入其型;系統(tǒng)分配用戶編號(hào);(2) v

6、oid User:ytickets(int busid)/用戶訂票功能實(shí)現(xiàn)訂票功能的設(shè)計(jì)思路是: 用戶選擇要訂票的汽車編號(hào); 系統(tǒng)檢索汽車編號(hào),若汽車存在則分配訂單號(hào)并提醒訂票成功; ( 3) int User:ntickets(int busid)/用戶取消訂單退票設(shè)計(jì)思路如下: 用戶輸入需要退票的汽車編號(hào); 系統(tǒng)檢索車輛編號(hào),成功則完成退票,反之退票失敗; ( 4) void User:show()/ 輸出用戶所要信息。設(shè)計(jì)思路如下: 包括用戶,編號(hào)等基本信息; 系統(tǒng)檢索用戶操作信息,用戶當(dāng)前所有訂單;3.3 主程序的設(shè)計(jì)3.3.1 全局變量、全局函數(shù)的設(shè)計(jì)(1)void B_Data:b

7、usdata()/ 管理員向更新系統(tǒng)車輛信息。 設(shè)計(jì)思路如下:調(diào)用 void Bus:addbus() 函數(shù),添加車輛信息;調(diào)用 void Bus:setname() 函數(shù),更新車輛信息;調(diào)用 Bus * B_Data:search() 函數(shù),查找車輛信息;調(diào)用 void Bus:show() 函數(shù),顯示用戶信息;調(diào)用 void Bus:del() 函數(shù),刪除車輛信息;(2) void U_Data:userdata()/ 管理員向更新用戶信息。調(diào)用 void User:addbus() 函數(shù),添加用戶信息;調(diào)用 void User:setname() 函數(shù),更新用戶信息;調(diào)用 Bus * U

8、_Data:search() 函數(shù),查找用戶信息;調(diào)用 void User:show() 函數(shù),顯示用戶信息;調(diào)用 void User:del() 函數(shù),刪除用戶信息;3.2.2 主函數(shù)設(shè)計(jì) 在主函數(shù)中調(diào)用 void userlogin() 函數(shù)和 void managelogin() 函數(shù), 實(shí)現(xiàn)用戶 使用功能和管理員管理功能,分別使用上述兩函數(shù)實(shí)現(xiàn)。(1) 某操作算法流程4調(diào)試分析、測試結(jié)果4.1.1 分析1. 設(shè)計(jì)的時(shí)候,會(huì)出現(xiàn)很多錯(cuò)誤,應(yīng)細(xì)心檢查數(shù)據(jù)成員及成員函數(shù)是否完 整,定嗎編輯過程中是否出現(xiàn)拼寫錯(cuò)誤。2. 在簡單地基礎(chǔ)上,逐步進(jìn)行添加數(shù)據(jù)成員,進(jìn)而添加相應(yīng)功能的成員函 數(shù),實(shí)現(xiàn)設(shè)

9、計(jì)預(yù)期的結(jié)果。3. 編程就是一個(gè)不斷完善的過程,先搭建框架、逐步擴(kuò)充,由簡到繁,最 后完善。邊編程,邊調(diào)試,邊擴(kuò)充。測試結(jié)果:執(zhí)行結(jié)果: ' E:1tEzuoyeDebugzuoye.e«eIvf u 2 吋 H 百 if P 注 it* 暫 H if * * if £ ' I Einujy 2 祜譽(yù) 片 2 < tf .p . # f ” y 中 些 苗 if詁 憤 加 < y H ri* 出區(qū) 學(xué)統(tǒng) 去占縈: 月工鼎<同 £25小結(jié)通過對(duì)車輛管理系統(tǒng)的設(shè)計(jì),自己學(xué)會(huì)獨(dú)立運(yùn)用所學(xué)知識(shí),加強(qiáng)了對(duì)基礎(chǔ)知 識(shí)的掌握并進(jìn)一步加強(qiáng)對(duì)較大程

10、序的實(shí)現(xiàn)技能。在設(shè)計(jì)之初,首先要構(gòu)思好系統(tǒng)應(yīng)具有的功能,比如管理員添加,刪除,更 新車輛及用戶信息,用戶查詢,訂票,退票等等,根據(jù)要得到的信息,設(shè)計(jì)要實(shí) 現(xiàn)的操作,即對(duì)這些信息的使用(成員函數(shù))。準(zhǔn)備好之后,根據(jù)C的知識(shí),進(jìn) 行數(shù)據(jù)的類型選擇,根據(jù)定義好的類型,選擇相應(yīng)的類型的函數(shù),進(jìn)行操作。在 簡單地程序之上,逐漸擴(kuò)充,實(shí)現(xiàn)更多的功能。在調(diào)試的過程會(huì)遇到不少大大小 小的問題,書寫認(rèn)真很重要,細(xì)心更重要,即便是檢查錯(cuò)誤,也要細(xì)心,經(jīng)常見 到的就是輸入法導(dǎo)致的中英字符混用。編程時(shí)一個(gè)細(xì)心的過程,書寫的規(guī),使得查看更方便。附錄*/ * bus.h 類聲明頭文件#ifndef BUS_H_#defi

11、ne BUS_H_#include<iostream>#include<iomanip>#include<string>#include<fstream>#include<stdlib.h>const int maxuser=100;const int maxche=100;const int maxjie=2;using namespace std;#endif*/ * sbus.h 類聲明頭文件#ifndef SBUS_H_#define SBUS_H_#include"bus.h"class Userpubl

12、ic:User();int gettag();int getid();int ntickets(int busid);int gobusmaxjie;char * getname();void setname(char na);void delbus();void adduser(int n,char * na);void ytickets(int busid);void show();private:int tag;int id;char name10;class U_Datapublic:U_Data();U_Data();int adduser(char * na);void show(

13、);void usershow(int userid);void userdata();User * search(int userid); private:int top;int maxid;User usemaxuser;class Buspublic:Bus();int getid();int gettag();int ytickets();char * getname(); void setname(char na);void delbus();void addbus(int n,char * na); void ntickets();void show();private:int i

14、d;int tag;int onshelf;char name20;class B_Datapublic:B_Data();B_Data();int addbus(char * na); void busdata();void show();Bus * search(int busid); private:int top;int maxid;Bus busmaxche;#endif/*/ * sbus.cpp 類聲明頭文件#include"sbus.h"User:User()id=0;tag=0;for(int i=0;i<maxjie;i+) gobusi=0;ch

15、ar * User:getname()return name;int User:gettag()return tag;int User:getid()return id;void User:setname(char na)strcpy(name,na);void User:delbus()for(int i=0;i<maxjie;i+)if(gobusi!=0)"vvendl;coutvv"用戶"vvnamevv"取消訂單失敗,請檢查操作是否正確!return;tag=1;coutvv" 用戶刪除成功 "vvendl;void

16、User:adduser(int n,char * na)tag=0;id=n;strcpy(name,na);for(int i=0;i<maxjie;i+)gobusi=0;cout<<endl<<" 用戶添加成功,用戶編號(hào)為: "<<id<<endl; cout<<" 請牢記用戶編號(hào),這是你在系統(tǒng)中的登陸賬號(hào)! "<<endl; void User:ytickets(int busid)for(int i=0;i<maxjie;i+) if(gobusi=busid

17、)cout<<" 訂票成功! "<<endl;return;int User:ntickets(int busid)for(int i=0;i<maxjie;i+)if(gobusi=busid)gobusi=0;cout<<" 訂單取消成功! "<<endl;return 1;return 0;void User:show() cout<<setw(5)<<id<<setw(10)<<name<<setw(24)<<"

18、 訂單號(hào)為: for(int i=0;i<maxjie;i+)if(gobusi!=0)cout<<""<<gobusi<<"" cout<<endl;U_Data:U_Data()User s;top=0;fstream file("user.txt",ios:in); while(1)file.read(char *)&s,sizeof(s);if(!file) break;top+; usetop=s;maxid=usetop.getid(); file.close(

19、);int U_Data:adduser(char * na)top+;maxid+;usetop.adduser(maxid,na);return 1;User * U_Data:search(int userid)for(int i=1;i<=top;i+) if(usei.getid()=userid&&usei.gettag()=0)return &(usei);return NULL;void U_Data:show()if(top=0)cout<<endl<<" 沒有用戶記錄 "<<endl; r

20、eturn;for(int i=1;i<=top;i+) usei.show();void U_Data:usershow(int userid)useuserid.show();void U_Data:userdata()char choice=1;char rname20;int userid;User * r;while(choice!='0')*"<<endl;cout<<endl<<"*cout<<"1. 增加用戶信息 "<<endl<<"2

21、. 修改用戶信息 "<<endl<<"3. 刪除用戶信息 "<<endl<<"4. 查找用 戶信息 "<<endl<<"5. 顯示所有用戶 "<<endl<<"0. 退出用戶信息系統(tǒng) "<<endl<<" 請選擇您要進(jìn)行的操作: "cin>>choice;switch(choice)case '1':cout<<" 輸

22、入用戶: "cin>>rname;adduser(rname);break;case '2':cout<<" 輸入用戶編號(hào): "cin>>userid;r=search(userid);if(r=NULL)cout<<endl<<" 不存在編號(hào)為: "<<userid<<" 的用戶 "<<endl;break;cout<<" 輸入新的用戶名 :"cin>>rname;r-

23、>setname(rname);break;case '3':cout<<" 輸入用戶編號(hào): "cin>>userid;r=search(userid);if(r=NULL)cout<<endl<<" 不存在編號(hào)為: "<<userid<<" 的用戶 "<<endl;break;r->delbus();break;case '4':cout<<" 輸入用戶編號(hào): "cin>

24、;>userid;r=search(userid);if(r=NULL)cout<<" 該用戶不存在! "<<endl;break;r->show();break;case '5': show(); break;case '0': break;default:cout<<" 輸入有誤,請重新輸入! "<<endl; U_Data:U_Data()fstream file("user.txt",ios:out);for(int i=1;i<

25、=top;i+) if(usei.gettag()=0) file.write(char *)&(usei),sizeof(usei); file.close(); Bus:Bus()id=0;tag=1; onshelf=1;char * Bus:getname()return name;int Bus:getid() return id;int Bus:gettag()return tag;void Bus:setname(char na) strcpy(name,na); void Bus:delbus()onshelf=1;tag=1;void Bus:addbus(int n

26、,char * na)tag=0;id=n;strcpy(name,na);onshelf=1;cout<<endl<<" 添加車輛成功!車輛編號(hào)為 :"<<id<<endl; cout<<" 請牢記車輛編號(hào) !"<<endl;int Bus:ytickets()if(onshelf=1)onshelf=0;return 1;return 0;void Bus:ntickets()onshelf=1;void Bus:show()已發(fā)車 ")<<endl; co

27、ut<<setw(10)<<id<<setw(20)<<name<<setw(10)<<(onshelf=1?" 可定B_Data:B_Data()Bus b;top=0;fstream file("bus.txt",ios:in);while(1)file.read(char *)&b,sizeof(b);if(!file) break;top+; bustop=b;maxid=bustop.getid(); file.close();int B_Data:addbus(char *

28、 na) top+;maxid+;bustop.addbus(maxid,na);return 1;Bus * B_Data:search(int busid)for(int i=1;i<=top;i+) if(busi.getid()=busid&&busi.gettag()=0) return &(busi);return NULL; void B_Data:busdata() char choice='1'char bname40;int busid;Bus *b;while(choice!='0')cout<<e

29、ndl<<"*車輛管理*1"<<endl;cout<<"1. 增加車輛信息 "<<endl<<"2. 修改車輛信息 "<<endl<<"3. 刪除車輛信息 "<<endl<<"4. 查找車 輛信息 "<<endl<<"5. 顯示所有車輛 "<<endl<<"0. 退出車輛信息系統(tǒng) "<<en

30、dl<<" 請選擇您要進(jìn)行的操作:cin>>choice;switch(choice)case '1':cout<<" 輸入車輛路線:cin>>bname;addbus(bname); break;case '2':cout<<" 輸入車輛編號(hào): " cin>>busid; b=search(busid); if(b=NULL)cout<<endl<<" 不存在編號(hào)為: "<<b->geti

31、d()<<" 的車輛 "<<endl; break;cout<<" 輸入新的路線: cin>>bname; b->setname(bname);break;case '3':cout<<" 輸入車輛編號(hào): " cin>>busid;b=search(busid);if(b=NULL)cout<<endl<<" 不存在編號(hào)為: "<<b->getid()<<" 的車輛 &

32、quot;<<endl; break;b->delbus(); break;case '4':cout<<" 輸入車輛編號(hào): " cin>>busid;b=search(busid); if(b=NULL)cout<<endl<<" 不存在編號(hào)為: "<<b->getid()<<" 的車輛 "<<endl; break;b->show(); break;case '5':show();bre

33、ak;case '0':break;default:cout<<" 輸入有誤,請重新輸入! "<<endl;void B_Data:show()if(top=0)cout<<endl<<" 沒有車輛記錄 "<<endl;return;for(int i=0;i<=top;i+)if(busi.gettag()=0)busi.show();B_Data:B_Data()fstream file("bus.txt",ios:out);for(int i=1;

34、i<=top;i+)if(busi.gettag()=0)file.write(char *)&(busi),sizeof(busi); file.close();/*/ * main.cpp 主程序文件 #include"sbus.h"void userlogin()U_Data UserDB;User * r;B_Data BusDB;Bus * b;char tempname20;char choice='1' int bid,rid; while(choice!='0') cout<<endl<<

35、"*用戶專區(qū) *"<<endl;cout<<"1. 用戶登錄 "<<endl<<"2. cin>>choice;用戶注冊 "<<endl<<"0. 退出 "<<endl<<" 請選擇: "<<endl;switch(choice)case '1':cout<<" 輸入用戶編號(hào): cin>>rid;r=UserDB.search(

36、rid);if(r=NULL)cout<<" 用戶不存在 "<<endl;elsechoice='0'break;case '2':cout<<endl<<" 輸入用戶: "<<endl;cin>>tempname;UserDB.adduser(tempname);break;case '0':cout<<" 歡迎使用! "<<endl; return;default:cout<<

37、" 輸入有誤,請重新輸入! choice='1' while(choice!='0') cout<<endl<<"*"<<endl;訂票專區(qū)*1"<<endl;"<<endl;coutvv"1. 訂票"vvendlvv"2.退票"<<endlvv"3.查看訂單"<<"0.退出"<<endl<<"請選擇:cin>&

38、gt;choice;switch(choice)case '1':cout<<" 輸入車輛編號(hào): "cin>>bid;b=BusDB.search(bid);if(b=NULL)cout<<" 車輛不存在 "<<endl;break;if(b->ytickets()=0)cout<<" 車輛 "<<b->getname()<<" 已發(fā)出 "<<endl;break;r->ytickets

39、(b->getid();cout<<endl<<" 訂票成功 "<<endl;break;case '2':cout<<endl<<" 輸入想要退票車輛的編號(hào): "<<endl;cin>>bid; b=BusDB.search(bid); if(b=NULL)cout<<" 不存在編號(hào)為 "<<b->getid()<<" 的車輛 "<<endl; break;b->ntickets(); r->ntickets(b->getid();cout<<" 車輛已返回 "<<endl;break;case'3':UserDB.usershow(rid); break;case '0':cou

溫馨提示

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

評(píng)論

0/150

提交評(píng)論