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