機(jī)票預(yù)訂系統(tǒng) 課程設(shè)計(jì) 數(shù)據(jù)庫

上傳人:紫** 文檔編號(hào):54372152 上傳時(shí)間:2022-02-14 格式:DOC 頁數(shù):30 大?。?60KB
收藏 版權(quán)申訴 舉報(bào) 下載
機(jī)票預(yù)訂系統(tǒng) 課程設(shè)計(jì) 數(shù)據(jù)庫_第1頁
第1頁 / 共30頁
機(jī)票預(yù)訂系統(tǒng) 課程設(shè)計(jì) 數(shù)據(jù)庫_第2頁
第2頁 / 共30頁
機(jī)票預(yù)訂系統(tǒng) 課程設(shè)計(jì) 數(shù)據(jù)庫_第3頁
第3頁 / 共30頁

下載文檔到電腦,查找使用更方便

16 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《機(jī)票預(yù)訂系統(tǒng) 課程設(shè)計(jì) 數(shù)據(jù)庫》由會(huì)員分享,可在線閱讀,更多相關(guān)《機(jī)票預(yù)訂系統(tǒng) 課程設(shè)計(jì) 數(shù)據(jù)庫(30頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、 1概述 應(yīng)用對(duì)數(shù)據(jù)庫技術(shù)及應(yīng)用的理論學(xué)習(xí),通過上機(jī)實(shí)踐的方式將理論知識(shí)與實(shí)踐更好的結(jié)合起來,鞏固所學(xué)知識(shí)。 實(shí)踐和鞏固在課堂教學(xué)中學(xué)習(xí)的關(guān)于數(shù)據(jù)庫的有關(guān)知識(shí),熟練掌握對(duì)于給定實(shí)訓(xùn)任務(wù)的數(shù)據(jù)庫的創(chuàng)建、基本操作、程序系統(tǒng)的建立和調(diào)試以及系統(tǒng)評(píng)價(jià)。 實(shí)踐和鞏固在課堂教學(xué)中學(xué)習(xí)的關(guān)于關(guān)系數(shù)據(jù)庫原理的有關(guān)知識(shí)和數(shù)據(jù)庫系統(tǒng)的建立方法,熟練掌握對(duì)于給定實(shí)際問題,為了建立一個(gè)關(guān)系數(shù)據(jù)庫信息管理系統(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ù)庫原理及應(yīng)用》課程中學(xué)到的理論知識(shí)來指導(dǎo)實(shí)踐,了解數(shù)據(jù)庫設(shè)計(jì)過程及其實(shí)現(xiàn)方法,學(xué)會(huì)用數(shù)據(jù)庫建模的方法解決實(shí)際問題。掌握數(shù)據(jù)庫原理、范式理論、規(guī)范化等相關(guān)知識(shí),掌握數(shù)據(jù)庫分析設(shè)計(jì)的具體步驟與基本方法,掌握SQL語言的基本語法和基本內(nèi)容,并能運(yùn)用SQL Server 2005實(shí)現(xiàn)設(shè)計(jì)數(shù)據(jù)庫,掌握SQL Server 2005數(shù)據(jù)庫、表、視圖、約束、索引、存儲(chǔ)過程、觸發(fā)器的使用,利用一種前臺(tái)開發(fā)工具實(shí)現(xiàn)數(shù)據(jù)庫管理系統(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ù)庫的分析、設(shè)計(jì)與實(shí)現(xiàn),題目要符合《數(shù)據(jù)庫原理及應(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ù)庫要求 在數(shù)據(jù)庫中至少應(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)中的作用也越顯重要。目前,我國一些旅行社和酒店的機(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ī)場工作人員和客戶提供訂票退

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ī)場工作人員對(duì)機(jī)票信息進(jìn)行管理,提高了機(jī)場工作人員對(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)行每兩個(gè)一集成初步形成一個(gè)E-R圖,最后得到圖3.6總體概念結(jié)構(gòu)E-R圖。 n n n 1 1 m n 退票信息 航班信息 旅客 購買 包含 退票 取票通知和賬單 航班座位信息 購買 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ù)庫的結(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ù)類型 長度 約束 描述 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ù)類型 長度 約束 描述 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ù)類型 長度 約束 描述 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ù)類型 長度 約束 描述 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ù)類型 長度 約束 描述 order form decimal 主鍵 訂單號(hào) passager name varchar 50 不為空 旅客姓名 telephone number decimal 不為空 聯(lián)系方式 id varchar 50 不為空 證件號(hào)碼 4.2數(shù)據(jù)庫表的建立 根據(jù)數(shù)據(jù)庫的基本表結(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ù)庫物理設(shè)計(jì)是指設(shè)計(jì)出數(shù)據(jù)庫的物理數(shù)據(jù)模型,它是數(shù)據(jù)庫在物理設(shè)備上的具體實(shí)現(xiàn),即數(shù)據(jù)庫服務(wù)器物理空間上的表空間、表、字段、索引、視圖、存儲(chǔ)過程、觸發(fā)器以及相應(yīng)的數(shù)字字典的設(shè)計(jì)。 經(jīng)過數(shù)據(jù)庫的需求分析和概念模型設(shè)計(jì),得到數(shù)據(jù)庫的邏輯結(jié)構(gòu),現(xiàn)在可以設(shè)計(jì)好的邏輯結(jié)構(gòu)在SQL server中建立數(shù)據(jù)庫及數(shù)據(jù)庫的數(shù)據(jù)表。 5.1表的建立與數(shù)據(jù)載入 需要明確數(shù)據(jù)庫需要建立幾張表,以及每個(gè)表中所要包括的屬性。在建立表的過程中。要對(duì)每個(gè)表進(jìn)行字段屬性的設(shè)置。(至少包括5張表,每個(gè)表都有主鍵;根據(jù)實(shí)際情況,建立視圖) 在機(jī)票預(yù)訂系統(tǒng)中,主要建

20、立了5個(gè)表,分別是:航班信息表,航班座位情況表,旅客訂票信息表,取票和賬單信息表,退票信息表。 5.2視圖建立 視圖是查看數(shù)據(jù)庫表中數(shù)據(jù)的一種方式。視視圖提供了存儲(chǔ)預(yù)定義的查詢語句作為數(shù)據(jù)庫中的對(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ù)庫結(jié)構(gòu),它是某個(gè)表中一列或若干列值的集合和相應(yīng)的指向表中物理標(biāo)識(shí)這些值的數(shù)據(jù)頁的邏輯指針清單。索引依賴

21、于表建立,它提供了數(shù)據(jù)庫中編排表中數(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ù)庫的某些使用規(guī)則。 在機(jī)票管理系統(tǒng)中,我建立了一個(gè)DDL觸發(fā)器,用于保護(hù)當(dāng)前SQL Server服務(wù)器里的所有數(shù)據(jù)庫不被刪除。具體代碼為: CREATE TRIGGER notdelete ON all server FOR DROP_DATABASE AS PRINT’不能刪除數(shù)據(jù)庫’ 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ù)庫用戶 在實(shí)訓(xùn)中,我利用SQL創(chuàng)建了一個(gè)“l(fā)ogin1”的登陸賬號(hào)。密碼為123456。 在一個(gè)數(shù)據(jù)庫中,用戶賬號(hào)唯一

25、標(biāo)識(shí)一個(gè)用戶,用戶對(duì)數(shù)據(jù)庫的訪問權(quán)限以及對(duì)數(shù)據(jù)庫對(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ì)與功能測試 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ù)庫這門課程有了更深入的理解。數(shù)據(jù)庫是一門實(shí)踐性較強(qiáng)的課程,通過這次課程設(shè)計(jì),我明白了理論與實(shí)際應(yīng)用相結(jié)合的重要性,掌握并熟練運(yùn)用SQL語句以及VB 的應(yīng)用,提高了我的綜合運(yùn)用所學(xué)知識(shí)的能力。 在本次課程設(shè)計(jì)和過程中,由于時(shí)間不是很長,再加上要求獨(dú)立完成,系統(tǒng)需求分析上可能不是很全面,程序中還存在很多不足,希望老師能給予批評(píng)和指導(dǎo)。經(jīng)過這次課程設(shè)計(jì),我的知識(shí)得到了很大提高,經(jīng)驗(yàn)也更加豐富。希望能在今后的不斷的學(xué)習(xí)中和努力中,把程序做得更好。最后,感謝指導(dǎo)老師所給我的幫助。 主要參考文獻(xiàn):《數(shù)據(jù)庫技術(shù)及應(yīng)用》——主編:劉太安 林曉霞 中國石油大學(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!

五月丁香婷婷狠狠色,亚洲日韩欧美精品久久久不卡,欧美日韩国产黄片三级,手机在线观看成人国产亚洲