《课程设计案例-教室管理信息系统.docx》由会员分享,可在线阅读,更多相关《课程设计案例-教室管理信息系统.docx(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-数据库课程设计院 别: 信息科学与电气工程学院班 级: 计算181 姓 名: XXX 学 号: XXXXXXX 指导教师: XXX 设计地点: 线上进行 时 间: 2020年6月 8日 2020年6月19日 课 程 设 计 任 务 书题 目 教室管理信息系统 系 (部) 信息科学与电气工程学院 专 业 计算机科学与技术 班 级 计算181 学生姓名 XXX 学 号 XXXXXXXX 6 月 8 日至 6 月 19 日 共 2 周指导教师(签字) XXX 院 长(签字) 2020年 6月 7 日一、设计内容及要求通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题
2、,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力。要求:1对各个系统进行系统功能需求分析2. 数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的E-R图(局部和整体E-R图)3. 设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定4. 通过企业管理器或是查询分析器实现各个二维关系(建议最好用SQL代码实现),要求建立相关的索引5. 根据系统功能需求设计相应的查询视图6. 要求根据系统功能需求建立存储过程7. 根据功
3、能需求建立相应的触发器以保证数据的一致性8. 通过建立用户和权限分配实现数据库一定的安全性,考虑数据库的备份与恢复(此内容选作)二、设计原始资料1、数据库原理与应用2、课程设计题目:机票预定信息系统、长途汽车信息管理系统、人事信息管理系统、超市会员管理系统、客房管理系统、药品存销信息管理系统、学生选课管理信息系统、学生成绩管理系统、网上书店管理信息、教室管理信息系统、职工考勤管理信息系统、个人信息管理系统、办公室日常管理信息系统、轿车销售信息管理系统等。题目具体内容及要求见数据库课程设计题目,鼓励自选题目。三、设计完成后提交的文件和图表1计算说明书部分2图纸部分:课程设计报告格式(附后):封面
4、、题目、时间地点、目的及要求、内容、详细的步骤和代码编写过程、总结。设计报告格式: 设计题目 设计时间、地点 系统需求分析 数据库概念结构设计 数据库逻辑结构设计 数据库结构实现 系统功能模块实现 设计总结(分析设计的得与失) 心得体会 封面格式如下(一定要有封面):四、进程安排教学内容学时地点备注分配任务与分组1天线上进行系统功能需求分析1天线上进行数据库需求分析1天线上进行逻辑数据库结构2天线上进行查询视图、存储过程、触发器1天线上进行编程2天线上进行程序测试和成果验收2天线上进行五、主要参考资料1.数据库系统原理与应用沈祥玖 张岳 中国水利水电出版社 20162.SQL Server数据
5、库配置与管理指南刘奎 清华大学出版社 20103.SQL与关系数据库理论 周成兴清华大学出版社 2010信息科学与电气工程学院课程设计成绩评定用表平时成绩(30%)答辩成绩(50%)报告成绩(20%)总成绩目 录摘 要71 系统需求分析81.1 系统整体需求81.2 系统功能模块分析81.3 教室管理系统功能模块分析92 数据库概念结构设计112.1 数据库教室管理系统实体图112.1.1 实体1112.1.2 实体2112.2 数据库E-R图113 数据库逻辑结构设计133.1 数据库表结构设计133.2 数据库其他逻辑结构设计144 数据库结构实现154.1 数据库表实现154.2 数据库
6、其他逻辑结构设计164.2.1视图164.2.2存储过程164.2.3触发器185 教室管理系统功能模块实现195.1 数据库连接实现205.2教室管理系统功能实现205.2.1教室预约205.2.2修改信息模块226 总结30参考文献30摘 要本系统为教室管理系统着力于安排教师预订教室。教师根据用户名及密码登录教室管理系统,登录成功后可根据不同的情况查询各个空闲教室的空闲情况,例如教室时间查询,教室编号查询,教室类型查询以及教室容纳人数查询。教师可预订每一时间段的空教室,也可以取消预订某一时间段的空教室。同时教师可以修改自己已经预订的空教室。关键字:教室;预订;查询1 系统需求分析1.1 系
7、统整体需求实现教室信息的存储,学校任课教师信息的存储,教室安排信息存储。在对这些数据进行存储后,更新数据库,之后,用户就可以对学校教室的使用信息进行查询。本系统总体上说涉及了教室的信息,教师的信息。教室信息,包括教室容纳人数、教室空闲时间、教室设备等;教师信息,包括教师姓名、教授课程、教师职陈、安排上课时间等;教室安排信息,包括何时空闲、空闲的开始时间、结束时间等。按照一定条件查询,统计,将结果输出。教室管理系统登录模块教室查询模块教室预约模块修改信息模块1.2 系统功能模块分析登录模块: 教师根据用户名以及密码登录教室管理系统。登陆失败则可选择重新登陆,登录成功后根据权限进行操作。教室查询模
8、块:教师登录成功后,可以选择不同的查询方式,例如教室时间查询,教室容纳人数查询,教室设备查询以及教师编号查询。教师选择查询的条件,系统给出符合要求的空闲教室。教室预约模块:教师选择该模块预约某一空闲教室,如果该时间段教室被使用,则预约失败。如果没被预约,则预约成功。修改信息模块:教师可在登录界面修改自己的密码,也可修改自己已预约教室的时间信息及取消预约的教室。登录模块由崔鑫维负责;教室查询模块由贾浩冉负责;教室预约模块以及修改信息模块由栾铭浩负责。本系统选择数据库为SQL Server 2019 ,开发语言选用的java教室预约模块1.3 教室管理系统功能模块分析 选择预约教室时间教室是否被预
9、约未占用被占用预约成功预约失败教室预约模块功能:教师选择该模块预约某一空闲教室,选择教室编号以及预约教室的时间如果该时间段的此教室没有被预约,则预约成功。如果该时间段的该教室被预约,则预约失败。预约前或者预约完成后教师可点击查询,查看是否将预约记录添加到数据库中。修改信息模块:信息修改模块修改预约的教室信息用户密码修改取消预约教室信息修改模块分为三部分:用户密码修改部分,教室取消预订教室部分和修改预约教室信息部分。用户密码修改部分:用户在登录界面点击修改密码,用户输入用户名,原密码以及新密码。如果原密码正确则修改成功,否则修改失败。原密码正确,密码修改成功。原密码错误,密码修改失败。用户密码修
10、改信息修改模块判断密码是否正确原密码正确原密码错误修改失败修改成功教师取消预约教室输入取消预约教室的信息修改成功教师取消预约教室部分:也可以在该界面选择查询修改已预约教室信息部分:教师根据界面显示的信息中选择修改的信息。修改预约教室信息输入修改的信息修改成功2 数据库概念结构设计2.1 数据库教室管理系统实体图教师教师编号密码教授课程职称姓名2.1.1 实体1实体教师,包含五个属性有教师编号,姓名,密码,教授课程,职称。其中教室编号是主键。其他属性都不为空。教室教室位置教室设备容纳人数教室编号2.1.2 实体2实体教室,包含四个属性有教室编号,教室位置,教室设备以及教室容纳人数。其中教师编号为
11、主键并且其他属性都不为空。2.2 数据库E-R图两个实体,一个是教师,一个是教室。教师可以预约多个教室,一个教室也可以被多个教师预约,因此教师和教室之间存在多对多的关系。教师教师编号密码教授课程职称姓名教室教室位置教室设备容纳人数教室编号教室规定时间占用周期教室使用时间日期教室编号mn3 数据库逻辑结构设计3.1 数据库表结构设计教师信息表编号字段名称数据类型说明是否为空1教师编号char(9)主键notnull2姓名varchar(20)notnull3职称varchar(20)notnull4教授课程varchar(20)notnull教室信息表编号字段名称数据类型说明是否为空1教室编号c
12、har(5)主键notnull2容纳人数int1150notnull3教室设备varchar(30),notnull4教室位置char(20)notnull教室使用情况表编号字段名称数据类型说明是否为空1教室编号char(5)联合主键,外键notnull2日期varchar(10)联合主键,外键notnull3周期varchar(10)联合主键,外键notnull4教室使用时间varchar(30)联合主键,外键notnull5使用教师编号char(9)联合主键,外键Not null日期表编号字段名称数据类型说明是否为空1星期varchar(20)UNIQUEnotnull周期表编号字段名称数
13、据类型说明是否为空1周varchar(20)UNIQUEnotnull教室时间分配表编号字段名称数据类型说明是否为空1教室时间varchar(30)UNIQUEnotnull删除记录表编号字段名称数据类型说明是否为空1操作人编号char(9)联合主键,外键not null2教室编号char(5)联合主键,外键not null3周期varchar(10)联合主键,外键not null4日期varchar(10)联合主键,外键not null5教室使用时间varchar(30)联合主键,外键notnull修改记录表编号字段名称数据类型说明是否为空1操作人char(9)联合主键,外键not null
14、2教室编号char(5)联合主键,外键not null3周期varchar(10)联合主键,外键not null4日期varchar(10)联合主键,外键not null5教室使用时间varchar(30)联合主键,外键notnull6操作时间timestamp联合主键not null3.2 数据库其他逻辑结构设计存储过程:本系统中使用了八个存储过程,分别为教师编号查询的存储过程,教室类型查询的存储过程,教室容纳人数查询的存储过程,教室时间查询的存储过程,预约教室的存储过程,取消预约教室的存储过程,修改预约教室信息的存储过程。这些存储过程可实现用户对空闲教室的查询、预约、取消预约以及修改预约教
15、室的信息。这些存储过程在教室查询模块、教室预约模块和信息修改模块中使用。触发器:本系统使用了三个触发器。三个触发器的功能分为两类。第一类是用户禁止修改自己的用户名。另外一类是当用户取消预约教室和修改预约教室信息时,将取消和修改的操作记录下来。这些触发器用在用户登录模块和修改信息模块中使用。视图:本系统使用了一个视图。该视图功能是查询所有的空教室。此视图在教室查询模块中使用。4 数据库结构实现4.1 数据库表实现CREATE TABLE 教师信息(教师编号 char(9)PRIMARY KEY not null ,CHECK(教师编号 between 000000000 and 99999999
16、9),姓名 varchar(20) ,密码 varchar(10)not null,职称 varchar(20) not null,教授课程 varchar(20) not null,上课人数 int CHECK(上课人数 0) not null,)CREATE TABLE 教室信息(教室编号 char(5)PRIMARY KEY NOT NULL,CHECK(教室编号 between 00000 and 99999) ,容纳人数 int CHECK(容纳人数 between 1 and 150) not null,教室设备 varchar(30)not null,教室位置 char(20)n
17、ot null, )CREATE TABLE 教室使用情况(教室编号 char(5),周期 varchar(10),日期 varchar(10),教室使用时间 varchar(30),PRIMARY KEY(教室编号,周期,日期,教室使用时间),FOREIGN KEY (教室编号) REFERENCES 教室信息(教室编号),FOREIGN KEY (周期) REFERENCES 周期(周),FOREIGN KEY (日期) REFERENCES 日期(星期),FOREIGN KEY (教室使用时间) REFERENCES 教室时间分配(教室时间),)CREATE TABLE 日期(星期 va
18、rchar(10)UNIQUE,)CREATE TABLE 周期(周 varchar(10)UNIQUE,)CREATE TABLE 教室时间分配(教室时间 varchar(30)UNIQUE,)CREATE TABLE 修改记录表(操作人编号 char(9) ,教室编号 char(5),周期 varchar(10),日期 varchar(10),教室使用时间 varchar(30),操作时间 timestamp ,PRIMARY KEY(操作人编号,教室编号,周期,日期,教室使用时间,操作时间),FOREIGN KEY (教室编号) REFERENCES 教室信息(教室编号),FOREIGN
19、 KEY (周期) REFERENCES 周期(周),FOREIGN KEY (日期) REFERENCES 日期(星期),FOREIGN KEY (教室使用时间) REFERENCES 教室时间分配(教室时间),FOREIGN KEY (操作人编号) REFERENCES 教师信息(教师编号),)CREATE TABLE 删除记录表(操作人编号 char(9) ,教室编号 char(5),周期 varchar(10),日期 varchar(10),教室使用时间 varchar(30),PRIMARY KEY(操作人编号,教室编号,周期,日期,教室使用时间),FOREIGN KEY (教室编号
20、) REFERENCES 教室信息(教室编号),FOREIGN KEY (周期) REFERENCES 周期(周),FOREIGN KEY (日期) REFERENCES 日期(星期),FOREIGN KEY (教室使用时间) REFERENCES 教室时间分配(教室时间),FOREIGN KEY (操作人编号) REFERENCES 教师信息(教师编号),)4.2 数据库其他逻辑结构设计4.2.1视图:create view dbo.一学期所有教室使用情况asselect 周,星期,教室信息.教室编号,容纳人数,教室设备,教室位置,教室时间from 日期,周期,教室信息,教室时间分配 4.2
21、.2存储过程:createprocedure教室设备查询教室设备char(30),周 varchar(10),日期 varchar(10)withencryptionasselect 周,星期,教室信息.教室编号,容纳人数,教室设备,教室位置,教室时间from 日期,周期,教室信息,教室时间分配where 教室设备=教室设备 and 周=周 and 星期=日期EXCEPTselect 周期,日期,教室信息.教室编号,容纳人数,教室设备,教室位置,教室使用时间from 教室信息,教室使用情况where 教室信息.教室编号=教室使用情况.教室编号 and 教室设备=教室设备 and 周期=周 an
22、d 日期=日期createprocedure教室容纳人数查询 容纳人数char(30),周 varchar(10),日期 varchar(10)withencryptionasselect 周,星期,教室信息.教室编号,容纳人数,教室设备,教室位置,教室时间from 日期,周期,教室信息,教室时间分配where 容纳人数=容纳人数 and 周=周 and 星期=日期EXCEPTselect 周期,日期,教室信息.教室编号,容纳人数,教室设备,教室位置,教室使用时间from 教室信息,教室使用情况where 教室信息.教室编号=教室使用情况.教室编号 and 容纳人数=容纳人数 and 周期=周
23、 and 日期=日期createprocedure教室编号查询 教室编号char(5),周 varchar(10),日期 varchar(10)withencryptionasselect 周,星期,教室信息.教室编号,容纳人数,教室设备,教室位置,教室时间from 日期,周期,教室信息,教室时间分配where 教室编号=教室编号 and 周=周 and 星期=日期EXCEPTselect 周期,日期,教室信息.教室编号,容纳人数,教室设备,教室位置,教室使用时间from 教室信息,教室使用情况where 教室信息.教室编号=教室使用情况.教室编号 and 教室信息.教室编号=教室编号 and
24、 周期=周 and 日期=日期createprocedure教室时间查询教室使用时间varchar(30),周 varchar(10),日期 varchar(10)withencryptionasselect 周,星期,教室信息.教室编号,容纳人数,教室设备,教室位置,教室时间from 日期,周期,教室信息,教室时间分配 where 教室时间=教室使用时间 and 周=周 and 星期=日期EXCEPTselect 周期,日期,教室信息.教室编号,容纳人数,教室设备,教室位置,教室使用时间from 教室信息,教室使用情况where 教室信息.教室编号=教室使用情况.教室编号 and 教室使用时
25、间=教室使用时间 and 周期=周 and 日期=日期createprocedure预订空闲教室教室编号 char(5),日期 char(20),周期 char(10),教室使用时间 varchar(30)withencryptionasinsert into 教室使用情况VALUES (教室编号,周期,日期,教室使用时间)createprocedure取消预订空闲教室教室编号 char(5),周期 char(10),日期 char(20),教室使用时间 varchar(30)withencryptionasDELETEFROM 教室使用情况WHERE 教室编号=教室编号 and 周期=周期
26、and 日期=日期 and 教室使用时间=教室使用时间createprocedure空闲教室查询withencryptionasselect 周,星期,教室信息.教室编号,容纳人数,教室设备,教室位置,教室时间from 日期,周期,教室信息,教室时间分配EXCEPTselect 周期,日期,教室信息.教室编号,容纳人数,教室设备,教室位置,教室使用时间from 教室信息,教室使用情况where 教室信息.教室编号=教室使用情况.教室编号createprocedure更新教室使用时间更新后周期 char(10),更新后日期 char(10),更新后教室使用时间 varchar(30),教室编号
27、char(5),更新前周期 char(10),更新前日期 char(10),更新前教室使用时间 varchar(30)asupdate 教室使用情况set 周期=更新后周期 ,日期=更新后日期 ,教室使用时间=更新后教室使用时间where 教室编号=教室编号 and 周期=更新前周期 and 日期=更新前日期 and 教室使用时间=更新前教室使用时间4.2.3触发器:create trigger tri_noedit_nameon 教师信息for updateasif update(教师编号)beginprint(不允许修改!)rollback tranendCREATE TRIGGER tr
28、_product_uON 教室使用情况AFTER updateASif rowcount = 0 return/*更新前*/insert into 修改记录表 (操作人编号,教室编号,周期,日期,教室使用时间,操作时间) Select 使用教师编号,教室编号,周期,日期,教室使用时间,getdate()from deleted/*更新后*/insert into 修改记录表 (操作人编号,教室编号,周期,日期,教室使用时间,操作时间) select 使用教师编号,教室编号,周期,日期,教室使用时间,getdate()from deletedGoCREATE TRIGGER tr_product
29、_dON 教室使用情况AFTER DELETEASif rowcount = 0 /*为了避免占用资源,当影响行数为0时,结束触发器*/ Begininsert into 删除记录表 (操作人编号,教室编号,周期,日期,教室使用时间) select 使用教师编号,教室编号,周期,日期,教室使用时间,from deletedGO5 教室管理系统功能模块实现5.1 数据库连接实现Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);String url = jdbc:sqlserver:/127.0.0.1:1433;databas
30、eName=教室管理信息系统;Connection con = DriverManager.getConnection(url,sa,123456);。5.2教室管理系统功能实现5.2.1教室预约:用户选择预约教室的教师编号和预约的时间。点击确定,若此时间段教室没有被预约在,则预约成功,否则预约失败。用户也可在预约界面选择查询,查询此教室是否被预约或者预约完成后查看预约是否真正的成功。关键代码:public void actionPerformed(ActionEvent e) try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDr
31、iver);String url = jdbc:sqlserver:/127.0.0.1:1433;databaseName=教室管理信息系统;Connection con = DriverManager.getConnection(url,sa,123456);/连接数据库Statement stmt = con.createStatement();stmt.executeUpdate(insert into 教室使用情况 values(+comboBox.getSelectedItem().toString()+,+comboBox_1.getSelectedItem().toString
32、()+,+comboBox_2.getSelectedItem().toString()+,+comboBox_3.getSelectedItem().toString()+);/执行的SQL语句 Dimension xt = new Dimension(300,30);javax.swing.JFrame login2 = new javax.swing.JFrame();login2.setSize(400,200);login2.setDefaultCloseOperation(3);login2.setLocationRelativeTo(null);login2.setFont(ne
33、w Font(宋体,Font.PLAIN,14); /宋体,正常风格,14号字体/创建组件javax.swing.JPanel jp1 = new JPanel();javax.swing.JPanel jp2 = new JPanel();JLabel message = new JLabel(预定成功!);message.setFont(new Font(宋体,Font.PLAIN,14); /宋体,正常风格,14号字体message.setPreferredSize(xt);jp1.add(message);login2.getContentPane().add(jp1,BorderLa
34、yout.CENTER);JButton close = new JButton(确定);close.setFont(new Font(宋体,Font.PLAIN,14);/设置按键大小close.setSize(xt);jp2.add(close);login2.getContentPane().add(jp2,BorderLayout.SOUTH);close.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)login2.dispose();预订教室 menu =new 预订教室
35、(); /返回预订教室的界面menu.setVisible(false););login2.setResizable(false);login2.setVisible(true);/通过我们获取的登录界面对象,用dispose方法关闭它catch(Exception f) Dimension xt = new Dimension(300,30);javax.swing.JFrame login2 = new javax.swing.JFrame();login2.setSize(400,200);login2.setDefaultCloseOperation(3);login2.setLoca
36、tionRelativeTo(null);login2.setFont(new Font(宋体,Font.PLAIN,14); /宋体,正常风格,14号字体/创建组件javax.swing.JPanel jp1 = new JPanel();javax.swing.JPanel jp2 = new JPanel();JLabel message = new JLabel(预订失败);message.setFont(new Font(宋体,Font.PLAIN,14); /宋体,正常风格,14号字体message.setPreferredSize(xt);/将textName标签添加到窗体上jp
37、1.add(message);login2.getContentPane().add(jp1,BorderLayout.CENTER);JButton close = new JButton(确定);close.setFont(new Font(宋体,Font.PLAIN,14);/设置按键大小close.setSize(xt);jp2.add(close);login2.getContentPane().add(jp2,BorderLayout.SOUTH);close.addActionListener(new ActionListener()public void actionPerfo
38、rmed(ActionEvent e)login2.dispose(););login2.setResizable(false);login2.setVisible(true);5.2.2修改信息模块密码修改部分:用户在登录界面,点击修改密码。用户填写修改界面的信息,填写完成后点击确定。若用户输入的密码正确则修改成功,否则修改失败。关键代码:btnNewButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String xx=textField.getText();Str
39、ing yy=textField_1.getText();String zz=textField_2.getText(); /获取填写信息Dimension xt = new Dimension(300,30);/生成新界面javax.swing.JFrame login2 = new javax.swing.JFrame();login2.setSize(400,200);login2.setDefaultCloseOperation(3);login2.setLocationRelativeTo(null);login2.setFont(new Font(宋体,Font.PLAIN,14); /宋体,正常风格,14号字体/创建组件javax.swing.JPanel jp1 = new JPanel();javax.swing.JPanel jp2 = new JPanel();qwe conn = new qwe();conn.getConnection();Boolean flag=conn.checkAccount(xx, yy);
限制150内