1、课程设计汇报课程: jsp 学号: 姓名: 班级: 老师: 徐州师范大学计算机科学和技术学院课程设计任务书姓 名 学 号 班 级 课程名称数据库系统概论课程性质课程设计同组组员 分工学生选课操作、老师管理操作两部分功效实现设计时间 设计名称学生选课管理信息系统设计和实现设计要求系统功效基础要求:老师信息,包含老师编号、老师姓名、性别、年纪、学历、职称、毕业院校,健康情况等。学生信息,包含学号、姓名、所属院系、已选课情况等。教室信息,包含,可容纳人数、空闲时间等。选课信息,包含课程编号、课程名称、任课老师、选课学生情况等。成绩信息,包含课程编号、课程名称、学分、成绩。按一定条件能够查询,并将结果
2、打印输出。设计思绪和设计过程设计思绪:,本系统结合数据库和JSP编程实现了学生选课管理系统。学生选课管理系统分为三个子模块:第一模块是学生选课页面操作,包含个人信息,密码修改,查询成绩,选课,退选五个功效;第二模块是老师操作页面,包含个人信息,密码修改,录入成绩,查询选课情况,查看教室信息;第三模块是管理员,包含学生信息管理(增加、修改、删除、查询),老师信息管理(增加、修改、删除、查询),管理员信息管理(增加、修改、删除、查询)。计划和进度构思整个系统框架,在数据库中建表关键对学生选课部分操作进行jsp编码关键对老师相关操作进行jsp编码整合整个试验,并进行修改写课程设计汇报任课老师意 见说
3、 明学生选课管理系统一系统需求分析学生选课系统是一个学校不可缺乏部分,它内容对于学校决议者和管理者来说全部至关关键,所以学生选课系统应该能够为用户提供充足信息和快捷查询手段。伴随科学技术不停提升,计算机科学日渐成熟,其强大功效已为大家深刻认识,它已进入人类社会各个领域并发挥着越来越关键作用。 作为计算机应用一部分,使用计算机对选课信息进行管理,有着手工管理所无法比拟优点。这些优点能够极大地提升人事劳资管理效率,也是企业科学化、正规化管理,和世界接轨关键条件。 所以,开发这么一套软件成为很有必需事情,在下面各章中我们将以开发一套学生选课系统为例,谈谈其开发过程和所包含到问题及处理方法。 本试验实
4、现学生选课管理系统关键包含以下功效:1完成数据录入和修改,并提交数据库保留。其中数据包含:学生信息、课程设置、学生成绩和操作员信息等; 2.设计实现学生信息查询,选课管理、退选管理、分数查询,课程浏览老师信息查询、教室空闲时间查询等JSP页面 。 3含有一定安全性管理功效。包含操作员权限设置、修改密码设置、注销和等功效。二系统总概括1.系统总设计本系统结合数据库和JSP编程实现了学生选课管理系统。学生选课管理系统分为三个子模块:第一模块是学生选课页面操作,包含个人信息,密码修改,查询成绩,选课,退选五个功效;第二模块是老师操作页面,包含个人信息,密码修改,录入成绩,查询选课情况,查看教室信息;
5、第三模块是管理员,包含学生信息管理(增加、修改、删除、查询),老师信息管理(增加、修改、删除、查询),管理员信息管理(增加、修改、删除、查询)。学生选课老师管理管理员学生选课管理系统图1 系统功效模块图2数据库设计2.1数据库概念结构设计本系统关键有三个实体,其中有学生和课程两个实体集,一个学生能够选修若干门课程,一门课程也能够被多个学生选修,这两个实体集之间是多对多联络,还有老师和课程两个实体,一个老师能够教授若干门课程,一门课程却只能有一个老师教授,这两个实体集之间是一对多联络。经过选课成绩将老师和学生联络在一起。为确保系统安全性,设置了操作员这一实体集,用来存放正当用户编号、姓名、密码。
6、本系统E-R图以下:学生学号姓名密码院系性别电话地址选修成绩课程教授老师编 编号毕业院校健康情况学历姓名密码院系年纪性别职称MNM1编 课程号编 课程名编 老师号编 学分编 课时编 地点编 总人数编 已选数编 院系管理员编号密码图2 系统E-R图2.2数据库逻辑结构设计依据关系模型转换标准,上面ER图可转换为以下所表示关系模型:student(sId,sName,sPass,dId)含义分别为:学生(学号,姓名,密码,所在系编号)stuDetail(userID,userSex,userMobil,useraddress)含义分别为:学生信息(学号,性别,电话,地址) teacher(tId,
7、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)含义分别为:选修(学号,课程代码,成绩)roo
8、m(roomname,roomnum,roomtime)含义分别为:教室(教室名,容纳人数,空闲时间)admin(aId,aPass)含义分别为:管理员(管理员编号,姓名) department(dId,dName)含义分别为:院系(院系编号,院系名) 依据上面E-R图设计及关系模型设计,得出数据表设计,在本系统中关键数据表以下:表1 学生表Student表结构主码列 名数据类型宽度小数位空否备 注PksIdChar10N学号sNameChar20Y姓名sPassChar2Y密码dIdChar20Y所在系号表2 学生信息表StuDetail表结构主码列 名数据类型宽度小数位空否备 注Pkuse
9、rIDChar10N学号userSexChar10Y性别userMobilChar30Y电话userAddressChar50Y地址表3 老师表teacher表结构主码列 名数据类型宽度空否备 注PktIdChar10N编号tNameChar20Y姓名tPassChar2Y密码dIdChar20Y所在系号表4 老师信息表teadetail表结构主码列 名数据类型宽度空否备 注PkuserIDChar10N学号userSexChar10Y性别userAgeChar50Y电话usereduChar30Y学历usertitleChar30Y职称userschChar30Y毕业院校 Userhealt
10、hChar50Y健康情况表5 课程信息表Course表结构主码列 名数据类型宽度空否备 注PkcIdChar10N课程号coNameChar20Y课程名称tIdChar10Y老师号creditChar8Y学分periodChar8Y课时cPlaceChar10Y上课地点cNumAllChar4Y总人数cNumChar4Y已选人数dIdChar10Y院系号表6 选课成绩表choosecourse表结构主码列 名数据类型宽度空否备 注PkcIdChar5N课程代码sIdChar3N学号gradeDecimal5Y成绩表7 教室信息表room表结构主码列 名数据类型宽度空否备 注Pkroomname
11、Char10N教室名roomnumChar10N容纳人数roomtimeChar10Y空闲时间 表8 管理员表admin表结构主码列 名数据类型宽度空否备 注PkaIdChar10N管理员编号aPassChar10Y管理员姓名 表9 院系表department表结构主码列 名数据类型宽度空否备 注PkdIdChar10N院系号dNameChar10Y院系名下面在系统实施阶段就能够物理实现数据库了,本系统使用前面试验已经建好服务器端SQL Server数据库xuanke,具体创建方法见前面试验。三系统实现本试验是用JSP结合数据库实现,其中包含了三个主页面,一是学生登录页面,二是老师登录页面,三
12、是管理员登录页面。其中每个页面中全部会有菜单进行对应操作。3.1 JSP文件代表操作(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/
13、对应课程成绩查询(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/在数据库中修改密码
14、 teacherMod.jsp/修改密码界面 teaMessModSuc.jsp/修改成功(d)提交成绩:grade.jsp/选课学生信息显示 gradeIns.jsp/在数据库中插入数据 (e)课程信息:lookcourse.jsp/选课情况查询(f)教室信息:classroom.jsp/查看可用教室空闲时间 (g)注销: zhuxiao.jsp/注销3.2 数据库连接举例:验证用户类型和密码时数据库连接%String name=(String)request.getParameter(username);String pass=(String)request.getParameter(us
15、erpass);String s=(String)request.getParameter(userselect);Connection conn=null;Statement stmt=null;ResultSet rs=null;String loginNum=0;session.setAttribute(lnum,loginNum);tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);conn=DriverManager.getConnection(jdbc:odbc:xk,sa,);if(s.equals(1)String sql=select
16、 * from student where sId=+name+ and sPass=+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(用户名或密码有误.);re
17、sponse.sendRedirect(index.jsp);if(s.equals(2)String sql=select * from teacher where tId=+name+ and tPass=+pass+;stmt=conn.createStatement();rs=stmt.executeQuery(sql);if(rs.next() loginNum=2;session.setAttribute(lnum,loginNum);session.setAttribute(name,name);out.print(name+登陆成功,页面跳转.);response.sendRe
18、direct(teacher/teacherIndex.html);else out.print(用户名或密码有误.);response.sendRedirect(index.jsp); if(s.equals(3)String sql=select * from admin where aId=+name+ and aPass=+pass+;stmt=conn.createStatement();rs=stmt.executeQuery(sql);if(rs.next()loginNum=3;session.setAttribute(lnum,loginNum);session.setAtt
19、ribute(name,name);out.print(管理员+name+登陆成功,页面跳转.);response.sendRedirect(admin/adminIndex.html);elseout.print(用户名或密码有误.);out.print(登陆页面);catch(Exception e)out.print(e);/response.sendRedirect(index.jsp);%3.3 具体操作(1)学生选课操作(a)登录页面图1.1 学生登录页面关键代码: 欢迎您使用学生选课系统 用户名: 密码: 用户类型: 学生 老师 管理员 (b)菜单操作
20、图1.2 学生选课系统界面关键代码: 学生选课系统 个人信息 密码修改 成绩查询 选课查询和退选 选课 注销 (c)个人信息显示学生进入后能够在菜单里进行对应操作,点击个人信息时,就会出现该学生信息.以下图所表示:图1.2 学生信息显示界面关键代码:从数据库中读出对应信息:tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);conn=DriverManager.getConnection(jdbc:odbc:xk,sa,);String sql=select * from student where student.sId=+name+;System.
21、out.println(sql);stmt=conn.createStatement();rs=stmt.executeQuery(sql);if(rs.next()sId=rs.getString(sId);sName=rs.getString(sName);dId=rs.getString(dId);String sql1=select * from stuDetail where userID =+name+;System.out.println(sql1);stmt=conn.createStatement();rs=stmt.executeQuery(sql1);if(rs.next
22、()Sex=rs.getString(userSex); Mobil=rs.getString(userMobil); Addr=rs.getString(userAddress);Connection connd=null;Statement stmtd=null;ResultSet rsd=null;connd=DriverManager.getConnection(jdbc:odbc:xk,sa,);stmtd=connd.createStatement();rsd=stmtd.executeQuery(select dName from department where dId=+dI
23、d+);if(rsd.next()dName=rsd.getString(dName);catch(Exception e)out.println(e);% 学生个人信息 学号 姓名 性别 院系 电话 地址 (d)密码修改举例:将0826006学号密码该为:6666其显示以下:图1.3 修改密码修改提交后数据库中结果以下,可见密码已修改图1.4 数据库中修改后student表关键代码:数据库中修改该学生密码代码String sPass=(String)request.getParameter(sPass);Connection conn=null;Statement stmt=null;try
24、Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);conn=DriverManager.getConnection(jdbc:odbc:xk,sa,);String sql2=update student set sPass=+sPass+ where sId=+name+;stmt=conn.createStatement();stmt.executeUpdate(sql2);stmt.close();response.sendRedirect(stuMessModSuc.jsp);function checkBig() if (document.for
25、m1.sPass.value=) alert(密码不能为空!); document.form1.sPass.focus(); return false; else if (document.form1.sPassagn.value=) alert(再次输入密码!); document.form1.sPassagn.focus(); return false; else if (document.form1.sPass.value!=document.form1.sPassagn.value) alert(两次密码不一样!); document.form1.sPass.focus(); retu
26、rn false; out.print(修改成功);(e)成绩查询依据教授该门课老师是否提交成绩,学生能够查到自己对应课程成绩,其查询结果以下: 图1.5 查询成绩页面关键代码:tryStatement stmtc=null;ResultSet rsc=null;Connection connc=null;Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);connc=DriverManager.getConnection(jdbc:odbc:xk,sa,); String sqlc=select * from chooseCourse where sId=
27、+name+;stmtc=connc.createStatement();rsc=stmtc.executeQuery(sqlc);while(rsc.next()String coId=rsc.getString(coId);float grade=rsc.getFloat(grade);String grademess=null;Statement stmt=null;ResultSet rs=null;Connection conn=null;conn=DriverManager.getConnection(jdbc:odbc:xk,sa,); String sql=select coName from course where coId=+coId+;stmt=conn.createStatement();rs=stmt.executeQuery(sql);if(rs.next() if(grade0)out.print(grade); else out.print(未提交);(f)课程查询及退选能够经过对应课程后面退选选项进行课程退选图1.6 查询选课情况页面关键代码: 选课选择情况 课程名称 di