數(shù)據(jù)庫課程設(shè)計宿舍管理系統(tǒng)
數(shù)據(jù)庫設(shè)計說明書
題 目:
宿舍管理系統(tǒng)
二 級 學(xué) 院:
汽車與電子工程學(xué)院
年級、 專業(yè):
2010級計算機(jī)科學(xué)與技術(shù)
學(xué) 生 姓 名:
學(xué) 號:
指 導(dǎo) 教 師:
完 成 時 間:
2011年12月20日
目錄
1 系統(tǒng)需求分析 3
1.1 系統(tǒng)功能 3
1.2 系統(tǒng)功能 4
2 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計 5
2.1 數(shù)據(jù)庫的整體實體關(guān)系圖 5
2.2 數(shù)據(jù)庫的的實體E-R圖 6
3 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計 9
4 數(shù)據(jù)庫及的表實現(xiàn)(代碼) 10
1 系統(tǒng)需求分析
系統(tǒng)采用MICROSOFT公司的 VISUAL BASIC語言編寫的學(xué)生公寓管理系統(tǒng),本系統(tǒng)在研制開發(fā)過程中,嚴(yán)格遵循軟件工程方法,完全采用結(jié)構(gòu)化程序設(shè)計方法。
本系統(tǒng)的主要功能可以方便的對學(xué)生宿舍進(jìn)行管理,系統(tǒng)采用Microsoft SQL Server 2005數(shù)據(jù)庫使數(shù)據(jù)具有較強(qiáng)的完整性、較好的數(shù)據(jù)安全性等特點(diǎn)以及提供了標(biāo)準(zhǔn)的幫助,使用戶方便的獲得所需的幫助。界面友好、操作簡單、功能齊全、具有較好的人機(jī)接口界面是本系統(tǒng)的最大優(yōu)點(diǎn)。
1.1 系統(tǒng)功能
宿舍管理系統(tǒng)的后臺網(wǎng)站系統(tǒng)的功能結(jié)構(gòu),如下圖所示。
學(xué)生宿舍管理系統(tǒng)
系統(tǒng)登錄模塊
系統(tǒng)控制模塊
系統(tǒng)控制模塊
舍區(qū)管理模塊
房間管理模塊
系統(tǒng)管理模塊
打印數(shù)據(jù)模塊
門衛(wèi)登記模塊
水費(fèi)管理模塊
電費(fèi)管理模塊
數(shù)據(jù)備份模塊
1.2 系統(tǒng)功能
宿舍管理系統(tǒng)的前臺網(wǎng)站系統(tǒng)的功能結(jié)構(gòu),如下圖所示。
學(xué)生宿舍管理系統(tǒng)
系統(tǒng)登錄模塊
系統(tǒng)控制模塊
系統(tǒng)登錄模塊
用戶登錄界面
來訪查看界面
宿舍留言界面
宿舍編號欄
登錄信息界面
來訪時間欄
信息查詢界面
離開時間欄
2 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計
2.1 數(shù)據(jù)庫的整體實體關(guān)系圖
本網(wǎng)站的實體有:用戶,樓管 ,舍區(qū),電費(fèi),房間,宿舍成員,水費(fèi),數(shù)據(jù)庫的整體實體關(guān)系如下圖所示。
用戶
水費(fèi)
上繳
屬于
屬于
舍區(qū)
電費(fèi)
房間
宿舍成員
從屬
樓管
上繳
管理
2.2 數(shù)據(jù)庫的的實體E-R圖
舍區(qū)
電話號碼
區(qū)名稱
舍區(qū)編號
房間數(shù)
床位數(shù)
現(xiàn)住人數(shù)
電費(fèi)
樓房名稱
房間號
舍區(qū)編號
年份
月份
用電量
超支量
電話號碼
水費(fèi)
樓房名稱
房間號
舍區(qū)編號
年份
月份
用水量
超支量
電話號碼
用戶
密碼
權(quán)限
用戶名
機(jī)密問題
答案
創(chuàng)建日期
宿舍成員
樓房名稱
房間號
舍區(qū)編號
床位號
學(xué)生姓名
院系名稱
班級名稱
家庭地址
電話號碼
房間
樓房名稱
房間號
舍區(qū)編號
舍長
床位數(shù)
現(xiàn)住人數(shù)
電話號碼
來訪者
來訪者姓名
來訪者證件名稱
來訪者序號
來訪者證件號碼
受訪者姓名
受訪者舍區(qū)號
受訪者房間號
關(guān)系
來訪時間
離開時間
3 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計
社區(qū)表
列名
數(shù)據(jù)類型
長度
說明
索引
舍區(qū)編號
Int
4
為主鍵
主索引
區(qū)名稱
char
4
小于等于4的漢字
電話號碼
char
4
只能是數(shù)字與’-‘包括區(qū)號與號碼
房間數(shù)
int
8
床位數(shù)
int
8
現(xiàn)住人數(shù)
Int
8
電費(fèi)表:
列名
數(shù)據(jù)類型
長度
說明
索引
舍區(qū)編號
Int
4
為主鍵
主索引
樓房名稱
Char
4
為主鍵(只能是英文字母)
房間號
Int
4
為主鍵
年份
Chat
4
為主鍵(只能是數(shù)字)
月份
char
4
為主鍵(只能是數(shù)字)
用電量
Int
8
超支量
Int
8
電話號碼
Char
4
宿舍電話號碼
水費(fèi)表:
列名
數(shù)據(jù)類型
長度
說明
索引
舍區(qū)編號
Int
4
為主鍵
主索引
樓房名稱
char
4
為主鍵(只能是英文字母)
房間號
Int
4
為主鍵
年份
Char
4
為主鍵(只能是數(shù)字)
月份
Char
4
為主鍵(只能是數(shù)字)
用水量
int
8
超支量
Int
8
電話號碼
Char
4
宿舍電話號碼
用戶表:
列名
數(shù)據(jù)類型
長度
說明
索引
用戶名
Char
4
為主鍵(中文或英文字母)
主索引
密碼
char
4
權(quán)限
Int
4
機(jī)密問題
char
4
答案
Char
4
創(chuàng)建日期
Datatime
8
用getdate()來設(shè)置默認(rèn)值
宿舍成員表:
列名
數(shù)據(jù)類型
長度
說明
索引
舍區(qū)編號
int
4
為主鍵
主索引
樓房名稱
Char
4
為主鍵(只能是英文字母)
房間號
Int
4
為主鍵
床位號
Int
4
為主鍵
學(xué)生姓名
char
10
院系名稱
char
20
班級名稱
char
10
家庭地址
char
50
電話號碼
char
10
宿舍電話號碼(數(shù)字與-)
房間表:
列名
數(shù)據(jù)類型
長度
說明
索引
舍區(qū)編號
Int
4
為主鍵
主索引
樓房名稱
Char
4
為主鍵(只能是英文字母)
房間號
Int
4
為主鍵
舍長
char
10
床位數(shù)
char
20
現(xiàn)住人數(shù)
char
10
電話號碼
char
10
宿舍電話號碼(數(shù)字與-)
來訪登記表:
列名
數(shù)據(jù)類型
長度
說明
索引
來訪者序號
Int
4
為主鍵
主索引
來訪者姓名
char
15
來訪者證件名稱
char
15
來訪者證件號碼
char
20
受訪者姓名
char
15
受訪者舍區(qū)號
Int
20
受訪者房間號
Int
10
關(guān)系
char
50
來訪時間
Datadate
4
離開時間
Datadate
4
備注
char
16
用戶日志表:
列名
數(shù)據(jù)類型
長度
說明
索引
用戶名稱
Char
20
為主鍵
主索引
錯誤次數(shù)
Int
4
最后登錄時間
Datadate
10
4 數(shù)據(jù)庫及的表實現(xiàn)(代碼)
創(chuàng)建數(shù)據(jù)庫及數(shù)據(jù)庫表的sql語句,如下所示。
//創(chuàng)建數(shù)據(jù)庫
USE [master]
GO
CREATE DATABASE [學(xué)生宿舍管理系統(tǒng)] ON PRIMARY
( NAME = N'學(xué)生宿舍管理系統(tǒng)', FILENAME = N'E:\學(xué)習(xí)資料\《數(shù)據(jù)庫原理與應(yīng)用》大作業(yè)\新建文件夾\學(xué)生宿舍管理系統(tǒng).mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'學(xué)生宿舍管理系統(tǒng)_log', FILENAME = N'E:\學(xué)習(xí)資料\《數(shù)據(jù)庫原理與應(yīng)用》大作業(yè)\新建文件夾\學(xué)生宿舍管理系統(tǒng)_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
ALTER DATABASE [學(xué)生宿舍管理系統(tǒng)] SET COMPATIBILITY_LEVEL = 100
GO
//舍區(qū)表
CREATE TABLE [dbo].[舍區(qū)表](
[舍區(qū)編號] [int] NOT NULL,
[區(qū)名稱] [char](10) NULL,
[電話號碼] [char](10) NULL,
[房間數(shù)] [int] NULL,
[床位數(shù)] [int] NULL,
[現(xiàn)住人數(shù)] [int] NULL,
CONSTRAINT [PK_舍區(qū)表] PRIMARY KEY CLUSTERED
(
[舍區(qū)編號] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
//電費(fèi)表
CREATE TABLE [dbo].[電費(fèi)表](
[舍區(qū)編號] [int] NOT NULL,
[樓房名稱] [char](10) NOT NULL,
[房間號] [int] NOT NULL,
[年份] [char](10) NOT NULL,
[月份] [char](10) NOT NULL,
[用電量] [int] NULL,
[超支量] [int] NULL,
[電話號碼] [char](10) NULL,
CONSTRAINT [PK_電費(fèi)表] PRIMARY KEY CLUSTERED
(
[舍區(qū)編號] ASC,
[樓房名稱] ASC,
[房間號] ASC,
[年份] ASC,
[月份] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[電費(fèi)表] WITH CHECK ADD CONSTRAINT [FK_電費(fèi)表_房間表] FOREIGN KEY([舍區(qū)編號], [樓房名稱], [房間號])
REFERENCES [dbo].[房間表] ([舍區(qū)編號], [樓房名稱], [房間號])
GO
ALTER TABLE [dbo].[電費(fèi)表] CHECK CONSTRAINT [FK_電費(fèi)表_房間表]
//水費(fèi)表
GO
CREATE TABLE [dbo].[水費(fèi)表](
[舍區(qū)編號] [int] NOT NULL,
[樓房名稱] [char](10) NOT NULL,
[房間號] [int] NOT NULL,
[年份] [char](10) NOT NULL,
[月份] [char](10) NOT NULL,
[用水量] [int] NULL,
[超支量] [int] NULL,
[電話號碼] [char](10) NULL,
CONSTRAINT [PK_水費(fèi)表] PRIMARY KEY CLUSTERED
(
[舍區(qū)編號] ASC,
[樓房名稱] ASC,
[房間號] ASC,
[年份] ASC,
[月份] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[水費(fèi)表] WITH CHECK ADD CONSTRAINT [FK_水費(fèi)表_房間表] FOREIGN KEY([舍區(qū)編號], [樓房名稱], [房間號])
REFERENCES [dbo].[房間表] ([舍區(qū)編號], [樓房名稱], [房間號])
GO
ALTER TABLE [dbo].[水費(fèi)表] CHECK CONSTRAINT [FK_水費(fèi)表_房間表]
//用戶表
CREATE TABLE [dbo].[用戶表](
[用戶名] [char](10) NOT NULL,
[密碼] [char](10) NULL,
[權(quán)限] [int] NULL,
[機(jī)密問題] [char](10) NULL,
[答案] [char](10) NULL,
[創(chuàng)建日期] [datetime] NULL,
CONSTRAINT [PK_用戶表] PRIMARY KEY CLUSTERED
(
[用戶名] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
//宿舍成員表
CREATE TABLE [dbo].[宿舍成員表](
[舍區(qū)編號] [int] NOT NULL,
[樓房名稱] [char](10) NOT NULL,
[房間號] [int] NOT NULL,
[床位號] [int] NOT NULL,
[學(xué)生姓名] [char](10) NULL,
[院系名稱] [char](10) NULL,
[班級名稱] [char](10) NULL,
[家庭地址] [char](50) NULL,
[電話號碼] [char](10) NULL,
CONSTRAINT [PK_宿舍成員表] PRIMARY KEY CLUSTERED
(
[舍區(qū)編號] ASC,
[樓房名稱] ASC,
[房間號] ASC,
[床位號] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[宿舍成員表] WITH CHECK ADD CONSTRAINT [FK_宿舍成員表_房間表] FOREIGN KEY([舍區(qū)編號], [樓房名稱], [房間號])
REFERENCES [dbo].[房間表] ([舍區(qū)編號], [樓房名稱], [房間號])
GO
ALTER TABLE [dbo].[宿舍成員表] CHECK CONSTRAINT [FK_宿舍成員表_房間表]
//房間表
CREATE TABLE [dbo].[房間表](
[舍區(qū)編號] [int] NOT NULL,
[樓房名稱] [char](10) NOT NULL,
[房間號] [int] NOT NULL,
[舍長] [char](10) NULL,
[床位數(shù)] [char](10) NULL,
[現(xiàn)住人數(shù)] [char](10) NULL,
[電話號碼] [char](10) NULL,
CONSTRAINT [PK_房間表] PRIMARY KEY CLUSTERED
(
[舍區(qū)編號] ASC,
[樓房名稱] ASC,
[房間號] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[房間表] WITH CHECK ADD CONSTRAINT [FK_房間表_舍區(qū)表] FOREIGN KEY([舍區(qū)編號])
REFERENCES [dbo].[舍區(qū)表] ([舍區(qū)編號])
GO
ALTER TABLE [dbo].[房間表] CHECK CONSTRAINT [FK_房間表_舍區(qū)表]
//來訪者登記表
CREATE TABLE [dbo].[來訪登記表](
[來訪者序號] [int] NOT NULL,
[來訪者姓名] [char](10) NOT NULL,
[來訪者證件名稱] [char](15) NULL,
[來訪者證件號碼] [char](20) NULL,
[受訪者姓名] [char](10) NULL,
[受訪者舍區(qū)號] [int] NULL,
[受訪者房間號] [int] NULL,
[受訪者樓房名稱] [char](10) NULL,
[關(guān)系] [char](10) NULL,
[來訪時間] [datetime] NULL,
[離開時間] [datetime] NULL,
[備注] [text] NULL,
CONSTRAINT [PK_來訪登記表] PRIMARY KEY CLUSTERED
(
[來訪者序號] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[來訪登記表] WITH CHECK ADD CONSTRAINT [FK_來訪登記表_房間表] FOREIGN KEY([受訪者舍區(qū)號], [受訪者樓房名稱], [受訪者房間號])
REFERENCES [dbo].[房間表] ([舍區(qū)編號], [樓房名稱], [房間號])
GO
ALTER TABLE [dbo].[來訪登記表] CHECK CONSTRAINT [FK_來訪登記表_房間表]
//用戶日志表
CREATE TABLE [dbo].[用戶日志表](
[用戶名稱] [char](10) NOT NULL,
[錯誤次數(shù)] [int] NULL,
[最后登錄時間] [datetime] NULL,
CONSTRAINT [PK_用戶日志表] PRIMARY KEY CLUSTERED
(
[用戶名稱] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo].[用戶日志表] WITH CHECK ADD CONSTRAINT [FK_用戶日志表_用戶表] FOREIGN KEY([用戶名稱])
REFERENCES [dbo].[用戶表] ([用戶名])
GO
ALTER TABLE [dbo].[用戶日志表] CHECK CONSTRAINT [FK_用戶日志表_用戶表]