基于Javaweb实现ATM机系统开发实战(十一)存储交易记录

这篇具有很好参考价值的文章主要介绍了基于Javaweb实现ATM机系统开发实战(十一)存储交易记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

首先创建一个业务接口:

package com.atm.service;

import com.atm.pojo.RunMessage;

//交易记录的业务接口
public interface RunMessageService{
    //添加交易记录
    public void addRunMessage(RunMessage runMessage) throws Exception ;
}

再完成业务接口的实现类:

package com.atm.service.impl;

import com.atm.dao.RunMessageDao;
import com.atm.pojo.RunMessage;
import com.atm.service.RunMessageService;


//交易记录业务接口实现类
public class RunMessageServiceImpl implements RunMessageService   {

    private RunMessageDao runMessageDao=new RunMessageDao();



    @Override
    public void addRunMessage(RunMessage runMessage)  throws Exception  {
        runMessageDao.insert(runMessage);
    }
}

在创建数据层的持久化类:

package com.atm.dao;


import com.atm.pojo.RunMessage;
import com.atm.utill.DBUtils;

import java.sql.Connection;
import java.sql.PreparedStatement;

//交易记录持久化类
public class RunMessageDao {
    //保存交易记录
    public void insert(RunMessage runMessage) throws Exception {
        Connection conn= DBUtils.getConnection();
        PreparedStatement preparedStatement = conn.prepareStatement("insert  into runmessage values (null,?,?,?,?,?) ");
        preparedStatement.setString(1,runMessage.getIcno());
        preparedStatement.setString(2,runMessage.getRm_date());
        preparedStatement.setString(3,runMessage.getRm_currency());
        preparedStatement.setDouble(4,runMessage.getRm_balance());
        preparedStatement.setDouble(5,runMessage.getRm_rest());
        preparedStatement.executeUpdate();
        DBUtils.release(conn,preparedStatement,null);
    }
}

在存款中调用接口来保存交易记录:

package com.atm.servlet;

import com.atm.pojo.RunMessage;
import com.atm.pojo.User;
import com.atm.service.RunMessageService;
import com.atm.service.UserService;
import com.atm.service.impl.RunMessageServiceImpl;
import com.atm.service.impl.UserServiceImpl;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

//用户存款
@WebServlet("/UserStore")
public class UserStoreServlet extends HttpServlet {
    private UserService userService=new UserServiceImpl();
    private RunMessageService runMessageService=new RunMessageServiceImpl();
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    User user=(User) request.getSession().getAttribute("ua");
    int money=Integer.parseInt(request.getParameter("saveNum"));
    if(money ==0){
        request.getSession().setAttribute("error3","存款金额不能为0");
        response.sendRedirect("changepage/UserStore.jsp");
    } else if (money%100!=0) {
        request.getSession().setAttribute("error3","存款金额必须为100的倍数");
        response.sendRedirect("changepage/UserStore.jsp");
    } else if (money>10000) {
        request.getSession().setAttribute("error3","存款金额不能大于10000");
        response.sendRedirect("changepage/UserStore.jsp");
    }else {
        try{
            userService.storeMoney(money,user.getIcno());
            //保存交易记录
            SimpleDateFormat sdf=new SimpleDateFormat("YYYY-MM-dd hh:mm:ss");
            //查询当前最新的账户余额
            double rest= userService.getBalance(user.getIcno());
            RunMessage runMessage =new RunMessage();
            runMessage.setIcno(user.getIcno());
            runMessage.setRm_currency("人民币");
            runMessage.setRm_date(sdf.format(new Date()));
            runMessage.setRm_balance(Double.valueOf(money));
            runMessage.setRm_rest(rest);
            //保存交易记录
            runMessageService.addRunMessage(runMessage);
            response.sendRedirect("/UserSerch");
        }catch (Exception e){
            request.getSession().setAttribute("error3","存款失败");
            response.sendRedirect("changepage/UserStore.jsp");
            e.printStackTrace();
        }

    }
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request,response);
    }

}

取款中也是一样的:

package com.atm.servlet;

import com.atm.pojo.RunMessage;
import com.atm.pojo.User;
import com.atm.service.RunMessageService;
import com.atm.service.UserService;
import com.atm.service.impl.RunMessageServiceImpl;
import com.atm.service.impl.UserServiceImpl;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;


//模拟用户取款
@WebServlet("/UserFetch")
public class UserFetchServlet extends HttpServlet {
    private RunMessageService runMessageService=new RunMessageServiceImpl();
    private UserService userService=new UserServiceImpl();
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //拿到当前用户信息
        User user = (User) request.getSession().getAttribute("ua");
        //查询余额:
        double balance = 0;
        try {
            balance = userService.getBalance(user.getIcno());
        } catch (Exception e) {
            e.printStackTrace();
        }
        //获得当前存款参数
        int money = Integer.parseInt(request.getParameter("fetchNum"));
        if (money == 0) {
            request.getSession().setAttribute("error2", "取款金额不能为0");
            response.sendRedirect("changepage/UserFetch.jsp");
        } else if (money % 100 != 0) {
            request.getSession().setAttribute("error2", "取款金额必须为100的倍数");
            response.sendRedirect("changepage/UserFetch.jsp");
        } else if (money > 10000) {
            request.getSession().setAttribute("error2", "单次取款金额不能大于10000");
            response.sendRedirect("changepage/UserFetch.jsp");
        } else if (money > balance) {
            request.getSession().setAttribute("error2", "余额不足");
            response.sendRedirect("changepage/UserFetch.jsp");
        } else {
            try {
                userService.fetchMoney(money, user.getIcno());
                //保存交易记录
                SimpleDateFormat sdf=new SimpleDateFormat("YYYY-MM-dd hh:mm:ss");
                //查询当前最新的账户余额
                double rest= userService.getBalance(user.getIcno());
                RunMessage runMessage =new RunMessage();
                runMessage.setIcno(user.getIcno());
                runMessage.setRm_currency("人民币");
                runMessage.setRm_date(sdf.format(new Date()));
                runMessage.setRm_balance(-Double.valueOf(money));
                runMessage.setRm_rest(rest);
                //保存交易记录
                runMessageService.addRunMessage(runMessage);

                response.sendRedirect("/UserSerch");
            } catch (Exception e) {
                request.getSession().setAttribute("error2", "取款失败");
                response.sendRedirect("changepage/UserFetch.jsp");
                e.printStackTrace();
            }

        }
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request,response);
    }
}

然后我们重启一下系统,存个钱测试一下;

发现交易记录已经成功保存啦~

基于Javaweb实现ATM机系统开发实战(十一)存储交易记录,JAVA学习笔记,java,开发语言

 代码已上传~文章来源地址https://www.toymoban.com/news/detail-575746.html

到了这里,关于基于Javaweb实现ATM机系统开发实战(十一)存储交易记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一个基于SpringBoot开发的RBAC系统,非常适合新手入门JavaWeb代码审计实战的系统,长文警告,要好好学习。

    嗨,大家好,我是闪石星曜CyberSecurity创始人Power7089。 欢迎大家搜索我的微信公众号:闪石星曜CyberSecurity 本文是【炼石计划@Java代码审计】内部圈子原创课程,现分享给大家学习。 如需转载,请详细注明来源。 欢迎大家搜索并添加我的好友【Power_7089】,备注CSDN,邀请你进入

    2024年02月11日
    浏览(53)
  • 【java】【基础8】入门结业-ATM系统实战

      目录 一、ATM项目技术  二、能达成的能力  三、开始编码 3.1 系统架构搭建、欢迎页设计  3.1.1 Account 3.1.2 ATM  3.1.3 Test 3.2 开户功能实现 3.2.1 修改AccountgetUserName()  3.2.2 ATM 开户操作  3.2.3 ATM为新用户生成一个随机卡号​编辑 3.3 登录功能实现 3.4 操作页展示、查询账户、退出

    2024年02月16日
    浏览(41)
  • 计算机毕业设计 基于SpringBoot智慧养老中心管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

    🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不

    2024年02月07日
    浏览(49)
  • 计算机毕业设计 基于Spring Boot智能停车计费系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

    🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不

    2024年02月07日
    浏览(47)
  • OSS对象存储后端实现+Vue实现图片上传【基于若依管理系统开发】

    Bucket(存储空间) :用于存储对象的容器,所有对象都属于某个存储空间中,一般是一个项目创建一个Bucket来专门存储该项目的文件 Object(对象) :可以理解为文件,对象在Bucket内部由唯一的Key来标识 Region(地域) :选择数据所存放的物理地址,如北京 Endpoint(访问域名

    2024年02月16日
    浏览(45)
  • 基于JavaWeb的网上购物系统开发(含代码)

    为了开发一个JavaWeb的网上购物系统,我们可以使用一些常见的技术,如Java、Spring、Spring MVC、Hibernate等。下面是一个简单的购物系统开发的步骤以及在这个过程中用到的一些代码的实现。 我们首先需要设计和创建购物系统所需的数据库结构。我们可以使用MySQL数据库,设计数

    2024年02月09日
    浏览(50)
  • Java模拟实现ATM系统

    前言: 自动取款机又称ATM(Automated Teller Machine的缩写),意思是自动柜员机,因大部分用于取款,又称自动取款机。它是一种高度精密的机电一体化装置,利用磁性代码卡或智能卡实现金融交易的自助服务,代替银行柜面人员的工作。可提取现金、查询存款余额、进行账户之

    2024年02月10日
    浏览(40)
  • 计算机毕业设计 基于SSM+Vue的物资存储系统(以消防物资为例)的设计与实现 Java实战项目 附源码+文档+视频讲解

    博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 ——————————

    2024年02月07日
    浏览(72)
  • 基于JavaWeb开发的小区车辆登记系统计算机毕设[附源码]

    🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统 📝 🚀🚀🚀 精彩系列推荐 Java毕设项目精品实战案例《1000套》 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclisp

    2024年02月21日
    浏览(54)
  • 基于JavaWeb技术实现宿舍管理系统

    系统采用三层架构设计开发,页面是JSP技术、jQuery和EasyUI框架,数据库是mysql,数据层访问使用MyBatis框架。 JDK1.8 tomcat8.5 MySQL5.7 系统角色分为系统管理员、宿舍管理员、学生。系统的主要功能有:登录功能、学生注册功能、宿舍管理员管理功能、学生管理功能、宿舍楼管理功

    2024年02月10日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包