课程设计报告课程:jsp学号:姓名:班级:教师:徐州师范大学计算机科学与技术学院课程设计任务书姓名学号班级课程名称数据库系统概论课程性质课程设计同组成员分工学生选课操作、教师管理操作两部分功能的实现设计时间设计名称学生选课管理信息系统的设计与实现设计要求系统功能基本要求:教师信息,包括教师编号、教师姓名、性别、年龄、学历、职称、毕业院校,健康状况等。学生信息,包括学号、姓名、所属院系、已选课情况等。教室信息,包括,可容纳人数、空闲时间等。选课信息,包括课程编号、课程名称、任课教师、选课的学生情况等。成绩信息,包括课程编号、课程名称、学分、成绩。按一定条件可以查询,并将结果打印输出。设计思路与设计过程设计思路:,本系统结合数据库和JSP编程实现了学生选课管理系统。学生选课管理系统分为三个子模块:第一模块是学生选课的页面操作,包括个人信息,密码修改,查询成绩,选课,退选五个功能;第二模块是教师操作页面,包含个人信息,密码修改,录入成绩,查询选课情况,查看教室信息;第三模块是管理员,包含学生信息管理(增加、修改、删除、查询),教师信息管理(增加、修改、删除、查询),管理员信息管理(增加、修改、删除、查询)。计划与进度构思整个系统的框架,在数据库中建表主要对学生选课的一些操作进行jsp编码主要对教师的相关操作进行jsp编码整合整个实验,并进行修改写课程设计的报告任课教师意见说明学生选课管理系统一.系统需求分析学生选课系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对选课信息进行管理,有着手工管理所无法比拟的优点。这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套软件成为很有必要的事情,在下面的各章中我们将以开发一套学生选课系统为例,谈谈其开发过程和所涉及到的问题及解决方法。本实验实现的学生选课管理系统主要包括以下功能:1.完成数据的录入和修改,并提交数据库保存。其中的数据包括:学生信息、课程设置、学生成绩以及操作员信息等;2.设计实现学生信息查询,选课管理、退选管理、分数查询,课程的浏览教师信息查询、教室空闲时间查询等JSP页面。3.具备一定的安全性管理功能。包括操作员的权限设置、修改密码设置、注销和等功能。二.系统总概括1.系统的总设计本系统结合数据库和JSP编程实现了学生选课管理系统。学生选课管理系统分为三个子模块:第一模块是学生选课的页面操作,包括个人信息,密码修改,查询成绩,选课,退选五个功能;第二模块是教师操作页面,包含个人信息,密码修改,录入成绩,查询选课情况,查看教室信息;第三模块是管理员,包含学生信息管理(增加、修改、删除、查询),教师信息管理(增加、修改、删除、查询),管理员信息管理(增加、修改、删除、查询)。图1系统的功能模块图学生选课教师管理管理员学生选课管理系统2.数据库设计2.1数据库概念结构设计本系统主要有三个实体,其中有学生和课程两个实体集,一个学生可以选修若干门课程,一门课程也可以被多个学生选修,这两个实体集之间是多对多联系,还有教师和课程两个实体,一个老师可以教授若干门课程,一门课程却只能有一个老师教授,这两个实体集之间是一对多联系。通过选课成绩将老师和学生联系在一起。为保证系统的安全性,设置了操作员这一实体集,用来存放合法用户的编号、姓名、密码。本系统的E-R图如下:学生学号姓名密码院系性别电话地址选修成绩课程教授教师编编号毕业院校健康状况学历姓名密码院系年龄性别职称MNM1编课程号编课程名编教师号编学分编学时编地点编总人数编已选数编院系图2系统的E-R图2.2数据库逻辑结构设计根据关系模型的转换原则,上面的E—R图可转换为如下所示的关系模型:student(sId,sName,sPass,dId)含义分别为:学生(学号,姓名,密码,所在系的编号)stuDetail(userID,userSex,userMobil,useraddress)含义分别为:学生信息(学号,性别,电话,地址)teacher(tId,tPame,tPass,dId)含义分别为:教师(学号,姓名,密码,所在系的编号)teaDetail(userID,userSex,userAge,useredu,usertitle,usersch,userhealth)含义分别为:教师信息(学号,性别,年龄,学历,职称,毕业院校,健康状况)course(cId,cName,tId,credit,period,cPlace,cNumall,cNum,dId)含义分别为:课程(课程号,名称,教师号,学分,学时,上课地点,总人数,已选人数,院系号)choosecourse(cId,sId,Grade)含义分别为:选修(学号,课程代码,成绩)room(roomname,roomnum,roomtime)含义分别为:教室(教室名,容纳人数,空闲时间)admin(aId,aPass)含义分别为:管理员(管理员编号,姓名)department(dId,dName)含义分别为:院系(院系编号,院系名)根据上面的E-R图设计及关系模型的设计,得出数据表的设计,在本系统中主要的数据表如下:表1学生表Student的表结构主码列名数据类型宽度小数位空否备注PksIdChar10N学号sNameChar20Y姓名sPassChar2Y密码dIdChar20Y所在系号管理员编号密码表2学生信息表StuDetail的表结构主码列名数据类型宽度小数位空否备注PkuserIDChar10N学号userSexChar10Y性别userMobilChar30Y电话userAddressChar50Y地址表3教师表teacher的表结构主码列名数据类型宽度空否备注PktIdChar10N编号tNameChar20Y姓名tPassChar2Y密码dIdChar20Y所在系号表4教师信息表teadetail的表结构主码列名数据类型宽度空否备注PkuserIDChar10N学号userSexChar10Y性别userAgeChar50Y电话usereduChar30Y学历usertitleChar30Y职称userschChar30Y毕业院校UserhealthChar50Y健康状况表5课程信息表Course的表结构主码列名数据类型宽度空否备注PkcIdChar10N课程号coNameChar20Y课程名称tIdChar10Y教师号creditChar8Y学分periodChar8Y学时cPlaceChar10Y上课地点cNumAllChar4Y总人数cNumChar4Y已选人数dIdChar10Y院系号表6选课成绩表choosecourse的表结构主码列名数据类型宽度空否备注PkcIdChar5N课程代码sIdChar3N学号gradeDecimal5Y成绩表7教室信息表room的表结构主码列名数据类型宽度空否备注PkroomnameChar10N教室名roomnumChar10N容纳人数roomtimeChar10Y空闲时间表8管理员表admin的表结构主码列名数据类型宽度空否备注PkaIdChar10N管理员编号aPassChar10Y管理员姓名表9院系表department的表结构主码列名数据类型宽度空否备注PkdIdChar10N院系号dNameChar10Y院系名下面在系统实施阶段就可以物理实现数据库了,本系统使用前面实验已经建好的服务器端SQLServer数据库—xuanke,具体创建方法见前面实验。三.系统实现本实验是用JSP结合数据库实现的,其中包含了三个主页面,一是学生登录页面,二是教师登录页面,三是管理员登录页面。其中每个页面中都会有菜单进行相应的操作。3.1JSP文件代表的操作(1)主界面操作:Index.jsp//登录界面(包含学生、教师、管理员三个选项)Login.jsp//密码验证(2)学生选课(a)学生选课界面:student.jps//菜单显示studentIndex.html//欢迎界面studentMessage.jsp(b)个人信息:studMessSel.jsp//个人信息的页面显示(c)密码修改:stuM.jsp//在数据库中修改密码stuMessMod.jsp//修改密码界面stuMessModSuc.jsp//修改成功(d)成绩查询:gradeselect.jsp//相应课程的成绩查询(e)选课:choosecourse.jsp//所有课程显示choose.jsp//在数据库中插入数据choosesuccess.jsp//选课成功(f)选课情况查询及退选:courseselect.jsp//选课情况查询ccdel.jsp//数据库中删除选课记录(g)注销:zhuxiao.jsp//注销(3)教师管理(a)教师管理界面:teacher.jps//菜单显示teacherIndex.html//欢迎界面teacherMessage.jsp(b)个人信息:teacherMessSel.jsp//个人信息的页面显示(c)密码修改:teacherM.jsp//在数据库中修改密码teacherMod.jsp//修改密码界面teaMessModSuc.jsp//修改成功(d)提交成绩:grade.jsp//选课学生信息显示gradeIns.jsp//在数据库中插入数据(e)课程信息:lookcourse.jsp//选课情况查询(f)教室信息:classroom.jsp//查看可用教室的空闲时间(g)注销:zhuxiao.jsp//注销3.2数据库的连接举例:验证用户类型和密码时的数据库连接body%Stringname=(String)request.getParameter(username);Stringpass=(String)request.getParameter(userpass);Strings=(String)request.getParameter(userselect);Connectionconn=null;Statementstmt=null;ResultSetrs=null;StringloginNum=0;session.setAttribute(lnum,loginNum);try{Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);conn=DriverManager.getConnection(jdbc:odbc:xk,sa,);if(s.equals(1)){Stringsql=select*fromstudentwheresId='+name+'andsPass='+pass+';stmt=conn.createStatement();rs=stmt.executeQuery(sql);if(rs.next()){loginNum=1;session.setAttribute(lnum,loginNum);session.setAttribute(name,name);out.print(name+登陆成功,页面跳转........);response.sendRedirect(student/studentIndex.html);}else{out.print(用户名或密码有误..);response.sendRedirect(index.jsp);}}if(s.equals(2)){Stringsql=select*fromteacherwheretId='+name+'andtPass='+pass+';stmt=conn.createStatement();rs=stmt.executeQuery(sql);if(rs.next()){log