数据库课程设计报告_第1页
数据库课程设计报告_第2页
数据库课程设计报告_第3页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库系统课程设计学生姓名:班学号:指导教师:中国地质大学年 月曰教务管理系统1、需求分析教务管理系统该教学系统主要提供数据维护、学生选课和教师授课信息查询功能。其实现的功能(即其包含的查询)有:系统中对教师、学生基本信息的录入;系统中对教师、学生的基本信息 查询;查询学生的选课情况;查询教师的授课情况;还包括学生选课功能。该数据库系统包括学生密码表、学生信息表、教师信息表、教师密码表、学生选课表、课程匹配表,管理员 密码表七个关系表, 基本情况如下:三张密码表均有相应账户和密码;教师信息表有工作证号、姓名、性别、族别、政治面貌、出生年月、联系方式、所在系、所在学院、职称;学生 表有学号、姓名

2、、性别、族别、政治面貌、出生年月、联系方式、班号、所在系、所在学院; 课程有课程名、学分、名额、上课时间信息;授课表有课程号、工作证号信息;学生选课表 有课程名称、课程号、授课老师、授课时间、授课地点、剩余容量、工作证号、成绩。课程 匹配表则有课程号,学号,学生姓名,班号,所在专业,所在学院,成绩。每个学生都属于 一个班,每个教师也都属于一个系。一名教师可以教多门课,一门课可以有几位主讲老师, 一名同学可以选多门课。学生、教师都有可以有重名,工作证号、学号可以作为标识。系统中的实体: 教师:工作证号、姓名、性别、职称、电话等; 学生:学号、姓名、性别、出生年月、职位、电话等; 班级:班号、最低

3、总学分、人数等; 系:系代号、系名、系办公室电话等; 课程:课序号、课名、学分、上课时间、名额等。实体间关系: 每个学生都属于一个班,每个班都属于一个系,每个教师也都属于一个系; 每个班的班主任都由一名教师担任; 一名教师可以教多门课,一门课可以有几位主讲老师,但不同老师讲的同一门课其课序号是不同的(课序号是唯一的); 一名同学可以选多门课,一门课可被若干同学选中; 一名同学选中的课若已学完,应该记录有相应成绩; 本单位学生、教师都有重名,工作证号、学号可以作为标识。系统的需求: 教学系统主要提供数据维护、选课和信息查询; 系统中各对象的基本信息录入与查询; 指定班、系的学生信息查询; 学生的

4、成绩、学分情况查询; 教师授课情况和学生选课情况查询。系统的组成:教务管理系统包括教师管理子系统、学生管理子系统、管理员管理子系统。其中各个系统中拥有独自的一套查询、添加、删除、更新操作。系统管理员进行数据维护的操作。2、概念设计(1)概念模型(E-R图):学生"工作证号选课E-R图学号性别Ar姓名m电话授课E-R图r 年龄名额J总E-R图1区别老师的数据项Bigi nt20决定姓名性别等教师属性2允许重名Char10决定性别等教师属性3老师性别Char104所在系Char105老师的联系方式Bigi nt206登录验证Char207登录验证Char208所在学院Char309所属民

5、族Char3010老师的职称Char2011老师的政治面貌Char2012学院电话Bigi nt2013老师出生年月Char2014区别学生的数据项Bigi nt20决定姓名性别等学生属性15允许重名Char1016学生性别Char1017允许重复Char18允许空值Char1019学生联系方式Char1120登录验证Char2021登录验证Char2022所在学院Char3023所属民族Char3024学生的政治面貌Char2025学生联系方式Bigi nt26区别课程的数据项Char10决定课名学分等课程属性27课程名称Char1028所含学分Char1029上课日期Char3030课程限

6、制最高人数Char1031学生所选课课程号Char10由课程表课程号和学生表学号决定32学生学号Char2033学生所选课课程号Char10由课程表课程号和学生表学号决定34教师工作证号n char20数据流1工作证号教师信息2插入的信息教师信息3学号学生信息4插入的信息学生信息5学号课程信息7选课信息课程匹配表8学号选课信息9课程号课程匹配表总数据流图录入选课查询 评价5.0更新:数据结构1教师实体工作证号、姓名、性别、族别、政治面貌、出生年月、联系 方式、所在系、所在学院、职称2学生实体学号、姓名、性别、族别、政治面貌、出生年月、联系方式、 所在系、所在学院、班号3课程实体课程号、课名、余

7、量、上课时间、上课地点4学生实体和课程实体学号、课程号、成绩5教师实体和课程实体工作证号、课程号3、逻辑结构设计关系的描述根据数据库系统设计的最基本的要求,消除依赖集F中的部分依赖和传递依赖,消除插入异常、删除异常、 修改异常,达到第三范式无损链接和保持依赖,从而得到以下关系模型 以及其主码:教师(工作证号、姓名、性别、电话、所在系、用户名、用户密码) 学生(学号、姓名、性别、年龄、所在系、班号、用户名、用户密码)课程(课程号、课程名、学分、名额、上课时间) 选课(课程号、学号)授课(课程号、工作证号)以上加下划线的表示关系模型里面的主码。实体间的联系分析教师一班级:1:1 ;系一教师:1:n

8、 ;系一班级:1:n ;班级一学生:1:n ;课程一教师:m:n ;课程一学生:m:n4、物理设计4.1物理存储结构1存取教师信息教师实体其中一项或多项项信息教师信息或任课信息2存取学生信息学生实体其中一项或多项项信息学生信息或选课信息3存取课程信息课程实体其中一项或多项项信息课程信息或选课信息或任课信息4存取选课信息学生所有选课记录选课信息或课程信息我本次课程设计采用了 SQLsever平台进行存储建立基本表与信息。编写关系模式,载入数据。其存在多种存取方法。 并且首先要运行调试软件的运行恢复部分,确保数据日后的转储与恢复。Student 表DROP TABLE IF EXISTS '

9、;Stude nt'CREATE TABLE 'stude nt' (' 学号' bigint() NOT NULL,' 姓名 ' char(30) NOT NULL,性别 ' char(10) DEFAULT NULL,' 族别 ' char(30) NOT NULL,' 政治面貌 ' char(20) NOT NULL,' 出生年月 ' char(30) NOT NULL,' 联系方式 ' bigint() NOT NULL,' 班号 'bigin

10、t()NOT NULL,' 所在专业 ' char(20) NOT NULL,' 所在学院 ' char(20) NOT NULL,PRIMARY KEY (' 学号'),KEY ' 姓名' (' 姓名') ENGINE=InnoDB DEFAULT CHARSET=utf8;Teacher 表DROP TABLE IF EXISTS 'Teacher'CREATE TABLE 'Teacher' (' 姓名 ' char(30) NOT NULL,性另ij '

11、; char(10) DEFAULT NULL,' 族别 ' char(30) NOT NULL,' 政治面貌 ' char(20) NOT NULL,' 出生年月 ' char(30) NOT NULL,' 联系方式 ' bigint() NOT NULL,' 职称 'char(20)NOT NULL,' 所在专业 ' char(20) NOT NULL,' 所在学院 ' char(20) NOT NULL,学院电话' char(20)NOT NULL,PRIMARY KE

12、Y (' 工作证号' ) ENGINE=InnoDB DEFAULT CHARSET=utf8;选课表DROP TABLE IF EXISTS 'studentchoose'CREATE TABLE 'studentchoose' ('cNum' varchar(7) NOT NULL,'Name1' varchar(5) NOT NULL,PRIMARY KEY ('cNum') ENGINE=InnoDB DEFAULT CHARSET=utf8;- studentchoose 表DROP TA

13、BLE IF EXISTS 'stock'CREATE TABLE 'stock' (' 课程名称 ' char(30) NOT NULL,' 课程号 ' bigint() NOT NULL,' 授课老师 ' char(30) NOT NULL,' 授课时间 ' char(30) NOT NULL,' 剩余容量 ' char(30) NOT NULL,' 工作证号 ' char(30) NOT NULL,' 成绩 ' bigint() NOT NULL

14、,PRIMARY KEY (' 课程号 '),) ENGINE=InnoDB DEFAULT CHARSET=utf8;- ATapparier 表DROP TABLE IF EXISTS 'ATapparier'CREATE TABLE 'ATapparier' (' 学号 ' bigint() NOT NULL,' 姓名 ' char(30) NOT NULL,班号' char(20)NOT NULL,' 所在专业 ' char(20) NOT NULL,' 所在学院 '

15、 char(20) NOT NULL,成绩' char(20)NOT NULL,PRIMARY KEY (' 课程号 ') ENGINE=InnoDB DEFAULT CHARSET=utf8;DROP TABLE IF EXISTS 'ATapparier'CREATE TABLE 'ATapparier' (' 课程号 ' bigint() NOT NULL,' 学号 ' bigint() NOT NULL,' 姓名 ' char(30) NOT NULL,班号' char(20

16、)NOT NULL,' 所在专业 ' char(20) NOT NULL,' 所在学院 ' char(20) NOT NULL,成绩' char(20)NOT NULL,PRIMARY KEY (' 课程号 ') ENGINE=InnoDB DEFAULT CHARSET=utf8;4.2 索引设计教务管理系统是一个多用户共享系统, 对同一个关系要建立多条存取路径才能满足多用户的多种应用要求。数据库管理系统一般提供多种存取方法:第一类是缩阴方法,目前主要是B+树索引方法;第二类是聚簇方法; 第三类是Hash方法。我们现在主要采用 B+树索

17、引存 取方法。一个属性经常在查询条件中出现,则考虑这个(组)属性上建立索引(或组合索引);如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引; 如果一个(组)属性经常在链接操作的链接条件中出现,则考虑在这个(组)属性上建立索 引一一学号,工作证号,课程号。我将表和索引放在不同的磁盘上, 在查询时,由于磁盘驱动器秉性工作,可以提高物理I/O读写的效率;将比较大的表,如"选课信息”,分别放在两个磁盘上,以加快存取速度,这在多用户环境下特别有效;另外将日志文件与数据库对象9表、索引等)放在不同的磁盘上,以改进系统的性能。5、系统实施5.1DBMS语言选择我选用的

18、是 SQL Sever系统的语言,基于 Microsoft Visual Studio 2010 平台呃C#语 言编写的界面。较为简单容易。5.2数据输入在SQL Sevel中进行一些数据的手动输入(或查询语句进行输入)用以进行测试,之 后用户可在管理系统中进行相关信息的添加。Studentchoose表初始信息:Studentbase表初始信息:Teacherbase表初始信息:Adm inm essage表初始信息:5.3编写代码Str ing conn = "Data Source=.;l nitial Catalog=cyh st class;l ntegratedSecur

19、ity=True" ;/链接语句在编写代码的时候遇到很多问题,比如常见的几个问题就是少添加头文件,链接查询不对,SQL语句使用不对,高级查询等等一系列问题。5.4过程实施在实现选课功能的时候,首先在数据库内对本学期要开设的课程进行预制,之后学生选课,只能一次选择一门,之后输入课程号,同时将登陆时的学会设置为全局变量,在c#中进行换页传值,将学号等个人信息在学生主页进行显示,选课时,则将所选课程与自己的学号以插入的方式插入Studentchoose,之后,之后分别从学生选课表调用显示到学生课程信息,教师授课信息中,之后在教师批改成绩时,将成绩与stude ntchoose表联系对应,完

20、成学生-课程-成绩的三位一体的对应关系,命名为STapparier,之后进行更新操作,并同步SQL查询显示到学生成绩查询界面。管理员则是对所有信息进行汇总查询修改,将不同信息 封装起来,对于教师和学生实体部分显示,对于管理员全部显示。同时对于学生还可进行注册报道,数据库中为每个学生提供了一个学号和初始密码,学生到校后进入教务系统修改密码,补充个人资料,完成数据入库,以供后期使用。6、运行维护一、恢复数据库的方法对于事物内部故障:恢复时要在不影响其他事务运行的情况下,强行回滚该事务,即撤销该事务已经做出的任何的对数据库的修改;对于系统故障:一方面,在系统重新启动时让所有非正常终止的事务滚回,强行

21、撤销所有未完成事务;另一方面,把已完成的事务提交的结果重新写入数据库;对于介质故障:在故障发生前对数据库进行转储,即使用数据库镜像功能, 根据实际情况要求自动把整个数据库或其中的关键数据复制到另一个磁盘上,防患于未然。二、数据库恢复实现技术1、采用转储的方法定期地将整个数据库复制到磁带或另一个磁盘上保存起来,称为后 备副本或后援副本。 (动态转储和静态转储) ;2、通过登记日志文件,进行事务故障恢复和系统故障恢复,并协助后备副本进行介质 故障恢复。三、数据库恢复策略1、事务故障的恢复:(1)反向扫描日志文件,查找该事务的更新操作;(2)对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”

22、写入数据库;(3)继续反向扫描日志文件,查找该事物的其他操作,做同样处理,直到事物开始标志为 止。2、系统故障的恢复:(1)正向扫描日志文件, 找出在故障发生前已经提交的事务, 将其事务标识记入重做队列。 同时找出故障发生时尚未完成的事务,将其事务标识记入撤销队列。(2)反向扫描日志文件,对每个 UND事务的更新操作执行逆操作,即将日志记录中“更新 前的值”写入数据库。(3)正向扫描日志文件,对每个REDO事务重新执行日志文件登记操作。 即将日志记录中“更 新前的值”写入数据库。3、介质故障的恢复:重装数据库(1)装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。2)装入相应

23、的日志文件副本,重做已完成的事务。7、总结数据库课程设计是上大学以来的最痛苦的一个课程设计。 在上学期平时的实习中, 我觉 得数据库相较于C+程序编写与有关运用数据结构的程序编写来说,相对容易简单。本以为 这次的课程设计也不过很简单就能完成。 可是万万没想到, 真的从设计到开发出一个数据库 系统远比编程可怕多了。首先, 数据库的需求设计简直是让我们这种之前没有过设计经验的人摸不到头脑,不知从何下手。也可能由于上学期在学习数据库时没有让我们想着设计一个大型的需要注意细节 的数据库,所以感觉概念都很模糊。数据字典是啥啊?不是先画ER图吗?数据流图又是什么。?那ER图画完就能建表了?那么数据库和EX

24、EL表格又有什么区别啊等等此类我总会冒出的小白问题层出不穷。在三个题目:教务、书店、病房中,我选择了看起来好像参与者比较少,比较简单的教 务管理系统。但是着手设计起来真的是很难, 因为个人主观的因素比较大, 比较灵活, 最后 做成一个什么样子的数据库是由你自己来决定的, 所以有一些度要自己把握。 如果放开了去 想,去做, 都会复杂庞大到无法完成。 就在我想着自己构想的庞大数据库该如何实现复杂的 功能时,感觉很恐怖。但还是硬着头皮开始做。一开始遇到很大挫折,在尝试了两天的C+后,我觉得很难,于是,开始自学C#,相比C+, C#相对简单一点,去图书馆翻遍了C#编程宝典之类的书后,在室友引导下开始设

25、计。一开始觉得自己设计的数据库没问题, 觉得不难, 但是越往后做发现很多数据再传递的 时候走不到共享,一方面是自己编程能力不够,对于DATAGRIDVIEW这个控件掌握太少,在显示值,单元格传值的时候很难,后来决定改变设计,从改变SQL的表格入手,删除了不必要的表,尽量用少的表完成。 这样一来对窗体设计要求更高,还有就是对SQL高级查询语句的要求更高。现在想想发现最大的问题一个是C#中 Datagridview控件的单元格与数据库交互传值,另一个就是SQL高级复杂的查询语句使用与 C#中的textbox,或者数据库其他表的 链接查询。这两个问题在最后几天难住我了,最后和学长,室友,以及大量去论

26、坛求助,百 度找方法,看博客加上自己摸索,一个一个解决了,受益匪浅。除此之外遇到的问题就是数据库的设计问题, 要实现更多的功能, 一个方法是将各个数 据分装在各个表里, 调用一个个单体, 但是这样造成数据过于庞大, 同样最好的解决方法是 少量的存储空间,大量的调用,将常用的数据匹配在一起,这点在我的 STapparier 表中有 所体现, 将实体的主键找到相应的联系装在一个表里, 之后调用其他表进行自然连接, 实现 调用, 这样层次清楚, 也达到了三范式。 但是最后设计出来的数据库和我最初的设计的差别 还是蛮大, 所以我认为好的数据库是改出来的, 好的数据库很难一次成功, 每一次实践都是 我们下一场设计的宝贵经验。 通过这次课程设计我知道为什么系统分析师会这么抢手了。 也 许程序员的工作评估是一个程序的时间复杂度与空间复杂度, 那么系统分析

温馨提示

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

评论

0/150

提交评论