实训实习报告项目:数据库课程设计姓名:专业:信息管理与信息系统班级:信息系统1202学号:指导教师:完成时间:2014-7-11实训实习报告课程名称数据库课程设计课程代码09120352实训地点67E403姓名孟冬青专业信息系统1202学201206012024时2014年6月30日班级号间一、实训目的:数据库课程设计实验是一门独立开设的实验课程。数据库课程设计实验对于巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要。本课程设计实验主要围绕两方面内容:数据库设计和基本数据库编程实践。通过本实验,使学生了解数据库系统的理论,掌握数据库的设计方法及数据库的运用和开发技术。1.掌握数据库设计的基本方法,熟悉数据库设计的步骤;2.通过设计数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力;3.学习数据库应用系统开发方法。培养学生初步的软件设计能力,形成良好的编程风格。二、实训内容:(可根据内容增加或另附页)1.系统分析与数据库设计阶段(1)选择一个实际应用数据库系统的课题。建议通过社会调查获得用户需求,(2)进行系统需求分析和系统设计,写出系统分析和设计报告。(3)设计数据模型并进行优化,确定数据库结构、功能结构和系统安全性和完整性要求。2.应用程序设计阶段(1)完成数据库定义工作,实现系统数据的数据处理和数据录入。(2)实现应用程序的设计、编程、优化功能,实现数据安全性、数据完整性等功能,并针对具体课题问题提出解决方法。3.系统集成调试阶段对系统的各个应用程序进行集成和调试,进一步优化系统性能,改善系统用户界面。4.课程设计报告撰写阶段该阶段应完成以下文档资料的撰写:(1)课程设计的题目、系统的总功能和各子模块的功能。(2)系统的总功能和各子模块功能构成和描述。(3)E-R图、主要界面设计图、程序处理流程图等。(4)使用的数据库表结构的详细情况。(5)课程设计的总结,主要包括以下内容。课程设计中遇到的主要问题和解决方法。创新和得意之处。课程设计中存在的不足,需进一步改进的设想。课程设计的感想和心得体会。以上内容要求干净整洁,符合课程设计的要求和规范。实训题目:学生选课系统实训要求:系统功能基本要求:教师信息,包括教师编号、教师姓名、性别、年龄、学历、职称、毕业院校,健康状况等。学生信息,包括学号、姓名、所属院系、已选课情况等。教室信息,包括,可容纳人数、空闲时间等。选课信息,包括课程编号、课程名称、任课教师、选课的学生情况等。成绩信息,包括课程编号、课程名称、学分、成绩。按一定条件可以查询,并将结果打印输出。课程设计报告:1.需求分析1.1系统需求:用户的需求具体体现在选课信息和用户信息的提供、保存、更新和查询的方面。这就要求数据库的设计必须合理,使之能够充分满足各种信息的输入和输出,保证数据存储的可靠性,并且能够快速取出和存入。而前台显示部分,应具有人性化的界面,方便用户操作。因各个学校的实际情况不同,系统应该具有兼容性。例如:一些学校学生人数较多,同时登陆系统,系统承载的负荷就很大。系统需要同时处理很大的数据量,这时系统不会因此崩溃。此外,系统还应该具有较强的安全性,保证身份不同的用户,不能越权操作。非合法用户不能对数据进行操作.1.2功能需求;通过系统功能的分析,结合需求分析员在各大高校实地考查,调查的对象涵盖了,学校的教职工、在校师生。特别是对已经运行了与本系统同类产品的学校的师生使用选课管理系统心得体会进行了分析,总结出如下的需求信息:(1)学生的需求:能进行选课,查看管理员发布的选课信息,自己的选课情况,本人的基本信息,课程的成绩;(2)教师的需求:能查看自己的个人信息,及所授课的班级的所有学生的本门课程的成绩信息,并能进行增加和修改;(3)管理员的需求:对学生选课情况进行管理,包括发布选课信息,对学生的选课情况进行查看。管理员还可以对授课老师的信息进行管理.1.3系统功能模块图学生选课数据库系统学生教室教师成绩课程学生姓名学号性别年龄所在系部教室编号可容纳人数空闲时间编号姓名性别年龄院系学号教师编号课程名成绩院系课程号教师编号学号教室号1.4数据字典:教师:列名数据类型是否允许空备注教师编号Char(10)否主键教师姓名Char(10)否教师性别Char(10)否教师年龄Char(10)是所在院系Char(10)是学生:列名数据类型是否允许空备注学生学号Char(10)否主键学生姓名Char(10)否学生年龄Char(10)否所在系部Char(10)否学生性别Char(10)教室:列名数据类型是否允许空备注教室编号Char(10)否主键可纳人数Char(10)否空闲时间Char(10)否课程:列名数据类型是否允许空备注课程号Char(10)否主键教师编号Char(10)否学生编号Char(10)否教室号Char(10)否成绩:列名数据类型是否允许空备注学号Char(10)否主键教师编号Char(10)否课程名Char(10)成绩Char(10)否学分Char(10)否2概念结构设计2.1部分E-R图:学生;教师;..学生学号姓名性别年龄系部教室:选课:教师编号姓名性别院系年龄教室教室编号可容纳人数空闲时间成绩:2.2全局E-R图:课程课程编号教室编号教师编号学号成绩课程编号课程名称学分课程成绩学号3逻辑结构设计根据需求分析中的E-R图,通过对实体的属性和之间的联系的分析,我们将其由概念模型向关系模型转化,并且根据范式化理论进行优化3.1教师课程概念模型向关系模型的转化教师(工号,教师姓名,性别,年龄,身份,密码,课程号)课程(课程编号,课程名称,任课教师,选课的学生情况)学生(学号,姓名,性别,年龄,密码,系部)教室(教室编号,可容纳人数,空闲时间)成绩(课程编号,课程名称,学分,成绩)3.2确定范式级别根据上述分析所归结出来的数据依赖的种类和在本系统实际的开发过程中,需要涉及多表的查询及表的修改和删除,且存在多值依赖的实际情况下,其关系模式应达到BCNF4数据库的实施和维护4.1用管理语句创建数据库:学生选修课程教师教授教室授课属于成绩考试n11nn1nnmn4.11创建表:创建成绩表CREATETABLE[dbo].[成绩]([学生学号][nchar](10)NOTNULL,[教师编号][nchar](10)NOTNULL,[课程名][nchar](10)NOTNULL,[成绩][nchar](10)NOTNULL,[学分][nchar](10)NOTNULL,CONSTRAINT[PK_成绩]PRIMARYKEYCLUSTERED教师表CREATETABLE[dbo].[教师]([教师编号][nchar](10)NOTNULL,[教师姓名][nchar](10)NOTNULL,[教师性别][nchar](10)NOTNULL,[教师年龄][nchar](10)NOTNULL,[所在院系][nchar](10)NOTNULL,CONSTRAINT[PK_教师]PRIMARYKEYCLUSTERED教室表CREATETABLE[dbo].[教室]([教室编号][nchar](10)NOTNULL,[可容纳人数][nchar](10)NOTNULL,[空闲时间][nchar](10)NOTNULL,CONSTRAINT[PK_教室]PRIMARYKEYCLUSTERED课程表CREATETABLE[dbo].[课程]([课程号][nchar](10)NOTNULL,[教师编号][nchar](10)NOTNULL,[学生编号][nchar](10)NOTNULL,[教室号][nchar](10)NOTNULL,CONSTRAINT[PK_课程]PRIMARYKEYCLUSTERED学生表CREATETABLE[dbo].[学生]([学生学号][nchar](10)NOTNULL,[学生姓名][nchar](10)NOTNULL,[学生性别][nchar](10)NOTNULL,[学生年龄][nchar](10)NOTNULL,[所在院系][nchar](10)NOTNULL,CONSTRAINT[PK_学生]PRIMARYKEYCLUSTERED4.2创建数据库关系图4.3录入信息4.31成绩表教师表教室表课程表学生表3.4查询数据库:3.41查询性别为“女”得学生:select*from学生where学生性别='女'查询名字叫“张璐”的学生:select*from学生where学生姓名='张璐'删除学号为“20120603”的学生:deletefrom学生where学生学号='20120603'插入一名名叫“董冬冬”的教师:insertinto教师(教师编号,教师姓名,教师性别,教师年龄,所在院系)values('006','董冬冬','男','35','商学院')更新学生姓名,把李芳改为王阳:update学生set学生姓名='王阳'where学生姓名='李芳'学生成绩由小到大排序:select成绩,MAX('成绩'),MIN('成绩')from成绩,学生where成绩.学生学号=学生.学生学号groupby成绩go查询学生成绩小于80的学生selectdistinct学生姓名from成绩,学生where成绩80查询在03号教室上课的课程号,教师编号以及学生编号select课程号,教师编号,学生编号from课程where教室号='03'求学生的平均成绩和学号以及课程名:selectround(avg(成绩),2)as平均成绩,学生学号,课程名from成绩groupby成绩.学生学号,课程名4.5创建视图:视图查询:查询学号为20120601的学生:use学生选课数据库goselect*fromView_1whereView_1.学生学号='20120601'5数据库安全性:结论:通过这次实验,让我对sqlserver2008的使用更加熟悉了,同时也加深了我对课本上数据库知识的理解,这次实验可以说是我第一次完成的一个整体的数据库实验。此次实验中,我完成了从概念设计到逻辑设计,也就是完成了ER图的设计并完成了向关系模型的转换,完成了数据库的建立、表的建立、视图的创建,最后还完成了表之间的关系图。一个数据库的创建首先要对客户的需求进行充分的分析,找出创建数据库所需的实体和实体间的关系画出E-R图,确定要创建的表的数量和每张表的属性、主键和外键。在动手实验的过程中我遇到很多困难,比如如何删除表中的数据但不保留到日志文件中,数据的不普遍性所造成的查询等操作的空表等等,但是正是这些问题才让我学到了更多,同时也享受到了解决问题后的喜悦。更重要的是,我对数据库产生了浓厚的兴趣,相信以后会把学到的东西应用到实践中去的。不足:不足就是由于我们对数据库知识的掌握有限和不牢固,角色和视图的创建没有想象中的完美,备份和还原也只是初步的形成,以致学生选课管理系统只是达到了基本要求,有待进一步改善,希望老师给予批评三、实训总结:通过这次的课程设计实验课,我发现自己对数据库课程的兴趣有了很大提高,而且随着在实验不断地进行,不断地进行修改,对直接从学习课本的知识有了更多了解并有了一定的掌握,通过实验我懂得了如何创建库、表,增,删,改,查也更为熟练。对与整体有个全面的提高。以前学完后总是断断续续的,连接感比较弱,现在可以做好细节了。在自己没做数据库课程设计以前,总是觉得自己一定又很多都不会,但是现在做出来了,所以我觉得自己还是有能力做一些实操作方面的东西。总之,通过这次的课程设计,算是为自己的数据库的学习进行整体的总结,也为以后学习数据库类的知识打下了基础。教师:李海梅成绩: