【文章內(nèi)容簡介】
的座位號,在錄入表數(shù)據(jù)的時候座位號之前要標(biāo)上航班號,這樣可以區(qū)別不同的航班座位號,數(shù)據(jù)就不會重復(fù)。 在 設(shè)計中,將“飛行日期”定義為字符型而不是日期型;為“航班號”定義普通索引,這樣便于與“航班信息數(shù)據(jù)表”中的“航班號”建立相應(yīng)關(guān)聯(lián);將“身份證號”定義為關(guān)鍵索引,因為每一乘客的身份證號都是唯一的。 在訂票、售票時,乘客需要指定相關(guān)的座位等級,系統(tǒng)為他分配一個座位,在該座位售出之后,需要為座位標(biāo)上“占用”的標(biāo)記。根據(jù)這些特點,創(chuàng)建“航班座位等級分配與座位占用表”的邏輯結(jié)構(gòu)如下: 表 33 航班座位等級分配與座位占用表的邏輯結(jié)構(gòu) 字段名稱 字段類型 字段大小 小數(shù)位數(shù) 索引 是否可為空 航班號 字符型 16 普通索引 NO 座位號 字符型 19 關(guān)鍵索引 NO 座位等級 字符型 4 NO 票價 貨幣型 默認(rèn) 1 NO 航班號 字 符 型 1 Yes 其中,“占用標(biāo)記”字段允許為空,以為在該座位未售出之前,它無占用標(biāo)記。 4.“密碼表”的邏輯結(jié)構(gòu) “密碼表”的結(jié)構(gòu)比較簡單,主要是用于對用戶名稱與用 戶密碼進(jìn)行記錄和編輯修改,因此定義“密碼表”的結(jié)構(gòu)如下: 表 34 密碼表的邏輯結(jié)構(gòu) 字段名稱 字段類型 字段大小 索引 是否可為空 用戶姓名 字符型 10 普通索引 NO 用戶密碼 字符型 6 關(guān)鍵索引 NO 數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計 ,首先創(chuàng)建“航空管理數(shù)據(jù)庫”用于對系統(tǒng)的整個數(shù)據(jù)表進(jìn)行管理。具體設(shè)計步驟屬于 Visual FoxPro 的基本操作 ,這里 不再詳細(xì)敘述 . “航空管理數(shù)據(jù)庫”中參照邏輯結(jié)構(gòu)創(chuàng)建“航班信息數(shù)據(jù)表”、“乘客信息數(shù)據(jù)表”、“航班座位等級分配與座位占用表”和“密碼表”。具體設(shè)計步驟屬于 Visual FoxPro 的基本操作 ,不再詳細(xì)敘述 . 本章小結(jié) 本章主要說明了航班管 理系統(tǒng)數(shù)據(jù)庫的設(shè)計以及實現(xiàn)各個階段的具體 第四章 系統(tǒng)設(shè)計 系統(tǒng)設(shè)計流程 系統(tǒng)的主要設(shè)計流程如下圖 41 所示: 圖 41 系統(tǒng)設(shè)計流程圖 其中需求分析在前面第二章已經(jīng)詳細(xì)介紹。 概要設(shè)計 概要設(shè)計部分主要是對 航空管理 系統(tǒng)有一個大概的設(shè)計介紹,主要包括如下內(nèi)容:開發(fā)與設(shè)計的整體思想、系統(tǒng)的 組織 結(jié)構(gòu)、各個模塊 功能等。這在第二章有詳細(xì)介紹,這里不再贅述。 系統(tǒng)詳細(xì)設(shè)計 系統(tǒng)的流程主要分為用戶登錄操作和 業(yè)務(wù)操作兩部分。用戶登錄操作主要是對用戶的帳號(包括用戶名和密碼)進(jìn)行身份驗證,通過驗證操作界面。未通過的給出錯誤提示。 系統(tǒng)的流程圖如下 42 所示 : 需求分析 概要設(shè)計 詳細(xì)設(shè)計 編寫代碼 系統(tǒng)測試 圖 42 系統(tǒng)流程圖 按照以上分析,首先創(chuàng)建項目文件,建立系統(tǒng)數(shù)據(jù)庫,并建立數(shù)據(jù)表,設(shè)計表結(jié)構(gòu)錄入數(shù)據(jù);然后加入各個表單以及數(shù)據(jù),并添加各個表單以及表單上控件的實現(xiàn)代碼,具體代碼見附錄 1 和附錄 2;完成后運行應(yīng)用程序,更正所有可能的錯誤之后進(jìn)行連編。 系統(tǒng)測試 系 統(tǒng)完成之后曾在不同機(jī)器上測試 ,運行正常 .因條件限制 ,還沒有在實際中運用 . 本章小結(jié) 本章在前面幾章的基礎(chǔ)上對系統(tǒng)的實現(xiàn)過程作了進(jìn)一步說明。 重新登錄 1 可以對管理系統(tǒng)中的所有信息,進(jìn)行添加、修改、刪除和查詢 2 管理所有用戶帳號 3 系統(tǒng)數(shù)據(jù)備份 3 系統(tǒng)數(shù)據(jù) 備份 每次驗證 用戶權(quán)限 啟動程序 用戶登錄 驗證失敗 總結(jié) 本系統(tǒng)設(shè)計思路清晰,針對性強(qiáng),界面友好,易于操作,功能實用而細(xì)致。特色之處在于系統(tǒng)可以實現(xiàn)數(shù)據(jù)自動備份。系統(tǒng)中凡是比較重要的功能都要首先進(jìn)行權(quán)限認(rèn)證,比較嚴(yán)密,比如退票操作,比如數(shù)據(jù)清理操作等。 本系統(tǒng)還有許多不足之處,比如退票環(huán)節(jié),還可以進(jìn)一步細(xì)化,與辦理退票手續(xù)想結(jié)合,以提高效率,增強(qiáng)系統(tǒng)實用性。由于時間以及水平限制,沒有實現(xiàn)。從另一方面看,系統(tǒng) 的可擴(kuò)展性較強(qiáng)。另一個不足之處在于登陸之后子功能(比如退票)在進(jìn)行權(quán)限認(rèn)證時要求輸入的密碼只要是密碼表里的任何一個就行,可以考慮將之改為驗證與開始登陸系統(tǒng)時的一致,這樣會更嚴(yán)密一點。 附錄 1 主程序代碼 HIDE WINDOW SCREEN set path to e:\vf 課程設(shè)計案例 \航班售票管理系統(tǒng) \FORMS\ DO FORM 軟件封面設(shè)計 .scx set path to e:\vf 課程設(shè)計案例 \航班售票管理系統(tǒng) \PROGS\ DO 系統(tǒng)環(huán)境參數(shù)設(shè)置 .PRG read events close all quit SET SYSMENU OFF SET SYSMENU TO SET TALK OFF SET NOTIFY OFF SET CLOCK STATUS SET PALETTE OFF SET BELL ON SET SAFETY OFF SET ESCAPE ON SET KEYCOMP TO WINDOWS SET CARRY ON SET CONFIRM ON SET EXACT ON SET NEAR ON SET ANSI OFF SET LOCK ON SET EXCLUSIVE OFF SET MULTILOCKS ON SET DELETED ON SET OPTIMIZE ON SET REFRESH TO 0,5 SET ODOMETER TO 100 SET RESOURCE ON SET CENTURY on SET CURRENCY LEFT SET CURRENCY TO 39。¥ 39。 SET HOURS TO 12 SET FDOW TO 1 SET FWEEK TO 1 SET MARK TO 39。.39。 SET SEPARATOR TO 39。,39。 SET POINT TO 39。.39。 附錄 2 各表單代碼 (1)系統(tǒng)登錄 .click release a,b,c,d,e,f,g,h set path to e:\vf 課程設(shè)計案例 \航班售票管理系統(tǒng) \FORMS do form 權(quán)限認(rèn)證表單 .scx release thisform (2)退出 .click *quit (1)確認(rèn)權(quán)限 .click locate all for alltrim(密碼表 .用戶姓名 )==alltrim() if found() if alltrim()==alltrim(密碼表 .用戶密碼 ) do form e:\vf 課程設(shè)計案例 \航班售票管理系統(tǒng) \FORMS\系統(tǒng)主表單 .SCX else =+1 if =3 messagebox(口令不正確! +chr(13)+對不起 ,你無權(quán)使用! ,48,登錄信息 ) release thisform else messagebox(口令不正確!請重新輸入! ,48,登錄信息 ) = endif endif endif (2)返回 .click 統(tǒng)主表單 (1)乘客訂票購票表單 .click set path to e:\vf 課程設(shè)計案例 \航班售票管理系統(tǒng) \FORMS do form 乘客訂票購票表單 .SCX (2)乘客查詢與退票表單 .click set path to e:\vf 課程設(shè)計案例 \航班售票管理系統(tǒng) \FORMS do form 乘客查詢與退票表單 .SCX (3)飛行時刻查詢表單 .click set path to e:\vf 課程設(shè)計案例 \航班售票管理系統(tǒng) \FORMS do form 飛行時刻查詢表單 .scx (4)系統(tǒng)維護(hù)選擇表單 .click set path to e。\vf 課程設(shè)計案例 \航班售票管理系統(tǒng) \FORMS do form 系統(tǒng)維護(hù)選擇表單 .SCX (5)航班售票收入統(tǒng)計 .click set path to e。\vf 課程設(shè)計案例 \航班售票管理系統(tǒng) \FORMS do form 航班售票收入統(tǒng)計表單 .SCX (6)結(jié)束操作 .click messagebox(真的要退出嗎 ?,0+4+0,) t=messagebox(真的要退出嗎 ?,0+4+0,) if t=6 quit endif . (1)前一航班 .click sele 航班信息數(shù)據(jù)表 if reo()1 skip 1 else messagebox(已經(jīng)為第一個航班號記錄 !) endif (2)下一航班 .click sele 航班信息數(shù)據(jù)表 if not eof() skip else messagebox(已經(jīng)是最后一個航班的記錄 !) endif (3)新乘客訂票 .click sele 乘 客信息數(shù)據(jù)表 if =新乘客訂票 =保存新乘客記錄 =str(reo()) append blank else =新乘客訂票 =修改訂票記錄 endif sele 航班座位等級分配與座位占用表 locate all for alltrim(航班座位等級分配與座位占用表 .座號 )==alltrim() =* (4).修改訂票記錄 .click if =修改訂票記錄 =取消修改 =保存修改 =str(reo()) else =修改訂票記錄 =新乘客訂票 tablerevert() endif go val() (5).備份 數(shù)據(jù) .click sele 乘客信息數(shù)據(jù)表 copy to e:\vf 課程設(shè)計案例 \航班售票管理系統(tǒng) \DATA\temp (1)確認(rèn)密碼 .click sele 密碼表 locate all for alltrim(密碼表 .用戶密碼 )==alltrim() if found() =.f. =.t. else messagebox(對不起 ,你不是合法用戶 ,不能退票 ) endif (2)查找乘客 .click locate all for alltrim(乘客信息數(shù)據(jù)表 .身份證號 )==alltrim() if found() y=reo() go y messagebox(乘客已經(jīng)找到 ,提示乘客先辦理完相關(guān)手續(xù) ,否則不能退票 !) else messagebox(未找到該乘客 ,請確認(rèn) !) endif 確認(rèn)退票 .click locate all for alltrim(乘客信息數(shù)據(jù)表 .身份證號 )==alltrim() if found() if messagebox(當(dāng)前乘客確實要退票嗎 ?!,32+4+256,開戶確認(rèn) )=6 y=reo() go y sele 航班座位等級分配與座位占用表 locate all for alltrim(航班座位等級分配與座位占用表 .座位號 )==alltrim() x=reo() go x = release x sele 乘客信息數(shù)據(jù)表 = delete next 1 pack = release y