姓 名 |
xxx |
学 号 |
2019xxx |
班 级 |
192404 |
|||||||||||||||||
代码行数 |
|
项目名称 |
住房公积金管理系统——筹集子系统 |
|||||||||||||||||||
1.实训目的本次课程设计旨在通过一个完整项目的开发,巩固软件文档编写、软件工程、数据库技术等课程的相关知识,加深学生对网络程序设计的理解,尤其是对JSP技术、Mybatis访问数据库的理解,使学生进一步掌握环境构建、代码编写、文档阅读与理解、文档编写、软件测试、发行与部署等技能,进一步提高学生的学习能力、理解能力、表达能力及沟通能力。 2.实训内容2.1 在线学习 表1 在线学习部分推荐课程
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>帐 号:<input name="username" type="text" id="uid" /></label> </p> <p> <label>密 码:<input name="password" type="password" id="pwd" /></label> </p> <hr /> <input type="submit" value=" 登 录 " class="btn btn-primary btn-large login" /> <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; // 3MBprivate static final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MBprivate static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; // 50MBSimpleDateFormat 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的分享