学生选课系统设计与开发项目报告Word下载.docx
《学生选课系统设计与开发项目报告Word下载.docx》由会员分享,可在线阅读,更多相关《学生选课系统设计与开发项目报告Word下载.docx(24页珍藏版)》请在冰点文库上搜索。
1.项目名称:
StudentCourse<
学号>
,中间不要加空格或其他字符,如:
StudentCourse1023110935
2.访问路径与项目名相同,如:
http:
//localhost:
8080/StudentCourse1023110935/
3.包命名规范
studentcourse.entity实体类
studentcourse.biz业务逻辑接口类
studentcourse.biz.impl业务逻辑实现类
studentcourse.daoDAO接口类
studentcourse.dao.implDAO实现类
studentcourse.web.action各个Action类
4.尽量书写必要的文档和注释
三、开发流程
1.面向对象分析和设计
UML建模如下图所示:
2.给项目添加Hibernate支持,建立实体类及其所对应的映射文件
说明:
你也可以选择先完成数据库的设计,再反向工程生成对应的实体类及其映射文件
3.DAO层的设计与实现
3.1通用数据库访问类HibernateUtil
方法名
功能描述
add
添加对象
delete
删除对象
Update
更新对象
Select
查询对象
Check
验证登陆信息
selectPage
分页查询
/**
*
*@author曹胜欢
*
*/
publicclassHibernateUtil{
privateHibernateUtil(){
}
privatestaticSessionFactorysessionFactory;
publicSessionFactorygetSessionFactory(){
returnsessionFactory;
publicvoidsetSessionFactory(SessionFactorysessionFactory){
this.sessionFactory=sessionFactory;
//得到session
publicstaticSessiongetSession(){
returnsessionFactory.openSession();
//增加操作
publicstaticbooleanadd(Objectentity){
Sessions=null;
Transactiontran=null;
booleantemp=false;
try{
s=HibernateUtil.getSession();
tran=s.beginTransaction();
s.save(entity);
mit();
temp=true;
}catch(Exceptione){
e.printStackTrace();
tran.rollback();
}
returntemp;
代码:
//删除操作
publicstaticbooleandelete(Objectentity){
System.out.println(entity==null);
s.delete(entity);
//更新操作
publicstaticbooleanupdate(Objectentity){
s.merge(entity);
3.2StudentDAO接口
checkStu
判断所要添加的学号是否存在
exists
获得对应的页码的数据集合
pageList
获得对应id的学生对象
getStu
修改学生信息
update
删除学生
添加学生
3.3StudentDAOImpl实现类:
3.4CourseDAO接口
获得分页查询的当前页的结果
getCour
获得对应id的课程对象
getCourse
获得学生的选课的集合
删除课程
updateCour
修改课程信息
addCour
添加课程
3.5CourseDAOImpl实现类:
3.6AdminerDAO接口
checkAdminer
验证登陆的管理员信息是否正确
判断添加的管理员的用户名是否存在
addAdmin
添加管理员
更新管理员信息
3.7AdminerDAOImpl实现类:
下面看一下具体的源码:
StudentDao.java
publicclassStudentDaoimplementsStudentDaoInter{
publicStudentcheckStu(Studentstu){
Objectobj=HibernateUtil.check(
"
fromStudentswheres.idCard=?
ands.password=?
"
newString[]{stu.getIdCard(),stu.getPassword()});
returnobj!
=null?
(Student)obj:
null;
publicbooleanexists(StringidCard){
Objectobj=HibernateUtil.check("
fromStudentawherea.idCard=?
newString[]{idCard});
returnobj==null?
false:
true;
AdminerDao.java
publicclassAdminerDaoimplementsAdminDaoInter{
publicAdminercheckAdminer(Admineradmin){
fromAdminerawherea.username=?
anda.password=?
newString[]{admin.getUsername(),admin.getPassword()});
returnobj!
=null?
(Adminer)obj:
null;
publicbooleanexists(Stringusername){
newString[]{username});
/*(non-Javadoc)
*@seecom.bzu.dao.impl.AdminDaoInter#addAdmin(java.lang.Object)
publicbooleanaddAdmin(Objectentity)
{
returnHibernateUtil.add(entity);
4.添加项目支持
四、项目模块介绍
1.前台模块
主要功能:
1.1学生登陆
1.2个人信息管理
1.2.1:
个人信息显示
1.2.2:
个人信息修改
1.3选课信息管理
1.3.1已选课程列表
1.4课表信息管理
1.4.1课表显示
1.1学生登陆页面:
页面显示:
1.2.1个人信息显示:
1.2.2修改个人信息
页面显示
1.3.1已选课程列表
1.4.1课程列表显示
总体功能说明:
1.学生登陆功能,如果用户名和密码不正确可以给用户在页面有好提示
2.学生信息列表功能可以显示出当前登录学生的基本信息
3.学生信息修改功能可以修改当前登录学生的信息
4.已选课程显示功能可以显示当前登录学生所选课程
5.在已选课程列表中可以进行退选
6.课程列表功能可以显示出当前所有课程的列表
7.在课程列表中可以进行选课
8.在课程列表中支持模糊查询和分页功能
整体页面显示:
2后台管理模块
2.1管理员登录功能
2.2管理员信息显示
2.3添加管理员:
这里用到了ajax异步验证技术来验证用户名是否存在
2.4更新管理员信息
2.5学生列表
2.6学生添加
2.7课程列表
2.8课程添加
主要代码示例:
Ajax异步验证主要代码:
课程列表
主要页面显示:
学生列表
利用模式窗口形式修改学生信息
总体后台页面显示
最后一个功能就是在用户首页,用户可以选择是按管理员登陆还是学生登陆:
如下图
主要遇到的问题:
1.在利用乐观锁来解决事务并发所带来的并发问题时,配置了乐观锁以后,更新学生信息的时候提示另一个事务正在读取这个对象,报错异常
解决办法:
去掉乐观锁,不让他限制事务的并发
2.加载页面列表信息时,页面加载缓慢,甚至有时页面加载不出来,导致服务器死掉。
配置二级缓存,一次加载数据信息的时候,以后再加载数据信息,不需要再去数据库里面去找,直接去二级缓存里找,大大提高了查询速度。