數(shù)據(jù)庫學(xué)校飯?zhí)孟M管理系統(tǒng)的設(shè)計說明書_第1頁
數(shù)據(jù)庫學(xué)校飯?zhí)孟M管理系統(tǒng)的設(shè)計說明書_第2頁
數(shù)據(jù)庫學(xué)校飯?zhí)孟M管理系統(tǒng)的設(shè)計說明書_第3頁
數(shù)據(jù)庫學(xué)校飯?zhí)孟M管理系統(tǒng)的設(shè)計說明書_第4頁
數(shù)據(jù)庫學(xué)校飯?zhí)孟M管理系統(tǒng)的設(shè)計說明書_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、課程設(shè)計說明書設(shè)計名稱:數(shù)據(jù)庫系統(tǒng)原理課程設(shè)計題 目: 學(xué)校飯?zhí)孟M管理系統(tǒng)的設(shè)計學(xué)生姓名:孫璐專 業(yè):網(wǎng)絡(luò)工程班 級:12網(wǎng)絡(luò) 1 班學(xué) 號: 指導(dǎo)教師:顧艷春、韋慶清、李婭、胡明 日 期: 2015 年 01 月 14 日課程設(shè)計任務(wù)書網(wǎng)絡(luò)工程 專業(yè) 12 年級 1 班 孫璐一、設(shè)計題目 學(xué)校飯?zhí)孟M管理系統(tǒng)二、主要內(nèi)容 通過對學(xué)生在學(xué)校飯?zhí)没虿蛷d的消費流程進行分析,完成具有食品管 理、 消費管理、帳戶管理、餐廳管理等相關(guān)功能的小型數(shù)據(jù)庫管理應(yīng)用系統(tǒng) (消費刷 卡可以通過手工輸入來模擬完成)1.根據(jù)任務(wù)要求完成有關(guān)表的設(shè)計(表的設(shè)計需要遵循 3NF)。2.完成飯?zhí)茫ú蛷d)員工表、消費人員及

2、帳戶表、餐廳表、食品價目表的 維護。3.完成消費表的生成,并計算消費折扣(可現(xiàn)金消費也可刷卡消費)。4.按人員、時間、餐廳統(tǒng)計計算消費總額。5.按食品類別、時間、餐廳統(tǒng)計計算消費總額。6.完成用戶帳戶管理功能。7.完成數(shù)據(jù)備份與恢復(fù)功能。三、具體要求 圍繞課程設(shè)計的目的和意義,基本要求如下:1、鞏固和加深對數(shù)據(jù)庫系統(tǒng)原理的理解,提高綜合運用本課程所學(xué)知識 的能力。2、培養(yǎng)學(xué)生選用參考書,查閱手冊及文獻資料的能力。培養(yǎng)獨立思考、 深入研究、分析問題、解決問題以及團隊協(xié)作能力。3、通過實際系統(tǒng)的分析設(shè)計、編程調(diào)試,掌握數(shù)據(jù)庫軟件的分析設(shè)計方 法和鞏固軟件工程方法。軟件開發(fā)的流程可參見軟件工程課程教

3、材。(見第 六部分)4、能夠按要求編寫課程設(shè)計報告書,能正確闡述設(shè)計和實驗結(jié)果、正確 繪制系統(tǒng)數(shù)據(jù)流圖和 E-R 圖。5、通過課程設(shè)計,培養(yǎng)學(xué)生嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度,嚴(yán)肅認(rèn)真的工作作風(fēng),和 團隊協(xié)作精神。6、本課程設(shè)計只要求大家完成一個基本的數(shù)據(jù)庫軟件的開發(fā)工作,系統(tǒng) 開發(fā)不要求大而全數(shù)據(jù)庫軟件的開發(fā),只要完成數(shù)據(jù)的增、刪、改、查等 基本功能,并設(shè)計一個較友好系統(tǒng)操作界面(最好是圖形界面)。7、系統(tǒng)開發(fā)平臺不做統(tǒng)一要求。四、進度安排依照教學(xué)計劃,課程設(shè)計時間為: 2 周。本設(shè)計要求按照軟件工程的基本過程完成設(shè)計。建議將時間分為四個階 段:第一階段,根據(jù)題目要求,確定系統(tǒng)的總體設(shè)計方案 (概要設(shè)計)

4、:即系統(tǒng) 包括哪些功能模塊,每個模塊的實現(xiàn)方法,同時編寫相應(yīng)的設(shè)計文檔;第二階 段,完成系統(tǒng)的詳細設(shè)計工作;第三階段,完成數(shù)據(jù)庫設(shè)計和編寫程序代碼并 調(diào)試,再將調(diào)試通過的各個子模塊進行集成調(diào)試;第四階段,歸納文檔資料, 按要求填寫在課程設(shè)計說明書 上,并參加答辯。三個階段時間分配的大概比 例是: 25: 25: 40 :10。具體安排如下:1 月 5日-1 月 6日:資料查找、系統(tǒng)分析,數(shù)據(jù)流程分析,概要設(shè)計。1 月 7日-1 月 8日:系統(tǒng)詳細設(shè)計、功能設(shè)計。1 月 9日-1 月 14日:算法實現(xiàn)、編程調(diào)試。1 月 15日-1 月 16日:功能演示、資料整理、課程設(shè)計說明書編寫。五、完成后應(yīng)

5、上交的材料 本課程設(shè)計要求按照學(xué)校有關(guān)規(guī)范的要求完成,在課程設(shè)計完成后需要提 交的成果和有關(guān)文檔資料包括課程設(shè)計的說明書,課程設(shè)計有關(guān)源程序及可運 行程序(含運行環(huán)境),其內(nèi)容不能過于簡單,必須包括的內(nèi)容有: 1課程設(shè)計的基本思想,系統(tǒng)的總功能和各子模塊的功能說明; 2數(shù)據(jù)庫設(shè)計中有關(guān)數(shù)據(jù)流圖和 E-R 圖,并對重要的操作畫出有關(guān)算法流 程圖;3源程序中核心代碼的說明;4本課程設(shè)計的個人總結(jié),主要包括以下內(nèi)容:課程設(shè)計中遇到的主要問題和解決方法;你的創(chuàng)新和得意之處;設(shè)計中存在的不足及改進的設(shè)想;本次課程設(shè)計的感想和心得體會。5. 源代碼要求在關(guān)鍵的位置有注釋,增加程序的可讀性。程序結(jié)構(gòu)和變量六

6、、總評成績指導(dǎo)教師簽名日期年 月 日系 主 任審核日期年 月 日目錄一設(shè)計任務(wù)分析 51.1系統(tǒng)總功能分析51.2系統(tǒng)總框架51.3設(shè)計思想簡述5二總體設(shè)計思路 6 三需求分析 63.1數(shù)據(jù)字典 73.1.1數(shù)據(jù)庫用到的表 73.1.2各表的說明 7 四概念結(jié)構(gòu)設(shè)計 84.1消除不必要的冗余,設(shè)計基本的 E-R 圖 84.2合并分 E-R圖,生成總的 E-R 圖 9 五邏輯結(jié)構(gòu)設(shè)計 105.1數(shù)據(jù)模型的優(yōu)化 105.2由 E-R 圖得到的關(guān)系模式 10 六物理結(jié)構(gòu)設(shè)計 106.1為關(guān)系模式選擇存取方法 106.2選擇存取路徑 106.3創(chuàng)建基本表 116.4建立索引 146.5建立觸發(fā)器 17

7、6.6建立視圖 18 七數(shù)據(jù)庫的實施 197.1數(shù)據(jù)的載入 19 八數(shù)據(jù)庫的試運行 228.1視圖中的數(shù)據(jù) 228.2視圖的查詢 23 九數(shù)據(jù)庫運行和維護 239.1系統(tǒng)開發(fā)工具的介紹 239.2 VB 6.0 與 SQL sever 的連接 249.3 VB 實現(xiàn)學(xué)校餐廳的管理 279.3.1登錄界面 279.3.2管理員功能 30退 出 系 統(tǒng)9.3.3學(xué)生功能 57 十課程設(shè)計的總結(jié)報告 60 一設(shè)計任務(wù)分析1.1系統(tǒng)總功能分析通過對學(xué)生在學(xué)校飯?zhí)没虿蛷d的消費流程進行分析,完成具有食品管理、 消費管理、 帳戶管理、餐廳管理等相關(guān)功能的小型數(shù)據(jù)庫管理應(yīng)用系統(tǒng)。 根據(jù)任 務(wù)要求完成有關(guān)表的設(shè)

8、計(表的設(shè)計需要遵循3NF)。同時還要完成進人員、餐廳、食品價目表的維護,完成消費表的生成,并計算消費折扣。以及按人員、時 間段、餐廳統(tǒng)計計算消費總額,按食品類別、時間段、餐廳統(tǒng)計計算消費總額, 最后完成用戶管理功能,完成數(shù)據(jù)備份與恢復(fù)功能。1.2系統(tǒng)總框架工作人員分為管理員,一般員工。管理員都有唯一的工號,姓名,密碼, 其中初始密碼為工號。而一般員工都有唯一的工號、姓名、職位和所屬餐廳。 其中只有管理員可以登錄系統(tǒng),對餐廳、學(xué)生、一般員工、食品進行管理,對 餐廳營業(yè)表進行查詢消費總額。每位同學(xué)都有唯一的學(xué)號、姓名、密碼、專業(yè)和學(xué)生卡內(nèi)余額,其中初始密碼為學(xué)號后 5 位,學(xué)生可以利用學(xué)號和初始

9、密碼登錄系統(tǒng)進行修改密碼,查 看自己的基本信息以及查詢自己卡內(nèi)的余額。餐廳分為兩個,每個餐廳都有唯一的編號和姓名。食品的類別分為素菜和肉菜,每個食品都有唯一的編號,食品名稱,素菜 的單價為 2 元,肉菜的單價為 4 元。學(xué)生在學(xué)校餐廳就餐 , 就有所就餐的餐廳編號、該學(xué)生的學(xué)號、所食用的 食品編號、食品數(shù)量、該食品的類別,付款方式 (現(xiàn)金或者刷卡) 和就餐時間消費表就是建立的視圖,包括學(xué)生學(xué)號、餐廳號、食品號、食品單價、食 品數(shù)量、折扣后價格。以上就是我對學(xué)校餐廳管理系統(tǒng)的需求分析,要求系統(tǒng)能有效、快速、安 全、可靠和無誤的完成上述操作,服務(wù)器程序利于維護。3.1數(shù)據(jù)字典:數(shù)據(jù)庫表名關(guān)系模式名

10、稱manager管理員信息表student學(xué)生信息表restaurant餐廳信息表food食品價格表operation餐廳營業(yè)表worker員工信息表pf operation消費表(視圖)3.1.2 各表的說明表一 管理員信息表元素變量名數(shù)據(jù)類型備注工號mnoChar(9)主鍵(非空)姓名mnameChar(20)非空密碼mpswChar(18)非空表二 學(xué)生信息表元素變量名數(shù)據(jù)類型備注學(xué)號snoChar(9)主鍵(非空)姓名snameChar(20)非空密碼spswChar(18)非空專業(yè)sdeptChar(20)非空余額sbalanceInt表三 餐廳信息表元素變量名數(shù)據(jù)類型備注編號rno

11、Char(9)主鍵(非空)名稱rnameChar(20)非空表四 食品價格表元素變量名數(shù)據(jù)類型備注食品編號fnoChar(9)主鍵(非空)食品名稱fnameChar(20)非空食品單價fpriceInt非空食品類別fbelongChar(20)非空表五 餐廳營業(yè)表元素變量名數(shù)據(jù)類型備注餐廳編號rnoChar(9)Restaurant 的外鍵學(xué)號snoChar(9)Student 的外鍵食品編號fnoChar(9)Food的外鍵食品數(shù)量fnumChar(10)非空消費時間ctimeDatetime允許空值付款方式wayChar(10)非空食品類別fbelongChar(20)非空工 姓名 職位a

12、專r(業(yè)9)所屬餐廳四 概念結(jié)構(gòu)設(shè)計 學(xué)生4.1 消除不必要的冗余,設(shè)計基本由需求分析的結(jié)果可知,本系統(tǒng)設(shè)計的點實菜體包括: 員工基本信息:員管理員基本信息 基本信息:學(xué)生學(xué)號、學(xué)生姓名、學(xué)生密碼、 4)編餐號廳基本信息:餐廳編 品基本信息:食品編餐廳的營業(yè)餐表廳學(xué)生、餐廳、食品三者銷之售間的多對多聯(lián)系轉(zhuǎn)換出食來品 性,不必畫在 食品 實體間的聯(lián)系包括:每位學(xué)生可以在多個餐廳里消費,每個餐廳也可以供給多個學(xué)生的飯菜 每個學(xué)生可以點 每個餐廳可4.2 合并分 E-R1)2)3)餐廳名稱。食品名稱、食品單價、食品類別。E-R圖上。物,每個食物也可以被多個食學(xué)品號生點 有管多理名員工,而每個員工只能

13、在一個 成總的 E-R 圖五 邏輯結(jié)構(gòu)設(shè)計表六 員工信息表5.1數(shù)據(jù)模型的優(yōu)化數(shù)據(jù)庫邏輯設(shè)計的結(jié)果不是唯一的。 為了進一步提高數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能, 還應(yīng)該根據(jù)應(yīng)用需求適當(dāng)?shù)匦薷摹?調(diào)整數(shù)據(jù)模型的結(jié)構(gòu), 這就是數(shù)據(jù)模型的優(yōu)化 方法為:1)確定數(shù)據(jù)依賴;2)對于各個關(guān)系模式之間的數(shù)據(jù)依賴進行極小化的處理,消除冗余的聯(lián)系;3)按照數(shù)據(jù)依賴的理論對關(guān)系模式逐一進行分析,考察是否存在部分函數(shù)、傳 遞依賴、多值依賴等,確定各關(guān)系模式分別處于第幾范式。由于并不是數(shù)據(jù)類型元素學(xué)號姓名owname wpost rnoE-R圖、卡內(nèi)余額。號、號、備注 主鍵(非空)非空非空 非空Char(18)Char(9)1)

14、2)5)姓名食品名食品類別規(guī)范 化程度越高的關(guān)系就越優(yōu), 一般說來,第三范式就足夠了, 所以對于本系統(tǒng), 按照要求,達到第三范式。4)按照需求分析階段得到的處理要求, 分析對于這樣的應(yīng)用環(huán)境這些模式是否 合適,確定是否要對模式進行合并或分解。本系統(tǒng)中的管理員皆是餐廳的員 工,但是只要管理員擁有密碼可以對餐廳進行管理,所以我把他們分為管理 員表和員工表。5) 對關(guān)系模式進行必要的分解,提高數(shù)據(jù)操作的效率和存儲空間的利用率。5.2 由 E-R 圖得到的關(guān)系模式數(shù)據(jù)結(jié)構(gòu)名組成管理員信息工號,姓名,密碼學(xué)生信息學(xué)號,姓名,密碼,專業(yè),卡內(nèi)余額餐廳信息編號,名稱食品價格表食品號,食品名,食品價,食品類別

15、營業(yè)表餐廳編號,學(xué)號,食品號,食品數(shù)量,消費時間,付款方式,食品類別員工信息工號,姓名,職位,所屬餐廳(下劃線標(biāo)注的屬性為主碼) 六 物理結(jié)構(gòu)設(shè)計6.1 為關(guān)系模式選擇存取方法數(shù)據(jù)庫在物理設(shè)備上的存儲結(jié)構(gòu)與存取方法稱為數(shù)據(jù)庫的物理結(jié)構(gòu),它依 賴于選定的數(shù)據(jù)庫管理系統(tǒng)。 為一個給定的邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用環(huán) 境的物理結(jié)構(gòu)的過程,就是數(shù)據(jù)庫的物理設(shè)計。這個系統(tǒng)我選擇使用索引, 為前五個基本表以主鍵建立了唯一索引,為營業(yè) 表建立了以餐廳編號、學(xué)生學(xué)號、食品編號和消費時間一起的唯一索引。6.2選擇存取路徑 create database 學(xué)校餐廳 on ( name= 學(xué)校餐廳 _data,

16、學(xué)校餐廳 _data.mdf) log on ( name= 學(xué)校餐廳 _log, 學(xué)校餐廳 _log.ldf)6.3創(chuàng)建基本表1)創(chuàng)建管理員表 CREATE TABLE manager(mno CHAR(9) PRIMARY KEY, mname CHAR(20) NOT NULL, mpsw CHAR(18) NOT NULL);2)創(chuàng)建學(xué)生表 CREATE TABLE student(sno CHAR(9) PRIMARY KEY, sname CHAR(20) NOT NULL, spsw CHAR(18) NOT NULL, sdept CHAR(20) NOT NULL,sbala

17、nce INT CHECK(sbalance=0);3)創(chuàng)建餐廳表 CREATE TABLE restaurant(rno CHAR(9) PRIMARY KEY, rname CHAR(20) NOT NULL);4)創(chuàng)建食品表 CREATE TABLE food(fno CHAR(9) PRIMARY KEY, fname CHAR(20) NOT NULL, fprice INT NOT NULL, fbelong CHAR(20) NOT NULL);5)創(chuàng)建餐廳營業(yè)表 CREATE TABLE operation(rno CHAR(9) NOT NULL, sno CHAR(9) N

18、OT NULL, fno CHAR(9) NOT NULL, fnum CHAR(10) NOT NULL, ctime DATETIME DEFAULT GETDATE(), way CHAR(10) NOT NULL, fbelong CHAR(20) NOT NULL,FOREIGN KEY(rno) REFERENCES restaurant(rno), FOREIGN KEY(sno) REFERENCES student(sno), FOREIGN KEY(fno) REFERENCES food(fno) );6)創(chuàng)建員工表 CREATE TABLE worker(wno CHA

19、R(9) PRIMARY KEY, wname CHAR(20) NOT NULL, wpost CHAR(18) NOT NULL, rno CHAR(9) NOT NULL, FOREIGN KEY(rno) REFERENCES restaurant(rno);6.4建立索引CREATE UNIQUE INDEX worker_wno ON worker(wno); CREATE UNIQUE INDEX manager_mno ON manager(mno);CREATE UNIQUE INDEX student_sno ON student(sno); CREATE UNIQUE I

20、NDEX restaurant_rno ON restaurant(rno);CREATE UNIQUE INDEX food_fno ON food(fno);CREATE UNIQUE INDEX operation_rsft ON operation(rno ASC,sno ASC,fno ASC,ctime ASC);6.5創(chuàng)建觸發(fā)器CREATE TRIGGER student_balance ON operationAFTER INSERTAS BEGINDECLARE card char(10)定義變量DECLARE time datetimeselect card = way,

21、time = ctime from inserted if card = cardbeginUPDATE studentSET student.sbalance=student.sbalance-food.fprice*operation.fnum*1FROM student, operation, foodWHERE student.sno = operation.sno and operation.fno = food.fnoand ctime = timeendEND 學(xué)生卡內(nèi)余額 =原余額 - 食品單價 X數(shù)量 X 折扣。 只有當(dāng)學(xué)生的付款方式為刷卡時才計算,支付現(xiàn)金不計算。6.6創(chuàng)建

22、視圖CREATE VIEW pf_operationASSELECT student.sno,restaurant.rno,food.fno,fprice,fnum,fnum*fprice*1 price,food.fbelong,ctimeFROM operation,restaurant,student,foodWHERE operation.sno=student.sno AND operation.rno=restaurant.rno AND operation.fno=food.fno七 數(shù)據(jù)庫的實施7.1數(shù)據(jù)的載入1 )向管理員表中插入數(shù)據(jù)INSERT INTO manager(m

23、no,mname,mpsw) VALUES(30481,王紅 ,30481);INSERT INTO manager(mno,mname,mpsw) VALUES(30482,李明 ,30482);2)向?qū)W生表中插入數(shù)據(jù) 由于建立了觸發(fā)器會自動修改學(xué)生卡內(nèi)余額, 截圖是在所有消費記錄輸入過 以后的,所以插入數(shù)據(jù)時的余額跟截圖的余額會有不同。3)向餐廳表中插入數(shù)據(jù)INSERT INTO restaurant(rno,rname) VALUES(01, 清風(fēng)樓 );INSERT INTO restaurant(rno,rname) VALUES(02, 映月閣 );4)向食品表中插入數(shù)據(jù)INSER

24、T INTO food(fno,fname,fprice,fbelong) VALUES(01,紅燒魚塊,4,carn);INSERT INTO food(fno,fname,fprice,fbelong) VALUES(02,炸雞腿,4,carn);INSERT INTO food(fno,fname,fprice,fbelong) VALUES(03,清炒西洋菜,2,veg);INSERT INTO food(fno,fname,fprice,fbelong) VALUES(04,苦瓜炒蛋,2,veg);ADO對象是無法存取數(shù)據(jù)庫中內(nèi)客戶端9.2 VB 6.0 與 SQL se客戶端 er

25、 的連接ADO 對象INSERT INTO food(fno,fname,fprice,fbelong) VALUES(05,酸辣土豆絲,2,veg);INSERT INTO food(fno,fname,fprice,fbelong) VALUES(06,家常豆腐,2,veg);5)向餐廳營業(yè)表中插入數(shù)據(jù)(插入了兩天的營業(yè)記錄,時間自動為系統(tǒng)時間)6)向員工表中插入數(shù)據(jù)INSERT INTO worker(wno,wname,wpost,rno) VALUES(40481,張?zhí)m,經(jīng)理,01);INSERT INTO worker(wno,wname,wpost,rno) VALUES(404

26、82,馬燕 ,廚師,01);INSERT INTO worker(wno,wname,wpost,rno) VALUES(40483,周揚,經(jīng)理,02);INSERT INTO worker(wno,wname,wpost,rno) VALUES(40484,王剛,廚師,02);八數(shù)據(jù)庫的試運行8.1視圖中的數(shù)據(jù)8.2視圖的查詢 經(jīng)計算,結(jié)果正確九數(shù)據(jù)庫運行和維護9.1系統(tǒng)開發(fā)工具的介紹微軟公司的 Visual Basic 6.0是 Windows 應(yīng)用程序開發(fā)工具,是目前最為廣 泛的、易學(xué)易用的面向?qū)ο蟮拈_發(fā)工具。 Visual Basic提供了大量的控件,這些控件可用于設(shè)計界面和實現(xiàn)各種功

27、能,減少了編程人員的工作量,也簡化了界 面設(shè)計過程,從而有效的提高了應(yīng)用程序的運行效率和可靠性。利用 VISUAL BASIC 程序設(shè)計語言,可以很方便地設(shè)計出在 WINDOWS 環(huán)境下運行的應(yīng)用 程序。故而,實現(xiàn)本系統(tǒng) VB 是一個相對較好的選擇。ADO 對象能夠存取到數(shù)據(jù)庫的內(nèi)容,首先要求數(shù)據(jù)庫的驅(qū)動程序 ( ODBC驅(qū)動程序與 OLE DB驅(qū)動程序 )必須安裝上,否則, 容,其原理示意圖如下圖所示:如果在一臺新的電腦上應(yīng)該先附加數(shù)據(jù)庫, 就是說要先有數(shù)據(jù)資源。 對客戶端于我們的實驗關(guān)機后會使數(shù)據(jù)庫中我們自己建立的數(shù)據(jù)庫不見, 所以可以進行如 同下圖的步驟:各種數(shù)據(jù)庫所對應(yīng)的驅(qū)動程序選擇

28、mdf 格式文件即可,會提示附加數(shù)據(jù)庫成功。點擊 VB 工程處添加,新增一個模塊,在里面輸入如下代碼,即可實現(xiàn) VB 與數(shù)據(jù)庫 SQL 的連 接。各種數(shù)據(jù)庫 (如 Access、 SQL Server 以及 Oracle 等 )Option ExplicitPublic strSQL As StringPublic Function ExecuteSQL(ByVal strSQL As String) As ADODB.RecordsetOn Error GoTo ErrorTrap 聲明 ADODB.Connection對象變量Dim objConnection As ADODB.Conne

29、ction 聲明 ADODB.Recordset對象變量Dim objRecordset As ADODB.Recordset 聲明一個存放 SQL查詢條件的數(shù)組Dim strArray() As String 定義新連接Set objConnection = New ADODB.Connection 創(chuàng)建新連接objConnection.ConnectionString = ConnectString 打開數(shù)據(jù)庫objConnection.OpenSplit 函數(shù)返回一個下標(biāo)從零開始的一維數(shù)組,包含指定數(shù)目的子字符串 strArray = Split(strSQL)If InStr(INSE

30、R,DELETE,UPDATE, UCase(strArray(0) Then執(zhí)行 SQL查詢objConnection.Execute strSQLElse 打開記錄集Set objRecordset = New ADODB.Recordset objRecordset.Open Trim(strSQL), objConnection, _ adOpenKeyset, adLockOptimisticSet ExecuteSQL = objRecordsetEnd If 釋放對象Set objRecordset = NothingSet objConnection = NothingExit

31、 Function 出錯處理ErrorTrap:Set objRecordset = NothingSet objConnection = NothingEnd Function 連接字符串賦值函數(shù)Public Function ConnectString() As String ConnectString=Provider=SQLOLEDB.1;Integrated警告Security=SSPI;Persist Security Info=False;Initial Catalog=學(xué)校餐廳 ;Data Source=.;(本地數(shù)據(jù)庫寫 . 即可)End Function9.3 VB 實現(xiàn)學(xué)

32、校餐廳的管理9.3.1 登錄界面分為管理員和學(xué)生兩種使用者, 管理員有兩個, 初始登錄密碼是自己的工號, 錄后可以自己修改。代碼如下:Private Sub Command1_Click() 聲明 ADODB.Recordset對象變量Dim objRecordset As ADODB.Recordset 聲明 SQL字符串Dim strSQL As String Select Case optCase 1 查找用戶名 strSQL = select mno from manager where mno= & _Trim(txtno.Text) & 獲得符合輸入的用戶記錄集Set objRec

33、ordset = ExecuteSQL(strSQL) 如果輸入的用戶不存在If objRecordset.EOF = True ThenMsgBox 用戶名錯誤! , vbExclamation + vbOKOnly, 警告 txtno.SetFocus txtno.SelStart = 0 txtno.SelLength = Len(txtno.Text)Exit SubEnd If 從數(shù)據(jù)庫中獲得用戶名mno = objRecordset.Fields(0) 查找用密碼strSQL = select mno from manager where mpsw= & _ Trim(txtpsw

34、.Text) & 獲得符合輸入的密碼記錄集Set objRecordset = ExecuteSQL(strSQL) 如果輸入的密碼不存在If objRecordset.EOF = True Or mno objRecordset.Fields(0) Then MsgBox 密碼錯誤! , vbExclamation + vbOKOnly,txtpsw.SetFocus txtpsw.SelStart = 0 txtpsw.SelLength = Len(txtpsw.Text) Exit SubEnd If 顯示主界面 管理員界面 .ShowCase 2 查找用戶名strSQL = sele

35、ct sno from student where sno= & _Trim(txtno.Text) & 獲得符合輸入的用戶記錄集Set objRecordset = ExecuteSQL(strSQL) 如果輸入的用戶不存在If objRecordset.EOF = True ThenMsgBox 用戶名錯誤! , vbExclamation + vbOKOnly, txtno.SetFocustxtno.SelStart = 0 txtno.SelLength = Len(txtno.Text) Exit SubEnd If 從數(shù)據(jù)庫中獲得用戶名sno = objRecordset.Fie

36、lds(0) 查找用密碼strSQL = select sno from student where spsw= & _Trim(txtpsw.Text) & 獲得符合輸入的密碼記錄集Set objRecordset = ExecuteSQL(strSQL) 如果輸入的密碼不存在If objRecordset.EOF = True Or sno objRecordset.Fields(0) Then MsgBox 密碼錯誤! , vbExclamation + vbOKOnly, 警txtpsw.SetFocus txtpsw.SelStart = 0 txtpsw.SelLength = L

37、en(txtpsw.Text)Exit SubEnd If 顯示主界面學(xué)生界面 .StudentID = & Trim(txtno.Text) & 學(xué)生界面 .ShowEnd Select 卸載登陸窗體Unload MeEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Option1_Click()opt = 1End SubPrivate Sub Option2_Click()opt = 2 End Sub9.3.2 管理員功能 其中一個管理員進行登錄: 點擊登錄,進入管理員界面1)查詢消費總額 當(dāng)摁下管理員界面的查

38、詢餐廳總額按鈕后會顯示出未查詢前, 數(shù)據(jù)庫中的所有消 費記錄,和 pf_operation視圖的數(shù)據(jù)相同。這是利用了 adodc部件和 DataGrid 部 件,二者經(jīng)常搭配使用。點擊“查詢”按鈕可查詢相關(guān)內(nèi)容: 按“返回”按鈕可返回到管理員界面,按“退出”按鈕直接退出。代碼如下:Private Sub Form_Load()Dim objRecordset As ADODB.Recordset 綁定學(xué)生strSQL = select DISTINCT sno from studentSet objRecordset = ExecuteSQL(strSQL) objRecordset.Move

39、FirstCombo1.ClearDo While Not objRecordset.EOFCombo1.AddItem objRecordset.Fields(0) objRecordset.MoveNextLoopCombo1.ListIndex = 0 綁定時間strSQL = select DISTINCT convert(char(10),ctime,120) From operationSet objRecordset = ExecuteSQL(strSQL) objRecordset.MoveFirstCombo2.ClearDo While Not objRecordset.E

40、OFCombo2.AddItem objRecordset.Fields(0) objRecordset.MoveNextLoopCombo2.ListIndex = 0 綁定餐廳 strSQL = select DISTINCT rno from restaurant Set objRecordset = ExecuteSQL(strSQL) objRecordset.MoveFirstCombo3.ClearDo While Not objRecordset.EOFCombo3.AddItem objRecordset.Fields(0) objRecordset.MoveNextLoop

41、Combo3.ListIndex = 0From operation 綁定菜類別 strSQL = select DISTINCT fbelong from food Set objRecordset = ExecuteSQL(strSQL) objRecordset.MoveFirstCombo4.ClearDo While Not objRecordset.EOFCombo4.AddItem objRecordset.Fields(0) objRecordset.MoveNextLoopCombo4.ListIndex = 0 綁定時間strSQL = select DISTINCT co

42、nvert(char(10),ctime,120)Set objRecordset = ExecuteSQL(strSQL) objRecordset.MoveFirstCombo5.ClearDo While Not objRecordset.EOFCombo5.AddItem objRecordset.Fields(0)objRecordset.MoveNextLoopCombo5.ListIndex = 0 綁定餐廳strSQL = select DISTINCT rno from restaurantSet objRecordset = ExecuteSQL(strSQL)objRec

43、ordset.MoveFirstCombo6.ClearDo While Not objRecordset.EOFCombo6.AddItem objRecordset.Fields(0)objRecordset.MoveNextLoopCombo6.ListIndex = 0Adodc1.Visible = FalseAdodc1.RecordSource = select sno學(xué)號 ,rno 餐廳編號 ,fno 菜編號,fprice 菜單價 ,fnum 菜量,price 折扣后價格 ,fbelong 菜類,ctime 消費時 間 from pf_operationAdodc1.Refre

44、shSet DataGrid1.DataSource = Adodc1.RecordsetDataGrid1.RefreshEnd Sub2)管理學(xué)生信息 * 查找學(xué)生 * 和查詢總額相似,點擊查詢學(xué)生后,即可看見學(xué)生表中全部信息, 點擊查詢后, 看到某個學(xué)生信 息。按“返回”按鈕可返回到管理員界面,按“退出”按鈕直接退出代碼如下:Private Sub Command1_Click()Dim strSQL As StringstrSQL = select sno學(xué)生學(xué)號 ,sname 學(xué)生姓名 ,spsw 學(xué)生密碼 ,sdept學(xué)生專業(yè) ,sbalance 卡內(nèi)余額 from student

45、 where sno= & Trim(Combo1.Text) & Adodc1.Visible = FalseAdodc1.RecordSource = strSQLAdodc1.RefreshSet DataGrid1.DataSource = Adodc1.RecordsetDataGrid1.RefreshEnd SubPrivate Sub Command2_Click() 管理員界面 .ShowUnload MeEnd SubPrivate Sub Command3_Click()Unload MeEnd SubPrivate Sub Form_Load()Dim objRecor

46、dset As ADODB.Recordset 綁定學(xué)生strSQL = select DISTINCT sno from student Set objRecordset = ExecuteSQL(strSQL) objRecordset.MoveFirstCombo1.ClearDo While Not objRecordset.EOFCombo1.AddItem objRecordset.Fields(0)objRecordset.MoveNextLoopCombo1.ListIndex = 0Adodc1.Visible = FalseAdodc1.RecordSource = sel

47、ect sno學(xué)生學(xué)號 ,sname 學(xué)生姓名 ,spsw 學(xué)生密碼 ,sdept 學(xué)生專業(yè) ,sbalance 卡內(nèi)余額 from studentAdodc1.RefreshSet DataGrid1.DataSource = Adodc1.RecordsetDataGrid1.RefreshEnd Sub* 增加學(xué)生 *按“返回”按鈕可返回到管理員界面。代碼如下:Private Sub Command1_Click() 聲明 SQL字符串Dim strSQL As StringIf Text1.Text = Or Text2.Text = Or Text3.Text = Or Text4.

48、Text= Or Text5.Text = ThenMsgBox 學(xué)生信息中有空值! , vbOKOnly + vbExclamation, ElsestrSQL = insert into student values( & _Trim(Text1.Text) & , & _Trim(Text2.Text) & , & _Trim(Text3.Text) & , & _Trim(Text4.Text) & , & _Trim(Text5.Text) & ) Set objRecordset = ExecuteSQL(strSQL)MsgBox 增加學(xué)生信息成功 , vbOKOnly + vb

49、Exclamation, End IfEnd SubPrivate Sub Command2_Click()管理員界面 .ShowUnload MeEnd Sub* 修改學(xué)生 *學(xué)生學(xué)號處利用 Combo 按鈕,下拉選擇學(xué)生學(xué)號即可。點擊“查看原信息”按 鈕即可查看學(xué)生原來信息,方便管理員修改。點擊“修改”按鈕進行修改。代碼如下:Private Sub Command2_Click()Dim strSQL As StringDim objRecordset As ADODB.RecordsetstrSQL = update student set sname= & Trim(Text1.Tex

50、t) & wheresno= & Trim(Combo1.Text) & Set objRecordset = ExecuteSQL(strSQL)strSQL = update student set spsw= & Trim(Text2.Text) & wheresno= & Trim(Combo1.Text) & Set objRecordset = ExecuteSQL(strSQL)strSQL = update student set sdept= & Trim(Text3.Text) & wheresno= & Trim(Combo1.Text) & Set objRecords

51、et = ExecuteSQL(strSQL)strSQL = update student set sbalance= & Trim(Text4.Text) & where sno= & Trim(Combo1.Text) & Set objRecordset = ExecuteSQL(strSQL)MsgBox 修改學(xué)生信息成功 !, vbOKOnly + vbExclamation, End SubPrivate Sub Command3_Click()管理員界面 .ShowUnload MeEnd SubPrivate Sub Form_Load()Dim objRecordset A

52、s ADODB.Recordset 綁定學(xué)生strSQL = select DISTINCT sno from studentSet objRecordset = ExecuteSQL(strSQL)objRecordset.MoveFirstCombo1.ClearDo While Not objRecordset.EOFCombo1.AddItem objRecordset.Fields(0) objRecordset.MoveNextLoopCombo1.ListIndex = 0End Sub* 刪除學(xué)生 * 點擊“確認(rèn)刪除”按鈕進行刪除。代碼如下:Private Sub Comman

53、d1_Click()Dim strSQL As StringDim objRecordset As ADODB.RecordsetstrSQL = delete from operation where sno= & Trim(Combo1.Text) &strSQL = delete from student where sno= & Trim(Combo1.Text) & Set objRecordset = ExecuteSQL(strSQL)MsgBox 刪除學(xué)生信息成功 !, vbOKOnly + vbExclamation, End SubPrivate Sub Command2_

54、Click()管理員界面 .ShowUnload MeEnd SubPrivate Sub Form_Load()Dim objRecordset As ADODB.Recordset 綁定學(xué)生strSQL = select DISTINCT sno from studentSet objRecordset = ExecuteSQL(strSQL)objRecordset.MoveFirstCombo1.ClearDo While Not objRecordset.EOFCombo1.AddItem objRecordset.Fields(0) objRecordset.MoveNextLoo

55、pCombo1.ListIndex = 0End Sub3)管理食品信息(代碼與說明部分和學(xué)生信息管理相似,不再贅述) * 查詢食品 * 增加食品 * 修改食品 * 刪除食品 *4)管理管理員信息(代碼與說明部分和學(xué)生信息管理相似,不再贅述) * 查找管理員 * 增加管理員 * 修改管理員 * 刪除管理員 *5)管理員工信息(代碼與說明部分和學(xué)生信息管理相似,不再贅述) * 查找員工 * 增加員工 * 修改員工 * 刪除員工 * 6)管理餐廳信息(代碼與說明部分和學(xué)生信息管理相似,不再贅述)* 查找餐廳 * 編輯餐廳 *因為前面我的增刪修改都不在同一個窗體, 而餐廳的信息比較簡單, 所以我做了

56、 另外一種不同于之前的簡單編輯窗體。按“初始化”按鈕后可以使 text 的值為空,免去增加后又想刪除時還要手動按 delete 鍵。代碼如下:Private Sub Command1_Click()Text1.Text = Text2.Text = End SubPrivate Sub Command2_Click() 聲明 SQL字符串Dim strSQL As StringDim objRecordset As ADODB.RecordsetIf Text1.Text = Or Text2.Text = ThenMsgBox 餐廳信息中有空值! , vbOKOnly + vbExclama

57、tion, ElsestrSQL = insert into restaurant values( & _Trim(Text1.Text) & , & _Trim(Text2.Text) & )Set objRecordset = ExecuteSQL(strSQL)MsgBox 增加餐廳信息成功 , vbOKOnly + vbExclamation, End IfEnd SubPrivate Sub Command3_Click()Dim strSQL As StringDim objRecordset As ADODB.RecordsetstrSQL = update restaurant

58、 set rname= & Trim(Text2.Text) & where rno= & Trim(Text1.Text) & Set objRecordset = ExecuteSQL(strSQL)MsgBox 修改餐廳信息成功 !, vbOKOnly + vbExclamation, End SubPrivate Sub Command4_Click()Dim strSQL As StringDim objRecordset As ADODB.RecordsetstrSQL = delete from operation where rno= & Trim(Text1.Text) &s

59、trSQL = delete from restaurant where rno= & Trim(Text1.Text) &Set objRecordset = ExecuteSQL(strSQL)MsgBox 刪除餐廳信息成功 !, vbOKOnly + vbExclamation, End SubPrivate Sub Command5_Click() 管理員界面 .ShowUnload MeEnd Sub7)選擇其他功能* 備份 *點擊瀏覽按鈕會彈出電腦磁盤圖框, 進行選擇備份到的磁盤。 點擊備份按鈕, 進 行備份。代碼如下:Private Sub Command1_Click()Com

60、monDialog1.Filter = C:CommonDialog1.ShowOpenIf Len(CommonDialog1.FileName) 0 ThenOpen CommonDialog1.FileName For Append As #1Text1.Text = CommonDialog1.FileNameClose #1End IfEnd SubPrivate Sub Command2_Click()Dim cn As New ADODB.ConnectionDim strSQL As StringstrSQL = backup database學(xué)校餐廳 to disk= & T

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論