欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)論文

      時(shí)間:2019-05-14 03:57:54下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫寫幫文庫(kù)小編為你整理了多篇相關(guān)的《醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)論文》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫(kù)還可以找到更多《醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)論文》。

      第一篇:醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)論文

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      .信息工程學(xué)院

      《數(shù)據(jù)庫(kù)課程設(shè)計(jì)》論文

      題 目:醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)

      學(xué) 號(hào): 專業(yè)班級(jí): 姓 名: 指導(dǎo)老師: 完成日期:

      2012013324 軟件工程121班 張桐 蔚繼承

      2014年06月20日

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)

      張桐

      (信息工程學(xué)院軟件工程12級(jí)1班)

      摘 要:隨著社會(huì)的進(jìn)步和人類生產(chǎn)生活水平的提高,國(guó)內(nèi)現(xiàn)有的醫(yī)院不論從規(guī)模上還是服務(wù)質(zhì)量上都實(shí)現(xiàn)了顯著增長(zhǎng)。顯然,如果醫(yī)院門診仍采用人工管理的方式顯然無(wú)法應(yīng)對(duì)龐大的病患需求。如今,科學(xué)與發(fā)展已成為時(shí)代的主題。在中國(guó)軟件行業(yè)日益進(jìn)步的今天,我們可以利用這些資源來(lái)幫助減輕醫(yī)生和病人的負(fù)擔(dān),讓病人能夠盡快就醫(yī)。一個(gè)高質(zhì)量的醫(yī)院門診管理系統(tǒng),能提高醫(yī)院的社會(huì)效益與經(jīng)濟(jì)效益。本文采用結(jié)構(gòu)化分析和設(shè)計(jì)方法,運(yùn)用數(shù)據(jù)流程圖和E-R圖等工具對(duì)小型醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫(kù)進(jìn)行分析和設(shè)計(jì),實(shí)現(xiàn)登記掛號(hào)、診斷治療、收費(fèi)掛號(hào)等醫(yī)院門診的基本業(yè)務(wù)。

      關(guān)鍵字:醫(yī)院門診管理;數(shù)據(jù)庫(kù)設(shè)計(jì);醫(yī)院

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      目 錄

      1. 需求分析....................................................................................................................................1

      1.1數(shù)據(jù)流程圖..........................................................................................................................1 1.2數(shù)據(jù)字典..............................................................................................................................4

      1.2.1數(shù)據(jù)項(xiàng).......................................................................................................................4 1.2.2數(shù)據(jù)結(jié)構(gòu)...................................................................................................................5 1.2.3數(shù)據(jù)流.......................................................................................................................6 1.2.4.處理邏輯...................................................................................................................6 1.2.5.數(shù)據(jù)存儲(chǔ)...................................................................................................................7

      2.?dāng)?shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)..........................................................................................................................7

      2.1 概念設(shè)計(jì).............................................................................................................................7

      2.1.1 分E-R圖建立..........................................................................................................7 2.1.2 全局/整體E-R圖.....................................................................................................8 2.2 邏輯設(shè)計(jì).............................................................................................................................9

      2.2.1 建立關(guān)系模式.........................................................................................................10 2.2.2 關(guān)系模式規(guī)范化處理.............................................................................................10 2.2.3 用戶子模式建立.....................................................................................................11 2.2.4 關(guān)系模式邏輯結(jié)構(gòu)定義.........................................................................................11 3.?dāng)?shù)據(jù)庫(kù)物理設(shè)計(jì)........................................................................................................................13 4.?dāng)?shù)據(jù)庫(kù)實(shí)施與測(cè)試....................................................................................................................13 4.1 SQL Server 2008數(shù)據(jù)庫(kù)實(shí)施與測(cè)試................................................................................13 4.1.1 數(shù)據(jù)庫(kù)及數(shù)據(jù)庫(kù)對(duì)象建立.....................................................................................13 4.1.2 數(shù)據(jù)入庫(kù)................................................................................................................21 4.1.3 數(shù)據(jù)庫(kù)測(cè)試............................................................................................................23 4.2 Oracle數(shù)據(jù)庫(kù)實(shí)施與測(cè)試.................................................................................................30 4.2.1 數(shù)據(jù)庫(kù)及數(shù)據(jù)庫(kù)對(duì)象建立.....................................................................................30 4.2.2 數(shù)據(jù)入庫(kù)................................................................................................................41 4.2.3 數(shù)據(jù)庫(kù)測(cè)試............................................................................................................43 5. 總結(jié).........................................................................................................................................49

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      隨著社會(huì)不斷的進(jìn)步,醫(yī)院等基礎(chǔ)服務(wù)機(jī)構(gòu),早已成為了人們生活必不可少的一部分,在很大程度上方便了人們的生活。為了在更大程度上滿足病患的需求,許多醫(yī)院的規(guī)模進(jìn)一步擴(kuò)大,管理也進(jìn)一步改善。逐步走向醫(yī)療服務(wù)和管理的成熟化。而方便有效的管理手段已經(jīng)成為了所有管理部門管理的有力工具。

      傳統(tǒng)的人工管理手段在高速發(fā)展的今天,已經(jīng)不再體現(xiàn)其優(yōu)勢(shì),繁復(fù)和大量的手工記錄和計(jì)算給管理帶來(lái)了更多的重復(fù)工作,如果能將復(fù)雜的各類管理過(guò)程封裝在一個(gè)操作中,執(zhí)行每個(gè)管理步驟時(shí)使用相對(duì)應(yīng)的功能,那就能給管理者帶來(lái)更大的便捷。數(shù)據(jù)庫(kù)設(shè)計(jì)的目標(biāo)就是為用戶和各種應(yīng)用系統(tǒng)提供一個(gè)信息基礎(chǔ)設(shè)施和高效的運(yùn)行環(huán)境。

      隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已經(jīng)進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來(lái)越重要的作用。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)醫(yī)院門診信息進(jìn)行管理,具有比手工管理所無(wú)法比擬的優(yōu)點(diǎn)。例如:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大等。這些優(yōu)點(diǎn)能夠極大地提高人事勞資管理的效率,也是企業(yè)的科學(xué)化、正規(guī)化管理的重要條件。

      針對(duì)典型的管理系統(tǒng),以醫(yī)院門診管理為載體,設(shè)計(jì)醫(yī)院門診管理系統(tǒng)。以滿足門診管理者對(duì)各類數(shù)據(jù)的管理,以現(xiàn)代化的思維模式去經(jīng)營(yíng)維護(hù)。

      1. 需求分析

      需求分析階段就是分析用戶的需求,是數(shù)據(jù)庫(kù)設(shè)計(jì)的起點(diǎn)。醫(yī)院門診管理的主要目標(biāo)是通過(guò)醫(yī)院門診的整個(gè)服務(wù)流程的管理和控制及對(duì)庫(kù)存數(shù)據(jù)有效的統(tǒng)計(jì)和分析,以保證管理的暢通,使決策人員及早發(fā)現(xiàn)問(wèn)題,采取相應(yīng)措施,調(diào)整管理方式。同時(shí),通過(guò)數(shù)據(jù)分析,可以獲得當(dāng)前社會(huì)的病患需求,也便于管理人員不斷進(jìn)行管理的優(yōu)化和提高管理水平。通過(guò)查詢資料和分析當(dāng)前的醫(yī)院門診部服務(wù)狀況,明確病患的需求而進(jìn)行設(shè)計(jì)。并完成業(yè)務(wù)流程圖和數(shù)據(jù)流程圖。進(jìn)一步創(chuàng)建數(shù)據(jù)字典,完成數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)處理功能模塊。

      1.1數(shù)據(jù)流程圖

      數(shù)據(jù)流程圖反映的是醫(yī)院門診管理工作過(guò)程的數(shù)據(jù)去向和流向。通過(guò)數(shù)據(jù)流程圖,抽象現(xiàn)實(shí)世界的數(shù)據(jù)到醫(yī)院門診管理的物理模型。再根據(jù)這個(gè)物理模型要抽象出信息流,將物理模型轉(zhuǎn)化成邏輯模型,反映信息在系統(tǒng)中的流動(dòng)、處理和存儲(chǔ)情況,在整個(gè)過(guò)程中,所得到的數(shù)據(jù)流程圖可如下圖1-1至圖1-5所示,分為頂層數(shù)據(jù)流圖、第一層數(shù)據(jù)流圖和第二層數(shù)據(jù)流圖。

      112級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      圖1-2 第一層數(shù)據(jù)流程圖

      圖1-1 頂層數(shù)據(jù)流程圖 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      圖1-4 第二層數(shù)據(jù)流程圖(診斷)

      圖1-3 第二層數(shù)據(jù)流程圖(掛號(hào)收費(fèi))12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      圖1-5 第二層數(shù)據(jù)流程圖(取藥)

      1.2數(shù)據(jù)字典

      數(shù)據(jù)字典是體統(tǒng)中各類數(shù)據(jù)描述的集合,是進(jìn)行詳細(xì)的數(shù)據(jù)收集和數(shù)據(jù)分析所獲得的主要成果。數(shù)據(jù)字典在數(shù)據(jù)庫(kù)設(shè)計(jì)中占有很重要的地位。數(shù)據(jù)字典通常包括數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、處理邏輯5個(gè)部分。

      數(shù)據(jù)項(xiàng)是不可再分的數(shù)據(jù)單位。數(shù)據(jù)結(jié)構(gòu)反映了數(shù)據(jù)之間的組合關(guān)系。數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)傳輸?shù)穆窂?。?shù)據(jù)存儲(chǔ)是數(shù)據(jù)結(jié)構(gòu)停留或保存的地方也是數(shù)據(jù)流的來(lái)源和去向之一。處理邏輯一般用判定表或判定樹來(lái)描述。數(shù)據(jù)字典是需要描述處理過(guò)程的說(shuō)明性信息。

      本文中包括35個(gè)數(shù)據(jù)項(xiàng),8個(gè)數(shù)據(jù)結(jié)構(gòu),11個(gè)數(shù)據(jù)流,6個(gè)處理邏輯,8個(gè)數(shù)據(jù)存儲(chǔ)。1.2.1數(shù)據(jù)項(xiàng)

      數(shù)據(jù)項(xiàng)編號(hào) DI01-1 DI01-2 DI01-3 DI01-4 DI01-5 DI02-1 DI02-2 DI02-3 數(shù)據(jù)項(xiàng)名 數(shù)據(jù)項(xiàng)含義 Pno Pname Psex Page Dno Dno Dname Dtitle

      病人編號(hào) 病人姓名 性別 年齡 醫(yī)生號(hào) 醫(yī)生號(hào) 醫(yī)生姓名 職稱

      與其他數(shù)據(jù)項(xiàng)關(guān)系 主鍵

      外鍵 主鍵

      類型 varchar varchar varchar int varchar varchar varchar varchar

      長(zhǎng)度 20 20 20 20 20 20 20

      取值范圍

      not null 0-150

      not null 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      DI02-4 DI02-5 DI03-1 DI03-2 DI03-3 DI04-1 DI04-2 DI04-3 DI04-4 DI05-1 DI05-2 DI05-3 DI05-4 DI05-5 DI05-6 DI06-1 DI06-2 DI06-3 DI06-4 DI07-1 DI07-2 DI07-3 DI07-4 DI08-1 DI08-2 DI08-3 DI08-4 Dtel Dp_no Dp_no Dp_name Dp_tell Mno Mname Mprice Rno Rdate Bno Pno Dno Rway Bno Bdate Bmoney Bway Pr_no Pr_date Mno Bno Dno Pno Iname Pr_no

      電話 科室編號(hào) 科室編號(hào) 科室名稱 聯(lián)系方式 藥品編號(hào) 藥品名稱 藥品價(jià)格 掛號(hào)單號(hào) 掛號(hào)日期 收費(fèi)單號(hào) 病人編號(hào) 醫(yī)生編號(hào) 掛號(hào)方式 收費(fèi)單號(hào) 日期 金額 收費(fèi)方式 處方號(hào) 日期 藥品編號(hào) 收費(fèi)單號(hào) 醫(yī)生號(hào) 病人編號(hào) 病名 處方號(hào)

      外鍵 主鍵

      主鍵

      主鍵

      外鍵 外鍵 外鍵

      主鍵

      主鍵

      外鍵 外鍵

      varchar varchar varchar varchar varchar varchar varchar float int varchar date varchar varchar varchar varchar varchar date float varchar varchar date varchar varchar 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20

      not null

      not null

      Mquantity 藥品庫(kù)存余量

      主鍵、外鍵 varchar 主鍵、外鍵 varchar 外鍵

      varchar varchar 1.2.2數(shù)據(jù)結(jié)構(gòu)

      數(shù)據(jù)結(jié)構(gòu)編號(hào) 數(shù)據(jù)結(jié)構(gòu)名 DS-1 DS-2 DS-3 DS-4 DS-5 DS-6 DS-7 DS-8 Doctor Patient Medicine Department Register Bill Diagnose

      數(shù)據(jù)結(jié)構(gòu)含義 醫(yī)生 病人 藥品 科室 掛號(hào)單 收費(fèi)單 診斷結(jié)果

      組成

      Dno,Dname,Dtitle,Ddept,Dtel Pno,Pname,Psex,Page,Dno Mno,Mname,Mprice,Mquantity Dp_no,Dp_name,Dp_tel Rno,Rway,Rdate,Pno,Bno Bno,Bdate,Bmoney,Bway Pr_no,Pr_date,Mno,Bno Dno,Pno,Iname,Pr_no Prescription 處方

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      1.2.3數(shù)據(jù)流

      數(shù)據(jù)流數(shù)據(jù)流編號(hào) F1 名稱 掛號(hào)請(qǐng)求 簡(jiǎn)述

      病人來(lái)到醫(yī)院對(duì)所需的治療或者看病項(xiàng)目的掛號(hào)

      病人

      掛號(hào)處理

      數(shù)據(jù)流來(lái)源

      數(shù)據(jù)流去向

      數(shù)據(jù)流組成

      數(shù)據(jù)流量

      高峰流量 每日

      病人信息、每日

      分配醫(yī)師 1000人 5000人 病人、醫(yī)生、掛號(hào)單編號(hào)

      每日

      每日F2 處理病人的掛號(hào),由病人掛號(hào)單 掛號(hào)處理 病人

      信息生成掛號(hào)單 繳費(fèi) 對(duì)于各項(xiàng)醫(yī)療必須費(fèi)用進(jìn)行繳費(fèi) 證以備后續(xù)使用 病人到相關(guān)科室進(jìn)行初診

      病人

      1000次 5000次 每日

      每日每日每日F3 F4 F5

      收費(fèi)處理 收費(fèi)信息

      1000次 5000次

      收費(fèi)憑病人繳費(fèi)后獲取收費(fèi)憑證 看病

      收費(fèi)處理 病人 病人

      初診處理

      收費(fèi)信息、每日病人信息、每日病人、處方

      詳細(xì)記錄 1000次 5000次 初診信息 1000人 5000人 信息、病例信息

      每日

      每日F6 處方、醫(yī)師對(duì)病人開處方、填寫病例 病例 取藥 藥物 病人到藥房領(lǐng)取相關(guān)藥品

      藥房工作人員依照處方把相關(guān)藥品交給病人

      確診處理 病人

      1000次 5000次

      每日F7 F8

      病人 取藥處理

      病人、藥品每日信息

      1000次 5000次

      取藥處理 病人

      分配醫(yī)師處理

      每日每日

      病人、藥品

      1000次 5000次 病人信息、分配醫(yī)師、科室

      每日

      每日F9 掛號(hào)項(xiàng)掛號(hào)系統(tǒng)針對(duì)病人的掛目 號(hào)項(xiàng)目為其分配醫(yī)師

      掛號(hào)處理 分配醫(yī)師處理

      1000次 5000次 每日

      每日每日F10 F11 醫(yī)師信系統(tǒng)調(diào)用相關(guān)醫(yī)師信息息 息 返回 后確診 診斷信將診斷信息整理匯總,最

      掛號(hào)處理 醫(yī)生

      1000次 5000次 1000次 5000次

      診斷處理 確診

      病人、治療每日記錄

      1.2.4.處理邏輯

      處理邏輯處理邏輯 簡(jiǎn)述

      名稱 P1.1 P1.2 P1.3 P2.1 P2.2 P3.1 掛號(hào) 收費(fèi) 診斷 確診 取藥 收費(fèi)內(nèi)容和標(biāo)準(zhǔn) 醫(yī)生對(duì)病情進(jìn)行診斷 完成診斷,確診 取藥

      輸入的數(shù)據(jù)流 收費(fèi)內(nèi)容 診斷請(qǐng)求 診斷信息 處方 6

      處理

      輸出的數(shù)據(jù)流

      處理頻率 每人1次 每人1次 每人1次 每人1次 每人1次 每人1次 對(duì)病人掛號(hào)請(qǐng)求的處理 病人信息 分配醫(yī)師 掛號(hào)單 收取費(fèi)用 收費(fèi)記錄 分配醫(yī)師 醫(yī)生信息 初步診斷 初診信息 確診 取藥

      診斷結(jié)果 藥物信息 分配醫(yī)師 根據(jù)掛號(hào)記錄分配醫(yī)師 醫(yī)生記錄 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      1.2.5.數(shù)據(jù)存儲(chǔ)

      數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)名編號(hào) S1 S2 S3 S4 S5 S6 S7 S8 稱 簡(jiǎn)述

      數(shù)據(jù)存儲(chǔ)組成 病人信息、醫(yī)生 收費(fèi)信息 醫(yī)生值班安排 診斷過(guò)程 收費(fèi)信息 收費(fèi)款項(xiàng)標(biāo)準(zhǔn) 處方

      相關(guān)的處理 P1.1,P2.1,P3.1 P1.2,P2.2,P3.2,P3.3 P3.1 P2.3,P3.1 P3.2 P1.2 P1.2 P3.2 掛號(hào)記錄 用于記錄病人的掛號(hào)信息 收費(fèi)記錄 用于記錄收費(fèi)信息 值班醫(yī)生記錄 記錄醫(yī)生的值班安排

      診斷記錄 記錄病人的診斷過(guò)程 收費(fèi)款項(xiàng) 用于記錄收費(fèi)情況 收費(fèi)標(biāo)準(zhǔn) 用于統(tǒng)一收費(fèi)的標(biāo)準(zhǔn) 處方 用于記錄醫(yī)生對(duì)病人開出的處方 藥物記錄 用于記錄藥物價(jià)格剩余量等 藥物信息

      2.?dāng)?shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)

      數(shù)據(jù)庫(kù)的結(jié)構(gòu)設(shè)計(jì)主要包括概念設(shè)計(jì)和邏輯設(shè)計(jì)兩個(gè)部分。

      2.1 概念設(shè)計(jì)

      概念設(shè)計(jì)階段的任務(wù)是將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)(概念模型)的過(guò)程。要能充分的反應(yīng)事物與事物之間的聯(lián)系,是對(duì)現(xiàn)實(shí)世界的一個(gè)真實(shí)模型。在需求分析階段得到的應(yīng)用需求首先抽象為信息世界的結(jié)構(gòu)才能更好的用某一DBMS實(shí)現(xiàn)這些需求。E-R模型是概念模型的有力工具。逐一設(shè)計(jì)分E-R圖,再將所有的分E-R圖綜合成系統(tǒng)的總E-R圖。2.1.1 分E-R圖建立

      分E-R圖的建立依據(jù)于數(shù)據(jù)流圖的建立。以下可從第二層數(shù)據(jù)流圖分別建立分E-R圖。詳見圖2-1至2-3。

      2.診斷分ER圖

      圖2-1 分ER圖

      圖2-2 分ER圖 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      2.1.2 全局/整體E-R圖

      根據(jù)上述列出的分E-R圖,消除其中存在的沖突、冗余,建立全局E-R圖(詳見圖2-4),并列出所有實(shí)體和聯(lián)系屬性的屬性E-R圖(詳見圖2-5)

      圖2-4 總ER圖 圖2-3 分ER圖 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      圖2-5 屬性ER圖

      2.2 邏輯設(shè)計(jì)

      邏輯結(jié)構(gòu)設(shè)計(jì)的任務(wù)就是把概念結(jié)構(gòu)設(shè)計(jì)階段設(shè)計(jì)好的基本E-R圖轉(zhuǎn)換為與選用DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。根據(jù)DBMS產(chǎn)品以及不同系統(tǒng)的限制,設(shè)計(jì)邏輯結(jié)構(gòu)時(shí)一般有以下三個(gè)步驟:首先將概念結(jié)構(gòu)轉(zhuǎn)換為一般的

      關(guān)系、網(wǎng)狀、層次模型;將轉(zhuǎn)換來(lái)的關(guān)系、網(wǎng)狀、層次模型向特定DBMS支持下的數(shù)據(jù)模型轉(zhuǎn)換;最后對(duì)數(shù)據(jù)模型進(jìn)行優(yōu)化。

      醫(yī)院門診管理系統(tǒng)的設(shè)計(jì)采用關(guān)系模型。E-R圖轉(zhuǎn)化為關(guān)系模型實(shí)際上就是要將實(shí)體型、實(shí)體的屬性和實(shí)體型之間的聯(lián)系轉(zhuǎn)換為關(guān)系模式。

      一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系模式。實(shí)體的屬性就是關(guān)系的屬性,實(shí)體的碼就是關(guān)系的碼。對(duì)于實(shí)體型間的聯(lián)系有以下不同的情況:

      (1)一個(gè)1:1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一端對(duì)應(yīng)的關(guān)系模式合并。如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,則與該聯(lián)系相連的各實(shí)體的 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性。

      (2)一個(gè)1:n聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與n端對(duì)應(yīng)的關(guān)系模式合并。如果轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系沒(méi)模式,則與聯(lián)系向連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性。

      (3)一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式,與該聯(lián)系相連的各實(shí)體的碼以及聯(lián)系本身的屬性均轉(zhuǎn)換為關(guān)系的屬性,各實(shí)體的碼組成關(guān)系的碼或關(guān)系的碼的一部分。

      2.2.1 建立關(guān)系模式

      醫(yī)院門診管理系統(tǒng)涉及到的關(guān)系主要有:

      病人和醫(yī)生為n:1(多對(duì)一)的關(guān)系,將其之間的聯(lián)系與n端實(shí)體合并。病人和掛號(hào)單的關(guān)系為1:1(一對(duì)一),將其之間的聯(lián)系與任意一端實(shí)體合并??剖液歪t(yī)生為1:n(一對(duì)多)的關(guān)系,將其之間的聯(lián)系與n端實(shí)體合并。醫(yī)生和診斷結(jié)果的關(guān)系為1:n(一對(duì)多)的關(guān)系,也將其之間的聯(lián)系與n端實(shí)體合并。診斷結(jié)果和處方單的關(guān)系為1:1(一對(duì)一),將其之間的聯(lián)系與任意一端實(shí)體合并。處方單、收費(fèi)單和藥品之間的聯(lián)系為三元的關(guān)系,將它們之間的聯(lián)系轉(zhuǎn)換為獨(dú)立的關(guān)系模式。

      具體的轉(zhuǎn)換如下所示(主鍵加下劃線,外鍵斜體加粗): 病人(病人編號(hào),病人姓名,性別,年齡,醫(yī)生號(hào))醫(yī)生(醫(yī)生號(hào),醫(yī)生姓名,職稱,電話,科室號(hào))藥品(藥品編號(hào),藥品名稱,單價(jià),數(shù)量)處方(處方號(hào),日期,藥品編號(hào),收費(fèi)單號(hào))收費(fèi)單(收費(fèi)單號(hào),日期,金額,收費(fèi)方式)診斷結(jié)果(醫(yī)生號(hào),病人編號(hào),病名,處方號(hào))

      掛號(hào)單(掛號(hào)單號(hào),掛號(hào)方式,日期,病人編號(hào),收費(fèi)單號(hào))科室(科室號(hào),科室名稱,聯(lián)系方式)2.2.2 關(guān)系模式規(guī)范化處理

      關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系必須滿足一定的規(guī)范化要求,對(duì)于不同的規(guī)范化程度可用范式來(lái)衡量。范式是符合某一種級(jí)別的關(guān)系模式的集合,是衡量關(guān)系模式規(guī)范化程度的標(biāo)準(zhǔn),達(dá)到的關(guān)系才是規(guī)范化的。一個(gè)低一級(jí)范式的關(guān)系模式,通過(guò)模式分解可以轉(zhuǎn)換為若干個(gè)高一級(jí)范式的關(guān)系模式的集合。在本系統(tǒng)中,所有建立的關(guān)系模式都符合三范式。12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      2.2.3 用戶子模式建立

      根據(jù)需求分析,研究建立滿足不同需求的用戶子模式,各個(gè)子模式的建立在更大程度上方便數(shù)據(jù)操作。用戶子模式的定義如下: 收費(fèi)細(xì)則視圖(病人號(hào),收費(fèi)單號(hào),日期,金額,收費(fèi)方式)病人-藥品視圖(病人號(hào),藥品編號(hào))診斷結(jié)果視圖(病人號(hào),病人姓名,病名)醫(yī)生病人視圖(醫(yī)生號(hào),醫(yī)生姓名,病人姓名)科室醫(yī)生視圖(醫(yī)生號(hào),醫(yī)生姓名,科室名稱)

      病人掛號(hào)視圖(病人號(hào),病人姓名,掛號(hào)單號(hào),掛號(hào)日期,掛號(hào)方式)2.2.4 關(guān)系模式邏輯結(jié)構(gòu)定義

      表2-6 病人關(guān)系模式

      屬性名 Pno Pname Psex Page Dno 含義 病人編號(hào) 病人姓名 性別 年齡 醫(yī)生號(hào) 數(shù)據(jù)類型 varchar varchar varchar int varchar

      長(zhǎng)度 20 20 20 20

      是否為主屬性 是

      是否為外鍵

      約束條件

      not null 0-150

      表2-7 醫(yī)生關(guān)系模式

      屬性名 Dno Dname Dtitle Ddept Dtel 含義 醫(yī)生號(hào) 醫(yī)生姓名 職稱 科室號(hào) 電話 數(shù)據(jù)類型 varchar varchar varchar varchar varchar

      長(zhǎng)度 20 20 20 20 20

      是否為主屬性 是

      是否為外鍵

      約束條件

      not null

      表2-8 藥品關(guān)系模式

      屬性名 Mno Mname Mprice Mquantity 含義 藥品編號(hào) 藥品名稱 單價(jià) 數(shù)量

      數(shù)據(jù)類型 varchar varchar float int

      長(zhǎng)度 20 20

      是否為主屬性 是

      是否為外鍵

      約束條件

      not null

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      表2-9 處方單關(guān)系模式

      屬性名 Pr_no Pr_date Mno Bno 含義 處方號(hào) 日期 藥品編號(hào) 收費(fèi)單號(hào) 數(shù)據(jù)類型 varchar date varchar varchar

      長(zhǎng)度 20 20 20

      是否為主屬性 是

      是否為外鍵

      是 是

      約束條件

      表2-10 收費(fèi)單關(guān)系模式

      屬性名 Bno Bdate Bmoney Bway 含義 收費(fèi)單號(hào) 日期 金額 收費(fèi)方式 數(shù)據(jù)類型 varchar date float varchar

      長(zhǎng)度 20 20 20

      是否為主屬性 是

      是否為外鍵

      約束條件

      表2-11 診斷結(jié)果關(guān)系模式

      屬性名 Dno Pname Iname Pr_no 含義 醫(yī)生號(hào) 病人姓名 病名 處方號(hào) 數(shù)據(jù)類型 varchar varchar varchar

      長(zhǎng)度

      是否為主屬性

      是否為外鍵 是 是

      約束條件是 20 是

      表2-12 掛號(hào)單關(guān)系模式

      屬性名 Rno Rway Rdate Pname Bno 含義 掛號(hào)單號(hào) 掛號(hào)方式 日期 病人姓名 收費(fèi)單號(hào) 數(shù)據(jù)類型 varchar varchar date varchar varchar

      長(zhǎng)度

      是否為主屬性

      是否為外鍵

      是 是

      約束條件是 20

      20

      表2-13 科室關(guān)系模式

      屬性名 Dp_no Dp_name Dp_tel 含義 科室號(hào) 科室名稱 聯(lián)系方式 數(shù)據(jù)類型 varchar varchar varchar

      長(zhǎng)度

      是否為主屬性

      是否為外鍵

      約束條件

      not null 是 20 20

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      3.?dāng)?shù)據(jù)庫(kù)物理設(shè)計(jì)

      主要包括數(shù)據(jù)庫(kù)在物理設(shè)備上的存儲(chǔ)結(jié)構(gòu)與存取方法就是數(shù)據(jù)庫(kù)的物理結(jié)構(gòu),它依賴于選定的數(shù)據(jù)庫(kù)管理系統(tǒng)。為一個(gè)給定的邏輯數(shù)據(jù)模型選取一個(gè)最合適的應(yīng)用環(huán)境的物理結(jié)構(gòu)的過(guò)程,就是數(shù)據(jù)庫(kù)的物理設(shè)計(jì)。這一階段主要的任務(wù)是確定數(shù)據(jù)庫(kù)的物理結(jié)構(gòu),并不斷的進(jìn)行優(yōu)化處理,主要建立索引、觸發(fā)器、存儲(chǔ)過(guò)程。

      索引名稱 idx_bno unique_pname unique_mname

      索引類型 唯

      一、非聚集 唯

      一、非聚集 唯

      一、非聚集

      用途

      按bno屬性列升序排列 實(shí)現(xiàn)唯一性約束 實(shí)現(xiàn)唯一性約束

      4.?dāng)?shù)據(jù)庫(kù)實(shí)施與測(cè)試

      主要包括數(shù)據(jù)庫(kù)實(shí)施和測(cè)試兩個(gè)部分。(下面分別寫出SQL Server 2008和Oracle的實(shí)施測(cè)試過(guò)程)

      4.1 SQL Server 2008數(shù)據(jù)庫(kù)實(shí)施與測(cè)試

      4.1.1 數(shù)據(jù)庫(kù)及數(shù)據(jù)庫(kù)對(duì)象建立

      本系統(tǒng)建立名為Hospital的數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)對(duì)象分為基本表、視圖、索引、觸發(fā)器、存儲(chǔ)過(guò)程等。下面分別列出相關(guān)代碼。1.基本表

      create table Department(Dp_no varchar(20)primary key, Dp_name varchar(20)not null, Dp_tel varchar(20))

      create table Doctor(Dno varchar(20)primary key, Dname varchar(20)not null, Dtitle varchar(20), 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      Dp_no varchar(20)references Department(Dp_no), Dtel varchar(20))

      create table Patient(Pno varchar(20)primary key, Pname varchar(20), Psex varchar(20), Page int check(Page>=0 and Page<=150), Dno varchar(20)references Doctor(Dno))

      create table Medicine(Mno varchar(20)primary key, Mname varchar(20)not null, Mprice float, Mquantity int)

      create table Bill(Bno varchar(20)primary key, Bdate date, Bmoney float, Bway varchar(20))

      create table Prescription(Pr_no varchar(20)primary key, Pr_date date, Mno varchar(20)references Medicine(Mno), Bno varchar(20)references Bill(Bno)14 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文)

      create table Diagnose(Dno varchar(20)references Doctor(Dno), Pno varchar(20)references Patient(Pno), Iname varchar(20), Pr_no varchar(20)references Prescription(Pr_no), primary key(Dno,Pno))

      create table Register(Rno varchar(20)primary key, Rway varchar(20), Rdate date, Pno varchar(20)references Patient(Pno), Bno varchar(20)references Bill(Bno))2.視圖

      (1)收費(fèi)細(xì)則視圖(BillDetail)create view BillDetail as select distinct Diagnose.pno,Bill.Bno,Bdate,Bmoney,Bway from Prescription,Bill,Diagnose,Register where Register.pno=Diagnose.pno and(Diagnose.Pr_no=Prescription.Pr_no and Prescription.bno=Bill.bno or Register.bno=Bill.bno)(2)病人-藥品視圖(Patient_Med)create view Patient_Med as select Pno,Mname from Medicine,Prescription,Diagnose 15 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      where Medicine.Mno=Prescription.mno and Diagnose.Pr_no=Prescription.Pr_no(3)診斷結(jié)果視圖(Patient_Diag)create view Patient_Diag as select Patient.pno,pname,iname from Patient,Diagnose where Diagnose.Pno=Patient.pno(4)醫(yī)生病人視圖(Docter_Patient)create view Docter_Patient as select Doctor.dno,dname,pname from Patient,Doctor where Patient.dno=Doctor.dno(5)科室醫(yī)生視圖(Dept_Doctor)create view Dept_Doctor as select dno,dname,Dp_name from Doctor,Department where Department.Dp_no=Doctor.Dp_no(6)病人掛號(hào)視圖(Patient_Register)create view Patient_Register as select Patient.pno,pname,rno,rway,rdate from Patient,Register where Register.pno=Patient.pno 3.索引

      create unique index unique_mname on Medicine(Mname)create unique index unique_pname on Patient(pname)create index idx_bno on Bill(bno asc)16 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      4.存儲(chǔ)過(guò)程

      (1)當(dāng)有患者通過(guò)不同的方式掛號(hào)時(shí),要在Register新增一條掛號(hào)信息,同時(shí)在Patient表添加一個(gè)病人記錄,在Bill表中添加一條掛號(hào)收費(fèi)記錄 create proc addpatient @Rno varchar(20), @Rway varchar(20), @Pno varchar(20), @Bno varchar(20), @Pname varchar(20), @Psex varchar(20), @Page int, @Dno varchar(20), @Bmoney float as insert into Patient values(@Pno,@Pname,@Psex,@Page,@Dno)insert into Bill values(@Bno,GETDATE(),@Bmoney,'掛號(hào)收費(fèi)')insert into Register values(@Rno,@Rway,GETDATE(),@Pno,@Bno)(2)一個(gè)患者確診完畢,向Diagnose新增一條診斷結(jié)果記錄,Prescription表添加一條處方記錄,并更新Bill表中相應(yīng)收費(fèi)信息 create proc addDiagnose @Dno varchar(20), @Pno varchar(20), @Iname varchar(20), @Pr_no varchar(20), @Mno varchar(20), @Bno varchar(20), @Bmoney float as 17

      時(shí)在同12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      insert into Bill values(@Bno,GETDATE(),@Bmoney,'藥品收費(fèi)')insert into Prescription values(@Pr_no,GETDATE(),@Mno,@Bno)insert into Diagnose values(@Dno,@Pno,@Iname,@Pr_no)(4)插入一條藥品信息 create proc MedicineInsert @mno varchar(20), @mname varchar(20), @mprice float, @mquantity int as insert into Medicine values(@Mno,@Mname,@Mprice,@Mquantity)(4)修改某一科室的電話 create proc change_tel @dp_no varchar(20), @Dp_tel varchar(20)as update Department set dp_tel=@Dp_tel where Dp_no=@dp_no(5)修改某一藥品剩余量 create proc change_med @mno varchar(20), @mquantity int as update Medicine set mquantity=@mquantity where mno=@mno 18 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      (6)在Dept_Doctor查詢醫(yī)院門診部各個(gè)科室的醫(yī)生人數(shù) create proc Dept_Doc as select Dp_name,COUNT(dno)as rs from Dept_Doctor group by Dp_name(7)在Docter_Patient查詢某一病人的主治醫(yī)生信息 create proc p_doctor @pname varchar(20)as select * from Doctor where Dno =(select Dno from Docter_Patient where pname=@pname)(8)在Docter_Patient查詢某一醫(yī)生主治的全部病人信息 create proc D_Patient @dno varchar(20)as select pno,pname,psex,page from Patient where pname in(select pname from Docter_Patient where dno=@dno)(9)在Patient_Diag查詢患感冒的病人姓名 create proc Diag_p as select pname from Patient_Diag where iname='感冒'(10)在Patient_Diag查詢某一病人的診斷結(jié)果 create proc p_Diag @pno varchar(20)as select iname 19 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      from Patient_Diag where pno=@pno(11)在Patient_Med查詢某病人購(gòu)買的藥品 create proc p_Med @pno varchar(20)as select mname from Patient_Med where pno=@pno(12)在BillDetail查詢某病人購(gòu)買的藥品總價(jià) create proc medpay @pno varchar(20)as select Bway,bmoney from BillDetail where pno=@pno and Bway='藥品收費(fèi)'(13)在BillDetail查詢某一病人的收費(fèi)總和(=掛號(hào)+取藥)create proc pay @pno varchar(20)as select sum(bmoney)as total from BillDetail where pno=@pno group by pno(14)在Patient_Register查詢某病人的掛號(hào)方式 create proc reg_way @pno varchar(20)as select rway from Patient_Register where pno=@pno 20 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      5.觸發(fā)器

      當(dāng)向處方表(Prescription)中添加元組時(shí),同步對(duì)表Medicine的級(jí)聯(lián)更新。(藥品數(shù)量-1)

      create trigger t1 on Prescription after insert,update as declare @pr_no varchar(20),@mno varchar(20)declare c2 cursor for select pr_no,mno from inserted open c2 fetch next from c2 into @pr_no,@mno while(@@fetch_status=0)begin

      update Medicine set mquantity=mquantity-1 where mno=@mno fetch next from c2 into @pr_no,@mno end close c2 deallocate c2 4.1.2 數(shù)據(jù)入庫(kù)

      Patient表

      Register表 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      Department表

      Doctor表

      Medicine表

      Prescription表

      Diagnose表 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      Bill表

      4.1.3 數(shù)據(jù)庫(kù)測(cè)試 1.視圖

      病人-藥品視圖(Patient_Med)

      收費(fèi)細(xì)則視圖(BillDetail)12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      診斷結(jié)果視圖(Patient_Diag)

      醫(yī)生病人視圖(Docter_Patient)

      科室醫(yī)生視圖(Dept_Doctor)

      病人掛號(hào)視圖(Patient_Register)

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      2.驗(yàn)證存儲(chǔ)過(guò)程

      (1)當(dāng)有患者通過(guò)不同的方式掛號(hào)時(shí),要在Register新增一條掛號(hào)信息,同時(shí)在Patient表添加一個(gè)病人記錄,在Bill表中添加一條掛號(hào)收費(fèi)記錄

      (2)一個(gè)患者確診完畢,向Diagnose新增一條診斷結(jié)果記錄,同時(shí)在Prescription表添加一條處方記錄,并更新Bill表中相應(yīng)收費(fèi)信息

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      (3)插入一條藥品信息

      (4)修改某一科室的電話

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      (5)修改某一藥品剩余量

      (6)在Dept_Doctor查詢醫(yī)院門診部各個(gè)科室的醫(yī)生人數(shù)

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      (7)在Docter_Patient查詢某一病人的主治醫(yī)生信息

      (8)在Docter_Patient查詢某一醫(yī)生主治的全部病人信息

      (9)在Patient_Diag查詢患感冒的病人姓名 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      (10)在Patient_Diag查詢某一病人的診斷結(jié)果

      (11)在Patient_Med查詢某病人購(gòu)買的藥品

      (12)在BillDetail查詢某病人購(gòu)買的藥品總價(jià)

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      (13)在BillDetail查詢某一病人的收費(fèi)總和(=掛號(hào)+取藥)

      (14)在Patient_Register查詢某病人的掛號(hào)方式

      3.驗(yàn)證觸發(fā)器

      (見存儲(chǔ)過(guò)程2的驗(yàn)證)

      4.2 Oracle數(shù)據(jù)庫(kù)實(shí)施與測(cè)試

      4.2.1 數(shù)據(jù)庫(kù)及數(shù)據(jù)庫(kù)對(duì)象建立

      本系統(tǒng)建立名為Hospital的數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)對(duì)象分為基本表、視圖、存儲(chǔ)過(guò) 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      程等。下面分別列出相關(guān)代碼。

      1.基本表

      create table Department(Dp_no varchar(20)primary key, Dp_name varchar(20)not null, Dp_tel varchar(20))

      create table Doctor(Dno varchar(20)primary key, Dname varchar(20)not null, Dtitle varchar(20), Dp_no varchar(20)references Department(Dp_no), Dtel varchar(20))

      create table Patient(Pno varchar(20)primary key, Pname varchar(20), Psex varchar(20), Page int check(Page>=0 and Page<=150), Dno varchar(20)references Doctor(Dno))

      create table Medicine(Mno varchar(20)primary key, Mname varchar(20)not null, Mprice float, Mquantity int)

      create table Bill(Bno varchar(20)primary key, Bdate date, Bmoney float, Bway varchar(20))

      create table Prescription

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      (Pr_no varchar(20)primary key, Pr_date date, Mno varchar(20)references Medicine(Mno), Bno varchar(20)references Bill(Bno))

      create table Diagnose(Dno varchar(20)references Doctor(Dno), Pno varchar(20)references Patient(Pno), Iname varchar(20), Pr_no varchar(20)references Prescription(Pr_no), primary key(Dno,Pno))

      create table Register(Rno varchar(20)primary key, Rway varchar(20), Rdate date, Pno varchar(20)references Patient(Pno), Bno varchar(20)references Bill(Bno))2.視圖

      (1)收費(fèi)細(xì)則視圖(BillDetail)create view BillDetail as select distinct Diagnose.pno,Bill.Bno,Bdate,Bmoney,Bway from Prescription,Bill,Diagnose,Register where Register.pno=Diagnose.pno and(Diagnose.Pr_no=Prescription.Pr_no and Prescription.bno=Bill.bno or Register.bno=Bill.bno)(2)病人-藥品視圖(Patient_Med)create view Patient_Med as select Pno,Mname from Medicine,Prescription,Diagnose 32 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      where Medicine.Mno=Prescription.mno and Diagnose.Pr_no=Prescription.Pr_no(3)診斷結(jié)果視圖(Patient_Diag)create view Patient_Diag as select Patient.pno,pname,iname from Patient,Diagnose where Diagnose.Pno=Patient.pno(4)醫(yī)生病人視圖(Docter_Patient)create view Docter_Patient as select Doctor.dno,dname,pname from Patient,Doctor where Patient.dno=Doctor.dno(5)科室醫(yī)生視圖(Dept_Doctor)create view Dept_Doctor as select dno,dname,Dp_name from Doctor,Department where Department.Dp_no=Doctor.Dp_no(6)病人掛號(hào)視圖(Patient_Register)create view Patient_Register as select Patient.pno,pname,rno,rway,rdate from Patient,Register where Register.pno=Patient.pno 3.存儲(chǔ)過(guò)程

      (1)當(dāng)有患者通過(guò)不同的方式掛號(hào)時(shí),要在Register新增一條掛號(hào)信息,同時(shí)在Patient表添加一個(gè)病人記錄,在Bill表中添加一條掛號(hào)收費(fèi)記錄

      create or replace procedure addpatient(v_Rno varchar,v_Rway varchar,v_Pno varchar,v_Bno varchar,v_Pname 33 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      varchar,v_Psex varchar,v_Page int,v_Dno varchar,v_Bmoney float)is begin insert into Patient values(v_Pno,v_Pname,v_Psex,v_Page,v_Dno);insert into Bill values(v_Bno,sysdate(),v_Bmoney,'掛號(hào)收費(fèi)');insert into Register values(v_Rno,v_Rway,sysdate(),v_Pno,v_Bno);end addpatient;begin addpatient('R021','電話預(yù)約','P021','B042','張三','男',18,'D014',21);end;(2)插入一條藥品信息

      create or replace procedure MedicineInsert(mno varchar,mname varchar,mprice float,mquantity int)is begin insert into Medicine values(Mno,Mname,Mprice,Mquantity);end MedicineInsert;begin MedicineInsert('M043','克拉霉素膠囊(桑美)',9.8,200);end;(3)修改某一科室的電話

      create or replace procedure change_tel(v_dp_no varchar,v_Dp_tel varchar)is 34 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      begin update Department set dp_tel=v_Dp_tel where Dp_no=v_dp_no;commit;end change_tel;begin change_tel('Dp011','87051621');end;(4)修改某一藥品剩余量

      create or replace procedure change_med(v_mno varchar, v_mquantity int)is begin update Medicine set mquantity=v_mquantity where mno=v_mno;commit;end change_med;begin change_med('M024',150);end;(5)在Dept_Doctor查詢醫(yī)院門診部各個(gè)科室的醫(yī)生人數(shù)

      create or replace procedure Dept_Doc(Dp_name out varchar,rs out number)is cursor c1 is select Dp_name,COUNT(dno)as rs from Dept_Doctor group by Dp_name;begin open c1;35 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      loop fetch c1 into Dp_name,rs;exit when c1%notfound;dbms_output.put_line(Dp_name||' '||rs);end loop;close c1;end Dept_Doc;declare a varchar(20);b number;begin Dept_Doc(a,b);end;(6)在Docter_Patient查詢某一病人的主治醫(yī)生信息

      create or replace procedure p_doctor(v_pname varchar,v_dno out varchar,v_dname out

      varchar,v_dtitle

      out

      varchar,v_dp_no

      out varchar,v_dtel out varchar)is begin select dno,dname,dtitle,dp_no,dtel into v_dno,v_dname,v_dtitle,v_dp_no,v_dtel from Doctor where Dno =(select Dno from Docter_Patient where pname=v_pname);dbms_output.put_line(v_dno||' '||v_dname||' '||v_dtitle||' '||v_dp_no||' '||v_dtel);end p_doctor;declare f varchar(20):='張三';a varchar(20);36 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      b varchar(20);c varchar(20);d varchar(20);e varchar(20);begin p_doctor(f,a,b,c,d,e);end;(7)在Docter_Patient查詢某一醫(yī)生主治的全部病人信息

      create or replace procedure D_Patient(v_dno varchar,pno out varchar,pname out varchar,psex out varchar,page out varchar)is cursor c1 is select pno,pname,psex,page from Patient where pname in(select pname from Docter_Patient where dno=v_dno);begin open c1;loop fetch c1 into pno,pname,psex,page;exit when c1%notfound;dbms_output.put_line(pno||'

      '||pname||'

      '||psex||' '||page);end loop;close c1;end D_Patient;declare f varchar(20):='D017';a varchar(20);b varchar(20);c varchar(20);d varchar(20);begin 37 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      D_Patient(f,a,b,c,d);end;(8)在Patient_Diag查詢患感冒的病人姓名

      create or replace procedure Diag_p(pname out varchar)is cursor c1 is select pname from Patient_Diag where iname='感冒';begin open c1;loop fetch c1 into pname;exit when c1%notfound;dbms_output.put_line(pname);end loop;close c1;end Diag_p;declare a varchar(20);begin Diag_p(a);end;(9)在Patient_Diag查詢某一病人的診斷結(jié)果

      create or replace procedure p_Diag(v_pno varchar,v_iname out varchar)is begin select iname into v_iname from Patient_Diag where pno=v_pno;dbms_output.put_line(v_iname);end p_Diag;38 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      declare a varchar(20);begin p_Diag('P019',a);end;(10)在Patient_Med查詢某病人購(gòu)買的藥品

      create or replace procedure p_Med(v_pno varchar,v_mname out varchar)is begin select mname into v_mname from Patient_Med where pno=v_pno;dbms_output.put_line(v_mname);end p_Med;declare a varchar(20);begin p_Med('P020',a);end;(11)在BillDetail查詢某病人購(gòu)買的藥品總價(jià)

      create or replace procedure medpay(v_pno varchar,v_Bway out varchar,v_bmoney out varchar)is begin select Bway,bmoney into v_bway,v_bmoney from BillDetail where pno=v_pno and Bway='藥品收費(fèi)';39 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      dbms_output.put_line(v_bway||' '||v_bmoney);end medpay;declare a varchar(20);b varchar(20);begin medpay('P002',a,b);end;(12)在BillDetail查詢某一病人的收費(fèi)總和(=掛號(hào)+取藥)

      create or replace procedure pay(v_pno varchar,v_total out number)is begin select sum(bmoney)as total into v_total from BillDetail where pno=v_pno group by pno;dbms_output.put_line(v_total);end pay;declare a number;begin pay('P005',a);end;(13)在Patient_Register查詢某病人的掛號(hào)方式

      create or replace procedure reg_way(v_pno varchar,v_rway out varchar)is begin select rway 40 12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      into v_rway from Patient_Register where pno=v_pno;dbms_output.put_line(v_rway);end reg_way;declare a varchar(20);begin reg_way('P011',a);end;4.2.2 數(shù)據(jù)入庫(kù) Bill表

      Department表

      Patient表

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      Doctor表

      Medicine表

      Diagnose表

      Prescription表

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      Register表

      4.2.3 數(shù)據(jù)庫(kù)測(cè)試

      1.視圖

      收費(fèi)細(xì)則視圖(BillDetail)

      診斷結(jié)果視圖(Patient_Diag)

      醫(yī)生病人視圖(Docter_Patient)

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      科室醫(yī)生視圖(Dept_Doctor)

      病人掛號(hào)視圖(Patient_Register)

      2.驗(yàn)證存儲(chǔ)過(guò)程

      (1)當(dāng)有患者通過(guò)不同的方式掛號(hào)時(shí),要在Register新增一條掛號(hào)信息,同時(shí)在Patient表添加一個(gè)病人記錄,在Bill表中添加一條掛號(hào)收費(fèi)記錄

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      (2)一個(gè)患者確診完畢,向Diagnose新增一條診斷結(jié)果記錄,同時(shí)在表添加一條處方記錄,并更新Bill表中相應(yīng)收費(fèi)信息

      Prescription12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      (3)插入一條藥品信息

      (4)修改某一科室的電話

      (5)修改某一藥品剩余量

      12級(jí)軟件工程專業(yè)1班數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)課程設(shè)計(jì)課程論文

      (6)在Dept_Doctor查詢醫(yī)院門診部各個(gè)科室的醫(yī)生人數(shù)

      (7)在Docter_Patient查詢某一病人的主治醫(yī)生信息

      (8)在Docter_Patient查詢某一醫(yī)生主治的全部病人信息

      第二篇:酒店管理系統(tǒng) (數(shù)據(jù)庫(kù)課程設(shè)計(jì))

      數(shù)據(jù)庫(kù) 酒店管理系統(tǒng) 課程設(shè)計(jì)(基于 SQL server 2000)

      實(shí)現(xiàn)過(guò)程

      1.1 通過(guò)查詢分析器實(shí)現(xiàn)建立數(shù)據(jù)庫(kù)、數(shù)據(jù)表

      ------------------------------創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表---(1)創(chuàng)建酒店管理系統(tǒng)數(shù)據(jù)庫(kù)

      CREATE DATABASE 酒店管理系統(tǒng)(2)創(chuàng)建客房信息表

      CREATE TABLE 客房

      (客房編號(hào) CHAR(8)PRIMARY KEY,客房類型 CHAR(8)NOT NULL,價(jià)格 SMALLMONEY NOT NULL,床位數(shù) INT NOT NULL,使用狀態(tài) CHAR(8)NOT NULL)

      INSERT INTO 客房 VALUES('101','一',100,1,'在使用')INSERT INTO 客房 VALUES('102','二',200,2,'在使用')INSERT INTO 客房 VALUES('103','二',200,1,'在使用')INSERT INTO 客房 VALUES('104','三',300,2,'在使用')INSERT INTO 客房 VALUES('105','三',300,1,'未使用')

      (3)創(chuàng)建客戶信息表

      CREATE TABLE 客戶

      (客戶編號(hào) CHAR(8)PRIMARY KEY, 客戶名稱 CHAR(10)NOT NULL,身份證號(hào) CHAR(18)NOT NULL,聯(lián)系地址 CHAR(25),聯(lián)系電話 CHAR(10))INSERT INTO 客戶 VALUES('1001','王一',12234,'江西','3245354')INSERT INTO 客戶 VALUES('1002','張三',34234,'江西','2442442')INSERT INTO 客戶 VALUES('1003','李四',56465,'江西','5654645')INSERT INTO 客戶 VALUES('1004','王錢',65435,'江西','5676577')INSERT INTO 客戶 VALUES('1005','孫志',11464,'江西','4234343')

      (4)創(chuàng)建入住登記表

      CREATE TABLE 入住登記

      (客房編號(hào) CHAR(8)FOREIGN KEY REFERENCES 客房(客房編號(hào)),客戶編號(hào) CHAR(8)FOREIGN KEY REFERENCES 客戶(客戶編號(hào)),預(yù)定日期 DATETIME,預(yù)定數(shù)量 INT, PRIMARY KEY(客房編號(hào),客戶編號(hào)))

      INSERT INTO 入住登記 VALUES('101','1001',2010-10-10,1)INSERT INTO 入住登記 VALUES('102','1002',2010-12-10,1)INSERT INTO 入住登記 VALUES('103','1003',2010-12-26,1)INSERT INTO 入住登記 VALUES('104','1004',2010-12-9,1)--------創(chuàng)建查詢視圖---------1.2系統(tǒng)功能相應(yīng)的查詢視圖:

      (1)客戶信息查詢視圖

      CREATE VIEW 客戶信息查詢

      AS SELECT * FROM 客戶

      (2)客房信息查詢

      CREATE VIEW 客房信息查詢

      AS SELECT

      * FROM 客房

      (3)入住信息查詢

      CREATE VIEW 入住登記信息查詢 AS SELECT

      * FROM 入住登記

      (4)入住信息查詢

      CREATE VIEW 入住信息查詢

      AS SELECT入住登記.客房編號(hào),客戶名稱,入住登記.客戶編號(hào),客房.客房類型,價(jià)格,使用狀態(tài)

      FROM 客房,客戶,入住登記

      WHERE 客房.客房編號(hào)=入住登記.客房編號(hào) AND 入住登記.客戶編號(hào)=客戶.客戶編號(hào)

      ---------------建立索引-----------------------1.3建立索引及數(shù)據(jù)入庫(kù)

      1.建立客房編號(hào),價(jià)格,客戶編號(hào),客戶名稱的索引 創(chuàng)建客房表索引:

      CREATE UNIQUE INDEX UKF ON 客房(客房編號(hào),價(jià)格)

      創(chuàng)建客戶表索引:

      CREATE UNIQUE INDEX UKH ON 客戶(客戶編號(hào),客戶名稱)

      創(chuàng)建入住表索引:

      CREATE UNIQUE INDEX URZ ON 入住登記(客戶編號(hào),客房編號(hào))2.數(shù)據(jù)入庫(kù)

      方法一 酒店管理系統(tǒng)包括客房信息表,客戶信息表,入住登記信息表。采用Excel中錄入數(shù)據(jù),然后使用SQL Server 2000數(shù)據(jù)導(dǎo)入、導(dǎo)出功能直接將數(shù)據(jù)導(dǎo)入到相應(yīng)的基本表。

      方法二 在查詢分析器中插入相關(guān)數(shù)據(jù),用SQL語(yǔ)句插入。

      ----------創(chuàng)建存儲(chǔ)過(guò)程----------------------1.4建立存儲(chǔ)過(guò)程

      1.4.1客房信息存儲(chǔ)過(guò)程

      插入客房信息存儲(chǔ)過(guò)程:

      CREATE PROCEDURE 插入客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS INSERT INTO 客房 VALUES(@KFB,@KFL,@JG,@CWS,@SYZT)

      修改客房信息存儲(chǔ)過(guò)程:

      CREATE PROCEDURE 修改客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS UPDATE 客房

      SET 客房類型=@KFL,價(jià)格=@JG,床位數(shù)=@CWS,使用狀態(tài)=@SYZT WHERE 客房編號(hào)=@KFB 刪除客房信息存儲(chǔ)過(guò)程:

      CREATE PROCEDURE 刪除客房信息(@KFB CHAR(8))AS DELETE FROM 客房 WHERE 客房編號(hào)=@KFB

      1.4.2客戶信息存儲(chǔ)過(guò)程

      插入客戶信息

      CREATE PROCEDURE 插入客戶信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS INSERT INTO 客戶 VALUES(@KHB,@KFM,@SFZ,@LXDZ,@LXDH)修改客戶信息

      CREATE PROCEDURE 修改客戶信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS UPDATE 客戶

      SET 客戶名稱=@KFM,身份證號(hào)=@SFZ,聯(lián)系地址=@LXDZ,聯(lián)系電話=@LXDH WHERE 客戶編號(hào)=@KHB

      刪除客戶信息

      CREATE PROCEDURE 刪除客戶信息(@KHB CHAR(8))AS DELETE FROM 客戶

      WHERE 客戶編號(hào)=@KHB

      EXEC 刪除客戶信息 @KHB='10009'

      3.4.3創(chuàng)建入住信息存儲(chǔ)過(guò)程 插入入住信息

      CREATE PROCEDURE 插入入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS INSERT INTO 入住登記 VALUES(@KFB,@KHB,@YDRQ,@YDSL)

      修改入住信息

      CREATE PROCEDURE 修改入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS UPDATE 入住登記

      SET 客房編號(hào)=@KFB,預(yù)定日期=@YDRQ ,預(yù)定數(shù)量=@YDSL WHERE 客戶編號(hào)=@KHB

      刪除入住信息

      CREATE PROCEDURE 刪除入住信息(@KHB CHAR(8))AS DELETE

      FROM 入住登記

      WHERE 客戶編號(hào)=@KHB

      1.5查詢存儲(chǔ)過(guò)程的創(chuàng)建

      客房編號(hào)查詢

      CREATE PROCEDURE 客房編號(hào)查詢(@KFB CHAR(8), @KFL CHAR(8)OUTPUT, @JG SMALLMONEY OUTPUT, @CWS INT OUTPUT, @SYZT CHAR(8)OUTPUT)AS SELECT @KFL=客房類型,@JG=價(jià)格,@CWS=床位數(shù),@SYZT=使用狀態(tài) FROM 客房

      WHERE 客房編號(hào)=@KFB

      客戶編號(hào)查詢

      CREATE PROCEDURE 客戶編號(hào)查詢(@KHB CHAR(8), @KFM CHAR(10)OUTPUT , @SFZ CHAR(18)OUTPUT, @LXDZ CHAR(25)OUTPUT, @LXDH CHAR(10)OUTPUT)AS SELECT @KFM=客戶名稱,@SFZ=身份證號(hào),@LXDZ=聯(lián)系地址,@LXDH=聯(lián)系電話 FROM 客戶

      WHERE 客戶編號(hào)=@KHB

      入住客戶編號(hào)查詢

      CREATE PROCEDURE 入住客戶編號(hào)查詢(@KFB CHAR(8)OUTPUT, @KHB CHAR(8), @YDRQ DATETIME OUTPUT, @YDSL INT OUTPUT)AS SELECT @KFB=客房編號(hào),@YDRQ=預(yù)定日期,@YDSL=預(yù)定數(shù)量 FROM 入住登記

      WHERE 客戶編號(hào)=@KHB

      --------建立觸發(fā)器--------------1.6、建立觸發(fā)器保證數(shù)據(jù)的一致性

      客房使用狀態(tài)的控制

      CREATE TRIGGER 控制觸發(fā)器

      ON 入住登記 FOR INSERT AS

      UPDATE 客房

      SET 使用狀態(tài)='使用中' WHERE 客房編號(hào)=ANY(SELECT 客房編號(hào) FROM INSERTED)

      控制入住信息刪除的觸發(fā)器

      CREATE TRIGGER 入住刪除觸發(fā)器

      ON 入住登記 FOR DELETE AS BEGIN DELETE FROM 客戶 WHERE 客戶編號(hào)=ANY(SELECT 客戶編號(hào) FROM DELETED)

      UPDATE 客房

      SET 使用狀態(tài)='未使用' WHERE 客房編號(hào)=ANY(SELECT 客房編號(hào) FROM DELETED)END 客戶信息刪除的控制

      CREATE TRIGGER 客戶刪除觸發(fā)器

      ON 客戶

      FOR DELETE AS BEGIN DELETE FROM 入住

      WHERE 客戶編號(hào)=ANY(SELECT 客戶編號(hào) FROM DELETED)

      UPDATE 客房

      SET 使用狀態(tài)='未使用' WHERE 客房編號(hào)=ANY(SELECT 客房編號(hào) FROM DELETED)END

      客房刪除觸發(fā)器

      CREATE TRIGGER 客房刪除觸發(fā)器

      ON 客房

      FOR DELETE AS

      DELETE FROM 入住

      WHERE 客戶編號(hào)=ANY(SELECT 客戶編號(hào) FROM DELETED)

      酒店管理系統(tǒng)數(shù)據(jù)庫(kù)腳本

      ------------------------數(shù)據(jù)庫(kù)初始化------set nocount on set dateformat mdy go

      use master

      go if exists(select * from sysdatabases where name='酒店管理系統(tǒng)')

      /*刪除在master中已存*/ /*在的名為酒店管理系統(tǒng)的數(shù)據(jù)庫(kù)*/ drop database 酒店管理系統(tǒng) go--------------------------酒店管理系統(tǒng)的建立-create database 酒店管理系統(tǒng) on primary /*設(shè)定系統(tǒng)主文件*/(name='酒店管理系統(tǒng)_data', filename='d:酒店管理系統(tǒng).mdf', size=10, maxsize=50, filegrowth=5)

      log on

      /*創(chuàng)建事務(wù)日志文件*/(name='酒店管理系統(tǒng)_log', filename='d:酒店管理系統(tǒng).ldf', size=5, maxsize=25, filegrowth=5)go

      ---------(注:刪除查詢分析器中的以上代碼后,運(yùn)行以下代碼)-----------------建立信息表----------use 酒店管理系統(tǒng)

      if exists(select * from sysobjects where name='客戶')drop table 客戶 go print 'drop table 客戶' print 'create table 客戶' go /*客戶信息表*/ CREATE TABLE 客戶

      /*創(chuàng)建客戶信息表*/(客戶編號(hào) CHAR(8)PRIMARY KEY, 客戶名稱 CHAR(10)NOT NULL, 身份證號(hào) CHAR(18)NOT NULL, 聯(lián)系地址 CHAR(25), 聯(lián)系電話 CHAR(10))go--------------------------插入客戶數(shù)據(jù)-----------------------INSERT INTO 客戶 VALUES('1001','王一',12234,'江西','3245354')INSERT INTO 客戶 VALUES('1002','張三',34234,'江西','2442442')INSERT INTO 客戶 VALUES('1003','李四',56465,'江西','5654645')INSERT INTO 客戶 VALUES('1004','王錢',65435,'江西','5676577')INSERT INTO 客戶 VALUES('1005','孫志',11464,'江西','4234343')if exists(select * from sysobjects where name='客房')drop table 客房 go print 'drop table 客房' print 'create table 客房' go /*客房信息表*/ CREATE TABLE 客房

      /*創(chuàng)建客房信息表*/(客房編號(hào) CHAR(8)PRIMARY KEY, 客房類型 CHAR(8)NOT NULL, 價(jià)格 SMALLMONEY NOT NULL, 床位數(shù) INT NOT NULL, 使用狀態(tài) CHAR(8)NOT NULL)go-----------------------插入客房數(shù)據(jù)----------------------INSERT INTO 客房 VALUES('101','一',100,1,'使用中')INSERT INTO 客房 VALUES('102','二',200,2,'使用中')INSERT INTO 客房 VALUES('103','二',200,1,'使用中')INSERT INTO 客房 VALUES('104','三',300,2,'使用中')INSERT INTO 客房 VALUES('105','三',300,1,'使用中')if exists(select * from sysobjects where name='入住登記')drop table 入住登記 go print 'drop table 入住登記' print 'create table 入住登記' go /*入住登記信息表*/ CREATE TABLE 入住登記

      /*創(chuàng)建入住登記信息表*/(客房編號(hào) CHAR(8)FOREIGN KEY REFERENCES 客房(客房編號(hào)),客戶編號(hào) CHAR(8)FOREIGN KEY REFERENCES 客戶(客戶編號(hào)),預(yù)定日期 DATETIME,預(yù)定數(shù)量 INT, PRIMARY KEY(客房編號(hào),客戶編號(hào)))go

      ---------------插入入住登記信息數(shù)據(jù)----------------------INSERT INTO 入住登記 VALUES('101','1001',2010-10-10,1)INSERT INTO 入住登記 VALUES('102','1002',2010-12-10,1)INSERT INTO 入住登記 VALUES('103','1003',2010-12-26,1)INSERT INTO 入住登記 VALUES('104','1004',2010-12-9,1)go

      -----建立索引-------------------

      CREATE UNIQUE INDEX UKF ON 客房(客房編號(hào),價(jià)格)go CREATE UNIQUE INDEX UKH ON 客戶(客戶編號(hào),客戶名稱)go CREATE UNIQUE INDEX URZ ON 入住登記(客戶編號(hào),客房編號(hào))go

      ----建立觸發(fā)器-------------------------建立控制觸發(fā)器(保證在客房使用狀態(tài)的一致性)------if exists(select * from sysobjects where name='控制觸發(fā)器')drop trigger 控制觸發(fā)器 GO CREATE TRIGGER 控制觸發(fā)器

      ON 入住登記 FOR INSERT AS

      UPDATE 客房

      SET 使用狀態(tài)='使用中' WHERE 客房編號(hào)=ANY(SELECT 客房編號(hào) FROM INSERTED)go

      --------建立入住刪除觸發(fā)器(保證信息刪除的一致性)----------if exists(select * from sysobjects where name='入住刪除觸發(fā)器')drop trigger 入住刪除觸發(fā)器 GO CREATE TRIGGER 入住刪除觸發(fā)器

      ON 入住登記 FOR DELETE AS BEGIN DELETE FROM 客戶

      WHERE 客戶編號(hào)=ANY(SELECT 客戶編號(hào) FROM DELETED)

      UPDATE 客房

      SET 使用狀態(tài)='未使用' WHERE 客房編號(hào)=ANY(SELECT 客房編號(hào) FROM DELETED)END go-------建立客房刪除觸發(fā)器(保證刪除的一致性)---------if exists(select * from sysobjects where name='客房刪除觸發(fā)器')drop trigger 客房刪除觸發(fā)器 GO CREATE TRIGGER 客房刪除觸發(fā)器

      ON 客房

      FOR DELETE AS

      DELETE FROM 入住

      WHERE 客戶編號(hào)=ANY(SELECT 客戶編號(hào) FROM DELETED)go---------創(chuàng)建查詢視圖----------------

      CREATE VIEW 入住信息查詢

      AS SELECT 入住登記.客房編號(hào),客戶名稱,入住登記.客戶編號(hào),客房.客房類型,價(jià)格,使用狀態(tài)

      FROM 客房,客戶,入住登記

      WHERE 客房.客房編號(hào)=入住登記.客房編號(hào) AND 入住登記.客戶編號(hào)=客戶.客戶編號(hào) go

      ---------建立存儲(chǔ)過(guò)程------------------------------客房信息插入存儲(chǔ)過(guò)程--------------------------CREATE PROCEDURE 插入客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS INSERT INTO 客房 VALUES(@KFB,@KFL,@JG,@CWS,@SYZT)GO

      --------------------客房信息修改的存儲(chǔ)過(guò)程---------------------CREATE PROCEDURE 修改客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS UPDATE 客房

      SET 客房類型=@KFL,價(jià)格=@JG,床位數(shù)=@CWS,使用狀態(tài)=@SYZT WHERE 客房編號(hào)=@KFB go--------------------客房信息刪除的存儲(chǔ)過(guò)程---------------------CREATE PROCEDURE 刪除客房信息(@KFB CHAR(8))AS DELETE FROM 客房 WHERE 客房編號(hào)=@KFB GO--------------------客戶信息插入的存儲(chǔ)過(guò)程---------------------CREATE PROCEDURE 插入客戶信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS INSERT INTO 客戶 VALUES(@KHB,@KFM,@SFZ,@LXDZ,@LXDH)go--------------------客戶信息修改的存儲(chǔ)過(guò)程---------------------CREATE PROCEDURE 修改客戶信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS UPDATE 客戶

      SET 客戶名稱=@KFM,身份證號(hào)=@SFZ,聯(lián)系地址=@LXDZ,聯(lián)系電話=@LXDH WHERE 客戶編號(hào)=@KHB GO--------------------客戶信息刪除的存儲(chǔ)過(guò)程---------------------CREATE PROCEDURE 刪除客戶信息(@KHB CHAR(8))AS DELETE FROM 客戶

      WHERE 客戶編號(hào)=@KHB go--------------------入住信息插入的存儲(chǔ)過(guò)程---------------------CREATE PROCEDURE 插入入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS INSERT INTO 入住登記 VALUES(@KFB,@KHB,@YDRQ,@YDSL)go--------------------入住信息修改的存儲(chǔ)過(guò)程---------------------CREATE PROCEDURE 修改入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS UPDATE 入住登記

      SET 客房編號(hào)=@KFB,預(yù)定日期=@YDRQ ,預(yù)定數(shù)量=@YDSL WHERE 客戶編號(hào)=@KHB go--------------------入住信息刪除的存儲(chǔ)過(guò)程---------------------CREATE PROCEDURE 刪除入住信息(@KHB CHAR(8))AS DELETE

      FROM 入住登記

      WHERE 客戶編號(hào)=@KHB go--------------------客房編號(hào)查詢的存儲(chǔ)過(guò)程-----------------------if exists(select * from sysobjects where name='客房編號(hào)查詢')drop procedure 客房編號(hào)查詢 GO CREATE PROCEDURE 客房編號(hào)查詢(@KFB CHAR(8))AS SELECT 客房類型,價(jià)格,床位數(shù),使用狀態(tài) FROM 客房

      WHERE 客房編號(hào)=@KFB go--------------------客戶編號(hào)查詢的存儲(chǔ)過(guò)程-----------------------if exists(select * from sysobjects where name='客戶編號(hào)查詢')drop procedure 客戶編號(hào)查詢 GO CREATE PROCEDURE 客戶編號(hào)查詢(@KHB CHAR(8))AS SELECT 客戶編號(hào),客戶名稱,身份證號(hào),聯(lián)系地址,聯(lián)系電話 FROM 客戶

      WHERE 客戶編號(hào)=@KHB go--------------------入住信息查詢的存儲(chǔ)過(guò)程-----------------------if exists(select * from sysobjects where name='入住客戶編號(hào)查詢')drop procedure 入住客戶編號(hào)查詢 GO CREATE PROCEDURE 入住客戶編號(hào)查詢(@KHB CHAR(8))AS SELECT 客戶編號(hào),客房編號(hào),預(yù)定日期,預(yù)定數(shù)量 FROM 入住登記

      WHERE 客戶編號(hào)=@KHB

      第三篇:數(shù)據(jù)庫(kù)課程設(shè)計(jì)學(xué)籍管理系統(tǒng)

      學(xué)籍管理系統(tǒng)

      本次數(shù)據(jù)庫(kù)課程設(shè)計(jì)是以Access數(shù)據(jù)庫(kù)作為后臺(tái)以VB作為前臺(tái)的應(yīng)用型設(shè)計(jì)課程。

      綜合我們所學(xué)的兩大課程創(chuàng)建應(yīng)用型的數(shù)據(jù)庫(kù)系統(tǒng),大大的提高了我們學(xué)生的動(dòng)手能力,作到了理論與實(shí)踐相結(jié)合。一.題目說(shuō)明:

      學(xué)生學(xué)藉管理系統(tǒng)是典型的學(xué)藉管理系統(tǒng)(MIS),其開發(fā)主要包括后臺(tái)數(shù)據(jù)庫(kù)的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個(gè)方面。對(duì)于前者要求建立起數(shù)據(jù)一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的庫(kù)。而對(duì)于后者則要求應(yīng)用程序功能完備,易使用等特點(diǎn)。

      本系統(tǒng)主要完成對(duì)學(xué)生情況和學(xué)生成績(jī)的管理,包括數(shù)據(jù)庫(kù)中表的添加、刪除等。系統(tǒng)還可以完成對(duì)各類信息的瀏覽、添加、刪除、等功能。

      系統(tǒng)的核心是數(shù)據(jù)庫(kù)中各個(gè)表聯(lián)系,每一個(gè)表的修改都將聯(lián)動(dòng)的影響其它的表,當(dāng)完成對(duì)數(shù)據(jù)的操作時(shí)系統(tǒng)會(huì)自動(dòng)地完成數(shù)據(jù)庫(kù)的修改。查詢功能也是系統(tǒng)的核心之一,在系統(tǒng)中即有單條件查詢和多條件查詢,也有精確查詢和模糊查詢,系統(tǒng)不僅有靜態(tài)的條件查詢,也有動(dòng)態(tài)生成的條件查詢,其目的都是為了方便用戶使用。系統(tǒng)有完整的用戶添加、刪除和密碼修改功能,并具備報(bào)表打印功能。關(guān)鍵字:窗體、數(shù)據(jù)庫(kù)、vb6.0、access2000。

      學(xué)生學(xué)籍管理系統(tǒng)被廣泛應(yīng)用于各類學(xué)校的學(xué)生學(xué)籍管理工作中,要求其具有實(shí)用性強(qiáng)、使用方便、效率高和安全可靠等特點(diǎn)。本管理系統(tǒng)正是圍繞以上幾個(gè)方面進(jìn)行開發(fā)的,在開發(fā)過(guò)程中充分考慮到本系統(tǒng)的應(yīng)用特點(diǎn),并進(jìn)行了大量的檢驗(yàn),證明其的確達(dá)到了設(shè)計(jì)的要求,是一個(gè)已具備了實(shí)際應(yīng)用能力的軟件。本文主要論述學(xué)生學(xué)籍管理系統(tǒng)的開發(fā)過(guò)程,在涉及到VB及Access中的部分知識(shí)以舉例的方式進(jìn)行講解 二.總體設(shè)計(jì):

      我的總體設(shè)計(jì)如下:

      (1).利用Access建立數(shù)據(jù)庫(kù),并在該數(shù)據(jù)庫(kù)下創(chuàng)建五張表格,分別是學(xué)生表、課程表、選課表、學(xué)生選課表以及口令表。

      (2)利用VB來(lái)建立界面并對(duì)它進(jìn)行設(shè)計(jì)和修改,大體框架如下: FORM1 用于首界面

      FORM2 用于登陸此系統(tǒng)的登錄界面

      FORM3 是主窗體,在這上面建立相應(yīng)的菜單 如:文件——退出、添加用戶(FORM4)數(shù)據(jù)信息——管理使用(FORM5)

      基本操作——學(xué)生操作、選課操作、課程操作(FORM6、FORM7、FORM8)(3)對(duì)以上的界面進(jìn)行設(shè)計(jì)以及對(duì)所要操作的部件進(jìn)行編程。

      三.常用控件的說(shuō)明: 所有的Windows應(yīng)用程序窗口或?qū)υ捒?,都是由諸如文本框、列表框、命令按扭、滾動(dòng)條、命令菜單等組成的。VB通過(guò)控件工具箱提供了它們與用戶進(jìn)行交

      互的可視化部件,即控件。程序開發(fā)人員只需要通過(guò)簡(jiǎn)單的操作,在窗體上安排所需要的控件,完成應(yīng)用程序的用戶界面設(shè)計(jì)即可。序號(hào)

      名稱

      功能 Label標(biāo)簽

      用于說(shuō)明 Textbox文本框

      用于文本輸入或顯示 3 Frame框架

      用于組合控件 Commandbutton命令按扭

      單擊執(zhí)行命令 5 Timer計(jì)時(shí)期

      用于定時(shí) Data數(shù)據(jù)控件

      用于訪問(wèn)數(shù)據(jù)庫(kù)

      三.詳細(xì)說(shuō)明:

      1.數(shù)據(jù)庫(kù)的建立與設(shè)計(jì):

      數(shù)據(jù)庫(kù)是有結(jié)構(gòu)的數(shù)據(jù)集合,它與一般的數(shù)據(jù)文件不同,(其中的數(shù)據(jù)是無(wú)結(jié)構(gòu)的)是一串文字或數(shù)字流。數(shù)據(jù)庫(kù)中的數(shù)據(jù)可以是文字、圖象、聲音等。

      Access數(shù)據(jù)庫(kù)由六種對(duì)象組成,它們是表、查詢、窗體、報(bào)表、宏和模塊。

      (1).表(Table)——表是數(shù)據(jù)庫(kù)的基本對(duì)象,是創(chuàng)建其他5種對(duì)象的基礎(chǔ)。表由記錄組成,記錄由字段組成,表用來(lái)存貯數(shù)據(jù)庫(kù)的數(shù)據(jù),故又稱數(shù)據(jù)表。

      (2).查詢(Query)——查詢可以按索引快速查找到需要的記錄,按要求篩選記錄并能連接若干個(gè)表的字段組成新表。

      (3).窗體(Form)——窗體提供了一種方便的瀏覽、輸入及更改數(shù)據(jù)的窗口。還可以創(chuàng)建子窗體顯示相關(guān)聯(lián)的表的內(nèi)容。窗體也稱表單。

      (4).報(bào)表(Report)——報(bào)表的功能是將數(shù)據(jù)庫(kù)中的數(shù)據(jù)分類匯總,然后打印出來(lái),以便分析。

      (5).宏(Macro)——宏相當(dāng)于DOS中的批處理,用來(lái)自動(dòng)執(zhí)行一系列操作。Access列出了一些常用的操作供用戶選擇,使用起來(lái)十分方便。

      (6).模塊(Module)——模塊的功能與宏類似,但它定義的操作比宏更精細(xì)和復(fù)雜,用戶可以根據(jù)自己的需要編寫程序。模塊使用Visual Basic編程。

      我們利用Access來(lái)建立數(shù)據(jù)庫(kù),我們的庫(kù)中有五張表格,其分別是學(xué)生表、課程表、選課表、學(xué)生選課表以及口令表。

      我們就以學(xué)生表為例做一個(gè)簡(jiǎn)單的說(shuō)明:

      我們使用設(shè)計(jì)器來(lái)創(chuàng)建表的,我的這張表有七個(gè)字段,每個(gè)字段的名稱分別是:學(xué)號(hào)、班級(jí)、姓名、性別、出生年月、民族、地址、電話號(hào)碼,每個(gè)字段有七個(gè)數(shù)據(jù)。我并對(duì)其字段的屬性進(jìn)行了重新的修改,以做到不浪費(fèi)其空間。

      我具體的實(shí)施步驟是:?jiǎn)?dòng)數(shù)據(jù)庫(kù)管理器——建立數(shù)據(jù)庫(kù)——建立數(shù)據(jù)表結(jié)構(gòu)——輸入記錄。

      最終產(chǎn)生了這樣的一個(gè)數(shù)據(jù)庫(kù):(如下)

      2.VB界面的建立設(shè)計(jì)以及程序的編寫說(shuō)明:

      VB 是在Windows操作平臺(tái)下,用于開發(fā)和創(chuàng)建具有圖形用戶界面的應(yīng)用程序的強(qiáng)有力工具之一。VB為開發(fā)Windows應(yīng)用程序不僅提供了全新的相對(duì)簡(jiǎn)單的方式,而且也引進(jìn)了新的程序設(shè)計(jì)方法——面向?qū)ο蟮脑O(shè)計(jì)方法(00P)。從傳統(tǒng)的面向過(guò)程的程序設(shè)計(jì),轉(zhuǎn)移到更先進(jìn)的面向?qū)ο蟮某绦蛟O(shè)計(jì),無(wú)論是對(duì)老的程序員,還是初學(xué)者,都是一個(gè)挑戰(zhàn)。而學(xué)習(xí)VB,則是掌握這一新的程序設(shè)計(jì)方法的一條捷徑。

      (1).界面的設(shè)計(jì)和程序的編寫:

      設(shè)計(jì)一個(gè)像這樣的友好的界面,我考慮到它的顏色的配制,界面的大小,界面所載的內(nèi)容的多少等,在后臺(tái)我用定時(shí)器給其限定時(shí)間讓它在一定的時(shí)間后自動(dòng)跳到下一個(gè)界面。

      這個(gè)界面是系統(tǒng)的主界面,用戶可以在通過(guò)系統(tǒng)登錄后直接到我們的主界面上來(lái)進(jìn)行相應(yīng)的操作,我的主界面采用的是一張?zhí)K州市職業(yè)大學(xué)的圖片,在這個(gè)圖片的上面有三個(gè)菜單,分別是文件、數(shù)據(jù)信息和基本操作。在各自的下面還有與之相對(duì)應(yīng)的子菜單,文件下有退出和添加用戶,數(shù)據(jù)信息下有管理使用,基本操作下有學(xué)生操作、選課操作和課程操作。我利用FORMn.SHOW命令連接到相對(duì)應(yīng)的界面上。

      我們的界面有好幾張我就對(duì)其中的一張進(jìn)行詳細(xì)的分析:

      這是一張學(xué)生選課瀏覽表的界面,這也是對(duì)應(yīng)我的主界面菜單中的數(shù)據(jù)信息下的管理使用子菜單的一張界面,在這張界面中包含了8個(gè)LABEL標(biāo)簽控件、7個(gè) TEXTBOX文本框控件、6個(gè)COMMANDBUTTON命令按扭控件、1個(gè)FRAME框架控件和1個(gè)DATA部件。我利用DATA部件將界面與 ACCESS數(shù)據(jù)庫(kù)相連接,具體的操作是利用DATABASENAME與數(shù)據(jù)庫(kù)連接,在RECORDSOURCE中找到與之對(duì)應(yīng)的表,再用 DATASOURCE、DATAFIELD與個(gè)文本框內(nèi)容對(duì)應(yīng),從而實(shí)現(xiàn)界面與數(shù)據(jù)庫(kù)的連接。下面是程序的編寫過(guò)程:

      顯示前一個(gè)數(shù)據(jù): COMMAND1:

      Private Sub Command1_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “沒(méi)有記錄” Else If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst MsgBox “這是第一條記錄!” Else Data1.Recordset.MovePrevious If Data1.Recordset.BOF = True Then

      Data1.Recordset.MoveFirst MsgBox “這是第一條記錄!” End If End If End If End Sub 顯示第一個(gè)數(shù)據(jù): COMMAND2:

      Private Sub Command2_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “沒(méi)有記錄” Else Data1.Recordset.MoveFirst End If End Sub 顯示最后一個(gè)數(shù)據(jù): COMMAND4:

      Private Sub Command4_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “沒(méi)有記錄” Else Data1.Recordset.MoveLast End If End Sub 顯示后一個(gè)數(shù)據(jù): COMMAND3:

      Private Sub Command3_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “沒(méi)有記錄” Else If Data1.Recordset.EOF Then Data1.Recordset.MoveLast MsgBox “這是最后一條記錄!” Else Data1.Recordset.MoveNext If Data1.Recordset.EOF = True Then Data1.Recordset.MoveLast MsgBox “這是最后一條記錄!” End If End If End If End Sub 添加一個(gè)數(shù)據(jù):COMMAND6 Private Sub command6_Click()If Command6.Caption = “添加” Then

      Command1.Enabled = 0 Command2.Enabled = 0 Command3.Enabled = 0 Command4.Enabled = 0 Command6.Caption = “確定” Command5.Caption = “放棄” If Data1.Recordset.RecordCount > 0 Then Data1.Recordset.MoveLast End If Data1.Recordset.AddNew Text1.SetFocus Else Command1.Enabled =-1 Command2.Enabled =-1 Command3.Enabled =-1 Command4.Enabled =-1 Command6.Caption = “添加” Command5.Caption = “刪除” Text2.Enabled = 0 Text5.Enabled = 0 Text3.Enabled = 0 Text4.Enabled = 0 Text6.Enabled = 0 Text7.Enabled = 0 Data1.Recordset.Update Command1.SetFocus End If End Sub 刪除一個(gè)記錄:COMMAND5 Private Sub Command5_Click()If Command5.Caption = “放棄” Then Command4.Enabled =-1 Command5.Enabled =-1 Command6.Enabled =-1 Command3.Enabled =-1 Command1.Caption = “添加” Command2.Caption = “刪除” Text2.Enabled = 0 Text5.Enabled = 0 Text6.Enabled = 0 Text7.Enabled = 0 Text1.Enabled = 0

      Else If Data1.Recordset.RecordCount = 0 Then MsgBox “沒(méi)有記錄”, 32, “注意” Exit Sub Else str1 = MsgBox(“刪除該記錄嗎?”, 17, “刪除”)If str1 = 1 Then Data1.Recordset.Delete Data1.Refresh If Data1.Recordset.RecordCount = 0 Then MsgBox “記錄數(shù)為零” Data1.Recordset.AddNew End If End If End If End If End Sub

      四、在此過(guò)程中遇到的問(wèn)題以及解決方法: 在開始編寫程序的時(shí)候總是有一些出錯(cuò),在查找有關(guān)書籍和向老師詢問(wèn)后得出了結(jié)果。在將界面與數(shù)據(jù)庫(kù)相連接的時(shí)候,不知道用哪種方法,在老師的幫助下我學(xué)會(huì)了兩種方法:1.DATA、2.ADODC。我最終使用DATA這種方法。

      五、心得體會(huì):

      在這次的設(shè)計(jì)過(guò)程中,我學(xué)到的不僅是知識(shí),我還認(rèn)識(shí)到許多事情。這次設(shè)計(jì)使我的編程水平提高了一大步,使我充分的認(rèn)識(shí)到合作的可貴。由于這次設(shè)計(jì)涉及到數(shù)據(jù)庫(kù),我的學(xué)到了不少編程工具與數(shù)據(jù)庫(kù)連接的知識(shí),對(duì)數(shù)據(jù)庫(kù)的操作有了進(jìn)一步的了解。這次設(shè)計(jì)對(duì)我的綜合能力是一次很好的鍛煉,但是我必須承認(rèn)自己的能力和知識(shí)還很膚淺。所以今后我的學(xué)習(xí)道路還是很漫長(zhǎng)的。最后,在這里我要衷心的感謝我們的指導(dǎo)老師牛麗、程淵,謝謝她的悉心指導(dǎo)和熱心幫助。由于我水平有限,加之時(shí)間短暫,故學(xué)籍管理系統(tǒng)中還有許多不足之處,請(qǐng)老師批評(píng)指正,我會(huì)在以后的制作中不斷改進(jìn),不斷完善。

      第四篇:數(shù)據(jù)庫(kù)課程設(shè)計(jì)——庫(kù)存銷售管理系統(tǒng)

      數(shù)據(jù)庫(kù)課程設(shè)計(jì)

      實(shí)驗(yàn)報(bào)告

      姓名:黃世增

      班級(jí):計(jì)算機(jī)1403

      學(xué)號(hào):14116403051.實(shí)驗(yàn)名稱

      使用Visual Basic 6.0和SQL Server 2014開發(fā)庫(kù)存銷售管理系統(tǒng)

      2.實(shí)驗(yàn)?zāi)康?/p>

      使用Visual Basic 6.0開發(fā)工具開發(fā)一個(gè)庫(kù)存銷售管理系統(tǒng),該系統(tǒng)采用SQL Server 2014數(shù)據(jù)庫(kù)保存庫(kù)存貨物信息,數(shù)據(jù)庫(kù)中包括貨物出入庫(kù)信息和商品銷售等信息。該系統(tǒng)包括系統(tǒng)登錄、貨物出入庫(kù)管理、商品銷售管理和商品統(tǒng)計(jì)管理等功能,通過(guò)這些功能實(shí)現(xiàn)對(duì)庫(kù)存中貨物信息和銷售信息進(jìn)行管理。

      系統(tǒng)主要實(shí)現(xiàn)以下目標(biāo):

      ? 實(shí)現(xiàn)系統(tǒng)登錄及修改用戶密碼的功能。? 對(duì)庫(kù)存貨物的出入庫(kù)信息進(jìn)行管理。? 對(duì)商品的銷售信息進(jìn)行管理。

      ? 根據(jù)銷售日期統(tǒng)計(jì)商品的銷售數(shù)據(jù)。

      3.實(shí)驗(yàn)步驟 3.1 設(shè)計(jì)數(shù)據(jù)庫(kù)

      建立一個(gè)名為“DB_KCGL”的數(shù)據(jù)庫(kù),根據(jù)前述的主要功能目標(biāo),需要建立3個(gè)數(shù)據(jù)表(關(guān)系):

      (1)貨物的出入庫(kù)信息:保存貨物的出入庫(kù)信息

      ? id:庫(kù)存貨物信息的編號(hào),主碼,建議長(zhǎng)度為18的numeric類型。? tb_title:庫(kù)存貨物的名稱,建議長(zhǎng)度為50的varchar類型。? tb_style:庫(kù)存貨物的類型,建議長(zhǎng)度為50的varchar類型。? tb_nums:庫(kù)存貨物的數(shù)量,建議為整型int。? tb_values:庫(kù)存貨物的價(jià)格,實(shí)數(shù)類型real。

      ? tb_date:庫(kù)存貨物的入庫(kù)日期,時(shí)間日期類型datetime。

      ? tb_mark:庫(kù)存貨物的備注信息,建議長(zhǎng)度為50的varchar類型。

      (2)商品的銷售信息:保存商品的銷售信息

      ? id:商品銷售信息的編號(hào),主碼,建議長(zhǎng)度為18的numeric類型。

      ? ? ? ? tb_title:銷售商品的名稱,建議長(zhǎng)度為50的varchar類型。tb_nums:建議為整型int。

      tb_values:銷售商品的總價(jià),浮點(diǎn)類型float。

      tb_date:商品銷售的日期,時(shí)間日期類型datetime。

      (3)系統(tǒng)用戶的信息:保存系統(tǒng)用戶的信息

      ? id:用戶信息的編號(hào),主碼,建議長(zhǎng)度為18的numeric類型。? tb_name:用戶名稱,建議長(zhǎng)度為50的varchar類型。

      ? tb_pas:用戶的密碼信息,建議長(zhǎng)度為50的varchar類型。

      3.2 設(shè)計(jì)連接數(shù)據(jù)庫(kù)的模塊

      需要首先建立一個(gè)連接數(shù)據(jù)庫(kù)的模塊,這樣應(yīng)用程序才能與數(shù)據(jù)庫(kù)中的數(shù)據(jù)表取得連接,將數(shù)據(jù)信息從數(shù)據(jù)表中讀出到應(yīng)用程序中或通過(guò)應(yīng)用程序保存到數(shù)據(jù)表中。

      為此,建立一個(gè)負(fù)責(zé)數(shù)據(jù)庫(kù)連接的模塊如下:

      (1)選擇“工程”菜單下的“添加模塊”命令,在應(yīng)用程序中添加一個(gè)模塊Module1。(2)Module1模塊的實(shí)現(xiàn)如下: '數(shù)據(jù)連接模塊

      Public MyStrs As String Public DB_AdoRs As New ADODB.Recordset

      '后添加一個(gè)記錄集對(duì)象 Public DB_AdoRs1 As New ADODB.Recordset

      '后添加一個(gè)記錄集對(duì)象 Public DB_AdoRs2 As New ADODB.Recordset

      '后添加一個(gè)記錄集對(duì)象 Public Function Cnn()As ADODB.Connection

      '定義連接字符串函數(shù)

      Set Cnn = New ADODB.Connection

      Cnn.Open “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DB_KCGL;Data Source=.” End Function Public Sub Main()

      MyStrs = “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security

      Info=False;Initial Catalog=DB_KCGL;Data Source=.”

      '顯示系統(tǒng)登錄窗體

      Form1.Show End Sub(3)這里需要將程序的入口設(shè)置為模塊中的Main()函數(shù)。選擇“工程”菜單下的“工程屬性”命令,在“通用”標(biāo)簽中進(jìn)行相應(yīng)設(shè)置。

      3.3 系統(tǒng)登陸模塊設(shè)計(jì)

      在本庫(kù)存銷售管理系統(tǒng)中,只有授權(quán)用戶(管理員)可以登錄并進(jìn)行庫(kù)存和銷售信息管理與維護(hù),因此需要一個(gè)系統(tǒng)登錄界面,防止非法用戶登錄到系統(tǒng)中,從而保證了應(yīng)用程序的安全性和可靠性。

      3.3.1 登錄窗體設(shè)計(jì)

      設(shè)計(jì)如下的登錄窗體,在窗體中要添加一個(gè)ADO控件,命名為Adodc1。

      (1)登錄窗體啟動(dòng)之后,需要將系統(tǒng)用戶的信息數(shù)據(jù)表中的所有用戶名稱信息添加到窗體的ComboBox控件的Op_Name屬性中,即實(shí)現(xiàn)在“操作員名稱”下拉列表中可以出現(xiàn)系統(tǒng)當(dāng)前的操作員信息,供登錄用戶選擇。Private Sub Form_Load()'使用代碼連接數(shù)據(jù)庫(kù)與數(shù)據(jù)表

      Adodc1.ConnectionString = MyStrs

      Adodc1.RecordSource = “select * from 系統(tǒng)的用戶信息”

      Adodc1.Refresh

      If Adodc1.Recordset.RecordCount > 0 Then

      Adodc1.Recordset.MoveFirst

      Op_Name.Clear

      '在添加數(shù)據(jù)時(shí),首先清空控件中的內(nèi)容

      Do While Adodc1.Recordset.EOF = False

      '將操作員信息添加到下拉列表框控件當(dāng)中

      Op_Name.AddItem(Adodc1.Recordset.Fields(“tb_name”))

      Adodc1.Recordset.MoveNext

      Loop

      End If End Sub

      (2)當(dāng)用戶在“操作員名稱”下拉列表中選擇操作員的名稱,并且在“操作員密碼”文本框輸入正確的密碼之后,單擊“確定”按鈕將登錄到系統(tǒng)中,否則將無(wú)法登錄系統(tǒng)。具體實(shí)現(xiàn)如下:

      Private Sub Cmd_Ok_Click()Adodc1.RecordSource = “select * from Tb_User where tb_name ='” & Op_Name.Text & “'” Adodc1.Refresh

      If Adodc1.Recordset.RecordCount > 0 Then

      MPassword = Adodc1.Recordset.Fields(“tb_pas”)

      If Txt_Password.Text = MPassword Then

      '判斷數(shù)據(jù)的密碼是否正確

      Name1 = Op_Name.Text

      Frm_Main.StatusBar1.Panels.Item(2).Text = “當(dāng)前操作員: ” + Adodc1.Recordset.Fields(“tb_name”)

      Frm_Main.Show

      '通過(guò)身份驗(yàn)證則顯示主窗體,登錄到系統(tǒng)當(dāng)中

      Unload Me

      Else

      MsgBox “密碼不正確,請(qǐng)您確認(rèn)后重新輸入”, , “提示信息”

      Txt_Password.Text = “"

      Txt_Password.SetFocus

      End If

      Else

      MsgBox ”對(duì)不起 沒(méi)有此用戶的信息“, , ”提示信息“

      Op_Name.Text = ”“

      Txt_Password.Text = ”“

      End If End Sub 3.4 系統(tǒng)主界面的實(shí)現(xiàn)

      3.4.1 主界面設(shè)計(jì)

      (1)在工程中添加一個(gè)窗體,將窗體命名為Frm_main,將窗體Caption屬性設(shè)置為“庫(kù)存管理系統(tǒng)”。

      (2)添加一個(gè)Toolbar控件,工具欄由“修改密碼”、“庫(kù)存管理”、“商品銷售”、“銷售統(tǒng)計(jì)”和“退出系統(tǒng)”5個(gè)按鈕組成。(3)添加一個(gè)StatusBar控件,使得狀態(tài)欄中能夠顯示登錄操作員姓名和當(dāng)前系統(tǒng)時(shí)間等信息。

      (4)在主窗體上添加一個(gè)時(shí)鐘控件,用于顯示系統(tǒng)當(dāng)前日期和時(shí)間信息。

      (5)在主窗體上添加一個(gè)Label標(biāo)簽控件,將其Caption屬性設(shè)置為“庫(kù)存管理系統(tǒng)”。

      3.4.2 代碼實(shí)現(xiàn)

      (1)窗體啟動(dòng)時(shí),在窗體的狀態(tài)欄中將顯示當(dāng)前系統(tǒng)的日期信息: Private Sub Form_Load()

      StatusBar1.Panels.Item(3).Text = Format(Now, ”yyyy年mm月dd日“)End Sub

      (2)單擊窗口工具欄按鈕時(shí),將會(huì)調(diào)用系統(tǒng)的各個(gè)子功能模塊: Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)

      Select Case Button.Index

      Case 1

      Frm_Pas.Show

      '修改密碼

      Case 2

      Frm_Inout.Show '庫(kù)存管理

      Case 3

      Frm_Sale.Show

      '商品銷售

      Case 4

      Frm_Stat.Show

      '銷售統(tǒng)計(jì)

      Case 5

      End

      '退出系統(tǒng)

      End Select End Sub

      (3)在時(shí)鐘控件的Timer事件中添加如下代碼,實(shí)現(xiàn)在狀態(tài)欄中顯示當(dāng)前系統(tǒng)時(shí)間的功能: Private Sub Timer1_Timer()

      StatusBar1.Panels.Item(4).Text = Time End Sub

      (4)再向狀態(tài)欄中添加公司名稱,操作員和公司網(wǎng)址信息。

      系統(tǒng)主窗體的運(yùn)行界面如下圖所示:

      3.5 出入庫(kù)管理模塊的設(shè)計(jì)與實(shí)現(xiàn)

      該模塊主要是記錄和維護(hù)庫(kù)存中的貨物信息,其中包括對(duì)貨物信息的刪除、修改和保存等方面的功能。

      3.5.1 窗體界面設(shè)計(jì)

      (1)在工程中添加一個(gè)窗體,命名為Frm_Inout,將窗體Caption設(shè)置為“出入庫(kù)管理”。(2)在窗體上添加相應(yīng)的控件,如下圖所示。

      (3)通過(guò)“工程”菜單下的“部件”命令將DataGrid數(shù)據(jù)表格控件添加到工具箱中,然后在窗體上添加1個(gè)數(shù)據(jù)表格控件DataGrid1。

      (4)在窗體上添加一個(gè)ADO控件Adodc1,同時(shí)將DataGrid1的數(shù)據(jù)源屬性DataSource設(shè)置為Adodc1。

      3.5.2 程序代碼實(shí)現(xiàn)

      (1)窗口載入時(shí),將數(shù)據(jù)庫(kù)中商品表數(shù)據(jù)讀出。Private Sub Form_Load()

      Adodc1.ConnectionString = MyStrs

      Adodc1.RecordSource = ”select * from 貨物的出入庫(kù)信息 order by id“

      Adodc1.Refresh

      AddTitle End Sub

      其中,AddTitle函數(shù)用于向DataGrid1添加表頭,實(shí)現(xiàn)如下: '添加數(shù)據(jù)庫(kù)字段標(biāo)題的事件過(guò)程 Private Sub AddTitle()

      DataGrid1.Columns.Item(0).Caption = ”編號(hào)“

      DataGrid1.Columns.Item(1).Caption = ”名稱“

      DataGrid1.Columns.Item(2).Caption = ”類型“

      DataGrid1.Columns.Item(3).Caption = ”數(shù)量“

      DataGrid1.Columns.Item(4).Caption = ”單價(jià)“

      DataGrid1.Columns.Item(5).Caption = ”入庫(kù)日期“

      DataGrid1.Columns.Item(6).Caption = ”備注“

      End Sub

      (2)點(diǎn)擊“添加”按鈕,清空編輯框,讓用戶輸入新的待添加內(nèi)容 Private Sub Command1_Click()'清空文本框中的內(nèi)容

      Text1.Text = ”“

      Text2.Text = ”“

      Text3.Text = ”“

      Text4.Text = ”“

      Text5.Text = ”“

      Text6.Text = ”“

      Text1.SetFocus End Sub(3)點(diǎn)擊“刪除”按鈕,刪除選中當(dāng)前記錄。Private Sub Command2_Click()'刪除庫(kù)存信息

      c = MsgBox(”確認(rèn)要?jiǎng)h除該信息嗎“, 17, ”提示信息“)

      If c = vbOK Then

      '如果有錯(cuò)誤則執(zhí)行錯(cuò)誤處理

      On Error Resume Next

      Set DB_AdoRs = Cnn.Execute(”Delete from 貨物的出入庫(kù)信息 where id='“ + Text1.Text + ”'“)MsgBox ”數(shù)據(jù)刪除成功“, 64, ”提示信息“

      '刪除后刷新數(shù)據(jù)信息

      Adodc1.RecordSource = ”select * from 貨物的出入庫(kù)信息 order by id“

      Adodc1.Refresh

      AddTitle

      End If

      Text1.Text = ”“

      Text2.Text = ”“

      Text3.Text = ”“

      Text4.Text = ”“

      Text5.Text = ”“

      Text6.Text = ”“

      End Sub

      (4)點(diǎn)擊“修改”按鈕,修改當(dāng)前的記錄信息。Private Sub Command3_Click()'修改庫(kù)存信息

      c = MsgBox(”確認(rèn)修改信息嗎“, 33, ”提示信息“)

      If c = vbOK Then

      '

      On Error Resume Next

      Set DB_AdoRs = Cnn.Execute(”UPDATE 貨物的出入庫(kù)信息 SET tb_title='“ + Text2 + ”',tb_style='“ + Text3 + ”',tb_nums='“ + Text4 + ”',tb_values='“ _

      + Text5 + ”',tb_mark='“ + Text6 + ”' where id='“ + Text1.Text + ”'“)

      MsgBox ”數(shù)據(jù)修改成功“, 64, ”提示信息“

      Adodc1.RecordSource = ”select * from 貨物的出入庫(kù)信息 order by id“

      Adodc1.Refresh

      AddTitle

      End If End Sub(5)點(diǎn)擊“保存”按鈕,將保存文本框中輸入的貨物信息。Private Sub Command4_Click()If Text1.Text = ”“ Or Text2.Text = ”“ Or Text3.Text = ”“ Or Text4.Text = ”“ Or Text5.Text = ”“ Or Text6.Text = ”“ Then

      MsgBox ”保存的數(shù)據(jù)信息不能為空“, 48, ”提示信息“

      Else

      DB_AdoRs.Open ”select * from 貨物的出入庫(kù)信息 where tb_title='“ + Text2.Text + ”'“, Cnn, adOpenKeyset

      If DB_AdoRs.RecordCount > 0 Then

      '判斷要保存的信息是否已經(jīng)存在

      MsgBox ”該貨物信息信息已經(jīng)存在“, 48, ”提示信息“

      DB_AdoRs.Close

      Else

      DB_AdoRs.Close

      c = MsgBox(”確認(rèn)保存信息嗎“, 33, ”提示信息“)

      If c = vbOK Then

      '如果選擇的是“確定”按鈕則保存信息

      Set DB_AdoRs = Cnn.Execute(”insert into 貨物的出入庫(kù)信息 values(“ & Text1 & ”,'“ & Text2 & ”','“ & Text3 & ”',“ & Text4 & ”,“ _

      & Text5 & ”,'“ & Date & ”','“ & Text6 & ”')“)

      MsgBox ”信息保存成功“, 64, ”提示信息“

      Else

      End If

      '保存數(shù)據(jù)后刷新數(shù)據(jù)信息

      Adodc1.RecordSource = ”select * from 貨物的出入庫(kù)信息 order by id“

      Adodc1.Refresh

      AddTitle

      End If

      End If End Sub(6)點(diǎn)擊退出,銷毀當(dāng)前窗口。Private Sub Command6_Click()

      Unload Me End Sub

      (7)單擊DataGrid1中的相應(yīng)記錄,會(huì)在窗體左側(cè)的各個(gè)編輯框中顯示相應(yīng)的內(nèi)容。Private Sub DataGrid1_Click()'On Error Resume Next

      If Adodc1.Recordset.RecordCount > 0 Then

      Text1.Text = Adodc1.Recordset.Fields(0)

      Text2.Text = Adodc1.Recordset.Fields(1)

      Text3.Text = Adodc1.Recordset.Fields(2)

      Text4.Text = Adodc1.Recordset.Fields(3)

      Text5.Text = Adodc1.Recordset.Fields(4)

      Text6.Text = Adodc1.Recordset.Fields(6)

      End If End Sub

      窗體的運(yùn)行界面如下圖所示:

      3.6 商品銷售模塊的設(shè)計(jì)與實(shí)現(xiàn)

      在“商品銷售管理”窗口中的“銷售商品”下拉列表中選擇要銷售的商品之后,該商品的基本信息將顯示在窗體中相應(yīng)的文本框中,在輸入銷售數(shù)量和實(shí)收金額后,單擊“確認(rèn)銷售”按鈕完成銷售商品的操作。

      3.6.1 窗體界面設(shè)計(jì)

      (1)在工程中添加一個(gè)窗體,命名為Frm_Sale,將Caption屬性設(shè)置為“商品銷售管理”。(2)在窗體上添加相應(yīng)的控件,如下圖所示。

      (3)通過(guò)“工程”菜單下的“部件”命令將DataGrid數(shù)據(jù)表格控件添加到工具箱中,然后在窗體上添加1個(gè)數(shù)據(jù)表格控件DataGrid1。

      (4)在窗體上添加2個(gè)ADO控件Adodc1和Adodc2,同時(shí)將DataGrid1的數(shù)據(jù)源屬性DataSource設(shè)置為Adodc2。

      3.6.2 程序代碼實(shí)現(xiàn)

      (1)窗體啟動(dòng)時(shí),將商品庫(kù)存中的貨物名稱信息添加到下拉列表中,然后再將商品銷售的數(shù)據(jù)信息顯示在DataGrid1控件中。Private Sub Form_Load()Adodc2.ConnectionString = MyStrs

      Adodc2.RecordSource = ”select * from 商品的銷售信息 order by id“

      Adodc2.Refresh

      AddTitle

      '使用代碼連接數(shù)據(jù)庫(kù)與數(shù)據(jù)表

      Adodc1.ConnectionString = MyStrs

      Adodc1.RecordSource = ”select * from 貨物的出入庫(kù)信息“

      Adodc1.Refresh

      If Adodc1.Recordset.RecordCount > 0 Then

      Adodc1.Recordset.MoveFirst

      Combo1.Clear

      '在添加數(shù)據(jù)時(shí),首先清空控件中的內(nèi)容

      Do While Adodc1.Recordset.EOF = False

      '將貨物出入庫(kù)信息添加到下拉列表框控件當(dāng)中

      Combo1.AddItem(Adodc1.Recordset.Fields(”tb_title“))

      Adodc1.Recordset.MoveNext

      Loop

      End If End Sub Private Sub AddTitle()

      DataGrid1.Columns.Item(0).Caption = ”編號(hào)“

      DataGrid1.Columns.Item(1).Caption = ”名稱“

      DataGrid1.Columns.Item(2).Caption = ”銷售數(shù)量“

      DataGrid1.Columns.Item(3).Caption = ”銷售總價(jià)“

      DataGrid1.Columns.Item(4).Caption = ”銷售日期“ End Sub(2)選擇下拉列表中的商品之后,該商品的詳細(xì)信息將顯示在窗體中相對(duì)應(yīng)的文本框中。'商品詳細(xì)信息

      Private Sub Combo1_Click()Adodc1.RecordSource = ”select * from 貨物的出入庫(kù)信息 where tb_title ='“ & Combo1.Text & ”'“ Adodc1.Refresh

      If Adodc1.Recordset.RecordCount > 0 Then

      Text1.Text = Adodc1.Recordset.Fields(”id“)

      Text2.Text = Adodc1.Recordset.Fields(”tb_style“)

      Text3.Text = Adodc1.Recordset.Fields(”tb_nums“)

      Text4.Text = Adodc1.Recordset.Fields(”tb_values“)

      Text5.Text = Adodc1.Recordset.Fields(”tb_mark“)

      End If

      '清空文本框中的內(nèi)容

      Text6.Text = ”“

      Text7.Text = ”“

      Text8.Text = ”“

      Text9.Text = ”“

      End Sub

      (3)單擊“確認(rèn)銷售”按鈕,將完成銷售商品的操作。

      (4)當(dāng)用戶輸入銷售數(shù)量后并將輸入焦點(diǎn)移開后,需要實(shí)時(shí)更新商品詳細(xì)信息中的數(shù)量信息,即在原有數(shù)量的基礎(chǔ)上減去用戶輸入的銷售數(shù)量。(3)和(4)的代碼:

      Private Sub Command1_Click()

      Adodc1.ConnectionString = MyStrs

      Adodc1.RecordSource = ”select * from 貨物的出入庫(kù)信息 where tb_title ='“ & Combo1.Text & ”'“

      Adodc1.Refresh

      Dim a As Integer

      Dim b As Integer

      a = Val(Text7.Text)

      b = Val(Text4.Text * Text6.Text)

      If Text6.Text = ”“ Or Text7.Text = ”“ Then

      MsgBox ”請(qǐng)補(bǔ)全信息!“, 64, ”提示信息“

      Else

      If a < b Then

      MsgBox ”信息輸入有誤,請(qǐng)重新輸入!“, 64, ”提示信息“

      Else

      Text8.Text = Text4.Text * Text6.Text

      Text9.Text = Text7.TextText6.Text

      Adodc1.Recordset.Update

      Set DB_AdoRs = Cnn.Execute(”insert into 商品的銷售信息 values('“ & Adodc2.Recordset.RecordCount + 1 & ”','“ & Combo1.Text & ”','“ & Text6 & ”',“ & Text8 & ”,'“ & Date & ”')“)

      Set DB_AdoRs = Cnn.Execute(”UPDATE 貨物的出入庫(kù)信息 SET tb_nums = '“ & Text3 & ”' where id= '“ & Text1 & ”'“)

      MsgBox ”銷售成功!“, 64, ”提示信息“

      Adodc2.RecordSource = ”select * from 商品的銷售信息 “

      Adodc2.Refresh

      AddTitle

      End If

      End If End Sub

      窗體的運(yùn)行結(jié)果如下圖所示:

      3.7 銷售統(tǒng)計(jì)模塊的設(shè)計(jì)與實(shí)現(xiàn)

      該模塊主要實(shí)現(xiàn)統(tǒng)計(jì)商品銷售信息的功能。選擇商品的銷售日期和銷售商品的名稱之后,在下面的DataGrid數(shù)據(jù)表格控件中就會(huì)顯示查詢的數(shù)據(jù)結(jié)果信息,同時(shí)統(tǒng)計(jì)出銷售商品的總數(shù)量和總價(jià)格。

      3.7.1 窗體界面設(shè)計(jì)

      (1)添加一個(gè)窗體,命名為Frm_Stat,將窗體的Caption屬性設(shè)置為“銷售統(tǒng)計(jì)”。(2)在窗體上添加控件情況如后圖。

      (3)在窗體上添加一個(gè)數(shù)據(jù)表格控件DataGrid1。

      (4)在窗體上添加2個(gè)ADO控件Adodc1和Adodc2,同時(shí)將DataGrid1的數(shù)據(jù)源屬性DataSource設(shè)置為Adodc2。

      銷售統(tǒng)計(jì)窗體的設(shè)計(jì)界面如下圖所示。

      3.7.2 程序代碼實(shí)現(xiàn)

      (1)在啟動(dòng)窗體時(shí),將貨物的名稱信息添加到下拉列表控件中,然后再將商品銷售的數(shù)據(jù)信息顯示在表格控件中。

      (2)在日期時(shí)間控件DTPicker1的Change事件下添加如下的程序代碼,實(shí)現(xiàn)根據(jù)選擇條件統(tǒng)計(jì)商品銷售信息的功能。

      (3)在日期Combo1控件的Click事件下添加如下的程序代碼,實(shí)現(xiàn)根據(jù)選擇條件統(tǒng)計(jì)商品銷售信息的功能。

      Private Sub Combo1_Click()Adodc2.RecordSource = ”select * from 商品的銷售信息 where tb_title ='“ & Combo1.Text & ”' and tb_date ='“ & DTPicker1.Value & ”' “ Adodc2.Refresh AddTitle Dim n, m As Integer n = 0 m = 0 Do While Not Adodc2.Recordset.EOF n = n + Adodc2.Recordset.Fields(2).Value m = m + Adodc2.Recordset.Fields(3).Value Adodc2.Recordset.MoveNext Loop Text1.Text = n

      Text2.Text = m End Sub

      Private Sub DTPicker1_Change()Adodc2.RecordSource = ”select * from 商品的銷售信息 where tb_title ='“ & Combo1.Text & ”' and tb_date ='“ & DTPicker1.Value & ”' “ Adodc2.Refresh AddTitle Dim n, m As Integer n = 0 m = 0 Do While Not Adodc2.Recordset.EOF n = n + Adodc2.Recordset.Fields(2).Value m = m + Adodc2.Recordset.Fields(3).Value Adodc2.Recordset.MoveNext Loop Text1.Text = n Text2.Text = m End Sub

      Private Sub Form_Load()

      Adodc2.ConnectionString = MyStrs

      Adodc2.RecordSource = ”select * from 商品的銷售信息 where tb_title ='“ & Combo1.Text & ”' and tb_date ='“ & DTPicker1.Value & ”' order by id“

      Adodc2.Refresh

      AddTitle

      '使用代碼連接數(shù)據(jù)庫(kù)與數(shù)據(jù)表

      Adodc1.ConnectionString = MyStrs

      Adodc1.RecordSource = ”select * from 貨物的出入庫(kù)信息 “

      Adodc1.Refresh

      If Adodc1.Recordset.RecordCount > 0 Then

      Adodc1.Recordset.MoveFirst

      Combo1.Clear

      '在添加數(shù)據(jù)時(shí),首先清空控件中的內(nèi)容

      Do While Adodc1.Recordset.EOF = False

      '將商品銷售信息添加到下拉列表框控件當(dāng)中

      Combo1.AddItem(Adodc1.Recordset.Fields(”tb_title“))

      Adodc1.Recordset.MoveNext

      Loop

      End If End Sub

      Private Sub AddTitle()

      DataGrid1.Columns.Item(0).Caption = ”編號(hào)“

      DataGrid1.Columns.Item(1).Caption = ”名稱“

      DataGrid1.Columns.Item(2).Caption = ”銷售數(shù)量“

      DataGrid1.Columns.Item(3).Caption = ”銷售總價(jià)“

      DataGrid1.Columns.Item(4).Caption = ”銷售日期“ End Sub

      窗體的運(yùn)行結(jié)果如下:

      3.8 修改密碼模塊的設(shè)計(jì)與實(shí)現(xiàn)

      3.8.1 窗體界面設(shè)計(jì)

      (1)添加一個(gè)窗體,命名為Frm_Pas,將Caption屬性設(shè)置為“密碼修改”。(2)在窗體上加入一個(gè)ADO控件Adodc1。(3)設(shè)計(jì)窗體的界面如下圖。

      3.8.2 程序代碼實(shí)現(xiàn)

      (1)載入窗口時(shí)連接操作員信息數(shù)據(jù)表 Private Sub Form_Load()'使用代碼連接數(shù)據(jù)庫(kù)與數(shù)據(jù)表

      Adodc1.ConnectionString = MyStrs

      Adodc1.RecordSource = ”select * from 系統(tǒng)用戶的信息“

      Adodc1.Refresh End Sub

      (2)當(dāng)點(diǎn)擊“確定”按鈕時(shí),首先判斷用戶輸入的用戶名和原密碼信息是否正確,如果正確并且兩次輸入的新密碼一致,就將用戶密碼修改為新密碼。Private Sub Command1_Click()Adodc1.RecordSource = ”select * from 系統(tǒng)用戶的信息 where tb_name ='“ & Text1.Text & ”'“ Adodc1.Refresh

      If Text1.Text = ”“ Then

      MsgBox ”請(qǐng)輸入用戶名!“, 48, ”提示信息“

      Text1.SetFocus

      Else

      If Text2.Text = ”“ Then

      MsgBox ”請(qǐng)輸入舊密碼!“, 48, ”提示信息“

      Text2.SetFocus

      Else

      If Text3.Text = ”“ Then

      MsgBox ”請(qǐng)輸入新密碼!“, 48, ”提示信息“

      Text3.SetFocus

      Else

      If Text4.Text = ”“ Then

      MsgBox ”請(qǐng)確認(rèn)新密碼!“, 48, ”提示信息“

      Text4.SetFocus

      Else

      If Adodc1.Recordset.RecordCount > 0 Then

      MPassword = Adodc1.Recordset.Fields(”tb_pas“)

      If Text2.Text = MPassword And Text3.Text = Text4.Text Then

      '判斷數(shù)據(jù)的密碼是否正確

      Set DB_AdoRs = Cnn.Execute(”UPDATE 系統(tǒng)用戶的信息 SET tb_pas='“ + Text3.Text + ”' where tb_name='“ + Text1.Text + ”'“)

      MsgBox ”密碼已修改!“, 48, ”提示信息“

      Unload Me

      Else

      If Text2.Text <> MPassword Then

      MsgBox ”密碼不正確,請(qǐng)您確認(rèn)后重新輸入!“, 64, ”提示信息“

      Text2.Text = ”“

      Text3.Text = ”“

      Text4.Text = ”“

      Text2.SetFocus

      Else

      MsgBox ”兩次輸入的新密碼不一致,請(qǐng)重新輸入!“, 64, ”提示信息“

      Text3.Text = ”“

      Text4.Text = ”“

      Text3.SetFocus

      End If

      End If

      Else

      If Text1.Text <> ”“ Then

      MsgBox ”對(duì)不起 沒(méi)有此用戶的信息!“, 64, ”提示信息“

      Text1.Text = ”“

      Text2.Text = ”“

      Text3.Text = ”“

      Text4.Text = ”"

      Text1.SetFocus

      End If

      End If

      End If

      End If

      End If

      End If End Sub

      (3)當(dāng)用戶點(diǎn)擊“取消”時(shí),關(guān)閉密碼修改對(duì)話框。Private Sub Command2_Click()

      End End Sub

      窗體的運(yùn)行結(jié)果如下:

      4.實(shí)驗(yàn)總結(jié)

      通過(guò)這兩星期的學(xué)習(xí),加深了我對(duì)數(shù)據(jù)庫(kù)的認(rèn)識(shí),懂得了如何去應(yīng)用數(shù)據(jù)庫(kù),也對(duì)Visual Basic有了一定的了解了,雖然設(shè)計(jì)的過(guò)程中并不是那么的順利,但經(jīng)過(guò)查找相關(guān)的資料后,問(wèn)題一步一步地解決了,相信對(duì)我以后的學(xué)習(xí)有一定的幫助。

      第五篇:數(shù)據(jù)庫(kù)課程設(shè)計(jì) 圖書管理系統(tǒng)(精選)

      課 程 設(shè) 計(jì)

      軟件工程與數(shù)據(jù)庫(kù) 課程設(shè)計(jì) 任務(wù)書

      學(xué)院名稱:

      數(shù)學(xué)與計(jì)算機(jī)學(xué)院

      課程代碼:_6014419_ 專

      業(yè):

      級(jí):

      一、設(shè)計(jì)題目

      圖書管理系統(tǒng)

      二、主要內(nèi)容

      一個(gè)簡(jiǎn)單的圖書管理系統(tǒng)包括圖書館內(nèi)書籍的信息、學(xué)校在校學(xué)生的信息以及學(xué)生的借閱信息。此系統(tǒng)功能分為面向?qū)W生和面向管理員兩部分,其中學(xué)生可以進(jìn)行借閱、續(xù)借、歸還和查詢書籍等操作,管理員可以完成書籍和學(xué)生的增加,刪除和修改以及對(duì)學(xué)生,借閱、續(xù)借、歸還的確認(rèn)。如:

      圖書室有各種圖書一萬(wàn)多冊(cè)。

      每種圖書都有書名、書號(hào)(ISBN)、一名或多名作者(譯者)、出版社、定價(jià)和內(nèi)容簡(jiǎn)介。

      借書證記錄有借閱者的姓名、所在單位、職業(yè)等。

      憑借書證借書,每次最多能借8本書。借書期限最長(zhǎng)為30天。實(shí)現(xiàn)新進(jìn)圖書的數(shù)據(jù)錄入。

      實(shí)現(xiàn)對(duì)所有購(gòu)進(jìn)圖書的分類查詢和分類統(tǒng)計(jì)。能夠按書名、作者等分類查詢現(xiàn)有圖書的數(shù)量。

      記錄借閱者的個(gè)人資料和所借圖書的書名、書號(hào)數(shù)據(jù)等。

      三、具體要求

      1、完成系統(tǒng)的需求分析

      通過(guò)需求分析確定系統(tǒng)需要處理的數(shù)據(jù)的需求,要求使用數(shù)據(jù)庫(kù)的輔助設(shè)計(jì)工具(PowerDesigner等),建立業(yè)務(wù)處理模型。

      課 程 設(shè) 計(jì)

      2、完成系統(tǒng)概念結(jié)構(gòu)設(shè)計(jì) 概念數(shù)據(jù)模型(CDM)用于完成數(shù)據(jù)庫(kù)的設(shè)計(jì),與人和數(shù)據(jù)庫(kù)平臺(tái)和具體數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)和工具無(wú)關(guān)。首先選擇局部應(yīng)用畫出分E-R圖,最終形成系統(tǒng)的E-R圖

      3、完成系統(tǒng)邏輯結(jié)構(gòu)設(shè)計(jì)

      按照E-R圖轉(zhuǎn)換成關(guān)系模式的規(guī)則,將CDM轉(zhuǎn)換成邏輯數(shù)據(jù)模型,并為每個(gè)關(guān)系模式設(shè)計(jì)主鍵、外鍵。分析關(guān)系模式中的依賴關(guān)系,對(duì)關(guān)系模式規(guī)范化處理

      4、完成系統(tǒng)物理結(jié)構(gòu)設(shè)計(jì)

      為每個(gè)關(guān)系分配存儲(chǔ)長(zhǎng)度,建立數(shù)據(jù)庫(kù)的索引和視圖,定義關(guān)系中的主碼和外碼,寫出關(guān)系創(chuàng)建和查詢的SQL語(yǔ)句。

      5、編碼 選擇你自己熟悉的開發(fā)工具完成一個(gè)DBS系統(tǒng)的編碼工作。源代碼格式規(guī)范,注釋不少于三分之一

      四、主要技術(shù)路線提示

      1.仔細(xì)閱讀設(shè)計(jì)指導(dǎo)書內(nèi)容,認(rèn)真掌握任務(wù)要求?2.需求分析? 3.概念結(jié)構(gòu)設(shè)計(jì)? 4.邏輯結(jié)構(gòu)設(shè)計(jì)?5.物理結(jié)構(gòu)設(shè)計(jì)?6.編碼.2.后臺(tái)推薦采用SQL server或Oracle;前臺(tái)開發(fā)環(huán)境不限制。可采用ADO,ODBC,OLE DB或JDBC連接數(shù)據(jù)庫(kù),并調(diào)用系統(tǒng)存儲(chǔ)過(guò)程、自定義存儲(chǔ)過(guò)程、函數(shù)等。

      五、進(jìn)度安排

      第1周: 數(shù)據(jù)庫(kù)系統(tǒng)概念模型、數(shù)據(jù)模型設(shè)計(jì),創(chuàng)建數(shù)據(jù)庫(kù)以及相關(guān)對(duì)象; 第2周: 前臺(tái)程序開發(fā),撰寫報(bào)告,接受檢查。

      六、完成后應(yīng)上交的材料

      1. 源程序一份(包含數(shù)據(jù)庫(kù))

      2. 課程設(shè)計(jì)報(bào)告一份

      七、推薦參考資料

      1.王珊.數(shù)據(jù)庫(kù)系統(tǒng)概論(第四版).高等教育出版社 2.閃四清.數(shù)據(jù)庫(kù)系統(tǒng)原理與應(yīng)用教程.清華大學(xué)出版社

      課 程 設(shè) 計(jì)

      3.周龍?bào)J.數(shù)據(jù)庫(kù)管理系統(tǒng)實(shí)現(xiàn)技術(shù).中國(guó)地質(zhì)大學(xué)出版社 4.張海藩.軟件工程概論.清華大學(xué)出版社 5.陳明 編著.實(shí)用軟件工程基礎(chǔ).清華大學(xué)出版社

      6.成先海.數(shù)據(jù)庫(kù)基礎(chǔ)與應(yīng)用-SQL SERVER2000.機(jī)械工業(yè)出版社出版

      指導(dǎo)教師 簽名日期 年 月 日 系 主 任 審核日期 年 月 日

      下載醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)論文word格式文檔
      下載醫(yī)院門診管理系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)論文.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        數(shù)據(jù)庫(kù)課程設(shè)計(jì)之教務(wù)管理系統(tǒng)

        源代碼: CREATE DATABASE JWGL/*建立教務(wù)管理系統(tǒng)*/ ON (NAME = JWGL_Data, FILENAME = 'e:sql_dataJwgl_Data.mdf', SIZE = 20, MAXSIZE = 500, FILEGROWTH = 25%) LOG ON......

        數(shù)據(jù)庫(kù)課程設(shè)計(jì) 計(jì)算機(jī)教務(wù)管理系統(tǒng)

        中北大學(xué) 數(shù)據(jù)庫(kù)課程設(shè)計(jì) 說(shuō) 明 書 學(xué) 院、系: 專業(yè): 學(xué) 生 姓 名: 設(shè) 計(jì) 題 目: 李翰超 軟件學(xué)院 軟件工程 學(xué) 號(hào): 1221010619 計(jì)算機(jī)等級(jí)考試教務(wù)管理系統(tǒng) 起 迄 日 期: 2014......

        數(shù)據(jù)庫(kù)課程設(shè)計(jì)工資管理系統(tǒng).

        數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告 工資管理系統(tǒng) 組員:廖翔, 劉小芳, 強(qiáng)江波, 張晶晶,馮兆強(qiáng),夏沖 組長(zhǎng) :劉小芳 需求分析員 :張晶晶 程序員 :廖翔 , 劉小芳 , 強(qiáng)將波 測(cè)試員 :馮兆強(qiáng) 界面......

        數(shù)據(jù)庫(kù)課程設(shè)計(jì)__醫(yī)院管理信息系統(tǒng)

        數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告 設(shè)計(jì)項(xiàng)目名稱: 醫(yī)院管理系統(tǒng)專 業(yè): 網(wǎng)絡(luò)工程 班 級(jí): 201001 學(xué) 號(hào):201026340117;201026340121 姓 名: 張世波 趙流男 指 導(dǎo) 教 師: 劉小俊 2012 年 6 月 7......

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

        飛機(jī)訂票系統(tǒng) 1.概述(設(shè)計(jì)題目與可行性分析) 1.1設(shè)計(jì)題目:飛機(jī)訂票系統(tǒng) 1.2可行性分析 飛機(jī)訂票系統(tǒng)是為機(jī)場(chǎng)工作人員和客戶提供訂票退票等與機(jī)票相關(guān)內(nèi)容的管理系統(tǒng),方便機(jī)場(chǎng)工......

        醫(yī)院門診管理系統(tǒng)開題報(bào)告

        題目:醫(yī)院門診管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 一、 選題的來(lái)源、目的及意義隨著我國(guó)醫(yī)療衛(wèi)生體制改革的深化,計(jì)算機(jī)技術(shù)與應(yīng)用的發(fā)展,計(jì)算機(jī)信息化管理已成為各醫(yī)院提高生存力,加強(qiáng)管理,增......

        數(shù)據(jù)庫(kù)管理系統(tǒng)

        8.1 知識(shí)點(diǎn) 8.1.1 數(shù)據(jù)庫(kù)管理系統(tǒng)概述 DBMS的系統(tǒng)目標(biāo) 數(shù)據(jù)庫(kù)管理系統(tǒng)是數(shù)據(jù)庫(kù)系統(tǒng)的核心,從用戶角度來(lái)看,一個(gè)DBMS應(yīng)盡可能具備的 系統(tǒng)目標(biāo)是:用戶界面友好、結(jié)構(gòu)清晰和開放性......

        數(shù)據(jù)庫(kù)課程設(shè)計(jì)

        1 需求分析 在銀行業(yè)務(wù)模擬中用隨機(jī)函數(shù)產(chǎn)生隨機(jī)數(shù),求客戶在銀行的平均時(shí)間,客戶來(lái)到銀行后加入兩個(gè)隊(duì)列,客戶辦理的業(yè)務(wù)有兩種,一是取款和貸款,二是存款和還款。 2 概要設(shè)計(jì) typ......