第一篇:數據庫課程設計學籍管理系統
學籍管理系統
本次數據庫課程設計是以Access數據庫作為后臺以VB作為前臺的應用型設計課程。
綜合我們所學的兩大課程創建應用型的數據庫系統,大大的提高了我們學生的動手能力,作到了理論與實踐相結合。一.題目說明:
學生學藉管理系統是典型的學藉管理系統(MIS),其開發主要包括后臺數據庫的建立和維護以及前端應用程序的開發兩個方面。對于前者要求建立起數據一致性和完整性強、數據安全性好的庫。而對于后者則要求應用程序功能完備,易使用等特點。
本系統主要完成對學生情況和學生成績的管理,包括數據庫中表的添加、刪除等。系統還可以完成對各類信息的瀏覽、添加、刪除、等功能。
系統的核心是數據庫中各個表聯系,每一個表的修改都將聯動的影響其它的表,當完成對數據的操作時系統會自動地完成數據庫的修改。查詢功能也是系統的核心之一,在系統中即有單條件查詢和多條件查詢,也有精確查詢和模糊查詢,系統不僅有靜態的條件查詢,也有動態生成的條件查詢,其目的都是為了方便用戶使用。系統有完整的用戶添加、刪除和密碼修改功能,并具備報表打印功能。關鍵字:窗體、數據庫、vb6.0、access2000。
學生學籍管理系統被廣泛應用于各類學校的學生學籍管理工作中,要求其具有實用性強、使用方便、效率高和安全可靠等特點。本管理系統正是圍繞以上幾個方面進行開發的,在開發過程中充分考慮到本系統的應用特點,并進行了大量的檢驗,證明其的確達到了設計的要求,是一個已具備了實際應用能力的軟件。本文主要論述學生學籍管理系統的開發過程,在涉及到VB及Access中的部分知識以舉例的方式進行講解 二.總體設計:
我的總體設計如下:
(1).利用Access建立數據庫,并在該數據庫下創建五張表格,分別是學生表、課程表、選課表、學生選課表以及口令表。
(2)利用VB來建立界面并對它進行設計和修改,大體框架如下: FORM1 用于首界面
FORM2 用于登陸此系統的登錄界面
FORM3 是主窗體,在這上面建立相應的菜單 如:文件——退出、添加用戶(FORM4)數據信息——管理使用(FORM5)
基本操作——學生操作、選課操作、課程操作(FORM6、FORM7、FORM8)(3)對以上的界面進行設計以及對所要操作的部件進行編程。
三.常用控件的說明: 所有的Windows應用程序窗口或對話框,都是由諸如文本框、列表框、命令按扭、滾動條、命令菜單等組成的。VB通過控件工具箱提供了它們與用戶進行交
互的可視化部件,即控件。程序開發人員只需要通過簡單的操作,在窗體上安排所需要的控件,完成應用程序的用戶界面設計即可。序號
名稱
功能 Label標簽
用于說明 Textbox文本框
用于文本輸入或顯示 3 Frame框架
用于組合控件 Commandbutton命令按扭
單擊執行命令 5 Timer計時期
用于定時 Data數據控件
用于訪問數據庫
三.詳細說明:
1.數據庫的建立與設計:
數據庫是有結構的數據集合,它與一般的數據文件不同,(其中的數據是無結構的)是一串文字或數字流。數據庫中的數據可以是文字、圖象、聲音等。
Access數據庫由六種對象組成,它們是表、查詢、窗體、報表、宏和模塊。
(1).表(Table)——表是數據庫的基本對象,是創建其他5種對象的基礎。表由記錄組成,記錄由字段組成,表用來存貯數據庫的數據,故又稱數據表。
(2).查詢(Query)——查詢可以按索引快速查找到需要的記錄,按要求篩選記錄并能連接若干個表的字段組成新表。
(3).窗體(Form)——窗體提供了一種方便的瀏覽、輸入及更改數據的窗口。還可以創建子窗體顯示相關聯的表的內容。窗體也稱表單。
(4).報表(Report)——報表的功能是將數據庫中的數據分類匯總,然后打印出來,以便分析。
(5).宏(Macro)——宏相當于DOS中的批處理,用來自動執行一系列操作。Access列出了一些常用的操作供用戶選擇,使用起來十分方便。
(6).模塊(Module)——模塊的功能與宏類似,但它定義的操作比宏更精細和復雜,用戶可以根據自己的需要編寫程序。模塊使用Visual Basic編程。
我們利用Access來建立數據庫,我們的庫中有五張表格,其分別是學生表、課程表、選課表、學生選課表以及口令表。
我們就以學生表為例做一個簡單的說明:
我們使用設計器來創建表的,我的這張表有七個字段,每個字段的名稱分別是:學號、班級、姓名、性別、出生年月、民族、地址、電話號碼,每個字段有七個數據。我并對其字段的屬性進行了重新的修改,以做到不浪費其空間。
我具體的實施步驟是:啟動數據庫管理器——建立數據庫——建立數據表結構——輸入記錄。
最終產生了這樣的一個數據庫:(如下)
2.VB界面的建立設計以及程序的編寫說明:
VB 是在Windows操作平臺下,用于開發和創建具有圖形用戶界面的應用程序的強有力工具之一。VB為開發Windows應用程序不僅提供了全新的相對簡單的方式,而且也引進了新的程序設計方法——面向對象的設計方法(00P)。從傳統的面向過程的程序設計,轉移到更先進的面向對象的程序設計,無論是對老的程序員,還是初學者,都是一個挑戰。而學習VB,則是掌握這一新的程序設計方法的一條捷徑。
(1).界面的設計和程序的編寫:
設計一個像這樣的友好的界面,我考慮到它的顏色的配制,界面的大小,界面所載的內容的多少等,在后臺我用定時器給其限定時間讓它在一定的時間后自動跳到下一個界面。
這個界面是系統的主界面,用戶可以在通過系統登錄后直接到我們的主界面上來進行相應的操作,我的主界面采用的是一張蘇州市職業大學的圖片,在這個圖片的上面有三個菜單,分別是文件、數據信息和基本操作。在各自的下面還有與之相對應的子菜單,文件下有退出和添加用戶,數據信息下有管理使用,基本操作下有學生操作、選課操作和課程操作。我利用FORMn.SHOW命令連接到相對應的界面上。
我們的界面有好幾張我就對其中的一張進行詳細的分析:
這是一張學生選課瀏覽表的界面,這也是對應我的主界面菜單中的數據信息下的管理使用子菜單的一張界面,在這張界面中包含了8個LABEL標簽控件、7個 TEXTBOX文本框控件、6個COMMANDBUTTON命令按扭控件、1個FRAME框架控件和1個DATA部件。我利用DATA部件將界面與 ACCESS數據庫相連接,具體的操作是利用DATABASENAME與數據庫連接,在RECORDSOURCE中找到與之對應的表,再用 DATASOURCE、DATAFIELD與個文本框內容對應,從而實現界面與數據庫的連接。下面是程序的編寫過程:
顯示前一個數據: COMMAND1:
Private Sub Command1_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “沒有記錄” 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 顯示第一個數據: COMMAND2:
Private Sub Command2_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “沒有記錄” Else Data1.Recordset.MoveFirst End If End Sub 顯示最后一個數據: COMMAND4:
Private Sub Command4_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “沒有記錄” Else Data1.Recordset.MoveLast End If End Sub 顯示后一個數據: COMMAND3:
Private Sub Command3_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “沒有記錄” 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 添加一個數據: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 刪除一個記錄: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 “沒有記錄”, 32, “注意” Exit Sub Else str1 = MsgBox(“刪除該記錄嗎?”, 17, “刪除”)If str1 = 1 Then Data1.Recordset.Delete Data1.Refresh If Data1.Recordset.RecordCount = 0 Then MsgBox “記錄數為零” Data1.Recordset.AddNew End If End If End If End If End Sub
四、在此過程中遇到的問題以及解決方法: 在開始編寫程序的時候總是有一些出錯,在查找有關書籍和向老師詢問后得出了結果。在將界面與數據庫相連接的時候,不知道用哪種方法,在老師的幫助下我學會了兩種方法:1.DATA、2.ADODC。我最終使用DATA這種方法。
五、心得體會:
在這次的設計過程中,我學到的不僅是知識,我還認識到許多事情。這次設計使我的編程水平提高了一大步,使我充分的認識到合作的可貴。由于這次設計涉及到數據庫,我的學到了不少編程工具與數據庫連接的知識,對數據庫的操作有了進一步的了解。這次設計對我的綜合能力是一次很好的鍛煉,但是我必須承認自己的能力和知識還很膚淺。所以今后我的學習道路還是很漫長的。最后,在這里我要衷心的感謝我們的指導老師牛麗、程淵,謝謝她的悉心指導和熱心幫助。由于我水平有限,加之時間短暫,故學籍管理系統中還有許多不足之處,請老師批評指正,我會在以后的制作中不斷改進,不斷完善。
第二篇:數據庫課程設計 圖書管理系統(精選)
課 程 設 計
軟件工程與數據庫 課程設計 任務書
學院名稱:
數學與計算機學院
課程代碼:_6014419_ 專
業:
年
級:
一、設計題目
圖書管理系統
二、主要內容
一個簡單的圖書管理系統包括圖書館內書籍的信息、學校在校學生的信息以及學生的借閱信息。此系統功能分為面向學生和面向管理員兩部分,其中學生可以進行借閱、續借、歸還和查詢書籍等操作,管理員可以完成書籍和學生的增加,刪除和修改以及對學生,借閱、續借、歸還的確認。如:
圖書室有各種圖書一萬多冊。
每種圖書都有書名、書號(ISBN)、一名或多名作者(譯者)、出版社、定價和內容簡介。
借書證記錄有借閱者的姓名、所在單位、職業等。
憑借書證借書,每次最多能借8本書。借書期限最長為30天。實現新進圖書的數據錄入。
實現對所有購進圖書的分類查詢和分類統計。能夠按書名、作者等分類查詢現有圖書的數量。
記錄借閱者的個人資料和所借圖書的書名、書號數據等。
三、具體要求
1、完成系統的需求分析
通過需求分析確定系統需要處理的數據的需求,要求使用數據庫的輔助設計工具(PowerDesigner等),建立業務處理模型。
課 程 設 計
2、完成系統概念結構設計 概念數據模型(CDM)用于完成數據庫的設計,與人和數據庫平臺和具體數據存儲結構和工具無關。首先選擇局部應用畫出分E-R圖,最終形成系統的E-R圖
3、完成系統邏輯結構設計
按照E-R圖轉換成關系模式的規則,將CDM轉換成邏輯數據模型,并為每個關系模式設計主鍵、外鍵。分析關系模式中的依賴關系,對關系模式規范化處理
4、完成系統物理結構設計
為每個關系分配存儲長度,建立數據庫的索引和視圖,定義關系中的主碼和外碼,寫出關系創建和查詢的SQL語句。
5、編碼 選擇你自己熟悉的開發工具完成一個DBS系統的編碼工作。源代碼格式規范,注釋不少于三分之一
四、主要技術路線提示
1.仔細閱讀設計指導書內容,認真掌握任務要求?2.需求分析? 3.概念結構設計? 4.邏輯結構設計?5.物理結構設計?6.編碼.2.后臺推薦采用SQL server或Oracle;前臺開發環境不限制。可采用ADO,ODBC,OLE DB或JDBC連接數據庫,并調用系統存儲過程、自定義存儲過程、函數等。
五、進度安排
第1周: 數據庫系統概念模型、數據模型設計,創建數據庫以及相關對象; 第2周: 前臺程序開發,撰寫報告,接受檢查。
六、完成后應上交的材料
1. 源程序一份(包含數據庫)
2. 課程設計報告一份
七、推薦參考資料
1.王珊.數據庫系統概論(第四版).高等教育出版社 2.閃四清.數據庫系統原理與應用教程.清華大學出版社
課 程 設 計
3.周龍驤.數據庫管理系統實現技術.中國地質大學出版社 4.張海藩.軟件工程概論.清華大學出版社 5.陳明 編著.實用軟件工程基礎.清華大學出版社
6.成先海.數據庫基礎與應用-SQL SERVER2000.機械工業出版社出版
指導教師 簽名日期 年 月 日 系 主 任 審核日期 年 月 日
第三篇:酒店管理系統 (數據庫課程設計)
數據庫 酒店管理系統 課程設計(基于 SQL server 2000)
實現過程
1.1 通過查詢分析器實現建立數據庫、數據表
------------------------------創建數據庫和數據表---(1)創建酒店管理系統數據庫
CREATE DATABASE 酒店管理系統(2)創建客房信息表
CREATE TABLE 客房
(客房編號 CHAR(8)PRIMARY KEY,客房類型 CHAR(8)NOT NULL,價格 SMALLMONEY NOT NULL,床位數 INT NOT NULL,使用狀態 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)創建客戶信息表
CREATE TABLE 客戶
(客戶編號 CHAR(8)PRIMARY KEY, 客戶名稱 CHAR(10)NOT NULL,身份證號 CHAR(18)NOT NULL,聯系地址 CHAR(25),聯系電話 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)創建入住登記表
CREATE TABLE 入住登記
(客房編號 CHAR(8)FOREIGN KEY REFERENCES 客房(客房編號),客戶編號 CHAR(8)FOREIGN KEY REFERENCES 客戶(客戶編號),預定日期 DATETIME,預定數量 INT, PRIMARY KEY(客房編號,客戶編號))
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)--------創建查詢視圖---------1.2系統功能相應的查詢視圖:
(1)客戶信息查詢視圖
CREATE VIEW 客戶信息查詢
AS SELECT * FROM 客戶
(2)客房信息查詢
CREATE VIEW 客房信息查詢
AS SELECT
* FROM 客房
(3)入住信息查詢
CREATE VIEW 入住登記信息查詢 AS SELECT
* FROM 入住登記
(4)入住信息查詢
CREATE VIEW 入住信息查詢
AS SELECT入住登記.客房編號,客戶名稱,入住登記.客戶編號,客房.客房類型,價格,使用狀態
FROM 客房,客戶,入住登記
WHERE 客房.客房編號=入住登記.客房編號 AND 入住登記.客戶編號=客戶.客戶編號
---------------建立索引-----------------------1.3建立索引及數據入庫
1.建立客房編號,價格,客戶編號,客戶名稱的索引 創建客房表索引:
CREATE UNIQUE INDEX UKF ON 客房(客房編號,價格)
創建客戶表索引:
CREATE UNIQUE INDEX UKH ON 客戶(客戶編號,客戶名稱)
創建入住表索引:
CREATE UNIQUE INDEX URZ ON 入住登記(客戶編號,客房編號)2.數據入庫
方法一 酒店管理系統包括客房信息表,客戶信息表,入住登記信息表。采用Excel中錄入數據,然后使用SQL Server 2000數據導入、導出功能直接將數據導入到相應的基本表。
方法二 在查詢分析器中插入相關數據,用SQL語句插入。
----------創建存儲過程----------------------1.4建立存儲過程
1.4.1客房信息存儲過程
插入客房信息存儲過程:
CREATE PROCEDURE 插入客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS INSERT INTO 客房 VALUES(@KFB,@KFL,@JG,@CWS,@SYZT)
修改客房信息存儲過程:
CREATE PROCEDURE 修改客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS UPDATE 客房
SET 客房類型=@KFL,價格=@JG,床位數=@CWS,使用狀態=@SYZT WHERE 客房編號=@KFB 刪除客房信息存儲過程:
CREATE PROCEDURE 刪除客房信息(@KFB CHAR(8))AS DELETE FROM 客房 WHERE 客房編號=@KFB
1.4.2客戶信息存儲過程
插入客戶信息
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,身份證號=@SFZ,聯系地址=@LXDZ,聯系電話=@LXDH WHERE 客戶編號=@KHB
刪除客戶信息
CREATE PROCEDURE 刪除客戶信息(@KHB CHAR(8))AS DELETE FROM 客戶
WHERE 客戶編號=@KHB
EXEC 刪除客戶信息 @KHB='10009'
3.4.3創建入住信息存儲過程 插入入住信息
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 客房編號=@KFB,預定日期=@YDRQ ,預定數量=@YDSL WHERE 客戶編號=@KHB
刪除入住信息
CREATE PROCEDURE 刪除入住信息(@KHB CHAR(8))AS DELETE
FROM 入住登記
WHERE 客戶編號=@KHB
1.5查詢存儲過程的創建
客房編號查詢
CREATE PROCEDURE 客房編號查詢(@KFB CHAR(8), @KFL CHAR(8)OUTPUT, @JG SMALLMONEY OUTPUT, @CWS INT OUTPUT, @SYZT CHAR(8)OUTPUT)AS SELECT @KFL=客房類型,@JG=價格,@CWS=床位數,@SYZT=使用狀態 FROM 客房
WHERE 客房編號=@KFB
客戶編號查詢
CREATE PROCEDURE 客戶編號查詢(@KHB CHAR(8), @KFM CHAR(10)OUTPUT , @SFZ CHAR(18)OUTPUT, @LXDZ CHAR(25)OUTPUT, @LXDH CHAR(10)OUTPUT)AS SELECT @KFM=客戶名稱,@SFZ=身份證號,@LXDZ=聯系地址,@LXDH=聯系電話 FROM 客戶
WHERE 客戶編號=@KHB
入住客戶編號查詢
CREATE PROCEDURE 入住客戶編號查詢(@KFB CHAR(8)OUTPUT, @KHB CHAR(8), @YDRQ DATETIME OUTPUT, @YDSL INT OUTPUT)AS SELECT @KFB=客房編號,@YDRQ=預定日期,@YDSL=預定數量 FROM 入住登記
WHERE 客戶編號=@KHB
--------建立觸發器--------------1.6、建立觸發器保證數據的一致性
客房使用狀態的控制
CREATE TRIGGER 控制觸發器
ON 入住登記 FOR INSERT AS
UPDATE 客房
SET 使用狀態='使用中' WHERE 客房編號=ANY(SELECT 客房編號 FROM INSERTED)
控制入住信息刪除的觸發器
CREATE TRIGGER 入住刪除觸發器
ON 入住登記 FOR DELETE AS BEGIN DELETE FROM 客戶 WHERE 客戶編號=ANY(SELECT 客戶編號 FROM DELETED)
UPDATE 客房
SET 使用狀態='未使用' WHERE 客房編號=ANY(SELECT 客房編號 FROM DELETED)END 客戶信息刪除的控制
CREATE TRIGGER 客戶刪除觸發器
ON 客戶
FOR DELETE AS BEGIN DELETE FROM 入住
WHERE 客戶編號=ANY(SELECT 客戶編號 FROM DELETED)
UPDATE 客房
SET 使用狀態='未使用' WHERE 客房編號=ANY(SELECT 客房編號 FROM DELETED)END
客房刪除觸發器
CREATE TRIGGER 客房刪除觸發器
ON 客房
FOR DELETE AS
DELETE FROM 入住
WHERE 客戶編號=ANY(SELECT 客戶編號 FROM DELETED)
酒店管理系統數據庫腳本
------------------------數據庫初始化------set nocount on set dateformat mdy go
use master
go if exists(select * from sysdatabases where name='酒店管理系統')
/*刪除在master中已存*/ /*在的名為酒店管理系統的數據庫*/ drop database 酒店管理系統 go--------------------------酒店管理系統的建立-create database 酒店管理系統 on primary /*設定系統主文件*/(name='酒店管理系統_data', filename='d:酒店管理系統.mdf', size=10, maxsize=50, filegrowth=5)
log on
/*創建事務日志文件*/(name='酒店管理系統_log', filename='d:酒店管理系統.ldf', size=5, maxsize=25, filegrowth=5)go
---------(注:刪除查詢分析器中的以上代碼后,運行以下代碼)-----------------建立信息表----------use 酒店管理系統
if exists(select * from sysobjects where name='客戶')drop table 客戶 go print 'drop table 客戶' print 'create table 客戶' go /*客戶信息表*/ CREATE TABLE 客戶
/*創建客戶信息表*/(客戶編號 CHAR(8)PRIMARY KEY, 客戶名稱 CHAR(10)NOT NULL, 身份證號 CHAR(18)NOT NULL, 聯系地址 CHAR(25), 聯系電話 CHAR(10))go--------------------------插入客戶數據-----------------------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 客房
/*創建客房信息表*/(客房編號 CHAR(8)PRIMARY KEY, 客房類型 CHAR(8)NOT NULL, 價格 SMALLMONEY NOT NULL, 床位數 INT NOT NULL, 使用狀態 CHAR(8)NOT NULL)go-----------------------插入客房數據----------------------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 入住登記
/*創建入住登記信息表*/(客房編號 CHAR(8)FOREIGN KEY REFERENCES 客房(客房編號),客戶編號 CHAR(8)FOREIGN KEY REFERENCES 客戶(客戶編號),預定日期 DATETIME,預定數量 INT, PRIMARY KEY(客房編號,客戶編號))go
---------------插入入住登記信息數據----------------------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 客房(客房編號,價格)go CREATE UNIQUE INDEX UKH ON 客戶(客戶編號,客戶名稱)go CREATE UNIQUE INDEX URZ ON 入住登記(客戶編號,客房編號)go
----建立觸發器-------------------------建立控制觸發器(保證在客房使用狀態的一致性)------if exists(select * from sysobjects where name='控制觸發器')drop trigger 控制觸發器 GO CREATE TRIGGER 控制觸發器
ON 入住登記 FOR INSERT AS
UPDATE 客房
SET 使用狀態='使用中' WHERE 客房編號=ANY(SELECT 客房編號 FROM INSERTED)go
--------建立入住刪除觸發器(保證信息刪除的一致性)----------if exists(select * from sysobjects where name='入住刪除觸發器')drop trigger 入住刪除觸發器 GO CREATE TRIGGER 入住刪除觸發器
ON 入住登記 FOR DELETE AS BEGIN DELETE FROM 客戶
WHERE 客戶編號=ANY(SELECT 客戶編號 FROM DELETED)
UPDATE 客房
SET 使用狀態='未使用' WHERE 客房編號=ANY(SELECT 客房編號 FROM DELETED)END go-------建立客房刪除觸發器(保證刪除的一致性)---------if exists(select * from sysobjects where name='客房刪除觸發器')drop trigger 客房刪除觸發器 GO CREATE TRIGGER 客房刪除觸發器
ON 客房
FOR DELETE AS
DELETE FROM 入住
WHERE 客戶編號=ANY(SELECT 客戶編號 FROM DELETED)go---------創建查詢視圖----------------
CREATE VIEW 入住信息查詢
AS SELECT 入住登記.客房編號,客戶名稱,入住登記.客戶編號,客房.客房類型,價格,使用狀態
FROM 客房,客戶,入住登記
WHERE 客房.客房編號=入住登記.客房編號 AND 入住登記.客戶編號=客戶.客戶編號 go
---------建立存儲過程------------------------------客房信息插入存儲過程--------------------------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
--------------------客房信息修改的存儲過程---------------------CREATE PROCEDURE 修改客房信息(@KFB CHAR(8), @KFL CHAR(8), @JG SMALLMONEY, @CWS INT, @SYZT CHAR(8))AS UPDATE 客房
SET 客房類型=@KFL,價格=@JG,床位數=@CWS,使用狀態=@SYZT WHERE 客房編號=@KFB go--------------------客房信息刪除的存儲過程---------------------CREATE PROCEDURE 刪除客房信息(@KFB CHAR(8))AS DELETE FROM 客房 WHERE 客房編號=@KFB GO--------------------客戶信息插入的存儲過程---------------------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--------------------客戶信息修改的存儲過程---------------------CREATE PROCEDURE 修改客戶信息(@KHB CHAR(8), @KFM CHAR(10), @SFZ CHAR(18), @LXDZ CHAR(25), @LXDH CHAR(10))AS UPDATE 客戶
SET 客戶名稱=@KFM,身份證號=@SFZ,聯系地址=@LXDZ,聯系電話=@LXDH WHERE 客戶編號=@KHB GO--------------------客戶信息刪除的存儲過程---------------------CREATE PROCEDURE 刪除客戶信息(@KHB CHAR(8))AS DELETE FROM 客戶
WHERE 客戶編號=@KHB go--------------------入住信息插入的存儲過程---------------------CREATE PROCEDURE 插入入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS INSERT INTO 入住登記 VALUES(@KFB,@KHB,@YDRQ,@YDSL)go--------------------入住信息修改的存儲過程---------------------CREATE PROCEDURE 修改入住信息(@KFB CHAR(8), @KHB CHAR(8), @YDRQ DATETIME, @YDSL INT)AS UPDATE 入住登記
SET 客房編號=@KFB,預定日期=@YDRQ ,預定數量=@YDSL WHERE 客戶編號=@KHB go--------------------入住信息刪除的存儲過程---------------------CREATE PROCEDURE 刪除入住信息(@KHB CHAR(8))AS DELETE
FROM 入住登記
WHERE 客戶編號=@KHB go--------------------客房編號查詢的存儲過程-----------------------if exists(select * from sysobjects where name='客房編號查詢')drop procedure 客房編號查詢 GO CREATE PROCEDURE 客房編號查詢(@KFB CHAR(8))AS SELECT 客房類型,價格,床位數,使用狀態 FROM 客房
WHERE 客房編號=@KFB go--------------------客戶編號查詢的存儲過程-----------------------if exists(select * from sysobjects where name='客戶編號查詢')drop procedure 客戶編號查詢 GO CREATE PROCEDURE 客戶編號查詢(@KHB CHAR(8))AS SELECT 客戶編號,客戶名稱,身份證號,聯系地址,聯系電話 FROM 客戶
WHERE 客戶編號=@KHB go--------------------入住信息查詢的存儲過程-----------------------if exists(select * from sysobjects where name='入住客戶編號查詢')drop procedure 入住客戶編號查詢 GO CREATE PROCEDURE 入住客戶編號查詢(@KHB CHAR(8))AS SELECT 客戶編號,客房編號,預定日期,預定數量 FROM 入住登記
WHERE 客戶編號=@KHB
第四篇:數據庫課程設計 計算機教務管理系統
中北大學
數據庫課程設計
說 明 書
學 院、系: 專
業: 學 生 姓 名: 設 計 題 目:
李翰超
軟件學院 軟件工程
學 號: 1221010619
計算機等級考試教務管理系統
起 迄 日 期: 2014年5月26日-2014年6月20日 指 導 教 師:
2012 年 6月 21 日.引言
隨著全國計算機等級考試的全面推廣,我市學生每年參加兩次全國計算機等級考試,考試管理工作量相當大。但是靠人工的方式管理等級考試相關的信息,這種管理方式存在著許多缺點,如:工作效率低、統計容易出錯,另外時間一長,將產生大量的文件和數據,這對于查找、更新和維護都帶來了不少的困難。所以開發一個計算機等級考試成績管理系統是非常必要的。2.需求分析
計算機等級考試分為若干種類:如:計算機一級VB、C語言;計算機二級VB、C語言、C++;計算機三級數據庫、網絡技術;計算機四級數據庫工程師、網絡工程師。對于每個種類,考試分為筆試和機試.計算機等級考試工作過程如下:每個考生在報名時,登記姓名、性別、報考種類、學校、身份證號、個人照片等。考試辦公室根據考生報考的種類,以及所在的考區來安排考場,編排準考證號碼,打印準考證。考生參加考試后,登記每個考生每項的成績,并計算出每個考生筆試和機試的成績是否都>=60分。對機試和筆試都>=60分的考生,按所在考區打印通過證書,同一考區按準考證號碼順序打印出通過證書,分發給考生;計算機四級只要筆試成績>=60則通過;打印成績表供考試辦公室留存、備查。
開發計算機等級考試成績管理系統,有計算機輔助實現上述過程,代替人工操作,節省人力、時間,提高工作效率。
2.1 處理對象(1)用戶帳號密碼管理 對考點代碼,考點名稱進行管理 用戶與密碼進行管理(2)報名管理功能模塊
報各庫錄入(姓名不能不空,之間不能有空格)增加、刪除、修改、瀏覽(3)準考證管理模塊
準考證生成規則:xxx+yy+zz+kk 其中XXX為考點代碼;YY為語言代碼,XX為考場號,KK為座位號(4)考務管理功能模塊
考生信息查詢、瀏覽 成績管理模塊
成績數據錄入、接收
成績合成(總成績=筆試成績*0.6+上機成績*0.4),按大于或等于60合格
2.2數據字典:
考生信息表(考生主鍵(主鍵),姓名,性別,出生年份,民族,身份證號,聯系地址,聯系電話,備注)
準考證表(準考證號主鍵,準考證號)
成績表(成績表主鍵,筆試成績,上機成績,總成績)
級別語言代碼表(級別語言代碼主鍵,級別語言代碼,級別,語言)考生考點信息表(考生考點主鍵,考點代碼,考點名稱,)用戶帳號管理(用戶帳號主鍵,用戶名,密碼)
信息操作表(考生主鍵(主鍵),準考證號主鍵, 級別語言代碼主鍵,考生考點主鍵,用戶帳號主鍵)
3.E-R圖
4.關系模型
考生信息表(考生主鍵(主鍵),姓名,性別,出生年份,民族,身份證號,聯系地址,聯系電話,備注)
準考證表(準考證號主鍵,準考證號)
成績表(成績表主鍵,筆試成績,上機成績,總成績)
級別語言代碼表(級別語言代碼主鍵,級別語言代碼,級別,語言)
考生考點信息表(考生考點主鍵,考點代碼,考點名稱,)用戶帳號管理(用戶帳號主鍵,用戶名,密碼)
信息操作表(考生主鍵(主鍵),準考證號主鍵, 級別語言代碼主鍵,考生考點主鍵,用戶帳號主鍵)
其模式定義:
見附件:模式定義。
5.物理設計
本數據庫共有5張表組成,其中t_manage表為管理表,而其他4張表:t_grade,t_information,t_level,t_regist都為基本表,當要查詢所需要的信息時,就用連接查詢將管理表和基本表連接在一起,從而看到想看到信息。
6.數據庫實施
create table t_grade(grade number primary key, write number, shangji number, totalgrade number);alter table t_grade add constraint write check(write<=40 and write>=0);alter table t_grade add constraint shangji check(shangji<=60 and
shangji>=0);alter table t_grade add constraint totalgrade check
(totalgrade=write+shangji);
insert into t_grade values(001,40,50,90);insert into t_grade values(002,30,50,80);insert into t_grade values(003,20,60,80);insert into t_grade values(004,25,50,75);insert into t_grade values(005,30,40,70);create table t_information(information number, sname varchar2(20)not null, gender varchar2(2)check(gender='n' or gender='v'), birth number, nation varchar2(20)not null, idnumber char(18), address varchar2(20)not null, phone number not null, note varchar2(20),primary key(information));alter table t_information add constraint birth check(birth<=20020101 and
birth>=19200101);
insert into t_information values
(006,'ling','n',19950302,'han','***014','shanxi','0101111',null);insert into t_information values
(007,'wang','n',19950607,'han','***014','shanxi','0101241',null);insert into t_information values
(008,'john','n',19950504,'german','***014','german','010234511' ,'forgien');insert into t_information values
(009,'liu','v',19930407,'han','***014','shanxi','010123511',nul l);insert into t_information values
(010,'yuan','n',19910408,'han','***014','shanxi','0101211',null);create table t_level(leve number primary key, codes number not null, language varchar2(15)not null);insert into t_level values(015,01,'chinese');insert into t_level values(016,01,'chinese');insert into t_level values(017,02,'chinese');insert into t_level values(018,01,'english');insert into t_level values(019,01,'chinese');
create table t_regist(regist number, place varchar2(14), registnumber varchar2(9), primary key(regist));
insert into t_regist values(020,10101,'14010101');insert into t_regist values(021,10201,'14010102');insert into t_regist values(022,11101,'14010103');insert into t_regist values(023,12101,'14010104');insert into t_regist values(024,15103,'14010105');create table t_user(use number, username varchar2(14)not null, code varchar2(20)not null, primary key(use));
insert into t_user values(025,'ling','asasn');insert into t_user values(026,'wang','asasn');insert into t_user values(027,'john','sdrhy');insert into t_user values(028,'liu','eryery');insert into t_user values(029,'yuan','hjlmyu');
create table t_manage(information number, grade number, leve number, use number, regist number, foreign key(grade)references t_grade(grade), foreign key(information)references t_information(information), foreign key(leve)references t_level(leve), foreign key(regist)references t_regist(regist), foreign key(use)references t_user(use));
insert into t_manage values(006,001,015,025,020);5
insert into t_manage values(007,002,016,026,021);insert into t_manage values(008,003,017,027,022);insert into t_manage values(009,004,018,028,023);insert into t_manage values(010,005,019,029,024);
7.系統調試
通過sql語句對其進行調試,以測試其正確性,如圖1,2,3,4,5
圖 1 6
圖 2
圖 3 7
圖 4 用自然連接查詢:
圖 5
8.心得體會
本次課程設計主要設計一個計算機管理系統,我的大體思路就是將基本信息錄入到基本表當中,并保證沒有重復屬性,然后設計一個管理表,讓其它基本表參照這個管理表,這個管理表當中只有各表主鍵,需要查看信息時,就將兩表連接。。
這次課設我覺得有兩個難點,一個是表間的參照,另一個是約束條件的設置,尤其是約束條件一定要充分考慮到,還有當有那種范圍值的約束時要在建表后要用alter修改,而不是在定義時直接約束。
最后一點是關于主鍵的問題,主鍵最好別用學號什么的,最好應該用連續的、無意義的數字,create sequence之后,每加一個元組就用一次nextval,這樣可以讓電腦自動排號。
第五篇:數據庫課程設計——庫存銷售管理系統
數據庫課程設計
實驗報告
姓名:黃世增
班級:計算機1403
學號:14116403051.實驗名稱
使用Visual Basic 6.0和SQL Server 2014開發庫存銷售管理系統
2.實驗目的
使用Visual Basic 6.0開發工具開發一個庫存銷售管理系統,該系統采用SQL Server 2014數據庫保存庫存貨物信息,數據庫中包括貨物出入庫信息和商品銷售等信息。該系統包括系統登錄、貨物出入庫管理、商品銷售管理和商品統計管理等功能,通過這些功能實現對庫存中貨物信息和銷售信息進行管理。
系統主要實現以下目標:
? 實現系統登錄及修改用戶密碼的功能。? 對庫存貨物的出入庫信息進行管理。? 對商品的銷售信息進行管理。
? 根據銷售日期統計商品的銷售數據。
3.實驗步驟 3.1 設計數據庫
建立一個名為“DB_KCGL”的數據庫,根據前述的主要功能目標,需要建立3個數據表(關系):
(1)貨物的出入庫信息:保存貨物的出入庫信息
? id:庫存貨物信息的編號,主碼,建議長度為18的numeric類型。? tb_title:庫存貨物的名稱,建議長度為50的varchar類型。? tb_style:庫存貨物的類型,建議長度為50的varchar類型。? tb_nums:庫存貨物的數量,建議為整型int。? tb_values:庫存貨物的價格,實數類型real。
? tb_date:庫存貨物的入庫日期,時間日期類型datetime。
? tb_mark:庫存貨物的備注信息,建議長度為50的varchar類型。
(2)商品的銷售信息:保存商品的銷售信息
? id:商品銷售信息的編號,主碼,建議長度為18的numeric類型。
? ? ? ? tb_title:銷售商品的名稱,建議長度為50的varchar類型。tb_nums:建議為整型int。
tb_values:銷售商品的總價,浮點類型float。
tb_date:商品銷售的日期,時間日期類型datetime。
(3)系統用戶的信息:保存系統用戶的信息
? id:用戶信息的編號,主碼,建議長度為18的numeric類型。? tb_name:用戶名稱,建議長度為50的varchar類型。
? tb_pas:用戶的密碼信息,建議長度為50的varchar類型。
3.2 設計連接數據庫的模塊
需要首先建立一個連接數據庫的模塊,這樣應用程序才能與數據庫中的數據表取得連接,將數據信息從數據表中讀出到應用程序中或通過應用程序保存到數據表中。
為此,建立一個負責數據庫連接的模塊如下:
(1)選擇“工程”菜單下的“添加模塊”命令,在應用程序中添加一個模塊Module1。(2)Module1模塊的實現如下: '數據連接模塊
Public MyStrs As String Public DB_AdoRs As New ADODB.Recordset
'后添加一個記錄集對象 Public DB_AdoRs1 As New ADODB.Recordset
'后添加一個記錄集對象 Public DB_AdoRs2 As New ADODB.Recordset
'后添加一個記錄集對象 Public Function Cnn()As ADODB.Connection
'定義連接字符串函數
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=.”
'顯示系統登錄窗體
Form1.Show End Sub(3)這里需要將程序的入口設置為模塊中的Main()函數。選擇“工程”菜單下的“工程屬性”命令,在“通用”標簽中進行相應設置。
3.3 系統登陸模塊設計
在本庫存銷售管理系統中,只有授權用戶(管理員)可以登錄并進行庫存和銷售信息管理與維護,因此需要一個系統登錄界面,防止非法用戶登錄到系統中,從而保證了應用程序的安全性和可靠性。
3.3.1 登錄窗體設計
設計如下的登錄窗體,在窗體中要添加一個ADO控件,命名為Adodc1。
(1)登錄窗體啟動之后,需要將系統用戶的信息數據表中的所有用戶名稱信息添加到窗體的ComboBox控件的Op_Name屬性中,即實現在“操作員名稱”下拉列表中可以出現系統當前的操作員信息,供登錄用戶選擇。Private Sub Form_Load()'使用代碼連接數據庫與數據表
Adodc1.ConnectionString = MyStrs
Adodc1.RecordSource = “select * from 系統的用戶信息”
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
Op_Name.Clear
'在添加數據時,首先清空控件中的內容
Do While Adodc1.Recordset.EOF = False
'將操作員信息添加到下拉列表框控件當中
Op_Name.AddItem(Adodc1.Recordset.Fields(“tb_name”))
Adodc1.Recordset.MoveNext
Loop
End If End Sub
(2)當用戶在“操作員名稱”下拉列表中選擇操作員的名稱,并且在“操作員密碼”文本框輸入正確的密碼之后,單擊“確定”按鈕將登錄到系統中,否則將無法登錄系統。具體實現如下:
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
'判斷數據的密碼是否正確
Name1 = Op_Name.Text
Frm_Main.StatusBar1.Panels.Item(2).Text = “當前操作員: ” + Adodc1.Recordset.Fields(“tb_name”)
Frm_Main.Show
'通過身份驗證則顯示主窗體,登錄到系統當中
Unload Me
Else
MsgBox “密碼不正確,請您確認后重新輸入”, , “提示信息”
Txt_Password.Text = “"
Txt_Password.SetFocus
End If
Else
MsgBox ”對不起 沒有此用戶的信息“, , ”提示信息“
Op_Name.Text = ”“
Txt_Password.Text = ”“
End If End Sub 3.4 系統主界面的實現
3.4.1 主界面設計
(1)在工程中添加一個窗體,將窗體命名為Frm_main,將窗體Caption屬性設置為“庫存管理系統”。
(2)添加一個Toolbar控件,工具欄由“修改密碼”、“庫存管理”、“商品銷售”、“銷售統計”和“退出系統”5個按鈕組成。(3)添加一個StatusBar控件,使得狀態欄中能夠顯示登錄操作員姓名和當前系統時間等信息。
(4)在主窗體上添加一個時鐘控件,用于顯示系統當前日期和時間信息。
(5)在主窗體上添加一個Label標簽控件,將其Caption屬性設置為“庫存管理系統”。
3.4.2 代碼實現
(1)窗體啟動時,在窗體的狀態欄中將顯示當前系統的日期信息: Private Sub Form_Load()
StatusBar1.Panels.Item(3).Text = Format(Now, ”yyyy年mm月dd日“)End Sub
(2)單擊窗口工具欄按鈕時,將會調用系統的各個子功能模塊: Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Index
Case 1
Frm_Pas.Show
'修改密碼
Case 2
Frm_Inout.Show '庫存管理
Case 3
Frm_Sale.Show
'商品銷售
Case 4
Frm_Stat.Show
'銷售統計
Case 5
End
'退出系統
End Select End Sub
(3)在時鐘控件的Timer事件中添加如下代碼,實現在狀態欄中顯示當前系統時間的功能: Private Sub Timer1_Timer()
StatusBar1.Panels.Item(4).Text = Time End Sub
(4)再向狀態欄中添加公司名稱,操作員和公司網址信息。
系統主窗體的運行界面如下圖所示:
3.5 出入庫管理模塊的設計與實現
該模塊主要是記錄和維護庫存中的貨物信息,其中包括對貨物信息的刪除、修改和保存等方面的功能。
3.5.1 窗體界面設計
(1)在工程中添加一個窗體,命名為Frm_Inout,將窗體Caption設置為“出入庫管理”。(2)在窗體上添加相應的控件,如下圖所示。
(3)通過“工程”菜單下的“部件”命令將DataGrid數據表格控件添加到工具箱中,然后在窗體上添加1個數據表格控件DataGrid1。
(4)在窗體上添加一個ADO控件Adodc1,同時將DataGrid1的數據源屬性DataSource設置為Adodc1。
3.5.2 程序代碼實現
(1)窗口載入時,將數據庫中商品表數據讀出。Private Sub Form_Load()
Adodc1.ConnectionString = MyStrs
Adodc1.RecordSource = ”select * from 貨物的出入庫信息 order by id“
Adodc1.Refresh
AddTitle End Sub
其中,AddTitle函數用于向DataGrid1添加表頭,實現如下: '添加數據庫字段標題的事件過程 Private Sub AddTitle()
DataGrid1.Columns.Item(0).Caption = ”編號“
DataGrid1.Columns.Item(1).Caption = ”名稱“
DataGrid1.Columns.Item(2).Caption = ”類型“
DataGrid1.Columns.Item(3).Caption = ”數量“
DataGrid1.Columns.Item(4).Caption = ”單價“
DataGrid1.Columns.Item(5).Caption = ”入庫日期“
DataGrid1.Columns.Item(6).Caption = ”備注“
End Sub
(2)點擊“添加”按鈕,清空編輯框,讓用戶輸入新的待添加內容 Private Sub Command1_Click()'清空文本框中的內容
Text1.Text = ”“
Text2.Text = ”“
Text3.Text = ”“
Text4.Text = ”“
Text5.Text = ”“
Text6.Text = ”“
Text1.SetFocus End Sub(3)點擊“刪除”按鈕,刪除選中當前記錄。Private Sub Command2_Click()'刪除庫存信息
c = MsgBox(”確認要刪除該信息嗎“, 17, ”提示信息“)
If c = vbOK Then
'如果有錯誤則執行錯誤處理
On Error Resume Next
Set DB_AdoRs = Cnn.Execute(”Delete from 貨物的出入庫信息 where id='“ + Text1.Text + ”'“)MsgBox ”數據刪除成功“, 64, ”提示信息“
'刪除后刷新數據信息
Adodc1.RecordSource = ”select * from 貨物的出入庫信息 order by id“
Adodc1.Refresh
AddTitle
End If
Text1.Text = ”“
Text2.Text = ”“
Text3.Text = ”“
Text4.Text = ”“
Text5.Text = ”“
Text6.Text = ”“
End Sub
(4)點擊“修改”按鈕,修改當前的記錄信息。Private Sub Command3_Click()'修改庫存信息
c = MsgBox(”確認修改信息嗎“, 33, ”提示信息“)
If c = vbOK Then
'
On Error Resume Next
Set DB_AdoRs = Cnn.Execute(”UPDATE 貨物的出入庫信息 SET tb_title='“ + Text2 + ”',tb_style='“ + Text3 + ”',tb_nums='“ + Text4 + ”',tb_values='“ _
+ Text5 + ”',tb_mark='“ + Text6 + ”' where id='“ + Text1.Text + ”'“)
MsgBox ”數據修改成功“, 64, ”提示信息“
Adodc1.RecordSource = ”select * from 貨物的出入庫信息 order by id“
Adodc1.Refresh
AddTitle
End If End Sub(5)點擊“保存”按鈕,將保存文本框中輸入的貨物信息。Private Sub Command4_Click()If Text1.Text = ”“ Or Text2.Text = ”“ Or Text3.Text = ”“ Or Text4.Text = ”“ Or Text5.Text = ”“ Or Text6.Text = ”“ Then
MsgBox ”保存的數據信息不能為空“, 48, ”提示信息“
Else
DB_AdoRs.Open ”select * from 貨物的出入庫信息 where tb_title='“ + Text2.Text + ”'“, Cnn, adOpenKeyset
If DB_AdoRs.RecordCount > 0 Then
'判斷要保存的信息是否已經存在
MsgBox ”該貨物信息信息已經存在“, 48, ”提示信息“
DB_AdoRs.Close
Else
DB_AdoRs.Close
c = MsgBox(”確認保存信息嗎“, 33, ”提示信息“)
If c = vbOK Then
'如果選擇的是“確定”按鈕則保存信息
Set DB_AdoRs = Cnn.Execute(”insert into 貨物的出入庫信息 values(“ & Text1 & ”,'“ & Text2 & ”','“ & Text3 & ”',“ & Text4 & ”,“ _
& Text5 & ”,'“ & Date & ”','“ & Text6 & ”')“)
MsgBox ”信息保存成功“, 64, ”提示信息“
Else
End If
'保存數據后刷新數據信息
Adodc1.RecordSource = ”select * from 貨物的出入庫信息 order by id“
Adodc1.Refresh
AddTitle
End If
End If End Sub(6)點擊退出,銷毀當前窗口。Private Sub Command6_Click()
Unload Me End Sub
(7)單擊DataGrid1中的相應記錄,會在窗體左側的各個編輯框中顯示相應的內容。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
窗體的運行界面如下圖所示:
3.6 商品銷售模塊的設計與實現
在“商品銷售管理”窗口中的“銷售商品”下拉列表中選擇要銷售的商品之后,該商品的基本信息將顯示在窗體中相應的文本框中,在輸入銷售數量和實收金額后,單擊“確認銷售”按鈕完成銷售商品的操作。
3.6.1 窗體界面設計
(1)在工程中添加一個窗體,命名為Frm_Sale,將Caption屬性設置為“商品銷售管理”。(2)在窗體上添加相應的控件,如下圖所示。
(3)通過“工程”菜單下的“部件”命令將DataGrid數據表格控件添加到工具箱中,然后在窗體上添加1個數據表格控件DataGrid1。
(4)在窗體上添加2個ADO控件Adodc1和Adodc2,同時將DataGrid1的數據源屬性DataSource設置為Adodc2。
3.6.2 程序代碼實現
(1)窗體啟動時,將商品庫存中的貨物名稱信息添加到下拉列表中,然后再將商品銷售的數據信息顯示在DataGrid1控件中。Private Sub Form_Load()Adodc2.ConnectionString = MyStrs
Adodc2.RecordSource = ”select * from 商品的銷售信息 order by id“
Adodc2.Refresh
AddTitle
'使用代碼連接數據庫與數據表
Adodc1.ConnectionString = MyStrs
Adodc1.RecordSource = ”select * from 貨物的出入庫信息“
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
Combo1.Clear
'在添加數據時,首先清空控件中的內容
Do While Adodc1.Recordset.EOF = False
'將貨物出入庫信息添加到下拉列表框控件當中
Combo1.AddItem(Adodc1.Recordset.Fields(”tb_title“))
Adodc1.Recordset.MoveNext
Loop
End If End Sub Private Sub AddTitle()
DataGrid1.Columns.Item(0).Caption = ”編號“
DataGrid1.Columns.Item(1).Caption = ”名稱“
DataGrid1.Columns.Item(2).Caption = ”銷售數量“
DataGrid1.Columns.Item(3).Caption = ”銷售總價“
DataGrid1.Columns.Item(4).Caption = ”銷售日期“ End Sub(2)選擇下拉列表中的商品之后,該商品的詳細信息將顯示在窗體中相對應的文本框中。'商品詳細信息
Private Sub Combo1_Click()Adodc1.RecordSource = ”select * from 貨物的出入庫信息 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
'清空文本框中的內容
Text6.Text = ”“
Text7.Text = ”“
Text8.Text = ”“
Text9.Text = ”“
End Sub
(3)單擊“確認銷售”按鈕,將完成銷售商品的操作。
(4)當用戶輸入銷售數量后并將輸入焦點移開后,需要實時更新商品詳細信息中的數量信息,即在原有數量的基礎上減去用戶輸入的銷售數量。(3)和(4)的代碼:
Private Sub Command1_Click()
Adodc1.ConnectionString = MyStrs
Adodc1.RecordSource = ”select * from 貨物的出入庫信息 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 ”請補全信息!“, 64, ”提示信息“
Else
If a < b Then
MsgBox ”信息輸入有誤,請重新輸入!“, 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 貨物的出入庫信息 SET tb_nums = '“ & Text3 & ”' where id= '“ & Text1 & ”'“)
MsgBox ”銷售成功!“, 64, ”提示信息“
Adodc2.RecordSource = ”select * from 商品的銷售信息 “
Adodc2.Refresh
AddTitle
End If
End If End Sub
窗體的運行結果如下圖所示:
3.7 銷售統計模塊的設計與實現
該模塊主要實現統計商品銷售信息的功能。選擇商品的銷售日期和銷售商品的名稱之后,在下面的DataGrid數據表格控件中就會顯示查詢的數據結果信息,同時統計出銷售商品的總數量和總價格。
3.7.1 窗體界面設計
(1)添加一個窗體,命名為Frm_Stat,將窗體的Caption屬性設置為“銷售統計”。(2)在窗體上添加控件情況如后圖。
(3)在窗體上添加一個數據表格控件DataGrid1。
(4)在窗體上添加2個ADO控件Adodc1和Adodc2,同時將DataGrid1的數據源屬性DataSource設置為Adodc2。
銷售統計窗體的設計界面如下圖所示。
3.7.2 程序代碼實現
(1)在啟動窗體時,將貨物的名稱信息添加到下拉列表控件中,然后再將商品銷售的數據信息顯示在表格控件中。
(2)在日期時間控件DTPicker1的Change事件下添加如下的程序代碼,實現根據選擇條件統計商品銷售信息的功能。
(3)在日期Combo1控件的Click事件下添加如下的程序代碼,實現根據選擇條件統計商品銷售信息的功能。
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
'使用代碼連接數據庫與數據表
Adodc1.ConnectionString = MyStrs
Adodc1.RecordSource = ”select * from 貨物的出入庫信息 “
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
Adodc1.Recordset.MoveFirst
Combo1.Clear
'在添加數據時,首先清空控件中的內容
Do While Adodc1.Recordset.EOF = False
'將商品銷售信息添加到下拉列表框控件當中
Combo1.AddItem(Adodc1.Recordset.Fields(”tb_title“))
Adodc1.Recordset.MoveNext
Loop
End If End Sub
Private Sub AddTitle()
DataGrid1.Columns.Item(0).Caption = ”編號“
DataGrid1.Columns.Item(1).Caption = ”名稱“
DataGrid1.Columns.Item(2).Caption = ”銷售數量“
DataGrid1.Columns.Item(3).Caption = ”銷售總價“
DataGrid1.Columns.Item(4).Caption = ”銷售日期“ End Sub
窗體的運行結果如下:
3.8 修改密碼模塊的設計與實現
3.8.1 窗體界面設計
(1)添加一個窗體,命名為Frm_Pas,將Caption屬性設置為“密碼修改”。(2)在窗體上加入一個ADO控件Adodc1。(3)設計窗體的界面如下圖。
3.8.2 程序代碼實現
(1)載入窗口時連接操作員信息數據表 Private Sub Form_Load()'使用代碼連接數據庫與數據表
Adodc1.ConnectionString = MyStrs
Adodc1.RecordSource = ”select * from 系統用戶的信息“
Adodc1.Refresh End Sub
(2)當點擊“確定”按鈕時,首先判斷用戶輸入的用戶名和原密碼信息是否正確,如果正確并且兩次輸入的新密碼一致,就將用戶密碼修改為新密碼。Private Sub Command1_Click()Adodc1.RecordSource = ”select * from 系統用戶的信息 where tb_name ='“ & Text1.Text & ”'“ Adodc1.Refresh
If Text1.Text = ”“ Then
MsgBox ”請輸入用戶名!“, 48, ”提示信息“
Text1.SetFocus
Else
If Text2.Text = ”“ Then
MsgBox ”請輸入舊密碼!“, 48, ”提示信息“
Text2.SetFocus
Else
If Text3.Text = ”“ Then
MsgBox ”請輸入新密碼!“, 48, ”提示信息“
Text3.SetFocus
Else
If Text4.Text = ”“ Then
MsgBox ”請確認新密碼!“, 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
'判斷數據的密碼是否正確
Set DB_AdoRs = Cnn.Execute(”UPDATE 系統用戶的信息 SET tb_pas='“ + Text3.Text + ”' where tb_name='“ + Text1.Text + ”'“)
MsgBox ”密碼已修改!“, 48, ”提示信息“
Unload Me
Else
If Text2.Text <> MPassword Then
MsgBox ”密碼不正確,請您確認后重新輸入!“, 64, ”提示信息“
Text2.Text = ”“
Text3.Text = ”“
Text4.Text = ”“
Text2.SetFocus
Else
MsgBox ”兩次輸入的新密碼不一致,請重新輸入!“, 64, ”提示信息“
Text3.Text = ”“
Text4.Text = ”“
Text3.SetFocus
End If
End If
Else
If Text1.Text <> ”“ Then
MsgBox ”對不起 沒有此用戶的信息!“, 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)當用戶點擊“取消”時,關閉密碼修改對話框。Private Sub Command2_Click()
End End Sub
窗體的運行結果如下:
4.實驗總結
通過這兩星期的學習,加深了我對數據庫的認識,懂得了如何去應用數據庫,也對Visual Basic有了一定的了解了,雖然設計的過程中并不是那么的順利,但經過查找相關的資料后,問題一步一步地解決了,相信對我以后的學習有一定的幫助。