JSP销售信息管理系统_毕业设计(论文)(17页).doc
-JSP销售信息管理系统_毕业设计(论文)-第 17 页JSP销售信息管理系统摘 要:中国经济以非常快的速度融入世界经济,特别是中国制造业正在越来越深刻、越来越广泛地融入国际分工体系之中,中国市场成为国际市场的组成部分。随着经济实力和竞争力的不断增强,中国各工业部门的产业链继续延伸,产业融合进程特别是高新技术产业同传统产业的融合进程明显加快,产业创新能力显著增强,从而为中国走向新型工业化的道路奠定了基础。而信息化建设是走向信息工业化的必经之路。在这里我们拿制药业综合信息系统为例,对制药业的信息管理流程以及相关技术难点做一探讨。本综合信息管理系统从企业的自身条件出发,通过系统管理对企业的各种业务数据进行整理,查询,统计,输出充分利用企业的现有资源进行资源整合,采用数据挖掘为决策者提供分析结果,作为决策者决策的一个做直接依据。本系统采用JSP技术和SQL数据库技术的结合,JSP技术的安全性,稳定性,跨平台性的特点都在本系统中有了大量的体现,另外采用B/S模式的人机界面,人性化的设计更有利于企业一般工人的操作。关键词:制药业; 数据挖掘; 决策依据; JSP技术 The pharmaceutical industry comprehensive information management systemPlanning and DesignYuan Tian Department of Computer Science & Technology 2008 Graduatesof Huaibei Coal Industry Teachers CollegeSupervised by liusheng, Associate ProfessorAbstract: China's economy incorporates the international economy at very quick pace, Specially Chinese manufacturing industry more and more profound, more and more widely integrates in the international division of labor system,The Chinese market becomes the component of the international market. With the constant enhancement of the economic strength and competitiveness, The industry chain of every industrial department of China continues extending, The industry merges the process especially new high-tech industry and integration process of the traditional industry to obviously accelerate, Industry's innovation ability is strengthened notably, Thus establish the foundation that China moves towards the new and industrialized road.But the informationization construction is moves towards the information industrialization the road which must be taken. Takes the drug industry synthesis information system in here us is the example, Makes a discussion to the drug industry information management flow as well as the correlation technology difficulty.This synthesis information management system embarks from enterprise's own condition, Carries on the management through the system administration to enterprise's each kind of service data, the inquiry, the statistics, Outputs fully carries on the conformity using enterprise's existing resources, Uses the data mining to provide the analysis result for the policy-maker, As a policy-maker's direct basis. This system uses the JSP technology and the SQL data bank technology union,The security of JSP technology, stability, the characteristic across the platform all have a large amount of embodiment in this system, In addition adopt the interpersonal interface of B/S mode. Humanized operation more favorable to enterprise's general worker of design.Key words:The pharmaceutical industry; Data Mining; Basis for decision making; JSP technology目录引言.51.系统分析.6 1.1需求分析.6 1.2可行性分析.62.系统设计.7 2.1设计目标.7 2.2开发工具以及运行环境.7 2.3B/S模式分析.83.系统总体架构.8 3.1系统核心功能介绍.8 3.2模块功能介绍.8 3.3开发技术分析.94.数据库设计.9 4.1主要数据表的结构.10 4.2数据库设计文件.125.系统主要功能模块设计.13 5.1系统用户登录设计.13 5.2销售出库单模块设计.19 5.3销售入库单模块设计.21 5.4仓库月报模块设计.22总结.24主要参考文献25致谢.26制药业综合信息管理系统销售模块规划与设计 引言随着中国加入WTO及全球经济一体化进程的加快,世界经济已由工业化经济逐步进入网络信息化时代。在信息时代来临之季,各企业都紧跟时代的脚步,转变着企业的经营模式、管理模式,从传统的人工管理体制,向信息自动化管理体制过渡。与此同时,企业的传统式的管理模式也在逐步向自动化管理模式转变。网络综合信息管理系统系统就是在这样的大背景下应运而生的。信息时代的到来让人们尝到了“信息爆炸”的滋味,信息的大量拥入让企业在信息处理方便应接不暇,传统的办公模式、对信息的处理方法,早已不能满足企业对信息快速、准确的处理的要求。一个企业对信息数据的掌握程度、处理能力,体现了一个企业对市场的敏感程度,数据的真实性、准确性直接决定着企业的发展方向。从传统的办公模式向自动化办公管理模式转变,提高企业的信息处理能力,以增强企业的市场竞争力,成了企业发展过程中的首要问题。在这里我们以一家实体公司为例,为其量身定做的该制药业信息管理系统。金蟾生化股份有限公司是由安徽金蟾药业总公司作为主要发起人,联合中国药科大学、中国中医研究院中药研究所,安徽省科技产业投资有限公司和北京大卫科医药发展有限公司共同发起成立。公司主要从事中成药、中药饮片及西药的制造、加工、销售,兼营科技成果的开发与转让。主导产品是安徽省淮北市金蟾药业总公司独家研制的“金蟾”牌华蟾素注射剂(口服液、片)。该公司是淮北市科技示范企业,安徽省高新技术企业,国家重点高新技术企业,全国质量效益型先进企业,安徽省十佳产学研示范企业之一.1 系统分析1.1 需求分析目前市场上的软件,特别是针对性强的软件,那么在开发的过程中,需求调研以及需求分析的过程是必须的,那么也在整个的开发环节中占有重要的地位。我们不可能闭门开发,而不顾客户的需求,这样无异于闭门造车。当然一个软件的开发过程也就决定了他的试用范围,为什么这么说呢?那是因为在需求分析结束后,在前期框架设计的过程中,我们要符合软件的开发流程以及开发原则,保证其软件功能的扩展性以及可配置性。那么这样,在别的相同的性质的公司推广应用的时候,那么我们就可以通过其配置功能来满足客户我的特殊需求,当然,即使再完美的软件,那么他也不可能在所有的公司部门都适用的,难免在推广的过程中会有这样或者那样的改动,这是难以避免的!通过对公司的前期的需求调研,对该系统要求有以下功能:q 由于操作人员的计算机知识普遍较差,要求有良好的人机界面。q 管理系统用户,由于该系统的使用对象多,要求有较好的权限管理。q 管理企业的会议信息,发文信息、公共信息。q 提供个人业务办公服务。q 对企业系统使用者进行全面管理。q 设置生产数据统计、打印功能。q 对企业制定的采购计划进行管理。q 对库存信息进行管理。q 发布企业的生产指标,对其进行管理。q 强大的生产数据统计功能。q 对数据库的备份操作进行合理的安排,以及当外界环境(停电、网络病毒)干扰本系统时,系统可以自动保护原始数据的安全。q 在相应的权限下,删除数据方便简单,数据稳定性好。q 数据计算自动完成,尽量减少人工干预。q 系统退出。1.2 可行性分析计算机技术的飞速发展,使计算机应用技术在企业管理中也得到了迅速的普及,人们开始通过计算机对实务工作中的各项信息进行管理,以帮助企业提高生产,运作的效率。医药行业中,利用计算机实现医药产,供,销中的各种信息的管理,早已广泛应用于本行业企业管理以及企业内部信息。本系统结合医药行业的产,供,销制度,对药品,原料,客户,供应商的基本信息,原材料的采购,药品的销售,以及库存盘点信息等进行管理,真正实现了企业的信息化管理q 经济性通过该系统对企业内部信息进行全面的自动化的管理,大大提高了企业的办公效率。通过系统对企业生产经营过程中的数据进行全面的管理和统计,避免人为处理各类数据时所产生的各种问题,提高了企业的经济效益,为企业经营决策提供了大量的、权威的数据,使企业的管理进行到科学化、系统化的范筹。技术性网络化的系统管理,使企业管理更加规范,实现了通过网络对信息进行发布、传递、接收等一系列功能。系统中设置的个人办公管理模块,为个人办公提供了一个更为方便的管理平台,大大提高个人办公的工作效率,进而提高整个企业的运行效率。2 系统设计2.1 设计目标本系统是针对中小型企业内部自动化管理的要求进行设计的,主要实现如下目标:q 系统采用人机对话方式,界面清晰、信息查询灵活、方便、快捷、准确、数据存储安全可靠。q 利用系统快速的统计生产的数据报表,并对报表信息进行打印。q 键盘操作,快速响应。q 实现了各类信息发布、信息联系的强大的管理能力。q 实现对企业系统使用者的管理功能等。q 实现了个人业务的信息自动化管理功能。q 对企业的采购计划、库存信息进行管理。q 发布生产指标,对企业生产指标信息进行管理。q 发布会议信息,并对会议信息进行管理。q 对系统用户进行管理。q 为了加强数据保密性,为每个用户设置权限级别。q 系统最大限度地实现了易安装性、易维护性和易操作性。q 系统运行稳定、安全可靠。q 系统对相关人员的审批权限进行合理的分配。q 系统对相关数据的流通进行有效合理的管理。2.2 开发工具及运行环境开发工具及环境:j2sdk+ tomcat 5.0+Eclipse+JBuilder硬件平台:q CPU:P41.8GHz;q 内存:256MB以上。软件平台:q 操作系统:Windows server 2003q J2sdk+tomcat5.0q 数据库:SQL Server 2000。q 浏览器:IE5.0,推荐使用IE6.0。q Web服务器:IIS5.0。q 分辨率:最佳效果1024×768像素。2.3 B/S模式分析本系统采用的是B/S模式结构,该模式在目前的软件开发工程中应用比较广,技术也比较成熟,同时从另外一方面也保证了系统的安全性。Browser/Server (简称B/S) 即浏览器/服务器模式,是一种从传统的二层C/S模式即客户机/服务器模式发展起来的新的网络结构模式。B/S模式管理信息系统克服了C/S 模式管理信息系统的不足,其主要表现在: B/S模式提供了一致的用户界面 B/S模式具有很强的开放性 B/S模式的结构易于扩展 B/S模式提供灵活的信息交流和信息发布服务2.4逻辑结构设计本系统数据库采用SQL Server 2000数据库,系统数据库名称为goldtoad。数据库goldtoad中包含97张表。数据库中的数据表请参见附录B。3 系统总体架构3.1 该系统核心功能Ø 完善的权限分配功能Ø 各部门之间的数据共享以及传输Ø 报表打印功能Ø 功能审批Ø 数据挖掘功能3.2模块功能介绍系统主要包括以下功能模块:q 系统登录模块:主要用于用户登录管理。q 销售管理模块:主要是针对销售科人员的相关操作;q 采购管理模块:主要包括请购单、领料单、入库单、物资台帐等供应科的相关操作;q 车间管理模块:主要是针对生产车间人员的相关操作;q 计划管理模块:主要是针对计划科人员的相关操作;q 统计查询模块:主要是包括各个部门各种报表数据的查询统计打印等功能:q 基础数据维护模块:主要提供各种基础数据的录入以及定义等功能;q 系统管理模块:主要是提供给系统管理员对系统的各种管理;3.3开发技术分析A. J2SDKJAVA 是运行在JAVA虚拟机上的程序代码,要开发JAVA程序必须有J2SDK的支持。B. Tomcat 5.0 Tomcat 5.0是企业系统的服务器,大多用于中,小型网站系统开发和学习开发JSP应用程序。Tomcat 的安装是需要JAVA虚拟机的支持的, C Eclipse 是JAVA的一个开发工具,是有IBM等多家公司联合研制开发的一个开源软件,也是目前比较流行的JAVA开发工具。 D Jbuider 是SUN公司开发的一套可视化的JAVA开发工具,目前的JAVA开发也是一部分人采用该工具开发。4.数据库设计本系统数据库采用SQL Server 2000数据库,系统数据库名称为goldtoad,整个系统数据库中共包含了97张表,下面将给出主要数据表概要说明以及主要数据表的结构。为了对本系统中的数据库的数据表有一个更清晰的认识,在这里设计了一个数据表树形结构图,如图所示,该数据表树形结构图包含系统所有数据表。4.1主要数据表的结构由于本系统的设计以及结构比较复杂,在这里我们的设计主要是成品销售以及仓库部分做一详细说明:u XsProduct (产品基本情况表)产品基本情况表主要用来保存药品的基本信息,产品基本情况表的结构如表所示:u XsSaleMoney (销售基本情况表)销售基本情况表主要用来保存产品有关销售的基本信息,销售基本情况表的结构如表所示:u XsSaler (销售人员基本情况表)销售基本情况表主要用于保存销售人员的基本信息,销售人员基本情况表的结构如表所示:u XsWriteLogList(销售清单基本情况表)销售清单基本情况表主要用于保存对于销售情况的基本信息,销售清单基本情况表的结构设计如表所示:u SysUser (系统用户基本表)系统用户基本表主要用于保存本系统试用用户的基本信息,系统用户基本表的结构如表所示:数据库设计文件goldtoad.pdm如下图所示:数据库设计文件主要是在数据库开发的过程中,利用powerdesigner工具开发。5系统主要功能模块设计5.1系统用户登录设计系统用户登录主要用来验证用户登录是否有效,完成用户的登录功能,系统运行之后,首先运行登录界面,用户输入用户ID号,按<enter>键之后,系统根据用户ID自动检测用户是否存在:如果用户不存在,再进行信息提示;否则显示用户的姓名,然后输入该用户的口令和重复口令之后进行系统的登录。该模块的运行结果如图所示:登录界面的文件名称为:index.jsp。主要的代码如下:form name="loginForm" action="/login.do?method=init" method="post" onsubmit="return submitForm();"><table width="50%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="25%" height="32"><img src="/images/yhm.gif" width="61" height="26"></td> <td width="75%" height="32"> <input type="text" name="login_name" size="180px"> </td> </tr> <tr> <td height="32"><img src="/images/Mm.gif" width="61" height="26"></td> <td height="32"> <input type="password" name="login_pwd"/> </td></tr><tr align="center"> <td height="26"colspan="2"><table width="80%" border="0" cellspacing="0" cellpadding="0"> <tr align="center"><td width="61"><input type="submit" value="登录" class="button_login"></td> </tr></table> </td></tr> </table> </form>相关脚本语言为:<script>function submitForm() if (loginForm.login_name.value.length=0) alert("请输入用户名"); return false; if (loginForm.login_pwd.value.length=0) alert("请输入密码"); return false; loginForm.submit();</script>相关Java文件代码如下:package com.goldtoad.action;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;import org.springframework.web.bind.ServletRequestBindingException;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.multiaction.MultiActionController;import com.goldtoad.ResultInfo;import com.goldtoad.SystemApplication;import com.goldtoad.SystemConstants;import com.goldtoad.UserToken;import com.goldtoad.dao.SysPostMenuDAO;import com.goldtoad.dao.SysUserDAO;import com.goldtoad.dao.SysUserPostDAO;import com.goldtoad.po.SysPost;import com.goldtoad.po.SysUser;import com.goldtoad.po.YgEmployee;import com.txtec.utils.RequestUtil;public class LoginControl extends MultiActionController protected static final Logger log = Logger.getLogger(LoginControl.class); private SysUserDAO sysUserDAO; private SysUserPostDAO sysUserPostDAO; private SysPostMenuDAO sysPostMenuDAO; public LoginControl() public void setSysUserDAO(SysUserDAO sysUserDAO) this.sysUserDAO = sysUserDAO; public void setSysUserPostDAO(SysUserPostDAO sysUserPostDAO) this.sysUserPostDAO = sysUserPostDAO; public void setSysPostMenuDAO(SysPostMenuDAO sysPostMenuDAO) this.sysPostMenuDAO = sysPostMenuDAO; /登陆 public ModelAndView init(HttpServletRequest request, HttpServletResponse response) throws ServletRequestBindingException ResultInfo resultInfo = new ResultInfo(); try String loginName = RequestUtil.getStringParameter(request,"login_name",""); String loginPwd = RequestUtil.getStringParameter(request,"login_pwd",""); if (loginName.length()=0|loginPwd.length()=0) resultInfo.setErrorInfo("登陆名、密码不能为空"); Object objArr = (Object)this.sysUserDAO.findSysUserByNameAndPwd(loginName,loginPwd); if (objArr=null) resultInfo.setIfSuccess(false); resultInfo.setErrorInfo("用户名、密码错误"); resultInfo.setReturnUrl("/index.jsp"); return new ModelAndView("/loginPrompt.jsp",SystemConstants.PROMPT_INFO,resultInfo); else UserToken userToken = new UserToken(); SysUser sysUser = (SysUser)objArr1; userToken.setSysUser(sysUser); userToken.setYgEmployee(YgEmployee)objArr0);/ userToken.setPostList(sysUserPostDAO.findSysUserPostListByUserId(sysUser.getUserId(); List postList = new ArrayList(); postList.add(sysUser.getPostId().toString(); userToken.setPostList(postList); if (judgeIfSysMgr(userToken.getPostList() userToken.setMenuList(SystemApplication.getMemoryObject("sysMenu"); else String postIdStr = getPostIdStrByPostList(userToken.getPostList(); if (postIdStr.length() > 0) userToken.setMenuList(this.sysPostMenuDAO.findSysPostMenuList(postIdStr); if (userToken.getMenuList()=null) userToken.setMenuList(new java.util.ArrayList(); request.getSession().setAttribute(SystemConstants.USERTOKEN,userToken); resultInfo.setIfSuccess(true); resultInfo.setIsRedirect(true); resultInfo.setReturnUrl("/main.jsp"); return new ModelAndView("/prompt.jsp",SystemConstants.PROMPT_INFO,resultInfo); catch (Exception ex) log.error("用户登陆时出现异常",ex); resultInfo.setErrorInfo("登陆失败!"); return new ModelAndView("/prompt.jsp",SystemConstants.PROMPT_INFO,resultInfo); * 退出登陆 * param request * param response * return * throws ServletRequestBindingException public ModelAndView logout(HttpServletRequest request, HttpServletResponse response) throws ServletRequestBindingException request.getSession().invalidate(); return new ModelAndView("/index.jsp","name",null); * 修改密码 * param request * param response * return * throws ServletRequestBindingException public ModelAndView modifyPwd(HttpServletRequest request, HttpServletResponse response) throws ServletRequestBindingException String newPwd = RequestUtil.getStringParameter(request,"newPwd",""); UserToken userToken = (UserToken) (request.getSession().getAttribute(SystemConstants.USERTOKEN); ResultInfo resultInfo = new ResultInfo(); try sysUserDAO.modifyPwd(userToken.sysUser.getUserId(), newPwd); resultInfo.setIfSuccess(true); resultInfo.setErrorInfo("修改成功"); resultInfo.setReturnUrl("/waitProcess.jsp"); catch (Exception e) resultInfo.setIfSuccess(false); resultInfo.setErrorInfo("修改密码失败"); log.error("修改密码失败",e); return new ModelAndView("/prompt.jsp",SystemConstants.PROMPT_INFO,resultInfo); * 获取岗位标识字符串 * 暂不考虑一个用户多个岗位的情况 * param postList List * return String private String getPostIdStrByPostList(List postList) String postIdStr = "" for (int i=0;i<postList.size();i+)/ postIdStr+= (SysPost)postList.get(i).getPostId()+(i!=(postList.size()-1)?",":""); postIdStr+= (String)postList.get(i)+(i!=(postList.size()-1)?",":""); return postIdStr; * 判断是否为系统管理员 * 暂不考虑一个用户多个岗位的情况 * param postList List * return boolean private boolean judgeIfSysMgr(List postList) if (postList.contains("1") return true;/ for (int i=0;i<postList.size();i+)/ if (SysPost)postList.get(i).getPostLevel().intValue()=1)/ return true; return false;