教室管理系统设计报告.docx
《教室管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《教室管理系统设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
教室管理系统设计报告
学院
数据库原理与技术
课程设计报告
题目教室管理系统
院系计算机与信息工程学院
专业班级2010级计算机科学与技术2班
设计成员立超、尚小苓、美静、
志义、付雪松
指导教师志强
二O一二年十二月二十日
课程设计——教室管理系统设计
1、课程设计的目的和意义
教室作为一所学校的重要资源,然而在许多学校尤其大学,这种资源往往显得稀缺,必须借助先进的计算机信息技术对教室进行合理分配和管理,“教室管理系统”可以说是对学校的教室管理部门而言是一项基础而重要的工作。
教室管理这样一个系统,可以涉及到大多数SQLServer数据库的重要数据库对象、重要功能和特性,比如:
视图、触发器和存储过程等。
由此,通过这个课程设计可以加深对这些SQLServer数据库知识的学习、理解,积累在实际工程应用中运用各种数据库对象的经验,使学生掌握使用应用软件开发工具开发数据库管理系统的基本方法。
在实用性方面,教室管理系统是很普遍的一种应用,选择该系统作为课程设计也可以为学生以后可能遇到的实际开发提供借鉴。
2、需求分析阶段
2.1处理对象
教室:
教室编号、教室类型、上课时间
班级:
班级名称、教师编号、教室编号、课程、上课时间、备注
教师:
教师编号、教师、性别、职称、教授课程、备注
2.2处理功能及要求
2.2.1能够存储一定数量的教室信息,并方便有效的进行相应的教室如何分配和管理,这主要包括:
1)教室信息的录入、删除及修改。
2)教室的空闲时间
2.2.2能够对一定数量的班级、教师进行相应的信息存储与管理,这其中包括:
1)班级信息的登记、删除及修改。
2)教师信息的增加、删除及修改。
3)班级和教师资料的查询。
能够提供一定的安全机制,提供数据信息授权访问,防止随意删改、查询。
对查询的结果能够列表显示。
2.3安全性和完整性要求
2.3.1安全性要求
系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。
安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。
2.3.2完整性要求
系统完整性要求系统中数据的正确性以及相容性。
可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。
2.4需求分析阶段成果
表1课程表
M
T
W
S
F
数据库1班
尚老师101
TCP2班老师102
数据结构1班付老师103(多媒体)
TCP2老师102
TCP实验机房
(二)1.2班老师
TCP实验
(一)1.2班老师
数据库2班尚老师101
数据结构机房
(一)1.2班付老师
数据结构2班付老师103(多媒体)
数据结构1班付老师103(多媒体)
数据结构机房
(一)1.2班付老师
3、概念结构设计
3.1教室管理信息系统数据流图
图1数据流程图
3.2教室管理系统局部E-R模型
教师
性别
备注
教师编号
教师名称
职称
课程
教师编号
班级
班级编号
上课时间
教师名称mingmingchengchrng称
教室
教室编号
上课时间
教室类型
上课时间
备注
备注
图2分E-R图
4、结构逻辑设计
4.1E-R图向关系模型的转换
教室表(教室编号、教室类型、上课时间)
主键:
教室编号
班级表(班级名称、教师编号、教室编号、课程、上课时间、备注)
主键:
班级名称外键:
教室编号、教师编号
教师表(教师编号、教师、性别、职称、教授课程、备注)
主键:
教师编号
4.2数据模型优化
数据库德逻辑结构设计的结果不是唯一的。
为了提高数据库应用系统的性能,还应该根据应用需要适当的修改,调整关系模式,这就是数据模型的优化。
规化理论为数据库设计人员判断关系模式的优劣提供了理论标准,可用来预测模式可能出现的问题,使数据库设计工作有了严格的理论基础。
关系数据模型的优化通常以规化理论为指导,方法为:
(1)确定数据依赖。
分别写出每个关系部属性的以及不同关系模式属性间
的数据依赖。
(2)对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。
(3)按照数据依赖的理论对关系模式逐一分析,考察是否存在部分函数依赖,传递函数依赖,根据各个函数依赖的依赖集可知各个关系模式没有部分函数依赖和传递函数依赖所以所有的关系模式都是属于3NF。
不需要进一步进行模式分析。
4.3数据库的结构
表2班级信息表结构
列名
数据类型
大小
空值
键
班级编号
int
否
主键
教室编号
char
20
否
外键
教师编号
char
20
否
外键
课程
char
10
否
上课时间
char
50
否
备注
char
10
是
表3教师信息表结构
列名
数据类型
大小
空值
键
教师编号
char
10
否
主键
教师名称
char
10
否
性别
char
10
否
职称
char
10
否
教授课程
char
10
否
备注
nchar
10
是
表4教室信息表结构
列名
数据类型
大小
空值
键
教室编号
char
10
否
主键
教师类型
char
30
否
上课时间
nchar
20
是
备注
nchar
10
是
5、物理设计阶段
5.1数据存储方面
5.2系统功能模块
5.2.1教室表信息查询和更新模块
将实现对教室信息的查询和更新(修改、插入、删除)操作,方便于对教室基本信息的管理
5.2.2班级表的查询和更新模块
将完成班级基本信息的查询、更新(修改、插入、删除)操作,便于对学生信息的集中管理
5.2.3教师表的查询和更新模块
将完成教师基本信息的查询、更新(修改、插入、删除)操作,便于对教师信息的集中管理
5.3物理设计阶段结果
表5存储过程插入表
编号
存储过程
作用
1
教室表_select
在教室表中查询一元组
2
班级表_select
在班级表中查询一元组
3
教师表_select
在教师表中查询一元组
6、数据库实施阶段
6.1建立数据库
createclass;
6.2建立数据表
教室表的建立:
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))
向表中插入数据:
useclass
go
insert班级
(班级编号,教室编号,课程,教师编号,上课时间)
values
('1001','101','数据库','001','周一第一节')
Go
useclass
go
insert班级
(班级编号,教室编号,课程,教师编号,上课时间)
values
('1001','102','TCP','002','周四第一节')
go
useclass
go
insert教师
(教师编号,教师名称,性别,职称,教授课程)
values
('101','尚老师','女','教授','数据库')
go
useclass
go
insert教室
(教室编号,教室类型,上课时间)
values
('1001','普通教室','上午第一节下午第二节')
go
主键约束的建立:
useclass
go
altertable教室
addconstraintpk_jsbh
primarykeyclustered(教室编号)
go
唯一约束的建立:
useclass
go
altertable教师
addconstraintuk_jsbh
uniquenonclustered(教师编号)
go
默认约束的建立:
useclass
go
altertable教师
addconstraintdf_xb
default'女'for性别
go
视图的建立:
createview教室占用情况
as
selectdbo.教室.教室编号,dbo.班级.班级编号,dbo.班级.课程,dbo.班级.上课时间
fromdbo.教室INNERjoindbo.班级
ondbo.教室.教室编号=dbo.班级.教室编号
where(dbo.教室.教室编号='101')
教室编号存储过程的建立:
useclass
go
ifexists(selectnamefromsys.objectswherename='教室'andtype='p')
dropprocedure教室查询
go
createprocedure教室查询
jschar(8)
withencryption
as
select教室.教室编号,教室类型,班级.课程,班级.上课时间
from教室,班级
where教室.教室编号=班级.教室编号and教室.教室编号=js
orderby教室.教室编号
go
普通教室存储过程的建立:
useclass
go
ifexists(selectnamefromsys.objectswherename='普通教室查询'andtype='p')
dropprocedure普通教室查询
go
createprocedure普通教室查询
withencryption
as
select教室.教室编号,教室类型,教室.上课时间
from教室
where教室类型='普通教室'
go
实验教室存储过程的建立:
useclass
go
ifexists(selectnamefromsys.objectswherename='实验室教室查询'andtype='p')
dropprocedure实验室教室查询
go
createprocedure实验室教室查询
withencryption
as
select教室.教室编号,教室类型,教室.上课时间
from教室
where教室类型='实验室一'
go
计算机教室存储过程的建立:
useclass
go
ifexists(selectnamefromsys.objectswherename='计算机机房教室查询'andtype='p')
dropprocedure计算机机房教室查询
go
createprocedure计算机机房教室查询
withencryption
as
select教室.教室编号,教室类型,教室.上课时间
from教室
where教室类型='计算机机房一'
go
触发器的建立:
useclass
go
createtriggerins_kc
on班级
forinsert
as
insert教师(教师编号)
select'004'
frominserted
Go
useclass
go
createtriggerins_kc
on班级
forinsert
as
insert教室(教室编号,上课时间)
select'101','周一第二节'
frominserted
go
useclass
go
createtriggerdel_bjsj
on班级
fordelete
as
delete教师where教师编号in(select教室编号fromdeleted)
go
7、数据库实施阶段
主界面程序:
//packageparent_window;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclasssurFaceextendsJFrame{
JButtonfindSt,addSt,chanSt,delSt,exitSt;//查找,添加,删除,推出
//构造函数
publicsurFace(){
Containerc=this.getContentPane();
c.setLayout(newGridLayout(2,1));
JPanellowerPanel=newJPanel();
c.setFont(newFont("plain",Font.PLAIN,13));
JLabellabel=newJLabel("欢迎进入教室管理系统",SwingConstants.CENTER);
label.setFont(newFont("BOLD",Font.BOLD,30));
c.add(label);
//创建按钮
addSt=newJButton("录入");
addSt.setToolTipText("添加教室信息");
findSt=newJButton("查询");
findSt.setToolTipText("查询信息");
chanSt=newJButton("修改");
chanSt.setToolTipText("修改教室信息");
delSt=newJButton("删除");
delSt.setToolTipText("删除教室信息");
exitSt=newJButton("退出");
exitSt.setToolTipText("安全退出统");
lowerPanel.add(findSt);
lowerPanel.add(addSt);
lowerPanel.add(delSt);
lowerPanel.add(exitSt);
c.add(lowerPanel);
//注册监听器,新建独立监听器类查找:
fin(),添加:
ads(),删除:
del(),退出本系统:
ext()
}
//main方法,实现主界面
publicstaticvoidmain(Stringargs[]){
surFacesu=newsurFace();
su.setSize(500,400);
su.setTitle("欢迎进人教室管理系统!
");
su.setVisible(true);
}
}
图3主界面
查询界面:
importjava.awt.*;
importjava.awt.event.*;
importjava.sql.*;
importjavax.swing.*;
classDataWindowextendsJFrameimplementsActionListener
{
JTextField待输入教室编号;
JButton确定按钮;
publicDataWindow()
{super("教室管理系统");
setBounds(150,150,300,120);
setVisible(true);
Containerc=this.getContentPane();
c.setLayout(newGridLayout(2,1));
待输入教室编号=newJTextField(15);
确定按钮=newJButton("确定");
JPanelp1=newJPanel(),p2=newJPanel();
p1.add(newJLabel("请选择将要查询的教室编号"));
p1.add(待输入教室编号);
p2.add(newJLabel(""));
p2.add(确定按钮);
c.add(p1);c.add(p2);
确定按钮.addActionListener(this);
addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{setVisible(false);System.exit(0);}
});
}
publicvoidactionPerformed(ActionEvente)
{}
}
publicclassA
{
publicstaticvoidmain(Stringargs[])
{
DataWindowwindow=newDataWindow();
window.validate();
//window.setSize(500,400);
}
}
图4查询界面
删除程序:
importjava.awt.*;
importjava.awt.event.*;
importjava.sql.*;
importjavax.swing.*;
classDataWindowextendsJFrameimplementsActionListener
{
JTextField待输入教室编号;
JButton确定按钮;
publicDataWindow()
{super("教室管理系统");
setBounds(150,150,300,120);
setVisible(true);
Containerc=this.getContentPane();
c.setLayout(newGridLayout(2,1));
待输入教室编号=newJTextField(15);
确定按钮=newJButton("确定");
JPanelp1=newJPanel(),p2=newJPanel();
p1.add(newJLabel("请输入将要删除的教室编号!
!
"));
p1.add(待输入教室编号);
p2.add(newJLabel(""));
p2.add(确定按钮);
c.add(p1);c.add(p2);
确定按钮.addActionListener(this);
addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{setVisible(false);System.exit(0);}
});
}
publicvoidactionPerformed(ActionEvente)
{}
}
publicclassB
{
publicstaticvoidmain(Stringargs[])
{
DataWindowwindow=newDataWindow();
window.validate();
//window.setSize(500,400);
}
}
图5删除界面
录入程序:
importjava.awt.*;
importjava.awt.event.*;
importjava.sql.*;
importjavax.swing.*;
classDataWindowextendsJFrameimplementsActionListener
{
JTextField待输入教室编号;
JButton确定按钮;
publicDataWindow()
{super("教室管理系统");
setBounds(150,150,300,120);
setVisible(true);
Containerc=this.getContentPane();
c.setLayout(newGridLayout(2,1));
待输入教室编号=newJTextField(15);
确定按钮=newJButton("确定");
JPanelp1=newJPanel(),p2=newJPanel();
p1.add(newJLabel("请输入录入教室编号"));
p1.add(待输入教室编号);
p2.add(newJLabel(""));
p2.add(确定按钮);
c.add(p1);c.add(p2);
确定按钮.addActionListener(this);
addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{setVisible(false);System.exit(0);}
});
}
publicvoidactionPerformed(ActionEvente)
{}
}
publicclassC
{
publicstaticvoidmain(Stringargs[])
{
DataWindowwindow=newDataWindow();
window.validate();
//window.setSize(500,400);
}
}
图6录入界面
8、系统调试和测试
对该教室管理系统进行测试,验证每个功能是否符合要求,具体的测试如下:
(1)通过视图查看各个基本表和视图中的数据。
(2)检测各个存储过程的功能。
9、总结
经过近几个星期的努力,终于设计出一个达到程序设计要求的数据库。
其功能完整,用户界面良好,但是也存在着某些缺陷。
通过这一段时间的工作努力,最后的结果固重要,但更重要的是它让我们熟悉了系统设计的整体步骤。
系统设计大体可分为需求分析、概念设计、逻辑设计、物理设计、数据库的实施及调试测试六大步骤。
其中,让我们感触最深的是需求分析阶段,在这个阶段,必须对所要设计的系统有总体的构思和了解,知道自己要做什么,要实现什么,并且要实际的进行相关的调查,不能凭想象或自己的了解,这样会避免在后续的工作中遇到很多的问题。
同时,通过这次课程设计使我们进一步掌握了相关的SQL语句方面的知识