学生选课系统_第1页
学生选课系统_第2页
学生选课系统_第3页
学生选课系统_第4页
学生选课系统_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、 /12图3-2教师图3-3管理员专业遷麦亚号E图3-4专业图3-5图3-2教师图3-3管理员专业遷麦亚号E图3-4专业图3-5系图3-6课程然后,将以上实体之间联系表示出来,画出数据库系统的E-R图,如图3-7所示:系号逼)CED联系方式)辅导员厭至方式专业介绍MT-riEI,1-号M教师管理员管理(W诽疫(WW)曽理系号逼)CED联系方式)辅导员厭至方式专业介绍MT-riEI,1-号M教师管理员管理(W诽疫(WW)曽理与业UT图3-7数据库系统E-R图课程号wg)逻辑结构4.1逻辑转换根据3.2节中的E-R图可以将系统中的概念模型转换为具体的表(即关系)结构,共分为7个关系,详细信息如下所

2、示:学生(堂号、专业号码、姓名、性别、生日、密码)教师(教师工号、系号码、姓名、性别、牛日、密码、职称)管理员(管理员工号、姓名、性别、生日、密码、权限标志)专业(专业号码、系号码、专业名、辅导员、联系方式、专业介绍)院系(系号码、系名称、系主任、联系方式、系介绍)课程(课稈号码、学时、学分、课稈介绍)选课信息(学号、课稈号码、教师工号、成绩)4.2细化表结构为方便,根据上述文字描述,用英文简写为表和列取名,确定列的数据类型及必要的约束规则,给出如下所示数据库表的基本结构及说明:(1)学生信息表列名说明数据类型约束StudentNum学号char(10)主码MajorNum专业号码char(1

3、0)notnull,引用tbmajor的外码StudentName姓名varchar(10)NotnullStudentSex性别char(2)notnull,取“男”或“女”StudentBirthday生日datetimenotnullStudentPassword密码varchar(20)notnull,(2)教师信息表列名说明数据类型约束TeacherNum教师工号char(10)(2)教师信息表列名说明数据类型约束TeacherNum教师工号char(10)主码DeptNum院系号码char(10)notnull,引用tbdept的外码TeacherName姓名varchar(10)

4、notnullTeacherSex性别char(2)notnull,取“男”或“女”TeacherBirthday生日datetimenotnullTeacherTitle职称varchar(20)(3)管理员信息表列名说明数据类型约束ManagerNum管理员工号char(10)主码ManagerName姓名varchar(10)notnullManagerSex性别char(2)notnull,取“男”或“女”ManagerBirthday生日datetimenotnull(4)专业信息表列名说明数据类型约束MajorNum专业号码char(10)主码DeptNum系号码char(10)n

5、otnull,引用tbdept的外码MajorName专业名varchar(20)notnulMajorAssistant辅导员varchar(10)notnullMajorTel联系方式varchar(15)notnull(5)院系信息表列名说明数据类型约束DeptNum系号码char(10)主码DeptName系名称varchar(20)notnullDeptChairman系主任varchar(10)notnullDeptTel联系方式varchar(15)notnullDeptDesc系介绍textnotnull(6)课程信息表(7(6)课程信息表(7)选课信息表列名说明数据类型约束S

6、tuCourseID选课编号int主码,自动递增StudentNum学号char(10)notnull,引用tbstudent的外码CourseNum课程号码char(10)notnull,引用tbcourse的外码TeacherNum教师工号char(10)notnull,引用tbstudent的外码Grade成绩smallint列名说明数据类型约束CourseNum课程号码char(10)主码CourseName课程名varchar(20)notnullCourseCredit学分floatnotnullCourseClass学时smallintnotnullCourseDesc课程介绍t

7、extnotnull控制设置表列名说明数据类型约束IfTakeCourse选课控制char(1)notnull,取“0”或“TIflnputGrade成绩录入控制char(1)notnull,取“0”或“T备注:选课和成绩录入功能的开放和禁止,0为禁止,1为开放。五、数据库实施本章节主要包含创建表、添加数据和创建必要的视图、触发器和存储过程等内容。51创建表考虑到各个表之间的约束条件以及外键索引等要求,在创建表的时候应当按照一定的次序进行创建,否则会出现错误,还有一种方法是先创建各个基本表,然后在对特定的表添加列和外码约束,在本报告册中将采取第一种方法。(1)tb_dept院系信息表CREAT

8、ETABLEtb_dept(DeptNumchar(10)NOTNULLPRIMARYKEY,DeptNamevarchar(20)NOTNULL,DeptChairmanvarchar(10)NOTNULL,DeptTelvarchar(15)NOTNULL,1.2.3.4.5.6.7.&1.2.3.4.5.6.7.&9.1.2.3.4.5.6.7.&9.1.2.3.4.5.6.7.DeptDesctextNOTNULLtb_major专业信息表CREATETABLEtb_major(MajorNumchar(10)NOTNULLPRIMARYKEY,DeptNumchar(10)NOTNU

9、LL,MajorNamevarchar(20)NOTNULL,MajorAssistantvarchar(10)NOTNULL,MajorTelvarchar(15)NOTNULL,FOREIGNKEY(DeptNum)REFERENCEStb_dept(DeptNum)tb_student学生信息表CREATETABLEtb_student(StudentNumchar(10)NOTNULLPRIMARYKEY,MajorNumchar(10)NOTNULL,StudentNamevarchar(10)NULL,StudentSexchar(2)NOTNULL,StudentBirthday

10、datetimeNOTNULL,StudentPasswordvarchar(20)NOTNULL,FOREIGNKEY(MajorNum)REFERENCEStb_major(MajorNum)tb_teacher教师信息表CREATETABLEtb_teacher(TeacherNumchar(10)NOTNULLPRIMARYKEY,DeptNumchar(10)NOTNULL,TeacherNamevarchar(10)NOTNULL,TeacherSexchar(2)NOTNULL,TeacherBirthdaydatetimeNOTNULL,TeacherTitlevarchar(

11、20)NULL,FOREIGNKEY(DeptNum)REFERENCEStb_dept(DeptNum)tb_manager管理员信息表CREATETABLEtb_manager(ManagerNumchar(10)NOTNULLPRIMARYKEY,ManagerNamevarchar(10)NOTNULL,ManagerSexchar(2)NOTNULL,ManagerBirthdatedatetimeNOTNULL,ManagerRightsintNOTNULL)1.2.3.4.5.6.7.1.2.3.4.5.6.7.&9.1.2.3.4.1.2.3.4.5.6.7.&tb_cours

12、e课程信息表CREATETABLEtb_course(CourseNumvarchar(10)NOTNULLPRIMARYKEY,CourseNamevarchar(20)NOTNULL,CourseCreditfloatNOTNULL,CourseClasssmallintNOTNULL,CourseDesctextNOTNULL,)tb_stucourse学生选课信息表CREATETABLEtb_stucourse(StudentNumchar(10)NOTNULL,CourseNumchar(10)NOTNULL,TeacherNumchar(10)NOTNULL,Gradesmalli

13、ntNULL,FOREIGNKEY(StudentNum)REFERENCEStb_student(StudentNum),FOREIGNKEY(CourseNum)REFERENCEStb_Course(CourseNum),FOREIGNKEY(TeacherNum)REFERENCEStb_teacher(TeacherNum),)tb_control控制设置表CREATETABLEtb_control(IfTakeCoursechar(1)NOTNULLcheck(IfTakeCoursein(0,1),IfInputGradechar(1)NOTNULLcheck(IfInputGr

14、adein(0,1),)5.2创建必要视图建立学生成绩视图vi_grade,从学生、老师、选课表中选择Grade不为空的记录,其关键代码如下所示:CREATEVIEWvi_gradeASSELECTtb_stucourse.StudentNum,StudentName,CourseName,CourseCredit,TeacherName,GradeFROMtb_stucourse,tb_student,tb_course,tb_teacherwheretb_stucourse.StudentNum=tb_student.StudentNumandtb_stucourse.TeacherNum

15、=tb_teacher.TeacherNumandtb_stucourse.CourseNum=tb_course.CourseNumand9.1.2.3.4.5.1.2.3.4.5.6.7.&9.10.1.2.3.4.5.6.7.&9.10.11.12.13.14.Gradeisnotnull建立专业学生信息视图vi_major,从学生、专业表中选择学生中的专业号码与专业表中专业号码相等的记录,其关键代码如下所示:CREATEVIEWvi_majorASSELECTtb_major.MajorName,StudentNum,StudentName,StudentSex,StudentBirt

16、hdayFROMtb_major,tb_studentWHEREtb_major.MajorNum=tb_student.MajorNum5.3创建必要触发器建立学生添加院系触发器tri_adddept,当该表中已存在所对应院系号码的院系时,系统给与错误提示并回滚,其关键代码如下所示:CREATETRIGGERtri_adddeptONtb_deptFORINSERT,UPDATEASIF(SELECTCOUNT(*)FROMtb_dept,insertedWHEREtb_dept.DeptNum=inserted.DeptNum)0BEGINPRINT院系号码产生冲突,请核对后重试!ROLL

17、BACKEND建立学生添加专业触发器tb_major,当专业信息中的院系号不对或者该表中已存在所对应专业号码的专业时,系统给与错误提示并回滚,其关键代码如下所示:CREATETRIGGERtri_addmajorONtb_majorFORINSERT,UPDATEASIF(SELECTCOUNT(*)FROMtb_dept,insertedWHEREtb_dept.DeptNum=inserted.DeptNum)=0BEGINPRINT未找到该专业的院系信息,请添加相应院系后重试!ROLLBACKENDELSEIF(SELECTCOUNT(*)FROMtb_major,insertedWHE

18、REtb_major.MajorNum=inserted.MajorNum)0BEGINPRINT院系号码产生冲突,请核对后重试!ROLLBACKEND建立添加学生触发器tri_addstudent,当学生信息中的专业号不对或者系统中已存在所对应学号的学生时,系统给与错误提示并回滚,其关键代码如下所示:CREATETRIGGERtri_addstudentONtb_studentFORINSERT,UPDATEASIF(SELECTCOUNT(*)FROMtb_major,insertedWHEREtb_major.MajorNum=inserted.MajorNum)=0BEGINPRINT

19、未找到该学生的专业信息,请添加相应专业后重试!ROLLBACKENDELSEIF(SELECTCOUNT(*)FROMtb_student,insertedWHEREtb_student.StudentNum=inserted.StudentNum)0BEGINPRINT学号产生冲突,请核对后重试!ROLLBACKEND建立学生选课触发器tri_takecourse,课程选课人数超过40个或者对应学生选课门数超过5门或者当前时间不是选课时间段时,系统给与错误提示并回滚,其关键代码如下所示:CREATETRIGGERtri_takecourseONtb_stucourseFORINSERT,UP

20、DATEASIF(SELECTCOUNT(*)FROMtb_stucourse,insertedWHEREtb_stucourse.CourseNum=inserted.CourseNum)40BEGINPRINT所对应课程选课人数不能超过40个!ROLLBACKENDELSEIF(SELECTCOUNT(*)FROMtb_student,insertedWHEREtb_student.StudentNum=inserted.StudentNum)5BEGINPRINT对应学生的选课不能超过5门!ROLLBACKENDELSEIF(SELECTIfTakeCourseFROMtb_contro

21、l)=019.20.21.22.1.2.3.4.5.6.7.&9.10.11.12.13.14.15.16.1.2.3.4.5.6.7.&9.10.11.12.13.14.15.BEGINPRINT当前不是选课时间段!ROLLBACKEND5.4创建必要存储过程建立学生选课存储过程tri_takecourse,其作用为查询所有学生的选课记录,其关键代码如下所示:CREATEPROCproc_getcourseStudentNumchar(10)OUT,StudentNamechar(10)OUT,CourseNamevarchar(20)OUT,CourseCreditfloatOUT,Tea

22、cherNamechar(10)OUTASSELECTStudentNum=tb_student.StudentNum,StudentName=tb_student.StudentName,CourseName=tb_course.CourseName,CourseCredit=tb_course.CourseCredit,TeacherName=tb_teacher.TeacherNameFROMtb_stucourse,tb_course,tb_student,tb_teacherWHEREtb_stucourse.StudentNum=tb_student.StudentNumANDtb

23、_stucourse.CourseNum=tb_course.CourseNumANDtb_stucourse.TeacherNum=tb_teacher.TeacherNum建立查询教师课程存储过程proc_teachercourse,其作用为查询指定教师所有课程的选课记录,其关键代码如下所示:CREATEPROCproc_teachercourseTeacherNumchar(10),StudentNumchar(10)OUT,StudentNamechar(10)OUT,CourseNamevarchar(20)OUT,CourseCreditfloatOUT,TeacherNamechar(10)OUTASSELECTStudentNum=tb_student.StudentNum,StudentName=tb_student.StudentName,CourseName=tb_course.CourseName,CourseCredit=tb_course.CourseCredit,TeacherNam

温馨提示

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

评论

0/150

提交评论