学生选课数据库设计项目描述:我们组设计的是学生选课管理系统,选课管理系统是学校教务系统中很庞大、很复杂的一个数据库系统,在这里我们将其简化,只选取了部分比较直观的关系模式。我们设计的系统涉及院系信息、学生信息、教师信息、课程信息、选课信息、还有成绩管理及查询。所实现的功能有:能记录院系、学生、教师以及课程的基本情况,能记录学生所选的课程以及相应的成绩和授课教师。每个学生和老师都只能被一个院系管理,为了简化每个教师最多教授一门课程,每个学生可选多门课程或者不选,每个学生选修的每门课程有一个成绩记载,每个教师教授最多一门课程,学生在系统中可以有查询成绩的权限,管理员有修改成绩的权限。设计目录1、需求分析2、概念设计3、逻辑设计4、数据库结构设计5、物理设计6、数据库行为设计7、数据库实施一:需求分析根据分析,本系统的实体有学生、教师、课程和选课信息。描述学生的属性有:学号、院系、姓名、性别、民族、入学时间、专业、籍贯。描述教师的属性有:教师编号、姓名、性别、职称、专业。描述课程的属性有:课程编码、课程名称、授课老师、课程类型、上课时间、上课地点。描述选课信息的属性有:学号、课程编号、考试成绩。每个学生、教师只能属于一个院系,每个学生可选多门课程或者不选,每个教师教授最多一门课程。学生进入查询系统后只能有查询功能,管理员进入则可以有修改成绩的权限。用户登录时需要有一个用户名和密码。数据字典:数据项编号数据项名数据项含义存储结构别名JS001Stunum学生编号Char(10)学号JS002Stucollege学生学院Char(20)学院JS003Stuname学生姓名Char(10)姓名JS004Stusex学生性别Char(5)性别JS005Stubirth学生出生日期Char(10)出生日期JS006Stuhome学生籍贯Char(30)籍贯JS007Stuethnic学生民族Char(10)民族JS008Stumajor学生专业Char(10)专业JS009Tenum教师编号Char(10)编号JS0010Tename教师姓名Char(10)姓名JS0011Tesex教师性别Char(5)性别JS0012Tetitle教师职称Char(10)职称JS0013Temajor教师专业Char(10)专业JS0014Cno课程编码Char(10)课程号二:概念设计E-R图:JS0015Cname课程名称Char(20)课程名JS0016Cteacher授课老师Char(10)教师JS0017Ctype课程类型Char(20)类型JS0018Ctime上课时间Char(20)时间JS0019Cplace上课地点Char(20)地点JS0020result学生课程成绩Char(10)成绩JS0021Username用户名Char(10)JS0022password2密码Char(10)学生学号姓名性别民族出生日期籍贯专业学院教师编号姓名性别职称专业三:逻辑设计关系模式:登陆(用户名、密码)学生(学号、姓名、性别、入学日期、民族、籍贯、专业)课程课程名授课老师课程号课程类型上课时间上课地点成绩选修设置学生课程主修开设专业学院登陆用户名密码教师(教师编号、姓名、性别、职称、专业)课程(课程编号、课程名、课程类型、授课教师、上课时间、上课地点)选课信息(学号、课程编号、考试成绩)四:数据库结构设计Yonghuming属性名数据类型可否为空含义完整性约束条件UsernameChar(10)否用户名password2Char(10)否密码Student属性名数据类型可否为空含义完整性约束Stunumchar(10)否学号主码Stunamechar(10)否姓名Stusexchar(5)否性别Stubirthchar(10)否出生日期Stumajorchar(10)否专业Stuhomechar(30)否籍贯Stuethnicchar(10)否民族Teacher属性名数据类型可否为空含义完整性约束Tenumchar(10)否教师编号主码Tenamechar(10)否姓名Tesexchar(5)否性别Tetitlechar(10)否职称Temajorchar(20)否专业Course属性名数据类型可否为空含义完整性约束Cnochar(10)否教师编号主码Cnamechar(10)否课程名称CteacherChar(10)否授课教师外码Ctypechar(10)否课程类型Ctimechar(10)可以上课时间Cplacechar(10)可以上课地点Select_Course属性名数据类型可否为空含义完整性约束Stunumchar(10)否学号主码Cnochar(10)否课程编号resultChar(10)否成绩TenumChar(10)否授课教师五:物理设计1、数据库管理系统采用MSSQLServer20002、数据库命名为xuankedatabase3、数据库文件的存储位置为D:\SqlData4、为提高查询速度,对各表建立适当的索引SQL代码:新建数据库:CreatedatabasexuankedatabaseGo新建用户名和密码表Createtableyonghuming(usernamechar(10),password2char(10));新建学生表:Createtablestudent(Stunumchar(10)primarykey,Stunamechar(10),Stusexchar(5),Stubirthchar(10),Stuhomechar(30),Stumajorchar(10),Stuethnicchar(10));新建教师表:Createtableteacher(Tenumchar(10)primarykey,Tenamechar(10),Tesexchar(5),Tetitlechar(10),Temajorchar(20));新建课程表:Createtablecourse(Cnochar(10)primarykey,Cnamechar(10),Cteacherchar(10),Ctypechar(10),Cplacechar(10)foreignkey(Cteacher)referencescourse(Cno));新建选课表:CreatetableSelect_Course(Stunumchar(10),Cnochar(10),Resultchar(10)Primarykey(Stunum,Cno)Foreignkey(stuname)referencesstudent(sno),Foreignkey(cno)referencescourse(cno));建立索引:CreateuniqueindexstunumOnstudent(sno);CreateuniqueindexcnoONcourse(cnum);CreateuniqueindextenumONcourse(tno);新建视图:建立学生_视图,视图由学生表的所有项构成createview学生_视图asselect*fromstudent建立课程_视图,视图由课程表的所有项构成createview课程_视图asselect*fromcourse建立教师_视图,视图由教师表的所有项构成createview教师_视图asselect*fromteacher六、数据库行为设计1、登陆管理利用用户和密码登陆检验用户名和密码是否存在和正确select*fromyonghumingwhereusername2、学生信息管理删除学生信息deletefromstudentwheresnum=();修改学生信息updatestudentsetsname=(),ssex=(),sbirth=(),shome=(),sethnic=(),syear=(),smajor=(),scollege=()wheresnum=();增加学生信息Insertintostudent(sname,ssex,sbirth,shome,sethnic,syear,smajor,scollege)values(()()()()()()()());3、课程管理增加课程insertintocourse(Cno,Cname,Cteacher,Ctype,Cplace)values(()()()()())课程修改updatecoursesetgrade=()wheresnum=()andcnum=()4、查询管理1)学生查询按学号查询select*fromstudentwherestunum=()按姓名查询select*fromstudentwherestuname=()按性别查询select*fromstudentwherestusex=()按专业查询select*fromstudentwhereStumajor=()2)课程查询按课程号查询select*fromSelect_Course,coursewhereSelect_Course.stunum=()andSelect_Course.cno=course.cno按授课教师查询select*fromSelect_Course,teacherwhereSelect_Course.result=()andteacher.tenum=()3)成绩查询select*fromSelect_Course,course,studentwhereSelect_Course.stunum=()andSelect_Course.cno=course.cnoandSelect_Course.snum=student.snum七、数据库实施本项目的后台是JAVA。系统的界面有登录窗口:系统主界面:学生管理界面:课程管理界面:查询界面:在设计过程中,对整个系统的设计特别是行为特性设计有很多的心得,也遇到很多问题,但最终都得到解决。这次设计的过程涉及之前基础课和专业课的很多的理论知识,但是在实际应用方面涉及很少,而数据库系统设计是需要把这些知识贯通起来,综合运用,所以通过这次设计我的认识问题、分析问题、解决问题的能力都有了很大的提高。同时自己在动手能力上也有了很大的进步。