数据库课程设计-学生宿舍管理系统方案.doc
. . 数据库课程设计-学生宿舍管理系统目录一、需求分析 11 确定用户 12 功能需求分析 13 数据需求 34 数据字典 35 系统功能结构图 96 数据流图 10二 、 概念设计 12 1 分E-R图 12 2 合E-R图 14三、逻辑结构设计 16 1 学生信息表 16 2 外部人员出入登记表 163 大物品出入登记表 164. 电费管理表 165 报修管理表 166 宿舍管理员基本信息表 167 宿舍违规信息管理表 168 宿舍基本信息管理表 16四、数据库的实现 16 1 表的建立 162 数据的插入 193、建立触发器 244、建立存储过程 245、建立索引 256、建立视图 267、功能的实现 27五、参考文献 28学生宿舍管理系统一、需求分析1、确定用户该系统的主要用户有宿舍管理员,老师与在校学生.2、功能需求分析 可以根据用户的不同来确定不同的功能需求:1)、宿舍管理员:(1)、能输入学生学号、宿舍号来查询相关数据,如查询的宿舍的入住人数;(2)、当学生信息发生改变时,能与时的修改变动的信息,;(3)、当学生出现离校或退学等情况时,能与时清除该学生的住宿信息;(4)、当有学生报修时,能与时根据报修信息联系相关的维修人员;(5)、当有大物品出入时,能与时记录物品名、进入时间、离开时间、携带者、携带者宿舍号等相关信息;(6)、当有符合条件的外部人员进入时,能与时记录进入时间、访问宿舍号、访问对象、离开时间、人员名字等数据:(7)、当有学生购电时,能实时记录购电量、购电时间、强开时间、强开次数、购电数量、剩余电量、电费单价等;(8)、能与时查询自己的工作编号、工作类型、性别、联系方式、工作时间等;2)、学生的需求:(1)、能查询与自己相关的信息,如携带物品进出次数、违规次数等;(2)、当有物品需要维修时,能与时上报;(3)、购电时间、强开时间、强开次数、购电数量、剩余电量、电费单价等;3)、老师的需求:(1)、能查询学生的相关信息,;(2)、能查询并修改宿管的工作编号、工作类型、性别、联系方式、工作时间等。3、数据需求本系统主要包括八个基本表,各个表中的数据如下:(1)学生信息管理表:包括学号、院系、性别、籍贯、生日、入学时间、所学专业、所在班级、所在宿舍号、违规记录等数据;(2)外部人员出入登记表:包括进入时间、访问宿舍号、访问对象、离开时间、人员名字、ID号等数据;(3)大物品出入登记表:包括物品编号、物品名、进入时间、离开时间、携带者、携带者宿舍号等数据;(4)电费管理表:包括购电序列号、购电时间、强开时间、强开次数、购电数量等、剩余电量、电费单价、购电者学号等数据;(5)报修管理表:包括报修序列号、报修人、宿舍号、报修时间、报修物件名、维修人、维修时间等数据;(6)宿舍管理员基本信息表:包括工作编号、工作类型、性别、联系方式、工作时间等数据;(7)宿舍违规信息管理表:包括违规宿舍号、违规人学号、违规次数等数据;(8)宿舍基本信息管理表:入住人数、住宿人学号、住宿人名字、宿舍号、凳子数量、桌子数量、电脑数量、电视数量等数据;4、数据字典该系统中要用到的主要数据如下:41学生信息管理表中的数据项有:(1)、数据项:学号数据类型:char(8)处理过程:由宿舍管理员从老师处得到信息并输入系统数据存储:存储在学生信息管理表(2)、数据项:院系数据类型:char(20)处理过程: 由宿舍管理员从老师处得到信息并输入系统数据存储:存储在学生信息管理表(3)、数据项:数据类型:char(8)处理过程:由宿舍管理员从老师处得到信息并输入系统数据存储:存储在学生信息管理表(4)、数据项:性别数据类型:char(2)处理过程:由宿舍管理员从老师处得到信息并输入系统数据存储:存储在学生信息管理表(5)、数据项:籍贯数据类型:char(10)处理过程:由宿舍管理员从老师处得到信息并输入系统数据存储:存储在学生信息管理表(6)、数据项:生日数据类型:char(8)处理过程:由宿舍管理员从老师处得到信息并输入系统数据存储:存储在学生信息管理表(7)、数据项:入学时间数据类型:char(8)处理过程:由宿舍管理员从老师处得到信息并输入系统数据存储:存储在学生信息管理表(8)、数据项:所学专业数据类型:char(12)处理过程:由宿舍管理员从老师处得到信息并输入系统数据存储:存储在学生信息管理表(9)、数据项:所在班级数据类型:char(8)处理过程:由宿舍管理员从老师处得到信息并输入系统数据存储:存储在学生信息管理表(10)、数据项:宿舍号数据类型:char(8)处理过程:由宿舍管理员从老师处得到信息并输入系统数据存储:存储在学生信息管理表(11)、数据项:违规次数数据类型:char(4)处理过程:由宿舍管理员从老师处得到信息并输入系统数据存储:存储在学生信息管理表42外部人员出入登记表中的数据项有:(1)、数据项:进入时间数据类型:char(12)处理过程:由宿舍管理员实时录入到外部人员出入登记表数据存储:存储在外部人员出入登记表中(2)、数据项:访问的宿舍号数据类型:char(10)处理过程:由宿舍管理员实时录入到外部人员出入登记表数据存储:存储在外部人员出入登记表中(3)、数据项:访问对象数据类型:char(8)处理过程:由宿舍管理员实时录入到外部人员出入登记表数据存储:存储在外部人员出入登记表(4)、数据项:离开时间数据类型:char(8)处理过程:由宿舍管理员实时录入到外部人员出入登记表数据存储:存储在外部人员出入登记表(5)、数据项:外部出入人员数据类型:char()处理过程:由宿舍管理员实时录入到外部人员出入登记表数据存储:存储在外部人员出入登记表(6)、数据项:外部出入人员ID号数据类型:char(20)处理过程:由宿舍管理员实时录入到外部人员出入登记表中数据存储:存储在外部人员出入登记表中43大物品出入登记表中的数据项有:(1)、数据项:物品名数据类型:char(8)处理过程:由宿舍管理员实时观察实时录入到系统数据存储:存储在大物品出入登记表中(2)、数据项:进入时间数据类型:char(8)处理过程:由宿舍管理员实时观察实时录入到系统数据存储:存储在大物品出入登记表中(3)、数据项:离开时间数据类型:char(8)处理过程:由宿舍管理员实时观察实时录入到系统数据存储:存储在大物品出入登记表中(4)、数据项:携带者学号数据类型:char(8)处理过程:由宿舍管理员实时观察实时录入到系统数据存储:存储在大物品出入登记表中(5)、数据项:携带者宿舍号数据类型:char(8)处理过程:由宿舍管理员实时观察实时录入到系统数据存储:存储在大物品出入登记表中(6)、数据项:物品序列号数据类型:char(8)处理过程:由宿舍管理员按预定的标准生成数据存储:存储在大物品出入登记表中44电费管理表中的数据项有:(1)、数据项:购电时间数据类型:char(8)处理过程:由宿舍管理员实时录入到系统数据存储:存储在电费管理表中(2)、数据项:强开时间数据类型:char(8)处理过程:由宿舍管理员实时录入到系统数据存储:存储在电费管理表中(3)、数据项:强开次数数据类型:char(4)处理过程:由宿舍管理员实时录入到系统数据存储:存储在电费管理表中(4)、数据项:购电数量数据类型:char(6)处理过程:由宿舍管理员实时录入到系统数据存储:存储在电费管理表中(5)、数据项:剩余电量数据类型:char(6)处理过程:由宿舍管理员实时录入到系统数据存储:存储在电费管理表中(6)、数据项:电费单价数据类型:char(6)处理过程:由宿舍管理员实时录入到系统数据存储:存储在电费管理表中(7)、数据项:购电者学号数据类型:char(8)处理过程:由宿舍管理员实时录入到系统数据存储:存储在电费管理表中(8)、数据项:序列号数据类型:char(8)处理过程:由系统自动生成数据存储:存储在电费管理表中45报修管理表中用到的数据项有:(1)、数据项:报修人数据类型:char(8)处理过程:由学生录入到系统中数据存储:存储在报修管理表中(2)、数据项:宿舍号数据类型:char(6)处理过程:由学生录入到系统中数据存储:存储在报修管理表中(3)、数据项:报修时间数据类型:char(8)处理过程:由学生录入到系统中数据存储:存储在报修管理表中(4)、数据项:报修物件名数据类型:char(8)处理过程:由学生录入到系统中数据存储:存储在报修管理表中(5)、数据项:维修时间数据类型:char(8)处理过程:由学生录入到系统中,再由宿舍管理员确认并安排维修人员数据存储:存储在报修管理表中(6)、数据项:维修人数据类型:char(6)处理过程:由宿舍管理员确认并安排维修人员数据存储:存储在报修管理表中(7)、数据项:报修序列号数据类型:char(8)处理过程:由系统自动生成数据存储:存储在报修管理表中46宿舍管理员基本信息表中要用到的数据项有:(1)、数据项:工作编号数据类型:char(8)处理过程:由老师输入到系统中,老师、管理员、学生都可查询相关信息数据存储:存储在宿舍管理员基本信息表中(2)、数据项:数据类型:char(8)处理过程:由老师输入到系统中,老师、管理员、学生都可查询相关信息数据存储:存储在宿舍管理员基本信息表中(3)、数据项:工作类型数据类型:char(8)处理过程:由老师输入到系统中,老师、管理员、学生都可查询相关信息数据存储:存储在宿舍管理员基本信息表中(4)、数据项:性别数据类型:char(2)处理过程:由老师输入到系统中,老师、管理员、学生都可查询相关信息数据存储:存储在宿舍管理员基本信息表中(5)、数据项:联系方式数据类型:char(15)处理过程:由老师输入到系统中,老师、管理员、学生都可查询相关信息数据存储:存储在宿舍管理员基本信息表中(6)、数据项:工作时间数据类型:char(30)处理过程:由老师输入到系统中,老师、管理员、学生都可查询相关信息数据存储:存储在宿舍管理员基本信息表中47宿舍违规信息管理表中要用到的数据项有:(1)、数据项:违规宿舍号数据类型:char(6)处理过程:由宿舍管理员录入到系统数据存储:存储在宿舍违规信息管理表中(2)、数据项:违规人学号数据类型:char(8)处理过程:由宿舍管理员录入到系统数据存储:存储在宿舍违规信息管理表中 (3)、数据项:违规次数数据类型:char()处理过程:由宿舍管理员录入到系统数据存储:存储在宿舍违规信息管理表中48宿舍基本信息管理表中包含的数据项有:(1)、数据项:入住人数数据类型:char(2)处理过程:由宿舍管理员实地查看、根据老师提供的信息如实录入到系统中数据存储:存储在宿舍基本信息管理表中(2)、数据项:住宿人学号数据类型:char(8)处理过程:由宿舍管理员实地查看、根据老师提供的信息如实录入到系统中数据存储:存储在宿舍基本信息管理表中(3)、数据项:住宿人名字数据类型:char()处理过程:由宿舍管理员实地查看、根据老师提供的信息如实录入到系统中数据存储:存储在宿舍基本信息管理表中(4)、数据项:宿舍号数据类型:char(6)处理过程:由宿舍管理员实地查看、根据老师提供的信息如实录入到系统中数据存储:存储在宿舍基本信息管理表中(5)、数据项:凳子数量数据类型:char(2)处理过程:由宿舍管理员实地查看、根据老师提供的信息如实录入到系统中数据存储:存储在宿舍基本信息管理表中(6)、数据项:桌子数量数据类型:char(2)处理过程:由宿舍管理员实地查看、根据老师提供的信息如实录入到系统中数据存储:存储在宿舍基本信息管理表中(7)、数据项:电脑数量数据类型:char(2)处理过程:由宿舍管理员实地查看、根据老师提供的信息如实录入到系统中数据存储:存储在宿舍基本信息管理表中(8)、数据项:电视数量数据类型:char(2)处理过程:由宿舍管理员实地查看、根据老师提供的信息如实录入到系统中数据存储:存储在宿舍基本信息管理表中5、系统功能结构图:如图1-1添加查询修改报修管理用户外部人员出入管理学生信息管理宿舍居住信息宿管信息管理大物品出入登记表添加显示全部信息删除按条件查找显示全部信息删除查看强开次数进入界面电费管理添加添加显示全部删除按条件查找插入显示全部删除修改插入显示全部删除宿舍查找违规管理查看添加修改删除 图1-1 系统结构图6、数据流图第0层数据流图如图1-2: 数据流图1-2第一层数据流图如图1-3: 数据流图1-3二、概念设计 1、专业生日性别籍贯班级学号宿舍号违规次数院系入学时间分E-R图: (1)实体学生的E_R图如图2-1所示: 学生 图2-1 实体学生的E_R图凳子数量入住人数电脑数量学生学号宿舍号 宿舍桌子数量专业(2)、实体宿舍的E_R图如图2-2所示:姓名 图2-2 实体宿舍的E_R图(3)、实体管理员的E_R图如图2-3所示:工作编号姓名工作时间管理员工作方式联系方式性别 图2-3实体管理员的E_R图(4)、实体外部人员的E_R图如图2-4所示:ID号进入时间访问宿舍号外部人员离开时间人员姓名访问对象 图2-4实体外部人员的E_R图(5)、实体大物品的E_R图如图2-5所示:物品编号物品名离开时间进入时间大物品宿舍号携带者姓名图2-5实体大物品的E_R图2、合E-R图系统的合E-R图如图2-6所示:ID号学生宿舍楼管宿舍楼入住1组成m1管理1n出入外部人员出入大物品mnmnm电费缴纳物品编号物品名宿舍号学号班级宿舍号楼号工作编号姓名联系方式图2-6 系统的合E-R图三、逻辑结构设计根据分E-R图和合E-R图的关系将E-R图转换为如下的关系模型,关系的码用下横线标出:1、学生信息表(学号、院系、性别、籍贯、生日、入学时间、所学专业、所在班级、所在宿舍号、违规记录)2、外部人员出入登记表(进入时间、访问宿舍号、访问对象、离开时间、人员名字、ID号等数据)3、大物品出入登记表(物品编号、物品名、进入时间、离开时间、携带者、携带者宿舍号等数据)4、电费管理表(购电序列号、购电时间、强开时间、强开次数、购电数量等、剩余电量、电费单价、购电者学号等数据)5、报修管理表(报修序列号、报修人、宿舍号、报修时间、报修物件名、维修人、维修时间)6、宿舍管理员基本信息表(工作编号、工作类型、性别、联系方式、工作时间)7、宿舍违规信息管理表(违规宿舍号、违规人学号、违规次数)8、宿舍基本信息管理表(入住人数、住宿人学号、住宿人名字、宿舍号、凳子数量、桌子数量、电脑数量、电视数量)四、数据库的实现1、表的建立 1、1创建学生信息管理表createtable 学生信息管理表( 学号char(8)primarykey, 院系char(20),char(10), 性别char(2), 籍贯char(10), 生日datetime, 入学时间datetime, 所学专业char(20), 所在班级char(20), 所在宿舍号char(8), 违规次数记录char(6);1、2创建外部人员出入登记表createtable 外部人员出入登记表( ID号char(20)primarykey, 进入时间datetime, 访问宿舍号char(20), 访问对象名字char(6), 离开时间datetime, 人员 char(6);1、3创建大物品出入登记表createtable 大物品出入登记表( 物品编号char(20)primarykey, 物品名char(10), 进入时间datetime, 离开时间datetime, 携带者char(8), 携带者宿舍号char(6);1、4创建电费管理表createtable 电费管理表( 购电序列号char(20)primarykey, 购电时间datetime, 强开时间datetime, 强开次数char(10), 购电数量char(4), 剩余电量char(4), 电费单价char(4), 购电者学号char(8);1、5 报修管理表createtable 报修管理表( 报修序列号char(20)primarykey, 报修人char(8), 宿舍号char(4), 报修时间datetime, 报修物件名char(6), 维修人char(8), 维修时间datetime);1、6创建宿舍管理员基本信息表createtable 宿舍管理员基本信息表( 工作编号char(10)primarykey,char(10), 工作类型char(20), 性别char(10), 联系方式char(12), 工作时间char(20);1、7创建宿舍违规信息管理表createtable 宿舍违规信息管理表( 违规宿舍号char(4), 违规人学号char(20)primarykey, 违规次数char(20);1、8创建宿舍基本信息管理表createtable 宿舍基本信息管理表( 入住人数char(10), 住宿人一学号char(10), 住宿人一char(10), 住宿人二学号char(10), 住宿人二char(10), 住宿人三学号char(10), 住宿人三char(10), 住宿人四学号char(10), 住宿人四char(10), 宿舍号char(20)primarykey, 凳子数量char(20), 桌子数量char(20), 电脑数量char(20), 电视数量char(20);2、数据的插入-1、向学生信息管理表中插入数据insertinto 学生信息管理表values('10201307','软件学院','胡保呈','男','','1990-6-12','2010-8-29','软件工程','102013','329','0');insertinto 学生信息管理表values('10201314','软件学院','文斌','男','','1991-6-20','2010-8-29','软件工程','102013','332','0');insertinto 学生信息管理表values('10012126','材料学院','廖荣华','男','','1991-6-12','2010-8-29','金属材料','100121','505','0');insertinto 学生信息管理表values('10081426','测光学院','王绪文','男','','1990-4-23','2010-8-29','无损检测','100814','723','0');insertinto 学生信息管理表values('10095226','经管学院','文涛','男','','1991-6-12','2010-8-29','会计','100952','315','1');insertinto 学生信息管理表values('10201326','软件学院','何成健','男','','1990-6-12','2010-8-29','软件工程','102013','334','0');insertinto 学生信息管理表values('10201329','软件学院','曾其昌','男','','1990-6-12','2010-8-29','软件工程','102013','334','0');-2、向外部人员出入登记表中插入数据insertinto 外部人员出入登记表values('8','2012-6-21 8:21:12','334','何成健','2012-6-21 10 :21:23','三');insertinto 外部人员出入登记表values('1','2012-5-23 9:12:30','329','王少平','2012-5-23 10 :21:59','四');insertinto 外部人员出入登记表values('8','2010-7-21 12:21:12','419','嵘','2010-7-21 15 :21:23','王五');insertinto 外部人员出入登记表values('9','2011-8-21 8:10:12','334','曾其昌','2011-8-21 10 :21:23','王平');insertinto 外部人员出入登记表values('89','2011-8-21 8:10:12','334','肖明','2011-8-21 10 :21:23','肖峰');-3、向大物品出入登记表中插入数据insertinto 大物品出入登记表values('','电脑','2012-07-27 10:12:00','2012-08-25 12:10:00','何成健','334');insertinto 大物品出入登记表values('','被子','2012-06-19 12:12:00','2012-06-21 12:10:00','文斌','332');insertinto 大物品出入登记表values('','电脑','2012-06-20 10:12:00','2012-08-25 12:10:00','嵘','419');insertinto 大物品出入登记表values('','凳子','2012-07-27 10:12:00','2012-08-25 12:10:00','小明','332');-4、向电费管理表中插入数据insertinto 电费管理表values('2','2010-08-29 10:13:12','2010-08-28','1','16','-5','0.6','10201326');insertinto 电费管理表values('9','2010-07-29 10:13:12','2010-07-28','2','20','0','0.6','10201314');insertinto 电费管理表values('9','2010-09-21 13:13:12','2010-09-20','0','30','-1','0.6','10201308');insertinto 电费管理表values('0','2010-09-21 13:13:12','2010-09-20','3','50','-1','0.6','10201309');-5、向报修管理表中插入数据insertinto 报修管理表values('2','何成健','334','2010-08-29 10:15:12','防盗门','须海','2010-08-30 12:10:00');insertinto 报修管理表values('4','曾其昌','334','2010-09-15 10:15:12','洗漱池','王少平','2010-09-30 12:10:00');insertinto 报修管理表values('4','胡保呈','329','2010-10-08 10:15:12','水龙头','嵘','2010-10-30 12:10:00');insertinto 报修管理表values('8','曾峰','329','2010-10-08 10:15:12','桌子','方天华','2010-10-30 12:10:00');insertinto 报修管理表values('9','娜','329','2010-10-08 10:15:12','电脑','丽','2010-10-30 12:10:00');-6、向宿舍管理员基本信息表中插入数据insertinto 宿舍管理员基本信息表values('0820002','林华','宿管','男','','08:00:00-21:00');insertinto 宿舍管理员基本信息表values('0819010','大风','楼长','男','','21:00:00-08:00:00');insertinto 宿舍管理员基本信息表values('0821010','王静','宿管','女','','21:00:00-08:00:00');insertinto 宿舍管理员基本信息表values('0821013','娜','宿管','女','8','21:00:00-08:00:00');insertinto 宿舍管理员基本信息表values('1021010','王西','宿管','女','','21:00:00-08:00:00');-7、向宿舍违规信息表中插入数据insertinto 宿舍违规信息管理表values('329','10201307','1');insertinto 宿舍违规信息管理表values('334','10201326','1');insertinto 宿舍违规信息管理表values('332','10201314','1');insertinto 宿舍违规信息管理表values('330','10201315','2');insertinto 宿舍违规信息管理表values('723','10201320','0');-8、向宿舍基本信息管理表中插入数据insertinto 宿舍基本信息管理表values('4','10201326','何成健','10201328','须海','10201329','曾其昌','10201330','嵘','334','4','2','4','1');insertinto 宿舍基本信息管理表values('2','10012105','廖荣华','10095208','文涛','','','','','329','4','2','4','1');insertinto 宿舍基本信息管理表values('1','10081426','王绪文','','','','','','','723','4','2','4','1');insertinto 宿舍基本信息管理表values('4','10012126','廖荣华','10081426','王绪文','10095226','文涛','10201330','嵘','711','4','2','4','1');3、建立触发器createtrigger insert_or_updateon 学生信息管理表forupdateasDeclare num char(20),no char(10)select num=违规次数记录,no=学号from insertedupdate 宿舍违规信息管理表set 违规次数=numwhere 违规人学号=noreturncreatetrigger insert_or_updaton 学生信息管理表forinsertasDeclare num char(20),no char(10),宿舍号char(10)select num=违规次数记录,no=学号,宿舍号=所在宿舍号from insertedinsertinto 宿舍违规信息管理表values(宿舍号,no,num)return4、建立存储过程-创建查询学生信息存储过程createprocedure 查询学生信息存储过程asselect*from 学生信息管理表goexecute 查询学生信息存储过程-创建插入学生信息存储过程createprocedure 插入学生信息存储过程(学号char(20),院系char(20),char(20),性别char(20),籍贯char(20),生日char(20),入学时间datetime,所学专业char(20),所在班级char(20),所在宿舍号char(20),违规次数记录char(20)asinsertinto 学生信息管理表values(学号,院系,性别,籍贯,生日,入学时间,所学专业,所在班级,所在宿舍号,违规次数记录)goexecute 插入学生信息存储过程学号='10201336',院系='软件学院',='云',性别='女',籍贯='',生日='19000821',入学时间='2010-08-23',所学专业='教育技术学',所在班级='102013',所在宿舍号='723',违规次数记录='2'-统计软件学院总人数createprocedure 统计软件学院总人数(学院char(20),总人数intoutput)asselect 总人数=count(学号)from 学生信息管理表where 院系=学院declare 总人数int;exec 统计软件学院总人数'软件学院', 总人数outputselect 总人数5、建立索引-在学生信息管理表中创建学号索引createuniqueindex 学号索引on 学生信息管理表(学号desc);-在宿舍基本信息管理表中创建宿舍号索引createuniqueindex 宿舍号索引on 宿舍基本信息管理表(宿舍号desc);-在电费管理表中创建学号索引crea