ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:442.41KB ,
资源ID:5394901      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5394901.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据库课程设计学生宿舍管理系统.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据库课程设计学生宿舍管理系统.docx

1、数据库课程设计学生宿舍管理系统学生宿舍管理系统课程设计摘要:学生宿舍管理系统是应对学生宿舍管理的现代化、网络化,逐步摆脱当前学生宿舍管理的人工管理方式,提高学生宿舍管理效率而开发的,它包括宿舍学生基本信息管理、楼道工人基本信息管理、宿舍楼基本信息管理、宿舍基本信息管理、宿舍事故基本信息管理、宿舍楼物品出入基本信息管理、宿舍楼保卫处基本信息管理、宿舍配备物品及处理管理等八大功能模块,并提供了对各功能模块的查询和更新功能,且这两种功能基本上是通过存储过程来实现的,其中宿舍学生基本信息管理、宿舍基本信息管理是系统开发的重点。该系统开发由系统需求分析、概念设计、逻辑设计、数据库实施、系统调试和测试阶段

2、组成。1、概述:旧的手工纪录的宿舍管理方式已经不能适应高速发展的信息化时代,新的宿舍管理系统开发出来之后,学校的现有的宿舍信息管理将有很大的改观,由过去的人工方式转变为计算机方式,由效率低、数据冗余、易产生错误转变为检索迅速、查找方便、可靠性高、存储量大。这些优点能够极大地提高效率,也是学校科学化、正规化管理的重要条件。学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库的存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。2、

3、课程设计的需求分析2.1、设计任务:学生宿舍是同学最为熟悉的领域,假定学校有多栋宿舍楼,每栋楼有多层,每层有多个寝室,每个寝室可住多名学生,学生宿舍管理系统对学校的学生宿舍进行规范管理,其管理的对象如下:宿舍信息:编号、楼层、床位数、单价等。学生:学号、姓名、性别、年龄、所在院系、年级、电话等。每个宿舍最多可以住4位同学,每个同学只能在一个宿舍,不同宿舍的费用标准可以不同。不同院系、年级的同学可以住同一间宿舍。2.1、设计要求:系统要能够对宿舍、学生、住宿信息进行登记、调整,并能随时进行各种查询、统计等处理。包括:寝室分配:根据院系、年级分配寝室。学生管理:实现入住学生信息的登记、维护和查询功

4、能。信息查询:按公寓楼号、学生姓名等查询住宿信息。出入登记(可选):对学生进出公寓的情况进行登记、实现基本的出入监控功能 3、概念结构设计3.1、概念结构设计工具(E-R模型)3.2、入住登记子系统(局部)3.2.1、子系统描述主要是学生入住的管理,包括学生入住的申请,查询是否存在该学生,查询是否有空余的宿舍以及宿舍的分配3.2.2、分E-R图3.2.3、说明可以通过这个系统来解决学生入住的申请和分配等各种问题3.3、外出登记子系统3.3.1、子系统描述主要是学生外出的管理问题,包括学生外出的申请,外出的审核,外出的等级等为题。3.3.2、分E-R图3.3.3、说明可以通过这个系统解决学生外出

5、的登记的各种问题。3.4、调整宿舍子系统3.4.1、子系统描述主要是学生宿舍的调整,宿舍表的更新问题。3.4.2、分E-R图3.4.3、说明可以通过这个系统解决学生宿舍的调整问题,包括宿舍的申请调整,调整原因的判断以及调整后宿舍表的更新问题。3.5、宿舍智能分配子系统3.5.1、子系统描述主要是学生宿舍的分配问题。3.5.2、分E-R图3.5.3、说明可以通过这个子系统来分配学生的宿舍,包括按学院分配以及按年级分配。3.6、信息查询子系统3.6.1、子系统描述主要是查询学生宿舍的问题。3.6.2、分E-R图3.6.3、说明可以通过子系统来查询学生的宿舍包括按公寓查询以及按学生名字查询。3.7、

6、总体E-R图4、逻辑结构设计4.1、关系数据模式4.1.1、学生信息(stu_info)字段描述数据类型数据长度NULLPrimarykey 约束Stu_num学号IntNYname姓名varchar12NNsex性别varchar4NN男/女age年龄intNN0-99fac所在学院varchar50NNclass所在班级varchar50NNcelphone电话varchar16NNEntry_date入学日期dateNN4.1.2、宿舍信息(dorm_info)字段描述数据类型数据长度NULLPrimarykey 约束dorm_num宿舍编号intNYflo所在楼层intNN0-20Ba

7、d_amount床位数IntNN=4Avi_bad可用床位数IntYN=4unit_price单价floatNN4.1.3、出入信息(inout_info)字段描述数据类型数据长度NULLPrimarykey 约束stu_num学号intNforeignkeydorm_num所住宿舍intNforeignkeyleft_time离开时间DatetimeNNback_time回来时间DatetimeNNreason离开原因varchar50NNover_time是否晚归varchar2NN是/否4.1.4、入住信息(stay_info)字段描述数据类型数据长度NULLPrimarykey 约束d

8、orm_num宿舍编号intNforeignkeystu_num学号intNforeignkeyHave_in已住人数intNN=4in_date入住日期dateNN4.1.5、调整信息字段描述数据类型数据长度NULLPrimarykey 约束stu_num学号intNYsrc原宿舍intNNdst调后宿舍intNNch_date调整日期dateNNch_reason调整原因varchar50NN4.2视图的设计4.2.1宿舍信息表视图创建查看宿舍信息表的视图,其中应该包含宿舍的所有信息。并且应该按可用床位数递减create view view_dormASSELECT top 100 dor

9、m_num,flo ,bad_amount ,unit_price,avi_bad FROM dorm_info order by avi_bad desc创建按宿舍号查看住宿信息的视图,其中应包含住宿登记时的所有信息,并且按照宿舍号递减排列create view view_stay_bydormASSELECT top 100 dorm_num, stu_num, have_in, in_dateFROM stay_info order by dorm_num desc创建按学号查看住宿信息的视图,其中应包含住宿登记时的所有信息,并且按照宿舍号递减排列create view view_sta

10、y_bystuASSELECT top 100 dorm_num, stu_num, have_in, in_dateFROM stay_info order by stu_num desc创建查看出入信息的视图,其中应包含出入登记时的所有信息,并且按照离开时间递减排列create view view_io_infoasSELECT top 100 stu_num, dorm_num, left_time, back_time, reason, over_timeFROM dbo.inout_info order by left_time5、数据库物理设计与实施5.1、数据库应用的硬件、软件环

11、境介绍电脑配置为AMD Athlon(速龙) II X2 260 双核 处理器,2G内存,Windows XP 专业版 32位 SP3 ( DirectX 9.0c )操作系统,安装mysql 数据库服务做测试。5.2、物理结构设计考虑到索引能加快查询的速度,所以在需要经常进行查询的列创建索引。其中学生信息的学号、宿舍信息的宿舍编号、入住信息中学生的学号和宿舍的编号,这几个列都需要创建索引。由于前两项已经是主键,所以无需额外创建索引。现在为后两项创建索引。5.3、索引的设计为入住信息中学生的学号和宿舍的编号创建索引:create unique index入住信息中学生的学号 ix_stay_i

12、nfo1 on stay_info(stu_num)create index宿舍的编号 ix_stay_info2 on stay_info(dorm_num)5.4、建立数据库首先创建名为sdms的学生宿舍管理数据库 ,create database sdms. 5.4.1、创建宿舍信息表use sdmscreate table dorm_info(dorm_num int not null primary key,flo int not null,bad_amount int not null ,avi_bad int null ,unit_price float not null)并且创

13、建约束,使床位数和可用床位数不能大于4个,因为一个宿舍最多能住四个人,并且楼层数在0-20之间。alter table dorm_info add constraint ck_bad check(bad_amount=4)alter table dorm_info add constraint ck_avi check(avi_bad=0 and flo=0 and age=99)5.4.3、创建出人登记信息表create table inout_info( stu_num int not null references stu_info(stu_num) , dorm_num int not

14、 null references dorm_info(dorm_num) , left_time datetime not null, back_time datetime not null, reason varchar(50) not null, over_time varchar(2) not null)创建约束,是否晚归字段这能选择是或者否。alter table inout_info add constraint ck_ot check(over_time in (是,否)5.4.4、创建入住信息登记表create table stay_info(dorm_num int not n

15、ull references dorm_info(dorm_num),stu_num int not null references stu_info(stu_num),have_in int not null,in_date date)创建约束,已住人数不能超过4个.alter table stay_info add constraint ck_in check(have_in=4)5.4.5、创建宿舍调整登记表create table change_info ( stu_num int not null primary key, src int not null, dst int not

16、null, ch_date date not null, ch_reason varchar(50) not null )5.5、加载测试数据5.5.1、加载住宿信息创建一个存储过程用于录入住宿信息。USE sdmsGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE dbo.insert_stay_infodorm_num int ,stu_num int ,have_in intASBEGIN SET NOCOUNT ON; insert into stay_info values(dorm_num,stu_num,

17、have_in,GETDATE()END其中包括要住宿的宿舍号,要住宿的学生学号,该宿舍应经住了多少人。如图所示:单击确定后数据成功的录入到数据库的住宿信息表中,如图:学号为1104402302的学号已经插入到住宿信息表中。5.5.2、记载学生信息创建一个存储过程用于录入学生信息。USE sdmsGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE PROCEDURE dbo.insert_stu_infostu_num int,name varchar(12),sex varchar(4),fac varchar(50),class va

18、rchar(50),celphone varchar(16) ,age intASBEGIN SET NOCOUNT ON; insert into stu_info values(stu_num,name,sex,fac,class,celphone,GETDATE(),age)END其中包括要住宿的学号、姓名、性别、所在学院、班级、电话、年龄。如图所示:单击确定后数据成功的录入到数据库的学生信息表中,如图:学号为1104402304的学生已经成功录入到学生信息表中。5.5.3、加载宿舍信息创建一个存储过程用于录入宿舍信息。SET ANSI_NULLS ONGOSET QUOTED_IDEN

19、TIFIER ONGOCREATE PROCEDURE insert_dorm_infodorm_num int,flo int ,bad_amount int ,unit_price float,avi_bad intASBEGIN SET NOCOUNT ON; insert into dorm_info values(dorm_num,flo,bad_amount,unit_price,avi_bad)ENDGO其中包括要住宿的宿舍号、所在楼层、床位位数、单价、空余床位。如图所示:击确定后数据成功的录入到数据库的宿舍信息表中,如图:6、数据操作与实现根据需求中给出的数据处理要求,设计访问

20、数据库的具体要求,并用SQL语言加以实现。运行SQL语句进行测试。6.1、数据查询操作创建存储过程view_dorm_bydrom,实现按公寓查找宿舍的住宿信息。CREATE PROCEDURE view_dorm_bydromdorm_num int /定义变量用于等待用户输入宿舍号 ASBEGIN SET NOCOUNT ON; SELECT * from dorm_info where dorm_num=dorm_num /查询出与输入宿舍号相符的结果END结果如图:单击确定后:创建存储过程view_dorm_bystu,实现按学号查询学生的住宿信息。CREATE PROCEDURE v

21、iew_dorm_bystustu_num intASBEGIN SET NOCOUNT ON; SELECT * from stay_info where stu_num=stu_numEND执行存储过程结果如图所示:单击“确定”,显示出学生在哪个宿舍住,该宿舍住着几个人,什么时候入住6.2、数据更新操作宿舍调整登记。创建一个存储过程用于登记个别学生调整宿舍的记录。同时跟新原来的住宿信息表,使得调整后学生的宿舍信息表能同步进行。这里避免创建触发器的繁杂,只使用了更新的语句。CREATE PROCEDURE change_dormstu_num int ,dst_dorm int,reason

22、 varchar(50)ASBEGIN SET NOCOUNT ON; declare cur1 cursor for SELECT dorm_num from stay_info where stu_num=stu_num -查询需要调整的人员的原来住的宿舍 open cur1 declare src int -声明游标以获取查询结果 fetch cur1 into src insert into change_info(stu_num,src,dst,ch_date,ch_reason) values(stu_num,src,dst_dorm,GETDATE(),reason)update

23、 stay_info set dorm_num=dst_dorm where stu_num=stu_num-将调整的信息插入到调整登记信息表中 close cur1 END执行存储过程如下:需要登记的信息成功录入到调整信息表中原住宿信息表数据。调整宿舍后:6.3、数据维护操作6.3.1同步更新触发器是系统使用过程中,需要使用一个触发器来同步信息。例如当有学生要住宿时,该宿舍已住人数要增加1,而宿舍信息中的相应空余床位数要减1。所以在住宿登记表中使用以下触发器。SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TRIGGER tri1 ON

24、 stay_info AFTER INSERTAS BEGIN SET NOCOUNT ON; declare dorm_num int,have_in int declare cur2 cursor for select dorm_num ,have_in from stay_info open cur2 fetch cur2 while(FETCH_STATUS-1) begin fetch next from cur2 into dorm_num,have_in update stay_info set have_in=(have_in+1) where dorm_num=dorm_nu

25、m -更新相应宿舍的已住人数,增加1. update dorm_info set avi_bad=(select avi_bad from dorm_info where dorm_num=dorm_num)-1) where dorm_num=dorm_num -更新宿舍信息表中的可用床位数(空余床位数) end close cur2ENDGO执行登记住宿信息表的存储过程插入前:插入后:6.3.2、按学院分配宿舍存储过程创建一个存储过程,用于按学院分配宿舍。使得能按同学院的学生能尽量的在同一宿舍住。USE sdmsGOSET ANSI_NULLS ONGOSET QUOTED_IDENTIF

26、IER ONGOCREATE PROCEDURE dbo.allowdorm_byfac fac varchar(20)ASBEGIN declare offset int,bad_amount int,sum int set offset=1 set bad_amount=1 set sum=(select distinct(stu_num) from stu_info where fac=fac) while(sum0) begin declare stu_num int,dorm_num int set stu_num=(SELECT top (bad_amount) stu_num f

27、rom stu_info where fac=fac and stu_num not in(select top (offset) stu_num from stu_info where fac=fac) set dorm_num=(select dorm_num from dorm_info where avi_bad=4) insert into stay_info values(dorm_num,stu_num,4,GETDATE() set sum=sum-1 endEND 执行存储过程,如图:7、收获、体会和建议做课程设计的这段时间来学到了很多东西,以前对SQL,只会照着书上的SQL语句写,没有对以前的知识进行系统的了解,没有把各个部分知识结合在一起。通过做这次课程设计,我对数据库设计的各个方面都加深了理解,只有数据流程图

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1