作者主页:编程千纸鹤

作者简介:Java、前端、Pythone开发多年,做过高程,项目经理,架构师

主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享

一,项目简介

本项目主要实现一个模拟ATM机存款、取款、转账功能的一个系统,可以查看打印交易明细,后台用户可以管理用户账户卡信息。本系统主要是针对计算机专业的学生做课程设计或课程期未作业使用。功能完整,界面美观大方。如果你的课程设计或作业是关于ATM机存取款方面的,可以考虑使用。本系统包含完整源码和数据库一份,并配套文档说明一份。

二,环境介绍

开发工具:IDEA / ECLIPSE

数据库:MYSQL5.7

应用服务器:TOMCAT8.5.31

后台开发技术:JSP、Servlet

前端开发技术:javascript、css、bootstrap

三,系统展示

前端页面

用户登陆

前端用户登陆后主页显示用户信息

修改密码

查询银行卡余额

银行卡存款

银行卡取款:取款金额不得大于当前余额

银行卡转账

分页查询交易明细

后台管理功能

用户登陆

银行卡用户列表:可以实现模糊搜索

用户信息修改删除

银行卡用户添加

四,核心代码展示

用户登陆代码

package com.atm.servlet;import java.io.IOException;
import java.io.PrintWriter;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.atm.service.UserService;
import com.atm.service.impl.UserServiceimpl;public class LoginServlet extends HttpServlet {public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");String name = req.getParameter("name");String pwd = req.getParameter("password");System.out.println(name+"----"+pwd);UserService us = new UserServiceimpl();int result = us.login(name, pwd, req);System.out.println(result);if(result==1){System.out.println("用户登录成功!");resp.sendRedirect("list");}else if(result==0){System.out.println("用户登录失败");req.setAttribute("error", "密码错误");req.getRequestDispatcher("changepage/login.jsp").forward(req, resp);}else{System.out.println("LoginServlet.doGet(我是result==其他)");req.setAttribute("error", "用户名不存在");req.getRequestDispatcher("changepage/login.jsp").forward(req, resp);}}public void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doGet(req,resp);}}

用户模拟取款代码

package com.atm.servlet;import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.atm.dao.BeanUserDao;
import com.atm.dao.impl.BeanUserDaoImpl;
import com.atm.pojo.RunMessage;
import com.atm.service.BeanUserService;
import com.atm.service.impl.BeanUserServiceImpl;@WebServlet("/UserFetch")
public class UserFetchServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=uttf-8");int fetchNum = Integer.parseInt(req.getParameter("fetchNum"));HttpSession session = req.getSession();Object obj = session.getAttribute("userAccount");BeanUserService us = new BeanUserServiceImpl();double Money = us.serchBalance((String)obj);RunMessage rm = new RunMessage();BeanUserDao bud = new BeanUserDaoImpl();double fushu = -fetchNum;if(session!=null && fetchNum<=2000 && Money-fetchNum>=0&&fetchNum%50==0&& fetchNum>0) {rm.setICno((String)obj);SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式rm.setRM_date(df.format(new Date()));rm.setRM_Currency("人民币");rm.setRM_Balance(fushu);System.out.println("用户:"+(String)obj+" 取款"+fetchNum+"元");rm.setRM_Rest(us.serchBalance((String)obj)-fetchNum);BeanUserService bus = new BeanUserServiceImpl(); req.getSession().setAttribute("balance", Money);bus.fetchMoney((String)obj, fetchNum);bud.RunMessage(rm);
//          req.getRequestDispatcher("serch").forward(req, resp);resp.sendRedirect("/Final/UserSerch");}else if(fetchNum>2000){req.getSession().setAttribute("error2", "取出失败,金额不得超过2000元");
//          req.getRequestDispatcher("UserJsp/fetchMoney.jsp").forward(req, resp);//这个地方必须是重定向,因为 UserJsp/fetchMoney.jsp 这个jsp中提交地址是<form action="../fetch">//,它会进行一次向上跳转,所以需要重定向而不是请求转发,否则地址栏将会变成//http://localhost:8080/fetch?fetchNum=你输入的取钱金额,应该是://http://localhost:8080/course/fetch?fetchNum=你输入的取钱金额resp.sendRedirect("/Final/changepage/UserFetch.jsp");}else if(fetchNum<0) {req.getSession().setAttribute("error2", "取款金额必须大于0!");resp.sendRedirect("/Final/changepage/UserFetch.jsp");}else if(fetchNum%50!=0) {req.getSession().setAttribute("error2", "只能取出50或100元现金的倍数!");resp.sendRedirect("/Final/changepage/UserFetch.jsp");}else if(Money-fetchNum<0) {req.getSession().setAttribute("error2", "卡内余额不足!");resp.sendRedirect("/Final/changepage/UserFetch.jsp");}}
}
package com.atm.servlet;import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.atm.dao.BeanUserDao;
import com.atm.dao.impl.BeanUserDaoImpl;
import com.atm.pojo.RunMessage;
import com.atm.service.BeanUserService;
import com.atm.service.impl.BeanUserServiceImpl;@WebServlet("/UserStore")
public class UserStoreServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");RunMessage rm = new RunMessage();BeanUserDao bud = new BeanUserDaoImpl();int result = 0;int saveNum = Integer.parseInt(req.getParameter("saveNum"));HttpSession session = req.getSession();Object obj = session.getAttribute("userAccount");BeanUserService us = new BeanUserServiceImpl();double Money = us.serchBalance((String)obj);if(session!=null && saveNum<=2000 && saveNum%50==0 && saveNum >0) {BeanUserService bus = new BeanUserServiceImpl();bus.saveMoney((String)obj, saveNum);rm.setICno((String)obj);SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式rm.setRM_date(df.format(new Date()));rm.setRM_Currency("人民币");rm.setRM_Balance(saveNum);rm.setRM_Rest(us.serchBalance((String)obj));bud.RunMessage(rm);req.getSession().setAttribute("balance", Money);List<RunMessage> list = bud.SelMessage((String)obj);req.getServletContext().setAttribute("RunMessage", list);
//              req.getRequestDispatcher("serch").forward(req, resp);resp.sendRedirect("/Final/UserSerch");System.out.println("用户:"+(String)obj+" 存款"+saveNum+"元");
//          resp.sendRedirect("serch");}else if (result == 4 && session != null) {
//          req.getRequestDispatcher("UserJsp/saveMoney.jsp").forward(req, resp);resp.sendRedirect("/Final/changepage/UserStore.jsp");}else if(saveNum>2000){req.getSession().setAttribute("error3", "存储失败,金额不得超过2000元");
//          req.getRequestDispatcher("UserJsp/saveMoney.jsp").forward(req, resp);
//          resp.sendRedirect("UserJsp/saveMoney.jsp");resp.sendRedirect("/Final/changepage/UserStore.jsp");}else if(saveNum%50!=0) {req.getSession().setAttribute("error3", "只能投入50元或100元的钞票!");
//          req.getRequestDispatcher("UserJsp/saveMoney.jsp").forward(req, resp);
//          resp.sendRedirect("UserJsp/saveMoney.jsp");resp.sendRedirect("/Final/changepage/UserStore.jsp");}else if(saveNum<0) {req.getSession().setAttribute("error3", "存款金额必须大于0!");
//          req.getRequestDispatcher("UserJsp/saveMoney.jsp").forward(req, resp);
//          resp.sendRedirect("UserJsp/saveMoney.jsp");resp.sendRedirect("/Final/changepage/UserStore.jsp");}}
}
package com.atm.servlet;import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import com.atm.dao.BeanUserDao;
import com.atm.dao.impl.BeanUserDaoImpl;
import com.atm.pojo.RunMessage;
import com.atm.service.BeanUserService;
import com.atm.service.impl.BeanUserServiceImpl;@WebServlet("/UserTransfer")
public class UserTransferServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");BeanUserDao budin = new BeanUserDaoImpl();BeanUserDao budout = new BeanUserDaoImpl();RunMessage rm1 = new RunMessage();RunMessage rm2 = new RunMessage();String transferIn = req.getParameter("transferIn");double transferNum = Double.parseDouble(req.getParameter("transferNum"));HttpSession session = req.getSession();Object obj = session.getAttribute("userAccount");double fushu = -transferNum;BeanUserService us = new BeanUserServiceImpl();if(transferNum<10000 && transferNum>0 && us.serchBalance((String)obj)-transferNum>=0) {us.transfer((String)obj, transferIn, transferNum);rm1.setICno((String)obj);SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式rm1.setRM_date(df.format(new Date()));rm1.setRM_Currency("人民币");rm1.setRM_Balance(fushu);rm1.setRM_Rest(us.serchBalance((String)obj));rm2.setICno(transferIn);rm2.setRM_date(df.format(new Date()));rm2.setRM_Currency("人民币");rm2.setRM_Balance(transferNum);rm2.setRM_Rest(us.serchBalance(transferIn));budout.RunMessage(rm1);budin.RunMessage(rm2);List<RunMessage> list = budout.SelMessage((String)obj);List<RunMessage> list1 = budin.SelMessage(transferIn);req.getServletContext().setAttribute("RunMessage", list);req.getServletContext().setAttribute("RunMessage", list1);System.out.println("用户:"+(String)obj+" 转账"+transferNum+"元");resp.getWriter().write("转账成功  3s后自动跳转回主页... ...");resp.setHeader("refresh", "3,url=/Final/UserSerch");
//          req.getRequestDispatcher("serch").forward(req, resp);
//          resp.sendRedirect("/Final/UserSerch");}else if(us.serchBalance((String)obj)-transferNum<0){req.getSession().setAttribute("error4", "抱歉,余额不足!");resp.sendRedirect("/Final/changepage/UserTransfer.jsp");}else if(transferNum > 10000) {req.getSession().setAttribute("error4", "转账金额不得高于10,000元!");resp.sendRedirect("/Final/changepage/UserTransfer.jsp");}else if(transferNum < 0 ) {req.getSession().setAttribute("error4", "请重新输入!");resp.sendRedirect("/Final/changepage/UserTransfer.jsp");}}}

五,项目总结

本系统仿照银行ATM取款机的功能,通过WEB的形式进行开发实现,功能完整,界面简洁大方,并可通过CSS自由切换系统背景界面风格,比较适合作课程设计或期未作业使用。

课程设计:基于JavaWeb实现ATM机系统相关推荐

  1. 基于JavaWeb实现ATM机系统

    项目编号:KS019 项目运行环境说明 开发工具:IDEA / ECLIPSE 数据库:MYSQL5.7 应用服务器:TOMCAT8.5.31 后台开发技术:JSP.Servlet 前端开发技术:ja ...

  2. python设计教务管理系统_python课程设计——基于wx的GUI教务系统——2020.12.25

    一丶python-GUI教务系统 1.实践具体内容及基本要求 1.实验内容 选题1:创建一个单机版有GUI界面的(或Web版)的学生成绩系统,能从文件(或数据库)中读写数据,并具备如下功能. (1) ...

  3. 《计算机组成原理》课程设计-基于汇编语言与模型机的无符号数阶乘的设计与实现

    文章目录 <计算机组成原理>课程设计-无符号数阶乘 代码执行流程 微程序流程图 下载地址 <计算机组成原理>课程设计-无符号数阶乘 代码执行流程 (1)每个程序开始的第一条微指 ...

  4. 单片机课程设计——基于51单片机温湿度检测系统的设计与实现

    本文主要介绍了怎么使用51单片机最小系统板和温湿度传感器制作一个温湿度检测系统. 本次设计主要涉及了温湿度的测量.显示以及实现简单控制.硬件方面有五个模块,即STC89C52单片机主控模块.传感器模块 ...

  5. 课程设计——基于JAVA的仓库管理系统

    要求如下: 系统总需求分析: "仓库管理系统"包括七大功能,一:进仓管理:通过管理员输入货物进仓的时间,系统自动分配进仓编号:二:出仓管理:通过管理员输入货物出仓的时间,实现出仓: ...

  6. 课程设计——基于javaweb的名片管理系统

    目录 一.题目描述(简述) 二.技术栈 三.项目架构 四.项目部分展示 登录页面 ​主页 名片模块 ​ 回收站模块 五.部分代码展示 主页导航栏 上传文件模块及其模态框 sevlet层 一.题目描述( ...

  7. ATM柜员机JAVA课程设计_JAVA课程设计报告银行ATM机系统.doc

    JAVA课程设计报告银行ATM机系统 Java课程设计报告 题 目 银行ATM机系统 所在院系 软件学院 学生姓名 金磊 专 业 R机械+软件 班 级 R机械094 学 号 2011年 7 月 15日 ...

  8. 基于JavaWeb的在线考试系统的设计与实现

    目 录 摘 要 Ⅰ Abstract Ⅱ 1 绪 论 1 1.1 背景 1 1.2 国内外现状 2 1.3 系统开发的目标与意义 2 1.3.1 系统开发目标 2 1.3.2 意义 2 2 开发技术背 ...

  9. 嵌入式课程设计linux,嵌入式系统课程设计--基于U盘的linux操作系统的构建

    嵌入式系统课程设计--基于U盘的linux操作系统的构建 1 课程设计报告课程设计报告 课程名称课程名称 嵌入式系统课程设计嵌入式系统课程设计 设计题目设计题目基于基于 U盘的盘的 linux 操作系 ...

最新文章

  1. 2010年计算机专业怎么样,关于2010年计算机专业考研
  2. 【Java】Java_05 标识符与字符集
  3. Python去线性化趋势
  4. Docker上安装运行Hbase
  5. 常用配置文件格式比较
  6. java 增 删 查 改_如何对java链表进行增、删、查、改操作
  7. 随想录(平台软件和项目代码)
  8. 消息循环,注册窗口,创建窗口【图解】
  9. 解决 git branch -a 无法全部显示远程的分支,只显示master分支
  10. 每天一道机器学习算法面试题目
  11. 终点与起点——诺基亚 N9 初步上手
  12. c语言实验二实验报告,C语言实验报告(二)
  13. 计算机主板的工作原理,计算机主板工作原理介绍
  14. java毕业答辩_Java毕业设计答辩技巧
  15. 力扣143 链表重排
  16. Intel SGX开发者参考书(三)—— 使用Intel SGX SDK工具(二)
  17. 私藏的自媒体图片素材网站,一键下载,免费使用
  18. 【全开源】六合一口红机完整源码
  19. PL3368C、PL3368CE
  20. Mysql 慢日志查询小于1000ms显示0s问题排查

热门文章

  1. 考研二战日记-第31天——计算机网络知识点回顾
  2. 无奇不有 盘点各国自己开发的操作系统
  3. python用户登陆程序 要求用户名和密码_python开发基础作业01:模拟登陆系统
  4. 吾生也有涯,而知也无涯。以有涯随无涯,殆已
  5. 最新手机号验证的正则表达式
  6. [CVPR 2019] 专访Wormpex AI Research副总裁 华刚博士
  7. 【Visual Studio】Visual Studio更换背景图与其他快捷操作集合
  8. Pixso可替代Sketch?这里有全方位详细测评分析
  9. 入阿里的老生常谈:学计算机的专科生出路在哪里?我们还有出路吗?
  10. 让信创办公更可靠|优炫数据库与蓝凌软件完成产品兼容认证