学生管理系统jsp实验报告.doc

上传人:wj 文档编号:643481 上传时间:2023-04-29 格式:DOC 页数:27 大小:2.05MB
下载 相关 举报
学生管理系统jsp实验报告.doc_第1页
第1页 / 共27页
学生管理系统jsp实验报告.doc_第2页
第2页 / 共27页
学生管理系统jsp实验报告.doc_第3页
第3页 / 共27页
学生管理系统jsp实验报告.doc_第4页
第4页 / 共27页
学生管理系统jsp实验报告.doc_第5页
第5页 / 共27页
学生管理系统jsp实验报告.doc_第6页
第6页 / 共27页
学生管理系统jsp实验报告.doc_第7页
第7页 / 共27页
学生管理系统jsp实验报告.doc_第8页
第8页 / 共27页
学生管理系统jsp实验报告.doc_第9页
第9页 / 共27页
学生管理系统jsp实验报告.doc_第10页
第10页 / 共27页
学生管理系统jsp实验报告.doc_第11页
第11页 / 共27页
学生管理系统jsp实验报告.doc_第12页
第12页 / 共27页
学生管理系统jsp实验报告.doc_第13页
第13页 / 共27页
学生管理系统jsp实验报告.doc_第14页
第14页 / 共27页
学生管理系统jsp实验报告.doc_第15页
第15页 / 共27页
学生管理系统jsp实验报告.doc_第16页
第16页 / 共27页
学生管理系统jsp实验报告.doc_第17页
第17页 / 共27页
学生管理系统jsp实验报告.doc_第18页
第18页 / 共27页
学生管理系统jsp实验报告.doc_第19页
第19页 / 共27页
学生管理系统jsp实验报告.doc_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生管理系统jsp实验报告.doc

《学生管理系统jsp实验报告.doc》由会员分享,可在线阅读,更多相关《学生管理系统jsp实验报告.doc(27页珍藏版)》请在冰点文库上搜索。

学生管理系统jsp实验报告.doc

东北大学软件学院实践考核类课程

(二)实验报告

实践考核类课程

(二)

实验报告

姓名

张杨

学号

20090725

班级

软一0901

指导教师

刘益先

实验名称

学生选课系统

开设学期

2010–2011第二学期

评定成绩

评定人签字

评定日期

东北大学软件学院

2011年4月

25

东华理工大学国际学院毕业设计   总结

1.系统分析与设计

本次实验是是设计一个基于web平台的学生选课系统,主要用于实现学生选课,课程管理,与课程维护等等模块;需要使用的技术是Servlet、JSP、JDBC、DAO等关键技术。

在本系统中,有三类用户:

系统管理员,教师和学生。

三种不同的用户所具有的操作权限以及操作内容均不一样。

本选课系统给予教师很大的自主权,系统管理员只负责向系统中添加学生和教师的个人信息。

教师、学生可以录网站自行进行选课,排课。

系统管理员设置一个选课范围,教师可以开设课程;学生可以登陆网站选择课程。

教师用户登陆网站后可以开设课程,为自己的课程编辑课程内容和课程信息。

每门课程可以是必修或则选修,教师为每门课程设置一个学分,并可以在课程结束后给予成绩和分数,如果学生及格,学生将获得该课程的学分。

对于学生用户,每个学生除了必须选择必修课程外,学生可以对自己选课信息进行选择。

系统可以根据学生的选课信息,生成一份学生自己的课表。

课程结束后学生可登录网站查询成绩。

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

N

N

N

N

1

1

1

N

N

1

1

N

N

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);

returnrs;

}

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));

}

dataBase.close();

returnstudent;

}

//增加一个学生

publicvoidaddStudent(Studentstudent)throwsSQLException,Exception{

StringsqlStudent="insertintostudentvalues('"+student.getID()+"','"+student.getName()+"',"+

"'"+student.getPassword()+"')";

dataBase.executeUpdate((Statement)dataBase.getStatement(),sqlStudent);

dataBase.close();

}

publicListgetAllStudents()throwsException{

Liststudents=newArrayList();

StringsqlStudent="select*fromstudent";

ResultSetrs=(ResultSet)dataBase.executeQuery((Statement)dataBase.getStatement(),sqlStudent);

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;

StringsqlStudent="select*fromcoursewhereid='"+courseid+"'";

ResultSetrs=(ResultSet)dataBase.executeQuery((Statement)dataBase.getStatement(),sqlStudent);

if(rs.next()){

StringclassName=rs.getString

(2);

StringteacherName=rs.getString(3);

intcounts=Integer.parseInt(rs.getString(5));

c=newCourse(courseid,className,teacherName,counts);

}

rs.close();

dataBase.close();

returnc;

}

//得到课程列表,用于显示某个学生注册的全部的课程

publicListgetCourses(Studentstudent)throwsException

{

ListsignUpInfo=newArrayList();

StringsqlStudent="select*fromlistwhereSno='"+student.getID()+"'";

ResultSetrs=(ResultSet)dataBase.executeQuery((Statement)dataBase.getStatement(),sqlStudent);

while(rs.next()){

Stringcno=rs.getString(3);

signUpInfo.add(this.getCourse(cno));

}

rs.close();

dataBase.close();

returnsignUpInfo;

}

//判断学生是否已经注册

publicbooleanisRegistered(Stringstudentid,Stringcourseid)throwsException

{

StringsqlStudent="select*fromlistwhereSno='"+studentid+"'";

ResultSetrs=(ResultSet)dataBase.executeQuery((Statement)dataBase.getStatement(),sqlStudent);

while(rs.next()){

Stringcourid=rs.getString(3);

if(courid.equals(courseid))

returntrue;

}

rs.close();

dataBase.close();

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='1'";

dataBase.executeUpdate(dataBase.getStatement(),sql);

StringsqlStudent="insertintolistvalues('"+i+"','"+studentid+"','"+courseid+"','"+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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2