機(jī)票預(yù)訂系統(tǒng) 課程設(shè)計(jì) 數(shù)據(jù)庫(kù)
《機(jī)票預(yù)訂系統(tǒng) 課程設(shè)計(jì) 數(shù)據(jù)庫(kù)》由會(huì)員分享,可在線閱讀,更多相關(guān)《機(jī)票預(yù)訂系統(tǒng) 課程設(shè)計(jì) 數(shù)據(jù)庫(kù)(30頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 1概述 應(yīng)用對(duì)數(shù)據(jù)庫(kù)技術(shù)及應(yīng)用的理論學(xué)習(xí),通過上機(jī)實(shí)踐的方式將理論知識(shí)與實(shí)踐更好的結(jié)合起來,鞏固所學(xué)知識(shí)。 實(shí)踐和鞏固在課堂教學(xué)中學(xué)習(xí)的關(guān)于數(shù)據(jù)庫(kù)的有關(guān)知識(shí),熟練掌握對(duì)于給定實(shí)訓(xùn)任務(wù)的數(shù)據(jù)庫(kù)的創(chuàng)建、基本操作、程序系統(tǒng)的建立和調(diào)試以及系統(tǒng)評(píng)價(jià)。 實(shí)踐和鞏固在課堂教學(xué)中學(xué)習(xí)的關(guān)于關(guān)系數(shù)據(jù)庫(kù)原理的有關(guān)知識(shí)和數(shù)據(jù)庫(kù)系統(tǒng)的建立方法,熟練掌握對(duì)于給定實(shí)際問題,為了建立一個(gè)關(guān)系數(shù)據(jù)庫(kù)信息管理系統(tǒng),必須得經(jīng)過系統(tǒng)調(diào)研、需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)、系統(tǒng)調(diào)試、維護(hù)以及系統(tǒng)評(píng)價(jià)的一般過程,為將來在學(xué)習(xí)工作中的應(yīng)用打下基礎(chǔ)。 1.1課程實(shí)訓(xùn)目的與要求 課程實(shí)訓(xùn)的目的是:本次課程實(shí)訓(xùn)的主要
2、任務(wù)是運(yùn)用在《數(shù)據(jù)庫(kù)原理及應(yīng)用》課程中學(xué)到的理論知識(shí)來指導(dǎo)實(shí)踐,了解數(shù)據(jù)庫(kù)設(shè)計(jì)過程及其實(shí)現(xiàn)方法,學(xué)會(huì)用數(shù)據(jù)庫(kù)建模的方法解決實(shí)際問題。掌握數(shù)據(jù)庫(kù)原理、范式理論、規(guī)范化等相關(guān)知識(shí),掌握數(shù)據(jù)庫(kù)分析設(shè)計(jì)的具體步驟與基本方法,掌握SQL語言的基本語法和基本內(nèi)容,并能運(yùn)用SQL Server 2005實(shí)現(xiàn)設(shè)計(jì)數(shù)據(jù)庫(kù),掌握SQL Server 2005數(shù)據(jù)庫(kù)、表、視圖、約束、索引、存儲(chǔ)過程、觸發(fā)器的使用,利用一種前臺(tái)開發(fā)工具實(shí)現(xiàn)數(shù)據(jù)庫(kù)管理系統(tǒng)的開發(fā),實(shí)現(xiàn)特定的業(yè)務(wù)功能。通過綜合課程實(shí)訓(xùn),提高實(shí)踐動(dòng)手技能,培養(yǎng)獨(dú)立分析分析問題和解決問題的能力。 課程實(shí)訓(xùn)的要求:本次課程實(shí)訓(xùn)的選題比較靈活,可以是自主選題,也
3、可以自己選擇比較感興趣的題目,重點(diǎn)是完成數(shù)據(jù)庫(kù)的分析、設(shè)計(jì)與實(shí)現(xiàn),題目要符合《數(shù)據(jù)庫(kù)原理及應(yīng)用》的要求,并且具備一定的難度和深度;除此以外,可以從備選題目之外選擇一個(gè)題目完成。 1.2機(jī)票預(yù)訂系統(tǒng) 在所給的實(shí)訓(xùn)題目中,我選擇的是機(jī)票預(yù)訂系統(tǒng)的設(shè)計(jì)。 1.2.1系統(tǒng)功能的基本要求 每個(gè)航班信息的輸入; 每個(gè)航班的坐位信息的輸入; 當(dāng)旅客進(jìn)行機(jī)票預(yù)定時(shí),輸入旅客基本信息,系統(tǒng)為旅客安排航班,打印取票通知和帳單; 旅客在飛機(jī)起飛前一天憑取票通知交款取票; 旅客能夠退訂機(jī)票; 能夠查詢每個(gè)航班的預(yù)定情況、計(jì)算航班的滿座率。 1.2.2 數(shù)據(jù)庫(kù)要求 在數(shù)據(jù)庫(kù)中至少應(yīng)該包含下列數(shù)
4、據(jù)表: 航班信息表; 航班坐位情況表; 旅客訂票信息表; 取票通知表; 帳單。 2需求分析 2.1背景分析 隨著社會(huì)發(fā)展的不斷進(jìn)步,民航事業(yè)的壯大,人們消費(fèi)水平的提高,乘坐民航的消費(fèi)者也越來越多,旅游也逐漸成為普通老百姓的生活組成部分,飛機(jī)票預(yù)定查詢系統(tǒng)在各機(jī)票預(yù)定網(wǎng)點(diǎn)中的作用也越顯重要。目前,我國(guó)一些旅行社和酒店的機(jī)票預(yù)定還停留在人工處理階段,這已經(jīng)嚴(yán)重制約了工作效率,在計(jì)算機(jī)技術(shù)高速發(fā)展的今天,有必要引入高效的計(jì)算機(jī)系統(tǒng),來協(xié)助處理機(jī)票預(yù)定工作。因此,開發(fā)一套具有完整的存儲(chǔ),查詢,核對(duì),打印機(jī)票功能的實(shí)時(shí)機(jī)票預(yù)定系統(tǒng)勢(shì)在必行。 機(jī)票預(yù)定系統(tǒng)是為機(jī)場(chǎng)工作人員和客戶提供訂票退
5、票等與機(jī)票相關(guān)內(nèi)容和管理的系統(tǒng),它具有開放體系結(jié)構(gòu)的、易擴(kuò)充的、易維護(hù)的、具有良好人機(jī)界面的優(yōu)點(diǎn).它除克服了存儲(chǔ)乘客信息少,查詢效率低下等問題外,更重要的是其安全性,可靠性,實(shí)現(xiàn)航空公司的機(jī)票銷售的自動(dòng)化。它為企業(yè)的決策層提供準(zhǔn)確、精細(xì)、迅速的機(jī)票銷售信息,為乘客出行提供方便,便于機(jī)場(chǎng)工作人員對(duì)機(jī)票信息進(jìn)行管理,提高了機(jī)場(chǎng)工作人員對(duì)機(jī)票管理的工作效率。 2.2功能分析 經(jīng)過綜合分析,確定了機(jī)票預(yù)訂系統(tǒng)主要包括以下功能: (1) 航班信息管理功能 主要實(shí)現(xiàn)航班的一些基本信息,航班編號(hào)、票價(jià)、起飛地、目的地、起飛時(shí)間的添加、修改、刪除和查詢。 (2) 航班座位信息管理功能 主要實(shí)現(xiàn)航班
6、座位,也就是機(jī)票的一些基本信息,航班編號(hào)、座位號(hào)、座位信息、機(jī)票類型的添加、修改、刪除和查詢。 (3) 旅客信息管理功能 此模塊的主要實(shí)現(xiàn)旅客一些基本信息,姓名、性別、聯(lián)系方式、證件號(hào)碼、的查詢功能。 (4) 取票信息管理功能 此模塊用于取票信息的管理,包括對(duì)航班基本信息,航班編號(hào)等,旅客基本信息,旅客姓名、座位號(hào)、取票時(shí)間的查詢。 (5) 退票信息管理功能 此模塊用于退票信息的管理,包括對(duì)訂單號(hào)、旅客姓名、聯(lián)系方式、證件號(hào)碼的查詢。 2.3數(shù)據(jù)詞典 經(jīng)分析之后,本系統(tǒng)要用到五個(gè)基本表:航班信息表,航班座位情況表,旅客訂票信息表,取票和賬單信息表,退票信息表。數(shù)據(jù)結(jié)構(gòu)定義如表:
7、 數(shù)據(jù)結(jié)構(gòu)名 含義說明 組成 航班信息表 定義了航班 的有關(guān)信息 航班號(hào),起飛地,目的地,起飛時(shí)間,票價(jià) 航班座位情況表 定義了航班座位有關(guān)信息 航班號(hào),座位號(hào),座位信息,機(jī)票類型 旅客訂票信息表 定義了旅客有關(guān)信息 旅客姓名,身份證號(hào),性別,電話號(hào) 取票和賬單信息表 定義了取票通知相關(guān)有關(guān)信息 旅客姓名,取票時(shí)間,航班號(hào),座位號(hào),機(jī)票類型 退票信息表 定義了退票旅客的有關(guān)信息 旅客姓名,身份證號(hào),訂單號(hào),電話號(hào) 機(jī)票預(yù)訂系統(tǒng)的主要數(shù)據(jù)字典如下: (1)航班信息 數(shù)據(jù)流來源:航班管理 數(shù)據(jù)流去向:航班安排 數(shù)據(jù)項(xiàng)組成:航班號(hào),
8、起飛地,目的地,起飛時(shí)間,票價(jià) (2)航班座位情況 數(shù)據(jù)流來源:航班管理和訂票情況 數(shù)據(jù)流去向:旅客座位 數(shù)據(jù)項(xiàng)組成:航班號(hào),座位號(hào),座位信息,機(jī)票類型 (3)旅客信息 數(shù)據(jù)流來源:確定旅客信息后管理人員輸入系統(tǒng) 數(shù)據(jù)流去向:安排顧客的航班 數(shù)據(jù)項(xiàng)組成:旅客姓名,身份證號(hào),性別,電話號(hào) (4)取票通知和賬單信息 數(shù)據(jù)流來源:打印取票通知和賬單 數(shù)據(jù)流去向:核對(duì)訂票信息 數(shù)據(jù)項(xiàng)組成:旅客姓名,取票時(shí)間,航班號(hào),座位號(hào),機(jī)票類型 (5)退票信息 數(shù)據(jù)流來源:旅客退票申請(qǐng) 數(shù)據(jù)流去向:訂票信息申請(qǐng)退票 數(shù)據(jù)項(xiàng)組成:旅客姓名,身
9、份證號(hào),訂單號(hào),電話號(hào) 3概念結(jié)構(gòu)設(shè)計(jì) 3.1 概念結(jié)構(gòu)設(shè)計(jì)的方法與步驟 1. 概念結(jié)構(gòu)設(shè)計(jì)的方法 概念設(shè)計(jì)階段我采用自底向上的方法,即自頂向下的進(jìn)行需求分析,然后再自底向上的進(jìn)行概念結(jié)構(gòu)設(shè)計(jì)。對(duì)已經(jīng)細(xì)化到無法再分的階段逐步集成在一起,最終合成一個(gè)全局概念模式。 2. 概念結(jié)構(gòu)設(shè)計(jì)的步驟 第一步是進(jìn)行局部視圖的設(shè)計(jì):由于高層的數(shù)據(jù)流圖只能反映系統(tǒng)的概貌,而中層流圖能較好的反映系統(tǒng)中各局部應(yīng)用的子系統(tǒng)組成。因此我們先逐一的設(shè)計(jì)分E-R圖。 第二步是進(jìn)行視圖的集成:各子系統(tǒng)的E-R圖設(shè)計(jì)好之后,下一步就是要將所有的分E-R圖合成一個(gè)系統(tǒng)的總E-R圖,一般有兩個(gè)方式,多個(gè)分E-R圖一次
10、集成,另一種是一次集成兩個(gè)分E-R圖。我想采用一次集成兩個(gè)分E-R圖的方式。 3.2局部E-R圖設(shè)計(jì) 根據(jù)需求分析抽象出信息結(jié)構(gòu),可得該系統(tǒng)的E-R圖。 (1) 航班信息E-R圖,如圖3.1所示。 航班信息 起飛時(shí)間 航班編號(hào) 目的地 票價(jià) 起飛地 圖3.1航班信息E-R圖 (2) 航班座位信息E-R圖,如圖3.2所示。 航班座位信息 航班編號(hào) 座位號(hào) 座位信息碼 機(jī)票類型 圖3.2機(jī)票信息E-R圖 (3) 旅客E-R圖,如圖3.3所示。 旅客 身份證號(hào) 姓名 電話號(hào) 性別 圖3.3旅客E-R圖
11、 (4) 取票通知E-R圖,如圖3.4所示。 取票通知和賬單 航班編號(hào) 旅客姓名 座位號(hào) 取票時(shí)間 機(jī)票類型 圖3.4取票通知E-R圖 (5) 退票信息E-R圖,如圖3.5所示。 退票信息 旅客姓名 訂單號(hào) 身份證號(hào) 電話號(hào) 圖3.5退票信息E-R圖 3.3總體概念E-R圖結(jié)構(gòu) 經(jīng)過逐步細(xì)化再進(jìn)行每?jī)蓚€(gè)一集成初步形成一個(gè)E-R圖,最后得到圖3.6總體概念結(jié)構(gòu)E-R圖。 n n n 1 1 m n 退票信息 航班信息 旅客 購(gòu)買 包含 退票 取票通知和賬單 航班座位信息 購(gòu)買 1
12、 姓名 性別 身份證號(hào) 電話號(hào) 起飛時(shí)間 航班編號(hào) 目的地 起飛地 票價(jià) 航班編號(hào) 座位號(hào) 機(jī)票類型 座位信息碼 航班編號(hào) 旅客姓名 座位號(hào) 取票時(shí)間 訂單號(hào) 旅客姓名 身份證號(hào)碼 電話號(hào) 機(jī)票類型 圖3.6系統(tǒng)總體結(jié)構(gòu)E-R圖 4邏輯結(jié)構(gòu)設(shè)計(jì) 4.1 邏輯結(jié)構(gòu)設(shè)計(jì) (1) E-R圖向關(guān)系模型的轉(zhuǎn)換 將圖3.6總體概念結(jié)構(gòu)E-R圖轉(zhuǎn)化成關(guān)系模型。 退票信息(訂單號(hào),旅客姓名,聯(lián)系方式,證件號(hào)碼) 旅客(旅客姓名,證件號(hào)碼,聯(lián)系方式,性別) 航班信息表(航班號(hào),票價(jià),起飛地,目的地,起飛時(shí)間) 取票通知
13、單(旅客姓名,取票時(shí)間,證件號(hào)碼,航班號(hào),座位號(hào)) 機(jī)票信息表(座位號(hào),航班號(hào),座位信息,機(jī)票類型) (2)數(shù)據(jù)模型的優(yōu)化 將轉(zhuǎn)化的關(guān)系模式進(jìn)行優(yōu)化,最終達(dá)到第三范式。 ① 確定數(shù)據(jù)依賴 退票信息(訂單號(hào),旅客姓名,聯(lián)系方式,證件號(hào)碼)根據(jù)這個(gè)關(guān)系寫出數(shù)據(jù)依賴 訂單號(hào)→旅客姓名,訂單號(hào)→聯(lián)系方式,訂單號(hào)→證件號(hào)碼 旅客(旅客姓名,證件號(hào)碼,聯(lián)系方式,性別) 旅客姓名→證件號(hào)碼,旅客姓名→聯(lián)系方式,旅客姓名→性別 航班信息表(航班號(hào),票價(jià),起飛地,目的地,起飛時(shí)間) 航班號(hào)→起飛地,航班號(hào)→票價(jià),航班號(hào)→目的地,航班號(hào)→起飛時(shí)間 取票通知單(旅客姓名,取票時(shí)間,航班
14、號(hào),座位號(hào)) 旅客姓名→取票時(shí)間,旅客姓名→航班號(hào),旅客姓名→座位號(hào), 機(jī)票信息表(座位號(hào),航班號(hào),座位信息,機(jī)票類型) (座位號(hào),航班號(hào))→艙位類型,(座位號(hào),航班號(hào),座位信息)→機(jī)票類型 ②對(duì)各關(guān)系模式間數(shù)據(jù)依賴進(jìn)行極小化處理,消除冗余 訂單號(hào)→旅客姓名,訂單號(hào)→聯(lián)系方式,訂單號(hào)→證件號(hào)碼 旅客姓名→性別,旅客姓名→取票時(shí)間,旅客姓名→航班號(hào),旅客姓名→座位號(hào),旅客姓名→機(jī)票類型 航班號(hào)→起飛地,航班號(hào)→目的地,航班號(hào)→起飛時(shí)間 (座位號(hào),航班號(hào))→座位信息 ③看這些模式是否符合要求,確定是否要對(duì)某些模式進(jìn)行合并或者分解 最終分解成第三范式: (訂單號(hào)
15、,聯(lián)系方式,證件號(hào)碼)(訂單號(hào),旅客姓名)(旅客姓名,取票時(shí)間,性別,機(jī)票類型)(旅客姓名,航班號(hào))(旅客姓名,座位號(hào))(航班號(hào),座位號(hào),票價(jià))(航班號(hào),起飛地,目的地,起飛時(shí)間) (3)數(shù)據(jù)庫(kù)的結(jié)構(gòu) 根據(jù)總體結(jié)構(gòu)圖設(shè)計(jì)機(jī)票預(yù)定系統(tǒng)基本表結(jié)構(gòu),其相應(yīng)標(biāo)的定義如下: 表4-1 航班信息系統(tǒng)的結(jié)構(gòu) 字段名 數(shù)據(jù)類型 長(zhǎng)度 約束 描述 flight number decimal 主鍵 航班號(hào) take off place varchar 50 不為空 起飛地 destination varchar 50 不為空 目的地 flight time
16、time 不為空 起飛時(shí)間 price int 不為空 票價(jià) 表4-2 航班座位信息表 字段名 數(shù)據(jù)類型 長(zhǎng)度 約束 描述 seat number decimal 主鍵 座位號(hào) flight number decimal 不為空 航班號(hào) seat message varchar 50 不為空 座位信息 flight ticket type varchar 50 不為空 機(jī)票類型 表4-3旅客信息系統(tǒng)的結(jié)構(gòu) 字段名 數(shù)據(jù)類型 長(zhǎng)度 約束 描述 passager name varchar 50 主鍵
17、 旅客姓名 id decimal 不為空 身份證號(hào) telephone number decimal 不為空 聯(lián)系方式 sex varchar 50 不為空 性別 表4-4取票和賬單信息系統(tǒng)的結(jié)構(gòu) 字段名 數(shù)據(jù)類型 長(zhǎng)度 約束 描述 passager name varchar 50 主鍵 旅客姓名 get ticket time time 不為空 取票時(shí)間 flight number decimal 不為空 航班號(hào) seat number decimal 不為空 座位號(hào) flight tick
18、et type varchar 50 不為空 機(jī)票類型 表4-5 退票信息系統(tǒng)的結(jié)構(gòu) 字段名 數(shù)據(jù)類型 長(zhǎng)度 約束 描述 order form decimal 主鍵 訂單號(hào) passager name varchar 50 不為空 旅客姓名 telephone number decimal 不為空 聯(lián)系方式 id varchar 50 不為空 證件號(hào)碼 4.2數(shù)據(jù)庫(kù)表的建立 根據(jù)數(shù)據(jù)庫(kù)的基本表結(jié)構(gòu)分別建立5個(gè)基本表: (1)創(chuàng)建航班信息表 (2)創(chuàng)建航班座位信息表 (3)創(chuàng)建旅客信息表 (4)創(chuàng)建取
19、票和賬單信息表 (5)創(chuàng)建退票信息表 5物理結(jié)構(gòu)設(shè)計(jì) 數(shù)據(jù)庫(kù)物理設(shè)計(jì)是指設(shè)計(jì)出數(shù)據(jù)庫(kù)的物理數(shù)據(jù)模型,它是數(shù)據(jù)庫(kù)在物理設(shè)備上的具體實(shí)現(xiàn),即數(shù)據(jù)庫(kù)服務(wù)器物理空間上的表空間、表、字段、索引、視圖、存儲(chǔ)過程、觸發(fā)器以及相應(yīng)的數(shù)字字典的設(shè)計(jì)。 經(jīng)過數(shù)據(jù)庫(kù)的需求分析和概念模型設(shè)計(jì),得到數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu),現(xiàn)在可以設(shè)計(jì)好的邏輯結(jié)構(gòu)在SQL server中建立數(shù)據(jù)庫(kù)及數(shù)據(jù)庫(kù)的數(shù)據(jù)表。 5.1表的建立與數(shù)據(jù)載入 需要明確數(shù)據(jù)庫(kù)需要建立幾張表,以及每個(gè)表中所要包括的屬性。在建立表的過程中。要對(duì)每個(gè)表進(jìn)行字段屬性的設(shè)置。(至少包括5張表,每個(gè)表都有主鍵;根據(jù)實(shí)際情況,建立視圖) 在機(jī)票預(yù)訂系統(tǒng)中,主要建
20、立了5個(gè)表,分別是:航班信息表,航班座位情況表,旅客訂票信息表,取票和賬單信息表,退票信息表。 5.2視圖建立 視圖是查看數(shù)據(jù)庫(kù)表中數(shù)據(jù)的一種方式。視視圖提供了存儲(chǔ)預(yù)定義的查詢語句作為數(shù)據(jù)庫(kù)中的對(duì)象以備以后使用的能力。視圖是一種邏輯對(duì)象,是一種虛擬表。 在機(jī)票預(yù)訂系統(tǒng)中,我建立了兩個(gè)視圖。分別是航班和座位視圖和旅客和取票信息視圖。他們分別通過飛機(jī)編號(hào)也就是flight number項(xiàng)和旅客信息也就是passage number項(xiàng)聯(lián)系起來。 5.3索引建立 索引是一個(gè)單獨(dú)的、物理的數(shù)據(jù)庫(kù)結(jié)構(gòu),它是某個(gè)表中一列或若干列值的集合和相應(yīng)的指向表中物理標(biāo)識(shí)這些值的數(shù)據(jù)頁的邏輯指針清單。索引依賴
21、于表建立,它提供了數(shù)據(jù)庫(kù)中編排表中數(shù)據(jù)的內(nèi)部方法。 在機(jī)票預(yù)訂系統(tǒng)中,我建立了三個(gè)索引,分別是在航班信息表中建立了flight number索引,在旅客信息表中建立passage name索引,在航班座位信息表中建立了seat number索引。索引類型為唯一性的非聚集索引。 5.4存儲(chǔ)過程 我創(chuàng)建了三個(gè)存儲(chǔ)過程,輸出三個(gè)表的全部信息。分別是航班信息表、航班座位信息表、旅客信息表。 命令為: CREATE PROC aaa AS SELECT * FROM 航班信息 CREATE PROC bbb AS SELECT * FROM 航班座位信息 CREATE
22、PROC ccc AS SELECT * FROM 旅客信息 5.5觸發(fā)器 觸發(fā)器是一種實(shí)施復(fù)雜的完整性約束的特殊存儲(chǔ)過程,它在SQL server進(jìn)行某個(gè)特定的表修改時(shí)由SQL Server自動(dòng)執(zhí)行。觸發(fā)器一般用于加強(qiáng)數(shù)據(jù)庫(kù)的某些使用規(guī)則。 在機(jī)票管理系統(tǒng)中,我建立了一個(gè)DDL觸發(fā)器,用于保護(hù)當(dāng)前SQL Server服務(wù)器里的所有數(shù)據(jù)庫(kù)不被刪除。具體代碼為: CREATE TRIGGER notdelete ON all server FOR DROP_DATABASE AS PRINT’不能刪除數(shù)據(jù)庫(kù)’ ROLLBACK GO 另外分別在航班信息表、
23、航班座位信息表、旅客信息表、取票通知和賬單這四個(gè)表中建立了四個(gè)觸發(fā)器,對(duì)于表中的添加和更改數(shù)據(jù),提示錯(cuò)誤信息。 代碼為: CREATE TRIGGER a ON hangbanxinxi FOR INSERT,UPDATE AS RAISERROR('不能添加和更新數(shù)據(jù)',16,1) ROLLBACK TRANSACTION GO CREATE TRIGGER b ON hangbanzuoweixinxi FOR INSERT,UPDATE AS RAISERROR('不能添加和更新數(shù)據(jù)',16,1) ROLLBACK TRANSACTION GO CREAT
24、E TRIGGER c ON lvkexinxi FOR INSERT,UPDATE AS RAISERROR('不能添加和更新數(shù)據(jù)',16,1) ROLLBACK TRANSACTION GO CREATE TRIGGER d ON qupiaotongzhihezhangdan FOR INSERT,UPDATE AS RAISERROR('不能添加和更新數(shù)據(jù)',16,1) ROLLBACK TRANSACTION GO 5.6創(chuàng)建登陸賬戶和添加數(shù)據(jù)庫(kù)用戶 在實(shí)訓(xùn)中,我利用SQL創(chuàng)建了一個(gè)“l(fā)ogin1”的登陸賬號(hào)。密碼為123456。 在一個(gè)數(shù)據(jù)庫(kù)中,用戶賬號(hào)唯一
25、標(biāo)識(shí)一個(gè)用戶,用戶對(duì)數(shù)據(jù)庫(kù)的訪問權(quán)限以及對(duì)數(shù)據(jù)庫(kù)對(duì)象的所有關(guān)系都是通過用戶賬號(hào)來控制的。 在機(jī)票預(yù)訂系統(tǒng)中,我創(chuàng)建了一個(gè)用戶名為user1的用戶。 6數(shù)據(jù)流圖及程序結(jié)構(gòu)框圖 6.1功能模塊圖 根據(jù)所需的功能,可以設(shè)計(jì)出系統(tǒng)的總體功能模塊,如圖6.1所示。 機(jī)票預(yù)訂系統(tǒng) 航班信息管理模塊 機(jī)票信息管理模塊 退票信息管理模塊 取票信息管理模塊 旅客信息管理模塊 圖6.1 機(jī)票預(yù)訂系統(tǒng)功能模塊示意圖 取票信息管理模塊的細(xì)化功能模塊如圖6.2所示。 取票信息管理 旅客基本信息查詢 機(jī)票基本信息查詢 圖6.2 取票信息管理模塊 退票信息管理模塊
26、的細(xì)化功能模塊如圖6.3所示。 取票信息管理 旅客基本信息查詢 訂單信息查詢 圖6.3 退票信息管理模塊 6.2數(shù)據(jù)流圖 旅客 旅客 機(jī)票預(yù)訂系統(tǒng) 訂票信息 付費(fèi)信息 取票通知和賬單 機(jī)票 圖6.4 0層數(shù)據(jù)流圖 旅客 旅客 訂票 取票 旅客信息 通知、賬單信息 通知、賬單信息 圖6.5 1層數(shù)據(jù)流圖 7界面設(shè)計(jì)與功能測(cè)試 7.1登錄界面及代碼 代碼如下: Private Declare Function GetUserName Lib "advapi32.dll" Alias "
27、GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long Public OK As Boolean Private Sub Form_Load() Dim sBuffer As String Dim lSize As Long sBuffer = Space$(255) lSize = Len(sBuffer) Call GetUserName(sBuffer, lSize) If lSize > 0 Then txtUserName.Text
28、 = Left$(sBuffer, lSize) Else txtUserName.Text = vbNullString End If End Sub Private Sub cmdCancel_Click() OK = False Me.Hide End Sub Private Sub cmdOK_Click() ''ToDo: create test for correct password ''check for correct password If txtPassword.Text =
29、"" Then OK = True Me.Hide Else MsgBox "Invalid Password, try again!", , "Login" txtPassword.SetFocus txtPassword.SelStart = 0 txtPassword.SelLength = Len(txtPassword.Text) End If End Sub 7.2進(jìn)入系統(tǒng)界面 代碼如下: Private Sub MDIForm_Load()
30、 Me.Left = GetSetting(App.Title, "Settings", "MainLeft", 1000) Me.Top = GetSetting(App.Title, "Settings", "MainTop", 1000) Me.Width = GetSetting(App.Title, "Settings", "MainWidth", 6500) Me.Height = GetSetting(App.Title, "Settings", "MainHeight", 6500) End Sub Private Sub MDIFo
31、rm_Unload(Cancel As Integer) If Me.WindowState <> vbMinimized Then SaveSetting App.Title, "Settings", "MainLeft", Me.Left SaveSetting App.Title, "Settings", "MainTop", Me.Top SaveSetting App.Title, "Settings", "MainWidth", Me.Width SaveSetting App.Title, "Set
32、tings", "MainHeight", Me.Height End If End Sub Private Sub menuAirline_Click() frmAirline.txtSQL = "select * from airlineInfo" frmAirline.Show 0 End Sub Private Sub menuBookticket_Click() frmTicket.txtSQL = "select * from ticketInfo " frmTicket.Show 0 End Sub Private S
33、ub menuCarbin_Click() frmService.txtSQL = "select * from serviceInfo" frmService.Show 0 End Sub Private Sub menuCtype_Click() frmcType.txtSQL = "select * from customerType" frmcType.Show 0 End Sub Private Sub menuCustomer_Click() frmCustomer.txtSQL = "select * from custo
34、merInfo" frmCustomer.Show 0 End Sub Private Sub menuPlane_Click() frmPlane.txtSQL = "select * from planeInfo" frmPlane.Show 0 End Sub Private Sub searchcustom_Click() frmCustomer.Show 1 End Sub 7.3訂票過程 代碼如下: Private Sub Form_Load() ShowTitle ShowData E
35、nd Sub Private Sub Form_Resize() ''If Me.WindowState <> vbMinimized And fMainForm.WindowState <> vbMinimized Then ''邊界處理 ''If Me.ScaleHeight < 10 * lblTitle.Height Then '' Exit Sub '' End If ''If Me.ScaleWidth < lblTitle.Width + lblTitle.Width / 2 Th
36、en '' Exit Sub '' End If ''控制控件的位置 '' lblTitle.Top = lblTitle.Height '' lblTitle.Left = (Me.Width - lblTitle.Width) / 2 ''msgList.Top = lblTitle.Top + lblTitle.Height + lblTitle.Height / 2 ''msgList.Width = Me.ScaleWidth - 200 ''m
37、sgList.Left = Me.ScaleLeft + 100 ''msgList.Height = Me.ScaleHeight - msgList.Top - 1500 '' Frame2.Top = msgList.Top + msgList.Height + 50 '' Frame2.Left = Me.ScaleWidth / 2 - 3000 ''End If End Sub Public Sub FormClose() Unload Me End Sub Private Sub ShowData
38、() Dim j As Integer Dim i As Integer Dim MsgText As String Set mrc = ExecuteSQL(txtSQL, MsgText) With msgList .Rows = 1 ''Do While Not mrc.EOF ''.Rows = .Rows + 1 ''For i = 1 To mrc.Fields.Count ''I
39、f Not IsNull(Trim(mrc.Fields(i - 1))) Then '' Select Case mrc.Fields(i - 1).Type '' Case adDBDate ''.TextMatrix(.Rows - 1, i) = Format(mrc.Fields(i - 1) & "", "yyyy-mm-dd") '' Case Else ''.TextMatrix(.Rows - 1,
40、 i) = mrc.Fields(i - 1) & "" ''End Select '' End If ''Next i ''mrc.MoveNext ''Loop End With ''mrc.Close End Sub ''顯示Grid表頭 Private Sub ShowTitle() Dim i As Integer With msgList .Cols = 7
41、 .TextMatrix(0, 0) = "旅客姓名" .TextMatrix(0, 1) = "旅客性別" .TextMatrix(0, 2) = "身份證號(hào)碼" .TextMatrix(0, 3) = "聯(lián)系電話" .TextMatrix(0, 4) = "起飛時(shí)間" .TextMatrix(0, 5) = "目的地" .TextMatrix(0, 6) = "備注信息" ''固定表頭 .FixedRows = 1
42、 ''設(shè)置各列的對(duì)齊方式 For i = 0 To 6 .ColAlignment(i) = 0 Next i ''表頭項(xiàng)居中 .FillStyle = flexFillRepeat .Col = 0 .Row = 0 .RowSel = 1 .ColSel = .Cols - 1 .CellAlignment = 4 ''設(shè)置單元大小
43、 .ColWidth(0) = 1000 .ColWidth(1) = 1000 .ColWidth(2) = 1000 .ColWidth(3) = 1000 .ColWidth(4) = 2000 .ColWidth(5) = 1000 .ColWidth(6) = 3000 .Row = 1 End With End Sub Private Sub msgList_MouseUp(Button As Integer,
44、 Shift As Integer, x As Single, y As Single) ''右鍵彈出 If Button = 2 And Shift = 0 Then End If End Sub 添加用戶信息: 代碼如下:Option Explicit ''是否改動(dòng)過記錄,ture為改過 Dim mblChange As Boolean Dim mrc As ADODB.Recordset Public txtSQL As String Private Sub cmdExit_Click() If mblChan
45、ge And cmdSave.Enabled Then If MsgBox("保存當(dāng)前記錄的變化嗎?", vbOKCancel + vbExclamation, "警告") = vbOK Then ''保存 Call cmdSave_Click End If End If Unload Me End Sub Private Sub cmdSave_Click() Dim intCount As Integer Dim sMeg As String Dim
46、 MsgText As String For intCount = 0 To 2 If Trim(txtItem(intCount) & " ") = "" Then Select Case intCount Case 0 sMeg = "旅客姓名" Case 1 sMeg = "身份證號(hào)碼" Case 2
47、sMeg = "聯(lián)系電話" End Select sMeg = sMeg & "不能為空!" MsgBox sMeg, vbOKOnly + vbExclamation, "警告" txtItem(intCount).SetFocus Exit Sub End If Next intCount For intCount = 0 To 1 If Trim(Combo1(intCount) & " ") =
48、"" Then Select Case intCount Case 0 sMeg = "起飛時(shí)間" Case 1 sMeg = "目的地" End Select sMeg = sMeg & "不能為空!" MsgBox sMeg, vbOKOnly + vbExclamation, "警告" Combo1(intCo
49、unt).SetFocus Exit Sub End If Next intCount ''判斷是否有相同內(nèi)容的記錄 txtSQL = "select * from customerInfo where customerNO<>''" & Trim(txtNo) & "'' and customerName=''" & Trim(txtItem(0)) & "''" Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc.EOF = False Then
50、 MsgBox "已經(jīng)存在相同客戶的記錄!", vbOKOnly + vbExclamation, "警告" txtItem(0).SetFocus Exit Sub End If ''先刪除已有記錄 txtSQL = "delete from customerInfo where customerNO=''" & Trim(txtNo) & "''" Set mrc = ExecuteSQL(txtSQL, MsgText) ''再加入新記錄 txtSQL = "select
51、* from customerInfo" Set mrc = ExecuteSQL(txtSQL, MsgText) mrc.AddNew mrc.Fields(0) = Trim(txtNo) mrc.Fields(1) = Trim(txtItem(0)) mrc.Fields(2) = Trim(Combo1(0)) For intCount = 1 To 2 mrc.Fields(intCount + 2) = Trim(txtItem(intCount)) Next intCount
52、 mrc.Fields(5) = Trim(Combo1(1)) mrc.Fields(6) = Trim(txtItem(3)) mrc.Update mrc.Close If gintCmode = 1 Then MsgBox "添加記錄成功!", vbOKOnly + vbExclamation, "添加記錄" For intCount = 0 To 3 txtItem(intCount) = "" Next intCount
53、 mblChange = False Unload frmCustomer frmCustomer.txtSQL = "select * from customerInfo" frmCustomer.Show ElseIf gintCmode = 2 Then Unload Me Unload frmCustomer frmCustomer.txtSQL = "select * from customerInfo" frm
54、Customer.Show End If End Sub Private Sub Form_Load() Dim intCount As Integer Dim MsgText As String Dim i As Integer Dim mrcc As ADODB.Recordset If gintCmode = 1 Then Me.Caption = Me.Caption & "添加" ''txtNo = GetRkno() ElseIf gintCmode = 2 Then
55、 Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc.EOF = False Then With mrc ''txtNo = .Fields(0) txtItem(0) = .Fields(1) For intCount = 1 To 2 txtItem(intCount) = .Fields(intCount + 2) Next intC
56、ount txtItem(3) = .Fields(6) End With End If Me.Caption = Me.Caption & "修改" End If For intCount = 0 To 1 Combo1(intCount).Clear Next intCount Combo1(0).AddItem "男" Combo1(0).AddItem "女" txtSQL = "select DISTINCT ctypeName fr
57、om customerType" Set mrcc = ExecuteSQL(txtSQL, MsgText) ''If Not mrcc.EOF Then '' Do While Not mrcc.EOF '' Combo1(1).AddItem mrcc.Fields(0) '' mrcc.MoveNext ''Loop ''End If ''mrcc.Close mblChange = False End Sub Private Sub Form_Unlo
58、ad(Cancel As Integer) gintCmode = 0 End Sub Private Sub txtItem_Change(Index As Integer) ''有變化設(shè)置gblchange mblChange = True End Sub Private Sub txtItem_GotFocus(Index As Integer) txtItem(Index).SelStart = 0 txtItem(Index).SelLength = Len(txtItem(Index)) End Sub Private
59、Sub txtItem_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer) EnterToTab KeyCode End Sub 8總結(jié) 經(jīng)過一周的實(shí)訓(xùn),本次課程設(shè)計(jì)終于完成了。通過這次課程設(shè)計(jì),使我對(duì)數(shù)據(jù)庫(kù)這門課程有了更深入的理解。數(shù)據(jù)庫(kù)是一門實(shí)踐性較強(qiáng)的課程,通過這次課程設(shè)計(jì),我明白了理論與實(shí)際應(yīng)用相結(jié)合的重要性,掌握并熟練運(yùn)用SQL語句以及VB 的應(yīng)用,提高了我的綜合運(yùn)用所學(xué)知識(shí)的能力。 在本次課程設(shè)計(jì)和過程中,由于時(shí)間不是很長(zhǎng),再加上要求獨(dú)立完成,系統(tǒng)需求分析上可能不是很全面,程序中還存在很多不足,希望老師能給予批評(píng)和指導(dǎo)。經(jīng)過這次課程設(shè)計(jì),我的知識(shí)得到了很大提高,經(jīng)驗(yàn)也更加豐富。希望能在今后的不斷的學(xué)習(xí)中和努力中,把程序做得更好。最后,感謝指導(dǎo)老師所給我的幫助。 主要參考文獻(xiàn):《數(shù)據(jù)庫(kù)技術(shù)及應(yīng)用》——主編:劉太安 林曉霞 中國(guó)石油大學(xué)出版社
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《光的折射》課件-(公開課獲獎(jiǎng))2022年滬科版物理-
- UV油墨的基礎(chǔ)知識(shí)課件
- 藍(lán)色簡(jiǎn)約后備護(hù)士長(zhǎng)競(jìng)聘動(dòng)態(tài)課件
- 藍(lán)色清新筆記本翻頁年終總結(jié)模板課件
- 81二元一次方程組課件(人教版七年級(jí)下)
- 局部解剖學(xué)-頭部-蝶鞍區(qū)、海綿竇、硬腦膜
- 7273第1課時(shí) 位似圖形及作圖
- 供應(yīng)鏈管理-PPT
- 幼兒園管理過程
- 4索溪谷的“野”2
- 外科補(bǔ)液注意問題
- 組織行為學(xué)--價(jià)值觀與態(tài)度
- 燈光教學(xué)課件1
- 中原城市春季車展招商方案
- 祛痰劑醫(yī)學(xué)知識(shí)專家講座