数据库设计学生选课系统_第1页
数据库设计学生选课系统_第2页
数据库设计学生选课系统_第3页
数据库设计学生选课系统_第4页
数据库设计学生选课系统_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库原理与应用实验指导与报告2010 / 2011 学年 第 2 学期姓 名: 季亚 学 号: 090709118 班 级: 09 数媒(1)班 指导教师: 周蓓 计算机科学与工程学院2011目录实验八 数据库设计 1一、 概要设计 11.1 目的和意义 11.2 内容和要求 1二、 需求分析 22.1 背景 22.2 概要分析 22.3 开发技术 22.4 系统主要功能 3三、 E-R 图 .43.1 概念设计 .43.2 E-R 图 4四、 逻辑结构 64.1 逻辑转换 64.2 细化表结构 6五、 数据库实施 85.1 创建表 95.2 创建必要视图 105.3 创建必要触发器 115.4 创建必要存储过程 13六、 总结 14参考文献 161实验八 数据库设计一、 概要设计1.1 目的和意义随着无纸化办公的普遍实现,信息的自动处理以及网络式的信息交互方式已经被人们广泛应用。让计算机来管理学生的信息是现在各个高校都在积极进行的工作之一,也是高校教学管理工作的重要内容之一。网上选课与传统的选课方式相比更加节约资源,增加了学生选课自主权。 学生选课系统作为一种现代化的教学技术,越来越受到人们的重视,是一个学校不可或缺的部分, 学生选课系统就是为了管理好选课信息而设计的。学生选课系统的将使选课管理工作规范化、系统化、程序化,避免选课管理的随意性,提高信息处理的速度和准确性,能够准确、及时、有效的查询和修改学生选课情况。与传统的选课方式相比,网上选课系统利用局域网为学生选课带来了极大的便捷。学生在公共机房,或者宿舍的个人电脑上便可以通过校园网络来选课。在选课期间内,学生能够使用选课系统灵活的修改自己的选课情况,大大提高了学校选课工作的效率。教务处的教师则可以通过选课系统的管理员子系统来管理学生的选课情况,使得学生选课工作达到系统化和自动化,大大提高了学校的工作效率,为广大师生及相关人员节省了极多的时间。数据库对于一个应用系统的意义是相当重要的,一个设计良好的数据库系统一方面,能够给开发者带来便捷,更轻松的进行系统设计与编码;另一方面,对于系统的后期维护也非常重要,一个良好的数据库系统能够保证系统的可扩充性,以及系统的移植性等问题。1.2 内容和要求本实验将设计出一个高校网上选课数据库系统,其要求简要如下:(1) 系统用户由三类组成:教师、学生和管理员。2(2) 管理员负责的主要功能: 用户管理(老师、学生及管理员的增、删、改) ; 课程管理(添加、删除和修改) ; 选课管理(实现选课功能开放和禁止、老师成绩输入开放和禁止) 。(3) 学生通过登录,可以查询课程的基本信息、实现选课、退课和成绩查询;(4) 老师通过登录,可以查看选课学生的基本信息,可以输入成绩。二、 需求分析2.1 背景全校性选修课开设的目的在于扩大学生的知识面、加强学生素质教育、培养复合型高级人才,具有不可替代的重要性。随着教育改革的不断深入和素质教育的加强,学分制的实施,选修课在一个学生的培养计划中占的比重将越来越大。网上选课系统的出现使同学们能够更加自主、便捷、准确的进行选课。但是,由于一般高校中的学生都比较多,因此带来了诸多如信息管理等问题,鉴于需要将学生信息、选课信息等信息数字化以便于管理维护,我们便想到了利用数据库能够比较良好地解决此类问题,由此下面我将设计出一个高校选课系统以供参考。2.2 概要分析根据 1.2 节中所描述的系统分析要求,我们的高校选课系统将包含学生、教师、管理员等实体,学生可以在规定的时间内选课、退选和成绩查询等操作;教师可以查看学生的相关信息,录入学生成绩等操作;管理员可以添加管理员,管理教师、学生等信息。2.3 开发技术开 发 工 具 : Microsoft SQL Server 2000 开 发 语 言 : SQL3开 发 技 术 : 数 据 库 开 发 技 术面 向 对 象 : 需 求 者SQL Server 2000 是 Microsoft 公司推出的 SQL Server 数据库管理系统,该版本继承了 SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行 Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。本实验中最终将使用 Microsoft SQL Server 2000 数 据 库 管 理 系 统 将 我 们 设 计 的 数 据 库 实 现 。2.4 系统主要功能实验选课系统分为教师,学生及系统管理员三类用户,学生的功能包括选课、退选、查询选课信息等,教师的功能包括学生成绩录入,查询实验信息等。管理员的功能包括新建教师、学生账户,添加课程信息,其系统功能模块如图2-1:高校选课系统学生管理员选课退选查询选课信息课程管理选课管理用户管理查询成绩信息教师查询课程信息查询学生选课信息录入学生成绩4图 2-1 系统功能模块三、 E-R 图本章节主要包含概念设计、E-R 图,以及如何将 E-R 图转换为实际的物理模型等内容。3.1 概念设计在我们的数据库系统中共有 6 个实体:学生、教师、管理员、专业、院系、课程。(1) 学生的属性:学号、姓名、性别、生日、密码(2) 教师的属性:工号、姓名、性别、生日、密码、职称(3) 管理员的属性:工号、姓名、性别、生日、密码、权限标志(4) 专业的属性:专业号码、专业名、辅导员、联系方式、专业介绍(5) 院系的属性:系号码、系名称、系主任、联系方式、系介绍(6) 课程的属性:课程号码、学时、学分、课程介绍(7) 控制设置属性:选课控制、成绩录入控制3.2 E-R 图各个实体的 E-R 图如下所示:学生密码姓名 性别 生日学号图 1 学生教师密码姓名 性别 职称生日工号图 2 教师管理员密码姓名 性别 生日工号图 3 管理员5专业专业介绍专业名 辅导员 联系方式专业号码图 4 专业系系介绍系名 系主任 联系方式系号码图 5 系课程课程介绍课程名 学时 学分课程号图 6 课程然后,将以上实体之间联系表示出来,画出数据库系统的 E-R 图,如图 7 所示:学生生日姓名性别密码学号属于系系介绍系名 系主任 联系方式系号码教师生日姓名性别职称密码工号属于专业专业介绍专业名辅导员联系方式专业号码属于管理员生日姓名 性别密码工号管理管理课程课程介绍课程名 学时 学分课程号选课讲授管理成绩MNM11MM 11MMMM111图 7 数据库系统 E-R 图6四、 逻辑结构4.1 逻辑转换根据 3.2 节中的 E-R 图可以将系统中的概念模型转换为具体的表(即关系)结构,共分为 7 个关系,详细信息如下所示:学生(学号、专业号码、姓名、性别、生日、密码)教师(教师工号、系号码、姓名、性别、生日、密码、职称)管理员(管理员工号、姓名、性别、生日、密码、权限标志)专业(专业号码、系号码、专业名、辅导员、联系方式、专业介绍)院系(系号码、系名称、系主任、联系方式、系介绍)课程(课程号码、学时、学分、课程介绍)选课信息(学号、课程号码、教师工号、成绩)4.2 细化表结构为方便,根据上述文字描述,用英文简写为表和列取名,确定列的数据类型及必要的约束规则,给出如下所示数据库表的基本结构及说明:(1) 学生信息表列名 说明 数据类型 约束StudentNum 学号 char(10) 主码MajorNum 专业号码 char(10) not null,引用tb_major 的外码StudentName 姓名 varchar(10) Not nullStudentSex 性别 char(2) not null,取“男”或“女”StudentBirthday 生日 datetime not nullStudentPassword 密码 varchar(20) not null,(2) 教师信息表列名 说明 数据类型 约束TeacherNum 教师工号 char(10) 主码7DeptNum 院系号码 char(10) not null,引用tb_dept 的外码TeacherName 姓名 varchar(10) not nullTeacherSex 性别 char(2) not null,取“男”或“女”TeacherBirthday 生日 datetime not nullTeacherTitle 职称 varchar(20)(3) 管理员信息表列名 说明 数据类型 约束ManagerNum 管理员工号 char(10) 主码ManagerName 姓名 varchar(10) not nullManagerSex 性别 char(2) not null,取“男”或“女”ManagerBirthday 生日 datetime not null(4) 专业信息表列名 说明 数据类型 约束MajorNum 专业号码 char(10) 主码DeptNum 系号码 char(10) not null,引用tb_dept 的外码MajorName 专业名 varchar(20) not nulMajorAssistant 辅导员 varchar(10) not nullMajorTel 联系方式 varchar(15) not null(5) 院系信息表列名 说明 数据类型 约束DeptNum 系号码 char(10) 主码DeptName 系名称 varchar(20) not nullDeptChairman 系主任 varchar(10) not nullDeptTel 联系方式 varchar(15) not nullDeptDesc 系介绍 text not null8(6) 课程信息表列名 说明 数据类型 约束CourseNum 课程号码 char(10) 主码CourseName 课程名 varchar(20) not nullCourseCredit 学分 float not nullCourseClass 学时 smallint not nullCourseDesc 课程介绍 text not null(7) 选课信息表列名 说明 数据类型 约束StuCourseID 选课编号 int 主码,自动递增StudentNum 学号 char(10) not null,引用tb_student 的外码CourseNum 课程号码 char(10) not null,引用tb_course 的外码TeacherNum 教师工号 char(10) not null,引用tb_student 的外码Grade 成绩 smallint(8) 控制设置表列名 说明 数据类型 约束IfTakeCourse 选课控制 char(1) not null,取“0”或“1”IfInputGrade 成绩录入控制 char(1) not null,取“0”或“1”备注:选课和成绩录入功能的开放和禁止,0 为禁止,1 为开放。五、 数据库实施本章节主要包含创建表、添加数据和创建必要的视图、触发器和存储过程9等内容。5.1 创建表考虑到各个表之间的约束条件以及外键索引等要求,在创建表的时候应当按照一定的次序进行创建,否则会出现错误,还有一种方法是先创建各个基本表,然后在对特定的表添加列和外码约束,在本报告册中将采取第一种方法。(1) tb_dept 院系信息表(2) tb_major 专业信息表CREATE TABLE tb_major(MajorNum char(10) NOT NULL PRIMARY KEY,DeptNum char(10) NOT NULL,MajorName varchar(20) NOT NULL,MajorAssistant varchar(10) NOT NULL,MajorTel varchar(15) NOT NULL,FOREIGN KEY (DeptNum) REFERENCES tb_dept(DeptNum)(3) tb_student 学生信息表CREATE TABLE tb_student(StudentNum char(10) NOT NULL PRIMARY KEY,MajorNum char(10) NOT NULL,StudentName varchar(10) NULL,StudentSex char(2) NOT NULL,StudentBirthday datetime NOT NULL,StudentPassword varchar(20) NOT NULL,FOREIGN KEY (MajorNum) REFERENCES tb_major(MajorNum)(4) tb_teacher 教师信息表CREATE TABLE tb_teacher(TeacherNum char(10) NOT NULL PRIMARY KEY,DeptNum char(10) NOT NULL,TeacherName varchar(10) NOT NULL,TeacherSex char(2) NOT NULL,CREATE TABLE tb_dept(DeptNum char(10) NOT NULL PRIMARY KEY,DeptName varchar(20) NOT NULL,DeptChairman varchar(10) NOT NULL,DeptTel varchar(15) NOT NULL,DeptDesc text NOT NULL,)10TeacherBirthday datetime NOT NULL,TeacherTitle varchar(20) NULL,FOREIGN KEY (DeptNum) REFERENCES tb_dept(DeptNum)(5) tb_manager 管理员信息表CREATE TABLE tb_manager(ManagerNum char(10) NOT NULL PRIMARY KEY,ManagerName varchar(10) NOT NULL,ManagerSex char(2) NOT NULL,ManagerBirthdate datetime NOT NULL,ManagerRights int NOT NULL)(6) tb_course 课程信息表(7) tb_stucourse 学生选课信息表CREATE TABLE tb_stucourse(StudentNum char(10) NOT NULL,CourseNum char(10) NOT NULL,TeacherNum char(10) NOT NULL,Grade smallint NULL,FOREIGN KEY (StudentNum) REFERENCES tb_student(StudentNum),FOREIGN KEY (CourseNum) REFERENCES tb_Course(CourseNum),FOREIGN KEY (TeacherNum) REFERENCES tb_teacher(TeacherNum),)(8) tb_control 控制设置表CREATE TABLE tb_control(IfTakeCourse char(1) NOT NULL check(IfTakeCourse in ( 0, 1),IfInputGrade char(1) NOT NULL check(IfInputGrade in ( 0, 1),)5.2 创建必要视图(1) 建立学生成绩视图 vi_grade,从学生、老师、选课表中选择 Grade 不为空的记录,其关键代码如下所示:CREATE VIEW vi_gradeCREATE TABLE tb_course(CourseNum varchar(10) NOT NULL PRIMARY KEY,CourseName varchar(20) NOT NULL,CourseCredit float NOT NULL,CourseClass smallint NOT NULL,CourseDesc text NOT NULL,)11ASSELECT tb_stucourse.StudentNum,StudentName,CourseName,CourseCredit,TeacherName,GradeFROM tb_stucourse,tb_student,tb_course,tb_teacherwhere tb_stucourse.StudentNum=tb_student.StudentNum andtb_stucourse.TeacherNum=tb_teacher.TeacherNum andtb_stucourse.CourseNum=tb_course.CourseNum andGrade is not null(2) 建立专业学生信息视图 vi_major,从学生、专业表中选择学生中的专业号码与专业表中专业号码相等的记录,其关键代码如下所示:CREATE VIEW vi_majorASSELECT tb_major.MajorName,StudentNum,StudentName,StudentSex,StudentBirthdayFROM tb_major,tb_studentWHERE tb_major.MajorNum=tb_student.MajorNum5.3 创建必要触发器(1) 建立学生添加院系触发器 tri_adddept,当该表中已存在所对应院系号码的院系时,系统给与错误提示并回滚,其关键代码如下所示:CREATE TRIGGER tri_adddept ON tb_deptFOR INSERT,UPDATEASIF(SELECT COUNT(*) FROM tb_dept,inserted WHERE tb_dept.DeptNum=inserted.DeptNum)0BEGINPRINT 院系号码产生冲突,请核对后重试!ROLLBACKEND(2) 建立学生添加专业触发器 tb_major,当专业信息中的院系号不对或者该表中已存在所对应专业号码的专业时,系统给与错误提示并回滚,其关键代码如下所示:CREATE TRIGGER tri_addmajor ON tb_majorFOR INSERT,UPDATEASIF(SELECT COUNT(*) FROM tb_dept,insertedWHERE tb_dept.DeptNum=inserted.DeptNum)=0BEGIN12PRINT 未找到该专业的院系信息,请添加相应院系后重试!ROLLBACKENDELSE IF(SELECT COUNT(*) FROM tb_major,inserted WHERE tb_major.MajorNum=inserted.MajorNum)0BEGINPRINT 院系号码产生冲突,请核对后重试!ROLLBACKEND(3) 建立添加学生触发器 tri_addstudent,当学生信息中的专业号不对或者系统中已存在所对应学号的学生时,系统给与错误提示并回滚,其关键代码如下所示:CREATE TRIGGER tri_addstudent ON tb_studentFOR INSERT,UPDATEASIF(SELECT COUNT(*) FROM tb_major,insertedWHERE tb_major.MajorNum=inserted.MajorNum)=0BEGINPRINT 未找到该学生的专业信息,请添加相应专业后重试!ROLLBACKENDELSE IF(SELECT COUNT(*) FROM tb_student,inserted WHERE tb_student.StudentNum=inserted.StudentNum)0BEGINPRINT 学号产生冲突,请核对后重试!ROLLBACKEND(4) 建立学生选课触发器 tri_takecourse,课程选课人数超过 40 个或者对应学生选课门数超过 5 门或者当前时间不是选课时间段时,系统给与错误提示并回滚,其关键代码如下所示:CREATE TRIGGER tri_takecourse ON tb_stucourseFOR INSERT,UPDATEASIF(SELECT COUNT(*) FROM tb_stucourse,insertedWHERE tb_stucourse.CourseNum=inserted.CourseNum)40BEGINPRINT 所对应课程选课人数不能超过40个!ROLLBACKEND13ELSE IF(SELECT COUNT(*) FROM tb_student,inserted WHERE tb_student.StudentNum=inserted.StudentNum)5BEGINPRINT 对应学生的选课不能超过5门!ROLLBACKENDELSE IF(SELECT IfTakeCourse FROM tb_control)=0BEGINPRINT 当前不是选课时间段!ROLLBACKEND5.4 创建必要存储过程(1) 建立学生选课存储过程 tri_takecourse,其作用为查询所有学生的选课记录,其关键代码如下所示:CREATE PROC proc_getcourseStudentNum char(10) OUT,StudentName char(10) OUT,CourseName varchar(20) OUT,CourseCredit float OUT,TeacherName char(10) OUTASSELECT StudentNum=tb_student.StudentNum,StudentName=tb_student.StudentName, CourseName=tb_course.CourseName,CourseCredit=tb_course.CourseCredit, TeacherName=tb_teacher.TeacherNameFROM tb_stucourse,tb_course,tb_student,tb_teacherWHERE tb_stucourse.StudentNum=tb_student.StudentNum ANDtb_stucourse.CourseNum=tb_course.CourseNum ANDtb_stucourse.TeacherNum=tb_teacher.TeacherNum(2) 建立查询教师课程存储过程 proc_teachercourse,其作用为查询指定教师所有课程的选课记录,其关键代码如下所示:CREATE PROC proc_teachercourseTeacherNum char(10),StudentNum char(10) OUT,StudentName char(10) OUT,CourseName varchar(20) OUT,CourseCredit float OUT,14TeacherName char(10) OUTASSELECT StudentNum=tb_student.StudentNum,StudentName=tb_student.StudentName, CourseName=tb_course.CourseName,CourseCredit=tb_course.CourseCredit, TeacherName=tb_teacher.TeacherNameFROM tb_stucourse,tb_course,tb_student,tb_teacherWHERE tb_stucourse.StudentNum=tb_student.StudentNum ANDtb_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论