基于JAVA的重点实验室信息管理系统的设计与实现(WEB)

超级码农小懒 2024-08-19 13:03:01 阅读 59

重点实验室是当今国际上通用的科学研究的一种组织模式,也是各个国家科技创新体系中的重要组成部分,而实验室信息管理系统则是重点实验室不可或缺的一部分。在网络全球化潮流的冲击下,越来越多的重点实验室建立了自己的信息管理系统,将科研成果管理与信息化技术相结合,从而取代了传统的实验室信息管理模式。

一 相关技术

1.1 Myeclipse开发工具

        Myeclipse是属于企业级的工作平台,是对eclipse的扩展,在实际开发过程中利用它可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大地提高工作效率。MyEclipse 是一个十分优秀的用于开发Java、J2EE的 Eclipse 插件集合,MyEclipse支持十分广泛,尤其是对各种开源产品的支持十分不错[5]。MyEclipse囊括多种工具以及功能,可以说几乎涵盖了目前所有主流开源产品的专属eclipse开发工具。它是功能丰富的J2EE集成开发环境,包括了完整的编码、调试、测试和发布功能[6],功能十分强大。如果说eclipse适用于初学者来学习,那么Myeclipse就是真正的适用于企业开发。

1.2 B/S架构

        B/S架构即浏览器/服务器模式,在B/S的结构中,用户可以在任何能够上网的地方访问和使用系统网站的功能,没有时间等方面的限制,B/S结构是把程序完整放置到计算机网络的服务器上,通过计算机互联网给用户提供远程的网络服务。

1.3 JSP技术

        JSP与html相比我们称jsp为动态页面,即动态生成HTML、XML或其他格式文档的的Web网页技术标准。

1.4 Mysql数据库

        Mysql是当下最流行的关系型数据库之一,在WEB开发方面也是最好的RDBMS应用软件之一,使用十分广泛。Mysql数据库的可视化界面简洁明了,数据库文件的导入导出非常方便。Mysql所使用的SQL语言是访问数据库的最常用的标准化语言。Mysql体积小、响应速度快、总成本低,一般中小型网站的开发都选择Mysql作为网站数据库。尤其是开源这一特点,为Mysql赢得了很好的口碑,使其成为当下主流数据库之一[8]。

二 系统设计

2.1 系统概要设计

根据需求分析可以得出重点实验室信息管理系统的功能结构如下图所示:

2.2 数据库设计

概念模式的设计方法主要是以需求分析作为基础,分析得出每个实体及其属性,设计出能够真实反应客观事物的模型,通过该模型,可以清楚地理解该实体的特性。

(1)如图4-2用户信息实体。用来存储用户个人信息

图4-2 用户实体信息图

(2)如图4-3学术活动实体,用来存储学术活动相关信息

图4-3 用户实体信息图

(3)如图4-4科研成果实体,用来存储科研成果相关信息

(4)如图4-5获奖信息实体,用来存储科研成果获奖信息、获得专利等信息

(5)用实体关系图即E-R模型来表示实体之间的相互联系,设计并反映出用户所需的信息需求以及处理需求的数据库系统等概念模式[12]。清晰地展示出各个实体之间的关系,如下图4-6所示。

图4-6 实体联系E-R图

2.3部分数据库物理结构设计

三 系统实现

3.1系统登录

        用户输入登录网址后,可以看到登录界面,如图5-1。用户可以通过输入正确的用户名和密码,进入系统首页。在登录界面可以选择7天内自动登录的功能,即用户下次输入网址后,系统自动跳转到首页。

        用户登录流程,如图5-2。用户输入用户名和密码之后,有系统判定该用户名和密码是否正确,如果正确,则登陆成功进入首页,否则登录失败,重新输入。

<code>关键代码:

(登录功能)

String userName = request.getParameter("userName");

String password = request.getParameter("password");

String remember=request.getParameter("remember");

String loginMessage = null;

AdminBean admin = null;

AdminService adminService = new AdminServiceImpl();

admin = adminService.loadByName(userName);

if (admin == null) {

loginMessage = "用户名密码错误";

request.setAttribute("loginMessage", loginMessage);

request.getRequestDispatcher("/login123.jsp").forward(request,response);

} else {if (password.equals(admin.getPassword())) {

setCookie(request, response, remember);

// 创建session对象

HttpSession session = request.getSession();

session.setAttribute("admin", admin);

String lastTime = admin.getLastTime();

session.setAttribute("lastTime", lastTime);

// 登陆成功,重定向到首页

response.sendRedirect(contextPath + "/system/main123.jsp");

admin.setLastTime(MyUtil.SDF.format(new Date()));

adminService.updateByUserName(admin);

} else {

loginMessage = "用户名密码错误";

request.setAttribute("loginMessage", loginMessage);

request.setAttribute("userName", userName.trim());

request.getRequestDispatcher("/login123.jsp").forward(request, response);}}

3.2 系统首页

        用户登录成功之后可以看到系统首页,如图5-3。可以选择用户管理、科研成果管理、科研项目管理等功能。比如在用户管理模块下面有新增用户、修改用户、查询所有用户信息等具体功能。

关键代码:

<code>private void searchUsers(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {AdminBean admin = new AdminBean();

String pageNumStr = request.getParameter("pageNum");

int pageNum = 1;if (pageNumStr != null && pageNumStr.matches("\\d+")) {pageNum = Integer.parseInt(pageNumStr);}

String pageSizeStr = request.getParameter("pageSize");int pageSize = 2;

if (pageSizeStr != null && pageSizeStr.matches("\\d+")) {

pageSize = Integer.parseInt(pageSizeStr);}

PageModel<AdminBean> pageModel = new PageModel<AdminBean>();

pageModel = adminService.listAdminBeans(admin, pageNum, pageSize);

request.setAttribute("pageModel", pageModel);

request.getRequestDispatcher("/system/search123.jsp").forward(request, response);}

3.3 用户管理

        在用户管理模块中,不同权限的使用者看到的功能模块有不一样,管理员登录之后,可以看到所有的模块功能,如图5-4。普通用户登录之后,不能添加新用户,也不能查询其他用户的信息。

新增用户流程,如图5-5。有管理员进行操作,给系统添加新用户,按照要求填写新用户相关信息,并且赋予一定权限。系统用户依据权限分为管理员和普通用户,两种用户都是由管理员添加的。

关键代码:

<code>(添加新用户)

private void insert(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

AdminBean adminBean=new AdminBean();

try {BeanUtils.populate(adminBean, request.getParameterMap());

}catch (IllegalAccessException e) {

e.printStackTrace();

} catch (InvocationTargetException e) {

e.printStackTrace();

}

adminBean.setRegistTime(MyUtil.SDF.format(new Date()));

adminBean.setLastTime(MyUtil.SDF.format(new Date()));

//插入数据库中

if(adminService.insert(adminBean)>0)

{request.setAttribute("insertMsg", "注册成功");

request.setAttribute("admin", adminBean);

request.getRequestDispatcher("/system/insert123.jsp").forward(request, response);}

else {request.setAttribute("insertMsg", "注册失败");

request.getRequestDispatcher("/system/insert123.jsp").forward(request, response);}}

四 系统测试



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。