武汉华夏理工学院课程设计课程名称数据库系统原理及应用题目网上选课系统专业计算机科学与技术班级计算机1163学号***********姓名方启豪成绩指导教师刘琳琳2018 年6 月25 日至2018年6月29日课程设计任务书设计题目:网上选课系统设计目的本课程的设计的目的是通过实践使同学们经历数据库设计、应用系统开发的全过程和受到一次综合训练,以便能较全面地理解、掌握和综合运用所学的知识。
结合具体的开发案例,理解并初步掌握系统分析、系统设计、系统实施的主要环节和步骤以及软件文档的制作能力。
设计任务(在规定的时间内完成下列任务)1 系统需求网上选课系统实现了学生在网上就可完成选课的全过程。
其E-R图如下:二、关系模式:课程(课程号,课程名,学分)学生(学号,姓名,性别,年龄,班级名)班级(班级名,班主任)选修(学号,课程号,成绩)时间安排消化资料、系统调查 1天系统分析、总体设计,实施计划、撰写报告3天演示、验收1天具体要求1、明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。
严格要求自己,要独立思考,按时、独立完成课程设计任务。
2、设计报告:要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。
设计报告正文字数不少于0.2万字(不包括附录)指导教师签名:2018年月日教研室主任(或责任教师)签名:年月日1.设计题目网上选课系统2.课题简介随着信息时代的不断进步,网上选课成为一种常见的选课方式,因此,选课系统必须完善,这就关系到学生的个人信息,课程的信息,上课教师以及上课地点,还有选课人数的统计。
3.设计目的利用一种DBMS作为设计工具,理解并应用课程中关于数据库设计的相关理论,并按照设计流程完成完整的设计库设计,包括需求分析、概念设计、逻辑设计、物理设计和实施。
同时能够应用各个阶段的典型工具。
4.设计内容完整实践应用数据库设计的工作过程:需求分析\概念设计\逻辑设计\物理设计和实施:4.1需求分析:选定一个应用,对所设计的数据库系统有一定的调研分析,其结果应该以简单的功能分析,数据字典表示;4.2概念设计:使用 E-R图作为描述工具,描述出局部和全局的E-R图;4.3逻辑设计:将E-R图转化为相应的关系模式,并根据范式理论进行优化分析,关系模式不少于三个;4.4物理设计:根据需要设计出必要的索引等结构;4.5实施:以某种DBMS为工具创建出完整的数据库;5.需求分析5.1功能分析:首先,建立一些基本表(尽可能满足3N),对大部分基本信息组合、存储;其次通过建立视图实现对冗余数据的有必要保留(查询并计算基本表属性得到新的作为视图属性)并实现对以下基本信息的显示。
课程信息:课程号,课程名,学分;学生信息:学号,姓名,性别,年龄,班级名;班级信息:班级名,班主任;选修信息:学号,课程号,成绩。
在此基础上进行以下目标查询,由于有些查询常用且较复杂,为了简化其应用,所以将它们定义为存储过程。
查询学号是否存在;(存储过程)查询课程号是否存在;(存储过程)查询该课程是否已经被选过了;(存储过程)退选过程信息查询;(普通查询)接着根据需要建立触发器、存储过程、索引,实现对数据库的优化。
最后,进行过程功能的验证。
允许具有权限者对数据库进行数据更新和查询等合法操作。
5.3数据结构6.概念结构设计设计概念结构通常有四类方法:自顶向下,自底向上,逐渐扩张以及混合策略。
本系统采用的是自底向上的方法。
即首先定义全局的概念结构的框架,然后逐步细化。
根据自顶向下地进行需求分析然后再自底向上地进行概念设计。
6.1概念结构设计的步骤第一步:抽象数据;第二步:设计局部E-R图;第三步:把各分E-R图综合成总体E-R图,消除各种冲突;第四步:对总体E-R图进行优化,消除冗余数据和冗余联系;6.2抽象初步数据:实体:课程、学生、班级联系:学生选课关系、学生所在班级关系学生与课程的关系是多对多的关系;学生与客户班级的关系是多对一的关系。
属性:课程的属性:课程号、课程名、学分;主码为课程号学生的属性:学号、姓名、性别、年龄;主码为学号班级的属性:班级名、班主任;主码为班级名学生选课关系属性:学号、课程号、成绩;主码为学号和课程号6.3分E-R图:课程E-R图学生E-R图班级E-R图班级班级名班主任6.4优化后的总E-R图7.逻辑设计7.1关系模式存取方式选择网上选课系统是根据同一关系进行数据的共享,从而达到选课的目的,所以在数据管理同一种数据的时候,会把同一种数据建立多条存取路径以此来满足不同学生对系统的多种应用要求。
在本次设计中,我们应用数据库管理系统在数据表中建立过程中针对主键自动创建索引来实现数据的存取。
7.2逻辑设计阶段将系统E-R模型转换为关系模式,并对给出的关系模式进行关系规范化处理(尽量满足3NF),得到系统全部的关系模式,并标明主键、外键此部分一律采用英文命名。
然后进行用户外模式的设计,针对中国用户,此处用中文命名。
7.3将E-R模式转换为以下关系模式:C(Cno,Cname,Credit);主键:CnoS(Sno, Sname, Ssex,Sage);主键:SnoSC(Sno, Cno, Grade);主键:Sno,CnoT(Tname, Teacher);主键:Teacher8.物理设计阶段物理设计阶段:为一个逻辑数据模型选取一个最适合应用环境的物理结构(存储结构与存取方法),数据库的物理设计通常分为两步:A、确定数据库的物理结构;B 、对物理结构进行时间和空间效率评价。
8.1创建数据库create database studenton primary(name='student',filename='d:\program files\microsoft sql server\mssql.1\mssql\data\ student.mdf',size=10mb,maxsize=unlimited,filegrowth=10%)log on(name='student_log',filename='d:\program files\microsoft sqlserver\mssql.1\mssql\data\student_log.ldf',size=1mb,maxsize=5mb,filegrowth=3%)截图得:8.2对各个表的建立--建立表Screate table S(Sno char(10)primary key,Sname nvarchar(8),Ssex nchar(1),Sage char(10))--建立表Ccreate table C(Cno char(10)primary key, Cname nchar(10),Credit int)--建立表Tcreate table T(Tname nchar(10)primary key, Teacher nchar(10))8.3表中插入数据S表C表SC表T表8.4建立存储过程检验学号、课程号是否存在use studentgocreate procedure sp_delete(@Sno char(10),@Cno char(10))asif not exists(select*from S where Sno=@Sno) beginprint'该学号不存在!'endif not exists(select*from C where Cno=@Cno) beginprint'该课程号不存在!'end创建存储过程,查询某个学生的学号、姓名、其选修的课程名及成绩use studentgocreate procedure GetStudentasselect S.Sno,Sname,Cname,Grade from S,C,SCwhere S.Sno=SC.Sno and o=ogo8.5建立视图8.5.1查看课程信息视图create view View_Courseasselect o 课程号,Cname 课程名,Credit 学分,count(o)人数from S,C,SCwhere S.Sno=SC.Sno and o=ogroup by o ,Cname ,Credit8.5.2查询学生信息视图create view View_Studentasselect Sno,Sname,Ssex,Sagefrom S8.6建立触发器use studentgocreate trigger reminder on Sfor insert,updateas print'你在插入或修改学生信息'9.结论通过此次的课程设计,让我明白了很多东西,比如自己的逻辑思维有点跟不上设计的节奏,很多地方一点通,可后面还是不通,不过经历了这次课程设计之后,让我对数据库这门课有了更深的了解。
完成此次课程设计的首要任务是实现数据库的表示和存储,即创建数据库和表,同时更加深入的学习了视图、索引、触发器和存储过程,将这些所学的知识融汇贯通,来达到基本目的,但是,由于很多不可抗因素,本次课程设计也有很多不足之处,比如SQL语句的不完整,实体间的关系不够完善,本次课程设计学到了很多方面的知识。
10.参考文献[1]袁润章,自蔓延高温合成技术研究进展.武汉:武汉工业大学出版社,1994[2]Schacht E.Industrial polysaccharides. Amsterdam:Elsevier Science,1987[3]郭景坤.陶瓷材料的强化与增韧新途径的探索.无机材料学报,1998,13910;23-26设计过程及答辩回答问题记载:(至少三个问题)1.怎么实现出院时能够显示实时时间?答:使用getDate()方法,将会按照YYYY-MM-DD显示时间。
2.如何实现病床互斥?答:在ward病床表里面设置一个Hflag值,如果有人入住,触发器会将Hflag 的值置为1,如果出院了之后,就将Hflag置回0。
3.你设置的触发器实现了哪些功能?答:病人的出院、出院的记录功能,无法修改医生信息的功能,修改药品或检查信息时的提醒功能等。
指导教师评语:签名:2018年6月29日附录:课程设计说明书的书写格式与细则一、正文题序层次是文章结构的框架。
章条序码统一用阿拉伯数字表示,题序层次可以分为若干级,各级号码之间加一小圆点,末尾一级码的后面不加小圆点,层次分级一般不超过4级为宜,示例如下:如果有前言或其它类似形式的章,可以不编序号,也可以编为“0”。