暑假实践做了一个学生宿舍管理系统的数据库

原创 2007年09月13日 14:16:00

本次暑假实践结束了,

和同学们一起做了一个学生宿舍管理系统的数据库.

基于该数据库开发学生宿舍管理系统软件.

发现数据库这东西一下子创建一个大概的结构其实是很简单的,

但是你要将这个数据库完整,并准确地运用到软件程序开发中的确需要很大的心思.

更何况对于我这菜鸟,连数据库的运用都不能达到十分熟悉的程度.

可想而知这次的数据库的完整性有多高.........

由于数据库编写不完整,所以搞的后期编写代码麻烦死,错误时时发生.

数据库啊数据库,真是一桩麻烦事~

以下是数据库代码:

USE master
GO

IF EXISTS
(SELECT name
FROM master.dbo.sysdatabases
WHERE name = 'CS1')
 DROP DATABASE CS1
GO     

-------------------------------------------------------------------------------------------------------------------------------                                              

create database  CS1   ---新建一个名为CS1的数据库
on
( name = CS1_dat,
  filename = 'D:/CS1.mdf',
  size = 10,
 maxsize = 50,
 filegrowth = 5)                  -------本人创建数据库的位置就是为了贪方便,直接把数据库文件丢到D盘里去 - -!

log on
(name = 'CS1_log',
 filename = 'D:/CS1.ldf',
  size = 5mb,
 maxsize = 25mb,
 filegrowth = 5mb)

go

--------------------------------------------------------------------------------------------------------------------------

use CS1
go

IF OBJECT_ID('系统管理员表')IS NOT NULL
DROP TABLE 系统管理员表
GO

IF OBJECT_ID('宿舍表')IS NOT NULL
DROP TABLE 宿舍表
GO

IF OBJECT_ID('宿舍调整表')IS NOT NULL
DROP TABLE 宿舍调整表
GO
IF OBJECT_ID('学生表')IS NOT NULL
DROP TABLE 学生表
GO
IF OBJECT_ID('违纪记录表')IS NOT NULL
DROP TABLE 违纪记录表
GO
IF OBJECT_ID('访客表')IS NOT NULL
DROP TABLE 访客表
GO

IF OBJECT_ID('访问表 ')IS NOT NULL
DROP TABLE 访问表
GO

IF OBJECT_ID('卫生评比表')IS NOT NULL
DROP TABLE 卫生评比表
GO

IF OBJECT_ID('报修表')IS NOT NULL
DROP TABLE 报修表
GO
IF OBJECT_ID('水电费表')IS NOT NULL
DROP TABLE 水电费表
GO

IF OBJECT_ID('宿舍管理员表')IS NOT NULL
DROP TABLE 宿舍管理员表
GO

IF OBJECT_ID('学院表')IS NOT NULL
DROP TABLE 学院表
GO
IF OBJECT_ID('班级表')IS NOT NULL
DROP TABLE 班级表
GO

create table 系统管理员表
(
 user_id  int identity(1,1),--key
 user_name nchar(30) not null,
 user_password nchar(30) null,
 flag  int default  0
)
GO


create table 宿舍表  ---新建宿舍表,并在表中添加约束
(
  宿舍ID varchar(8)     not null ,                              -----宿舍表里,其实我觉得宿舍ID这东西应该由楼号,
  楼号  varchar(5)     not null ,                                 ----单元号以及宿舍号一同做为主键,这样宿舍ID的
  房间号码 char(3)        not null ,                            -----唯一性及功能性就会更丰富了
  基本设施      varchar(50)    not null ,
  规格          varchar(20)    not null ,
  可住人数      int            not null ,                            
  实住人数      int            not null ,
  入住性别      char(2)        not null ,
  所属学院      varchar(20)    not null ,
  入住情况      varchar(10)    not null ,                   -----这里有个十分严重的问题,就是入住情况竟然没有
  电话          varchar(15)    not null ,                      -----约束,那么这里有人入住也可以写成没有人入住了, 汗~~

  check (入住性别 ='男' OR 入住性别='女'),
  check(可住人数>=实住人数)
)
go


create table 宿舍调整表  ---新建一个宿舍调整表,并在表中添加约束
(
  调整记录号     int            identity(1,1) ,                -----这个 调整记录号用IDENTITY,个人觉得有点太过简化了,
  学号           char(11)       not null ,                        -----合理性究竟怎样,没主意了.毕竟不是自己一个人建的,
  调整时间       datetime       not null ,
  原宿舍ID varchar(8)     not null ,
  现宿舍ID varchar(8)     not null ,
  原床位号       int            not null ,
  现床位号       int            not null ,
  调整类型  varchar(10) not null ,
  备注说明       varchar(100)    ,

  check(原床位号>=0)    ,
  check(现床位号>=0) 
)
go


create table 学生表  ---新建一个学生表,并在表中添加约束
(
  宿舍ID varchar(8)     not null,
  学号          char(11)       not null ,
  姓名          varchar(20)    not null ,
  性别          char(2)        not null ,
  床位号        int            not null ,
  班级号        varchar(4)     not null ,
  学院号 varchar(4)      not null ,
  家庭住址      varchar(40)    not null ,  
  联系电话      varchar(15)    not null ,
  备注说明 varchar(100)            ,

  check (性别 ='男' OR 性别='女')       ,
  check (床位号>=0)   
)
go

 

create table 学院表  ---新建一个学院表,并在表中添加约束
(
  学院号    varchar(4)       not null ,
  学院名       varchar(30)      not null ,
  备注说明    varchar(100)              
)
go


create table 班级表  ---新建一个班级表,并在表中添加约束
(
  班级号    varchar(4)       not null ,
  班级名           varchar(30)      not null ,
  备注说明    varchar(100)              
)
go

 

 

create table 违纪记录表  ---新建一个违纪记录表,并在表中添加约束
(
  违纪记录号    int            identity(1,1) ,
  宿舍ID varchar(8)     not null ,
  学号          char(11)       not null ,
  姓名          varchar(20)    not null ,
  违纪事项      varchar(50)    not null ,
  违纪时间  varchar(20)       not null ,
  处理方法  varchar(50)    not null ,
  处理时间      varchar(20)       not null ,
  备注说明 varchar(100)    ,

  check(处理时间>=违纪时间)
)
go


create table 访客表  ---新建一个访客表,并在表中添加约束
(
  访客号         int            not null ,
  姓名           varchar(20)    not null ,
  性别           char(2)        not null ,
  与被访人关系   varchar(10)    not null ,
  备注说明  varchar(100)    ,

  check (性别 ='男' OR 性别='女')
)
go


create table 访问表  ---新建一个访问表,并在表中添加约束
(
  记录号         int              identity(1,1) ,
  访客号         int              not null,
  宿舍ID  varchar(8)       not null ,
  学号       varchar(11)      not null ,
  访问时间       datetime         not null ,
  离开时间       datetime         not null ,
 
  事宜   varchar(100)             ,

  check(离开时间>=访问时间)  
)
go 

 

create table 卫生评比表  ---新建一个卫生评比表,并在表中添加约束
(
  卫生评比号     int                 identity(1,1) ,
  宿舍ID  varchar(8)          not null ,
  年份           varchar(10)         not null ,
  学期           varchar(10)         not null ,
  周次           int                 not null ,
  分数          int           not null ,

  check( 分数>=0 AND 分数<=100)        ,
  check( 周次>=0) 
)
go 

 

create table 报修表  ---新建一个报修表,并在表中添加约束
(
  报修号         int      identity(1,1) ,
  宿舍ID    varchar(8)       not null ,
  学号             char(11)         not null ,
  报修时间         datetime         not null ,
  维修时间         datetime          ,
  报修事项         varchar(20)      not null ,
  处理结果         varchar(20)      ,
  员工号           char(4)       not null ,
  备注说明         varchar(100)              ,

  check(报修时间<维修时间)
)
go 

 

create table 水电费表  ---新建一个水费表,并在表中添加约束
(
  抄表时间         datetime         not null ,
  宿舍ID    varchar(8)       not null ,
  给定水量         int              not null ,
  起抄水量         int              not null ,
  本月水量         int              not null ,
  水单价           smallmoney       not null ,
  给定电量         int              not null ,
  起抄电量         int              not null ,
  本月电量         int              not null ,
  电单价           smallmoney       not null ,
  备注说明         varchar(100)              ,

  check(本月水量>=起抄水量)                  ,
  check(本月电量>=起抄电量)
)
go  

 

create table 宿舍管理员表  ---新建一个宿舍管理员表,并在表中添加约束
(
  员工号    char(4)          not null ,
  楼号     varchar(5)       not null ,
  姓名             varchar(20)      not null ,
  性别             char(2)          not null ,
  家庭住址         varchar(40)      not null ,  
  联系电话         varchar(15)      not null ,
  备注说明    varchar(100)              ,
  check (性别 ='男' OR 性别='女')
)
go 

 


/*向各表中添加主键*/


use CS1
go

ALTER TABLE 宿舍表                                                     
/*向宿舍表中添加主键*/
ADD CONSTRAINT 宿舍表_pk PRIMARY KEY (宿舍ID)
go

ALTER TABLE 宿舍调整表                                                     
/*向宿舍表中添加主键*/
ADD CONSTRAINT 宿舍调整表_pk PRIMARY KEY (调整记录号)
go

ALTER TABLE 学生表                                                     
/*向学生表中添加主键*/
ADD CONSTRAINT 学生表_pk PRIMARY KEY (学号)
go

ALTER TABLE 违纪记录表                                                     
/*向违纪记录表中添加主键*/
ADD CONSTRAINT 违纪记录表_pk PRIMARY KEY (违纪记录号)
go

ALTER TABLE 访客表                                                     
/*向访客表中添加主键*/
ADD CONSTRAINT 访客表_pk PRIMARY KEY (访客号)
go

ALTER TABLE 访问表                                                     
/*向访问表中添加主键*/
ADD CONSTRAINT 访问表_pk PRIMARY KEY (记录号)
go

ALTER TABLE 卫生评比表                                                     
/*向卫生评比表中添加主键*/
ADD CONSTRAINT 卫生评比表_pk PRIMARY KEY (卫生评比号)
go

ALTER TABLE 报修表                                                     
/*向报修表中添加主键*/
ADD CONSTRAINT 报修表_pk PRIMARY KEY (报修号)
go

ALTER TABLE 水电费表                                                     
/*向水电费表中添加主键*/
ADD CONSTRAINT 水费表_pk PRIMARY KEY (抄表时间,宿舍ID)
go

ALTER TABLE 宿舍管理员表                                                     
/*向宿舍管理员表中添加主键*/
ADD CONSTRAINT 宿舍管理员表_pk PRIMARY KEY (员工号)
go

ALTER TABLE 学院表                                                     
/*向学院表中添加主键*/
ADD CONSTRAINT 学院表_pk PRIMARY KEY (学院号)
go

ALTER TABLE 班级表                                                     
/*向班级表中添加主键*/
ADD CONSTRAINT 班级表_pk PRIMARY KEY (班级号)
go

 

/*约束*/
alter table 学生表  add constraint 学号要以N开头 check (学号 like 'N[0-9]%[0-9]')
alter table 宿舍表 add constraint 电话号码错误 check (电话 like '[0-9][0-9][0-9][0-9][0-9][0-9]%[0-9]');


/*外键*/

alter table 宿舍调整表 add constraint 不存在此类型编号2_fk foreign key (原宿舍ID) references 宿舍表 (宿舍ID);


alter table 宿舍调整表 add constraint 不存在此类型编号3_fk foreign key (现宿舍ID) references 宿舍表 (宿舍ID);

 

alter table 违纪记录表 add constraint 不存在此类型编号4_fk foreign key (宿舍ID) references 宿舍表 (宿舍ID);


alter table 学生表 add constraint 不存在此类型编号7_fk foreign key (宿舍ID) references 宿舍表 (宿舍ID);

 

alter table 访问表 add constraint 不存在此类型编号10_fk foreign key (访客号) references 访客表(访客号);


alter table 访问表 add constraint 不存在此类型编号11_fk foreign key (宿舍ID) references 宿舍表(宿舍ID);

alter table 报修表 add constraint 不存在此学号12_fk foreign key (学号) references 学生表(学号);
alter table 报修表 add constraint 不存在此宿舍ID14_fk foreign key (宿舍ID) references 宿舍表(宿舍ID);
alter table 报修表 add constraint 不存在此员工号15_fk foreign key (员工号) references 宿舍管理员表(员工号);
alter table 水电费表 add constraint 不存在此类型编号16_fk foreign key (宿舍ID) references 宿舍表(宿舍ID);

--=======================存储过程与触发器====================================================================

if Exists (select * from sysobjects where type = 'P' and name = 'CheckLoginGetFlag_SP')
    drop Procedure CheckLoginGetFlag_SP
go


CREATE PROCEDURE CheckLoginGetFlag_SP
(@Name nchar (30),
@Pass char (30))
 AS
   Declare @Flag int
   select @Flag = -1
    if exists
              (select flag from 系统管理员表 where [user_name] = @Name and user_password = @Pass)
    select @Flag =(select  flag from 系统管理员表 where [user_name] = @Name and user_password = @Pass)
 Return @Flag
GO

--=======================默认值====================================================================


CREATE DEFAULT def_默认宿舍 AS '0-0-000'
GO

CREATE DEFAULT def_默认数值 AS 0
GO

sp_bindefault 'def_默认宿舍' , '宿舍调整表.原宿舍ID'
GO

sp_bindefault 'def_默认宿舍' , '宿舍调整表.现宿舍ID'
GO

sp_bindefault 'def_默认数值' , '卫生评比表.分数'
GO

sp_bindefault 'def_默认数值' , '卫生评比表.周次'
GO

sp_bindefault 'def_默认数值' , '水电费表.给定水量'
GO

sp_bindefault 'def_默认数值' , '水电费表.给定电量'
GO

sp_bindefault 'def_默认数值' , '水电费表.水单价'
GO

sp_bindefault 'def_默认数值' , '水电费表.电单价'
GO

sp_bindefault 'def_默认数值' , '学生表.床位号'
GO

sp_bindefault 'def_默认数值' , '宿舍调整表.原床位号'
GO

sp_bindefault 'def_默认数值' , '宿舍调整表.现床位号'
GO

/*增加维修登记视图*/
create view 维修登记
AS
select  楼号,房间号码,学号,报修时间,维修时间,报修事项,处理结果,员工号,备注说明 from  报修表 , 宿舍表
where 报修表.宿舍ID=宿舍表.宿舍ID
with check option
GO

create view 学生居住信息
AS
select  楼号,房间号码,学号,姓名,性别,床位号, 班级名, 学院名, 家庭住址, 联系电话
FROM 学生表 ,宿舍表,班级表, 学院表
where 学生表.宿舍ID=宿舍表.宿舍ID AND
 学生表.班级号=班级表.班级号 AND
 学生表.学院号=学院表.学院号
with check option
GO


create view 学生居住变动信息
AS
SELECT 学生表.学号, 姓名, 性别, 班级名, 学院名, 联系电话,家庭住址,调整时间,原宿舍ID,现宿舍ID,原床位号, 现床位号,调整类型,宿舍调整表.备注说明
FROM 学生表 INNER JOIN
      宿舍调整表 ON 学生表.学号 = 宿舍调整表.学号 INNER JOIN
      班级表 ON 学生表.班级号 = 班级表.班级号 INNER JOIN
      学院表 ON 学生表.学院号 = 学院表.学院号
with check option
GO
 

相关文章推荐

java -ArrayList的用法实例--学生宿舍管理系统

java -ArrayList的用法实例--学生宿舍管理系统 对于利用ArrayLis来实现增,删,改,查希望对大家有用!...

JSP 期末项目---学生宿舍管理系统(1)

今天终于做完了JSP期末项目------学生宿舍管理系统,本项目是自己纯手工敲制的...别人看来自己手工敲制可能会很2B但个人觉得初学JSP还是自己敲,自己体会做整个项目的经历,才能更好的总结自己的不...

Java学生宿舍管理系统主要内容及特点

“学生宿舍管理系统”主要内容及特点     一, 个人基本信息介绍 二, 作品及其目录结构 三, 网页设计主要意图 四, 网页设计作品特点 五, 设计中的心得体会     一, ...
  • acm_hmj
  • acm_hmj
  • 2017年04月18日 10:07
  • 1352

第一次课设完成后的闲谈——学生宿舍管理系统

先吐槽一下由于自己的愚蠢。。。很多重复代码copy的没有改变量导致了很多错误。一个星期(准确来说五天)就做了这么简单的一个项目。没错你没看错就是做了这么长时间!!!各位看客,有的不要再和我一样;没有的...

学生宿舍管理系统类图设计

需求文档 面对庞大的学生信息量,一套适合学生公寓使用的管理软件,能够非常方便地管理公寓,包括公寓内员工基本信息管理,学生信息管理,公寓信息管理等,还能便捷的查询公寓内的各种信息,提高了工作人员的工作...

关于c语言学生宿舍管理系统

老师先发给我们一个学生信息管理系统的C语言源代码,这是我目前接触到的最长的代码,密密麻麻,看的眼晕,接下来老师为我们细致地讲解了这个程序的结构,让我们了解到程序是如何执行的,我们明白后,老师发布了任务...

学生宿舍管理系统 完成总结

【题目】学生宿舍管理系统 考查点:线性结构、文件操作 注意:必须使用文件存储数据,不得使用数据库管理系统。 任务:通过此系统可以实现如下功能: 录入: 可以录入宿舍情况,包括宿舍号、可容纳学生数、已容...

学生宿舍管理系统

import java.io.InputStreamReader; import java.io.BufferedReader; import java.util.List; import ja...

学生宿舍管理系统 项目设计、实现以及碰到的问题

前提概要: 此篇文章的面向读者主要是C++新手,笔者希望能够通过自己经验的分享给新手读者一定的灵感,如有问题欢迎指正。关于此项目的描述,已经写在了上一篇的总结中。 项目构思: 笔者在开始做项目...

JSP 期末项目---学生宿舍管理系统(2)

界面展示: JSP代码: Add page 学生资料录入界面 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:暑假实践做了一个学生宿舍管理系统的数据库
举报原因:
原因补充:

(最多只允许输入30个字)