南京工程学院毕业设计说明书(论文)
步骤6,否则,返回步骤4。
⑥论文提交流程结束,用户可以在公共模块论文下载部分下载论文附件。 2.技术详解 (1)审题管理
一个学生只能选择一个选题,若某一选题被选择,其他人无法选择,审核不通过的选题,其他人可以重新选择。为实现此功能需求。数据库设计过程中,使用了两张表,包括选题表(topic)-包含选题相关信息、选择表(choose)-记录学生与选题的对应关系,通过对两张表中相关字段的操作实现了选题-审题操作。
指导老师成功设计选题后,系统自动将该选题状态设置为0(未选择),topic.setStatus(0)。学生选择该选题后,会在选择表中插入一条记录,同时在选题表中设置该选题选题状态为1(未审核)modStatus(tid,1)、将选题者用户编号插入选题表的choose(选择选题者编号)字段modTopic(tid,str)。指导老师登录系统,在选题设计部分可以审核学生的选题,审题之前,首先会判断选题的状态(topic.getStatus()方法获取选题状态值),只有状态为”未审核(1)”的选题才能被审核,其他状态的选题无法执行审题操作。选题若审核通过,则将选题表中对应选题的选题状态设置为3(审核通过)modStatus(id,3)、若审核不通过,会将选题表中对应选题状态设置为0(未选择)modStatus(id,0)、选题者用户编号(choose)置空modTopic(id, \,同时会在选择表中删除相应的记录delChoose(id)。这样就保证审核不通过的选题可以被其他学生继续选择,学生可以继续选择其他选题。为了保证系统的良好体验,系统约定一旦某个选题被学生选择,指导老师无法删除该选题,只有未被选择的选题才能执行删除操作。
审题管理部分重要代码如下:
<%if(topic.getStatus()==1){ %> onclick='getUrl(\<%=topic.getId() %>,\你确定不通过该选题吗?\ class=\ href=\>不通过
//审题之前,首先要判断选题的状态
public int modTopic(int id, String choose) { //在数据库中修改选题状态值
- 37 -
南京工程学院毕业设计说明书(论文)
}
if (act.equals(\选题审核不通过时 flag = topicDao.modStatus(id,0);
ChooseDao chDao = new ChooseDaoImpl();
int j=chDao.delChoose(id); //审核选题不通过时,删除选择表中的相应记录
TopicDao topic = new TopicDaoImpl();
int i=topic.modTopic(id, \将选题表中选择选题者用户编号置空 }
String sql=\String[] getValue={choose,id+\
return this.executeSQL(sql, getValue);
(2)论文管理
学生选题通过指导老师审核后,可以上传论文,管理员审核通过后,论文提交流程结束,若管理员审核不通过,学生需要修改自己已经提交的论文,修改完成后,等待管理员重新审核。为满足此需求,在数据库设计时,需要论文表(files),且论文表中含有论文状态属性。
学生上传论文后,系统会自动将论文状态置为“等待管理员审核”(0)file.setStatus(0)、同时在选题表的(上传论文者用户编号)upload字段插入用户用户编号uid,modFileTopic(tid, str)。管理员进入系统后,可以在“论文管理”模块可以审核学生上传的论文,审核论文之前,同样需要先判断论文状态值(file.getStatus()获取论文状态值),只有状态为“等待管理员审核(0)”的论文才能被审核。其他状态的论文必须通过某种途径使状态符合条件才能完成审核操作。论文若审核通过,则将论文状态置为“审核通过”(2)modStatus(fid,2),论文上传流程结束。若审核不通过,则将论文状态置为“审核不通过”(1)modStatus(fid,1)、此时学生需要在“我的论文”模块修改自己的论文,论文修改完成后,论文状态会被置为“等待管理员审核”(0),等待管理员的再次审核
3测试结果
指导老师进入系统,在“选题设计”模块可以查看、设计,修改、删除选题,点击“设计选题”,系统会自动弹出设计选题界面。设计选题成功后,设计的选题出现在选题列表界面,供学生选择。
- 38 -
南京工程学院毕业设计说明书(论文)
图4-11老师选题设计部分
学生登录系统后,需要先在“选题列表”部分选择选题,选择选题后,等待对应指导老师审核。在“我的选题”部分可以查看自己的选题状态,选题通过指导老师审核后可以提交论文,论文提交完成后,需要等待管理员审核。
图4-12学生上传论文部分
管理员进入系统后,在“论文管理”模块可以审核所有学生上传的论文, 管理员可以选择审核通过或者审核不通过某篇论文,对于审核不通过的论文,在“论文下载”部分,其论文附件不可下载。
图4-13管理员论文审核
学生登录系统后,在“我的论文”部分可以随时查看自己提交的论文的状态,可以修改自己的论文,修改完成后,论文状态会自动变为“等待管理员审核”。
图4-14学生论文修改
- 39 -
南京工程学院毕业设计说明书(论文)
第5章 设计总结
5.1开发心得
1.如何处理空值异常
在编码过程中,由于经验不足,及对编程语法的不足。导致刚开始系统中导出报空对象异常,后来,经过自己查阅相关资料,出现控制异常的根本原因在于试图从一个空对象中获取值:例如:获取一个用户的用户名,代码如下
User u=new Users();
UserDao uDao=new UserDaoimpl(); u=uDao.findUser(uid);
String uname=u.getUname();
若此时u是一个空对象,调用getUname()函数就会报空对象异常错误。为了避免出现空对象,可以采用以下方法:
①在调用一个对象的方法之前,先对对象进行判断,如果不为空,才能调用取值函数,针对以上代码,可以作如下修改:
User u=new Users()
UserDao uDao=new UserDaoimpl(); u=uDao.findUser(uid); if(u!=null) {
String uname=u.getUname(); }
②从源头避免出现控制,例如向User表中插入数据时,利用jQuery验证插入的元素,使之不能为空,这样取值时就不会报空对象异常。
针对以上两种方法,编码时需要结合使用,第一种法方法为主,第二种为辅。这样就可以避免出现空值异常错误。 2.后期拓展
一个好的系统,应该具有后期拓展能力,为此在设计系统时,预留了很多接口,如果需要添加功能,只需要在接口中声明该函数,使用该接口的类中实现这些方法即可,不影响其他模块。减少了后期扩展及维护的成本。 3.安全性
在实际生产环境中,安全性也是一个考量的因素,在本系统的设计编码过程中,处处体现了安全的元素,登录功能后台验证,使得非法人员无法登录系
- 40 -
南京工程学院毕业设计说明书(论文)
统。在论文下载模块,设置了论文的是否提供下载及下载权限。使用了大量的Servlet代码,使得系统原代码被窃取的风险性大大降低。后台数据库操纵时使用预编译对象PreparedStatemet替换Statement对象,防止了SQL注入攻击,大大提高了执行效率。使得代码的可读性更好。通过以上种种手段,确保了应用系统的安全性。
5.2系统特色
1.权限分离
系统根据用户的角色的不同,分配给用户的操作功能亦存在较大差异。用户不能越权查看到其他角色的功能模块。 2.用户访问控制
当用户试图访问或者操作与其角色不匹配的功能模块时,例如学生访问“选题设计”模块,[3]系统加入了监测机制,自动弹出提示提示页面-“您无权限访问此页面”,阻止用户的非法操作,防止用户对系统数据的非法篡改。 3.良好的可迁移性
正如大家所知道的那样,Java的移植性比较高,适用于多种平台,运行于各种各样的环境中。而JSP继承了Java的特点,本系统基于JSP开发,移植性优异,使得项目的部署变得简单快捷。 4.友好的操作体验
系统编码过程中,为了使系统变得简单易用,系统会自动生成了许多信息,例如指导老师设计选题时,选题编号自动生成(年份+用户编号+3位随机数),减少了了用户的输入。在记录数量比较多时,设置筛选.选题列表界面设置了许多筛选条件,方便了用户查看浏览。
- 41 -