版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
.z."面向?qū)ο蠹夹g(shù)實訓"課程實訓報告客運站信息管理系統(tǒng)姓名:班級:學號:指導教師:成績:完成時間:2021年12月完成地點:S411-.z.1設(shè)計題目〔問題〕描述和要求*客運站因春運即將到來,客流量急劇增加,工作人員無法按時完成效勞工作,不能滿足乘客的出行需求,于是想開發(fā)一套智能客運站系統(tǒng),實現(xiàn)工作人員后臺操作,乘客自主選票,訂票,退票的程序,以緩解出行壓力。要求:增加車輛信息更新車輛信息刪除車輛信息乘客查票乘客買票乘客退票、2系統(tǒng)分析根據(jù)問題描述和要求,系統(tǒng)要求能夠編寫程序?qū)崿F(xiàn)輸入、輸出、查詢、增加、刪除、修改、取消操作等功能,這些功能需要調(diào)用車輛類的成員函數(shù)實現(xiàn)。根據(jù)案例需求可以定義一個車輛類,車輛的根本信息有車輛編號、車輛路線、票價、余票和發(fā)車時間。由于需要對車輛信息進展讀入和存儲,在程序中需要文件的輸入輸出操作。先從相應(yīng)的文件中讀入車輛,管理員可以對信息處理后,在退出系統(tǒng)的時候?qū)⒁研薷馁Y料重新存儲到原文件中去。3設(shè)計3.1Bus類的設(shè)計3.1.1數(shù)據(jù)成員 intid;//車輛編號 inttag;//車輛數(shù)量 charroad[20];//車輛路線3.1.2函數(shù)成員及其實現(xiàn)思路〔1〕獲取行車路線,即返回車輛路線成員變量road的值char*Bus::getroad(){returnroad;}獲取車輛編號,即返回車輛成員變量id的值intBus::getid(){returnid;}獲取車輛數(shù)量,即返回車輛成員變量tag的值intBus::gettag(){returntag;}獲取用戶名,返回用戶名name的值char*User::getname(){returnname;}獲取用戶人數(shù),返回tag的值intUser::gettag(){returntag;}獲取用戶編號,返回id的值intUser::getid(){returnid;}〔2〕設(shè)置車輛路線,即設(shè)置車輛成員變量road的值road=newroad。voidUser::setroad(charro[]){strcpy(road,ro)};3.2User類的設(shè)計數(shù)據(jù)成員inttag;//用戶總數(shù) intid;//用戶編號 charname[10];//用戶**3.2.2函數(shù)成員及其實現(xiàn)思路〔1〕voidUser::adduser(intn,char*na)//用戶注冊信息添加功能的設(shè)計思路是:用戶輸入其型**;系統(tǒng)分配用戶編號;〔2〕voidUser::ytickets(intbusid)//用戶訂票功能實現(xiàn)訂票功能的設(shè)計思路是:用戶選擇要訂票的汽車編號;系統(tǒng)檢索汽車編號,假設(shè)汽車存在則分配訂單號并提醒訂票成功;〔3〕intUser::ntickets(intbusid)//用戶取消訂單退票設(shè)計思路如下:用戶輸入需要退票的汽車編號;系統(tǒng)檢索車輛編號,成功則完成退票,反之退票失?。弧?〕voidUser::show()//輸出用戶所要信息。設(shè)計思路如下:包括用戶**,編號等根本信息;系統(tǒng)檢索用戶操作信息,用戶當前所有訂單;3.3主程序的設(shè)計全局變量、全局函數(shù)的設(shè)計(1)voidB_Data::busdata()//管理員向更新系統(tǒng)車輛信息。設(shè)計思路如下:調(diào)用voidBus::addbus()函數(shù),添加車輛信息;調(diào)用voidBus::setname()函數(shù),更新車輛信息;調(diào)用Bus*B_Data::search()函數(shù),查找車輛信息;調(diào)用voidBus::show()函數(shù),顯示用戶信息;調(diào)用voidBus::del()函數(shù),刪除車輛信息;(2)voidU_Data::userdata()//管理員向更新用戶信息。調(diào)用voidUser::addbus()函數(shù),添加用戶信息;調(diào)用voidUser::setname()函數(shù),更新用戶信息;調(diào)用Bus*U_Data::search()函數(shù),查找用戶信息;調(diào)用voidUser::show()函數(shù),顯示用戶信息;調(diào)用voidUser::del()函數(shù),刪除用戶信息;3.2.2主函數(shù)設(shè)計在主函數(shù)中調(diào)用voiduserlogin()函數(shù)和voidmanagelogin()函數(shù),實現(xiàn)用戶使用功能和管理員管理功能,分別使用上述兩函數(shù)實現(xiàn)。(1)*操作算法流程主程序調(diào)用流程圖4調(diào)試分析、測試結(jié)果分析1.設(shè)計的時候,會出現(xiàn)很多錯誤,應(yīng)細心檢查數(shù)據(jù)成員及成員函數(shù)是否完整,定嗎編輯過程中是否出現(xiàn)拼寫錯誤。2.在簡單地根底上,逐步進展添加數(shù)據(jù)成員,進而添加相應(yīng)功能的成員函數(shù),實現(xiàn)設(shè)計預期的結(jié)果。3.編程就是一個不斷完善的過程,先搭建框架、逐步擴大,由簡到繁,最后完善。邊編程,邊調(diào)試,邊擴大。測試結(jié)果:執(zhí)行結(jié)果:5小結(jié)通過對車輛管理系統(tǒng)的設(shè)計,自己學會獨立運用所學知識,加強了對根底知識的掌握并進一步加強對較大程序的實現(xiàn)技能。在設(shè)計之初,首先要構(gòu)思好系統(tǒng)應(yīng)具有的功能,比方管理員添加,刪除,更新車輛及用戶信息,用戶查詢,訂票,退票等等,根據(jù)要得到的信息,設(shè)計要實現(xiàn)的操作,即對這些信息的使用〔成員函數(shù)〕。準備好之后,根據(jù)C的知識,進展數(shù)據(jù)的類型選擇,根據(jù)定義好的類型,選擇相應(yīng)的類型的函數(shù),進展操作。在簡單地程序之上,逐漸擴大,實現(xiàn)更多的功能。在調(diào)試的過程會遇到不少大大小小的問題,書寫認真很重要,細心更重要,即便是檢查錯誤,也要細心,經(jīng)常見到的就是輸入法導致的中英字符混用。編程時一個細心的過程,書寫的標準,使得查看更方便。附錄//*****************************************************************//*bus.h
類聲明頭文件
#ifndefBUS_H_#defineBUS_H_#include<iostream>#include<iomanip>#include<string>#include<fstream>#include<stdlib.h>constintma*user=100;constintma*che=100;constintma*jie=2;usingnamespacestd;#endif//*****************************************************************//*sbus.h類聲明頭文件
#ifndefSBUS_H_#defineSBUS_H_#include"bus.h"classUser{public: User(); intgettag(); intgetid(); intntickets(intbusid); intgobus[ma*jie]; char*getname();voidsetname(charna[]); voiddelbus(); voidadduser(intn,char*na); voidytickets(intbusid); voidshow();private: inttag; intid; charname[10];};classU_Data{public: U_Data(); ~U_Data(); intadduser(char*na); voidshow(); voidusershow(intuserid);voiduserdata(); User*search(intuserid);private: inttop; intma*id; Useruse[ma*user];};classBus{public: Bus(); intgetid(); intgettag(); intytickets(); char*getname(); voidsetname(charna[]); voiddelbus(); voidaddbus(intn,char*na); voidntickets(); voidshow();private: intid; inttag; intonshelf; charname[20];};classB_Data{public: B_Data(); ~B_Data(); intaddbus(char*na); voidbusdata(); voidshow(); Bus*search(intbusid);private: inttop; intma*id; Busbus[ma*che];};#endif//*****************************************************************//*sbus.cpp類聲明頭文件
#include"sbus.h"User::User(){id=0;tag=0;for(inti=0;i<ma*jie;i++) gobus[i]=0;}char*User::getname(){returnname;}intUser::gettag(){returntag;}intUser::getid(){returnid;}voidUser::setname(charna[]){strcpy(name,na);}voidUser::delbus(){for(inti=0;i<ma*jie;i++){if(gobus[i]!=0){cout<<"用戶"<<name<<"取消訂單失敗,請檢查操作是否正確!"<<endl; return;}}tag=1;cout<<"用戶刪除成功"<<endl;}voidUser::adduser(intn,char*na){tag=0;id=n;strcpy(name,na);for(inti=0;i<ma*jie;i++)gobus[i]=0;cout<<endl<<"用戶添加成功,用戶編號為:"<<id<<endl;cout<<"請牢記用戶編號,這是你在系統(tǒng)中的登陸賬號!"<<endl;}voidUser::ytickets(intbusid){for(inti=0;i<ma*jie;i++){if(gobus[i]=busid) cout<<"訂票成功!"<<endl;return;}}intUser::ntickets(intbusid){for(inti=0;i<ma*jie;i++){if(gobus[i]==busid){gobus[i]=0; cout<<"訂單取消成功!"<<endl; return1;}}return0;}voidUser::show(){cout<<setw(5)<<id<<setw(10)<<name<<setw(24)<<"訂單號為:";for(inti=0;i<ma*jie;i++)if(gobus[i]!=0) cout<<"["<<gobus[i]<<"]"; cout<<endl;}U_Data::U_Data(){Users;top=0;fstreamfile("user.t*t",ios::in);while(1){file.read((char*)&s,sizeof(s));if(!file)break;top++;use[top]=s;}ma*id=use[top].getid();file.close();}intU_Data::adduser(char*na){top++;ma*id++;use[top].adduser(ma*id,na);return1;}User*U_Data::search(intuserid){for(inti=1;i<=top;i++) if(use[i].getid()==userid&&use[i].gettag()==0) return&(use[i]); returnNULL;}voidU_Data::show(){if(top==0){cout<<endl<<"沒有用戶記錄"<<endl; return;}for(inti=1;i<=top;i++)use[i].show();}voidU_Data::usershow(intuserid){use[userid].show();}voidU_Data::userdata(){charchoice=1;charrname[20];intuserid;User*r;while(choice!='0'){cout<<endl<<"********************用戶管理*********************"<<endl; cout<<"1.增加用戶信息"<<endl<<"2.修改用戶信息"<<endl<<"3.刪除用戶信息"<<endl<<"4.查找用戶信息"<<endl<<"5.顯示所有用戶"<<endl<<"0.退出用戶信息系統(tǒng)"<<endl<<"請選擇您要進展的操作:"; cin>>choice; switch(choice) { case'1': cout<<"輸入用戶**:"; cin>>rname; adduser(rname); break;case'2': cout<<"輸入用戶編號:"; cin>>userid; r=search(userid); if(r==NULL) { cout<<endl<<"不存在編號為:"<<userid<<"的用戶"<<endl; break;} cout<<"輸入新的用戶名:"; cin>>rname; r->setname(rname); break; case'3': cout<<"輸入用戶編號:"; cin>>userid; r=search(userid); if(r==NULL) { cout<<endl<<"不存在編號為:"<<userid<<"的用戶"<<endl; break; } r->delbus(); break; case'4': cout<<"輸入用戶編號:"; cin>>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(){ fstreamfile("user.t*t",ios::out);for(inti=1;i<=top;i++) if(use[i].gettag()==0) file.write((char*)&(use[i]),sizeof(use[i])); file.close();}Bus::Bus(){id=0;tag=1;onshelf=1;}char*Bus::getname(){returnname;}intBus::getid(){returnid;}intBus::gettag(){returntag;}voidBus::setname(charna[]){strcpy(name,na);}voidBus::delbus(){onshelf=1;tag=1;}voidBus::addbus(intn,char*na){tag=0;id=n;strcpy(name,na);onshelf=1;cout<<endl<<"添加車輛成功!車輛編號為:"<<id<<endl;cout<<"請牢記車輛編號!"<<endl;}intBus::ytickets(){if(onshelf==1){onshelf=0;return1;}return0;}voidBus::ntickets(){onshelf=1;}voidBus::show(){ cout<<setw(10)<<id<<setw(20)<<name<<setw(10)<<(onshelf==1""可定":"已發(fā)車")<<endl;}B_Data::B_Data(){Busb;top=0;fstreamfile("bus.t*t",ios::in);while(1){file.read((char*)&b,sizeof(b));if(!file)break;top++;bus[top]=b;}ma*id=bus[top].getid();file.close();}intB_Data::addbus(char*na){top++;ma*id++;bus[top].addbus(ma*id,na);return1;}Bus*B_Data::search(intbusid){ for(inti=1;i<=top;i++) if(bus[i].getid()==busid&&bus[i].gettag()==0) return&(bus[i]); returnNULL;}voidB_Data::busdata(){charchoice='1';charbname[40];intbusid;Bus*b;while(choice!='0'){cout<<endl<<"*********************車輛管理*********************"<<endl; cout<<"1.增加車輛信息"<<endl<<"2.修改車輛信息"<<endl<<"3.刪除車輛信息"<<endl<<"4.查找車輛信息"<<endl<<"5.顯示所有車輛"<<endl<<"0.退出車輛信息系統(tǒng)"<<endl<<"請選擇您要進展的操作:"; cin>>choice; switch(choice) { case'1': cout<<"輸入車輛路線:"; cin>>bname; addbus(bname); break;case'2': cout<<"輸入車輛編號:"; cin>>busid; b=search(busid); if(b==NULL) { cout<<endl<<"不存在編號為:"<<b->getid()<<"的車輛"<<endl; break; } cout<<"輸入新的路線:"; cin>>bname; b->setname(bname); break; case'3': cout<<"輸入車輛編號:"; cin>>busid; b=search(busid); if(b=NULL) { cout<<endl<<"不存在編號為:"<<b->getid()<<"的車輛"<<endl; break; } b->delbus(); break; case'4': cout<<"輸入車輛編號:"; cin>>busid; b=search(busid); if(b=NULL) { cout<<endl<<"不存在編號為:"<<b->getid()<<"的車輛"<<endl; break; } b->show(); break; case'5': show(); break; case'0': break;default: cout<<"輸入有誤,請重新輸入!"<<endl; }}}voidB_Data::show(){if(top==0){cout<<endl<<"沒有車輛記錄"<<endl;return;}for(inti=0;i<=top;i++)if(bus[i].gettag()==0) bus[i].show();}B_Data::~B_Data(){ fstreamfile("bus.t*t",ios::out); for(inti=1;i<=top;i++) if(bus[i].gettag()==0) file.write((char*)&(bus[i]),sizeof(bus[i])); file.close();}//*****************************************************************//*main.cpp主程序文件#include"sbus.h"voiduserlogin(){U_DataUserDB;User*r;B_DataBusDB;Bus*b;chartempname[20];charchoice='1';intbid,rid;while(choice!='0'){cout<<endl<<"************************用戶專區(qū)************************"<<endl;cout<<"1.用戶登錄"<<endl<<"2.用戶注冊"<<endl<<"0.退出"<<endl<<"請選擇:"<<endl;cin>>choice;switch(choice){case'1': cout<<"輸入用戶編號:"; cin>>rid; r=UserDB.search(rid); if(r==NULL) { cout<<"用戶不存在"<<endl; } else choice='0'; break;case'2': cout<<endl<<"輸入用戶**:"<<endl; cin>>tempname; UserDB.adduser(tempname); break; case'0': cout<<"歡送使用!"<<endl; return;default: cout<<"輸入有誤,請重新輸入!"<<endl;}}choice='1';while(choice!='0'){cout<<endl<<"************************訂票專區(qū)************************"<<endl;cout<<"1.訂票"<<endl<<"2.退票"<<endl<<"3.查看訂單"<<"0.退出"<<endl<<"請選擇:"<<endl;cin>>choice;switch(choice){case'1': cout<<"輸入車輛編號:"; cin>>bid; b=BusDB.search(bid); if(b==NULL) { cout<<"車輛不存在"<<endl; break; } if(b->ytickets()==0) { cout<<"車輛"<<b->getname()<<"已發(fā)出"<<endl; break; } r->ytickets(b->getid()); cout<<endl<<"訂票成功"<<endl; break;case'2': cout<<endl<<"輸入想要退票車輛的編號:"<<endl; cin>>bid; b=BusDB.search(bid); if(b==NULL) { cout<<"不存在編號為"<<b->getid()<<"的車輛"<<endl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新生兒科三基理論考試試題及答案
- 臨床醫(yī)學概論模擬習題(附參考答案)
- 道路交通安全教育試題(附答案)
- 福建省漳州市教師職稱考試(理論知識)在線模擬題庫及答案
- 銀行信貸考試題庫及答案
- 水利水電工程師考2025測試真題及答案
- 商法一期末考試題及答案
- 車險理賠考試1000題(含答案)第四季
- 食品營養(yǎng)學題庫及答案
- 急危重癥護理學練習題(答案)
- 柴油維修技術(shù)培訓課件
- DL∕T 5210.6-2019 電力建設(shè)施工質(zhì)量驗收規(guī)程 第6部分:調(diào)整試驗
- 2024年度初會《初級會計實務(wù)》高頻真題匯編(含答案)
- 績效考核和薪酬方案通用模板
- YY/T 0590.1-2018醫(yī)用電氣設(shè)備數(shù)字X射線成像裝置特性第1-1部分:量子探測效率的測定普通攝影用探測器
- GB/T 16927.1-2011高電壓試驗技術(shù)第1部分:一般定義及試驗要求
- 政府會計準則優(yōu)秀課件
- 陣發(fā)性室性心動過速課件
- 無機與分析化學理論教案
- 名詞性從句 講義-英語高考一輪復習語法部分
- T∕ZZB 2722-2022 鏈板式自動排屑裝置
評論
0/150
提交評論