刘继华,郝芳芳,武桂芬
(吕梁学院 计算机科学与技术系,山西 离石 033001)
·计算机科学研究·
基于J2EE的大学生创新创业项目管理系统的设计与实现
刘继华,郝芳芳,武桂芬
(吕梁学院 计算机科学与技术系,山西 离石 033001)
《大学生创新创业项目管理系统》是在校大学生申报大学生创新创业项目的信息管理系统,该系统采用B/S架构,MVC模式,方便大学生创新创业项目相关资料的提交以及主管部门对这些资料的信息化审核、管理,对于当前高校对大学生创新创业项目管理具有较强的实际意义.
J2EE;项目管理;创新创业
大学生创新性实验项目是在校大学生本人或组织团队,在导师的辅导下,自己选题、自主组织实施并完成数据分析处理和编写总结等工作,该项目旨在培养学生问题提出、问题分析和解决的兴趣和能力.遵循“公开立项、自由申报、择优资助、规范管理”的规则,着重资助思路新颖、目标明确、具有创新性和探索性、研究方案及技术路线可行、实施条件可靠的项目[1].就目前该项目的实施情况分析,国内大多数院校在实施此计划时,采用传统的自上而下的消息传递与纸质文件的逐级递交模式.这种模式中,从项目前期的项目立项到后期的结题验收,中间需要递交的纸质文件很多,执行周期长,效率低.这种文件管理模式不便于项目资料的查询、存储、管理,因此,利用互联网的交互式管理来代替以前的以逐级式呈递的繁琐工作流程,建立一套高效的创新创业实验计划项目管理系统是十分必要的.
架构在一定程度上可以理解为替应用程序之间共享数据提供可重用组件的一种便捷封装机制,是一个应用程序的半成品,使用框架技术能够提高应用程序的开发效率,本系统的实现采用基于java web 三层架构.[2]系统架构的本质还是传统的mvc模式,本系统在实现过程中对传统的mvc模式进行了封装和改进,改进之后使得系统层与层之间耦合度更加低,层与层之间的分工更加明确,下面详细阐述各层的功能.
表现层:主要体现在前端的jsp页面,jsp页面用来渲染界面,页面通过浏览器接收客户端发起的各种请求并传递给后端控制器servlet,servlet处理该请求数据,并进行数据封装、处理业务、响应参数、跳转页面.jsp与servlet之间传递数据用的是jsp技术的域对象(request、session、application)传递.
业务层:业务层是表现层和持久化层的一个中介,它既可以接收servlet中的请求数据并传递给数据持久层dao,也可以从持久层中查询的数据传递给servlet,它在中间负责请求数据的业务处理.
持久化层:持久化层接收从业务层传来的数据,可以把这些数据持久化到硬盘并进行分类存储,也可以根据条件读取磁盘中的数据传递到业务层.
2.1 系统流程
系统始终围绕吕梁学院大学生创新创业训练计划项目的线下执行过程而设计,主要分为学生用户的注册,学生用户的登录,编辑注册信息,审核个人信息,编辑项目信息,查看项目通知,检索项目,上传项目附件,项目查询,博客求助,优秀作品浏览,审核专家登录,审核学生信息,审核项目信息,审核状态通知,超级管理员编辑,指定,修改,删除审核专家,超级管理员审核学生信息,超级管理员审核项目信息,超级管理员通知项目审核状态等.
学生用户管理:学生必须注册成为系统的学生用户后才能进行后续操作.学生利用手机号、密码进行登陆后可以进行查看和修改个人信息、查看项目申请流程,申请提交项目信息,上传项目文件,查询项目审核状态,查看项目审核通知信息等[3].
审核专家用户管理:审核专家可以查看学生信息,查看学生提交的项目申请及项目相关的附件,审核项目,通知项目负责人审核信息,并提出相关意见给项目负责人等.
系统管理员管理:数据库管理员指定系统管理员的重要权限,该角色的主要功能是查看和修改审核专家信息、查阅学生提交的项目申请及项目相关的附件,审核项目,通知项目负责人审核信息,针对项目问题向项目负责人提出合理的修改建议等.
系统的数据流图如下:(见图1)
图1 数据流图
2.2 系统总体架构
整个系统采用java web[4]三层架构,持久层,业务逻辑层,网络层,持久层用来持久化数据记录,如图:业务逻辑层用来处理系统相关的一些业务,网络层用来处理页面请求.由html5,css3,jquery,ajax等流行的web前端开发技术[5]开发的jsp页面负责系统请求的发起与响应内容的展示.页面请求的发起主要由html 标记语言配合jstl标签通过form表单,超链接发起,还有少数功能使用ajax异步和同步技术提交请求.当请求提交后,网络层的控制器调度业务逻辑层的方法处理请求业务,相关业务所对应的数据将在持久层与数据库交互时得到[6].
总体架构如下图:(见图2)
图2 系统架构图
2.3 创新创业训练计划项目流程阶段
本团队人员在调研,分析数据,抽象大学生创新创业训练计划各个角色的执行流程之后,将各个阶段的流程由线下模式发展为网络在线操作.这其中主要分为学生申请项目,提交项目,查询项目信息,审核专家查看项目申请以及各个阶段相关材料,审核项目,管理项目,检索项目,系统管理员管理审核专家,核实学生身份,审核专家身份等三大模块17项功能.
系统各模块的业务流程如图:(如图3)
图3 业务流程图
2.4 系统实现
学生用户登录成功后进入学生用户系统,在此系统中学生可以利用编辑这一功能选项来修改个人注册的非学籍信息,同时也可以查看项目申请流程,编写项目申请.在编写完项目申请后学生用户可以编辑修改项目申请,最后将确定修改无误后的项目申请提交.创新创业项目训练计划过程中各阶段的文件也可以在项目信息中上传.学生可以通过本系统查询自己申报过的各个项目申报情况,还有处于中期阶段的项目以及处于结题阶段的项目情况.在项目审核的各个阶段时间内,学生用户可以在本系统中查询项目的通过情况.当学生用户有意向申报创新创业项目但没有任何思路或者需要别人的意见的时候,他可以利用该系统进行网络在线求助,也可以浏览往年优秀的创新创业项目,从中吸取经验.
审核专家进入系统后可以查询学生用户提交的项目申请,中期进展阶段,结题阶段的项目记录,阅读相关的项目附件,通过项目附件以及线下和各位审核专家的商议决定项目通过与否,在审核结束后,给项目审核通过的学生发消息通知.
本系统利用java实现了项目一期的开发,针对系统特点在权限控制方面采用RBAC来控制各角色的权限,通过各角色的权限控制其功能.开发过程中具体的权限控制利用java web中filter组件实现,访问网站的所有请求都要通过filter组件详细过滤,该组件在过滤到请求之后从session中取出用户的个人信息,通过个人信息的类型来识别用户[7].如果要访问需要敏感信息例如只有超级管理员可以执行的操作,同样也需要通过filter组件来实现,如果用户没有登录要访问网站信息,同样也会在filter组件中过滤请求,filter组件识别到该用户没有登录,就会采取一定措施拦截该请求.具体实现如下(部分代码):
public class AdminFilter implements Filter {
public void destroy() {
System.out.println("====admin过滤器停止中====");
}
public void doFilter(ServletRequest arg0,ServletResponse arg1,
FilterChain arg2) throws IOException,ServletException {
HttpServletRequest request=(HttpServletRequest)arg0;
HttpServletResponse response=(HttpServletResponse)arg1;
response.setContentType("html/text;charset=utf-8");//设置编码
User user=(User) request.getSession().getAttribute("user");
if(user==null||!user.getUserType().equals("2")){
request.getRequestDispatcher("/default3.jsp").forward(request,
response);
}else{
}
}
public void init(FilterConfig arg0) throws ServletException {
System.out.println("====过滤器启动中====");
}
}
public class AddFilter implements Filter {
部分应用型学科如土木工程、机械与动力工程、安全科学与工程等的学科建设紧密围绕行业发展与应用,因此,用户提出国内国际专利文献与标准文献的使用需求,并希望获得原始全文。
public void destroy() {
System.out.println("====add过滤器停止中====");
}
public void doFilter(ServletRequest arg0,ServletResponse arg1,
FilterChain arg2) throws IOException,ServletException {
HttpServletRequest request=(HttpServletRequest)arg0;
HttpServletResponse response=(HttpServletResponse)arg1;
response.setContentType("html/text;charset=utf-8");//设置编码
User user=(User) request.getSession().getAttribute("user");
if(user==null){
request.getRequestDispatcher("/default2.jsp").forward(request,
response);
}else if(!(user.getUserType().equals("2"))){
request.getRequestDispatcher("/default2.jsp").forward(request,
response);
}else{
arg2.doFilter(request,response);
}
}
public void init(FilterConfig arg0) throws ServletException {
System.out.println("====过滤器启动中====");
}
}
在数据持久层化方面,主要采用了c3p0数据库连接池来提高系统的性能,降低系统和各数据库的耦合,通过封装,抽象jdbc的一些基本操作来实现数据库事务控制,保持数据的ACID
特性[8],具体实现核心代码如下:
public class JdbcUtils {
private static DataSource ds = new ComboPooledDataSource();
private static ThreadLocal
public static DataSource getDataSource() {
return ds;
}
public static Connection getConnection() throws SQLException {
Connection con = tl.get();//获取当前线程的事务连接
if(con != null) return con;
return ds.getConnection();
}
public static void beginTransaction() throws SQLException {
Connection con = tl.get();//获取当前线程的事务连接
if(con != null) throw new SQLException("已经开启了事务,不能重复开启!");
con = ds.getConnection();//给con赋值,表示开启了事务
con.setAutoCommit(false);//设置为手动提交
tl.set(con);//把当前事务连接放到tl中
}
public static void commitTransaction() throws SQLException {
Connection con = tl.get();//获取当前线程的事务连接
if(con == null) throw new SQLException("没有事务不能提交!");
conmmit();//提交事务
con.close();//关闭连接
con = null;//表示事务结束!
tl.remove();
}
/**
*回滚事务
* @throwsSQLException
*/
public static void rollbackTransaction() throws SQLException {
Connection con = tl.get();//获取当前线程的事务连接
if(con == null) throw new SQLException("没有事务不能回滚!");
con.rollback();
con.close();
con = null;
tl.remove();
}
public static void releaseConnection(Connection connection) throws SQLException {
Connection con = tl.get();//获取当前线程的事务连接
if(connection != con) {//如果参数连接,与当前事务连接不同,说明这个连接不是当前事务,可以关闭!
if(connection != null &&!connection.isClosed()) {//如果参数连接没有关闭,关闭之!
connection.close();
}
}
}
}……
吕梁学院大学生创新创业项目管理系统由当下流行的java web[9]三层架构,JavaEE技术开发[10],综合吕梁学院大学生创新创业项目训练项目实施流程,通过拜访审核专家教师,调研往年参加创新创业训练项目的学生,进行了具体详细的分析设计,解决了传统逐层纸质文件提交,逐级消息通知效率低等问题.但是,在经过无数次的测试后发现,该系统仍有许多不合理的地方有待改进.比如:系统在提交项目申报提交时,系统每次提交都得确认项目信息然后提交,不能直接一次性提交;系统在博客求助时,没有建立自己特定的博客数据库,而是链接到第三方博客库,这不利于信息的安全存储;审核专家在审核项目时,审核团体各自的意见需要在线下进行,不能直接通过网络在线交流.总之,在项目使用的过程中我们将会不断根据需求升级系统功能,以达到进一步完善系统的目的.
[1]张伟.济宁学院大学生创新创业训练计划项目管理系统设计与实现[D].济南:山东大学,2015.
[2]董婷.国内外大学生创新创业教育研究现状述评[J]. 社会科学,2016(2).
[3]冀伟,陈蕴智.大学生创新创业训练计划项目管理机制探讨[J].大连海洋大学,2016(3).
[4]常建国.Java Web典型模块与项目实战大全[M]. 北京: 清华大学出版社,2011.
[5]谭浩强.网页编程技术与实例[M]. 北京: 人民邮电出版社,2014.
[6]刘京华.Java Web整合开发王者归来[M]. 北京: 清华大学出版社,2010.
[7]施伟伟,张蓓.web 2.0 快速入门与项目实战[M]. 北京: 人民邮电出版社,2006.
[8]雨阳隆春.深入JSP 网络编程[M]. 北京: 清华大学出版社,2015.
[9]克拉恩·帕斯卡 ,雷洛·吉姆斯. Ajax实战[M]. 北京: 人民邮电出版社,2006.
[10]Bruce Excel. java 编程思想[M]. 北京: 机械工业出版社,2005.
Design and Implementation of Undergraduate Training Programs of innovation and Entrepreneurship System Based on J2EE
LIU Ji-hua,HAO Fang-fang,WU Gui-fen
(School of Computer Science,Lüliang University,Lishi Shanxi 033001,China)
This paper studies the college students’ innovative entrepreneurial project management system is to college students,according to the college students’ innovative entrepreneurial project to deepen their studies and lay a foundation for future employment information management system,the system adopts B/S structure,MVC pattern,convenient for college students’ innovative entrepreneurial project related information submitted and the competent department of information audit and management of these data,the colleges and universities for the current project management on college students’ innovative undertaking has strong practical significance.
J2EE;Project management;Innovative undertaking
2017-02-08
国家级大学生创新创业项目(201610812003);校级教学改革项目(JYYB201603).
刘继华(1975-),女,山西运城人,副教授,研究方向为软件工程、软件测试及云计算.
TP311
A
2095-185X(2017)02-0037-06