您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 自动排课系统——数据库大作业
自动排课系统一.系统需求1该“自动排课系统”只是对数据库应用技术的一个样本数据库的实例,重在对数据库一些方法的熟悉与掌握,其中包括从数据库的概念模型到ER图的绘制,再到数据库模式的建立(即为数据库及其基本表的建立),而后数据的录入(在此从略),最后完成一些简单的关系运算表达式的表达和相关的Select查询语句的使用。2系统结构简述:2.1本系统包括六个实体:课程,学生,教室,教师,学院,班级2.2实体之间的多对多联系:教学计划,选课2.2.1一个学生可选多门课,一门课可被多个学生选修。2.2.2一门课可使用多个教室,一个教室可被多门课占用。2.3实体之间的一对多联系:教学,隶属,从属,属于,开设2.3.1一个学院有多个教师,一个教师只隶属于一个学院。2.3.2一个学院有多个班级,一个班级只隶属于一个学院。2.3.3一个学院可开设多门课程,一门课程只能被一个学院开设。2.3.4一个班级有多名学生,一个学生只隶属于一个班级。2.3.5一个老师可教多门课程,一门课程只能被一个老师教。实体之间的关系转换为其他三个表:教学(一对多),教学计划(多对多),选课(多对多)。注:各个基本表中关键字已在关系模式中说明。3经过分析,得到自动排课系统的如下功能:3.1部分属性插入时添加默认值。3.1.1为选课表中属性是否重修创建并绑定默认值’NO’。3.1.2为教师表中属性是否可用创建并绑定默认值’YES’。3.2对教学计划表插入数据时检查数据是否合理。3.2.1当插入课程人数多于教室容量的数据时,无法插入数据。3.2.2当插入课程占用不可被占用的教室的数据时,无法插入数据。3.3部分表添加唯一约束,使插入数据的数据值受到限制。3.3.1教学计划表中,每一门课程在一天只能安排一次。3.3.2教学表中,一门课程只能被一个老师教。3.4数据检索3.4.1学生查询所选某门课程的成绩。输入:学生学号,课程编号输出:课程名称,成绩3.4.2教师查询选修所教课程的学生的信息。输入:教师编号输出:学生姓名,学生学号,学生性别,籍贯3.4.3学生查询选修课程授课教师的信息。输入:学生学号输出:课程编号,教师姓名,教师编号,授课效果,从教时间3.4.4学生查询所有选修课程的平均分。输入:学生学号输出:选课科目数,平均分3.4.5教室查询占用教室课程的信息。输入:教室编号输出:教室编号,课程名称,课程编号,教师名称,教师编号,3.5数据插入3.5.1教室数据插入。3.5.2学院数据插入。3.5.3教学数据插入。3.5.4学生数据插入。3.6数据修改3.6.1教学计划数据修改:修改教学计划时,输入课程编号及所需修改的属性值,完成对教学计划表的修改。3.6.2教师数据修改:修改教师数据时,输入教师编号及所需修改的属性值,完成对教师表的修改。3.6.3班级数据修改:修改班级数据时,输入班级编号及所需修改的属性值,完成对班级表的修改。3.7数据统计与查询3.7.1学生及其选课的所有信息3.7.2教师教授课程情况的所有信息3.7.3教室安排情况的所有信息3.7.4学院_班级_学生间联系的所有信息二.概念设计经需求分析,抽象出以下E-R模型。1.课程实体(图1)课程课程名称课时数学分课程编号课程容量课程类型图1课程实体2.学生实体(图2)3.教师实体(图3)4.教室实体(图4)图4教室实体5.学院实体(图5)图3教师实体教师教师年龄教师性别教师编号教师姓名图2学生实体学生出生日期籍贯学生性别学生年龄学生学号学生姓名图7全局E-R图图5学院实体6.班级实体(图6)图6班级实体7.全局E-R图(图7)三.逻辑设计系统中的实体有:课程、教师、教室、学生、学院、班级将实体类型转换为关系模式如下:课程(课程名称,课程编号,课程类型,课程容量,学分,课时数,所属学院编号)教师(教师姓名,教师编号,教师年龄,教师性别,隶属学院编号)教室(教室编号,教室容量,是否可用)学生(学生姓名,学生学号,学生年龄,出生日期,学生性别,籍贯,所在班级编号)学院(学院名称,学院编号,联系电话,通讯地址)班级(班级编号,人数,所属年级,班导师,所在学院编号)系统中的联系有:教学计划(多对多)、教授(一对多)、选修(多对多)将联系类型转换为关系模式如下:教学计划(课程编号,教室编号,起始周数,周数,起始节数,节数,星期),主键为(课程编号,教室编号)教学(课程编号,教师编号,从教时间,授课效果),主键为(课程编号,教师编号)选课(课程编号,学生学号,是否重修,成绩),主键为(课程编号,学生学号)注:有下划线的是主键,有波浪线的是外键。四.物理设计根据以上关系模式构建数据表如下:表1课程表(course)结构字段名类型特殊属性课程名称(CourseName)char(10)NOTNULL课程编号(CourseNumber)char(10)PRIMARYKEY课程类型(CourseType)char(10)课程容量(CourseVolume)smallintNOTNULL学分(Credit)smallintNOTNULL课时数(Period)smallintNOTNULL所属学院编号(SchoolNumber)char(10)FOREIGNKEY表2教师表(teacher)结构字段名类型特殊属性教师姓名(TeacherName)char(10)教师编号(TeacherNumber)char(10)PRIMARYKEY教师年龄(TeacherAge)char(4)=0教师性别(TeacherSex)char(6)‘Male’OR‘Female’隶属学院编号(SchoolNumber)char(10)FOREIGNKEY表3教室表(room)结构字段名类型特殊属性教室编号(RoomNumber)char(10)PRIMARYKEY教室容量(RoomVolume)smallint=0,NOTNULL是否可用(Available)char(4)YES'OR'NO',默认'YES'表4学生表(student)结构字段名类型特殊属性学生姓名(StudentName)char(10)NOTNULL学生学号(StudentNumber)char(10)PRIMARYKEY学生性别(StudentSex)char(6)‘Male’OR‘Female’学生年龄(StudentAge)smallint=0籍贯(Origo)char(10)出生日期(Birthday)datatime所在班级编号(ClassNumber)char(10)FOREIGNKEY表5学院表(school)结构字段名类型特殊属性学院名称(SchoolName)char(30)NOTNULL学院编号(SchoolNumber)char(10)PRIMARYKEY通讯地址(Address)char(50)联系电话(Tel)char(20)表6班级表(class)结构字段名类型特殊属性班级编号(ClassNumber)char(10)PRIMARYKEY人数(ClassVolume)smallint=0所属年级(CGrade)smallintNOTNULL班导师(Tutor)char(10)所在学院编号(SchoolNumber)char(10)FOREIGNKEY表7教学计划表(eduplan)结构字段名类型特殊属性课程编号(CourseNumber)char(10)PRIMARYKEY,FOREIGNKEY教室编号(RoomNumber)char(10)PRIMARYKEY,FOREIGNKEY起始周数(StartWeek)smallint=1AND=20周数(Weeks)smallint=0起始节数(StartLesson)smallint=1AND=11节数(Lessons)smallint=0星期(EduDay)smallint=1AND=7表8教学表(education)结构字段名类型特殊属性课程编号(CourseNumber)char(10)PRIMARYKEY,FOREIGNKEY教师编号(TeacherNumber)char(10)PRIMARYKEY,FOREIGNKEY从教时间(TeachTime)smallint=0AND=100授课效果(Effect)smallint=0AND=100表9选课表(sc)结构字段名类型特殊属性课程编号(CourseNumber)char(10)PRIMARYKEY,FOREIGNKEY学生学号(StudentNumber)char(10)PRIMARYKEY,FOREIGNKEY是否重修(Revamp)char(4)‘YES’OR‘NO’,默认‘NO’成绩(Grade)smallint=0AND=100五.系统实现自动排课系统的系统实现Transact-SQL语句如下:1.建立数据库createdatabaseAuto_Arrangementonprimary(name=Auto_Arrangement_data,filename='e:\\Auto_Arrangement\\Auto_Arrangement_data.mdf',size=10MB,filegrowth=2MB,maxsize=500MB),(name=Auto_Arrangement_data1,filename='e:\\Auto_Arrangement\\Auto_Arrangement_data1.ndf',size=5MB,filegrowth=1MB,maxsize=500MB)logon(name=Auto_Arrangement_log,filename='e:\\Auto_Arrangement\\Auto_Arrangement_log.ldf',size=1MB,filegrowth=10%)2.基本表的创建useAuto_Arrangement2.1.教室表的创建createtableroom(RoomNumberchar(10)primarykey,RoomVolumesmallintnotnull,Availablechar(4),check(RoomVolume=0),check(Available='YES'orAvailable='NO'))2.2.学院表的创建createtableschool(SchoolNamechar(30)notnull,SchoolNumberchar(10)primarykey,Addresschar(50),Telchar(20))2.3.课程表的创建createtablecourse(CourseNamechar(10)notnull,CourseNumberchar(10)primarykey,CourseTypechar(10),CourseVolumesmallintnotnull,Creditsmallintnotnull,Periodsmallintnotnull,SchoolNumberchar(10),foreignkey(SchoolNumber)referencesschool(SchoolNumber))2.4.教师表的创建createtableteacher(TeacherNamechar(10),TeacherNumberchar(10)primarykey,TeacherAgechar(4),TeacherSexchar(6),SchoolNumberchar(10),check(TeacherAge=0),check(TeacherSex='Male'orTeacherSex='Female'),foreignkey(SchoolNumber)referencesschool(SchoolNumber))2.5.课程表的创建createtableclass(ClassNumberchar(10)primarykey,ClassVolumesmallint,CGradesmallintnotnull
本文标题:自动排课系统——数据库大作业
链接地址:https://www.777doc.com/doc-5233327 .html