欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据库设计学生选课系统(共17页).docx

    • 资源ID:14548877       资源大小:37.16KB        全文页数:17页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据库设计学生选课系统(共17页).docx

    精选优质文档-倾情为你奉上数据库原理与应用实验指导与报告 2010 / 2011 学年 第 2 学期姓 名: 季亚 学 号: 班 级: 09数媒(1)班 指导教师: 周蓓 计算机科学与工程学院2011专心-专注-专业目录实验八 数据库设计一、 概要设计1.1 目的和意义随着无纸化办公的普遍实现,信息的自动处理以及网络式的信息交互方式已经被人们广泛应用。让计算机来管理学生的信息是现在各个高校都在积极进行的工作之一,也是高校教学管理工作的重要内容之一。网上选课与传统的选课方式相比更加节约资源,增加了学生选课自主权。 学生选课系统作为一种现代化的教学技术,越来越受到人们的重视,是一个学校不可或缺的部分, 学生选课系统就是为了管理好选课信息而设计的。学生选课系统的将使选课管理工作规范化、系统化、程序化,避免选课管理的随意性,提高信息处理的速度和准确性,能够准确、及时、有效的查询和修改学生选课情况。与传统的选课方式相比,网上选课系统利用局域网为学生选课带来了极大的便捷。学生在公共机房,或者宿舍的个人电脑上便可以通过校园网络来选课。在选课期间内,学生能够使用选课系统灵活的修改自己的选课情况,大大提高了学校选课工作的效率。教务处的教师则可以通过选课系统的管理员子系统来管理学生的选课情况,使得学生选课工作达到系统化和自动化,大大提高了学校的工作效率,为广大师生及相关人员节省了极多的时间。数据库对于一个应用系统的意义是相当重要的,一个设计良好的数据库系统一方面,能够给开发者带来便捷,更轻松的进行系统设计与编码;另一方面,对于系统的后期维护也非常重要,一个良好的数据库系统能够保证系统的可扩充性,以及系统的移植性等问题。1.2 内容和要求本实验将设计出一个高校网上选课数据库系统,其要求简要如下:(1) 系统用户由三类组成:教师、学生和管理员。(2) 管理员负责的主要功能: 用户管理(老师、学生及管理员的增、删、改); 课程管理(添加、删除和修改); 选课管理(实现选课功能开放和禁止、老师成绩输入开放和禁止)。(3) 学生通过登录,可以查询课程的基本信息、实现选课、退课和成绩查询;(4) 老师通过登录,可以查看选课学生的基本信息,可以输入成绩。二、 需求分析2.1 背景全校性选修课开设的目的在于扩大学生的知识面、加强学生素质教育、培养复合型高级人才,具有不可替代的重要性。随着教育改革的不断深入和素质教育的加强,学分制的实施,选修课在一个学生的培养计划中占的比重将越来越大。网上选课系统的出现使同学们能够更加自主、便捷、准确的进行选课。但是,由于一般高校中的学生都比较多,因此带来了诸多如信息管理等问题,鉴于需要将学生信息、选课信息等信息数字化以便于管理维护,我们便想到了利用数据库能够比较良好地解决此类问题,由此下面我将设计出一个高校选课系统以供参考。2.2 概要分析根据1.2节中所描述的系统分析要求,我们的高校选课系统将包含学生、教师、管理员等实体,学生可以在规定的时间内选课、退选和成绩查询等操作;教师可以查看学生的相关信息,录入学生成绩等操作;管理员可以添加管理员,管理教师、学生等信息。2.3 开发技术开发工具:Microsoft SQL Server 2000 开发语言:SQL开发技术:数据库开发技术面向对象:需求者SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。本实验中最终将使用Microsoft SQL Server 2000数据库管理系统将我们设计的数据库实现。2.4 系统主要功能实验选课系统分为教师,学生及系统管理员三类用户,学生的功能包括选课、退选、查询选课信息等,教师的功能包括学生成绩录入,查询实验信息等。管理员的功能包括新建教师、学生账户,添加课程信息,其系统功能模块如图2-1:图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 管理员图4 专业图5 系图6 课程然后,将以上实体之间联系表示出来,画出数据库系统的E-R图,如图7所示:图7 数据库系统E-R图四、 逻辑结构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生日datetimenot nullStudentPassword密码varchar(20)not null,(2) 教师信息表列名说明数据类型约束TeacherNum教师工号char(10)主码DeptNum院系号码char(10)not null,引用tb_dept的外码TeacherName姓名varchar(10)not nullTeacherSex性别char(2)not null,取“男”或“女”TeacherBirthday生日datetimenot nullTeacherTitle职称varchar(20)(3) 管理员信息表列名说明数据类型约束ManagerNum管理员工号char(10)主码ManagerName姓名varchar(10)not nullManagerSex性别char(2)not null,取“男”或“女”ManagerBirthday生日datetimenot 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系介绍textnot null(6) 课程信息表列名说明数据类型约束CourseNum课程号码char(10)主码CourseName课程名varchar(20)not nullCourseCredit学分floatnot nullCourseClass学时smallintnot nullCourseDesc课程介绍textnot 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为开放。五、 数据库实施本章节主要包含创建表、添加数据和创建必要的视图、触发器和存储过程等内容。5.1 创建表考虑到各个表之间的约束条件以及外键索引等要求,在创建表的时候应当按照一定的次序进行创建,否则会出现错误,还有一种方法是先创建各个基本表,然后在对特定的表添加列和外码约束,在本报告册中将采取第一种方法。(1) tb_dept院系信息表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,)(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,TeacherBirthday 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课程信息表CREATE 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,)(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_gradeASSELECT tb_stucourse.StudentNum,StudentName,CourseName,CourseCredit,TeacherName,GradeFROM tb_stucourse,tb_student,tb_course,tb_teacherwhere tb_stucourse.StudentNum=tb_student.StudentNum and tb_stucourse.TeacherNum=tb_teacher.TeacherNum and tb_stucourse.CourseNum=tb_course.CourseNum and Grade 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)=0BEGINPRINT '未找到该专业的院系信息,请添加相应院系后重试!'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个!'ROLLBACKENDELSE IF(SELECT COUNT(*) FROM tb_student,inserted WHERE tb_student.StudentNum=inserted.StudentNum)>5BEGINPRINT '对应学生的选课不能超过5门!'ROLLBACKENDELSE IF(SELECT IfTakeCourse FROM tb_control)='0'BEGINPRINT '当前不是选课时间段!'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.TeacherName FROM tb_stucourse,tb_course,tb_student,tb_teacher WHERE 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,TeacherName char(10) OUTASSELECT StudentNum=tb_student.StudentNum,StudentName=tb_student.StudentName, CourseName=tb_course.CourseName,CourseCredit=tb_course.CourseCredit, TeacherName=tb_teacher.TeacherName FROM tb_stucourse,tb_course,tb_student,tb_teacher WHERE tb_stucourse.StudentNum=tb_student.StudentNum ANDtb_stucourse.CourseNum=tb_course.CourseNum ANDtb_stucourse.TeacherNum=tb_teacher.TeacherNum andtb_teacher.TeacherNum=TeacherNum(3) 建立查询学生课程存储过程proc_studentcourse,其作用为查询指定学生所有课程的选课记录,其关键代码如下所示:CREATE PROC proc_studentcourseStudentNum char(10),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.TeacherName FROM tb_stucourse,tb_course,tb_student,tb_teacher WHERE tb_stucourse.StudentNum=tb_student.StudentNum ANDtb_stucourse.CourseNum=tb_course.CourseNum ANDtb_stucourse.TeacherNum=tb_teacher.TeacherNum andtb_student.StudentNum=StudentNum六、 总结经过这一个学期数据库原理与应用的学习,我对数据库的使用更加顺手了,尤其是最近两个星期的数据库最后一个实验(数据库设计)给我带来了挑战,数据库设计的是一个系统,而非一两张表,因此在对待表与表之间的关系的时候要有一种宏观上的认识。在设计这个数据库系统的时候我学到了许多新知识,如使用PowerDesign数据模工具对数据库逻辑结构的建立,转换为物理模型,然后连接到SQL Server,再进行视图、触发器和存储过程的设计等。在使用过程中,查阅了不少资料,包括网上和书籍等,锻炼了我的自学能力!参考文献1 王珊,萨师煊. 数据库系统概论M.北京:高等教育出版社.2006.5(2010重印).2 白尚旺,党伟超.PowerDesign软件工程技术M.北京:电子工业出版社.2004.8.

    注意事项

    本文(数据库设计学生选课系统(共17页).docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开