大工数据库课程设计说明书答案.docx
大正建q大孕网络教育学院数据库课程设计题 目:选课管理系统的设计与实现学习中心:专 业:年 级:学 号:学 生:指导教师:1项目概况2.1 ASP简介Active Server Pages:是一套微软开发的服务器端脚本环境,ASP内含于IIS 之中,通过ASP我们可以结合HTML网页、ASP指令和ActiveX元件建立动 态、交互且高效的WEB服务器应用程序。有了 ASP你就不必担心客户的浏览器 是否能运行你所编写的代码,因为所有的程序都将在服务器端执行,包括所有嵌 在普通HTML中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给 客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。2.2 Dreamweaver 简介Dreamweaver是Macromedia公司最新推出的主页编辑工具。这是一个所见即 所得主页编辑器,并带有站点管理功能,让你方便地设计和管理多个站点。而它 最棒的地方就是支持最新的DHTML和CSS标准,你可以用它设计出生动的 DHTML动画、多层次的页面(layer)以及CSS样式表。2.3 Microsoft SQL Server 2000 简介SQL是英文(Structured Query Language)的缩写,意思为结构化查询语言。 SQL语言的主要功能就是同各种数据库建立联系,进行沟通。SQL被作为关系型 数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新 数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库 管理系统,如 Oracle, Sybase, Microsoft SQL Server, Access等都采用了 SQL 语言标 准。SQL语言有以下几个优点:1非过程化语言SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导 航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作 记录集,所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性 允许一条SQL语句的结果作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法,这种特性使用户更易集中精力于要 得到的结果;所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定 对指定数据存取的最快速度的手段,查询优化器知道存在什么索引,在哪儿使用 索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。2. 统一的语言SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、应 用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL命令只需 很少时间就能学会,最高级的命令在几天内便可掌握。3. 所有关系数据库的公共语言由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的 技能从一个RDBMS(关系数据库管理系统)转到另一个,所有用SQL编写的程序都 是可以移植的。Microsoft SQL Server 2000 是 Microsoft 公司继 SQL Server 6.5 和 SQL Server 7.0以后,在新千年推出的又一改进的新版关系型数据管理系统。它能使用户快捷 地管理数据库和开发应用程序。SQL Server 2000使用了了先进的数据库结构,与 Windows DNA紧密集成,具有强大的Web功能,它可以利用高端硬件平台以及 最新网络和存储技术,可以为最大的Web站点和企业应用提供优良的扩展性和可 靠性,使用户能够在Internet领域快速建立服务系统,为占领市场赢得宝贵的时间。 同时,SQL Server 2000还为用户提供了重要的安全性功能的增强,为用户的数据 安全提供了可靠的保证。另外,SQL Server 2000还为用户提供了重要的安全性功 能的增强,为用户的数据安全提供了可靠的保证。另外,SQL Server 2000在数据库 服务器自动管理技术方面处于数据库领域的领先地位,它可以使用户免去繁琐复 杂的工作量,从而有精力处理更重要的问题,使用系统在商业战略上占得先机。SQL Server 2000 的特性 Microsoft® SQL Server 2000 的特性包括:1、Internet集成。SQL Server 2000数据库引擎提供完整的XML支持。它还 具有构成最大的Web站点的数据存储组件所需的可用性、可伸缩性和安全功能。2、可伸缩性和可用性。同一个数据库引擎可以在不同的平台上使用,从运行 Microsoft Windows® 98 的便携式电脑到运行 Microsoft Windows 2000 数据中 心版的大型多处理器服务器。3、业级数据库功能。SQL Server 2000关系数据库引擎支持当今苛刻的数据 处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发 修改数据库的用户的开销减到最小。4、易于安装、部署和使用。SQL Server 2000中包括一系列管理和开发工具, 这些工具可改进在多个站点上安装、部署、管理和使用SQL Server的过程。2.3系统开发背景学生选课系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理 者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的 查询手段。但是一直以来人们使用传统人工的方式管理文件档案,这种管理方式 存在着许多缺点,如:效率低、保密性差、时间长、将产生大量的文件和数据,这 对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科 学日渐成熟,其强大的功能已为人们深刻认识,它已深入到人类社会的各个领域并 发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对选课信息进行管理,有着手工管理所 无法比拟的优点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、 寿命长、成本低等。这些优点能够极大地提高了教务管理的效率,也是学校的科学 化、现代化管理,与世界接轨的重要条件。2.4选课管理系统概述基于web的课程设计管理系统,根据高校课程管理的基本流程,实现课程信 息管理的电子化,减轻管理人员的负担。管理人员能够很好对课程进行管理。长 期以来,学校基本都是使用传统人工的方式管理学生课程信息,效率低、保密性 差,随着计算机和网络技术的发展,使用计算机来管理课程信息已经成为发展趋 势。这样可以提高学生选课和成绩管理工作的效率,围绕此管理所需要的学生个 人信息、课程和任课教师信息、所选课程信息进行管理及维护。随着科学技术的不断提高,计算机科学日渐成熟其强大的功能已为人们深刻 认识,他已经进入人类社会的各个领域并发挥着越来越重要的作用作为计算机应 用的一部分,使用计算机对高校课程进行管理,有着手工管理所无法比拟的优点。 例如:检索迅速,查找方便,可靠性高存储量大成本低等。这些有点都能够极大 的提高高校课程管理的效率也是企业的科学化正规化管理,与世界接轨的重要条 件。所以说,程管理系统是高校不可缺少的一部分,他的内容对于学校的决策者 和管理者来说都至关重要2需求分析2.1需求分析学生选课系统需要满足来自三方面的需求,这三个方面分别是学生、教师和 管理员。学生的需求是查询院系的课程、学生选课情况及学生信息的修改;教师 是查看、查询所有课程信息和自己做带课程信息以及教师信息修改;管理员的功 能最为复杂,包括对学生、教师、选课进行管理和统计,及系统状态的查看、维 护。学生可以直接查看选课情况,也可以用本人学号和密码登录系统。一般情况 下,学生只应该具有查询和维护本人的选课情况和个人信息的权限,若查询和维 护其他学生的选课及成绩查询信息,就要知道其他学生的学号和密码。这些是很 难得到的,特别是密码,所以不但满足了学生的选课要求,还保护了学生的个人 隐私。学校工作人员有修改学生选课的权限,所以需对工作人员登录模块进行更多 的考虑。在此系统中,学校工作人员可以为学生加入选课或是登录记录,并打印 生成相应的报表给用户查看和确认院系管理人员等功能,满足信息量大,数据安 全性和保密性要求。这个模块实现对选课信息、教师信息、总体选课情况信息的 查询和统计、工作人员和管理人员信息查看及维护。学校管理员可以浏览、查询、 修改、统计选课的基本信息;浏览、查询、统计和修改学生选课的基本信息,浏 览、查询、统计学生信息,但不能添加删除和修改学生的信息,这部分功能应该 由院系工作人员执行,但是,删除某条学生选课基本信息记录时,应实现对该学 生选课的级联删除。并且还应具有生成选课报表,并打印输出的功能。2.2可行性分析(1)技术可行性一一本系统需要配有Office软件的PC机,网络环境和作为 数据库服务器的计算机,系统对机器本身没有太高的要求,一般当前学校或个人 电脑完全可满足要求。对于软件技术要求,现在的程序设计语言已非常成熟,要 运用HTML样式,图形图象制作工具来制作生动活泼的网页及美观的图形文件或动 画文件,数据库使用SQL Server 2000中提供的数据库桌面工具ODBC。(2)经济可行性-由于本系统是为学生选课管理使用的系统,装上该应用 软件,即可使用系统,系统成本主要集中在系统软件的开发上,当系统投入运行 后可以为学校节约大量的人力,物力。所带来的效益远远大于系统软件的开发成 本,在经济上完全可行。(3) 操作可行性-界面设计时充分考虑管理人员的习惯,制作了较精美的 人机操作界面,使得操作简单、数据录入迅速、规范、可靠;统计准确;制表灵 活;适应力强;容易扩充。2.3数据分析表1学生表字段名称字段含义数据类型及长度约束默认值sno学号varchar(15)主键sname姓名varchar(15)非空ssex性别varchar(2)非空sage年龄int非空sclass班级varchar(15)非空sdept系部varchar(20)非空spass密码varchar(15)非空表2教师表字段名称字段含义数据类型及长度约束默认值tno教师号varchar(15)主键tname姓名varchar(15)非空tsex性别varchar(2)非空tage年龄int非空tpass密码varchar(15)非空status身份varchar(10)非空表3课程表字段名称字段含义数据类型及长度约束默认值cno课程号varchar(15)主键cname课程名varchar(15)非空credit学分int非空ctime年龄varchar(15)非空cbegintime开始时间varchar(15)非空cendtime结束时间varchar(15)非空表4临时班级表字段名称字段含义数据类型及长度约束默认值ccno班级号varchar(15)主键ccname课程名varchar(15)非空address地址varchar(15)number人数int>=0 或<=100表5选课表字段名称字段含义数据类型及长度约束默认值sno学号varchar(15)主键,外键cno课程号varchar(15)主键,外键grade成绩int>=0或 <=100表6学生临时班级关系表字段名称字段含义数据类型及长度约束默认值sno学号varchar(15)主键,外键ccno班级号varchar(15)主键,外键表7教师课程关系表字段名称字段含义数据类型及长度约束默认值tno教师号varchar(15)主键,外键cno课程号varchar(15)外键表8教师临时班级关系表字段名称字段含义数据类型及长度约束默认值ccno班级号varchar(15)主键,外键tno教师号varchar(15)外键表9课程临时班级关系表字段名称字段含义数据类型及长度约束默认值ccno班级号varchar(15)主键,外键cno课程号varchar(15)外键2.4功能分析本系统主要实现教师信息管理、学生信息管理、课程信息管理和留言信息管 理,其中教师信息管理有教师姓名、教师工号、教师职称、教师所属系;学生信 息管理有学生姓名、学生学号和学生所在系;课程信息管理有课程名称、学分、 学时、上课地点、上课时间、已选人数、课程性质、开课系、课程人数;留言信息 管理有删除和查看留言。(1)学生信息模块完成学生的登录,然后根据各位同学所在的院系不同,调 用相应的选课模块。其中学生登录模块的功能是验证登录人员确实是本院的学生, 学生启动本系统后,系统提示输入学生学号码和密码,验证后进入主操作界面。(2)教师信息模块完成教师的登录,然后根据各位教师所在的院系不同,教师 所教的课程不同,调用所选的课程.其中教师登录模块的功能是验证登录人员确实 是本院的教师,教师启动本系统后,系统提示输入教师工号和密码,验证后进入 主操作界面。(3) 课程信息管理包括必修课程和选修课程,学生必需先登陆才能进行对课程 的选课否则不能进入选课系统。(4) 留言信息管理中所有用户都可以留言,只有管理员才有权限对留言进行 删除。3详细设计3.1系统结构图系统功能模块示意图如图3.1所示。图3.1系统功能结构图3.2系统实现本界面的主要功能是为了对系统进行安全性管理,本系统的用户名和密码保 存在表中,本系统根据不同的用户而设置了不同的权限,可以用admin,admin为 用户名和密码来登陆本系统。登录页面本模块是本系统的应用界面,在本界面上集成了本系统的所有功能,共有主 功能菜单,从而实现了本系统从班级管理、院校管理、专业管理、课程管理、学 生管理、教师管理等系统的具体功能,同时,在系统管理模块中可以完成对本系统的安全性管理。系统主界面:学生管理模块本模块是本系统的安全性设置模块,根据学校不同部门以及不同使用人员对本系统的要求和需要,从而实行了分级管理,对学生进行了管理。教师模块:因为本系统中有些功能模块具有相似之处,因此在本文只用此模块进行一个 简单的说明。其它的相似模块的代码可能参阅本模块的设计思路。课程管理模块:专业管理模块:3.3数据库实现1. 建立数据库create database SelectCourse2建立数据表()学生(学生编号,姓名,性别,年龄,系别)use SelectCoursecreate table Student(StudentId char(10)not null primary key,StudentName char(10)not null,Sex char(2)not null,Age char(5)not null,DeptId char(10)not null)insert Studentvalues('090801','谢拉特','男','19','国际贸易')insert Studentvalues('090802','连拿','男','20','国际贸易')insert Studentvalues('090803','卢卡斯','男','20','国际贸易')insert Studentvalues('090804','王丽','女','19','市场营销')insert Studentvalues('090805',骈达神','男','21','市场营销')insert Studentvalues('090806','卡罗尔','男','22','市场营销')select * from Student(2)课程表(课程号,课程名,容量,任课老师)use SelectCoursecreate table Course(CourseId char(10)not null primary key,CourseName char(10)not null,CourseRL char(20)not null,CrouseTeacher char(20)not null)insert into Coursevalues('101','数据库','100','博阿斯')insert into Coursevalues('102',经济法','100','达格利什')insert into Coursevalues('103','电子商务','100','曼奇尼')insert into Coursevalues('104','物流供应链','100','弗格森')insert into Coursevalues('105','会计学','100','温格')insert into Coursevalues('106','运筹学','100','穆里尼奥')select * from Course(3)选课表(学生编号,课程号,成绩)use SelectCoursecreate table Select1(StudentId char(10),CourseId char(10),Mark smallint,constraint C3 check (Mark between 0 and 100),constraint C4 primary key (StudentId,CourseId),constraint C5 foreign key (StudentId) references Student(StudentId),constraint C6 foreign key (CourseId)references Course(CourseId);insert into Select1values('090801','101','90')insert into Select1values('090802','101','85')insert into Select1values('090803','101','75')insert into Select1values('090804','101','80')insert into Select1values('090805','102','60')insert into Select1values('090806','105','76')insert into Select1values('090801','106','85')insert into Selectlvalues('090802','104','95')insert into Select1values('090803','103','82')insert into Select1values('090804','102','67')insert into Select1values('090805','105','80')insert into Select1values('090806','101','86')insert into Select1values('090801','102','81')insert into Select1values('090802','106','88')insert into Select1values('090803','102','77')insert into Select1values('090804','105','83')insert into Select1values('090805','103','69')insert into Select1values('090806','104','73')select * from Select1()、课程类别表(课程类别号,课程类别名)use SelectCoursecreate table CourseCate(CourseCateId char(10)not null primary key,CourseCateName char(20)not null)insert into CourseCatevalues('001','管理类')insert CourseCatevalues('002','电子类')insert CourseCatevalues('003','计算机类')insert CourseCatevalues('004','机械类')select * from CourseCate相关操作要求的实现1、为每个实体表和关系表创建合适的索引(聚簇索引、复合索引)、主码、 外码;create nonclustered index Student on Student(StudentId);create nonclustered index Course on Course(CourseId);create nonclustered index Select1 on Select1(StudentId, CourseId)create nonclustered index CourseCate on CourseCate (CourseCateId)2、创建课程类别取值范围为计算机类、管理类、机械类、化工类的规则,并与相应的列绑定;create rule C1 as CourseCate in ('管理类','电子类','计算机类','机械类')g。exec sp_bindrule 'C1','CourseCate.CourseCateName'go3、在成绩实体中创建成绩默认值为的默认,并与相应的列绑定;use SelectCoursealter table SelectlADD CONSTRAINT Mark DEFAULT(60) FOR Mark4、创建一个可以通过课程类别和任课教师进行查询课程 的存储过程;use SelectCourseg。create procedure 课程课程类别号char(10),任课老师char(20)asselect Courseld as 课程号,CourseName as 课程名,CourseCateld as 课程类别号,CrouseTeacher as 任课老师from Course CourseCate where CourseCateId= 课程类别号 andCrouseTeacher =任课老师use SelectCoursegoEXECUTE proCourse 课程类别号='001',任课老师='博阿斯'5通过触发器定义未选课的学生不能从学生实体中删除use SelectCoursegocreate trigger Select_studenton Select1AFTER deleteasbegindeclare StudentId char(10)declare SelectYesOrNO char(2)declare TestYesOrNO char(2)Select StudentId=StudentId from DELETEDif not exists (select SelectYesOrNO, TestYesOrNO from SelectCoursewhere SelectYesOrNO=是'and SelectYesOrNO=SelectYesOrNOand TestYesOrNO=TestYesOrNO and TestYesOrNO=§')delete Studentwhere StudentId=StudentIdenddelete from SelectCoursewhere StudentId='090801'and SelectYesOrNO=是'and TestYesOrNO=否'6建立包括选课学生的学号,姓名,系别,所选课程号,课程名,和成绩的视 图;use SelectCoursecreate view选课学生的视图as select S.StudentId,S.StudentName,S.DeptId,CourseId ,CourseName ,Mark from Student S joinSelectCourse SEon S.StudentId=SE.StudentIdg。SELECT * FROM 选课学生的视图9、统计查询(1) 在选课关系中,统计出选修课程超过门以上的学生信息。select * from Select1where StudentId in(select StudentIdfrom Select1group by StudentId having count(*)>4)(2) 检索出成绩及格的、姓王的女同学信息。select *from Studentwhere Student.StudentName LIKE'王' and Sex='女'and StudentIdin(select StudentIdfrom Select1where Mark>=60)(3) 统计出平均分在分以上的学生的信息,并将结果按平均分升序排列。select StudentId,avg(Mark) as 平均分into #学生平均分表from Select1group by StudentIdselect Student.*,平均分from Student,#学生平均分表where Student.StudentId=# 学生平均分表.StudentIdorder by平均分(4) 统计出至少名学生选修的课程的平均分,统计项包含课程编号和平均分。select Course.CourseId ,avg(all Mark)平均分from Student,Course,Select1where Course.CourseId=Select1.CourseIdand Student.StudentId=Select1.StudentIdgroup by Course.CourseId having count(*)>=3go4心得与体会这次选择的是设计一个选课管理系统,这对我来说是一次尝试与创新的过程, 也可以说是一个挑战的过程。虽然学了数据库这么久了,但是我们还是缺少经验。 现在利用自己学到的知识设计并制作一个选课管理系统,这本身就是一个知识转 化为生产力的过程,所以大家都很兴奋,都不同程度的投入了很高的热情与努力。 在具体的设计与实施中,我看到并感受到了一个管理系统从无到有的过程,对具 体的设计步骤、思路、方法、技巧都有了进一步的了解,并感受深刻。这次课程 设计加深了对数据库系统设计相关知识以及SQL SERVER相关功能的理解。比如 在建立基本的表、视图、索引、存储过程、触发器等,都比以前更加熟悉了,并 在解决各种问题的过程中学到了很多新的知识。