基于JSP的选课系统报告含源文件Word文档格式.docx
- 文档编号:20825216
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:22
- 大小:169.22KB
基于JSP的选课系统报告含源文件Word文档格式.docx
《基于JSP的选课系统报告含源文件Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于JSP的选课系统报告含源文件Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
学生可以直接查看选课情况,学生可以根据本人学号和密码登录系统,还可以进行本人课程情况的查询、修改和维护部分个人信息及对所在专业的所有班级进行成绩查询。
管理员可以浏览、查询、修改、统计选课的基本信息;
浏览、查询、统计和修改学生选课的基本信息设计不同用户的操作权限和登陆方法对所有用户开放的学生选课查询和个人部分信息维护查看个人情况信息维护学生个人密码根据选课情况对数据库进行操作并生成报表根据选课情况对数据库进行操作并生成报表查询及统计各种信息维选课信息维护工作人员和管理员信息维护学生信息处理信息的完整性。
1)学生信息模块完成学生的登陆,然后根据各位同学所在的系不同,调用相应的选课模块。
2)其中学生登录模块的功能是验证登录人员确实存在的学生,学生启动本系统后,系统提示输入学生学号码和密码(输出登陆密码及学生的学号)验证后进入主控操作界面。
3)课程信息管理有学生已经选择的科目和可以选择的科目,学生同时可以在规定时间内对自己选择的科目进行修改,学生必需先登陆才能进行对课程的选课否则不能进入选课系统.
2.2系统功能模块
1.系统用户由三类组成:
教师、学生和管理员;
2.管理员负责的主要功能:
课程审核,课程统计,成绩查看;
课程管理(删除和修改)
选课管理(实现选课功能开放和禁止、教师成绩输入开放和禁止)
3.学生模块:
主要包括学生选课模块、学生查询模块和学生部分信息修改模块。
4.教师通过登录,可以添加课程,查看选课学生的基本信息,可以输入成绩;
2.3E-R图
实体-联系图(Entity-RelationDiagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,形成一个独立于机器,独立于DBMS的ER图模型。
通常将它简称为ER图,相应地可把用ER图描绘的数据模型称为ER模型。
ER图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型。
三.数据库逻辑结构设计
3.1数据库的需求设计
数据库技术是信息资源管理最有效的手段。
数据库设计是指:
对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。
方便显示和方便查询,建立两层:
数据库的基本层-表和数据库的视图。
3.2概念结构设计阶段
(1)定义实体
实体集成员都有一个共同的特征和属性集,可以从收集的源材料——基本数据资料表中直接或间接标识出大部分实体。
分析可是本系统包含的实体有:
院系tbDept、专业tbProfession老师、tbTea学生、tbStudent课程、tbCourse选课、tbSC管理员、tbAdministrator
(2)定义联系
根据实际的业务需求和规则,使用实体联系矩阵来标识实体间的二元关系,然后根据实际情况确定出连接关系的势、关系名和说明,确定关系类型,是标识关系、非标识关系(强制的或可选的)还是非确定关系、分类关系。
根据本系统确定的联系有院系和专业是一对多关系,专业和学生也是一对多关系,老师和课程也是一对的关系,专业和课程也是一对多关系
。
学生和课程为多对多关系。
(3)定义码
通过引入交叉实体除去上一阶段产生的非确定关系,然后从非交叉实体和独立实体开始标识侯选码属性,以便唯一识别每个实体的实例,再从侯选码中确定主码。
为了确定主码和关系的有效性,通过非空规则和非多值规则来保证,即一个实体实例的一个属性不能是空值,也不能在同一个时刻有一个以上的值。
院系tbDept(主键:
系别)、专业tbProfession(主键:
专业号,外键:
系别)老师、tbTea(主键:
老师号,外键:
课程号)学生、tbStudent(主键:
学生号,外键:
专业号)课程、tbCourse(主键:
课程号外键:
专业号,老师号)选课、tbSC(联合主键:
学生号和课程号,外键:
学生号,课程号)管理员、tbAdministrator(主键:
管理员号)。
(4)定义属性
从源数据表中抽取说明性的名词开发出属性表,确定属性的所有者。
定义非主码属性,检查属性的非空及非多值规则。
此外,还要检查完全依赖函数规则和非传递依赖规则,保证一个非主码属性必须依赖于主码、整个主码、仅仅是主码。
定义表主要代码:
院系表tbDept
字段名
类型
长度
是否为主键
可否为空
说明
Dept_no
varchar
20
是
否
院系号
Dept_name
40
院系名
专业表tbProfession
Pro_no
专业号
Pro_name
专业名
老师表tbTeacher
Tea_no
老师号
Tea_name
老师名
Tea_pwd
课程表tbCourse
Cno
char
科目号
Cname
科目姓名
Cnature
科目性质
Cstate
科目状态
Cterm
int
学期
Cintro
500
科目简介
Cstate为1代表该科活动,0代表锁定,活动即学生可以进行选课老师不可以评分,锁定即学生不可以选课,但是老师确可以评分。
学生信息表tbStudent
Sno
学生学号
Sname
学生姓名
Spwd
学生密码
Ssex
10
学院性别
Sclass
班级
Sterm
Sentertime
Int
入学时间
选课表tbSC
学生号
Grade
成绩
3.3关系图
四程序核心代码及控件描述
4.1系统总框架图
4.2细分功能介绍
4.2.1学生功能部分
学生通过首页的登陆框,进入student.jsp页面,系统通过数据库(通过loginServlet实现)查询,查出学生选修课程,并通过读取其专业信息及当今所处学期,列出其本学期可选的课程。
通过输入学号及新密码,系统会根据学号查询tbStudent,更新密码。
通过输入选修课号,可以增加选修课,通过删除,可以删除已选的课程,通过查询可以实现按班级查询,按学号查询以及按姓名查询。
4.2.2教师功能部分
老师登录后,会通过查询数据库,显示老师教授的课程,方便老师对相关课程进行评分,同时会通过数据库查询显示未评分的学生,提醒老师进行评分,同时老师还可以修改密码,填写教授课程的专业介绍,对相关课程评分,查询选修学生的情况。
4.2.3管理员功能部分
管理员通过后台登录,登陆后管理员可以录入相关专业某学期的专业课程,及课程的相关信息,并可以设定课程状态(课程现在是否处于可选状态,选了该课程,现在还能否退掉),同时管理员还可以更新及修改学生及老师的基本信息,对学生及老师基本信息进行管理。
4.3功能的具体实现及代码
以学生功能模块为例,介绍各部分的具体实现及其代码。
4.3.1数据库操作类
packagecom.courses;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
importmons.dbutils.DbUtils;
importmons.dbutils.QueryRunner;
importmons.dbutils.ResultSetHandler;
publicclassDButil{
privateStringurl="
jdbc:
mysql:
//localhost:
3306/courses"
;
privateStringjdbcDriver="
com.mysql.jdbc.Driver"
privateStringuser="
root"
privateStringpassword="
pbm914"
publicintupdate(Connectionconn,Stringsql,String[]param){
intresult=0;
QueryRunnerqr=newQueryRunner();
try{
result=qr.update(conn,sql,param);
}catch(SQLExceptione){
e.printStackTrace();
}
returnresult;
}
publicObjectquery(Connectionconn,Stringsql,String[]param,ResultSetHandlerrsh){
QueryRunnerqr=newQueryRunner();
Objectresult=null;
result=qr.query(conn,sql,param,rsh);
e.printStackTrace();
publicStringgetUrl(){
returnurl;
publicvoidsetUrl(Stringurl){
this.url=url;
publicStringgetJdbcDriver(){
returnjdbcDriver;
publicvoidsetJdbcDriver(StringjdbcDriver){
this.jdbcDriver=jdbcDriver;
publicStringgetUser(){
returnuser;
publicvoidsetUser(Stringuser){
this.user=user;
publicStringgetPassword(){
returnpassword;
publicvoidsetPassword(Stringpassword){
this.password=password;
}
4.3.2登录功能
通过JSvalidation框架,验证输入是否合法,然后通过loginServlet判断登录是否成功。
JSvalidation框架是导入的一个插件。
loginServlet相关代码:
Stringsno=request.getParameter("
username"
);
//获得登录名及密码
Stringpwd=request.getParameter("
pwd"
HttpSessionse=request.getSession();
se.setAttribute("
sno"
sno);
//设置用户session方便进行查询
//System.out.println(pwd);
Stringsql="
selectSpwd,Sentertime,Pro_no,StermfromtbStudentwhereSno="
+sno;
//sql语句,对数据库查询
Connectionconn=null;
//下面为数据库连接及查询操作
DButildb=newDButil();
Stringurl="
3306/stucourse"
db.setUrl(url);
DbUtils.loadDriver(db.getJdbcDriver());
conn=DriverManager.getConnection(db.getUrl(),db.getUser(),db.getPassword());
Listlist=(List)db.query(conn,sql,null,newMapListHandler());
System.out.println(db.getUrl());
if(conn!
=null)
System.out.println("
success"
if(list!
OK"
booleant=false;
for(inti=0;
i<
list.size();
i++)
{
Mapmap=(Map)list.get(i);
if(map.get("
Spwd"
).equals(pwd))
{intterm=(Integer)map.get("
Sentertime"
TermSetterts=newTermSetter();
term=ts.Set(term);
Stringpro_no=(String)map.get("
Pro_no"
se.setAttribute("
pro_no"
pro_no);
term"
term);
System.out.println(term);
sql="
updatetbStudentsetSterm="
+term+"
whereSno="
intres=db.update(conn,sql,null);
t=true;
try{
conn.close();
if(t)
{
request.setAttribute("
method"
method);
request.setAttribute("
RequestDispatcherrd=request.getRequestDispatcher("
/student.jsp"
rd.forward(request,response);
}
else{RequestDispatcherrd=request.getRequestDispatcher("
/error.jsp"
4.3.3显示已选及可选课程
通过tbsc表查询学生已选课程,通过学生专业,查询学生可选课程
查询代码:
request.setCharacterEncoding("
UTF-8"
response.setContentType("
text/html;
charset=UTF-8"
System.out.println("
StuSelectdoPost"
Stringsno=(String)se.getAttribute("
Stringpro_no=(String)se.getAttribute("
intterm=(Integer)se.getAttribute("
Stringinfo=request.getParameter("
info"
System.out.println(pro_no);
System.out.println(term);
System.out.println(sno);
select科目号,科目名,课程简介,老师名fromView_CourseinnerjointbSCwhereView_Course.科目号=tbSC.CnoandSno="
db.setUrl("
Listlist1=(List)db.query(conn,sql,null,newMapListHandler());
if(list1!
=null){
list1OK"
for(inti=0;
list1.size();
i++){
Mapmap=(Map)list1.get(i);
System.out.println(map.get("
科目号"
));
科目名"
课程简介"
老师名"
db=newDButil();
sql="
select科目号,科目名,课程简介,老师名fromView_Coursewhere专业号='
"
+pro_no+"
'
and学期号="
+term;
//sql="
select*fromtbStudent"
//Stringparam[]={pro_no};
Listlist2=(List)db.query(conn,sql,null,newMapListHandler());
if(list2!
list2OK"
list2.size();
Mapmap=(Map)list2.get(i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JSP 选课 系统 报告 源文件