sql 网络选课系统实验报告
课 程 设 计
课程名称 计算机网络与数据库(二)
题 目 网上选课系统
专 业 班 级 学 号 姓 名 成 绩 指导教师
2017 年6月12日至2017年6月16日
课程设计任务书
设计题目:网上选课系统
设计目的
本课程的设计的目的是通过实践使同学们经历数据库设计、应用系统开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。 设计任务 (在规定的时间内完成下列任务)
1 、 系统主要功能
网上选课系统实现了学生在网上就可完成选课的全过程。其功能如下: ◆ 学生登陆验证密码功能
为了避免在选课时出现乱选、错选情况,该系统在设计时考虑对学生身份的合法性进行验证,保证合法用户才能选课。
◆ 查看可供选择的课程,及上该课程教师的情况
学生能在网上查看课程的情况,如课程的介绍、课程有那些教师上,上课的时间、上课的地点。
◆ 选择某门课程
◆ 学生可查看当前自己已选课程、如果对某门课程不满意,可注销该课程 ◆ 研究生处可以查看当前某门课,某教师有那些学生选,并能打印。 ◆能打印学生自己的选课清单
时间安排
消化资料、系统调查 1天
系统分析、总体设计,实施计划、撰写报告 3天
演示、验收 1天
具体要求
1、明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。严格要求自己,要独立思考,按时、独立完成课程设计任务。
2、设计报告:要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。设计报告正文字数不少于0.2万字(不包括附录)
指 导 教 师 签 名: 2017年 2月 19日
教研室主任(或责任教师)签名: 年 月 日
课程设计报告书
1. 概述
1.1课题简介
随着无纸化办公的一步步实现,信息的自动处理以及网络式的信息交互方式越来越被人们认可和应用。网上选课与传统的选课方式相比更加节约资源,同时,随着学生选课自主权的增加,使教学更加透明。如果仍然通过传统的纸上选课方式选课,既浪费大量人力物力,有浪费时间。同时在人为的统计过程中会不可避免的出现错误,因此,通过借助网络系统,让学生只要在电脑中输入自己的个人选课信息来替代有纸化的手工操作成为高效管理的必然趋势。该系统能够为学生提供方便的选课功能,也能够提高高校对学生和教学管理的效率。
1.2设计目的
应用对数据库系统原理的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。
数据库应用 课程实践:实践和巩固在课堂教学中学习有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。 数据库原理 软件设计实践:实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。
1.3设计内容
运用基于E-R 模型的数据库设计方法和关系规范化理论做指导完成从系统的分析到设计直至系统的最终实现,开发网上选课系统,完成网上选课管理系统的全部功能。
首先做好需求分析,并完成数据流图和数据字典。
其次做概念分析,利用实体联系的方法将需求分析的用户需求抽象为信息结构,得到E-R 图。
然后就是逻辑结构设计,将E-R 图转换为计算机系统所支持的逻辑模型
2. 需求分析
2.1功能分析
首先,建立一些基本表(尽可能满足3N ),对大部分基本信息组合、存储;其次通过建立视图实现对冗余数据的有必要保留(查询并计算基本表属性得到新的作为视图属性)并实现对以下基本信息的显示。
系表:系编号、系名
专业表:专业编号、专业名称、系编号
学生表:学号、姓名、口令、性别、专业编号
教师表:教师编号、教师姓名、系编号、职称
课程表:课程编号、课程名称、课程简介
选课表:学号、教师编号、课程编号
讲课表:课程编号、教师编号、上课地点、上课时间
在此基础上进行以下目标查询,由于有些查询常用且较复杂,为了简化其应用,所以将它们定义为存储过程。
查询课程表中的课程名称(普通查询)
查询某名同学选修的课程(普通查询)
根据需要建立触发器、存储过程、索引,实现对数据库的优化。最后,进行过程功能的验证。允许具有权限者对数据库进行数据更新和查询等合法操作。
2.2 数据流图
用流程图来描述处理过程与数据的关系
3. 概念结构设计
3.1概念结构设计的方法
概念结构设计就是从现实概念中抽象出概念模型,即对信息世界建模,所以概念模型应该能方便、准确的表示信息世界中的常用概念。概念模型的表示方法最著名的是实体—联系方法,在该方法中实体型用矩形表示,矩形框内写明实体名;属性用椭圆表示,并用无向边将其与相应的实体连接起来;联系用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁表上联系的类型(1:1,1:n 或n :m )。
3.2概念结构设计的步骤
第一步:抽象数据;
第二步:设计局部E-R 图;
第三步:把各分E-R 图综合成总体E-R 图,消除各种冲突;
第四步:对总体E-R 图进行优化,消除冗余数据和冗余联系;
(1)抽象数据
实体:系、专业、教师、学生、课程、选课、讲课
联系:在不同院系的不同专业的学生选择课程,老师教学生课程的关系。
院系与专业的关系是一对多的关系;
专业与学生的关系是一对多的关系;
教师与学生的关系是多对多的关系。
属性:系的属性:系编号、系名 (主码为系编号)
专业的属性:专业编号、专业名称、系编号 (主码为专业编号) 学生的属性:学号、姓名、口令、性别、专业编号 (主码为学号) 教师的属性:教师编号、教师姓名、系编号、职称 (主码为教师编号) 课程的属性:课程编号、课程名称、课程简介 (主码为课程编号) 选课的属性:学号、教师编号、课程编号
(主码为学号、教师编号、课程编号)
讲课的属性:课程编号、教师编号、上课地点、上课时间
(主码为课程编号、教师编号)
(2)局部E-R 图
图2-1系 E-R图
图2-2专业 E-R图
图2-3学生 E-R图
图2-4教师 E-R图
图2-5 课程 E-R图
图2-6 选课 E-R图
图2-7 讲课 E-R图
图2-8 总E-R 图
4. 逻辑设计阶段
逻辑设计阶段:将系统E-R 模型转换为关系模式,并对给出的关系模式进行关系规范化处理(尽量满足3NF ),得到系统全部的关系模式,并标明主键、外键。设置每一数据表的属性名,类型,宽度。
4.1 将E-R 模式转换为以下关系模式:
(1)系:系编号、系名 (主键为系编号)
(2)专业:专业编号、专业名称、系编号 (主键为专业编号,外键为系编号)
(3)学生:学号、姓名、口令、性别、专业编号
(主键为学号,外键为专业编号)
(4)教师:教师编号、教师姓名、系编号、职称
(主键为教师编号,外键为系编号)
(5)课程:课程编号、课程名称、课程简介 (主键为课程编号)
(6)选课:学号、教师编号、课程编号
(主键为学号、教师编号、课程编号)
(7)讲课:课程编号、教师编号、上课地点、上课时间
(主键为课程编号、教师编号)
发现这七个关系模式3N 都满足。因为元组中都是不可分割的数据,且所有非主属性完全依赖其主码,且它的任何一个非主属性都不传递于任何主关键字。
5. 物理设计阶段
物理设计阶段:为一个逻辑数据模型选取一个最适合应用环境的物理结构(存储结构与存取方法),数据库的物理设计通常分为两步:A 、确定数据库的物理结构;B 、对物理结构进行时间和空间效率评价。下面列出选课系统所有表的结构和索引,为了便于理解,将部分数据列出。
(1)系表包括系编号、系名,设主键为系编号。其属性如表5-1所示
CREATE TABLE [dbo]. [系表](
[系编号] [char](2) NOT NULL,
[系名] [char](20) NOT NULL,
CONSTRAINT [PK_系表] PRIMARY KEY CLUSTERED
(
[系编号] ASC
) WITH (PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF ,
IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY]
) ON [PRIMARY]
表5-1 系表
(2)专业表包括专业编号、专业名称、系编号,主键为专业编号,外键为系编号。其属性如表5-2所示
CREATE TABLE [dbo].[专业表](
[专业编号] [char](2) NOT NULL,
[专业名称] [char](20) NOT NULL,
[系编号] [char](2) NOT NULL,
CONSTRAINT [PK_专业表] PRIMARY KEY CLUSTERED
(
[专业编号] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
表5-2专业表
(3)学生表包括学号、姓名、口令、性别、专业编号,主键为学号,外键为专业编号。其属性如表5-3所示
C REATE TABLE [dbo].[学生表](
[学号] [char](10) NOT NULL,
[姓名] [char](20) NOT NULL,
[口令] [char](8) NOT NULL,
[性别] [char](10) NOT NULL,
[专业编号] [char](2) NOT NULL,
CONSTRAINT [PK_学生表] PRIMARY KEY CLUSTERED
(
[学号] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
表5-3学生表
(4)教师表包括教师编号、教师姓名、系编号、职称,主键为教师编号,外键为系编号。其属性如表5-4所示
CREATE TABLE [dbo].[教师表](
[教师编号] [char](5) NOT NULL,
[教师姓名] [char](5) NOT NULL,
[系编号] [char](2) NOT NULL,
[职称] [char](6) NOT NULL,
CONSTRAINT [PK_教师表] PRIMARY KEY CLUSTERED
(
[教师编号] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
表5-4教师表
(5)课程包括课程编号、课程名称、课程简介 ,设主键为课程编号。其属性如表5-5所示。
CREATE TABLE [dbo].[课程表](
[课程编号] [char](8) NOT NULL,
[课程名称] [char](20) NOT NULL,
[课程简介] [char](100) NULL
) ON [PRIMARY]
表5-5课程表
(6)选课表包括学号、教师编号、课程编号,设主键为学号、教师编号、课程编号。其属性如表5-6所示。
CREATE TABLE [dbo].[选课表](
[学号] [char](10) NOT NULL,
[教师编号] [char](8) NOT NULL,
[课程编号] [char](8) NOT NULL
) ON [PRIMARY]
表5-6 课程表
(7)讲课表包括课程编号、教师编号、上课地点、上课时间,其主键为课程编号、教师编号。其属性如表5-7所示。
CREATE TABLE [dbo].[讲课表](
[课程编号] [char](8) NOT NULL,
[教师编号] [char](5) NOT NULL,
[上课地点] [char](12) NOT NULL,
[上课时间] [date] NOT NULL,
CONSTRAINT [PK_讲课表] PRIMARY KEY CLUSTERED
(
[课程编号] ASC,
[教师编号] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
表5-7选课表
6. 关系图的建立
6.1 建立关系图
关系是表之间的链接,用一个表中的外健引用另一个表中的主健。关系线的终结点显示一个主键符号一表示主键到外键的关系,或者显示一个无穷符号以表示一对多关系的外键端。
使用SQL Server2008的企业管理器创建关系图,步骤如下:
(1)启动SQL Server企业管理器,并打开“创建数据库关系图向导”窗口。
(2)根据向导页一步步开始关系图的创建。
例 为选课系统中的系表、专业表、学生表、教师表、课程表、选课表和讲课表创建关系图。
(1)从“开始”菜单中的SQL Server程序组中启动SQL Server企业管理器,打开“SQL Server Enterprise Manager”窗口。
(2)在左边的目录树结构中选择要创建关系图的数据库文件夹,如“选课系统”文件夹,并在右边的对象窗口中选择并打开其中的“关系图”对象;
6.2 建立视图
CREATE VIEW [dbo].[选课系统]
AS
SELECT dbo . 专业表. 专业编号
FROM dbo . 讲课表 INNER JOIN
dbo . 教师表 ON dbo . 讲课表. 教师编号 = dbo . 教师表. 教师编号 INNER JOIN
dbo . 课程表 ON dbo . 讲课表. 课程编号 = dbo . 课程表. 课
程编号 INNER JOIN
dbo . 系表 ON dbo . 教师表. 系编号 = dbo . 系表. 系编号 INNER JOIN
dbo . 选课表 ON dbo . 讲课表. 教师编号 = dbo . 选课表. 教师编号 AND dbo . 课程表. 课程编号 = dbo . 选课表. 课程编号 INNER JOIN
dbo . 学生表 ON dbo . 选课表. 学号 = dbo . 学生表. 学号 INNER JOIN
dbo . 专业表 ON dbo . 系表. 系编号 = dbo . 专业表. 系编号 AND dbo . 学生表. 专业编号 = dbo . 专业表. 专业编号
点击快捷工具栏中的“
”保存图标,将刚创建好的关系图保存起来。
7. 建立查询
7.1简单查询
(1)查找各个老师带的课
select 课程名称, 教师姓名
from 课程表 join 讲课表
on 课程表. 课程编号=讲课表. 课程编号
join 教师表 on 讲课表. 教师编号=教师表. 教师编号
(2)建立新的存储过程
create procedure [dbo].[皮皮] @教师编号 char(8)
as
delete from 讲课表
where 教师编号=@教师编号
(3)查询学生表里的所有信息
select *from 学生表
8. 总结
总体上来讲,在本次课程设计的过程中,我收获了很多知识以外的东西,对数据库有了进一步了解。做事情要主动寻找其中乐趣,还要多多开动脑筋,积极思考,不怕犯错,只有正视错误,才能在一次次的不断修改错误,不断运行中,尝试中得到进步,从而获得根本性的提高。今后,我会更加努力学习,争取将所学知识与时间操作完美的结合起来,真正做到理论与实践兼备的人,让自己不断提高和完善。
在操作中寻找不足,在更改中进步。不要满足于现状,要不断完善自己的知识体系,善于总结实践经验。要端正自己的学习态度,是主动去学,而不是被动!提高自学能力。学习编程的秘诀是:编程、编程、再编程。不仅要多实践,而且要快实践。我们在看书的时候,不要等到你完全理解了才动手敲,而是应该在看书的同时敲,程序运行的各种情况可以让你更快更牢固的掌握知识点。
五、参考文献
参考文献的罗列顺序号码应与前言及正文中出现的参考文献编号一致。写法应规范。
[1]袁润章,自蔓延高温合成技术研究进展. 武汉:武汉工业大学出版社,1994
[2]Schacht E.Industrial polysaccharides. Amsterdam:Elsevier Science,1987
[3]郭景坤. 陶瓷材料的强化与增韧新途径的探索. 无机材料学
报,1998,13910;23-26