java+sql+servlet 基于web的银行业务管理系统

3.1.1功能结构设计
经过对系统的需求分析,将整个系统分为6部分:银行客户管理模块、用户存款模块、用户取款模块、用户贷款模块、账户明细模块、用户管理模块。具本的功能模块设计如图3-1所示:

代码已经上传github,下载地址: https://github.com/21503882/bank

图3-1系统功能模块图
3.1.2系统功能模块描述
    本系统由6个模块构成,下面将描述各个模块的功能。
1、银行用户信息模块:主要完成银行客户的管理功能,包括银行客户开户,删除及查询等。用户在开户时需要输入用户的相关信息,主要包括银行卡号,用户姓名,密码,地址,电话,身份证号等信息。可以删除银行用户,也可以进行查询。
2、用户存款模块:完成用户存款的功能,可以按卡号进行搜索,查找到该用户后,进行存款操作,输入存款金额,可以查看存款的名细。
3、用户取款模块:完成用户的取款功能,可以按卡号查找用户,找到用户后,输入取款金额,系统首先判断用户的余额是否充足,如果充足,则完成用户的取款操作。如果余额不足会有相应的提示。
4、用户贷款还款模块:完成客户贷款的管理及还款的管理。用户可以从银行进行贷款,还可以分期还款,本模块完成用户贷款和还款的管理,用户可以查询贷款明细和还款明细信息。
5、帐户明细管理:查询所有用户的交易明细,交易明细信息主要包括交易类型、交易流水号、银行卡号、交易日期、交易金额等。
6、操作员管理,完成银行员工的管理,可以添加或删除操作员的信息。
3.2 系统主窗体的设计    
3.2.1 创建系统的主窗体    
   本系统采用B/S模式设计,整体采用框架结构。本系统的主窗体中设计系统的菜单,用户可以根据这些菜单,来完成各种操作。在窗口的左侧列出的用户的操作项目。系统的主窗体设计如图3-2所示:
 
图3-2 系统的主窗体设计
3.2.2创建主窗体的菜单    
在本系统中,用户的菜单集中在主窗体的左侧,每个功能项目都对应系统的一个链接。菜单的设计对应的磁盘文件为left1.jsp。主菜单的设计如图3-3所示:
 
图3-3 系统主菜单设计
3.3功能模块的设计    
3.3.1操作员登录窗体
本系统的使用用户主要是面向银行的职工的,由于系统的数据要求很高的安全性,所以对使用用户进行身份验证是十分必要的。本系统,在登录时,首先需要验证用户的身份是否合法。如果合法,则进入相应的管理页面,如果不合法,则会有相应的提作。本系统的用户分为两类,管理员和普通员工,管理员具有系统的全部权限,可以添加删除普通员工的信息,普通员工可以进行银行相应的业务的操作。系统的登录窗口对应的磁盘文件为login.jsp,窗口设计如图3-4所示:

图3-4 操作员登录界面
3.3.2添加用户窗体
    以管理员的身份登录后,可以添加普通操作员。普通操作员的信息包括用户和密码,输入相应的信息后,点击确定按钮进行提交。添加用户窗体对应的磁盘文件为addry.jsp 。添加用户窗体的界面设计如图3-5所示:
 
图3-5 添加用户窗口
3.3.3修改用户密码窗体    
    为了使系统的安全性更高,系统要求操作员定期的更换自己的登录密码,以保证系统的安全,用户修改密码时需要输入系统的原始密码,并输入系统的新密码,验证成功后,即可以登录成功。修改用户密码的界面设计如图3-6所示:

 
图3-6 修改用户密码窗口
3.4银行业务模块的设计    
3.4.1存款业务窗体
存款业务窗口,是本系统的主要功能之一。完成客户存款的操作过程。首先打开存款管理界面,在该界面中显示所有用户的信息,操作员首先根据客户的卡号,进行查找,找到相应的记录后,点击存款进行存款操作。存款业务管理窗口对应的磁盘文件为cqmanager.jsp。存款管理界面设计如图3-7所示:
 
图3-7 存款管理窗口
在以上窗口中,当操作员选择了某一用户,点击“存款”时将调出用户存款的窗口,在存款窗口中,操作员输入存入金额,用户将完成存款的操作。存款窗口的界面设计如图3-8所示:
 
图3-8存款窗口
3.4.2取款业务窗体
    用户取款业务也是银行的主要业务之一,完成客户口的取款操作。操作过程与存款的相似,首先打开取款业务窗口,可以根据卡号查询某一个用户,当选中某个用户,点击取款时,将调出取款业务窗口,操作员输入要取款的金额,当点击确定按钮时,系统首先判断客户余额是否充足,如果充足,则完成取款操作。取款业务窗口设计如图3-9所示:
 
 
图3-9 取款业务窗口
3.4.3贷款业务窗体
    贷款业务窗口,完成银行贷款业务的管理操作。用户可以从银行贷款,也可以进行还款操作。贷款业务窗口对应的磁盘文件为dkmanager.jsp。本窗口可以完成代款,还款,查看明细等一系列操作。贷款业务窗体的设计如图3-9所示:

图3-9 贷款业务窗口
3.5用户信息管理模块的设计    
3.5.1添加用户信息窗体    
添加用户管理模块,完成银行用户的开户功能,只要办理银行业务,首先需要客户进行开户,在开户时,需要个人的相关信息后,点击“注册”按钮,完成用户的添加功能,添加用户窗体的设计如图3-10所示:
 
图3-10 添加用户窗口


3.5.2删除用户信息
    删除用户账号信息,完成删除某个银行客户的功能,操作员可以按条件进行查询,当查询到某条记录后,点击“删除”按钮完成删除的操作。删除用户信息的界面设计如图3-11所示: 
图3-11 删除用户界面
3.6帐户明细查询模块    
3.6.1帐户信息明细窗体    
帐户信息明细窗口主要完成帐户信息的查询的操作,可以根据用户的银行卡号进行查询,显示用户的基本信息,帐户明细信息查询窗体的设计如图3-12所示:
 
图3-12 帐号信息明细查询窗口
3.6.2个人明细查询窗体    
当用户在图3-12中,选择了某个用户,可以查看该用户的个人明细信息,个人明细信息记录了此用户所有的存款、取款、代款及还款的相应记录。个人明细查询窗体的设计如图3-13所示:

图3-13 个人明细查询窗口

package jmu.edu.cn.control.admin;

import jmu.edu.cn.domain.QueryParam;
import jmu.edu.cn.domain.Users;
import jmu.edu.cn.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

/**
 * Created by Administrator on 2016/3/20.
 * 处理用户请求的处理器
 */
@RequestMapping("/admin/users")
@Controller
public class UsersController {
    @Autowired
    private UsersService usersService;

    /**
     * 获取用户信息并返回给客户端
     *
     * @param pageNo     第几页数据
     * @param pageSize   一页展示几条数据
     * @param notifyMsg  提示消息
     * @param queryParam 一些查询参数
     * @return
     */
    @RequestMapping(value = "")
    public String admin(@RequestParam(required = false, defaultValue = "1") Integer pageNo,
                        @RequestParam(required = false, defaultValue = "10") Integer pageSize, @ModelAttribute("notifyMsg") String notifyMsg, QueryParam queryParam, Model model) {
        Page<Users> users = usersService.findAll(pageNo, pageSize, queryParam);
        model.addAttribute("users", users);
        model.addAttribute("param", queryParam);
        return "/admin/users";
    }

    /**
     * 根据用户id删除用户
     *
     * @param userId 用户id
     * @return
     */
    @RequestMapping(value = "/delUsers/{userId}")
    public String delUsers(@PathVariable("userId") Long userId, RedirectAttributes model) {
        usersService.delete(userId);
        model.addFlashAttribute("notifyMsg", "删除用户成功");
        return "redirect:/admin/users";
    }

    /**
     * 添加一个新的用户
     *
     * @param users 用户信息
     * @return
     */
    @RequestMapping(value = "/addUsers", method = RequestMethod.POST)
    public String addUsers(Users users, RedirectAttributes model) {
        usersService.save(users);
        model.addFlashAttribute("notifyMsg", "添加用户成功");
        return "redirect:/admin/users";
    }

    /**
     * 修改一个用户
     *
     * @param users 用户信息
     * @return
     */
    @RequestMapping(value = "/alterUsers", method = RequestMethod.POST)
    public String alterUsers(Users users, RedirectAttributes model) {
        Users alterUser = usersService.findByUsername(users.getUserName());
        if (alterUser == null) {
            model.addFlashAttribute("notifyMsg", "修改失败,找不到此用户");
            return "redirect:/admin/users";
        }
        alterUser.setPassword(users.getPassword());
        alterUser.setTelphone(users.getTelphone());
        alterUser.setRemark(users.getRemark());
        usersService.update(alterUser);
        model.addFlashAttribute("notifyMsg", "修改成功");
        return "redirect:/admin/users";
    }
}

package jmu.edu.cn.control.admin;

import jmu.edu.cn.domain.Contact;
import jmu.edu.cn.domain.QueryParam;
import jmu.edu.cn.domain.Users;
import jmu.edu.cn.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import java.util.List;

/**
 * Created by Administrator on 2016/3/21.
 * 处理联系人消息的处理器
 */
@RequestMapping("/admin/contact")
@Controller("admin_controller")
public class ContactController {
    @Autowired
    private UsersService usersService;


    /**
     * 获取联系人数据并返回给客户端
     *
     * @param pageNo     第几页数据
     * @param pageSize   一页展示几条数据
     * @param notifyMsg  提示消息
     * @param queryParam 一些查询参数
     * @return
     */
    @RequestMapping(value = "")
    public String admin(@RequestParam(required = false, defaultValue = "1") Integer pageNo,
                        @RequestParam(required = false, defaultValue = "10") Integer pageSize, @ModelAttribute("notifyMsg") String notifyMsg, QueryParam queryParam, Model model) {
        Page<Contact> contacts = usersService.findAllContacts(pageNo, pageSize, queryParam);
        List<Users> allUsers = usersService.findAll();
        model.addAttribute("contacts", contacts);
        model.addAttribute("allUsers", allUsers);
        model.addAttribute("queryParam", queryParam);
        return "/admin/contacts";
    }


    /**
     * 根据传进来的contactId删除对应的联系人
     *
     * @param contactId 联系人ID
     * @return
     */
    @RequestMapping(value = "/delContacts/{contactId}")
    public String delContacts(@PathVariable("contactId") Long contactId, RedirectAttributes model) {
        usersService.deleteContact(contactId);
        model.addFlashAttribute("notifyMsg", "删除联系人成功");
        return "redirect:/admin/contact";
    }

    /**
     * 添加一个新的联系人
     *
     * @param contact  客户端传过来的联系人详情
     * @param username 指定添加到那个用户底下
     * @return
     */
    @RequestMapping(value = "/addContacts", method = RequestMethod.POST)
    public String addUsers(Contact contact, String username, RedirectAttributes model) {
        String msg = "添加联系人失败";
        Users byUsername = usersService.findByUsername(username);
        if (contact != null && byUsername != null) {
            usersService.saveContact(contact, byUsername);
            msg = "添加联系人成功";
        }
        model.addFlashAttribute("notifyMsg", msg);
        return "redirect:/admin/contact";
    }

    /**
     * 修改一个联系人
     *
     * @param contact 修改的联系人参数
     * @return
     */
    @RequestMapping(value = "/alterContacts", method = RequestMethod.POST)
    public String alterContacts(Contact contact, RedirectAttributes model) {
        String msg = "修改联系人失败";
        Contact contactById = usersService.findContactById(contact.getId());
        if (contactById != null) {
            contactById.setName(contact.getName());
            contactById.setTelphone(contact.getTelphone());
            contactById.setIdentityCard(contact.getIdentityCard());
            usersService.updateContact(contactById);
            msg = "修改联系人成功";
        }
        model.addFlashAttribute("notifyMsg", msg);
        return "redirect:/admin/contact";
    }
}
代码已经上传github,下载地址: https://github.com/21503882/bank

发布了38 篇原创文章 · 获赞 10 · 访问量 4164

猜你喜欢

转载自blog.csdn.net/QQ21503882/article/details/101519481