收藏 分销(赏)

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

上传人:人****来 文档编号:3991363 上传时间:2024-07-24 格式:DOC 页数:23 大小:131.54KB 下载积分:10 金币
下载 相关 举报
数据库课程设计--学生宿舍管理系统.doc_第1页
第1页 / 共23页
数据库课程设计--学生宿舍管理系统.doc_第2页
第2页 / 共23页


点击查看更多>>
资源描述
学生宿舍管理系统课程设计 摘要: 学生宿舍管理系统是应对学生宿舍管理的现代化、网络化,逐步摆脱当前学生宿舍管理的人工管理方式,提高学生宿舍管理效率而开发的,它包括宿舍学生基本信息管理、楼道工人基本信息管理、宿舍楼基本信息管理、宿舍基本信息管理、宿舍事故基本信息管理、宿舍楼物品出入基本信息管理、宿舍楼保卫处基本信息管理、宿舍配备物品及处理管理等八大功能模块,并提供了对各功能模块的查询和更新功能,且这两种功能基本上是通过存储过程来实现的,其中宿舍学生基本信息管理、宿舍基本信息管理是系统开发的重点. 该系统开发由系统需求分析、概念设计、逻辑设计、数据库实施、系统调试和测试阶段组成. 目录 1、概述:1 2、课程设计的需求分析1 2.1、设计任务:1 2。1、设计要求:2 3、概念结构设计3 3.1、概念结构设计工具(E—R模型)3 3。2、入住登记子系统(局部)3 3。2。1、子系统描述3 3.2。2、分E—R图4 3。2。3、说明4 3。3、外出登记子系统4 3。3.1、子系统描述4 3。3。2、分E-R图5 3。3。3、说明5 3。4、调整宿舍子系统5 3.4。1、子系统描述5 3。4.2、分E-R图6 3。4.3、说明6 3。5、宿舍智能分配子系统6 3.5。1、子系统描述6 3.5.2、分E—R图7 3。5。3、说明7 3。6、信息查询子系统7 3.6。1、子系统描述7 3。6。2、分E—R图7 3。6。3、说明8 3。7、总体E—R图8 4、逻辑结构设计9 4。1、关系数据模式9 4.1。1、学生信息(stu_info)9 4。1.2、宿舍信息(dorm_info)9 4。1.3、出入信息(inout_info)9 4。1。4、入住信息(stay_info)10 4。1。5、调整信息10 4.2视图的设计10 4。2.1宿舍信息表视图10 5、数据库物理设计与实施12 5.1、数据库应用的硬件、软件环境介绍12 5.2、物理结构设计12 5。3、索引的设计12 5。4、建立数据库13 5。4.1、创建宿舍信息表13 5。4。2、创建学生信息表14 5.4.3、创建出人登记信息表14 5。4.4、创建入住信息登记表15 5。4.5、创建宿舍调整登记表16 5。5、加载测试数据16 5。5。1、加载住宿信息16 5.5.2、记载学生信息17 5。5.3、加载宿舍信息19 6、数据操作与实现20 6.1、数据查询操作21 6.2、数据更新操作22 6。3、数据维护操作24 6。3。1同步更新触发器24 6。3.2、按学院分配宿舍存储过程26 7、收获、体会和建议28 8、主要参考文献。29 备注29 任务分配29 1、概述: 旧的手工纪录的宿舍管理方式已经不能适应高速发展的信息化时代,新的宿舍管理系统开发出来之后,学校的现有的宿舍信息管理将有很大的改观,由过去的人工方式转变为计算机方式,由效率低、数据冗余、易产生错误转变为检索迅速、查找方便、可靠性高、存储量大.这些优点能够极大地提高效率,也是学校科学化、正规化管理的重要条件.学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库的存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。 2、课程设计的需求分析 2.1、设计任务: 学生宿舍是同学最为熟悉的领域,假定学校有多栋宿舍楼,每栋楼有多层,每层有多个寝室,每个寝室可住多名学生,学生宿舍管理系统对学校的学生宿舍进行规范管理,其管理的对象如下: ·宿舍信息:编号、楼层、床位数、单价等。 ·学生:学号、姓名、性别、年龄、所在院系、年级、电话等。 每个宿舍最多可以住4位同学,每个同学只能在一个宿舍,不同宿舍的费用标准可以不同.不同院系、年级的同学可以住同一间宿舍。 2.1、设计要求: 系统要能够对宿舍、学生、住宿信息进行登记、调整,并能随时进行各种查询、统计等处理。包括: ·寝室分配:根据院系、年级分配寝室. ·学生管理:实现入住学生信息的登记、维护和查询功能. ·信息查询:按公寓楼号、学生姓名等查询住宿信息。 ·出入登记(可选):对学生进出公寓的情况进行登记、实现基本的出入监控功能 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、说明 可以通过这个系统解决学生外出的登记的各种问题。 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、总体E—R图 4、逻辑结构设计 4。1、关系数据模式 4。1。1、学生信息(stu_info) 字段 描述 数据类型 数据长度 NULL Primarykey 约束 Stu_num 学号 Int N Y name 姓名 varchar 12 N N sex 性别 varchar 4 N N 男/女 age 年龄 int N N 0—99 fac 所在学院 varchar 50 N N class 所在班级 varchar 50 N N celphone 电话 varchar 16 N N Entry_date 入学日期 date N N 4.1。2、宿舍信息(dorm_info) 字段 描述 数据类型 数据长度 NULL Primarykey 约束 dorm_num 宿舍编号 int N Y flo 所在楼层 int N N 0—20 Bad_amount 床位数 Int N N 〈=4 Avi_bad 可用床位数 Int Y N 〈=4 unit_price 单价 float N N 4。1.3、出入信息(inout_info) 字段 描述 数据类型 数据长度 NULL Primarykey 约束 stu_num 学号 int N foreignkey dorm_num 所住宿舍 int N foreignkey left_time 离开时间 Datetime N N back_time 回来时间 Datetime N N reason 离开原因 varchar 50 N N over_time 是否晚归 varchar 2 N N 是/否 4。1。4、入住信息(stay_info) 字段 描述 数据类型 数据长度 NULL Primarykey 约束 dorm_num 宿舍编号 int N foreignkey stu_num 学号 int N foreignkey Have_in 已住人数 int N N 〈=4 in_date 入住日期 date N N 4。1。5、调整信息 字段 描述 数据类型 数据长度 NULL Primarykey 约束 stu_num 学号 int N Y src 原宿舍 int N N dst 调后宿舍 int N N ch_date 调整日期 date N N ch_reason 调整原因 varchar 50 N N 4。2视图的设计 4。2。1宿舍信息表视图 创建查看宿舍信息表的视图,其中应该包含宿舍的所有信息。并且应该按可用床位数递减 createviewview_dorm AS SELECTtop 100 [dorm_num],[flo],[bad_amount],[unit_price],[avi_bad] FROMdorm_infoorderbyavi_baddesc 创建按宿舍号查看住宿信息的视图,其中应包含住宿登记时的所有信息,并且按照宿舍号递减排列 createviewview_stay_bydorm AS SELECTtop 100 dorm_num,stu_num,have_in,in_date FROMstay_infoorderbydorm_numdesc 创建按学号查看住宿信息的视图,其中应包含住宿登记时的所有信息,并且按照宿舍号递减排列 createviewview_stay_bystu AS SELECTtop 100 dorm_num,stu_num,have_in,in_date FROMstay_infoorderbystu_numdesc 创建查看出入信息的视图,其中应包含出入登记时的所有信息,并且按照离开时间递减排列 createviewview_io_info as SELECTtop 100 stu_num,dorm_num,left_time,back_time,reason,over_time FROMdbo.inout_infoorderbyleft_time 5、数据库物理设计与实施 5。1、数据库应用的硬件、软件环境介绍 电脑配置为AMD Athlon(速龙) II X2 260 双核 处理器,2G内存,Windows XP 专业版 32位 SP3 ( DirectX 9。0c )操作系统,安装mysql 数据库服务做测试。 5。2、物理结构设计 考虑到索引能加快查询的速度,所以在需要经常进行查询的列创建索引。 其中学生信息的学号、宿舍信息的宿舍编号、入住信息中学生的学号和宿舍的编号,这几个列都需要创建索引。由于前两项已经是主键,所以无需额外创建索引。现在为后两项创建索引. 5.3、索引的设计 为入住信息中学生的学号和宿舍的编号创建索引: createuniqueindex入住信息中学生的学号ix_stay_info1onstay_info(stu_num) createindex宿舍的编号ix_stay_info2onstay_info(dorm_num) 5.4、建立数据库 首先创建名为sdms的学生宿舍管理数据库 ,createdatabasesdms。 5.4。1、创建宿舍信息表 usesdms createtabledorm_info( dorm_numintnotnullprimarykey, flointnotnull, bad_amountintnotnull, avi_badintnull, unit_pricefloatnotnull ) 并且创建约束,使床位数和可用床位数不能大于4个,因为一个宿舍最多能住四个人,并且楼层数在0—20之间。 altertabledorm_infoaddconstraintck_badcheck(bad_amount〈=4) altertabledorm_infoaddconstraintck_avicheck(avi_bad〈=4) altertabledorm_infoaddconstraintck_flocheck(flo〉=0 andflo〈=20) 5。4.2、创建学生信息表 createtablestu_info( stu_numintnotnullprimarykey, namevarchar(12)notnull, sexvarchar(4)notnull, age int not null, facvarchar(50)notnull, class varchar(50) not null, celphone varchar(16) not null, entry_date date not null ) 创建约束,性别只能是男或女 ,并且年龄只能在0—99之间 altertablestu_infoaddconstraintch_sexcheck(sexin('男’,'女')) ALTERTABLEstu_infoADDconstraintck_agecheck(age〉=0 andage〈=99) 5。4。3、创建出人登记信息表 createtableinout_info( stu_numintnotnullreferencesstu_info(stu_num), dorm_numintnotnullreferencesdorm_info(dorm_num), left_timedatetimenotnull, back_timedatetimenotnull, reasonvarchar(50)notnull, over_timevarchar(2)notnull ) 创建约束,是否晚归字段这能选择是或者否。 altertableinout_infoaddconstraintck_otcheck(over_timein('是’,’否')) 5.4.4、创建入住信息登记表 createtablestay_info( dorm_numintnotnullreferencesdorm_info(dorm_num), stu_numintnotnullreferencesstu_info(stu_num), have_inintnotnull, in_datedate ) 创建约束,已住人数不能超过4个. altertablestay_infoaddconstraintck_incheck(have_in〈=4) 5.4.5、创建宿舍调整登记表 createtablechange_info( stu_numintnotnullprimarykey, srcintnotnull, dstintnotnull, ch_datedatenotnull, ch_reasonvarchar(50)notnull ) 5。5、加载测试数据 5。5。1、加载住宿信息 创建一个存储过程用于录入住宿信息。 USE[sdms] GO SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO CREATEPROCEDURE[dbo]。[insert_stay_info] @dorm_numint,@stu_numint,@have_inint AS BEGIN SETNOCOUNTON; insertintostay_infovalues(@dorm_num,@stu_num,@have_in,GETDATE()) END 其中包括要住宿的宿舍号,要住宿的学生学号,该宿舍应经住了多少人。如图所示: 单击确定后数据成功的录入到数据库的住宿信息表中,如图: 学号为1104402302的学号已经插入到住宿信息表中。 5。5。2、记载学生信息 创建一个存储过程用于录入学生信息。 USE[sdms] GO SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO CREATEPROCEDURE[dbo]。[insert_stu_info] @stu_numint,@namevarchar(12),@sexvarchar(4),@facvarchar(50),@classvarchar(50),@celphonevarchar(16),@ageint AS BEGIN SETNOCOUNTON; insertintostu_infovalues(@stu_num,@name,@sex,@fac,@class,@celphone,GETDATE(),@age) END 其中包括要住宿的学号、姓名、性别、所在学院、班级、电话、年龄.如图所示: 单击确定后数据成功的录入到数据库的学生信息表中,如图: 学号为1104402304的学生已经成功录入到学生信息表中。 5。5。3、加载宿舍信息 创建一个存储过程用于录入宿舍信息. SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO CREATEPROCEDUREinsert_dorm_info @dorm_numint,@floint,@bad_amountint,@unit_pricefloat,@avi_badint AS BEGIN SETNOCOUNTON; insertintodorm_infovalues(@dorm_num,@flo,@bad_amount,@unit_price,@avi_bad) END GO 其中包括要住宿的宿舍号、所在楼层、床位位数、单价、空余床位。如图所示: 击确定后数据成功的录入到数据库的宿舍信息表中,如图: 6、数据操作与实现 根据需求中给出的数据处理要求,设计访问数据库的具体要求,并用SQL语言加以实现。运行SQL语句进行测试. 6。1、数据查询操作 创建存储过程view_dorm_bydrom,实现按公寓查找宿舍的住宿信息。 CREATEPROCEDUREview_dorm_bydrom @dorm_numint //定义变量用于等待用户输入宿舍号 AS BEGIN SETNOCOUNTON; SELECT*fromdorm_infowheredorm_num=@dorm_num //查询出与输入宿舍号相符的结果 END 结果如图: 单击确定后: 创建存储过程view_dorm_bystu,实现按学号查询学生的住宿信息。 CREATEPROCEDUREview_dorm_bystu @stu_numint AS BEGIN SETNOCOUNTON; SELECT*fromstay_infowherestu_num=@stu_num END 执行存储过程结果如图所示: 单击“确定",显示出学生在哪个宿舍住,该宿舍住着几个人,什么时候入住 6。2、数据更新操作 宿舍调整登记.创建一个存储过程用于登记个别学生调整宿舍的记录。同时跟新原来的住宿信息表,使得调整后学生的宿舍信息表能同步进行。这里避免创建触发器的繁杂,只使用了更新的语句。 CREATEPROCEDUREchange_dorm @stu_numint,@dst_dormint,@reasonvarchar(50) AS BEGIN SETNOCOUNTON; declarecur1cursorfor SELECTdorm_numfromstay_infowherestu_num=@stu_num -—查询需要调整的人员的原来住的宿舍 opencur1 declare@srcint —-声明游标以获取查询结果 fetchcur1into@src insertintochange_info(stu_num,src,dst,ch_date,ch_reason)values(@stu_num,@src,@dst_dorm,GETDATE(),@reason) updatestay_infosetdorm_num=@dst_dormwherestu_num=@stu_num -—将调整的信息插入到调整登记信息表中 closecur1 END 执行存储过程如下: 需要登记的信息成功录入到调整信息表中 原住宿信息表数据。 调整宿舍后: 6.3、数据维护操作 6。3.1同步更新触发器 是系统使用过程中,需要使用一个触发器来同步信息。例如当有学生要住宿时,该宿舍已住人数要增加1,而宿舍信息中的相应空余床位数要减1.所以在住宿登记表中使用以下触发器. SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO CREATETRIGGERtri1 ONstay_info AFTERINSERT AS BEGIN SETNOCOUNTON; declare@dorm_numint,@have_inint declarecur2cursorfor selectdorm_num,have_infromstay_info opencur2 fetchcur2 while(@@FETCH_STATUS<〉—1) begin fetchnextfromcur2into@dorm_num,@have_in updatestay_infosethave_in=(@have_in+1)wheredorm_num=@dorm_num ——更新相应宿舍的已住人数,增加1. updatedorm_infosetavi_bad=((selectavi_badfromdorm_infowheredorm_num=@dorm_num)—1)wheredorm_num=@dorm_num ——更新宿舍信息表中的可用床位数(空余床位数) end closecur2 END GO 执行登记住宿信息表的存储过程 插入前: 插入后: 6。3。2、按学院分配宿舍存储过程 创建一个存储过程,用于按学院分配宿舍。使得能按同学院的学生能尽量的在同一宿舍住。 USE[sdms] GO SETANSI_NULLSON GO SETQUOTED_IDENTIFIERON GO CREATEPROCEDURE[dbo].[allowdorm_byfac] @facvarchar(20) AS BEGIN declare@offsetint,@bad_amountint,@sumint set@offset=1 set@bad_amount=1 set@sum=(selectdistinct(stu_num)fromstu_infowherefac=@fac) while(@sum〉0) begin declare@stu_numint,@dorm_numint set@stu_num=(SELECTtop (@bad_amount)stu_numfromstu_infowherefac=@facandstu_numnotin(selecttop (@offset)stu_num fromstu_infowherefac=@fac)) set@dorm_num=(selectdorm_numfromdorm_infowhereavi_bad=4) insertintostay_infovalues(@dorm_num,@stu_num,4,GETDATE()) set@sum=@sum-1 end END 执行存储过程,如图: 7、收获、体会和建议 做课程设计的这段时间来学到了很多东西,以前对SQL,只会照着书上的SQL语句写,没有对以前的知识进行系统的了解,没有把各个部分知识结合在一起。通过做这次课程设计,我对数据库设计的各个方面都加深了理解,只有数据流程图和数字字典做好了,才能进行下面的E-R图设计,仔仔细细做才能不出问题.体会到把知识应用于实践是不容易的,学到了课本上没有的知识,只有实践才能找出自己的问题. 通过本次课程设计我对数据库的理解更加深刻了,清楚的认识了视图、索引、存储过程、触发器、一对多、多对多的设计模型。并且在这个宿舍管理设计中也都用上了。以前都只用mysql进行开发,虽然都支持标准的sql语句,但是在一些细节方面还是值得注意的,比如sql server 中独特的TOP语句就值得考量。在其他数据库中的LIMIT语句虽然更加强大,sql server也有他方便的地方.通过本次我合作自主的制作本作品对数据库有了一个很好的整体理解,虽然有不足之处,但是自己完成确实有趣味。 由于时间比较紧,我们所做的课程设计肯定还存在许多的不足之处,程序中也存在许多小错误,在以后的学习中会慢慢改过来努力做得更好。 8、主要参考文献。 《SQL Server从入门到精通》 清华大学出版社 明日科技SQL Server开发团队编著 数据库原理与应用技术:SQL Server作者:赵彦出版社:清华大学出版社 MySQL技术内幕SQL编程作者:姜承尧出版社:机械工业出版社 20
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服