




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Web 应用开发工程师 案例资源库Web 应用开发工程师案例手册- 财务报销管理系统一、项目需求分析 1、项目背景描述某学院的财务部门,现在感觉到本院的财务支出管理有点混乱,对于个别业务部门存在任意开支的现象,所以希望通过网上统一登记报销细目的形式,财务主管和院领导可以随时掌握学院的经费支出情况。学院的财务形式描述如下:每年学院的国家拨款及各类收入都按照各个业务部门的预算,划成分类的账号,所有的支出都按照其所发生的业务性质所属账号进行报销。各个账号有相应的负责人和出纳,有的负责人会有多个账号的支配权限,有的出纳可以操作多个账号,只要业务相关即可,这些都是由财务主管来分配。用户已经提供原始表格,一期任务把该表格实现网上填报即可。财务主管可以看到全院所有的报销信息,财务助理只能看到自己录入的信息。 所有的记录应可以导出Excel表格。2、需求概要分析(1)、用户和角色权限部分:财务主管维护系统用户,并为用户指定角色,用户的初始化密码和证件号相同,各用户自己登陆后可修改密码。角色分为三类: 、出纳:可以对自己被授权的账号进行报销记录的维护; 、账号负责人:可以对自己被授权的账号进行查询,不能做新增、修改、删除等操作; 、财务主管:可以查询、维护全院所有账号的报销记录;(2)、报销记录维护:填写报销记录时,需要记录摘要、费用类型、经办人、所属账号、记录人、记录时间、处理方式等信息。参考用户提供的原始表格。为规范填写,费用记录、处理方式都做标准化处理,财务主管维护代码表后,出纳录入时选择录入。为避免账号填写错误,出纳录入时,账号信息也是选择方式录入,每个出纳只能列出自己被授权的账号。(3)、报销记录查询根据账号、费用类型、金额范围 等字段进行查询。出纳和账号负责人只能查询到自己被授权的账号的报销记录。财务主管可以看到所有账号的报销记录。查询结果最下方,需要对金额字段做汇总。查询结果应该能导出Excel3、开发技术参数数据库采用Oracle;系统架构采用Struts + Spring + Hibernate ;涉及开发环境和工具:JDK1.5、Eclipse(MyEclipse)、Resin3.0.19(Tomcat5.5以上亦可)、Dreamweaver、Oracle数据库及客户端;二、系统功能设计1、用户维护 只有财务主管才有用户维护的功能。新加用户按钮 修改用户 删除用户 选择 序号 用户名 角色 Checkbox 1 2001230001 出纳Checkbox 2 2001580610 账号负责人Checkbox 3 说明:1、选中某条记录,可以进行修改,每次只能修改一条记录; 2、删除可以批量进行,可以选中多条记录进行删除;3、点新加用户按钮后,跳转到下页的新加用户界面;报销维护 账号授权 账号维护 处理方式维护 费用类型维护 用户维护 退出Banner(财务主管) - 用户维护新加用户页面用户登陆名:_ 用户姓名:_角色: _(select) 保存按钮说明:1、角色的下拉选项有 出纳、账号负责人 两类;2、保存用户时,应检测该用户名是否已经存在,如果存在,则返回本页面并给出相应提示;3、用户名应当是用户证件号;2、账号维护新加账号页面账号:_ 账号名称:_账号负责人:_ 账号状态:_(select)备注:_保存按钮说明:账号状态是指:正常 、关闭两种状态Banner(财务主管)-账号维护报销维护 账号授权 账号维护 处理方式维护 费用类型维护 用户维护 退出新加账号按钮 修改账号 删除账号 选择 序号 账号 账号名称 账号负责人 账号状态 备注 Checkbox 1 1000010001 日常办公账号 张华 正常 Checkbox 2 3000020005 学生活动经费 李军 正常Checkbox 3 说明:1、选中某条记录,可以进行修改,每次只能修改一条记录; 2、删除可以批量进行,可以选中多条记录进行删除;3、点新加用户按钮后,跳转到上页的新加账号界面;3、报销处理方式维护Banner(财务主管)-报销处理方式维护报销维护 账号授权 账号维护 处理方式维护 费用类型维护 用户维护 退出新加处理方式按钮 修改 删除 选择 序号 处理方式 Checkbox 1 已领现金Checkbox 2 已领支票Checkbox 3 说明:1、选中某条记录,可以进行修改,每次只能修改一条记录; 2、删除可以批量进行,可以选中多条记录进行删除;3、点新加处理方式按钮后,跳转到下页的新加处理方式界面;新加处理方式页面处理方式:_保存按钮说明:保存的时候,要检测该处理方式是否已经存在,如果已经存在,需要返回本页并给出提示; 4、费用类型维护Banner(财务主管)-费用类型维护报销维护 账号授权 账号维护 处理方式维护 费用类型维护 用户维护 退出新加费用类型按钮 修改 删除 选择 序号 费用代码 费用类型 费用说明Checkbox 1 01 办公费 Checkbox 2 02 邮电费 Checkbox 3 说明:1、选中某条记录,可以进行修改,每次只能修改一条记录; 2、删除可以批量进行,可以选中多条记录进行删除;3、点新加处理方式按钮后,跳转到下页的新加处理方式界面;新加费用类型费用代码:_ 费用类型:_费用说明:_(textarea)保存按钮说明:1、保存的时候,要检测该费用类型是否已经存在,如果已经存在,需要返回本页并给出提示; 2、费用代码、费用类型、费用说明 均为必填项; 5、账号授权报销维护 账号授权 账号维护 处理方式维护 费用类型维护 用户维护 退出Banner(财务主管)- 账号授权新加账号授权按钮 修改 删除 账号_ 授权人_查询按钮选择 序号 账号 授权人Checkbox 1 1000010001 张华Checkbox 2 1000010002 李磊说明:1、选中某条记录,可以进行修改,每次只能修改一条记录; 2、删除可以批量进行,可以选中多条记录进行删除;3、点新加按钮后,跳转到下页的新账号授权界面;4、点下查询按钮后,本页显示查询结果;新建账号授权页账号:_(select) 授权人:_(select) 保存说明:1、账号的下拉框是从账号表中读出; 2、授权人的下拉框是从用户表中读出,显示用户的真实姓名,存盘时存用户的zjh;Banner报销维护首页6、报销维护页报销维护 账号授权 账号维护 处理方式维护 费用类型维护 用户维护 退出新加 修改 删除账号:_(select) 金额范围_至_ 报销时间_至_ 费用类型:_ (select) 处理方式:_(select) 查询按钮选择 序号 摘要 费用类型 处理方式 金额 经办人 记录人 报销时间 备注 合计: *-说明:1、账号是当前用户被授权的所有账号下拉选择;2、费用类型、处理方式 都是下拉列表;3、页面底部是当页的金额合计新加报销记录页账号:_(select) 金额:_摘要:_费用类型:_(select) 处理方式:_(select)报销时间:_ 经办人:_保存按钮说明:1、存盘的时候,自动保存当前用户为录入人;2、金额框,只能输入数值型;三、数据库设计1、报销明细表2、用户表3、费用类型4、账号5、账号授权四、运行结果实例用户登录报销记录列表账号授权结果导出Excel删除之前必须进行询问与确认账号维护用户管理报销处理方式的维护费用类型维护五、重点代码剖析Struts-config.xml Web.xmlEncodeF.thcic.demo.util.ReqEncodeFilterRequestEncodeGBKEncodeFilter*.do action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml debug 3 detail 3 0 action *.do index.jsp /报销明细的Actionpackage .thcic.demo.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import .thcic.demo.bo.BxmxService;import .thcic.demo.bo.ClfsService;import .thcic.demo.bo.FylxService;import .thcic.demo.bo.ZhsqService;import .thcic.demo.form.BxmxForm;import .thcic.demo.vo.Bxmx;import .thcic.demo.vo.CwUser;public class BxmxAction extends DispatchAction /报销明细的列表public ActionForward list(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)getListData(request);return mapping.findForward(success); /获得列表需要显示的数据private void getListData(HttpServletRequest request) BxmxService bxmxService = new BxmxService();ZhsqService zhsqService = new ZhsqService();FylxService fylxService = new FylxService();ClfsService clfsService = new ClfsService();CwUser user = (CwUser)request.getSession().getAttribute(user);/找到当前用户有权限看到的所有报销记录request.setAttribute(bxmxList, bxmxService.getUserBxmx(user);/找到当前用户被授权的全部账号request.setAttribute(zhList, zhsqService.getUserZhList(user);/费用类型列表request.setAttribute(fylxList, fylxService.getAllFylxList();/处理方式列表request.setAttribute(clfsList, clfsService.getAllClfsList() );/新加报销明细public ActionForward saveOrUpdate(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)BxmxForm bxmxForm = (BxmxForm)form;/把form里的属性赋值给mx实体Bxmx mx = new Bxmx();if(bxmxForm.getId() != null & bxmxForm.getId().trim() != & bxmxForm.getId().length()0) mx.setId(Long.parseLong(bxmxForm.getId();mx.setFylx(bxmxForm.getFylx();mx.setJe(Double.parseDouble(bxmxForm.getJe();mx.setBxsj(bxmxForm.getBxsj();mx.setClfs(bxmxForm.getClfs();mx.setBz(bxmxForm.getBz();mx.setJbr(bxmxForm.getJbr();mx.setJlr(CwUser)request.getSession().getAttribute(user).getUsername();mx.setZh(bxmxForm.getZh();mx.setZy(bxmxForm.getZy();new BxmxService().saveOrUpdateClfs(mx);/做好返回数据准备this.getListData(request);bxmxForm.reset(mapping, request);return mapping.findForward(success);/删除报销明细public ActionForward delete(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)BxmxService bxmxService = new BxmxService();String id = request.getParameter(id);Bxmx mx = bxmxService.getBxmxById(id);bxmxService.delBxmx(mx);this.getListData(request);return mapping.findForward(success);/* * 编辑某条记录 * */public ActionForward toEdit(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) BxmxForm bxmxForm = (BxmxForm)form;BxmxService bxmxService = new BxmxService();String id = request.getParameter(id);Bxmx mx = bxmxService.getBxmxById(id);bxmxForm.setBxsj(mx.getBxsj();bxmxForm.setBz(mx.getBz();bxmxForm.setClfs(mx.getClfs();bxmxForm.setFylx(mx.getFylx();bxmxForm.setId(String.valueOf(mx.getId();bxmxForm.setJbr(mx.getJbr();bxmxForm.setJe(String.valueOf(mx.getJe();bxmxForm.setJlr(mx.getJlr();bxmxForm.setZy(mx.getZy();bxmxForm.setZh(mx.getZh();this.getListData(request);return mapping.findForward(success);package .thcic.demo.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import .thcic.demo.bo.ClfsService;import .thcic.demo.form.ClfsForm;import .thcic.demo.vo.Clfs;public class ClfsAction extends DispatchAction public ActionForward list(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) ClfsForm clfsForm = (ClfsForm) form;ClfsService clfsService = new ClfsService();request.setAttribute(clfsList, clfsService.getAllClfsList();return mapping.findForward(success);public ActionForward saveOrUpdate(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) ClfsForm clfsForm = (ClfsForm) form;ClfsService clfsService = new ClfsService();Clfs clfs = new Clfs();clfs.setClfs(clfsForm.getClfs();if(clfsForm.getId() != null & clfsForm.getId().trim() != & clfsForm.getId().length()0) clfs.setId(Long.parseLong(clfsForm.getId();clfsService.saveOrUpdateClfs(clfs);request.setAttribute(clfsList, clfsService.getAllClfsList();clfsForm.reset(mapping, request);return mapping.findForward(success);/* * 编辑某条记录 * */public ActionForward toEdit(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) ClfsForm clfsForm = (ClfsForm) form;ClfsService clfsService = new ClfsService();String id = request.getParameter(id);Clfs clfs = clfsService.getClfsByID(id);clfsForm.setClfs(clfs.getClfs();clfsForm.setId(String.valueOf(clfs.getId();request.setAttribute(clfsList, clfsService.getAllClfsList();return mapping.findForward(success);public ActionForward delete(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) ClfsForm clfsForm = (ClfsForm) form;ClfsService clfsService = new ClfsService();String id = request.getParameter(id);Clfs clfs = clfsService.getClfsByID(id);clfsService.delClfs(clfs);request.setAttribute(clfsList, clfsService.getAllClfsList();clfsForm.reset(mapping, request);return mapping.findForward(success);package .thcic.demo.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import .thcic.demo.bo.UserService;import .thcic.demo.form.CwUserForm;import .thcic.demo.vo.CwUser;public class CwUserAction extends DispatchAction /用户列表public ActionForward list(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) CwUserForm cwUserForm = (CwUserForm) form;UserService userService = new UserService();request.setAttribute(userList, userService.getUserList();return mapping.findForward(success);/新加用户public ActionForward saveOrUpdate(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) CwUserForm cwUserForm = (CwUserForm) form;UserService userService = new UserService();CwUser user = new CwUser();if(cwUserForm.getId() != null & cwUserForm.getId().trim() != & cwUserForm.getId().length()0)user.setId(Long.parseLong(cwUserForm.getId();user.setUsername(cwUserForm.getUsername();user.setRealname(cwUserForm.getRealname();user.setRole(cwUserForm.getRole();userService.saveOrUpdate(user);request.setAttribute(userList, userService.getUserList();cwUserForm.reset(mapping, request);return mapping.findForward(success);/* * 编辑某条记录 * */public ActionForward toEdit(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) CwUserForm cwUserForm = (CwUserForm) form;UserService userService = new UserService();String id = request.getParameter(id);CwUser user = userService.getUserById(id);cwUserForm.setUsername(user.getUsername();cwUserForm.setRealname(user.getRealname();cwUserForm.setRole(user.getRole();request.setAttribute(userList, userService.getUserList();return mapping.findForward(success);/删除用户public ActionForward delete(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) CwUserForm cwUserForm = (CwUserForm) form;UserService userService = new UserService();String id = request.getParameter(id);CwUser user = userService.getUserById(id);userService.delUser(user);request.setAttribute(userList, userService.getUserList();cwUserForm.reset(mapping, request);return mapping.findForward(success);package .thcic.demo.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年验船师考试(C级船舶检验专业实务)考前模拟试题及答案一
- 2025年公共卫生管理与政策考试试题及答案
- 2025年绿色经济课程测试题及答案
- 2025注册验船师考试(C级船舶检验专业综合能力)冲刺模拟试题及答案一
- 2025年银行招聘考试笔试模拟题及高分秘籍
- 2025年【G1工业锅炉司炉】考试试卷及G1工业锅炉司炉作业考试题库(含答案)
- 管理课程银行笔试题目及答案
- 2026届福建省泉州市德化一中化学高二上期中质量跟踪监视试题含解析
- 2025年初级电子信息技术应用模拟考试题库及答案详解
- 2025年法律事务助理招聘考试题库及答案解析
- 2024年长沙市公安局招聘警务辅助人员真题
- 待灭菌物品的装载
- 《急性肺栓塞诊断和治疗指南2025》解读
- 2025年职业卫生技术服务专业技术人员考试(放射卫生检测与评价)历年参考题库含答案详解(5套)
- 《健康体检超声检查质量控制专家建议(2025版)》解读课件
- 2025至2030年中国小信号分立器件行业市场运行现状及投资战略研究报告
- 老年人基础照护护理协助协助老人床椅转移
- 2025年北京中考真题英语试题及答案
- 班组人工协议书
- 2025年浙江省中考社会试题卷(含答案)
- QC/T 1224-2025装备空气悬架的商用车减振效果判定方法
评论
0/150
提交评论