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