课程设计报告课程:jsp学号:姓名:班级:教师:徐州师范大学计算机科学与技术学院课程设计任务书学生选课管理系统一.系统需求分析学生选课系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对选课信息进行管理,有着手工管理所无法比拟的优点。
这些优点能够极大地提高人事劳资管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
因此,开发这样一套软件成为很有必要的事情,在下面的各章中我们将以开发一套学生选课系统为例,谈谈其开发过程和所涉及到的问题及解决方法。
本实验实现的学生选课管理系统主要包括以下功能:1.完成数据的录入和修改,并提交数据库保存。
其中的数据包括:学生信息、课程设置、学生成绩以及操作员信息等;2.设计实现学生信息查询,选课管理、退选管理、分数查询,课程的浏览教师信息查询、教室空闲时间查询等JSP页面。
3.具备一定的安全性管理功能。
包括操作员的权限设置、修改密码设置、注销和等功能。
二.系统总概括1.系统的总设计本系统结合数据库和JSP编程实现了学生选课管理系统。
学生选课管理系统分为三个子模块:第一模块是学生选课的页面操作,包括个人信息,密码修改,查询成绩,选课,退选五个功能;第二模块是教师操作页面,包含个人信息,密码修改,录入成绩,查询选课情况,查看教室信息;第三模块是管理员,包含学生信息管理(增加、修改、删除、查询),教师信息管理(增加、修改、删除、查询),管理员信息管理(增加、修改、删除、查询)。
图1系统的功能模块图2.数据库设计数据库概念结构设计本系统主要有三个实体,其中有学生和课程两个实体集,一个学生可以选修若干门课程,一门课程也可以被多个学生选修,这两个实体集之间是多对多联系,还有教师和课程两个实体,一个老师可以教授若干门课程,一门课程却只能有一个老师教授,这两个实体集之间是一对多联系。
通过选课成绩将老师和学生联系在一起。
为保证系统的安全性,设置了操作员这一实体集,用来存放合法用户的编号、姓名、密码。
本系统的E-R图如下:图2系统的E-R图数据库逻辑结构设计根据关系模型的转换原则,上面的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图设计及关系模型的设计,得出数据表的设计,在本系统中主要的数据表如下:端SQLServer数据库—xuanke,具体创建方法见前面实验。
三.系统实现本实验是用JSP结合数据库实现的,其中包含了三个主页面,一是学生登录页面,二是教师登录页面,三是管理员登录页面。
其中每个页面中都会有菜单进行相应的操作。
文件代表的操作(1)主界面操作:/登录界面(包含学生、教师、管理员三个选项)/密码验证(2)学生选课(a)学生选课界面:/菜单显示/欢迎界面(b)个人信息:/个人信息的页面显示(c)密码修改:/在数据库中修改密码/修改密码界面/修改成功(d)成绩查询:/相应课程的成绩查询(e)选课:/所有课程显示/在数据库中插入数据/选课成功(f)选课情况查询及退选:/选课情况查询/数据库中删除选课记录(g)注销:/注销(3)教师管理(a)教师管理界面:/菜单显示/欢迎界面(b)个人信息:/个人信息的页面显示(c)密码修改:/在数据库中修改密码/修改密码界面/修改成功(d)提交成绩:/选课学生信息显示/在数据库中插入数据(e)课程信息:/选课情况查询(f)教室信息:/查看可用教室的空闲时间(g)注销:/注销数据库的连接举例:验证用户类型和密码时的数据库连接<body><%Stringname=(String)("username");Stringpass=(String)("userpass");Strings=(String)("userselect");Connectionconn=null;Statementstmt=null;ResultSetrs=null;StringloginNum="0";("lnum",loginNum);try{conn=("jdbc:odbc:xk","sa","");if("1")){Stringsql="select*fromstudentwheresId='"+name+"'andsPass='"+pass+"'";stmt=();rs=(sql);if()){loginNum="1";("lnum",loginNum);("name",name);(name+"登陆成功,页面跳转........");("student/");}else{("用户名或密码有误..");("");}}if("2")){Stringsql="select*fromteacherwheretId='"+name+"'andtPass='"+pass+"'";stmt=();rs=(sql);if()){loginNum="2";("lnum",loginNum);("name",name);(name+"登陆成功,页面跳转........");("teacher/");}else{("用户名或密码有误..");("");}}if("3")){Stringsql="select*fromadminwhereaId='"+name+"'andaPass='"+pass+"'";stmt=();rs=(sql);if()){loginNum="3";("lnum",loginNum);("name",name);("管理员"+name+"登陆成功,页面跳转........");("admin/");}else{("用户名或密码有误..");("<ahref=>登陆页面</a>");}}}catch(Exceptione){(e);00509F下图所示:图学生信息显示的界面主要代码:从数据库中读出相应的信息:try{conn=("jdbc:odbc:xk","sa","");Stringsql="select*='"+name+"'";stmt=();rs=(sql);if()){sId=("sId");sName=("sName");dId=("dId");}Stringsql1="select*fromstuDetailwhereuserID='"+name+"'";stmt=();rs=(sql1);if()){Sex=("userSex");Mobil=("userMobil");Addr=("userAddress");}Connectionconnd=null;Statementstmtd=null;ResultSetrsd=null;connd=("jdbc:odbc:xk","sa","");stmtd=();rsd=("selectdNamefromdepartmentwheredId='"+dId+"'");if()){dName=("dName");}}catch(Exceptione){(e);}%><formname="form1"method="post"><tablewidth="350"border="0"align="center"cellpadding="0"cellspacing="2"class="b order"><tdheight="25"align="center"><strong><fontsize="5"color="#FFFFFF">学生个人信息</font></strong></td></table><tableborder="10"align="center"width="500"height="150"><tr><Tdwidth="60"><font size="4"color="#FFFFFF">学号</font></Td><tdwidth="100"><font size="3"color="#FFFFFF"><%=sId%></font></td> <tdwidth="60"><font size="4"color="#FFFFFF">姓名</font></td><tdwidth="100"><fontsize="3"color="#FFFFFF"><%=sName%></font></td><tdwidth="60"><font size="4"color="#FFFFFF">性别</font></td><tdwidth="100"><font size="3"color="#FFFFFF"><%=Sex%></font></td> </tr><tr><td><font size="4"color="#FFFFFF">院系</font></td><td><fontsize="3"color="#FFFFFF"><%=dName%></font></td><td><font size="4"color="#FFFFFF">电话</font></td><td><fontsize="3"color="#FFFFFF"><%=Mobil%></font></td><td><font size="4"color="#FFFFFF">地址</font></td><td><fontsize="3"color="#FFFFFF"><%=Addr%></font></td></tr></table></form>(d)密码修改举例:将0826006学号的密码该为:6666其显示如下:图修改密码修改提交后数据库中的结果如下,可见密码已修改图数据库中修改后的student表主要代码:数据库中修改该学生的密码的代码StringsPass=(String)("sPass");Connectionconn=null;Statementstmt=null;try{conn=("jdbc:odbc:xk","sa","");Stringsql2="updatestudentsetsPass='"+sPass+"'wheresId='"+name+"'";stmt=();(sql2);();("");}functioncheckBig(){if{alert("密码不能为空!");returnfalse;}elseif{alert("再次输入密码!");returnfalse;}elseif{alert("两次密码不同!");returnfalse;}}("修改成功");(e)成绩查询根据教授该门课的老师是否提交成绩,学生可以查到自己相应课程的成绩,其查询结果如下:图查询成绩的页面主要代码:try{Statementstmtc=null;ResultSetrsc=null;Connectionconnc=null;connc=("jdbc:odbc:xk","sa","");Stringsqlc="select*fromchooseCoursewheresId='"+name+"'";stmtc=();rsc=(sqlc);while()){StringcoId=("coId");floatgrade=("grade");Stringgrademess=null;Statementstmt=null;ResultSetrs=null;Connectionconn=null;conn=("jdbc:odbc:xk","sa","");Stringsql="selectcoNamefromcoursewherecoId='"+coId+"'";stmt=();rs=(sql);if()){if(grade>0)(grade);("未提交");}}(f)课程查询及退选可以通过对应课程后面的退选选项进行课程的退选图查询选课情况的页面主要代码:<tablewidth="90%"border="0"align="center"cellpadding="0"cellspacing="0"><tr><tdalign="center"valign="top"><pclass="style8"><%=name%>选课选择情况</p><tablewidth="600"border="0"cellpadding="0"cellspacing="1"bgcolor="#000000"><tr><tdwidth="100"align="center"bgcolor="#FFCCFF"><divalign="center"> <strong><fontcolor="blue">课程名称</font></strong></div></td><tdwidth="60"align="center"bgcolor="#FFCCFF"><divalign="center"><strong><fontco lor="blue">学分</font></strong></div></td><tdwidth="60"align="center"bgcolor="#FFCCFF"><divalign="center"><strong><fontco lor="blue">学时</font></strong></div></td><tdwidth="80"align="center"bgcolor="#FFCCFF"><divalign="center"><strong><fontco lor="blue">上课地点</font></strong></div></td><tdwidth="91"height="30"align="center"bgcolor="#FFCCFF"><divalign="center"><str ong><fontcolor="blue">教师</font></strong></div></td><tdwidth="139"align="center"bgcolor="#FFCCFF"><strong><fontcolor="blue">操作选项</font></strong></td></tr>while()){StringcoId=("coId");floatgrade=("grade");Stringgrademess=null;Statementstmt=null;ResultSetrs=null;Connectionconn=null;conn=("jdbc:odbc:xk","sa","");Stringsql="select*fromcoursewherecoId='"+coId+"'";stmt=();rs=(sql);if()){StringcoName=(2);StringtId=(3);floatcredit=(4);floatperiod=(5);StringcPlace=(7);Connectionconnt=null;Statementstmtt=null;ResultSetrst=null; connt=("jdbc:odbc:xk","sa","");Stringsqlt="selecttNamefromteacherwheretId='"+tId+"'";stmtt=();rst=(sqlt);if())(1));}}();();%></table></td></tr></table>(f)选课界面中已通过数据库将所有的课程列出来,学生可以通过前面的选择标志进行选课。