《教室管理系统课程设计报告.doc》由会员分享,可在线阅读,更多相关《教室管理系统课程设计报告.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学号2017-2018学年 第2学期数据库程序设计课程设计报告题目:教室管理系统专业:网络工程班级:姓名:指导教师:成绩:计算机学院2017年12月8日1、课程设计的目的和意义12、需求分析阶段12.1处理对象12.2处理功能及要求12.3安全性和完整性要求22.3.1 安全性要求22.3.2完整性要求22.4需求分析阶段成果23、概念结构设计33.1教室管理信息系统数据流图33.2教室管理系统局部E-R模型44、结构逻辑设计54.1 E-R 图向关系模型的转换54.2数据模型优化54.3数据库的结构55、物理设计阶段75.1数据存储方面75.2系统功能模块75.3物理设计阶段结果76、数据库
2、实施阶段76.1建立数据库76.2建立数据表87、数据库实施阶段148、系统调试和测试209、总结21课程设计教室管理系统设计1、课程设计的目的和意义 教室作为一所学校的重要资源,然而在许多学校尤其大学,这种资源往往显得稀缺,必须借助先进的计算机信息技术对教室进行合理分配和管理,“教室管理系统”可以说是对学校的教室管理部门而言是一项基础而重要的工作。教室管理这样一个系统,可以涉及到大多数SQL Server数据库的重要数据库对象、重要功能和特性,比如:视图、触发器和存储过程等。由此,通过这个课程设计可以加深对这些SQL Server数据库知识的学习、理解,积累在实际工程应用中运用各种数据库对象
3、的经验,使学生掌握使用应用软件开发工具开发数据库管理系统的基本方法。在实用性方面,教室管理系统是很普遍的一种应用,选择该系统作为课程设计也可以为学生以后可能遇到的实际开发提供借鉴。2、需求分析阶段2.1处理对象 教室:教室编号、教室类型、上课时间 班级: 班级名称、教师编号、教室编号、课程、上课时间、备注 教师: 教师编号、教师姓名、性别、职称、教授课程、备注2.2处理功能及要求2.2.1能够存储一定数量的教室信息,并方便有效的进行相应的教室如何分配和管理,这主要包括:1) 教室信息的录入、删除及修改。2) 教室的空闲时间2.2.2能够对一定数量的班级、教师进行相应的信息存储与管理,这其中包括
4、: 1) 班级信息的登记、删除及修改。 2) 教师信息的增加、删除及修改。 3) 班级和教师资料的查询。能够提供一定的安全机制,提供数据信息授权访问,防止随意删改、查询。对查询的结果能够列表显示。2.3安全性和完整性要求2.3.1 安全性要求 系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。2.3.2完整性要求系统
5、完整性要求系统中数据的正确性以及相容性。可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。2.4需求分析阶段成果表1 课程表MTWSF数据库1班尚老师101TCP2班李老师102数据结构1班付老师103(多媒体)TCP2李老师102TCP实验机房(二)1.2班李老师TCP实验(一)1.2班李老师数据库2班尚老师101数据结构机房(一)1.2班付老师数据结构2班付老师103(多媒体)数据结构1班付老师103(多媒体)数据结构机房(一)1.2班付老师3、概念结构设计3.1教室管理信息系统数据流图 教师教室管理系统班级图1 数据流程图3.2教室管理系统局部E-R模型 教师性别备注
6、教师编号教师名称职称课程教师编号班级班级编号上课时间教师名称 教室教室编号上课时间教室类型上课时间备注备注图2 分E-R图4、结构逻辑设计4.1 E-R 图向关系模型的转换教室表(教室编号、教室类型、上课时间)主键:教室编号班级表(班级名称、教师编号、教室编号、课程、上课时间、备注)主键:班级名称 外键:教室编号、教师编号教师表(教师编号、教师姓名、性别、职称、教授课程、备注)主键:教师编号4.2数据模型优化数据库德逻辑结构设计的结果不是唯一的。为了提高数据库应用系统的性能,还应该根据应用需要适当的修改,调整关系模式,这就是数据模型的优化。规范化理论为数据库设计人员判断关系模式的优劣提供了理论
7、标准,可用来预测模式可能出现的问题,使数据库设计工作有了严格的理论基础。关系数据模型的优化通常以规范化理论为指导,方法为:(1)确定数据依赖。分别写出每个关系内部属性的以及不同关系模式属性间的数据依赖。(2)对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。(3)按照数据依赖的理论对关系模式逐一分析,考察是否存在部分函数依赖,传递函数依赖,根据各个函数依赖的依赖集可知各个关系模式没有部分函数依赖和传递函数依赖所以所有的关系模式都是属于3NF。不需要进一步进行模式分析。4.3数据库的结构表2 班级信息表结构列名数据类型大小空 值键班级编号int否主键教室编号char20否外键教师编号
8、char20否外键课程char10否上课时间char50否备注char10是表3 教师信息表结构列名数据类型大小空 值键教师编号char10否主键教师名称char10否性别char10否职称char10否教授课程char10否备注nchar10是表4 教室信息表结构列名数据类型大小空 值键教室编号char10否主键教师类型char30否上课时间nchar20是备注nchar10是5、物理设计阶段5.1数据存储方面5.2系统功能模块5.2.1教室表信息查询和更新模块将实现对教室信息的查询和更新(修改、插入、删除)操作,方便于对教室基本信息的管理 5.2.2班级表的查询和更新模块将完成班级基本信息
9、的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理5.2.3教师表的查询和更新模块将完成教师基本信息的查询、更新(修改、插入、删除)操作,便于对教师信息的集中管理5.3物理设计阶段结果表5 存储过程插入表编号存储过程作用1 教室表_select在教室表中查询一元组2班级表_select在班级表中查询一元组3教师表_select在教师表中查询一元组6、数据库实施阶段6.1建立数据库create class;6.2建立数据表教室表的建立:create table 教室( 教室编号 char(20) not null,教室类型 char(30) not null,上课时间 nchar(3
10、0) not null,备注 nchar(10)) 教师表的建立:create table 教师( 教师编号 char(10) not null,教师名称 char(10) not null,性别 char(10) not null,职称 char(10) not null,教授课程 char(10) not null,备注 char(10)班级表的建立: create table 班级( 班级编号 int not null,教室编号 char(20) not null,课程 char(20) not null,教师编号 char(10) not null,上课时间 char(50) not
11、null,备注 char(10)向表中插入数据: use class go insert 班级 (班级编号,教室编号,课程,教师编号,上课时间) values (1001,101,数据库,001,周一第一节) Go use class go insert 班级 (班级编号,教室编号,课程,教师编号,上课时间) values (1001,102,TCP,002,周四第一节) go use class go insert 教师 (教师编号,教师名称,性别,职称,教授课程) values (101,尚老师,女,教授,数据库) go use class go insert 教室 (教室编号,教室类型,
12、上课时间) values (1001,普通教室,上午第一节下午第二节) go主键约束的建立:use classgoalter table 教室add constraint pk_jsbhprimary key clustered(教室编号)go唯一约束的建立:use classgoalter table 教师add constraint uk_jsbhunique nonclustered(教师编号)go默认约束的建立:use classgoalter table 教师add constraint df_xbdefault 女 for 性别go视图的建立:create view 教室占用情况a
13、sselect dbo.教室.教室编号,dbo.班级.班级编号,dbo.班级.课程,dbo.班级.上课时间from dbo.教室INNER join dbo.班级on dbo.教室.教室编号=dbo.班级.教室编号where (dbo.教室.教室编号=101)教室编号存储过程的建立:use classgoif exists(select name from sys.objects where name =教室 and type=p)drop procedure 教室查询gocreate procedure 教室查询js char(8)with encryptionasselect 教室.教室编
14、号,教室类型,班级.课程,班级.上课时间from 教室,班级where 教室.教室编号=班级.教室编号 and 教室.教室编号=jsorder by 教室.教室编号go普通教室存储过程的建立:use classgoif exists(select name from sys.objects where name=普通教室查询 and type=p)drop procedure 普通教室查询gocreate procedure 普通教室查询with encryptionasselect 教室.教室编号,教室类型,教室.上课时间from 教室where 教室类型=普通教室go实验教室存储过程的建立
15、:use classgoif exists(select name from sys.objects where name=实验室教室查询 and type=p)drop procedure 实验室教室查询gocreate procedure 实验室教室查询with encryptionasselect 教室.教室编号,教室类型,教室.上课时间from 教室where 教室类型=实验室一go计算机教室存储过程的建立:use classgoif exists(select name from sys.objects where name=计算机机房教室查询 and type=p)drop pro
16、cedure 计算机机房教室查询gocreate procedure 计算机机房教室查询with encryptionasselect 教室.教室编号,教室类型,教室.上课时间from 教室where 教室类型=计算机机房一go触发器的建立:use classgocreate trigger ins_kcon 班级for insertasinsert 教师(教师编号)select 004from insertedGouse classgocreate trigger ins_kcon 班级for insertasinsert 教室(教室编号,上课时间)select 101,周一第二节from
17、insertedgouse classgocreate trigger del_bjsjon 班级 for deleteasdelete 教师where 教师编号in (select 教室编号from deleted)go7、数据库实施阶段主界面程序:/package parent_window;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class surFace extends JFrameJButton findSt,addSt,chanSt ,delSt,exitSt;/查找,添加,删除,推
18、出/构造函数public surFace()Container c=this.getContentPane();c.setLayout(new GridLayout (2,1);JPanel lowerPanel=new JPanel();c.setFont(new Font(plain,Font.PLAIN,13);JLabel label=new JLabel(欢迎进入教室管理系统,SwingConstants.CENTER);label.setFont(new Font(BOLD,Font.BOLD,30);c.add(label);/创建按钮 addSt=new JButton(录入)
19、;addSt.setToolTipText(添加教室信息);findSt=new JButton(查询);findSt.setToolTipText(查询信息);chanSt=new JButton(修改);chanSt.setToolTipText(修改教室信息);delSt=new JButton(删除);delSt.setToolTipText(删除教室信息);exitSt=new JButton(退出);exitSt.setToolTipText(安全退出统);lowerPanel.add(findSt);lowerPanel.add(addSt);lowerPanel.add(del
20、St);lowerPanel.add(exitSt);c.add(lowerPanel);/注册监听器,新建独立监听器类 查找:fin(),添加:ads(),删除:del(),退出本系统:ext()/main 方法, 实现主界面public static void main (String args )surFace su=new surFace();su.setSize(500,400);su.setTitle(欢迎进人教室管理系统!);su.setVisible(true);图3 主界面查询界面:import java.awt. *;import java.awt.event. *;imp
21、ort java.sql. *;import javax.swing. *;class DataWindow extends JFrame implements ActionListenerJTextField 待输入教室编号;JButton 确定按钮;public DataWindow()super(教室管理系统);setBounds(150,150,300,120);setVisible(true);Container c=this.getContentPane();c.setLayout(new GridLayout(2,1);待输入教室编号=new JTextField(15);确定按
22、钮=new JButton(确定);JPanel p1=new JPanel(),p2=new JPanel();p1.add(new JLabel(请选择将要查询的教室编号);p1.add(待输入教室编号);p2.add(new JLabel();p2.add(确定按钮);c.add(p1);c.add(p2);确定按钮.addActionListener(this);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)setVisible(false); System.exit(0);pu
23、blic void actionPerformed(ActionEvent e)public class Apublic static void main(String args)DataWindow window=new DataWindow();window.validate();/window.setSize(500,400);图4 查询界面删除程序:import java.awt. *;import java.awt.event. *;import java.sql. *;import javax.swing. *;class DataWindow extends JFrame imp
24、lements ActionListenerJTextField 待输入教室编号;JButton 确定按钮;public DataWindow()super(教室管理系统);setBounds(150,150,300,120);setVisible(true);Container c=this.getContentPane();c.setLayout(new GridLayout(2,1);待输入教室编号=new JTextField(15);确定按钮=new JButton(确定);JPanel p1=new JPanel(),p2=new JPanel();p1.add(new JLabe
25、l(请输入将要删除的教室编号!);p1.add(待输入教室编号);p2.add(new JLabel();p2.add(确定按钮);c.add(p1);c.add(p2);确定按钮.addActionListener(this);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)setVisible(false); System.exit(0);public void actionPerformed(ActionEvent e)public class Bpublic static void
26、 main(String args)DataWindow window=new DataWindow();window.validate();/window.setSize(500,400);图5 删除界面录入程序:import java.awt. *;import java.awt.event. *;import java.sql. *;import javax.swing. *;class DataWindow extends JFrame implements ActionListenerJTextField 待输入教室编号;JButton 确定按钮;public DataWindow(
27、)super(教室管理系统);setBounds(150,150,300,120);setVisible(true);Container c=this.getContentPane();c.setLayout(new GridLayout(2,1);待输入教室编号=new JTextField(15);确定按钮=new JButton(确定);JPanel p1=new JPanel(),p2=new JPanel();p1.add(new JLabel(请输入录入教室编号);p1.add(待输入教室编号);p2.add(new JLabel();p2.add(确定按钮);c.add(p1);
28、c.add(p2);确定按钮.addActionListener(this);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)setVisible(false); System.exit(0);public void actionPerformed(ActionEvent e)public class Cpublic static void main(String args)DataWindow window=new DataWindow();window.validate();/wind
29、ow.setSize(500,400);图6 录入界面8、系统调试和测试对该教室管理系统进行测试,验证每个功能是否符合要求,具体的测试如下:(1)通过视图查看各个基本表和视图中的数据。(2)检测各个存储过程的功能。9、总结经过近几个星期的努力,终于设计出一个达到程序设计要求的数据库。其功能完整,用户界面良好,但是也存在着某些缺陷。通过这一段时间的工作努力,最后的结果固重要,但更重要的是它让我们熟悉了系统设计的整体步骤。系统设计大体可分为需求分析、概念设计、逻辑设计、物理设计、数据库的实施及调试测试六大步骤。其中,让我们感触最深的是需求分析阶段,在这个阶段,必须对所要设计的系统有总体的构思和了解,知道自己要做什么,要实现什么,并且要实际的进行相关的调查,不能凭想象或自己的了解,这样会避免在后续的工作中遇到很多的问题。同时,通过这次课程设计使我们进一步掌握了相关的SQL语句方面的知识。不但纠正了以前的错误认识和理解,而且学会了建立存储过程和触发器。通过查阅资料,我们还明白了存储过程是编译后放在服务器端的程序,它可以被别的模块调用,且不需要重新编译,这样就大大减轻了客户端的负担,且有效的提高了系统执行的效率。
限制150内