


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第31頁 共31頁數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)模板高校教材管理系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 題 目: 高校教材管理系統(tǒng) 課 程 設(shè) 計(jì) 任 務(wù) 書 一、課程設(shè)計(jì)題目: 高校教材管理系統(tǒng) 二、課程設(shè)計(jì)應(yīng)解決的主要問題: (1)實(shí)現(xiàn)出版社、教材類型等的管理 _ (2)實(shí)現(xiàn)教材的訂購管理 _ (3)實(shí)現(xiàn)教材的入庫管理 _ (4)實(shí)現(xiàn)教材的領(lǐng)用管理 _ (5)創(chuàng)建規(guī)則實(shí)現(xiàn)教材的書號必須滿足意ISBN開頭,后跟10個(gè)數(shù)字的格式,比如:ISBN7302120363 _ (6)創(chuàng)建觸發(fā)器,實(shí)現(xiàn)教材入庫和出庫時(shí)自動(dòng)修改庫存數(shù)量 _ (7)創(chuàng)建存儲(chǔ)過程統(tǒng)計(jì)各種教材的訂購、到貨和發(fā)放數(shù)量;建立數(shù)據(jù)庫相關(guān)表之間的參照完
2、整性約束 _ 目 錄 1 概述 5 2 需求分析p 5 2.1 數(shù)據(jù)的分析p 5 2.2 數(shù)據(jù)處理的分析p 6 2.3 安全性分析p 6 2.4 完整性分析p 8 3 概念結(jié)構(gòu)設(shè)計(jì) 8 3. 1高校教材系統(tǒng)的數(shù)據(jù)流圖9 3.2 數(shù)據(jù)字典9 3.3 E-R圖10 4 邏輯結(jié)構(gòu)設(shè)計(jì) 13 4. 1 實(shí)體間聯(lián)系的不同情況 1 3 4. 2 將E-R圖轉(zhuǎn)換成關(guān)系模式 1 4 4. 3 關(guān)系模式的分析p 1 4 4. 4 數(shù)據(jù)庫關(guān)系圖 1 4 5 物理結(jié)構(gòu)設(shè)計(jì) 14 5.1設(shè)計(jì)存儲(chǔ)過程 1 4 5.2 設(shè)計(jì)索引 1 5 6 數(shù)據(jù)庫實(shí)施 15 6. 1權(quán) 限 設(shè) 置 1 5 6. 2數(shù) 據(jù) 輸 入 1 6
3、 6.2.1 創(chuàng) 建 數(shù) 據(jù) 庫 1 6 6.2.2 創(chuàng)建數(shù)據(jù)表并插入數(shù)據(jù)1 7 6.2.3 創(chuàng)建視圖 1 8 6.2.4 數(shù)據(jù)表的操縱語句 1 9 6. 3 程序設(shè)計(jì)與調(diào)試 1 9 6.3.1 設(shè)計(jì)索引 1 9 6.3.2 數(shù)據(jù)查詢操作 2 0 6.3.3 使用控制流語句編寫程序 2 2 6.3.4 編寫自定義函數(shù)及調(diào)用 2 3 6.3.5 編寫存儲(chǔ)過程及調(diào)用 2 4 6.3.6 編寫觸發(fā)器 2 5 6.3.7 設(shè)計(jì)游標(biāo)及其使用 2 6 7 結(jié)束語 27 8 【參考文獻(xiàn)】:p 28 1. 概述 1.1 項(xiàng)目背景 在高速發(fā)展的當(dāng)今信息社會(huì),越來越多的工作都已經(jīng)將計(jì)算機(jī)引入了其中,并且成為了其中
4、不可或缺的一個(gè)重要部分。利用計(jì)算機(jī)進(jìn)行各項(xiàng)管理與協(xié)調(diào),將能大大的提高工作的效率,減小工作強(qiáng)度;在相同的工作強(qiáng)度情況下,利用計(jì)算機(jī)進(jìn)行工作,能比原來的老式工作方式提高數(shù)倍乃至數(shù)十倍的工作的效率,可以大大的減少各項(xiàng)人力及物資損耗,從而使得能夠?qū)⒍嘤嗟娜肆巴度氲礁枰牡胤饺?。高校管理?dāng)然也不例外,所以教材管理的計(jì)算機(jī)化已刻不容緩。教材管理對于各個(gè)學(xué)校而言,都是一項(xiàng)很復(fù)雜、煩瑣的工作,是高校教務(wù)管理中的一個(gè)重要環(huán)節(jié),由于大學(xué)專業(yè)設(shè)置門類多,各專業(yè)每期開設(shè)課程的種類多,其業(yè)務(wù)不僅涉及出版部門,而且要面對全校各系的授課教師,各班級的學(xué)生,教材科要管理的入出庫教材種類非常多,涉及到的人員廣,工作量大,再
5、者是近些年來,我國高等教育規(guī)模不斷擴(kuò)大,學(xué)校學(xué)生人數(shù)迅速增加,使得教材管理工作更加繁重不堪。所以,一套好的高校教材管理軟件,不但能夠大大降低工作人員的勞動(dòng)強(qiáng)度,而且還能提高學(xué)校的管理效率和教學(xué)水平。 學(xué)校教材管理主要是由教材計(jì)劃制定、采購、入庫、發(fā)放、記賬、結(jié)算等一系列工作所組成,該工作各院校都有專門機(jī)構(gòu)負(fù)責(zé)該項(xiàng)工作,通常是教材科。由于學(xué)校中專業(yè)設(shè)置門類多,各專業(yè)每期開設(shè)課程種類多,各個(gè)專業(yè)需要訂購的課本也不一樣,在每學(xué)期開學(xué)的時(shí)候教材的發(fā)放便成為了一個(gè)繁重的任務(wù)。每期教材科管理的入出庫教材種類少則幾百多則幾千種,涉及教材冊數(shù)少則幾千多則幾萬,涉及人員廣,工作量大,再者特別是近年來,我國高等教
6、育規(guī)模的不斷擴(kuò)大,學(xué)校學(xué)生人數(shù)迅速增加,使教材管理工作更加繁重不堪。據(jù)調(diào)查,到目前為止,我國還有許多學(xué)校甚至是一些重點(diǎn)院校的教材管理仍為手工管理方式,這種現(xiàn)狀不但與現(xiàn)實(shí)學(xué)校教材管理的業(yè)務(wù)需求不相適應(yīng),并且也與學(xué)校信息化建設(shè)的發(fā)展趨勢不相適應(yīng),因此,學(xué)校教材管理人員目前迫切需要一套方便、高效的計(jì)算機(jī)化的管理信息系統(tǒng)來代替他們繁瑣、低效的傳統(tǒng)手工管理方式,并最終實(shí)現(xiàn)教材管理的全面自動(dòng)化。 因此,教材管理水平的高低直接影響教學(xué)工作的進(jìn)行、教學(xué)質(zhì)量的提高和合格人才的培養(yǎng),開發(fā)和使用高校教材管理信息系統(tǒng)是改善和提高教材管理水平的一個(gè)重要途徑。 1.2 編寫目的 本課題旨在解決我校和其他高校教材管理工作還
7、是依靠教材管理人員的手工管理的現(xiàn)狀,并且在現(xiàn)有基礎(chǔ)上考慮了如何完善和解決現(xiàn)有的兩層結(jié)構(gòu)的C/S(客戶端/服務(wù)器)教材系統(tǒng)本身所固有的缺陷,把兩層結(jié)構(gòu)中服務(wù)器部分和客戶端部分的應(yīng)用單獨(dú)劃分出來,從而滿足大型系統(tǒng)的需求。通過本系統(tǒng)不僅可以方便教材管理人員管理教材,還可以方便教務(wù)部門和廣大師生查詢教材和查看教材管理記錄,使教材信息管理工作系統(tǒng)化、規(guī)范化、自動(dòng)化,從而達(dá)到提高教材管理效率的目的。 1.3 軟件定義 人員訂書、領(lǐng)書、查詢教材資料及其書款情況必須在管理員的設(shè)置條件下進(jìn)行。 1.4 開發(fā)環(huán)境 本系統(tǒng)使用SQLServer2022Express數(shù)據(jù)庫作為后臺(tái)的數(shù)據(jù)管理系統(tǒng),利用ADO數(shù)據(jù)庫組件
8、連接后臺(tái)數(shù)據(jù)庫。開發(fā)采用的是C_,它是由Microsoft公司開發(fā)的Windows程序開發(fā)環(huán)境,是現(xiàn)在最受歡迎的幾種開發(fā)工具之一. 2. 需求分析p 2.1 數(shù)據(jù)的分析p 教材管理系統(tǒng)主要提供學(xué)生以班級為單位能從學(xué)校教材管理中心完成每學(xué)期領(lǐng)到所訂教材的功能,其中包括班級信息、教材管理員信息、財(cái)務(wù)室信息、教師信息、教材信息、出版社信息。此系統(tǒng)可以讓教師增加、刪除和修改某一學(xué)期所定的教材信息,教材管理員可以依據(jù)教師提供的應(yīng)訂教材要求和出版社聯(lián)系訂書,還可以讓出版社增加、刪除和修改預(yù)定教材的信息。如果信息無誤,財(cái)務(wù)室根據(jù)學(xué)生交的教材費(fèi)給教材管理員撥款,訂書成功后,開學(xué)初可以將所定教材成功發(fā)放給學(xué)生所
9、在班級。 2.2 數(shù)據(jù)處理的分析p 系統(tǒng)實(shí)現(xiàn)功能描述 本系統(tǒng)應(yīng)該實(shí)現(xiàn)的功能如下: (1)系統(tǒng)管理模塊:首先是對本系統(tǒng)的操作用戶設(shè)置權(quán)限以及用戶基本信息的添加、修改、刪除其次是設(shè)置有系統(tǒng)初始化,能夠在系統(tǒng)出現(xiàn)問題或者有大量錯(cuò)誤、冗余數(shù)據(jù)時(shí)進(jìn)行初始化設(shè)置,使系統(tǒng)恢復(fù)期初始狀態(tài); (2)書費(fèi)管理局模塊:財(cái)務(wù)科根據(jù)學(xué)生訂書情況和教材費(fèi)用收繳學(xué)生訂書費(fèi)用,并記錄相應(yīng)的數(shù)據(jù) ; (3)教材出入庫模塊:教材科根據(jù)學(xué)生訂書數(shù)量和教材基本信息想學(xué)生發(fā)放教材的出庫管理和向書商下達(dá)供書訂單并打印教材報(bào)表,便于用戶直接查看,實(shí)現(xiàn)出版社、教材類型等的管理并實(shí)現(xiàn)教材的訂購、入庫和領(lǐng)用管理; (4)綜合查詢模塊:根據(jù)用戶的
10、類型和需求查詢教材的庫存信息,班級信息以及費(fèi)用收繳信息,創(chuàng)建規(guī)則實(shí)現(xiàn)教材的書號必須滿足以ISBN開頭,后跟10個(gè)數(shù)字的格式,比如:ISBN7302120363 。創(chuàng)建觸發(fā)器,實(shí)現(xiàn)教材入庫和出庫時(shí)自動(dòng)修改庫存數(shù)量。創(chuàng)建存儲(chǔ)過程統(tǒng)計(jì)各種教材的訂購、到貨和發(fā)放數(shù)量;建立數(shù)據(jù)庫相關(guān)表之間的參照完整性約束 ; (5)統(tǒng)計(jì)分析p 模塊:錄入班級信息閉和教師單位信息并設(shè)置打印報(bào)表功能供用戶查看然后操作員根據(jù)訂書情況統(tǒng)計(jì)分析p 學(xué)生買書的人數(shù)比例和學(xué)生不購買教材的原因分析p ,一次給校方提供相應(yīng)的數(shù)據(jù),便于改進(jìn)學(xué)校的教材管理措施,滿足學(xué)生對教材的需求; (6)2.3 安全性分析p (1)系統(tǒng)能抵御瑞星網(wǎng)上公布
11、的病毒的攻擊而不至于癱瘓。(2)系統(tǒng)能安全的防范對數(shù)據(jù)庫內(nèi)容不安全的訪問和操作。(3)系統(tǒng)能在斷電的情況下,依靠UPS電確保數(shù)據(jù)庫內(nèi)容的完整性和安全性。(4)數(shù)據(jù)庫服務(wù)端應(yīng)具備系統(tǒng)使用期間2小時(shí)備份一次數(shù)據(jù)庫的功能。(5)系統(tǒng)應(yīng)用驗(yàn)證用戶權(quán)限方可使用的功能保障。 (6)能完全、直觀的體現(xiàn)系統(tǒng)功能,用戶能方便快捷的執(zhí)行某種教材管理工作,能適應(yīng)屏顯分辨率的調(diào)整,友好、可操作性強(qiáng)。 (7)限于網(wǎng)絡(luò)配置和C/S結(jié)構(gòu)程序的網(wǎng)絡(luò)編程實(shí)現(xiàn)問題,部分功能可能實(shí)現(xiàn)不完美,甚至是暫時(shí)無法實(shí)現(xiàn)。 以下為數(shù)據(jù)庫的用戶信息及其權(quán)限 1班級信息 班級 交費(fèi) 財(cái)務(wù)管理員 修改信息 刪除信息 登記信息 領(lǐng)書 班級信息操作流程
12、圖 2 教材管理員信息 教材管理員 管理 教材 刪除信息 修改信息 登記信息 發(fā)書 教材管理員信息操作流程圖 3 財(cái)務(wù)管理員信息 財(cái)務(wù)管理員 撥款 教材管理員 登記信息 刪除信息 修改信息 購買教材 財(cái)務(wù)管理員信息操作流程圖 4 教師信息 教師 選定 教材 修改人數(shù) 刪除人數(shù) 統(tǒng)計(jì)人數(shù) 預(yù)訂教材 教師信息操作流程圖 5 教材信息 教材 分類 班級 刪除領(lǐng)取信息 修改領(lǐng)取信息 登記領(lǐng)取信息 被領(lǐng)取 教材信息操作流程圖 6 出版社信息 出版社 出版 教材 整理信息 聯(lián)系購買商 分類 被訂購 出版社信息操作流程圖 2.4 完整性分析p 當(dāng)向數(shù)據(jù)庫中插入、修改時(shí),系統(tǒng)能夠辨別輸入的數(shù)據(jù)是否符合語義,不
13、能的則不能修改成功。 3. 概念結(jié)構(gòu)設(shè)計(jì) 從課程設(shè)計(jì)選題中可以得知,我們設(shè)計(jì)的高校教材管理系統(tǒng)數(shù)據(jù)庫需具備以下功能: 1) 實(shí)現(xiàn)出版社、教材類型等的管理; 2) 實(shí)現(xiàn)教材的訂購管理; 3) 實(shí)現(xiàn)教材的入庫管理; 4) 實(shí)現(xiàn)教材的領(lǐng)用管理; 5) 可隨時(shí)查詢教材管理系統(tǒng)中的各種信息; 6) 創(chuàng)建規(guī)則實(shí)現(xiàn)教材的書號必須滿足以ISBN開頭,后跟10個(gè)數(shù)字的格式,比如:ISBN7302120363; 7) 創(chuàng)建觸發(fā)器,實(shí)現(xiàn)教材入庫和出庫時(shí)自動(dòng)修改庫存數(shù)量; 8) 創(chuàng)建存儲(chǔ)過程統(tǒng)計(jì)各種教材的訂購、到貨和發(fā)放數(shù)量;建立數(shù)據(jù)庫相關(guān)表之間的參照完整性約束。 3.1 高校教材系統(tǒng)的數(shù)據(jù)流圖 數(shù)據(jù)流程圖 3.2
14、數(shù)據(jù)字典 數(shù)據(jù)字典是指對數(shù)據(jù)的數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、處理邏輯、外部實(shí)體等進(jìn)行定義和描述,其目的是對數(shù)據(jù)流程圖中的各個(gè)元素做出詳細(xì)的說明。是一種用戶可以訪問的記錄數(shù)據(jù)庫和應(yīng)用程序數(shù)據(jù)的目錄。 數(shù)據(jù)字典最重要的作用是作為分析p 階段的工具。數(shù)據(jù)字典最重要的用途都是供人查詢對不了解的條目的解釋,在結(jié)構(gòu)化分析p 中,數(shù)據(jù)字典的作用是給數(shù)據(jù)流圖上每個(gè)成分加以定義和說明。換句話說,數(shù)據(jù)流圖上所有的成分的定義和解釋的文字集合就是數(shù)據(jù)字典,而且在數(shù)據(jù)字典中建立的一組嚴(yán)密一致的定義很有助于改進(jìn)分析p 員和用戶的通信。 數(shù)據(jù)庫數(shù)據(jù)字典不僅是每個(gè)數(shù)據(jù)庫的中心,而且對每個(gè)用戶也是非常重要的信息。用戶可以
15、用SQL語句訪問數(shù)據(jù)庫數(shù)據(jù)字典。下面是本系統(tǒng)中的數(shù)據(jù)字典。 名字:用戶信息 描述:使用該軟件的人員信息 定義:用戶信息=登陸賬號+真實(shí)名字+登陸密碼+班級 名字:教材基本信息 描述:各種教材的詳細(xì)信息 定義:教材信息=教材編號+教材名稱+教材作者+出版社+教材版本號 名字:入庫信息 描述:每一種教材的入庫詳細(xì)信息 定義:入庫信息=教材編號+教材名稱+入庫單號 +單價(jià)+出版社+數(shù)量+入庫時(shí)間 名字:訂購信息 描述:每一種教材訂購的詳細(xì)信息 定義:訂購信息=訂購單號+教材編號+教材名稱+數(shù)量+單價(jià)+供應(yīng)商+訂購日期 名字:出庫信息 描述:每一種教材的出庫詳細(xì)信息 定義:出庫信息=教材編號+教材名稱
16、+數(shù)量+單價(jià)+出版社+班級 名字:管理員信息 描述:管理教材的入庫和出庫的詳細(xì)信息 定義:管理員信息=編號+姓名+性別+電話 名字:供應(yīng)商信息 描述:為需求單位提供教材 定義:供應(yīng)商信息=編號+名稱+地址+負(fù)責(zé)人+電話 3.3 E-R圖 下面是各實(shí)體的ER圖: 班級: 出版社: 訂購管理: 出庫管理: 學(xué)生: 入庫管理: 供應(yīng)商管理: 高校教材管理系統(tǒng)實(shí)現(xiàn)各種管理工作,根據(jù)使用者學(xué)生與供應(yīng)商、管理員管理、入庫管理、出庫的管理、印刷社、教材的關(guān)系,構(gòu)化出本系統(tǒng)整體的ER圖: 4. 邏輯結(jié)構(gòu)設(shè)計(jì) 數(shù)據(jù)庫的邏輯結(jié)構(gòu)設(shè)計(jì)就是把概念結(jié)構(gòu)設(shè)計(jì)階段設(shè)計(jì)好的基本ER圖轉(zhuǎn)換為與選用的 DBMS產(chǎn)品所支持的數(shù)據(jù)模
17、型相符合的邏輯結(jié)構(gòu)。由于目前使用的數(shù)據(jù)庫基本上都是關(guān)系數(shù)據(jù)庫,因此首先需要將ER圖轉(zhuǎn)換為關(guān)系模型,然后根據(jù)具體DBMS的特點(diǎn)和限制轉(zhuǎn)換為特定的DBMS支持下的數(shù)據(jù)模型,最后進(jìn)行優(yōu)化。在本系統(tǒng)中我們選用的數(shù)據(jù)庫環(huán)境是SQL srver2022。 4.1 實(shí)體型間聯(lián)系的不同情況 (1)一個(gè)1:1聯(lián)系可以轉(zhuǎn)換成一個(gè)獨(dú)立的關(guān)系模式,也可以與任意一段對應(yīng)的關(guān)系模式合并。 (2)一個(gè)1:n聯(lián)系可以轉(zhuǎn)換成一個(gè)獨(dú)立的關(guān)系模式,也可以與n端對應(yīng)的關(guān)系模式合并。 (3)一個(gè)m:n聯(lián)系可以轉(zhuǎn)換成一個(gè)關(guān)系模式。 (4)3個(gè)或3個(gè)以上實(shí)體間的一個(gè)多元聯(lián)系可以轉(zhuǎn)換為一個(gè)關(guān)系模式。 (5)具有相同碼的關(guān)系模式可以合并。 4
18、.2 將E-R圖轉(zhuǎn)換成關(guān)系模式 教材(教材編號,教材名稱,類型編號,訂書單位,出版社名稱,出版時(shí)間,作者,印張,數(shù)量,字?jǐn)?shù),入庫時(shí)間)班級(班級編號,班級名稱,人數(shù),班長,班長號碼,班主任,班主任號碼,學(xué)院系,學(xué)校,入學(xué)時(shí)間)學(xué)生(學(xué)號,姓名,學(xué)院系,學(xué)校,班級)出庫(教材編號,教材名稱,數(shù)量,單價(jià),班級編號,出版社編號,出版時(shí)間,出庫時(shí)間,負(fù)責(zé)人)入庫(教材編號,教材名稱,數(shù)量,單價(jià),出版社,入庫時(shí)間,作者,負(fù)責(zé)人)管理員(管理員編號,管理員名字,性別,電話)供應(yīng)商(供應(yīng)商編號,供應(yīng)商名稱,供應(yīng)商地址,電話,負(fù)責(zé)人)訂購(訂單編號,教材編號,教材名稱,單價(jià),數(shù)量) 出版社(出版社編號,出版社
19、名稱,電話,負(fù)責(zé)人,地址)。 (橫線化的表示是主鍵)4.3關(guān)系模式的分析p 學(xué)生(學(xué)號,姓名,學(xué)院系,學(xué)校,班級),其中,學(xué)號為主碼,姓名,學(xué)院系,學(xué)校,班級為非主屬性,因?yàn)樗蟹侵鲗傩远纪耆蕾囉诿總€(gè)候選碼,所有主屬性都完全函數(shù)依賴于每個(gè)不包含它的候選碼,但是有屬性完全函數(shù)依賴于非碼的一組屬性,所以該關(guān)系屬于3NF,但不屬于BCNF。 管理員(管理員編號,管理員名字,性別,電話),其中,管理員編號為主碼,管理員名字,性別,電話為非主屬性,因?yàn)樗蟹侵鲗傩远纪耆蕾囉诿總€(gè)候選碼,所有主屬性都完全函數(shù)依賴于每個(gè)不包含它的候選碼,沒有任何屬性完全函數(shù)依賴于非碼的任何一組屬性,所以該關(guān)系屬于3NF,
20、也屬于BCNF。 5. 物理結(jié)構(gòu)設(shè)計(jì) 5.1 設(shè)計(jì)存儲(chǔ)過程 (1)在“教材管理庫”數(shù)據(jù)庫創(chuàng)建無參存儲(chǔ)過程,查詢各種教材的訂購數(shù)量 create procedure jc_sl as select 教材編號,count(數(shù)量) as 數(shù)量sl from 訂購 group by 教材編號 go (2)在“教材管理庫”數(shù)據(jù)庫創(chuàng)建帶output參數(shù)的存儲(chǔ)過程,用于計(jì)算指定的教材訂購的總訂購金額,存儲(chǔ)過程中使用一個(gè)輸入?yún)?shù)(教材名稱)和一個(gè)輸出參數(shù)(總訂購金額)create procedure pname jcmc varchar(20),coun int output as select coun =
21、 單價(jià)*數(shù)量 from 訂購 where 教材名稱 = jcmc go (3)在“教材管理庫”數(shù)據(jù)庫創(chuàng)建帶有參數(shù)和默認(rèn)值(通配符)的存儲(chǔ)過程,從學(xué)生表中返回指定的學(xué)生(提供姓名)的信息。該存儲(chǔ)過程對傳遞的參數(shù)進(jìn)行模式匹配,如果沒有提供參數(shù),則返回所有學(xué)生的信息 create procedure student_name name varchar(40)= % as select * from 學(xué)生 where 姓名 like name go 5.2 設(shè)計(jì)索引 (1)聚合索引和唯一索引 創(chuàng)建學(xué)生表上按學(xué)號升序排的唯一聚合索引id1 use 教材管理庫 go create unique clust
22、ered index id1 on 學(xué)生 (學(xué)號) (2)非聚合索引 創(chuàng)建學(xué)生表上先按學(xué)號升序排,學(xué)號一樣的再按書費(fèi)降序排的非聚集索引id2 use 教材管理庫 go create index id2 on 學(xué)生 (學(xué)號,書費(fèi) desc) 6. 數(shù)據(jù)庫實(shí)施 6.1 權(quán)限設(shè)置 設(shè)計(jì)登錄賬戶SQL Server,登錄名gxjc1,gxjc2及密碼 create login gxjc1 with password=111111, default_database=教材管理庫 create login gxjc2 with password=111111, default_database=教材管理庫
23、 設(shè)計(jì)數(shù)據(jù)庫用戶系統(tǒng)管理員xtgly,一般用戶ybyh create user xtgly for login gxjc1 create user ybyh for login gxjc2 設(shè)計(jì)架構(gòu) create schema schema1 authorization xtgly go create schema schema2 authorization ybyh 設(shè)置用戶操作權(quán)限 把“學(xué)生”表的全部操作權(quán)限授予用戶xtgly和ybyh grant all privileges on 學(xué)生 to xtgly,ybyh 把對“教材”表的查詢權(quán)限授予所有用戶 grant select on 教
24、材 to public 把查詢“學(xué)生”表和修改學(xué)生學(xué)號的權(quán)限授予用戶ybyh grant select,update(學(xué)號) on 學(xué)生 to ybyh 把對訂購表的插入權(quán)限授予用戶xtgly,允許xtgly再將此權(quán)限授予其他用戶 grant insert on 訂購 to xtgly with grant option grant insert on 訂購 to ybyh with grant option 將教材管理庫數(shù)據(jù)庫中建表的權(quán)限授予ybyh use 教材管理庫 grant create table to ybyh 6.2 數(shù)據(jù)輸入 6.2.1 創(chuàng)建數(shù)據(jù)庫 T-SQL語句為: CRE
25、ATE DATABASE 教材管理庫 ON (NAME =教材管理庫, FILENAME=E:DATA教材管理庫.MDF, SIZE=5, MAXSIZE=unlimited, FILEGROWTH=10%), FILEGROUP FG1 (NAME=教材庫, FILENAME=E:DATA教材管理庫.NDF, SIZE=10, MAXSIZE=100, FILEGROWTH=1) LOG ON (NAME=教材庫LOG1, FILENAME=E:DATA教材管理庫LOG1.LDF, SIZE=5, MAXSIZE=50, FILEGROWTH=1), (NAME=教材庫LOG2, FILEN
26、AME=E:DATA教材管理庫LOG2.LDF, SIZE=5, MAXSIZE=50, FILEGROWTH=1) 6.2.2創(chuàng)建數(shù)據(jù)表并插入數(shù)據(jù) 幾個(gè)有代表性的數(shù)據(jù)表的創(chuàng)建 T-SQL語句為: USE 教材管理庫 GO create table 班級 ( 班級編號 int not null, 班級名稱 varchar(5) not null, 人數(shù) int null, 班長 char(10) null, 班長電話 char(11) null, 班主任 char(10) null, 班主任電話 char(11) null, 學(xué)院系 varchar(10) null, 學(xué)校 varchar(1
27、0) null, 入學(xué)時(shí)間 datetime null, constraint PK_班級 primary key (班級編號) ) ); create table 出庫 ( 教材編號 char(14) not null, 班級編號 char(14) not null, 教材名稱 varchar(10) null, 數(shù)量 int null, 單價(jià) float(5) null, 出版社編號 char(14) null, 出版時(shí)間 datetime null, 負(fù)責(zé)人 varchar(4) null, constraint PK_出庫 primary key clustered (教材編號, 班級
28、編號) ) create table 訂購 ( 供應(yīng)商編號 char(14) not null, 教材編號 char(14) not null, 訂單編號 char(14) null, 教材名稱 varchar(10) null, 單價(jià) float(5) null, 數(shù)量 int null, constraint PK_訂購 primary key clustered (供應(yīng)商編號, 教材編號) ); create table 入庫 ( 管理員編號 char(14) not null, 教材編號 char(14) not null, 教材名稱 varchar(10) null, 出版社 var
29、char(10) null, 數(shù)量 int null, 入庫時(shí)間 datetime null, 單價(jià) float(5) null, 作者 varchar(4) null, 負(fù)責(zé)人 varchar(4) null, constraint PK_入庫 primary key clustered (管理員編號, 教材編號) ); create table 學(xué)生 ( 學(xué)號 char(10) not null, 班級編號 char(10) null, 姓名 varchar(4) not null, 學(xué)校 varchar(10) null, 院系 varchar(10) null, 書費(fèi) char(6)
30、null, constraint PK_學(xué)生 primary key (學(xué)號) ); 6.2.3 創(chuàng)建視圖 (1)創(chuàng)建“學(xué)生_班級”視圖,包括學(xué)生的學(xué)號,班級編號,姓名,和他們的學(xué)校和書費(fèi) use 教材管理庫 go create view 學(xué)生_班級 as select 學(xué)號,班級.班級編號,姓名,班級.學(xué)校,書費(fèi) from 班級,學(xué)生 where 班級.班級編號=學(xué)生.班級編號 and 班級.學(xué)校=學(xué)生.學(xué)校 go (2)創(chuàng)建“訂購統(tǒng)計(jì)視圖”,求每種教材的總訂購量,要求包括教材編號和教材名稱 use 教材管理庫 go create view 訂購統(tǒng)計(jì)視圖 as select 訂購.教材編號,
31、訂購.教材名稱,SUM (訂購.數(shù)量) AS 總庫存量 from 訂購,教材 where 訂購.教材編號= 教材.教材編號 and 訂購.教材名稱=教材.教材名稱 and 訂購.數(shù)量=教材.數(shù)量 group by 訂購.教材編號,訂購.教材名稱 go (3)創(chuàng)建視圖來查看出庫和入庫中的教材數(shù)量的信息 use 教材管理庫 go create view v_exle(教材編號,出庫數(shù)量,入庫數(shù)量) As select 教材.教材編號,出庫.數(shù)量 ,入庫.數(shù)量 from 教材,出庫,入庫 where 教材.教材編號 = 出庫.教材編號 and 教材.教材編號 = 入庫.教材編號 6.2.4 數(shù)據(jù)表的
32、操縱語句 在“學(xué)生”表中插入一行數(shù)據(jù)(學(xué)號、班級編號、姓名、書費(fèi))為(120506、6、張三、500)USE 教材管理庫 GO INSERT into 學(xué)生(學(xué)號,班級編號,姓名,書費(fèi)) VALUES(120506,6,張三,500) 在“管理員”表中的“性別”字段的值為“男” USE 教材管理庫 GO UPDATE 管理員 SET 性別=男 在“學(xué)生”表中,將學(xué)號為120501的學(xué)生姓名改為王武 USE 教材管理庫 GO UPDATE 學(xué)生 SET 姓名=王武 WHERE 學(xué)號=120501 在“學(xué)生”表中添加一字段“備注”varchar(20),“備注”字段信息為“已畢業(yè)” USE 教材管
33、理庫 GO ALTER TABLE 學(xué)生 ADD 備注 varchar(20) (2)UPDATE 學(xué)生 SET 備注=已畢業(yè) 刪除“學(xué)生”表中120501號學(xué)生的記錄 USE 教材管理庫 GO DELETE 學(xué)生 WHERE 學(xué)號=120501 6.3程序設(shè)計(jì)與調(diào)試 6.3.1 設(shè)計(jì)索引 (1)聚合索引和唯一索引 創(chuàng)建學(xué)生表上按學(xué)號升序排的唯一聚合索引id1 use 教材管理庫 go create unique clustered index id1 on 學(xué)生 (學(xué)號) (2)非聚合索引 創(chuàng)建學(xué)生表上先按學(xué)號升序排,學(xué)號一樣的再按書費(fèi)降序排的非聚集索引id2 use 教材管理庫 go cr
34、eate index id2 on 學(xué)生 (學(xué)號,書費(fèi) desc) 6.3.2 數(shù)據(jù)查詢操作 (1)確定集合查詢 查詢供應(yīng)商表的所有記錄 use 教材管理庫 go select * from 班級(2)字符匹配查詢 查詢?nèi)霂毂碇兴行铡皬垺钡淖髡叩男畔?select * from 入庫 where 作者 like 張%(3)聚合函數(shù)等統(tǒng)計(jì)數(shù)據(jù)的查詢 統(tǒng)計(jì)查詢學(xué)生表中學(xué)生的總?cè)藬?shù) select count(*) from 學(xué)生 查詢信息學(xué)院學(xué)生的最高書費(fèi),最低書費(fèi)和平均書費(fèi) select max(書費(fèi)) as 最高書費(fèi), min(書費(fèi)) as 最低書費(fèi) from 學(xué)生 where 院系=信息學(xué)院
35、 查詢出庫表中教材數(shù)量的平均值,平均值顯示列標(biāo)題為“平均數(shù)量” select AVG(數(shù)量) as 平均數(shù)量 from 出庫(4)分組查詢 查詢“教材管理庫”中男生和女生的人數(shù) select 性別,COUNT(性別)from 管理員 group by 性別(6)嵌套查詢 無關(guān)子查詢:在“教材管理庫”中查詢與“0001”在同一班級學(xué)習(xí)的學(xué)生的學(xué)校和班級名稱 select 學(xué)校,班級名稱 from 班級 where 班級名稱=(select 班級名稱 from 班級 where 班級編號=0001) 查詢“教材管理庫”中網(wǎng)絡(luò)班級人數(shù)最多的班級人數(shù),編號和學(xué)校 select 學(xué)校,人數(shù),班級編號 f
36、rom 班級 where 人數(shù)= all (select 人數(shù) from 班級 where 班級名稱=網(wǎng)絡(luò))and 班級名稱=網(wǎng)絡(luò)(7)帶有EXISTS或NOT EXISTS 謂詞查詢 在“教材管理庫”中查詢所有軟件班級學(xué)生的學(xué)校 select 學(xué)校 from 學(xué)生 where exists (select * from 班級 where 班級名稱=軟件 and 班級編號=學(xué)生.班級編號) 6.3.3 使用控制流語句編寫程序 (1)IFELSE語句 如果訂購數(shù)學(xué)教材的數(shù)量大于1500,則顯示“銷售不錯(cuò)”,否則顯示“銷售一般” if(select 數(shù)量 from 訂購 where 教材名稱=數(shù)學(xué)
37、)1500 print 銷售不錯(cuò) else print 銷售一般(2)CASE語句 以簡單CASE格式查詢所有學(xué)生的學(xué)校情況,包括學(xué)號,姓名和學(xué)校的英文名 select 學(xué)號,姓名, case 學(xué)校 when 西財(cái) then xicai when 理工 then ligong when 郵電 then youdian when 麻省 then masheng when 哈佛 then hafo end as 學(xué)校 from 學(xué)生(2)內(nèi)嵌表值函數(shù)的創(chuàng)建與調(diào)用 查詢某個(gè)學(xué)校所有學(xué)生的班級編號,學(xué)號,姓名和班級名稱 create function xx_func(xuexiao varchar(1
38、0) returns table as return (select 班級.班級編號,班級名稱,學(xué)號,姓名 from 班級,學(xué)生 where 學(xué)生.學(xué)校= xuexiao and 班級.班級編號 = 學(xué)生.班級編號 ) 查詢西財(cái)所有學(xué)生的班級編號,學(xué)號,姓名和班級名稱 select * from xx_func(西財(cái))(3)多語句表值函數(shù)的創(chuàng)建與調(diào)用 創(chuàng)建多語句表值函數(shù),通過“班級編號”作為實(shí)參調(diào)用該函數(shù),可顯示該學(xué)生的班級名稱及學(xué)號 create function bj_班級(bh char(7) returns 班級 table (班級編號 char(7), 班級名稱 char(6), 學(xué)
39、號 char(10) as begin insert into 班級 select 班級.班級編號,班級名稱,學(xué)號 from 班級,學(xué)生 where 班級.班級編號=學(xué)生.班級編號 and 班級.班級編號=bh return end 查詢“0005”班學(xué)生的班級名稱及學(xué)號 select * from bj_班級(0005) 6.3.5 編寫存儲(chǔ)過程及調(diào)用 (1)在“教材管理庫”數(shù)據(jù)庫創(chuàng)建無參存儲(chǔ)過程,查詢各種教材的訂購數(shù)量并調(diào)用 create procedure jc_sl as select 教材編號,count(數(shù)量) as 數(shù)量sl from 訂購 group by 教材編號 go ex
40、ecute jc_sl(2)在“教材管理庫”數(shù)據(jù)庫創(chuàng)建帶output參數(shù)的存儲(chǔ)過程,用于計(jì)算指定的教材訂購的總訂購金額,存儲(chǔ)過程中使用一個(gè)輸入?yún)?shù)(教材名稱)和一個(gè)輸出參數(shù)(總訂購金額)create procedure pname jcmc varchar(20),coun int output as select coun = 單價(jià)*數(shù)量 from 訂購 where 教材名稱 = jcmc go 執(zhí)行存儲(chǔ)過程pname,查詢c語言的總訂購金額 declare coun int execute pname c語言,coun output print c語言的總訂購金額:+ str(coun)(
41、3)在“教材管理庫”數(shù)據(jù)庫創(chuàng)建帶有參數(shù)和默認(rèn)值(通配符)的存儲(chǔ)過程,從學(xué)生表中返回指定的學(xué)生(提供姓名)的信息。該存儲(chǔ)過程對傳遞的參數(shù)進(jìn)行模式匹配,如果沒有提供參數(shù),則返回所有學(xué)生的信息 create procedure student_name name varchar(40)= % as select * from 學(xué)生 where 姓名 like name go 執(zhí)行存儲(chǔ)過程student_name,顯示所有學(xué)生的信息 execute student_name(4)創(chuàng)建存儲(chǔ)過程統(tǒng)計(jì)各種教材的訂購、到貨和發(fā)放數(shù)量并調(diào)用 create Proc Query_tongji (dinggou_b
42、h char(14)output, ruku_shl int output, chuku_shl int output ) as select dinggou_bh = 訂購.教材編號,ruku_shl =入庫.數(shù)量, chuku_shl = 出庫.數(shù)量 from 訂購,出庫, 入庫 執(zhí)行存儲(chǔ)過程,輸出出庫中某一個(gè)教材的出庫數(shù)量 DECLARE ck_shl int Exec Query_tongji dinggou_bh = ISBN1205290105, ruku_shl = 1005 ,chuku_shl = ck_shl output select ck_shl 輸出入庫中某一個(gè)教材的
43、出庫數(shù)量 DECLARE rk_shl int Exec Query_tongji dinggou_bh = ISBN1205290105, chuku_shl = 38 ,ruku_shl = rk_shl output select rk_shl 6.3.6 編寫觸發(fā)器 創(chuàng)建觸發(fā)器,實(shí)現(xiàn)教材入庫和出庫時(shí)自動(dòng)修改庫存數(shù)量 (1)入庫與庫存的關(guān)系 教材入庫時(shí),可以通過觸發(fā)程序利用教材編碼相同來檢索庫存里是否有該書的庫存記錄,如果存在該書的記錄,則在原有的記錄上增加;如果庫存里沒有該書的庫存記錄,則新增加該書的庫存記錄。完成對庫存表的更新,減少了重復(fù)輸入的麻煩 create trigger up
44、data_kucun on 入庫 for insert as declare shl int,bh char(10) select bh = 教材編號,shl = 數(shù)量 from inserted if exists(select * from kucun where 教材編號= bh ) update kucun set 數(shù)量 = 數(shù)量 + shl where 教材編號 = bh else if exists(select * from kucun where 教材編號bh) begin insert into kucun(教材編號,數(shù)量) values (bh,shl) end begin
45、 Raiserror(入庫量等于庫存量,16,2) rollback transaction end 測試觸發(fā)器 update kucun set 數(shù)量 = 數(shù)量 + 2000 where 教材編號 = ISBN1205290102(2)出庫與庫存的關(guān)系 管理人員將教材出庫時(shí),通過觸發(fā)程序利用教材編碼相同來檢索該教材是否存在于庫存中,如果存在且出庫數(shù)量不大于庫存數(shù)量,則在庫存數(shù)量上減少相應(yīng)的數(shù)量,如果不存在,則說明,輸入的教材編碼有誤,系統(tǒng)提示錯(cuò)誤信息,同時(shí),如果該教材存在,但出庫的數(shù)量大于庫存的數(shù)量,則系統(tǒng)提示錯(cuò)誤信息,并重新輸入 create trigger update_kucun on
46、 出庫 for insert as declare shl int,bh char(10),shj datetime select bh = 教材編號,shl = 數(shù)量 from inserted if exists(select * from kucun where 教材編號 = bh and shl = 數(shù)量) update kucun set kucun.數(shù)量 = kucun.數(shù)量 - shl where 教材編號 = bh else begin Raiserror(出入量大于庫存量,16,2) rollback transaction Raiserror(入庫量等于庫存量,16,2) rollback transaction end 測試觸發(fā)器 update kucun set kucun.數(shù)量 = kucun.數(shù)量 - 44 where 教材編號 = ISBN1205290102 為學(xué)生表創(chuàng)建一個(gè)dml觸發(fā)器,在插入和修改數(shù)據(jù)時(shí),都會(huì)自動(dòng)顯示所有學(xué)生的信息 create trigger print_table on 學(xué)生 for insert,up
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 住房公積金借貸合同范本
- 孵化器企業(yè)入駐合同范本
- 單位攝影勞務(wù)合同范例
- 合同詐騙合同范本
- 十五房子買賣合同范本
- 合同范本環(huán)氧樹脂地坪
- 產(chǎn)品獨(dú)家運(yùn)營合同范本
- 廠房樓房出售合同范本
- 同城肥豬出售合同范本
- 制作門窗就合同范本
- 美麗鄉(xiāng)村規(guī)劃設(shè)計(jì)技術(shù)導(dǎo)則
- 課題成果要報(bào)格式和要求
- 經(jīng)銷商準(zhǔn)入及評定表格vr
- SF-36量表(簡明健康狀況調(diào)查表)
- 主要河流南、北方河流的不同特征主要湖泊
- 上崗證WORD模板
- 寺院管理框架結(jié)構(gòu)圖PPT課件
- 2019第五版新版PFMEA 注塑實(shí)例
- 職業(yè)技能鑒定質(zhì)量督導(dǎo)報(bào)告
- 鈑金k因子和折彎扣除參照表
- 海圖圖標(biāo)說明(共13頁)
評論
0/150
提交評論