学生管理系统jsp实验报告Word下载.doc
《学生管理系统jsp实验报告Word下载.doc》由会员分享,可在线阅读,更多相关《学生管理系统jsp实验报告Word下载.doc(27页珍藏版)》请在冰点文库上搜索。
1.2系统功能流程
用户登录身份验证模块验证用户名和密码,并根据不同的用户类型,选择;
用户登录身份验证模块
登陆注册模块
录入信息模块
开设课程模块
查询个人信息模块
评分模块
查看课程模块
选课模块
数据库模块
数据库
访问模块
(1)登录与注销
每个用户都可以用自己的帐号登录系统。
用户操作完成后推出系统,注销后可以重新登录系统。
(2)修改密码
每个用户第一次登录都用默认密码。
(1)系统管理员
管理员号
管理员
姓名
密码
用户类型
设置选课:
系统管理员通过此项功能设置选课,只有在选课范围内,学生才可以选择课程,不得修改。
录入学生与教师个人信息:
通过此项功能可以实现对教师和学生的个人信息添加删除。
(2)教师用户
教师号
教师
性别
职称
显示和修改个人信息:
教师用户登录系统后,可以查看和修改教师的个人信息,如姓名,电话,E-mail地址等。
开设课程:
教师用户登录系统后,可以开设课程,可以设置该课程可以设置该课程的最大人数。
编辑课程上课时间:
教师在开设了课程后,可以灵活地设置上课时间和地点。
给学生分数:
课程结束后,教师用户登录系统,可以为学过课程的学生给予相应的成绩,若及格,给予学生学分。
(3)学生用户
学号
系号
班级
成绩
政治
面貌
联系方式
就
读
中学
学生
性
别
籍
贯
姓
名
身份证号
交费情况
出生日
期
入学时间
简
历
民族
专业号
学生登录系统后,可以查看和修改学生的个人信息,如姓名,性别,电话等。
查看必修课程:
学生登录后,可以查看所有的必修课程。
查看该课程的信息,上课时间地点,开课教师信息等。
选择选修课程:
学生登录系统后,在所有选修课程中可以选择至少两门选修课程。
同时可以查看相关信息。
查看最终选课信息:
学生登录系统后,可列出已选择的课程,若选课信息未被锁定,则可以退选,若所选课程少于两门,系统会提示选择的课程少于两门。
查看学分和成绩
课程结束后,学生登录系统可查看自己学习课程的成绩。
1.3数据库设计
student,Teacher,Course,List,Admin,每个表与逻辑设计中一种的关系模式相对应。
下面是每个数据表中的属性,包括属性列的名称、数据类型、长度、是否可以为空和备注说明等内容。
(1)Student表。
Student表用来存储学生的个人信息,使用学号作为主键,如表3-2:
表3-2Student表
(2)Teacher表。
Teacher表用来存储教师的个人信息,用学校分配给教师的教师编号作为主键,这样可以避免重复,如图3-3:
表3-3Teacher表
(3)Course表。
Course表用来存储课程信息,Course表以课程编号为主键,设置课程编号自动增加1(通过建表的时候对属性列设置“标识”,并设置“标识递增量”为1)。
表中开课教师Id为外键,所有“TId”的值必须是Teacher表中的“TId”值。
如表3-4:
表3-4Course表
(4)List表。
List表用来存放课程的上课时间和上课信息,包括课程编号。
表3-6List表
(5)Admin表。
Admin表用来存放系统管理员信息,如表3-9:
表3-9Admin表
2系统实现与测试
1系统首页,点击进入选课系统登录页面
点击进入选课系统登录页面
2登陆页面
系统的登陆页面index.jsp在页面左边显示出三种身份登录的链接。
便于不同用户清晰的看清登录的位置。
不同身份的用户登录提交的用户名和密码提交到不同身份的数据库认证页面中。
如学生用户登录提交到login.jsp。
当验证通过时,跳到学生用户的页面。
并把信息保存进session,以供其他页面判断用户是否已经登录。
用户通过欢迎界面进入登录界面,输入用户名以及密码,然后选择权限(学生/老师/管理员)进入自己的页面。
该页面会对用户是否输入用户名或密码,输入是否正确进行检验,如果输入正确,则直接进入权限所对应的欢迎界面。
否则,则提示用户名或密码错误。
输入学生学号,进入学生欢迎界面。
点击查看已选课程,学生可以查看自己的已选课程。
点击注册课程选项,进入页面后选择相应课程后课程列表
结果如下:
选择注销计算机编程艺术课程,同上。
结果如下
选择管理员进入欢迎界面。
选择删除课程可以进行对相应课程的删除。
选择管理课程,可以实现对于课程的管理。
选择增加学生可以实现对学生的添加。
选择添加/删除老师,可以实现对老师的有效管理。
选择查看所有学生/老师可以查看到所有学生/老师的信息。
以老师身份登录,界面如下。
选择查看已带课程,可以查看自己的所有课程。
选择给出成绩,可以成功的为学生给出成绩。
2.1系统采用的关键技术
在页面中用到了页面语言HTML,JavaScript以及JSP;
标记语言使用的是:
XML;
后台中使用了Servlet服务器,
数据库操作使用的是JDBC,DAO;
全局使用了MVC设计模式等,是在JDK+MyEclipse+Tomcat+MySQL的开发环境中完成了这个学生选课系统。
2.2关键程序流程
下面用视图的方式展示学生选课系统的流程!
基本表
视图
教师课表
班级课表
学生学籍表
学生选课表
课程表
选修课开课表
教师表
学院开课表
学生表
系部表
N
1
2.3关键代码分析
下面将每个模块中好的部分以及重要的部分进行展示
连接数据库模块:
DataBaseFactory类用于创建数据库连接,是一个连接数据库的工具类!
packagecom.jinkun.data;
importjava.sql.*;
publicclassDataBaseFactory{
privateConnectionconn=null;
publicvoidDataBaseFactory()throwsException{
}
//得到一个statement
publicStatementgetStatement()throwsException{
DriverManager.registerDriver(neworg.gjt.mm.mysql.Driver());
Class.forName("
org.gjt.mm.mysql.Driver"
).newInstance();
Stringurl="
jdbc:
mysql:
//localhost:
3306/register?
user=root&
password=&
useUnicode=true&
characterEncoding=UTF-8"
;
conn=DriverManager.getConnection(url);
returnconn.createStatement();
}
publicResultSetexecuteQuery(Statementstmt,Stringquery)throwsException{
ResultSetrs=stmt.executeQuery(query);
returnrs;
}
publicbooleanexecute(Statementstmt,Stringquery)throwsException{
booleanrs=stmt.execute(query);
publicvoidexecuteUpdate(Statementstmt,Stringquery)throwsSQLException{
stmt.executeUpdate(query);
}
publicvoidclose()throwsSQLException{
if(conn!
=null)
conn.close();
学生模块:
studentDao在这个类中具体定义了学生的动能以及权限(包括:
增加/删除学生,增加/删除某一门课程,以及显示全部的课程列表等等)
publicclassStudentDao{
privateDataBaseFactorydataBase;
publicStudentDao()
{
dataBase=newDataBaseFactory();
}
//注销学生的一门课程
publicvoidcancelCoursed(Stringuserid,Stringclassid)throwsSQLException,Exception
Stringquery="
deletefromlistwhereCno='
"
+classid+"
'
dataBase.executeUpdate(dataBase.getStatement(),query);
dataBase.close();
publicStudentgetStudent(Stringstuno)throwsException
Studentstudent=null;
StringsqlStudent="
select*fromstudentwherestudentID='
+stuno+"
ResultSetrs=(ResultSet)dataBase.executeQuery((Statement)dataBase.getStatement(),sqlStudent);
if(rs.next()){
student=newStudent(rs.getString
(1),rs.getString
(2),rs.getString(3));
}
returnstudent;
//增加一个学生
publicvoidaddStudent(Studentstudent)throwsSQLException,Exception{
StringsqlStudent="
insertintostudentvalues('
+student.getID()+"
'
+student.getName()+"
"
+
"
+student.getPassword()+"
)"
dataBase.executeUpdate((Statement)dataBase.getStatement(),sqlStudent);
publicList<
Student>
getAllStudents()throwsException{
List<
students=newArrayList();
select*fromstudent"
while(rs.next()){
Stringstudentid=rs.getString
(1);
StringstudentName=rs.getString
(2);
Stringpassword=rs.getString(3);
Students=newStudent(studentid,studentName,password);
students.add(s);
dataBase.close();
returnstudents;
}
publicCoursegetCourse(Stringcourseid)throwsException
Coursec=null;
select*fromcoursewhereid='
+courseid+"
StringclassName=rs.getString
(2);
StringteacherName=rs.getString(3);
intcounts=Integer.parseInt(rs.getString(5));
c=newCourse(courseid,className,teacherName,counts);
rs.close();
returnc;
//得到课程列表,用于显示某个学生注册的全部的课程
Course>
getCourses(Studentstudent)throwsException
signUpInfo=newArrayList<
();
select*fromlistwhereSno='
Stringcno=rs.getString(3);
signUpInfo.add(this.getCourse(cno));
returnsignUpInfo;
//判断学生是否已经注册
publicbooleanisRegistered(Stringstudentid,Stringcourseid)throwsException
+studentid+"
ResultSetrs=(ResultSet)dataBase.executeQuery((Statement)dataBase.getStatement(),sqlStudent);
Stringcourid=rs.getString(3);
if(courid.equals(courseid))
returntrue;
}
returnfalse;
//用于注册一个学生
publicbooleanregister(Stringstudentid,Stringcourseid,Stringteacherid)throwsSQLException,Exception
Stringsql="
select*fromcountswhereid='
1'
ResultSetrs=dataBase.executeQuery(dataBase.getStatement(),sql);
inti=0;
if(rs.next())i=Integer.parseInt(rs.getString
(2));
i++;
sql="
updatecountssetidcounts='
+i+"
whereid='
dataBase.executeUpdate(dataBase.getStatement(),sql);
insertintolistvalues('
+teacherid+"
+"
!
dataBase.executeUpdate((Statement)dataBase.getStatement(),sqlStudent);
dataBase.close();
returntrue;
老师模块:
TeacherDao与studentDao是类似的;
下面展示teacher的servlet
dopost方法;
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
request.setCharacterEncoding("
gbk"
);
Stringtype=request.getParameter("
submit"
if(type.equals("
check"
)){
Stringnumber1=request.getParameter("
number"
request.setAttribute("
number1"
number1);
RequestDispatcherd=request.getRequestDispatcher("
/teacher/teaching.jsp"
d.forward(request,response);
elseif(type.equals("
reply"
))
{
HttpSessions=request.getSession();
Stringteachernum=(String)s.getAttribute("
id"
TeacherDaot=newTeacherDao();
try{
Teachertea=t.getTeacher(teachernum);
try{
intlimit=Integer.parseInt(request.getParameter("
limit"
));
Stringcoursename=request.getParameter("
coursename"
Stringcoursenum=request.getParameter("
coursenum"
try{
CourseDaoc1=newCourseDao();
System.out.print(teachernum);
Coursecourse=c1.getCourse(coursenum);
if(course==null){
Coursec=newCourse(coursenum,coursename,tea.getName(),limit);
CourseDaocdao=newCourseDao();
cdao.addCourse(teachernum,c);
doError(request,response,"
已成功完成"
}
else{
doError(request,response,"
已有该门课程"
}
}
catch(Exceptione){e.printStackTrace();
}catch(Exce