軟件綜合課程設(shè)計車輛調(diào)度管理軟件設(shè)計_第1頁
軟件綜合課程設(shè)計車輛調(diào)度管理軟件設(shè)計_第2頁
軟件綜合課程設(shè)計車輛調(diào)度管理軟件設(shè)計_第3頁
軟件綜合課程設(shè)計車輛調(diào)度管理軟件設(shè)計_第4頁
軟件綜合課程設(shè)計車輛調(diào)度管理軟件設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、沈陽航空航天大學 課課 程程 設(shè)設(shè) 計計 報報 告告 課程設(shè)計名稱:軟件綜合課程設(shè)計軟件綜合課程設(shè)計 課程設(shè)計題目:車輛調(diào)度管理軟件設(shè)計車輛調(diào)度管理軟件設(shè)計 院(系):計算機學院 專 業(yè):計算機科學與技術(shù) 班 級: 學 號: 姓 名: 指導教師: 完成日期:2011年9月9日 目目 錄錄 第第 1 章章 需求分析需求分析.1 1.1 問題內(nèi)容與要求 .1 1.2 問題分析與假設(shè) .1 第第 2 章章 概要概要設(shè)設(shè)計計.2 2.1 數(shù)據(jù)庫邏輯模型設(shè)計 .2 2.1.1 數(shù)據(jù)庫 er 圖.2 2.1.2 數(shù)據(jù)庫表格設(shè)計.3 2.2 系統(tǒng)功能模塊 .4 第第 3 章章 詳詳細細設(shè)計設(shè)計.5 3.1

2、客戶功能模塊 .5 3.2 管理人員功能模塊 .6 3.2.1 車輛信息更新.6 3.2.2 車輛信息的添加與刪除.7 3.2.3 司機信息的添加與刪除.8 第第 4 章章 調(diào)試使用調(diào)試使用.10 4.1 客戶功能 .10 4.2 管理員功能 .11 4.2.1 車輛及司機信息的增刪.11 4.2.2 車輛信息的修改.12 參考文獻參考文獻.14 附附 錄(程序清單)錄(程序清單).15 第 1 章 需求分析 1.1 問題內(nèi)容與要求問題內(nèi)容與要求 設(shè)計一個簡單的車輛調(diào)度管理程序,可實現(xiàn)對不同的車輛、不同要求、不同 時間的調(diào)度算法。 1) 建立車輛信息表; 2) 實現(xiàn)對車輛信息的插入、修改、查詢

3、、刪除功能; 3) 界面要優(yōu)化,直觀、大方、美觀; 4) 實現(xiàn)針對不同任務(wù)、不同時間的調(diào)度分配算法; 5) 獨立完成系統(tǒng)的設(shè)計、編碼和調(diào)試; 6) 按照課程設(shè)計規(guī)范書寫課程設(shè)計報告。 1.2 問題分析與假設(shè)問題分析與假設(shè) 車輛調(diào)度就是根據(jù)客戶的需求,合理地派遣出相應(yīng)的車輛。假設(shè)每派遣出一 輛車,需要記錄下該車的特有信息以及使用該車的客戶信息。一輛車在被使用后, 不能在重疊的時間段被其他客戶使用。而客戶在選擇車輛時,除了能夠了解車輛 本身的屬性外,也有權(quán)了解駕駛該車輛駕駛員的信息,比如駕駛員的性別、駕齡、 年齡。而作為車輛調(diào)度員,應(yīng)該做到對車輛信息的查看、增刪、及時更新等操作。 由于每一輛車都有

4、一個專屬司機,所以每新增一輛,都必須提供一個已存在的司 機信息,如果添加了一個錯誤的司機,系統(tǒng)應(yīng)該能夠提供提示現(xiàn)提供一個正確的 司機信息。同理,如果想要注銷掉某個司機的信息,首先要取消掉他與配對車輛 的關(guān)系,然后才能進行注銷。 分析了客戶與車輛、司機與車輛的關(guān)系,有利于我們建立合理的表格,并且 在設(shè)計程序時考慮到更多切合實際的應(yīng)用。 本次課設(shè)所需要的表格將在 sql 2000 中建立。使用 microsoft visual c+編 寫代碼、進行對數(shù)據(jù)庫的讀寫等操作。odbc 將作為搭載數(shù)據(jù)庫與 vc+的平臺。 第 2 章 概要設(shè)計 2.1 數(shù)據(jù)庫邏輯模型設(shè)計數(shù)據(jù)庫邏輯模型設(shè)計 2.1.1 數(shù)據(jù)

5、庫數(shù)據(jù)庫 e er r 圖圖 汽車調(diào)度管理系統(tǒng)的 er 圖如圖 2.1 所示。 圖圖 2.12.1 車輛調(diào)度管理數(shù)據(jù)庫車輛調(diào)度管理數(shù)據(jù)庫 e er r 圖圖 車輛實體與司機、客戶這兩個實體之間,分別通過駕駛關(guān)系和租用關(guān)系聯(lián)系 在一起。為便于管理,一輛汽車只配備一名司機,一名司機也只能駕駛一輛汽車。 1 1 車輛車牌號 車型 豪華程度 車輛載重 狀態(tài) 最早可用時間 駕駛 司機 司機編號 司機姓名 性別 駕齡年齡 租用 客戶 客戶電話 客戶姓名 需求車型 需求程度 需求載重 租用車輛 租用時間 歸還時間 m n 所以這兩個實體之間是 1:n 的關(guān)系。而一輛汽車可以出租給不同的客戶,而一 個顧客又可

6、以租用多輛汽車,所以兩個實體之間的關(guān)系是 m:n 的關(guān)系。 e-r 圖表示的關(guān)系模式為: 車輛(車牌號,車型,司機編號,載重,豪華程度,狀態(tài),最早可用時間) ; 司機(司機編號,司機姓名,性別,駕齡,年齡) ; 客戶(客戶電話,客戶姓名,需求車型,需求程度,需求載重,租用時間, 歸還時間,租用車輛) 。 “車輛”實體的主碼是“車牌號” 。屬性“司機編號”是來自于實體“司機” , 的外碼,參照其屬性“司機編號” 。 “司機”實體的主碼是“司機編號” 。 “客戶”實體的主碼是“客戶電話” 。屬性“租用車輛”是來自于實體“車 輛”外碼,參照其屬性“車牌號” 。 2.1.2 數(shù)據(jù)庫表格設(shè)計數(shù)據(jù)庫表格設(shè)

7、計 1車輛(vehicles) 表表 2.12.1 車輛信息表車輛信息表 列名列名數(shù)據(jù)類型數(shù)據(jù)類型長度長度是否可以為空是否可以為空說明說明 vnochar20 否車牌號 vtypechar10 是車型 vdnochar20 否司機編號 vloadint 不定是車輛載重 vgrandchar10 是豪華程度 vstatuschar10 是狀態(tài) vbacktimeint 不定是最早可用時間 2司機(drivers) 表表 2.22.2 司機信息表司機信息表 列名列名數(shù)據(jù)類型數(shù)據(jù)類型長度長度是否可以為空是否可以為空說明說明 dnochar20 否司機編號 dnamechar10 是司機姓名 dsex

8、char10 是性別 ddegreeint 不定是駕齡 dageint 不定是年齡 3客戶(orders) 表表 2.32.3 客戶信息表客戶信息表 列名列名數(shù)據(jù)類型數(shù)據(jù)類型長度長度是否可以為空是否可以為空說明說明 otelchar20 否客戶電話 onamechar10 是客戶姓名 otypechar10 是需求車型 ograndchar10 是需求程度 oloadint 不定是需求載重 ohiertimeint 不定是租用時間 obacktimeint 不定是歸還時間 ovnochar20 否租用車輛 2.2 系統(tǒng)功能模塊系統(tǒng)功能模塊 本系統(tǒng)主要功能和層次結(jié)構(gòu)如圖 2.2 所示。 本系統(tǒng)有

9、七個主要功能。其中客戶的使用到的功能更有用戶下單、車輛信息 查詢兩個功能,而管理人員使用到的功能有車輛信息更改、新增車輛、新增司機、 車輛刪除、司機刪除五個功能。 圖圖 2.22.2 系統(tǒng)主要功能和層次結(jié)構(gòu)系統(tǒng)主要功能和層次結(jié)構(gòu) 車輛調(diào)度管理系統(tǒng)功能模塊 客戶下單 車輛信息查詢 車輛信息更改 新增車輛 新增司機 刪除車輛 刪除司機 第 3 章 詳細設(shè)計 3.1 客戶功能模塊客戶功能模塊 顧客類模塊是為了實現(xiàn)顧客下訂單和查詢車輛信息的需求??蛻艨梢酝ㄟ^它, 查看全部車輛或指定車輛的信息,或是根據(jù)自己的需求篩選車輛。并且,客戶還 可以根據(jù)指定車輛的車牌號,查看該輛車的司機信息。 客戶在輸入了客戶電

10、話、姓名、對車輛的需求,以及時間等相關(guān)信息后,可 以先使用查詢功能查看滿足條件的車輛,然后選定某輛車查看其司機信息,全部 信息都滿意后,再通過了系統(tǒng)對客戶的租用時間與該車最早可用時間的核對,就 可以下單,已取得該車的使用權(quán)。 客戶功能模塊流程圖如圖 3.1 所示。 y n 開始 輸入客戶數(shù)據(jù) 顯示滿足客戶需求的車輛 輸入指定車輛的車牌 查看司機信息 最早可用時間大于租用時間 成功下單 結(jié)束 圖圖 3.13.1 客戶功能模塊流程圖客戶功能模塊流程圖 3.2 管理人員功能模塊管理人員功能模塊 該模塊主要實現(xiàn)對車輛與司機信息的增刪查改。 3.2.1 車輛信息更新車輛信息更新 通過該功能,管理人員可以

11、改變指定車輛的配置司機,或是將已歸還的汽車 的訂單取消,使該汽車可以投入下一輪使用。 在改變車輛的配置司機時,輸入車牌號和新的司機編號,就可以將指定的車 輛的司機改變。注意,輸入的新司機編號只能是已存在的,并且是沒有被配置到 其他車輛的司機的編號,否則系統(tǒng)會提示出錯。 改變車輛配置司機的流程圖如圖 3.2 所示。 圖圖 3.23.2 改變車輛配置司機的流程圖改變車輛配置司機的流程圖 在取消已歸還汽車的的訂單時,輸入車票號和歸還時間,就可以將對應(yīng)的訂 單取消,若該車輛已其他沒有訂單,將車輛狀態(tài)由“busy”變?yōu)椤癴ree” ,表示 目前空閑,否則車輛狀態(tài)保持“busy” ,直至該車輛無任何訂單。

12、 取消已歸還汽車訂單的流程圖如圖 3.3 所示。 n 開始 輸入需要更改的信息 該司機編號是否合法 y 更改信息 結(jié)束 圖圖 3.33.3 取消已歸還汽車訂單的流程圖取消已歸還汽車訂單的流程圖 3.2.2 車輛信息的添加與刪除車輛信息的添加與刪除 該功能顯而易見,主要是完成對車輛的新增或刪除。 輸入車牌號、車型、司機編號、車輛載重、豪華程度、初始車輛狀態(tài),而初 始最早可用時間默認為 0。就可以添加一輛新車。需要注意的是,輸入的司機編 號只能是已存在的,并且是沒有被配置到其他車輛的司機的編號,否則系統(tǒng)會提 示出錯。 若只輸入車牌號,則表示需要刪除某一個已經(jīng)存在的車輛信息。需要注意的 是,輸入的車

13、牌號必須是存在的已有的車輛的車牌號,否則系統(tǒng)提示出錯。 車輛信息的添加與刪除功能的流程圖如圖 3.4 所示。 y 開始 輸入訂單信息 換車時間小于該車最早可用時間 取消對應(yīng)訂單 車輛狀態(tài)不改變 結(jié)束 取消對應(yīng)訂單 車輛狀態(tài)變?yōu)?“free” n 圖圖 3.43.4 車輛信息的添加與刪除功能的流程圖車輛信息的添加與刪除功能的流程圖 3.2.3 司機信息的添加與刪除司機信息的添加與刪除 歸還功能與車輛信息的添加與刪除類似。 輸入司機編號、司機姓名、性別、駕齡、年齡等信息,就可以添加一名新司 機。需要注意的是,輸入的新司機編號不能與已有的司機編號重復(fù),否則系統(tǒng)提 示出錯。 若只輸入司機編號,則表明需

14、要刪除某一個司機。需要注意的是,刪除的這 一個司機不能是配置到車輛上的,否則系統(tǒng)提示出錯。 司機信息的添加與刪除功能流程圖如圖 3.5 所示。 y y n n n 開始 輸入車輛信息 是否只有車牌號信息 司機編號是否合法 初始化最早可用時間 寫入新車輛信息 結(jié)束 車牌號存在 刪除車輛信息 輸入司機編號 y 圖圖 3.53.5 司機信息的添加與刪除功能流程圖司機信息的添加與刪除功能流程圖 n n 開始 輸入司機信息 是否只有司機信號 添加司機信息者 司機已配置 刪除司機 禁止刪除 結(jié)束 y y 第 4 章 調(diào)試使用 4.1 客戶功能客戶功能 客戶下單和查詢車輛信息界面如圖 4.1 所示。 圖圖

15、4.14.1 客戶下單和查詢車輛信息界面客戶下單和查詢車輛信息界面 輸入合理信息后,通過鼠標點擊按鈕,就可以實現(xiàn)不同的功能。比如依次輸 入: 、 “vanpersy” 、 “audi” 、 “a+” 、 “3” 、 “1530” 、 “2311”后, 點擊“根據(jù)客戶需要顯示車輛”出現(xiàn)匹配車輛如圖 4.2 所示。 然后選中其中的車牌為“a1256”的車型,點擊“查看司機信息” ,出現(xiàn) “0706” 、 “ronaldo” 、 “male” 、 “6” 、 “30”字樣。分別代表司機編號、司機姓名、 性別、駕齡、年齡。信息如圖 4.3 所示。 客戶如果滿意,點擊“下單”即

16、可成功下單。 圖圖 4.24.2 匹配客戶匹配客戶 vanpersyvanpersy 需求的車輛需求的車輛 圖圖 4.34.3 車輛車輛 a1256a1256 的司機信息的司機信息 4.2 管理員功能管理員功能 4.2.1 車輛及司機信息的增刪車輛及司機信息的增刪 若需要在車輛信息表 vehicles 中加入一輛車型為“l(fā)ambor” 、車牌號為 “a1122” 、駕駛司機為“0755”豪華程度為“aa+” 、載重為 2 人的新車,需要 在車輛信息更新界面輸入信息。如圖 4.4 所示。 圖圖 4.44.4 新增車輛信息新增車輛信息 但是點擊添加后,會提示“沒有該司機!請先輸入司機信息” 。原因

17、是編號 為 0755 的司機信息還沒有存入數(shù)據(jù)庫。解決辦法就是在司機信息更新界面輸入 編號為 0755 的司機的相關(guān)信息。如圖 4.5 所示。 圖圖 4.54.5 新增司機信息新增司機信息 點擊“添加” 。添加了司機信息后,重新在車輛信息更新界面輸入司機編號, 就可以添加所需要的新車輛了。 刪除車輛信息與司機信息時,只需要輸入對應(yīng)的車牌號或是司機編號,點擊 刪除即可。 4.2.2 車輛信息的修改車輛信息的修改 若有車輛歸還,輸入歸還車輛的車牌號,以及該車輛的返回時間,就可以取 消對應(yīng)的訂單。如上面被租用的車輛 a1256,車輛返回后,在車輛信息更新界面 輸入信息“a1256” 、 “2311”

18、 ,點擊“修改” ,就完成了訂單的取消。如圖 4.6 所 示。 圖圖 4.64.6 取消車輛取消車輛 a1256a1256 的訂單的訂單 若是修改車輛的的配置司機,在司機編號處輸入合法的司機編號即可。 參考文獻 1 高富平,張楚 . 電子商務(wù)法m. 北京:北京大學出版社,2002 2 沈煒,徐慧 . vc+數(shù)據(jù)庫編程技術(shù)與實例 m . 北京:人民郵電出版社, 2005 3 楊章偉等 . 21 天學通 visual c+ m. . 北京:電子工業(yè)出版社,2009 4 王珊,薩師煊 . 數(shù)據(jù)庫系統(tǒng)概論m. 北京:高等教育出版社,2006 5 崔瑩,王華軍 . vc+數(shù)據(jù)庫編程 100 例m. 北京

19、:中國鐵道出版社,2007 附 錄(程序清單) #include stdafx.h #include ylz.h #include ylzset.h #include ylzdoc.h #include ylzview.h #include driverset.h #include ve1set.h #ifdef _debug #define new debug_new #undef this_file static char this_file = _file_; #endif cylzview:cylzview() : crecordview(cylzview:idd) /afx_data

20、_init(cylzview) m_pset = null; m_tel = _t(); m_name = _t(); m_type = _t(); m_grand = _t(); m_load = 0; m_upvno = _t(); m_upvdno = _t(); m_upvgrand = _t(); m_upvstatus = _t(); m_upvtype = _t(); m_upvload = 0; m_dno = _t(); m_dname = _t(); m_dsex = _t(); m_ddegree = 0; m_dage = 0; m_vno = _t(); m_htim

21、e = 0; m_btime = 0; m_upbtime = 0; /afx_data_init void cylzview:dodataexchange(cdataexchange* pdx) crecordview:dodataexchange(pdx); /afx_data_map(cylzview) ddx_control(pdx, idc_list3, m_listd); ddx_control(pdx, idc_list1, m_list1); ddx_text(pdx, idc_edit1, m_tel); ddx_text(pdx, idc_edit2, m_name); d

22、dx_text(pdx, idc_edit3, m_type); ddx_text(pdx, idc_edit4, m_grand); ddx_text(pdx, idc_edit5, m_load); ddx_text(pdx, idc_edit9, m_upvno); ddx_text(pdx, idc_edit11, m_upvdno); ddx_text(pdx, idc_edit13, m_upvgrand); ddx_text(pdx, idc_edit14, m_upvstatus); ddx_text(pdx, idc_edit10, m_upvtype); ddx_text(

23、pdx, idc_edit12, m_upvload); ddx_text(pdx, idc_edit6, m_dno); ddx_text(pdx, idc_edit8, m_dname); ddx_text(pdx, idc_edit15, m_dsex); ddx_text(pdx, idc_edit16, m_ddegree); ddx_text(pdx, idc_edit17, m_dage); ddx_text(pdx, idc_edit7, m_vno); ddx_text(pdx, idc_edit18, m_htime); ddx_text(pdx, idc_edit19,

24、m_btime); ddx_text(pdx, idc_edit20, m_upbtime); /afx_data_map bool cylzview:precreatewindow(createstruct void cylzview:oninitialupdate() m_pset = crecordview:oninitialupdate(); getparentframe()-recalclayout(); resizeparenttofit(); bool cylzview:onprepareprinting(cprintinfo* pinfo) return dopreparepr

25、inting(pinfo); #ifdef _debug void cylzview:assertvalid() const crecordview:assertvalid(); void cylzview:dump(cdumpcontext cylzdoc* cylzview:getdocument() / non-debug version is inline assert(m_pdocument-iskindof(runtime_class(cylzdoc); return (cylzdoc*)m_pdocument; #endif /_debug crecordset* cylzvie

26、w:ongetrecordset() return m_pset; / cylzview message handlers void cylzview:onbutton1() cveset cc; cstring pp( ); /int nitem=-1; cstring str0; updatedata(true); for(int j=0;jisopen() m_pset-close(); if(cc.isopen() cc.close(); cc.open(); m_vno=m_vno+pp; m_pset-open(); m_pset-addnew(); m_pset-m_otel=m

27、_tel; m_pset-m_oname=m_name; m_pset-m_otype=m_type; m_pset-m_ogrand=m_grand; m_pset-m_oload=m_load; m_pset-m_ovno=m_vno; m_pset-m_ohiretime=m_htime; m_pset-m_obacktime=m_btime; while(cc.iseof()!=1) if(cc.m_vno=m_vno) updatedata(true); cc.edit(); cc.m_vstatus=busy; cc.m_vbacktime=m_btime; cc.update()

28、; cc.movenext(); cc.requery(); updatedata(false); elsecc.movenext(); m_pset-update(); m_pset-movelast(); m_pset-requery(); messagebox(已下單!已下單!); m_tel=m_name=m_type=m_grand=; m_load=0; m_htime=m_btime=0; m_pset-close(); cc.close(); m_vno=; for(int i=0;i10;i+) m_list1.deletestring(0); m_listd.deletes

29、tring(0); updatedata(false); void cylzview:onbutton2() cveset vs; cstring str=; updatedata(true); for(int i=0;i=%d and vgarnd=%s,m_type,m_load,m_grand); vs.open(); while(vs.iseof()!=1) str.format(%4s %4s %4s %d %18s %5s %7d,vs.m_vno,vs.m_vtype,vs.m_vdno,vs.m_vload,vs.m_vgarnd,vs.m_vstatus,v s.m_vbac

30、ktime); m_list1.addstring(str); vs.movenext(); updatedata(false); vs.close(); void cylzview:onbutton3() cveset s1; cdriverset s2; cstring str1=; updatedata(true); for(int i=0;iisopen() m_pset-close(); if(m_upbtime!=0) alv.m_strfilter.format(vno=%s,m_upvno); alv.open(); if(m_upbtime=alv.m_vbacktime)

31、alv.edit(); alv.m_vstatus=free; alv.m_vbacktime=0; alv.update(); alv.movenext(); alv.requery(); m_pset-m_strfilter.format(ovno=%s and obacktime=%d,m_upvno,m_upbtime); m_pset-open(); crecordsetstatus status; m_pset-getstatus(status); m_pset-delete(); if(status.m_lcurrentrecord=0) m_pset-movenext(); e

32、lse m_pset-movefirst(); messagebox(訂單已刪除,該車輛已返回,可以使用訂單已刪除,該車輛已返回,可以使用!); m_upvstatus=; m_upvno=; m_upbtime=0; updatedata(false); if(m_upvdno!=) ckd1.open(); ckd1.movefirst(); updatedata(true); m_upvdno=m_upvdno+sp2; while(ckd1.iseof()!=1) if(ckd1.m_dno=m_upvdno) b+; alv.m_strfilter.format(vno=%s,m_u

33、pvno); alv.open(); alv.edit(); alv.m_vdno=m_upvdno; alv.update(); alv.movelast(); alv.requery(); messagebox(修改成功修改成功!); m_upvdno=m_upvno=; updatedata(false); ckd1.movenext(); else ckd1.movenext(); if(b=0) alv.open(); messagebox(無此司機無此司機!請先輸入司機信息請先輸入司機信息!); m_upvdno=; updatedata(false); alv.close(); m_pset-close(); void cylzview:onbutton9() cveset vs1; cstring strc=; for(int i=0;i10;i+) m_list1.deletestring(0

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論