• Java住房公积金管理系统---长春工业大学期末实训


    姓    名

    xxx

    学    号

    2019xxx

    班    级

    192404

     

    代码行数

     

    项目名称

    住房公积金管理系统——筹集子系统

     

    1.实训目的

    本次课程设计旨在通过一个完整项目的开发,巩固软件文档编写、软件工程、数据库技术等课程的相关知识,加深学生对网络程序设计的理解,尤其是对JSP技术、Mybatis访问数据库的理解,使学生进一步掌握环境构建、代码编写、文档阅读与理解、文档编写、软件测试、发行与部署等技能,进一步提高学生的学习能力、理解能力、表达能力及沟通能力。

    2.实训内容

    2.1 在线学习

    表1  在线学习部分推荐课程

    序号

    内 容

    学习时长

    1

    https://www.imooc.com/learn/180

     

    2

     

     

    3

     

     

    4

     

     

    2.2 项目开发

    使用Eclipse/IntelliJ IDE为开发工具,Rational Rose或ProcessOn为建模工具,利用MySQL为数据库服务器,以Tomcat为Web服务器,基于JSP和Mybatis框架技术,分析、设计并实现一个住房公积金管理系统——筹集子系统,主要包括相关客户信息(单位开户、个人开户、单位资料修改、个人资料修改)管理、变更业务(封存、启封、比例变更、基数变更)、缴存登记入账(汇缴、补缴)、提取及销户(提取、个人注销、单位注销)、业务查询、凭证打印等业务。

    3.需求分析

    3.1 功能描述

    筹集管理系统主要包括相关客户信息(单位开户、个人开户、单位资料修改、个人资料修改)管理、业务查询等业务。

    单位信息,包括数据项有:单位公积金账号、单位名称、单位地址、组织机构代码、单位类别、企业类型、发薪日期、联系电话、单位联系人、经办人身份证号、账户状态、公积金余额、缴存基数、单位比例、个人比例、单位月应缴额、个人月应缴额、单位人数、最后汇缴月、公积金中心机构代码、柜员、建立日期、备注。

    个人信息,包括数据项有:个人公积金账号、单位公积金账号、开户日期、公积金余额、账户状态、缴存基数、单位比例、个人比例、最后汇缴月、单位月应缴额、个人月应缴额、本年汇补缴额、年提取额、年度结息、公积金中心机构代码、柜员、备注。

    主要完成功能:

    单位资料管理:对单位资料的增加、修改、删除。

    个人资料管理:对个人资料的增加、修改、删除。

    柜员管理:

    对系统参数的增加、修改、删除。

     

    3.2 用例建模

    1、柜员功能

     柜员登录成功后,进行单位开户,如果单位开户成功进行个人开户,否则不能进行个人开户。

     

    图3-1柜员用例图

     

    2、管理员功能

         管理员只进行系统参数的管理维护。

     

    图3-2 管理员用例图

    4.功能设计

    4.1 总体设计

     

    图4-1 功能层次图

     

    4.2 算法设计

    1.个人用户管理活动图

     个人登录进入系统后可进行个人信息查询和个人信息修改操作。

     

    图4-2 个人用户管理活动图

    2.单位用户活动图

    单位用户登录进入系统后可进行单位信息查询和单位信息修改操作。

     

    图4-3 单位用户管理活动图

     

    3.柜员活动图

    柜员登录系统后可进行开户(个人和单位)操作和信息管理(个人和单位)操作。

     

    图4-4 柜员活动图

    4.管理员活动图

    管理员用户登录系统后可进行系统参数管理维护操作。

     

    图4-5 管理员活动图

     

     

    5.数据设计

    5.1 类图设计

     1.bean包负责底层数据和与数据库的交互

     

    图5-1 bean包类图

    2.service包负责逻辑控制

     

    图5-2  service包类图

    3.fliter包负责过滤,防止出现乱码和不登录访问

     

    图5-3  fliter包类图

     

    4.servlet包负责接收传递页面数据和页面跳转

     

    图5-4  servlet包类图

     

    5.2 数据表设计

     

    表5-1 用户信息表

     

     

    表5-2 系统信息表

     

    表5-3 个人账户信息表

     

     

     

    表5-4 单位账户信息表

    6.运行结果

    1.登录页面

     

    图6-1 用户登录界面

     

    图6-2 管理员登录界面

     

    2.登录成功页面

       

     

    图6-3 柜员登录成功

     

    图6-4 管理员登录成功

     

    3.个人账户信息管理页面

     

    图6-5 个人账户信息查询

     

    图6-6 个人账户信息添加成功

    4. 单位账户信息管理

     

    图6-7 单位账户信息查询

     

    图6-8 单位账户信息修改

     

    图6-9 单位账户信息添加

     

    5.账户信息导出

     

    图6-10 个人账户信息导出

     

    图6-11 单位账户信息导出

     

    7.关键代码

    文件1:Login.jsp

    <head>

        <title>住房公积金管理系统</title>

        <link rel="stylesheet" type="text/css" href="Styles/base.css" />

        <link rel="stylesheet" type="text/css" href="Styles/admin-all.css" />

        <link rel="stylesheet" type="text/css" href="Styles/bootstrap.min.css" />

        <script type="text/javascript" src="Scripts/jquery-1.7.2.js"></script>

        <script type="text/javascript" src="Scripts/jquery.spritely-0.6.js"></script>

        <!-- <script type="text/javascript" src="Scripts/chur.min.js"></script> -->

        <link rel="stylesheet" type="text/css" href="Styles/login.css" />

        <script type="text/javascript">

            $(function () {

                $('.login').click(function () {

                    if ($('#uid').val() == "" || $('#pwd').val() == "" || $('#code').val() == "") {

                        $('#tip').html('<font color="red">用户名或密码不可为空!</font>')

                        return false;  

                    }

                })

            })

        </script>

        <script type="text/javascript">

            function reg(){

                var url="ForegroundPage/Regist.jsp";

                window.open(url,"用户注册","height=500,width=1000");

            }

        </script>

    </head>

    <body>

        <form action="${pageContext.request.contextPath}/UserServlet?method=login" method="post">

        <div class="row-fluid">

            <h1>住房公积金管理系统</h1>

            <span id="tip"></span>

            <p>

                <label>帐&nbsp;&nbsp;&nbsp;号:<input name="username" type="text" id="uid" /></label>

            </p>

            <p>

                <label>密&nbsp;&nbsp;&nbsp;码:<input name="password" type="password" id="pwd" /></label>

            </p>

            <hr />

            <input type="submit" value=" 登 录 " class="btn btn-primary btn-large login" />

            &nbsp;&nbsp;&nbsp;<input type="button" onclick="reg()" value=" 注 册 " class="btn btn-large" />

            <br/>

        </div>

        </form>

    </body>

    </html>

    文件2:PageModel.java

    public class PageModel {

        private int  currentPageNum;//当前页数

        private int  PageSize=5;//每页记录数

        private int  totalRecords;//总记录数

        private int  totalPageNum;//总页数

        private int  startIndex;//每页开始索引

        private int  upPageNum;//上一页

        private int  dnPageNum;//下一页

        private List list;

        private String url;

        public PageModel(int currentPageNum,int PageSize,int totalRecords) {

            this.currentPageNum =currentPageNum;

            this.PageSize= PageSize;

            this.totalRecords =totalRecords;

            startIndex = (currentPageNum-1) * PageSize;

            totalPageNum = totalRecords%PageSize==0?(totalRecords/PageSize):(totalRecords/PageSize)+1;

        }

        public String getUrl() {

            return url;

        }

        public void setUrl(String url) {

            this.url = url;

        }

        public List getList() {

            return list;

        }

        public void setList(List list) {

            this.list = list;

        }

        public int getCurrentPageNum() {

            return currentPageNum;

        }

        public void setCurrentPageNum(int currentPageNum) {

            this.currentPageNum = currentPageNum;

        }

        public int getPageSize() {

            return PageSize;

        }

        public void setPageSize(int pageSize) {

            PageSize = pageSize;

        }

        public int getTotalRecords() {

            return totalRecords;

        }

        public void setTotalRecords(int totalRecords) {

            this.totalRecords = totalRecords;

        }

        public int getTotalPageNum() {

            return totalPageNum;

        }

        public void setTotalPageNum(int totalPageNum) {

            this.totalPageNum = totalPageNum;

        }

        public int getStartIndex() {

            return startIndex;

        }

        public void setStartIndex(int startIndex) {

            this.startIndex = startIndex;

        }

        public int getUpPageNum() {

            upPageNum=currentPageNum-1;

            if(upPageNum<1) {

                upPageNum=1;

            }

            return upPageNum;

        }

        public int getDnPageNum() {

            dnPageNum=currentPageNum+1;

            if(dnPageNum>totalPageNum) {

                dnPageNum=totalPageNum;

            }

            return dnPageNum;

        }  

    }

    文件3: Parameter.java

    public class Parameter {

       private String seqname;

       private int seq;

       private int maxseq;

       private String desc;

       private String freeuse1;

       public Parameter() {

           super();

       }

       public String getSeqname() {

           return seqname;

       }

       public void setSeqname(String seqname) {

           this.seqname = seqname;

       }

       public int getSeq() {

           return seq;

       }

       public void setSeq(int seq) {

           this.seq = seq;

       }

       public int getMaxseq() {

           return maxseq;

       }

       public void setMaxseq(int maxseq) {

           this.maxseq = maxseq;

       }

       public String getDesc() {

           return desc;

       }

       public void setDesc(String desc) {

           this.desc = desc;

       }

       public String getFreeuse1() {

           return freeuse1;

       }

       public void setFreeuse1(String freeuse1) {

           this.freeuse1 = freeuse1;

       }

       @Override

       public String toString() {

           return "Parameter [seqname=" + seqname + ", seq=" + seq + ", maxseq=" + maxseq + ", desc=" + desc

                   + ", freeuse1=" + freeuse1 + "]";

       }

      

    }

    文件4: Person.java

    public class Person {

       private String accnum;//个人公积金账号

       private String unitaccnum;//单位公积金账号

       private Date opendate;//开户日期

       private double blankce;//公积金余额

       private String peraccsate;//个人账户状态

       private double basenumber;//缴存基数

       private double unitprop;//单位比例

       private double indiprop;//个人比例

       private Date lastpaydate;//最后汇缴月

       private double unitmonpaysum ;//单位月应缴额

       private double permonpaysum;//个人月应缴额

       private double ypayamt;//本年汇补缴额

       private double ydrwamt;//年提取额

       private double yinterestbal;//年度结息

       private String instcode;//公积金中心机构代码

       private String op;//柜员

       private String remark;//备注

       private Unit u ;

       public Person() {

           super();

       }

      

       public Unit getU() {

           return u;

       }

       public void setU(Unit u) {

           this.u = u;

       }

       public String getAccnum() {

           return accnum;

       }

       public void setAccnum(String accnum) {

           this.accnum = accnum;

       }

       public String getUnitaccnum() {

           return unitaccnum;

       }

       public void setUnitaccnum(String unitaccnum) {

           this.unitaccnum = unitaccnum;

       }

       public Date getOpendate() {

           return opendate;

       }

       public void setOpendate(Date opendate) {

           this.opendate = opendate;

       }

       public double getBlankce() {

           return blankce;

       }

       public void setBlankce(double blankce) {

           this.blankce = blankce;

       }

       public String getPeraccsate() {

           return peraccsate;

       }

       public void setPeraccsate(String peraccsate) {

           this.peraccsate = peraccsate;

       }

       public double getBasenumber() {

           return basenumber;

       }

    文件5:Unit.java

    public class Unit {

       private String unitaccnum;//单位公积金账号

       private String unitaccname;//单位名称

       private String unitaddr;//单位地址

       private String orgcode;//组织机构代码

       private String unitchar;//单位类别

       private String unitkind;//企业类型

       private String salarydate;//发薪日期

       private String unitphone;//联系电话

       private String unitlinkman;//单位联系人

       private String unitagentpapno;//经办人身份证号码

       private int accstate;//账户状态

       private double balance;//公积金余额

       private double basenumber;//缴存基数

       private double unitprop;//单位比例

       private double perprop;//个人比例

       private double unitpaysum;//单位月应缴额

       private double peraysum;//个人月应缴额

       private int persnum;//单位人数

       private Date lastpaydate;//最后汇缴月

       private String instcode;//公积金中心机构代码

       private String op;//柜员

       private Date creadate;//建立日期

       private String remark;//备注

       private List<Person> persons;

       public Unit() {

           super();

       }

       public String getUnitaccnum() {

           return unitaccnum;

       }

       public void setUnitaccnum(String unitaccnum) {

           this.unitaccnum = unitaccnum;

       }

       public String getUnitaccname() {

           return unitaccname;

       }

       public void setUnitaccname(String unitaccname) {

           this.unitaccname = unitaccname;

       }

       public String getUnitaddr() {

           return unitaddr;

       }

       public void setUnitaddr(String unitaddr) {

           this.unitaddr = unitaddr;

       }

       public String getOrgcode() {

           return orgcode;

       }

       public void setOrgcode(String orgcode) {

           this.orgcode = orgcode;

       }

       public String getUnitchar() {

           return unitchar;

       }

       public void setUnitchar(String unitchar) {

           this.unitchar = unitchar;

       }

       public String getUnitkind() {

           return unitkind;

       }

       public void setUnitkind(String unitkind) {

           this.unitkind = unitkind;

       }

       public String getSalarydate() {

           return salarydate;

       }

       public void setSalarydate(String salarydate) {

           this.salarydate = salarydate;

       }

       public String getUnitphone() {

           return unitphone;

       }

       public void setUnitphone(String unitphone) {

           this.unitphone = unitphone;

       }

       public String getUnitlinkman() {

           return unitlinkman;

       }

       public void setUnitlinkman(String unitlinkman) {

           this.unitlinkman = unitlinkman;

       }

       public String getUnitagentpapno() {

           return unitagentpapno;

       }

       public void setUnitagentpapno(String unitagentpapno) {

           this.unitagentpapno = unitagentpapno;

       }

       public int getAccstate() {

           return accstate;

       }

       public void setAccstate(int accstate) {

           this.accstate = accstate;

       }

       public double getBalance() {

           return balance;

       }

       public void setBalance(double balance) {

           this.balance = balance;

       }

       public double getBasenumber() {

           return basenumber;

       }

       public void setBasenumber(double basenumber) {

           this.basenumber = basenumber;

       }

       public double getUnitprop() {

           return unitprop;

       }

       public void setUnitprop(double unitprop) {

           this.unitprop = unitprop;

       }

       public double getPerprop() {

           return perprop;

       }

       public void setPerprop(double perprop) {

           this.perprop = perprop;

       }

       public double getUnitpaysum() {

           return unitpaysum;

       }

       public void setUnitpaysum(double unitpaysum) {

           this.unitpaysum = unitpaysum;

       }

      

       public double getPeraysum() {

           return peraysum;

       }

       public void setPeraysum(double peraysum) {

           this.peraysum = peraysum;

       }

       public int getPersnum() {

           return persnum;

       }

       public void setPersnum(int persnum) {

           this.persnum = persnum;

       }

       public Date getLastpaydate() {

           return lastpaydate;

       }

       public void setLastpaydate(Date lastpaydate) {

           this.lastpaydate = lastpaydate;

       }

       public String getInstcode() {

           return instcode;

       }

       public void setInstcode(String instcode) {

           this.instcode = instcode;

       }

       public String getOp() {

           return op;

       }

       public void setOp(String op) {

           this.op = op;

       }

       public Date getCreadate() {

           return creadate;

       }

       public void setCreadate(Date creadate) {

           this.creadate = creadate;

       }

       public String getRemark() {

           return remark;

       }

       public void setRemark(String remark) {

           this.remark = remark;

       }

       public List<Person> getPersons() {

           return persons;

       }

       public void setPersons(List<Person> persons) {

           this.persons = persons;

       }  

    }

    文件6:PersonServiceImp.java

    public class PersonServiceImp implements PersonService {

       @Override

       public PageModel listPage(int curNum) {

           SqlSessionFactory sqlSessionfactory = SqlSessionFactoryUtils.getSqlSessionfactory();

           SqlSession session = sqlSessionfactory.openSession();

           PersonMapper mapper = session.getMapper(PersonMapper.class);

           int num = mapper.count();

           PageModel pm = new PageModel(curNum, 2, num);

           List<Person> list = mapper.listPage(pm);

           pm.setUrl("PersonServlet?method=listPage");

           pm.setList(list);

           session.close();

           return pm;

       }

       @Override

       public PageModel load(String accnum) {

           SqlSessionFactory sqlSessionfactory = SqlSessionFactoryUtils.getSqlSessionfactory();

           SqlSession session = sqlSessionfactory.openSession();

           PersonMapper mapper = session.getMapper(PersonMapper.class);

           int num = mapper.count();

           PageModel pm = new PageModel(0, 2, num);

           List<Person> list = mapper.load(accnum);

           pm.setList(list);

           pm.setUrl("PersonServlet?method=listPage");

           session.close();

           return pm;

       }

       @Override

       public void delete(String accnum) {

           SqlSessionFactory sqlSessionfactory = SqlSessionFactoryUtils.getSqlSessionfactory();

           SqlSession session = sqlSessionfactory.openSession();

           PersonMapper mapper = session.getMapper(PersonMapper.class);

           mapper.delete(accnum);

           session.commit();

           session.close();

       }

    @Override

       public void add(Person p) {

           SqlSessionFactory sqlSessionfactory = SqlSessionFactoryUtils.getSqlSessionfactory();

           SqlSession session = sqlSessionfactory.openSession();

           PersonMapper mapper = session.getMapper(PersonMapper.class);

           mapper.add(p);

           session.commit();

           session.close();

       }

    @Override

       public List<Person> list() {

           SqlSessionFactory sqlSessionfactory = SqlSessionFactoryUtils.getSqlSessionfactory();

           SqlSession session = sqlSessionfactory.openSession();

           PersonMapper mapper = session.getMapper(PersonMapper.class);

           List<Person> list = mapper.list();

           return list;

       }

    public void update(Person un) {

           SqlSessionFactory sqlSessionfactory = SqlSessionFactoryUtils.getSqlSessionfactory();

           SqlSession session = sqlSessionfactory.openSession();

           PersonMapper mapper = session.getMapper(PersonMapper.class);

           mapper.update(un);

           session.commit();

           session.close();

       }

    }

    文件7: UnitServiceImp.java

    public class UnitServiceImp implements UnitService{

       @Override

       public PageModel listPage(int curNum) {

           SqlSessionFactory sqlSessionfactory = SqlSessionFactoryUtils.getSqlSessionfactory();

           SqlSession session = sqlSessionfactory.openSession();

           UnitMapper mapper = session.getMapper(UnitMapper.class);

           int num = mapper.count();

           PageModel pm = new PageModel(curNum, 2, num);

           List<Unit> list = mapper.listPage(pm);

           pm.setUrl("TellerServlet?method=unitOpenUi");

           pm.setList(list);

           session.close();

           return pm;

       }

       @Override

       public PageModel load(String unitaccnum) {

           SqlSessionFactory sqlSessionfactory = SqlSessionFactoryUtils.getSqlSessionfactory();

           SqlSession session = sqlSessionfactory.openSession();

           UnitMapper mapper = session.getMapper(UnitMapper.class);

           int num = mapper.count();

           PageModel pm = new PageModel(1, 2, num);

           List<Unit> list = mapper.load(unitaccnum);

           pm.setUrl("TellerServlet?method=unitOpenUi");

           pm.setList(list);

           session.close();

           return pm;

       }

       @Override

       public void delete(String unitaccnum) {

           SqlSessionFactory sqlSessionfactory = SqlSessionFactoryUtils.getSqlSessionfactory();

           SqlSession session = sqlSessionfactory.openSession();

           UnitMapper mapper = session.getMapper(UnitMapper.class);

           mapper.delete(unitaccnum);

           session.commit();

           session.close();

       }

       @Override

       public void update(Unit un) {

           SqlSessionFactory sqlSessionfactory = SqlSessionFactoryUtils.getSqlSessionfactory();

           SqlSession session = sqlSessionfactory.openSession();

           UnitMapper mapper = session.getMapper(UnitMapper.class);

           mapper.update(un);

           session.commit();

           session.close();

       }

       @Override

       public void add(Unit un) {

           SqlSessionFactory sqlSessionfactory = SqlSessionFactoryUtils.getSqlSessionfactory();

           SqlSession session = sqlSessionfactory.openSession();

           UnitMapper mapper = session.getMapper(UnitMapper.class);

           mapper.add(un);

           session.commit();

           session.close();

       }

       @Override

       public List<Unit> list() {

           SqlSessionFactory sqlSessionfactory = SqlSessionFactoryUtils.getSqlSessionfactory();

           SqlSession session = sqlSessionfactory.openSession();

           UnitMapper mapper = session.getMapper(UnitMapper.class);

           List<Unit> list = mapper.list();

           return list;

       }

    }

    文件8:EncodingFilter .java

    public class EncodingFilter implements Filter {

       @Override

       public void init(FilterConfig filterConfig) throws ServletException {

       }

       @Override

       public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {

           //1.强转

           HttpServletRequest request=(HttpServletRequest) req;

           HttpServletResponse response=(HttpServletResponse) resp;

           //System.out.println("@@@@@@@@@@@@@@@@@@");    

           //2.放行

           chain.doFilter(new MyRequest(request), response);

       }

       @Override

       public void destroy() {

           // TODO Auto-generated method stub

       }

    }

    //之前的MyRequest增强了request.getParameter("name");方法

    //增强了所有的获取参数的方法request.getParameterValues("name");

    //增强了所有的获取参数的方法request.getParameterMap();

    class MyRequest extends HttpServletRequestWrapper{

       private HttpServletRequest request;

       private boolean flag=true;

      

      

       public MyRequest(HttpServletRequest request) {

           super(request);

           this.request=request;

       }

      

       @Override

       public String getParameter(String name) { 

           if(name==null || name.trim().length()==0){

               return null;

           }

           String[] values = getParameterValues(name);

           if(values==null || values.length==0){

               return null;

           }

          

           return values[0];

       }

      

       @Override

       /**

        * hobby=[eat,drink]

        */

       public String[] getParameterValues(String name) {

           if(name==null || name.trim().length()==0){

               return null;

           }

           Map<String, String[]> map = getParameterMap();

           if(map==null || map.size()==0){

               return null;

           }

          

           return map.get(name);

       }

      

       @Override

       /**

        * map{ username=[tom],password=[123],hobby=[eat,drink]}

        */

       public Map<String,String[]> getParameterMap() { 

          

           /**

            * 首先判断请求方式

            * 若为post  request.setchar...(utf-8)

            * 若为get 将map中的值遍历编码就可以了

            */

           String method = request.getMethod();

           if("post".equalsIgnoreCase(method)){

               try {

                   request.setCharacterEncoding("utf-8");

                   return request.getParameterMap();

               } catch (UnsupportedEncodingException e) {

                   // TODO Auto-generated catch block

                   e.printStackTrace();

               }

           }else if("get".equalsIgnoreCase(method)){

               Map<String,String[]> map = request.getParameterMap();

               if(flag){

                   for (String key:map.keySet()) {

                       String[] arr = map.get(key);

                       //继续遍历数组

                       for(int i=0;i<arr.length;i++){

                           //编码

                           try {

                               arr[i]=new String(arr[i].getBytes("iso-8859-1"),"utf-8");

                           } catch (UnsupportedEncodingException e) {

                               e.printStackTrace();

                           }

                       }

                   }

                   flag=false;

               }

               //需要遍历map 修改value的每一个数据的编码

              

               return map;

           }

           return super.getParameterMap();

       }  

    }

    文件9: PersonServlet .java

    public class PersonServlet extends BaseServlet {

        private static final long serialVersionUID = 1L;

    private static final String UPLOAD_DIRECTORY = "upload";

      private static final int MEMORY_THRESHOLD   = 1024 * 1024 * 3;  // 3MB

        private static final int MAX_FILE_SIZE      = 1024 * 1024 * 40; // 40MB

        private static final int MAX_REQUEST_SIZE   = 1024 * 1024 * 50; // 50MB

        SimpleDateFormat sm = new SimpleDateFormat("yyyy-MM-dd");

        public String listPage(HttpServletRequest req, HttpServletResponse resp) throws Exception {

            int num = Integer.parseInt(req.getParameter("num"));

            PersonService service = new PersonServiceImp();

            PageModel page = service.listPage(num);

            req.getSession().setAttribute("page", page);

            return "/jsp/user/person.jsp";

        }

        public String load(HttpServletRequest req, HttpServletResponse resp) throws Exception {

            PersonService service = new PersonServiceImp();

            String accnum = req.getParameter("accnum");

            PageModel page = service.load(accnum);

            req.getSession().setAttribute("page", page);

            return "/jsp/user/person.jsp";

        }

        public String delete(HttpServletRequest req, HttpServletResponse resp) throws Exception {

            String accnum = req.getParameter("accnum");

            PersonService service = new PersonServiceImp();

            service.delete(accnum);

            resp.sendRedirect("/hfms/PersonServlet?method=listPage&num=1");

            return null;

        }  

        public String updateUi(HttpServletRequest req, HttpServletResponse resp) throws Exception {

            String accnum = req.getParameter("accnum");

            PersonService service = new PersonServiceImp();

            PageModel page = service.load(accnum);

            req.getSession().setAttribute("person", page.getList().get(0));

            return "/jsp/user/personUpate.jsp";

        }

        public String update(HttpServletRequest req, HttpServletResponse resp) throws Exception {

            Person p = new Person();

            MyBeanUtils.populate(p, req.getParameterMap());

            PersonService service = new PersonServiceImp();

            service.update(p);

            resp.sendRedirect("/hfms/PersonServlet?method=listPage&num=1");

            return null;

        }

        public String addUi(HttpServletRequest req, HttpServletResponse resp) throws Exception {

            return "/jsp/user/personAdd.jsp";

        }

        public String add(HttpServletRequest req, HttpServletResponse resp) throws Exception {

            Person p = new Person();

            MyBeanUtils.populate(p, req.getParameterMap());

            ParameterService service = new ParameterServiceImp();

            Parameter param = service.load("peraccnum");

            int seq = param.getSeq();

            String uintaccnum=seq+"";

            UnitService us = new UnitServiceImp();

            PageModel pageModel = us.load(p.getUnitaccnum());

            Unit un = (Unit) pageModel.getList().get(0);

            if(un!=null) {

            if(seq<=999999999) {

                String str="";

                for(int i=0;i<12-uintaccnum.length();i++) {

                    str+=0;

                }

                int num = seq+1;

                uintaccnum=str+num;

                p.setAccnum(uintaccnum);

                p.setUnitaccnum(un.getUnitaccnum());

                p.setOpendate(new Date());

                p.setBlankce(0);

                p.setPeraccsate("0");

                p.setUnitprop(un.getUnitprop());

                p.setIndiprop(un.getPerprop());

                p.setLastpaydate(new Date());

                p.setUnitmonpaysum(p.getBasenumber()*un.getUnitprop());

                p.setPermonpaysum(p.getBasenumber()*un.getPerprop());

                p.setYdrwamt(0);

                p.setYpayamt(0);

                p.setYinterestbal(0);

                p.setInstcode("0110");

                param.setSeq(num);

                service.update(param);

                PersonService ps = new PersonServiceImp();

                ps.add(p);

            }else {

                resp.sendRedirect("/hfms/jsp/info.jsp?msg=用户数量超过最大值无法即系添加");

            }

            }else {

                resp.sendRedirect("/hfms/jsp/info.jsp?msg=单位账号不存在");

            }

            return "/jsp/user/personAdd.jsp";

        }

        public void import1(HttpServletRequest req, HttpServletResponse resp) throws Exception {

            resp.setContentType("application/x-download");

            PersonService service = new PersonServiceImp();

            List<Person> persons = service.list();

            XSSFWorkbook wb = new XSSFWorkbook();

            XSSFSheet sheet =  wb.createSheet("个人开户信息");

            XSSFRow row = sheet.createRow(0);

            String[] headerNames = {"个人公积金账号","单位公积金账号","开户日期","公积金余额","个人账户状态","缴存基数","单位比例"

                    ,"个人比例","最后汇缴月","单位月应缴额","个人月应缴额","本年汇补缴额","年提取额","年度结息","公积金中心机构代码",

                    "柜员","备注"};

    XSSFCell cell = null;

            for(int i = 0; i < headerNames.length; i++){

                    cell =  row.createCell(i);

                    cell.setCellValue(headerNames[i]);

                    //sheet.setColumnWidth(i, columnWidths[i]);

                }

          int i = 1;

      for(Person u : persons){

                row = sheet.createRow(i);

                //必须按照hderarNames的顺序来

                row.createCell(0).setCellValue(u.getAccnum());//账号

                row.createCell(1).setCellValue(u.getUnitaccnum());//名称

                row.createCell(2).setCellValue(sm.format(u.getOpendate()));//最后汇缴月

                row.createCell(3).setCellValue(u.getBlankce());//组织机构代码

                row.createCell(4).setCellValue(u.getPeraccsate());//单位类别

                row.createCell(5).setCellValue(u.getBasenumber());//企业类型

                row.createCell(6).setCellValue(u.getUnitprop());//发薪日期

                row.createCell(7).setCellValue(u.getIndiprop());//联系电话

                row.createCell(8).setCellValue(sm.format(u.getLastpaydate()));//最后汇缴月

                row.createCell(9).setCellValue(u.getUnitmonpaysum());//经办人身份证号码

                row.createCell(10).setCellValue(u.getPermonpaysum());//账户状态

                row.createCell(11).setCellValue(u.getYpayamt());//公积金余额

                row.createCell(12).setCellValue(u.getYdrwamt());//缴存基数

                row.createCell(13).setCellValue(u.getYinterestbal());//单位比例

                row.createCell(14).setCellValue(u.getInstcode());//个人比例

                row.createCell(15).setCellValue(u.getOp());//单位月应缴额

                row.createCell(16).setCellValue(u.getRemark());//个人月应缴额

                i++;

            }

            try {

                  

                  //resp.setHeader("Content-Disposition", "attachment;filename="+new String("单位开户信息.xls".getBytes(),"ISO-8859-1"));//中文名称进行转码

               

            }finally{

                try {

                            wb.close();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }  

        }

        public void onLoad(HttpServletRequest request, HttpServletResponse response) throws Exception {

             // 检测是否为多媒体上传

           if (!ServletFileUpload.isMultipartContent(request)) {

               // 如果不是则停止

               PrintWriter writer = response.getWriter();

               writer.println("Error: 表单必须包含 enctype=multipart/form-data");

               writer.flush();

               return;

           }

               DiskFileItemFactory factory = new DiskFileItemFactory();

                  factory.setSizeThreshold(MEMORY_THRESHOLD);

                  factory.setRepository(new File(System.getProperty("java.io.tmpdir")));

     

           ServletFileUpload upload = new ServletFileUpload(factory);

           

                 upload.setFileSizeMax(MAX_FILE_SIZE);

           

                  upload.setSizeMax(MAX_REQUEST_SIZE);

          

            upload.setHeaderEncoding("UTF-8");

           String uploadPath = getServletContext().getRealPath("/") + File.separator + UPLOAD_DIRECTORY;

         

           

                 File uploadDir = new File(uploadPath);

           if (!uploadDir.exists()) {

               uploadDir.mkdir();

           }

     

           try {

                        @SuppressWarnings("unchecked")

               List<FileItem> formItems = upload.parseRequest(request);

               if (formItems != null && formItems.size() > 0) {

             

                   for (FileItem item : formItems) {

                       // 处理不在表单中的字段

                       if (!item.isFormField()) {

                           String fileName = new File(item.getName()).getName();

                           String filePath = uploadPath + File.separator + fileName;

                           File storeFile = new File(filePath);

                                                 System.out.println(filePath);

                     

                           item.write(storeFile);

                           request.setAttribute("message",

                               "文件上传成功!");

                       }

                   }

               }

           } catch (Exception ex) {

               request.setAttribute("message",

                       "错误信息: " + ex.getMessage());

           }

        getServletContext().getRequestDispatcher("/print.jsp").forward(

          //         request, response);

           Fil file=new File("D:/java/apache-tomcat-7.0.99/webapps/hfms/upload/个人开户信息.xlsx");

           XSSFWorkbook wb = null;

           PersonServiceImp service  =  new PersonServiceImp();

           wb = new XSSFWorkbook(FileUtils.openInputStream(file));

           XSSFSheet sheet = wb.getSheetAt(0);    

           int lastRow = sheet.getLastRowNum();

           Person un = null;

           for(int i= 1;i<= lastRow;i++) {

           un = new Person();

           un.setAccnum(sheet.getRow(i).getCell(0).getStringCellValue());

           PageModel page = service.load(un.getAccnum());

           List<Person> list = page.getList();

           if(list.size()>0) {

               un=list.get(0);

           }

           //row10.getCell(i).setCellType(CellType.STRING);

            //row17.getCell(i).setCellType(CellType.STRING);

           DataFormatter dfm = new DataFormatter();

           un.setUnitaccnum(sheet.getRow(i).getCell(1).getStringCellValue());

           un.setOpendate(sm.parse(sheet.getRow(i).getCell(2).getStringCellValue()));

           un.setBlankce(sheet.getRow(i).getCell(3).getNumericCellValue());

           un.setPeraccsate(dfm.formatCellValue(sheet.getRow(i).getCell(4)));

           un.setBasenumber(sheet.getRow(i).getCell(5).getNumericCellValue());

           un.setUnitprop(sheet.getRow(i).getCell(6).getNumericCellValue());

           un.setIndiprop(sheet.getRow(i).getCell(7).getNumericCellValue());

            un.setLastpaydate(sm.parse(sheet.getRow(i).getCell(8).getStringCellValue()));

           un.setUnitmonpaysum(sheet.getRow(i).getCell(9).getNumericCellValue());

           un.setPermonpaysum(sheet.getRow(i).getCell(10).getNumericCellValue());

           un.setYpayamt(sheet.getRow(i).getCell(11).getNumericCellValue());

           un.setYdrwamt(sheet.getRow(i).getCell(12).getNumericCellValue());

           un.setYinterestbal(sheet.getRow(i).getCell(13).getNumericCellValue());

           un.setInstcode(sheet.getRow(i).getCell(14).getStringCellValue());

           un.setOp(sheet.getRow(i).getCell(15).getStringCellValue());

           un.setRemark(sheet.getRow(i).getCell(16).getStringCellValue());

         //un.setPersnum(Integer.parseInt(dfm.formatCellValue(sheet.getRow(i).getCell(17))));

           service.update(un);

           if(list.size()==0) {

               service.add(un);

           }

           }

           if(null!=wb) {

            wb.close();

           }

       response.sendRedirect("/hfms/PersonServlet?method=listPage&num=1");  

        }

    }

    8.实训总结

    在为期三周的实训转眼就到了收尾阶段,在此期间,我巩固复习了之前学习的有关数据库的创建,信息的修改、添加、删除以及查询,数据库逻辑结构的构建等专业课程知识并实习运用。能够熟练运用编程语言以及软件工程中各类图的创建,例如用例图、类图、活动图等,这次程序设计,具有极强的完整性,不仅锻炼了我的独立思考和动手操作的能力,也锻炼了我发现问题、解决问题的能力,使我能够更加灵活的将书本知识和实际操作联系到一起。另外,通过本次实训,认识到软件开发并不是一个简单的过程,而是一个既繁琐且严谨的过程,是一个需要不断学习进步的过程。而学习是一个不断积累的过程,是通过不断的汲取新的知识,以填补自己的不足,不断拓展自己的视野,增强自身能力的过程。。

    实践是检验真理的唯一标准,理论的拥有不能代表我们的实力和能力,一切成功都是理论和实践的结合。

     

    成    绩

     

     

     

    教师签字                    日期:2020年7月

     
     
                 

       

    项目链接: https://pan.baidu.com/s/1LNcfkVigkdJdVTK6ipfvJA 提取码: sdm6
    --来自百度网盘超级会员v3的分享

                

  • 相关阅读:
    七,DRF 过滤排序分页异常处理
    linux 4大IO调度算法
    C关键词section作用
    单片机文件传输协议 xmodem、ymodem、zmodem
    嵌入式C编程中错误异常该如何统一处理?
    mcu内存分配算法
    算法树概念
    [SHOI2011] 双倍回文
    主席树学习总结
    「APIO2014」回文串
  • 原文地址:https://www.cnblogs.com/zyyzy/p/13649990.html
Copyright © 2020-2023  润新知