数据库系统课程设计学生姓名:班学号:指导教师:中国地质大学年月日教务管理系统1、需求分析教务管理系统该教学系统主要提供数据维护、学生选课和教师授课信息查询功能。
其实现的功能(即其包含的查询)有:系统中对教师、学生基本信息的录入;系统中对教师、学生的基本信息查询;查询学生的选课情况;查询教师的授课情况;还包括学生选课功能。
该数据库系统包括学生密码表、学生信息表、教师信息表、教师密码表、学生选课表、课程匹配表,管理员密码表七个关系表,基本情况如下:三张密码表均有相应账户和密码;教师信息表有工作证号、姓名、性别、族别、政治面貌、出生年月、联系方式、所在系、所在学院、职称;学生表有学号、姓名、性别、族别、政治面貌、出生年月、联系方式、班号、所在系、所在学院;课程有课程名、学分、名额、上课时间信息;授课表有课程号、工作证号信息;学生选课表有课程名称、课程号、授课老师、授课时间、授课地点、剩余容量、工作证号、成绩。
课程匹配表则有课程号,学号,学生姓名,班号,所在专业,所在学院,成绩。
每个学生都属于一个班,每个教师也都属于一个系。
一名教师可以教多门课,一门课可以有几位主讲老师,一名同学可以选多门课。
学生、教师都有可以有重名,工作证号、学号可以作为标识。
系统中的实体:①教师:工作证号、姓名、性别、职称、电话等;②学生:学号、姓名、性别、出生年月、职位、电话等;③班级:班号、最低总学分、人数等;④系:系代号、系名、系办公室电话等;⑤课程:课序号、课名、学分、上课时间、名额等。
实体间关系:①每个学生都属于一个班,每个班都属于一个系,每个教师也都属于一个系;②每个班的班主任都由一名教师担任;③一名教师可以教多门课,一门课可以有几位主讲老师,但不同老师讲的同一门课其课序号是不同的(课序号是唯一的);④一名同学可以选多门课,一门课可被若干同学选中;⑤一名同学选中的课若已学完,应该记录有相应成绩;⑥本单位学生、教师都有重名,工作证号、学号可以作为标识。
系统的需求:①教学系统主要提供数据维护、选课和信息查询;②系统中各对象的基本信息录入与查询;③指定班、系的学生信息查询;④学生的成绩、学分情况查询;⑤教师授课情况和学生选课情况查询。
系统的组成:教务管理系统包括教师管理子系统、学生管理子系统、管理员管理子系统。
其中各个系统中拥有独自的一套查询、添加、删除、更新操作。
系统管理员进行数据维护的操作。
2、概念设计(1)概念模型(E-R 图):① 选课E-R 图① 授课E-R 图① 总E-R 图……(2)数据字典:①数据项②数据流总数据流图录入选课查询评价5.0 更新:②数据结构1教师实体工作证号、姓名、性别、族别、政治面貌、出生年月、联系方式、所在系、所在学院、职称2学生实体学号、姓名、性别、族别、政治面貌、出生年月、联系方式、所在系、所在学院、班号3课程实体课程号、课名、余量、上课时间、上课地点4学生实体和课程实体学号、课程号、成绩5教师实体和课程实体工作证号、课程号3、逻辑结构设计①关系的描述根据数据库系统设计的最基本的要求,消除依赖集F中的部分依赖和传递依赖,消除插入异常、删除异常、修改异常,达到第三范式无损链接和保持依赖,从而得到以下关系模型以及其主码:教师(工作证号、姓名、性别、电话、所在系、用户名、用户密码)学生(学号、姓名、性别、年龄、所在系、班号、用户名、用户密码)课程(课程号、课程名、学分、名额、上课时间)选课(课程号、学号)授课(课程号、工作证号)以上加下划线的表示关系模型里面的主码。
②实体间的联系分析教师—班级: 1:1;系—教师: 1:n;系—班级: 1:n;班级—学生: 1:n;课程—教师: m:n;课程—学生: m:n4、物理设计4.1物理存储结构4.1.1数据库我本次课程设计采用了SQL sever平台进行存储建立基本表与信息。
编写关系模式,载入数据。
其存在多种存取方法。
并且首先要运行调试软件的运行恢复部分,确保数据日后的转储与恢复。
4.1.2基本表Student表-- ----------------------------DROP TABLE IF EXISTS `Student`;CREATE TABLE `student` (`学号` 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,`班号`bigint()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` (`工作证号` 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,`职称`char(20)NOT NULL,`所在专业` char(20) NOT NULL,`所在学院` char(20) NOT NULL,‘学院电话’char(20)NOT NULL,PRIMARY KEY (`工作证号’)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------选课表-- ----------------------------DROP TABLE IF EXISTS `studentchoose`; CREATE TABLE `studentchoose` (`cNum` varchar(7) NOT NULL,`Name1` varchar(5) NOT NULL,`Unit` varchar(20) NOT NULL,PRIMARY KEY (`cNum`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ studentchoose表-- ----------------------------DROP TABLE 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,PRIMARY KEY (`课程号`),) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ ATapparier表-- ----------------------------DROP TABLE IF EXISTS `ATapparier`; CREATE TABLE `ATapparier` (`课程号` bigint() NOT NULL,`学号` bigint() NOT NULL,`姓名` char(30) NOT NULL,‘班号’char(20)NOT NULL,`所在专业` char(20) NOT NULL,`所在学院` 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)NOT NULL,`所在专业` char(20) NOT NULL,`所在学院` char(20) NOT NULL,‘成绩’char(20)NOT NULL,PRIMARY KEY (`课程号`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;4.2索引设计4.2.1存储安排方法选择:教务管理系统是一个多用户共享系统,对同一个关系要建立多条存取路径才能满足多用户的多种应用要求。
数据库管理系统一般提供多种存取方法:第一类是缩阴方法,目前主要是B+树索引方法;第二类是聚簇方法;第三类是Hash方法。
我们现在主要采用B+树索引存取方法。
4.2.2索引一个属性经常在查询条件中出现,则考虑这个(组)属性上建立索引(或组合索引);如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引;如果一个(组)属性经常在链接操作的链接条件中出现,则考虑在这个(组)属性上建立索引——学号,工作证号,课程号。
4.2.3存储路径的建立我将表和索引放在不同的磁盘上,在查询时,由于磁盘驱动器秉性工作,可以提高物理I/O读写的效率;将比较大的表,如“选课信息”,分别放在两个磁盘上,以加快存取速度,这在多用户环境下特别有效;另外将日志文件与数据库对象9表、索引等)放在不同的磁盘上,以改进系统的性能。
5、系统实施5.1DBMS&语言选择我选用的是SQL Sever系统的语言,基于Microsoft Visual Studio 2010平台呃C#语言编写的界面。
较为简单容易。
5.2数据输入在SQL Sevel 中进行一些数据的手动输入(或查询语句进行输入)用以进行测试,之后用户可在管理系统中进行相关信息的添加。
Studentchoose表初始信息:Studentbase表初始信息:Teacherbase表初始信息:Adminmessage表初始信息:5.3 编写代码因为要连接数据库,采用VS2010的连接工具来进行数据库的连接。