赤峰学院数据库原理与技术课程设计报告题目教室管理系统院系计算机与信息工程学院专业班级2010级计算机科学与技术2班设计成员赵立超、尚小苓、李美静、张志义、付雪松指导教师韩志强二O一二年十二月二十日课程设计——教室管理系统设计1、课程设计的目的和意义教室作为一所学校的重要资源,然而在许多学校尤其大学,这种资源往往显得稀缺,必须借助先进的计算机信息技术对教室进行合理分配和管理,“教室管理系统”可以说是对学校的教室管理部门而言是一项基础而重要的工作。教室管理这样一个系统,可以涉及到大多数SQLServer数据库的重要数据库对象、重要功能和特性,比如:视图、触发器和存储过程等。由此,通过这个课程设计可以加深对这些SQLServer数据库知识的学习、理解,积累在实际工程应用中运用各种数据库对象的经验,使学生掌握使用应用软件开发工具开发数据库管理系统的基本方法。在实用性方面,教室管理系统是很普遍的一种应用,选择该系统作为课程设计也可以为学生以后可能遇到的实际开发提供借鉴。2、需求分析阶段处理对象教室:教室编号、教室类型、上课时间班级:班级名称、教师编号、教室编号、课程、上课时间、备注教师:教师编号、教师姓名、性别、职称、教授课程、备注处理功能及要求2.2.1能够存储一定数量的教室信息,并方便有效的进行相应的教室如何分配和管理,这主要包括:1)教室信息的录入、删除及修改。2)教室的空闲时间2.2.2能够对一定数量的班级、教师进行相应的信息存储与管理,这其中包括:1)班级信息的登记、删除及修改。2)教师信息的增加、删除及修改。3)班级和教师资料的查询。能够提供一定的安全机制,提供数据信息授权访问,防止随意删改、查询。对查询的结果能够列表显示。安全性和完整性要求2.3.1安全性要求系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。2.3.2完整性要求系统完整性要求系统中数据的正确性以及相容性。可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。需求分析阶段成果表1课程表MTWSF数据库1班尚老师101TCP2班李老师102数据结构1班付老师103(多媒体)TCP2李老师102TCP实验机房(二)班李老师TCP实验(一)班李老师数据库2班尚老师101数据结构机房(一)班付老师数据结构2班付老师103(多媒体)数据结构1班付老师103(多媒体)数据结构机房(一)班付老师3、概念结构设计教室管理信息系统数据流图图1数据流程图教室管理系统局部E-R模型图2分E-R图4、结构逻辑设计教师教室管理系统班级教师性别备注教师编号教师名称职称课程教师编号班级班级编号上课时间教师名称mingmingchengchrng称教室教室编号上课时间教室类型上课时间备注备注E-R图向关系模型的转换教室表(教室编号、教室类型、上课时间)主键:教室编号班级表(班级名称、教师编号、教室编号、课程、上课时间、备注)主键:班级名称外键:教室编号、教师编号教师表(教师编号、教师姓名、性别、职称、教授课程、备注)主键:教师编号数据模型优化数据库德逻辑结构设计的结果不是唯一的。为了提高数据库应用系统的性能,还应该根据应用需要适当的修改,调整关系模式,这就是数据模型的优化。规范化理论为数据库设计人员判断关系模式的优劣提供了理论标准,可用来预测模式可能出现的问题,使数据库设计工作有了严格的理论基础。关系数据模型的优化通常以规范化理论为指导,方法为:(1)确定数据依赖。分别写出每个关系内部属性的以及不同关系模式属性间的数据依赖。(2)对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。(3)按照数据依赖的理论对关系模式逐一分析,考察是否存在部分函数依赖,传递函数依赖,根据各个函数依赖的依赖集可知各个关系模式没有部分函数依赖和传递函数依赖所以所有的关系模式都是属于3NF。不需要进一步进行模式分析。数据库的结构表2班级信息表结构列名数据类型大小空值键班级编号int否主键教室编号char20否外键教师编号char20否外键课程char10否上课时间char50否备注char10是表3教师信息表结构列名数据类型大小空值键教师编号char10否主键教师名称char10否性别char10否职称char10否教授课程char10否备注nchar10是表4教室信息表结构列名数据类型大小空值键教室编号char10否主键教师类型char30否上课时间nchar20是备注nchar10是5、物理设计阶段数据存储方面系统功能模块5.2.1教室表信息查询和更新模块将实现对教室信息的查询和更新(修改、插入、删除)操作,方便于对教室基本信息的管理5.2.2班级表的查询和更新模块将完成班级基本信息的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理5.2.3教师表的查询和更新模块将完成教师基本信息的查询、更新(修改、插入、删除)操作,便于对教师信息的集中管理物理设计阶段结果表5存储过程插入表编号存储过程作用1教室表_select在教室表中查询一元组2班级表_select在班级表中查询一元组3教师表_select在教师表中查询一元组6、数据库实施阶段建立数据库createclass;建立数据表教室表的建立:createtable教室(教室编号char(20)notnull,教室类型char(30)notnull,上课时间nchar(30)notnull,备注nchar(10))教师表的建立:createtable教师(教师编号char(10)notnull,教师名称char(10)notnull,性别char(10)notnull,职称char(10)notnull,教授课程char(10)notnull,备注char(10))班级表的建立:createtable班级(班级编号intnotnull,教室编号char(20)notnull,课程char(20)notnull,教师编号char(10)notnull,上课时间char(50)notnull,备注char(10))向表中插入数据:useclassgoinsert班级(班级编号,教室编号,课程,教师编号,上课时间)values('1001','101','数据库','001','周一第一节')Gouseclassgoinsert班级(班级编号,教室编号,课程,教师编号,上课时间)values('1001','102','TCP','002','周四第一节')gouseclassgoinsert教师(教师编号,教师名称,性别,职称,教授课程)values('101','尚老师','女','教授','数据库')gouseclassgoinsert教室(教室编号,教室类型,上课时间)values('1001','普通教室','上午第一节下午第二节')go主键约束的建立:useclassgoaltertable教室addconstraintpk_jsbhprimarykeyclustered(教室编号)go唯一约束的建立:useclassgoaltertable教师addconstraintuk_jsbhuniquenonclustered(教师编号)go默认约束的建立:useclassgoaltertable教师addconstraintdf_xbdefault'女'for性别go视图的建立:createview教室占用情况asselectdbo.教室.教室编号,dbo.班级.班级编号,dbo.班级.课程,dbo.班级.上课时间fromdbo.教室INNERjoindbo.班级ondbo.教室.教室编号=dbo.班级.教室编号where(dbo.教室.教室编号='101')教室编号存储过程的建立:useclassgoifexists(selectnamefromwherename='教室'andtype='p')dropprocedure教室查询gocreateprocedure教室查询@jschar(8)withencryptionasselect教室.教室编号,教室类型,班级.课程,班级.上课时间from教室,班级where教室.教室编号=班级.教室编号and教室.教室编号=@jsorderby教室.教室编号go普通教室存储过程的建立:useclassgoifexists(selectnamefromwherename='普通教室查询'andtype='p')dropprocedure普通教室查询gocreateprocedure普通教室查询withencryptionasselect教室.教室编号,教室类型,教室.上课时间from教室where教室类型='普通教室'go实验教室存储过程的建立:useclassgoifexists(selectnamefromwherename='实验室教室查询'andtype='p')dropprocedure实验室教室查询gocreateprocedure实验室教室查询withencryptionasselect教室.教室编号,教室类型,教室.上课时间from教室where教室类型='实验室一'go计算机教室存储过程的建立:useclassgoifexists(selectnamefromwherename='计算机机房教室查询'andtype='p')dropprocedure计算机机房教室查询gocreateprocedure计算机机房教室查询withencryptionasselect教室.教室编号,教室类型,教室.上课时间from教室where教室类型='计算机机房一'go触发器的建立:useclassgocreatetriggerins_kcon班级forinsertasinsert教师(教师编号)select'004'frominsertedGouseclassgocreatetriggerins_kcon班级forinsertasinsert教室(教室编号,上课时间)select'101','周一第二节'frominsertedgouseclassgocreatetriggerdel_bjsjon班级fordeleteasdelete教师where教师编号in(select教室编号fromdeleted)go7、数据库实施阶段主界面程序:;import.*;publicclasssurFaceextendsJFrame{JButtonfindSt,addSt,chanSt,delSt,exitSt;*;import*;import.*;import.*;classDataWindowextendsJFrameimplementsActionListener{JTextField待输入教室编号;JButton确定按钮;publicDataWindow(){super(教室管理系统);setBounds(150,150,300,120);setVisible(true);Containerc=();(newGridLayout(2,1));待输入教室编号=newJTextField(15);确定按钮=newJButton(确定);JPanelp1=newJPanel(),p2=newJPanel();(newJLabel(请选择将要查询的教室编号));(待输入教室编号);(newJLabel());(确定按钮);(p1);(p2);确定按钮.addActionListener(this);addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvente){setVisible(false);(0);}});}pub