ATM柜员机模拟实现
java课程设计ATM柜员机模拟程序
数据库连接:使用JDBC连接 数据库,进行数据查询
查询语句:编写SQL查询语句, 根据用户输入进行查询
结果展示:将查询结果以列表 或表格形式展示给用户
05
AT M 柜 员 机 的 数 据 库 设计
数据库表结构设计
用户表:存储用户信息,包括用户名、密码、余额等 交易表:记录用户的交易信息,包括交易时间、交易金额、交易类型等 账户表:存储账户信息,包括账户编号、账户类型、账户余额等 银行信息表:存储银行信息,包括银行名称、银行地址、银行电话等 系统日志表:记录系统操作日志,包括操作时间、操作人、操作内容等
网络中断等
性能测试与优化
测试方法:压力测 试、负载测试、稳 定性测试等
测试工具: JMeter、 LoadRunner等
优化目标:提高系 统响应速度、减少 资源消耗、提高系 统稳定性等
优化方法:代码优 化、数据库优化、 缓存优化等
调试过程与问题解决
测试环境搭建:安装Java开发环境,配置 数据库,安装模拟器等
06
AT M 柜 员 机 的 测试与调试
01 添加章节标题
02
AT M 柜 员 机 模 拟 程 序 概述
AT M 柜 员 机 的 基 本 功 能
存 款 : 用 户 可 以 将 现 金 存 入 AT M 柜 员 机 , 系统会自动识别并记录存款金额
转 账 : 用 户 可 以 通 过 AT M 柜 员 机 进 行 转 账操作,系统会自动记录转账信息
异地备份:将 备份数据存储 在异地,防止 自然灾害等意 外情况导致的
数据丢失
访问控制:设 置严格的访问 控制策略,防 止未授权访问
安全审计:定 期进行安全审 计,及时发现 并修复安全漏
C#课程设计-模拟ATM取款机系统
《C#课程设计》结业报告学号:专业:姓名:任课教师:日期:2013年12月28日目录摘要 (3)1 系统分析 (3)1.1背景分析 (3)1.2系统功能 (4)1.3主要问题 (4)1.4开发工具与环境 (4)1.4.1开发工具 (5)1.4.2开发环境 (5)2 系统整体设计 (5)2.1设计思想 (5)2.1.1功能模块划分 (5)2.2数据库设计 (6)3 系统详细设计 (7)3.1系统总设计 (7)3.2 登陆界面设计 (8)3.3查询界面设计 (12)3.4存、取款界面设计 (14)3.5转账界面设计 (16)3.6修改密码界面设计 (17)心得体会 (19)模拟ATM取款机系统摘要本ATM系统的目的就是建立一个客户平台,用户使用此平台进行查询余额、存款、取款、转账、修改密码等业务办理。
相对于柜员操作一样的,不过ATM 系统有的功能有权限设置,一些功能只有银行柜员才能进行的业务办理。
ATM取款系统的针对的用户群是使用此软件系统的用户,用户做为系统的服务群体,可以使用数据库已有的账号与密码,登陆ATM系统。
当用户成功登陆后就可以根据用户的需求进行各项业务的办理,办理完所有的手续后,用户的输入的新资料以及办理的业务处理后的信息都会反馈到数据库并且都会存入到数据库中。
这样用户就完成了办理业务。
1 系统分析1.1背景分析随着信息时代科技的飞速发展,使用ATM取款机、计算机等技术的发展,不仅提高了工作效率,而且大大的提高了其安全性。
对于一些复杂的信息,就能够充分的发挥它们的优越性。
ATM柜员机就是技术发展的产物,相对的一台ATM柜员机与ATM系统是密不可分的。
本系统就是为了更方便人们的生活而设计的。
ATM系统作为一款数据传输的技术,用户信息和资金信息的繁杂,包含很多的数据的管理,以前的都是由一些柜员进行操作,而且手续很多。
对于ATM取款系统数据的统计和核实等都是采用卡号进行核对的,对于用户的信息资料、以及等用人工办理。
自动取款机(ATM)模拟程序(C#控制台应用程序)
自动取款机(ATM)模拟程序一、需求我们需要设计一个具备如下功能的ATM模拟程序。
●开户:用户能够通过ATM来开设帐号,开户需要设置密码。
●登录:用户能够登录到已经开设的帐号上,登录需要验证密码。
●管理帐号:用户登录到帐号上后,能够进行如下的操作。
■存款:将指定的款项存到帐号中。
■取款:从帐号中取出指定的款项。
■查询余额:查询帐号的余额。
■修改密码:修改帐号的密码。
二、分析面向对象编程的第一步是进行面向对象分析。
面向对象分析的目标是建立问题领域的模型,包括如下模型。
●功能模型:即画出每一个功能要求的用例图。
●对象模型:对用例模型进行分析,把系统分解成互相协作的类,通过类图/对象图描述对象、对象的属性、对象间的关系。
●动态模型:描述系统的动态行为,通过序列图来描述对象的交互,以揭示对象间如何写作来完成每个具体的用例,单个对象的状态变化和动态行为可以通过状态图来表达。
1.功能模型根据我们的需求,可以很容易地画出A TM模拟程序的用例图:可以看出,用户可以开户和登录帐号,开户或者登录帐号之后就能管理帐号。
要管理账号,就必须首先登录帐号或者开户。
管理帐号的功能包括存款、取款、查询余额和修改密码。
2.对象模型ATM是银行相连的设备,因此银行是A TM模拟程序的相关对象,所有的操作都是针对帐号的,因此帐号是其中的核心对象。
此外,需要一个程序来启动ATM。
因此,在ATM模拟程序中,我们需要处理四个类,或者说四类对象:启动程序、A TM、银行及帐号。
1)帐号类Account帐号类Account包含所有的帐号信息负责所有的帐号操作。
基本的帐号信息包括:●帐号名name●帐号密码password●帐号余额balance主要的帐号操作包括:●登录Login●存款Deposit●取款Withdraw●查询余额Get_Balance●修改密码ChangePassword2)银行类Bank银行类Bank的本质就是一组帐号的组合,并负责管理帐号。
ATM柜员机模拟程序-课程设计报告
《Java程序设计》课程设计报告题目ATM柜员机模拟程序姓名学号性别所在班级指导教师二〇一二年十二月二十九日目录一前言 (1)1.1 课程设计题目 (1)1.2 课程设计完成地点 (1)1.3 系统概述 (1)1.3.1课程设计介绍 (1)1.3.2 课程设计目的 (1)1.3.3 课程设计内容 (2)1.4 相关技术 (2)二需求分析 (3)2.1 功能需求 (3)2.2 界面需求 (3)2.2.1窗体的设计 (4)2.2.2窗体的主要结构的设计 (4)三功能设计 (5)3.1 系统总体结构 (5)3.2 系统模块 (5)3.3 主要相关类 (6)四详细设计 (8)4.1登陆页面模块设计 (8)4.2选择服务模块设计 (9)4.3取款模块设计 (10)4.4修改密码模块设计 (11)4.5退卡模块设计 (12)4.6异常处理情况说明 (12)4.7系统实现与测试 (12)五总结 (14)5.1遇到的问题及解决办法 (14)5.2心得体会 (14)六感谢 (15)一前言1.1 课程设计题目ATM柜员机模拟程序1.2 课程设计完成地点文理楼A5041.3 系统概述1.3.1课程设计介绍本次JAVA游戏开发课程设计在文理楼机房进行,为期一周。
这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解。
这次课程设计的主要内容是独立用JAVA语言开发一个简单的应用程序。
我所设计的是ATM柜员机。
随着市场经济的繁荣发展,人们物质生活得到了极大的提高,手中剩余资金日益增多,受传统观念的影响,绝大多数人喜欢把暂时不用的资金存入银行,而在需要现金时去银行提现,这就导致了银行业务的急剧增加。
最然银行网点越来越多,银行工作人员效率也随着信息化有明显增长,但依旧不能及时满足广大储户的需求。
而一味的增加营业网点,从理论上讲虽有缓解此问题的功效,但是建立一个网点需要付出昂贵的资金,还要不断注入人力资源。
c语言银行自动存取款机模拟
C语言银行自动存取款机模拟介绍本文档将介绍如何使用C语言编写一个简单的银行自动存取款机模拟程序。
该程序可以模拟银行客户进行存款和取款操作,并实时更新账户余额。
功能此银行自动存取款机模拟程序具有以下功能:•登录功能:用户可以输入账号和密码进行登录。
•存款功能:用户可以输入存款金额进行存款,存款成功后会更新账户余额。
•取款功能:用户可以输入取款金额进行取款,取款成功后会更新账户余额。
•查询余额功能:用户可以查看账户余额。
•退出功能:用户可以选择退出程序。
程序设计数据结构在程序中,需要定义一个结构体来表示银行客户的账户信息。
每个账户包含账号、密码和余额:struct Account {int accountNumber;char password[20];double balance;};登录功能首先,用户需要输入账号和密码进行登录。
可以定义一个函数来实现登录功能:int login(struct Account *accounts, int numAccounts, int accountNumber, char *password) {for (int i = 0; i < numAccounts; i++) {if (accounts[i].accountNumber == accountNumber && strcmp(accounts[i].password, password) == 0) {return i; // 返回账号在数组中的索引}}return -1; // 登录失败,返回-1}存款和取款功能存款和取款功能可以分别定义两个函数来实现。
存款函数会增加账户余额,取款函数会减少账户余额。
```c void deposit(struct Account *account, double amount) { account->balance += amount; }void withdraw(struct Account *account, double amount) { if (account->balance >= amount) { account->balance -= amount; printf(。
ATM(自动柜员机)界面设计
项目目标
知识目标 了解函数的概念,掌握函数定义与说明的方法,掌握函数调用中参数的传递方法,掌握函数的调用方法,熟悉函数的编程与使用方法。能力目标 培养学生使用集成开发环境进行软件开发、调试的综合能力。素质目标 使学生养成良好的编程习惯,具有团结协作的团队精神,具备岗位需要的职业能力。
分析:实现ATM机上的普通功能,当进入柜员机界面后,程序由main主函数、Query查询余额函数、Get Money取款函数、Save Money存款函数和返回Return函数组成。
任务三:ATM查询功能:Query()
case '1':system("cls");puts("================================");puts("| Your Query balance is$%6d |\n",x);puts("| Press any key to return... |");puts("================================");ge务一:ATM密码验证功能:PassWord()任务二:ATM自动柜员机操作主界面任务三:ATM查询功能:Query()任务四:ATM取款功能:Get Money()任务五:ATM存款功能:Save Money()任务六:ATM退出功能:Return()
任务一:ATM密码验证功能:PassWord()
分析:使用Query语句实现查询功能。
任务四:ATM取款功能:Get Money()
case '2':do{system("cls");puts("========================");puts("| Please select GetMoney: |");puts("| 1. $100 |");puts("| 2. $200 |");puts("| 3. other |");puts("| 4. Return |");puts("========================");GetMoney = getch(); }while(GetMoney!='1'&&GetMoney!='2'&&GetMoney!='3' && GetMoney!='4');switch(GetMoney){ case '1':system("cls"); puts("======================"); puts("| Your GetMoney is $100,Thank you! |"); puts("| Press any key to return... |"); puts("======================");
模拟ATM详细设计以及编码实现
ATM 需求分析Task 1 .用户界面一个当地银行打算安装一个新的Automated teller machine (A TM)自动取款机,允许用户进行基本的财政交易。
每一个用户只能有一个账户在银行里。
A TM用户应该能够查看他们的账户余额,取钱以及存钱的信息。
A TM的用户界面应该包含下面几个部分:1)一个给用户显示信息的屏幕2)一个接收用户输入数字的键区3)一个出钱的接口,可以出钱币4)一个存储槽能接收用户的存折界面如下图1.1所示。
图1.1 ATM用户界面Task 2. 用户验证A TM的周期包含通过账号和个人身份数字验证用户的有效性,创建和执行财政交易。
为了验证用户以及执行财政交易,A TM需要和存储在电脑上的银行账户信息数据交互。
对于每一个银行账户,数据库存储一个账号,一个密码,一个账户余额。
当第一次接触A TM的时候,用户应该体验下面几个事件:1)屏幕显示欢迎页面,提示用户输入账号。
2) 通过数字键区用户输入五位的账号。
3) 屏幕提示用户输入个人身份数字(密码)4) 用户在键区输入五位的用户身份号码。
5) 如果用户输入有效的账号和正确的密码,屏幕会显示主菜单。
如果用户输入无效的账号或者是错误的密码,屏幕会显示一个错误信息提示用户,然后ATM 返回第一步,重新进行验证的过程。
Task 3. 业务流程在A TM对用户验证后,将会出现主菜单界面。
主菜单应该包含三项操作:查询余额信息,取款和存款。
应该包含另外一个选项就是用户可以退出系统。
用户可以选择其中一项来进行操作(通过输入1,2,3),或者退出系统(通过输入4)。
A TM主界面如下图1.2所示。
图1.2 ATM主界面1.如果用户输入选项1 将查询余额,屏幕将会显示账户里的余额。
这一步是A TM系统从数据库中查询出来然后显示到系统界面上。
2.如果用户输入选项2 取款,以下几个步骤将会描述发生的事件:1)屏幕将会显示一个菜单,菜单包括标准的取款数目,以及取消交易的选项。
ATM柜员机模拟
使用图形用户界面。
当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:(1)查询余额:初始余额为10000元;(2)ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支;(3)ATM存款:不能出现负存款;(4)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,(这一功能未实现)只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
源程序:import java.io.File;import java.io.FileWriter;import java.io.PrintWriter;import com.sun.java.util.*;import java.io.*;/*该类为实现客户信息及部分功能*/public class Account {private String code = null; // 信用卡号private String name = null; // 客户姓名private String password=null; // 客户密码private double money = 0.0; // 卡里金额/********************/public Account(){}public Account(String cod,String nam,String pas,double mon) { code=cod;name=nam;password=pas;money=mon;}public String get_Code() {// 取得卡号return code;}public String get_Name() {// 取得名字return name;}public String get_Password() {// 取得密码return password;}public double get_Money() {// 取得余额return money;}/* 得到剩余的钱的数目 */protected void set_Balance(double mon) { money -= mon;String Money=String.valueOf(money);try{File f2=new File("F:\\余额.txt");FileWriter fos=new FileWriter(f2);PrintWriter br=new PrintWriter(fos);br.println(Money);fos.close();}catch(Exception e1){}}protected void add_Balance(double mon) { money += mon;String Money=String.valueOf(money);try{File f2=new File("F:\\余额.txt");FileWriter fos=new FileWriter(f2);PrintWriter br=new PrintWriter(fos);br.println(Money);fos.close();}catch(Exception e1){}}/* 重置秘密的方法 */public void setPassword(String pwd) { password = pwd;//return password;}}/*主函数*/class ATM {public static void main(String[] args) { new WindowBox("登录页面");}}/*修改密码功能*/import javax.swing.*;import java.awt.*;import javax.swing.border.*;import java.io.*;import java.awt.event.*;class ChangePassword extends Frame implements ActionListener{ Panel panel1 = new Panel();Panel panel2 = new Panel();Panel panel3 = new Panel();Panel panel = new Panel();TextField tf4,tf5,tf6;Button button;Account act;ChangePassword(String s,Account act){super(s);this.act=act;tf4 = new TextField(6);tf5 = new TextField(6);tf6 = new TextField(6);button = new Button("确定");button.addActionListener(this);/*建立新密码*/panel1.add(new Label("请输入你的旧密码:"));panel1.add(tf4);panel2.add(new Label("请输入你的新密码:"));panel2.add(tf5);panel3.add(new Label("请再次输入你的新密码"));panel3.add(tf6);panel.add(button);this.add(panel1);this.add(panel2);this.add(panel3);this.add(panel);setLayout(new GridLayout(4,1));setBounds(200,200,250,250);this.setVisible(true);/*窗口事件*/this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}/*判断事件源,看条件是否成立再修改密码*/public void actionPerformed(ActionEvent e) {if(e.getActionCommand().equals("确定")){String pwd2,pwd3,pwd4;pwd2 = tf4.getText();pwd3 =tf5.getText();pwd4 = tf6.getText();char p[]=pwd3.toCharArray();int n=p.length;System.out.println(n);boolean b = false;for(int i=0;i<p.length-1;i++){if(p[i]==p[i+1])b=true;}if(pwd2.equals(act.get_Password())){//判断旧密码是否正确if(pwd3.equals(pwd4)){//判断两次输入的新密码是否匹配if(n<6){dispose();JOptionPane.showMessageDialog(null,"新密码长度不能小于6位,请重新输入!");ChangePassword cp=new ChangePassword("修改密码",act);}else if(b){dispose();JOptionPane.showMessageDialog(null,"新密码各个位数完全相同,请重新输入!");ChangePassword cp=new ChangePassword("修改密码",act);}else{try{File f=new File("F:\\密码.txt");FileWriter fos=new FileWriter(f);fos.write(tf6.getText());fos.close();}catch(Exception ee){}dispose();JOptionPane.showMessageDialog(null,"密码已修改,请重新登录!");WindowBox lo=new WindowBox("登录界面");}}else{dispose();JOptionPane.showMessageDialog(null, "两次输入新密码不一致!");ChangePassword cp=new ChangePassword("修改密码",act);}}else{dispose();javax.swing.JOptionPane.showMessageDialog(null, "旧密码不正确!");ChangePassword cp=new ChangePassword("修改密码",act);}}}/*取款功能*/import javax.swing.*;import java.awt.*;import javax.swing.border.*;import java.awt.event.*;class GetBalance extends Frame implements ActionListener {Box baseBox, box1, box2;Button button;TextField tf;Account act;Frame f6;GetBalance(String s, Account act) {// 构造函数super(s);this.act = act;button = new Button("确定");Panel panel = new Panel();Panel panel1 = new Panel();tf = new TextField(6);this.setLayout(new GridLayout(2, 1));panel1.add(new Label("请输入你想取钱的数目"));panel1.add(tf);panel.add(button);this.add(panel1);this.add(panel);button.addActionListener(this);this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}});setBounds(200, 200, 150, 150);this.setVisible(true);}public void actionPerformed(ActionEvent e) {// System.out.println(e.getActionCommand());double money;money = Double.parseDouble(tf.getText().trim());if (e.getSource() == button) {if (money < act.get_Money()){if ((money % 100 != 0) || (money >= 5000)){dispose();JOptionPane.showMessageDialog(null,"取你妹的钱");JOptionPane.showMessageDialog(null,"取钱数不为100的倍数或大于5000!");Selection s = new Selection("选择服务", act);}else{dispose();javax.swing.JOptionPane.showMessageDialog(null, "取款成功!");Selection s = new Selection("选择服务", act);act.set_Balance(money);//}}else{dispose();JOptionPane.showMessageDialog(null, "余额不足!");Selection s = new Selection("选择服务", act);}}}}import javax.swing.*;import java.awt.*;import javax.swing.border.*;import java.awt.event.*;class Query extends Frame implements ActionListener{//Account act;Button button;Account act;Query(String s,Account act){//构造函数super(s);this.act = act;button=new Button("确定");//TextField tf = new TextField(6);Panel panel1 = new Panel();Panel panel = new Panel();panel1.add(new Label("你的余额为:" + act.get_Money()));//查询余额的方法//panel1.add(tf);button.addActionListener(this);panel.add(button);this.add(panel);this.add(panel1);this.setLayout(new GridLayout(2,1));this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});setBounds(200,200,150,150);setVisible(true);}public void actionPerformed(ActionEvent e){if(e.getSource()==button){dispose();Selection s = new Selection("选择服务",act);//返回选择服务窗口}}}import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Savemoney extends Frame implements ActionListener{ Box baseBox, box1,box2;Button button;TextField tf;Account act;Savemoney(String s,Account act){//构造函数super(s);this.act=act;button=new Button("确定");Panel panel = new Panel();Panel panel1 = new Panel();tf = new TextField(6);this.setLayout(new GridLayout(2,1));panel1.add(new Label("请输入你想存钱的数目"));panel1.add(tf);panel.add(button);this.add(panel1);this.add(panel);button.addActionListener(this);this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});setBounds(200,200,150,150);this.setVisible(true);}public void actionPerformed(ActionEvent e) {double money;money = Double.parseDouble(tf.getText().trim());if(money<0){if(e.getSource()==button){javax.swing.JOptionPane.showMessageDialog(null,"存款不能为负,请重新输入!");}}else{if(e.getSource()==button)act.add_Balance(money);//重置余额this.setVisible(false);javax.swing.JOptionPane.showMessageDialog(null,"存款成功!");Selection s = new Selection("选择服务",act);}}}/*选择服务*/import java.awt.*;import java.awt.event.*;class Selection extends Frame implements ActionListener{Button button1,button2,button3,button4,button5;Panel p1 = new Panel();Panel p2 = new Panel();Panel p3 = new Panel();Panel p4 = new Panel();Panel p5 = new Panel();Panel p = new Panel();Account act;public Selection(){}Selection(String s,Account act){super(s);this.act=act;this.setLayout(null);this.setLayout(new GridLayout(6,1));p.add(new Label("请选择您需要的服务"));this.add(p);/*各种服务功能*/button1 = new Button("存款");p1.add(button1);this.add(p1);button2 = new Button("取款");p2.add(button2);this.add(p2);button3 = new Button("查询余额");p3.add(button3);this.add(p3);button4 = new Button("退出");p4.add(button4);this.add(p4);button5 = new Button("修改密码");p5.add(button5);this.add(p5);this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){System.exit(0);}});button1.addActionListener(this);button2.addActionListener(this);button3.addActionListener(this);button4.addActionListener(this);button5.addActionListener(this);setBounds(150,150,200,200);setVisible(true);validate();}public void actionPerformed(ActionEvent e){if(e.getSource()==button2){//取款dispose();GetBalance gb = new GetBalance("取款",act);}if(e.getSource()==button3){//查询余额Query q =new Query("查询余额",act);dispose();}else if(e.getSource()==button4){//退出System.exit(0);dispose();}else if(e.getSource()==button5){//修改密码ChangePassword cp = new ChangePassword("修改密码",act);dispose();}if(e.getSource()==button1){dispose();Savemoney sm=new Savemoney("存款",act);}}}import java.awt.Button;import java.awt.FlowLayout;import java.awt.Frame;import bel;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.*;import javax.swing.Box;/*登陆页面首窗口*/class WindowBox extends Frame implements ActionListener{Box baseBox,box1,box2;TextField tf1,tf2;Button button1;Button button2;WindowBox(String s){//构造方法super(s);tf1 = new TextField(6);tf2 = new TextField(6);box1= Box.createVerticalBox();box1.add(new Label("请输入你的卡号")); //输入卡号box1.add(Box.createVerticalStrut(8));box1.add(new Label("请输入你的密码"));//输入密码box2=Box.createVerticalBox();box2.add(tf1);//box2.add(new TextField(16));box2.add(Box.createVerticalStrut(8));box2.add(tf2);//box2.add(new TextField(16));baseBox=Box.createHorizontalBox();baseBox.add(box1);baseBox.add(Box.createHorizontalStrut(10));baseBox.add(box2);add(baseBox);button1= new Button("确定");//加入按钮button1.addActionListener(this);add(button1);button2 = new Button("退卡");//退卡按钮button2.addActionListener(this);add(button2);setLayout(new FlowLayout());/*监听器*/this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});setBounds(120,125,200,175);setVisible(true);}public void actionPerformed(ActionEvent e){Account act;String card;File f=new File("F:\\密码.txt");File f2=new File("F:/余额.txt");String pwd = null;String money=null;if(!f.exists()){try{FileWriter fos=new FileWriter(f);PrintWriter br=new PrintWriter(fos);br.println("123456");fos.close();}catch(Exception e1){}pwd="123456";//double money=10000;}else{try{FileReader fis=new FileReader(f);BufferedReader br=new BufferedReader(fis);while(br.ready()){pwd=br.readLine();}fis.close();}catch(Exception e1){}}if(!f2.exists()){try{FileWriter fos=new FileWriter(f2);PrintWriter br=new PrintWriter(fos);br.println("10000");fos.close();}catch(Exception e1){}money="10000";//double money=10000;}else{try{FileReader fis=new FileReader(f2);BufferedReader br=new BufferedReader(fis);while(br.ready()){money=br.readLine();}fis.close();}catch(Exception e1){}}double Money=Double.parseDouble(money);act=new Account("123456","Devil",pwd,Money);//初始化/*选择各种服务*/if(e.getSource() == button1){String number1,number2;//输入的两个卡号和密码的变量number1=tf1.getText();number2=tf2.getText();/*判断两次输入的卡号和密码是否正确*/if((act.get_Code().equals(number1))&&(act.get_Password().equals(number2))){dispose();Selection s = new Selection("选择服务",act);}else{dispose();javax.swing.JOptionPane.showMessageDialog(null,"密码或卡号错误,请重新输入!");WindowBox wb = new WindowBox("登录界面");//报输入密码或卡号不正确}} if(e.getSource()==button2){System.exit(0);dispose();//退出}}}。
java课程设计-ATM柜员机模拟程序
感谢您的耐心观看
汇报人:
添加标题
操作选择:用户选择 要进行的操作
添加标题
操作执行:执行用户 选择的操作,如存款、 取款、转账等
添加标题
操作结果:显示操作 结果,如存款成功、 取款成功、转账成功 等
添加标题
用户退出:用户选择 退出系统,结束程序
程序运行环境
操作系统: Windows、 Linux、Mac
OS等
开发环境: Java
登录按钮:点击登录,验证用户名和密 码
界面美化:使用美观的图标和颜色,提 高用户体验
账户管理模块实现
账户创建: 用户输入 账户信息, 系统自动 生成账户
账户查询: 用户输入 账户号, 系统返回 账户信息
账户修改: 用户输入 账户号和 修改信息, 系统更新 账户信息
账户删除: 用户输入 账户号, 系统删除 账户信息
系统从用户账户 中扣除存款金额
系统将存款金额 存入用户账户
查询余额模块实现
系统从数据库中获取用户银 行卡余额信息
系统将余额信息显示在界面 上
用户输入银行卡号,系统验 证银行卡号是否正确
用户可以查看自己的账户余 额
ATM柜员机模拟程序测 试
测试用例设计
不足:在程序实现过程中遇到了一些困难,如算法优化、界面设计等
展望:希望在未来的学习中,能够更深入地了解Java编程,提高编程能力,实现 更复杂的程序设计
对未来改进和发展的建议
增加用户界面友 好性,提高用户 体验
优化算法,提高 程序运行效率
增加安全机制, 确保用户数据安 全
拓展功能,如支 持在线支付、转 账等
转账:用户可以将资金从一个账户转移到另一个账户。
添加项标题
atm自助取款机模拟流程目标
atm自助取款机模拟流程目标ATM自助取款机模拟流程目标一、介绍ATM自助取款机(Automated Teller Machine)是一种方便快捷的自助设备,可以让用户在不需要人工干预的情况下完成取款操作。
本文将以ATM自助取款机模拟流程目标为标题,介绍ATM自助取款机的操作流程和注意事项。
二、流程步骤1. 插卡:用户首先需要将银行卡插入ATM自助取款机的卡槽中。
卡槽一般位于ATM机的正面或侧面,用户插入卡片时应确保卡片正面朝上,且插入深度适当。
2. 输入密码:在屏幕上出现提示后,用户需要输入自己的密码。
密码输入时需要注意遮挡,以防止密码泄露。
密码输入完成后,用户可以按下确认键进行下一步操作。
3. 选择取款金额:ATM自助取款机会显示用户的账户余额,并要求用户选择取款金额。
用户可以根据自己的需求选择合适的金额,一般可以通过按键或触摸屏完成选择。
4. 操作确认:在选择取款金额后,ATM自助取款机会要求用户确认取款操作。
用户需要仔细核对取款金额,确保无误后按下确认键。
5. 等待处理:ATM自助取款机会开始处理用户的取款请求,此时用户需要耐心等待。
在处理的过程中,ATM机会显示相应的提示信息,如“正在处理,请稍候”等。
6. 取款完成:当ATM自助取款机处理完用户的取款请求后,会弹出相应的纸币。
用户可以将纸币取出,并将其放入钱包或其他安全的地方。
7. 办理其他业务:在完成取款操作后,用户可以选择办理其他业务,如查询余额、转账等。
用户可以按照ATM机的提示,选择相应的功能进行操作。
8. 取卡结束:当用户办理完所有业务后,可以按下结束按钮或者按照ATM机的提示将银行卡取出。
取卡结束后,用户可以离开ATM 自助取款机。
三、注意事项1. 保护密码:用户在输入密码时,应注意遮挡,防止密码泄露。
同时,不要使用过于简单的密码,以免被他人猜测。
2. 核对金额:用户在选择取款金额和确认取款操作时,应仔细核对金额,确保无误。
案例十五 模拟自动取款机(ATM)
目录
目退录出
➢ 案例提高
➢ 在全面理解的根底上,读者可以对本 案例作一些改动与提高。
➢ 读者可以继续添加一些功能,例如代 缴 费、水电费、煤气费等功能,使得 该自动取款机变成一个功能完善的自 动柜员机。
目录
目退录出
目录
目退录出
目录
目退录出
目录
目退录出
2.主程序设计
两个类ATM类及BankCard类可以完成几 乎全部的功能,自动取款机主程序流 程如下图。
目录
目退录出
主程序流程图
目录
目退录出
➢ 在主函数main()中,先建立了一个BankCard 类的对象模拟银行卡,然后建立一个ATM 类的对象模拟自动取款机,最后调用ATM 类的成员函数welcome()启动登录界面。取 款、查余额等工作全部交由两个类来完成。
+BankCard(in Name[] : char, in Num[] : char, in Money : float, in Password[] : char) #* getname() : char #* getnum() : char #* getpasswd() : char #getmoney() : float #setpasswd(in pwd[] : char) #setmoney(in m : float)
目录
目退录出
目录
目退录出
目录
目退录出
目录
目退录出
ATM类图
ATM
-tim es : int -totalm oney : float -leftm oney : float -oncem oney : float -& B ankC ardA tA T M : B ankC ard
C语言ATM程序模拟
C语言A T M程序模拟As a person, we must have independent thoughts and personality.一、课题要求1、当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统。
2、查询余额:初始余额为10000元。
3、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
4、ATM存款:不能出现负存款。
5、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
二、代码#include ""#include ""#include ""#include ""#include ""void gotoxy(int x,int y); 改密码 *\n");printf("* 2.查询余额 *\n");printf("* 3.取款 *\n");printf("* 4.实时存款 *\n");printf("* 5.退出 *\n");printf("********************************\n");switch(getch()){case '1': mima(); break;case '2': yu_e(); break;case '3': qukuan(); break;case '4': cunkuan(); break;case '5': exit(); break;default:printf("error\n");}}回 2.退出 *\n");printf("* *\n"); printf("* *\n"); printf("********************************\n"); switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}. *\n");printf("* *\n"); printf("* *\n");printf("********************************\n"); delay();delay();system("cls");printf("********************************\n"); printf("* *\n"); printf("* 您的余额为 *\n"); printf("* *\n"); printf(" ");printf("%d",YU_E);printf("\n* *\n"); printf("* 1.返回 2.退出 *\n"); printf("********************************\n"); switch(getch()){case '1': caozuo(); break;case '2': exit(); break;}}它 *\n");printf("* *\n"); printf("* 7.返回 8.退出 *\n"); printf("********************************\n");switch(getch()){case '1': panduan(100); break;case '2': panduan(200); break;case '3': panduan(500); break;case '4': panduan(800); break;case '5': panduan(1000); break;case '6':system("cls");printf("********************************\n");printf("* *\n");printf("* 请输入您要取款的金额 *\n");printf("* *\n");printf("* *\n");printf("* *\n");printf("* *\n");printf("********************************\n");gotoxy(14,4);scanf("%d",&temp);panduan(temp); break;case '7':caozuo(); break;case '8':exit(); break;}}回 2.退出 *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}beishu=z%100;if(beishu!=0){system("cls");delay();printf("********************************\n");printf("* *\n");printf("* 本ATM机只支持 100 的人民币 *\n");printf("* 请重新操作 *\n");printf("* *\n");printf("* 1.返回 2.退出 *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}if(z==5000||z>5000){system("cls");printf("********************************\n");printf("* *\n");printf("* 每次取款不能超过 5000 元 *\n");printf("* 请重新操作 *\n");printf("* *\n");printf("* 1.返回 2.退出 *\n");printf("* *\n");printf("********************************\n");switch(getch()){case '1': qukuan();case '2': exit();}}YU_E=YU_E-z;success();}. *\n");printf("* *\n"); printf("* *\n"); printf("********************************\n"); delay();delay();system("cls");printf("********************************\n"); printf("* *\n"); printf("* 操作已成功 *\n"); printf("* *\n"); printf("* 1.返回 2.退出 *\n"); printf("* *\n"); printf("* *\n"); printf("********************************\n"); switch(getch()){case '1':caozuo(); break;case '2':exit(); break;}}. *\n");printf("* *\n");printf("* *\n");printf("********************************\n");delay();delay();enter_ATM();}//================================================================/ ///============== 简单转移函数=============//void zhuangyi(){mima();}//========================================//三、部分效果截图。
银行ATM自动取款机模拟程序
四、系统设计
• 模块结构图:
模拟ATM取款机
ATM功能类 登陆界面 核对密码 取款 转账 查询信息 退出系统 锁卡
consumer用户类 获取姓名 获取卡号 获取密码 获取余额 核对密码
五、详细设计
否
登陆界面
输入卡号和密码 功能界面 1.修改密码 2.取款 3.转账 4.查询余额 5.退出系统
卡号密码错误 超过3次?
六、编码与调试
consumer::consumer(char Name[],char Kahao[], float Money,char Password[]) //构造函数,建立账户 { strcpy(name,Name); strcpy(kahao,Kahao); money=Money; strcpy(passwd,Password); } float consumer::get_money() //取得余额 { return money; } char*consumer::get_name() //取得姓名 { return name; } char*consumer::get_kahao() //取得卡号 { return kahao; }
五、详细设计
4.3 类的设计
1)、定义了一个ATM取款机类,类中包括以下几部分: 公有段: 依次为登陆界面,核对密码,修改密码,取款,转账,查询信息,退 出系统,功能界面,锁机。 私有段: 记录密码输入次数。 友元函数: 取款,转账,查询信息,账号,密码。 2、)定义了一个consumer 类,类中包括以下几部分: 公有继承了consumer类 私有段: 卡号,用户姓名,用户密码,存款钱数 保护段: 取得姓名,取得卡号,取得密码,取得余额,设置密码,取钱
六、编码与调试
ATM柜员机模拟系统_代码
Win.javaimport java.awt.*;import javax.swing.*;import java.awt.event.*;import java.sql.*;public class Win extends JFrame implements ActionListener { JTextField text[]=new JTextField[6];JTextArea show=new JTextArea(9,30);JTable table;//标签JButton insert,update,select,delete,C,Q;Win() {setLayout(new FlowLayout());for(int i=0;i<5;i++) {text[i]=new JTextField(10);}add(new JLabel("卡号:"));add(text[0]);add(new JLabel(":"));add(text[1]);add(new JLabel("密码:"));add(text[2]);add(new JLabel("余额:"));add(text[3]);add(new JLabel("序号:"));add(text[4]);C=new JButton("存款");C.addActionListener(this);add(C);Q=new JButton("取款");Q.addActionListener(this);add(Q);update=new JButton("修改密码");update.addActionListener(this);add(update);insert=new JButton("添加新用户");insert.addActionListener(this);add(insert);select=new JButton("查询用户信息");select.addActionListener(this);add(select);delete=new JButton("删除用户信息");delete.addActionListener(this);add(delete);add(new JScrollPane(show));add(new JLabel("提示:1.每次取款金额为100的倍数,总额不能超过5000元,支取金额不允许透支"));add(new JLabel("2.存款金额不能为负存款"));add(new JLabel("3.新密码长度不小于6位,不允许出现6位完全相同的情况"));setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void actionPerformed(ActionEvent e) {Operation modify=new Operation();modify.setDatasourceName("XX");if(e.getSource()==insert){modify.setSQL("INSERT INTO XX VALUES('"+text[4].getText()+"','"+text[0].getText()+"','"+text[1].getText()+"','"+tex t[2].getText()+"','"+text[3].getText()+"')");String backMess=modify.modifyRecord();show.append("添加新用户"+backMess);}else if(e.getSource()==C){Connection con=null;Statement sql;ResultSet rs = null;try{double n=2000;con=DriverManager.getConnection("jdbc:odbc:XX","","");con.setAutoCommit(false);sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM XX WHERE 卡号='123456'");//查询rs.next();double money=rs.getDouble(5);System.out.println("操作前用户的余额:"+money);double money1=money+n; //存款sql.executeUpdate("UPDATE XX SET 余额=+'"+money1+"' WHERE 卡号='123456'"); //存款后更新余额mit();con.setAutoCommit(true); //提交事务结果到数据库sql=con.createStatement(); //创建数据库操作对象}catch(SQLException e1){ try{ con.rollback(); } //如果操作失败则结束事务catch(SQLException exp){}System.out.println(""+e);}}else if(e.getSource()==Q){ Connection con=null;Statement sql;ResultSet rs = null;try{double n=5000;con=DriverManager.getConnection("jdbc:odbc:XX","","");con.setAutoCommit(false);sql=con.createStatement();rs=sql.executeQuery("SELECT * FROM XX WHERE 卡号='123456'");rs.next();double money=rs.getDouble(5);System.out.println("操作前用户的余额:"+money);double money2=money-n; //取款sql.executeUpdate("UPDATE XX SET 余额=+'"+money2+"' WHERE 卡号='123456'"); //取款后更新余额mit();con.setAutoCommit(true);sql=con.createStatement();}catch(SQLException e1){ try{ con.rollback(); }catch(SQLException exp){}System.out.println(""+e);}}else if(e.getSource()==update){modify.setSQL("UPDATE XX SET XX.密码 =+'"+text[2].getText()+"' WHERE (((XX.卡号)=+'"+text[0].getText()+"'));");String backMess=modify.modifyRecord();show.append("修改密码"+backMess);}else if(e.getSource()==delete){modify.setSQL("DELETE * FROM XX WHERE (((XX.卡号)=+'"+text[0].getText()+"'));");String backMess=modify.modifyRecord();show.append("删除用户信息"+backMess);}else if(e.getSource()==select){Query query =new Query();query.setDatasoureName("XX");query.setTableName("XX");Object a[][]=query.getRecord();String b[]={"序号","卡号","","密码","余额"};table=new JTable(a,b);JFrame frame=new JFrame();frame.add(new JScrollPane(table));frame.setVisible(true);frame.setBounds(400,400,600,200);}}public void setBounds(int i, int j, int k, int l) {}}Operation.javaimport java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;public class Operation{String datasourceName=""; //数据源名称String SQL,message=""; //表名public Operation() //增删改的主代码{try{ Class.forName(".microsoft.sqlserver.jdbc.SQLServerDriver"); } //操作数据源catch(Exception e){}}public void setSQL(String SQL) //建立一个新的数据源{ this.SQL=SQL; }public void setDatasourceName(String s){ datasourceName=s.trim(); }public String modifyRecord(){Connection con=null;Statement sql=null;try{ String uri="jdbc:odbc:"+datasourceName;String id="";String password="";con=DriverManager.getConnection(uri,id,password);sql=con.createStatement();sql.execute(SQL);message="操作成功";con.close();}catch(SQLException e){ message=e.toString(); }return message;} /*数据源读取初始化*/public void setTableName(String string) {} //表名public Object[][] getRecord() //存放操作结果数组{ return null; }}Query.javaimport java.sql.*;import .httpserver.Authenticator.Result;public class Query{ String datasourceName=""; //数据源名String tableName=""; //表名Object a[][];public Query(){try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");} //桥接器 catch(ClassNotFoundException e){System.out.print(e);}}public void setDatasoureName(String s){ datasourceName=s.trim(); }public void setTableName(String s){ tableName=s.trim(); }public Object[][] getRecord() //获取表中记录{Connection con;PreparedStatement sql; //预处理命令ResultSet rs; //结果集try{String uri="jdbc:odbc:"+datasourceName;String number="";String password="";con=DriverManager.getConnection(uri,number,password); //初始化连接DatabaseMetaData metadata=con.getMetaData();//连接对象调用getMetaData()方法返回一个DatabaseMetaData对象ResultSet rs1=metadata.getColumns(null,null,tableName,null);//将表中的字段信息以行列的形式存储在Result中int 字段个数=0;while(rs1.next()){ 字段个数++;}int n=getAmount();a=new Object[n][字段个数];sql=con.prepareStatement("SELECT * FROM "+tableName); //查询表名rs=sql.executeQuery();int m=0;while(rs.next()) //输出结果集中的数据{ for(int k=1;k<=字段个数;k++){ a[m][k-1]=rs.getString(k); }m++;}con.close();}catch(SQLException e){ System.out.println("请输入正确的表名"+e); }return a;}public int getAmount(){Connection con;Statement sql;ResultSet rs;try{String uri="jdbc:odbc:"+datasourceName;String id="";String password="";con=DriverManager.getConnection(uri,id,password);sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_RE AD_ONLY); //以只读方式滚动查询rs=sql.executeQuery("SELECT * FROM "+tableName); //获取所在行st();int rows=rs.getRow(); //当前游标所指行号return rows;}catch(SQLException exp){System.out.println(""+exp);return 0;}}public void inputQueryResult() {}}ATM.javapublic class ATM {public static void main(String args[]){ Win win=new Win();win.setBounds(400,300,400,300); //设置组件在容器中的位置和本身的大小win.setTitle("ATM自动柜员机");}}。
C++ 课程设计 ATM柜员机模拟程序
2 概要设计......................................................................................................................................2
2.1 程序主要功能......................................................................................................................2 2.2 程序流程图..........................................................................................................................2
利电出版社,2004
4、课程设计工作进度计划
序号 时间(天)
内容安排
备注
1 2 3 4 总计
1 2 1 1 5(天)
分析设计准备 编程调试阶段 编写课程设计报告 考核
周一 周二至周三
周四 周五
指导教师(签字)
日期
年月日
教研室意见:
模拟ATM系统
二十世纪末,随着金融服务的迅速发展,银行提款机已经发展成了各大银行金融服务战略中的重要一环,同时,银行提款机系统也经历了持续的更新换代,为广大用户提供了更加便捷和人性化的服务。
模拟ATM系统就是对提款机操作系统在个人PC上及主流操作平台上的编程实现,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发制作两个发面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用,界面友好等特点。
本系统采用Visual Studio 2005,实现了用户身份的认证、取款、交易明细的查询等功能。
分析并解决实现中遇到的若干问题,例如数据库资料如何实现更新,文本框的文字输出需要用到什么技术,如何实现中英文两种界面,用户服务功能如何实现等等。
.NET Framework是Microsoft退出的一套类库,被称为.NET框架。
此框架最大的优点是支持C#语言,这是目前最流行的开发语言,也是应用最广泛的开发语言。
C#是一种开发语言,基本语法与C++类似。
.NET是一种开发框架,其提供一些类库供各种应用程序调用。
而应用程序使用的语言可以使C#,也可以是VB。
通过.NET还可以轻松地转换VB程序与C#程序,这样一个项目中,可以有一部分使用VB开发,另一部分使用C#开发,最后通过.NET框架整合即可。
C#被称为是C++语言与VB语言的完美结合,它既具备C++语言的强大功能,又具备VB 语言的快速开发特性。
与其他开发语言相比,C#具备如下的优势:1.学习过简单的C语法的初学者,可以轻松入门。
2.拥有.NET底层框架的支持,可以调用类库,轻松完成常见模块的制作,如登录模块。
3.想VB语言一样支持快速应用程序开发(RAD),而且它能开发出比VB更加健壮的代码。
4.不仅仅支持Windows桌面应用程序的开发,还支持网站等Web应用程序的开发。
5.支持纯文本编写格式,可以不用安装C#的开发工具,通过记事本就可以完成编写功能,当然这需要非常深厚的C#类库功底。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ATM柜员机模拟实现摘要计算机科学技术的发展不仅极大地促进了整个科学的发展,而且明显加快了经济信息化和社会信息化的进程。
金融业ATM取款机的诞生不仅是世界金融行业中的一大进步,更是其发展历史性的转折点。
目前国内的银行大力发展银行自动取款机(ATM),以提高工作效率和降低成本。
全文共分为绪论、课题要求及分析、系统需求分析、系统设计、系统实现与测试、课程设计总结六个部分,利用JA V A语言强大功能,并具有面向对象开发等的特点,联系实际ATM应用界面,以win8操作系统后台开发出了一套自动取款机系统。
在此论文中ATM柜员机模拟系统主要是由各个Windows窗口组成,它具有登录页面、选择服务、存取款、查询余额、修改密码和退卡等功能,它的各种按钮的事件和功能能够实现模拟ATM柜员机的基本要求。
完成整个程序设计之后,经过测试表明该ATM柜员机模拟系统运行稳定且各项功能都能正确运行,达到预期的要求。
关键词:ATM柜员机;存取款;查询;JA V A语言SIMULATION OF ATM TELLER MACHINES TOACHIEVEABSTRACTThe development of computer science and technology not only greatly enhance the development of science, but also significantly speeds up the information of the economy and society. The birth of the financial industry ATM machine is not only a great progress of world financial industry, is a turning point in the development history of. At present the domestic bank developing bank automatic teller machine(ATM), and to improve the work efficiency and reduce cost.The full text is divided into introduction, the requirements of the project and analysis, system requirements analysis, system design, system implementation and testing, curriculum design is summarized in six parts, the use of JA V A language and powerful function, and has the characteristic of object-oriented development, contact the actual ATM application interface, based on win8operating system backstage developed an automatic teller machine system. In this paper the ATM teller machine simulation system is mainly composed of various Windows window, it has the login page, select a service, withdrawals,balance inquiries, modify passwords and other functions button back card, itsevents and functions can simulate the ATM machine to the basic requirements.After completing the design of the whole procedure, after testing showed that the ATM teller machine simulation system is stable in operation and the variousfunctions are correct operation, to achieve the desired requirements.Key words:ATM machine; Deposit; Query; JA V A language目录1 绪论 (1)1.1 课题背景 (1)1.2 课题目的 (1)2 课题要求及分析 (2)2.1 题目及要求 (2)2.2 操作环境 (2)2.3 开发工具 (3)3 系统需求分析 (3)3.1 功能需求分析 (3)3.2 其他需求分析 (3)4 系统设计 (4)4.1 总体设计 (4)4.2 界面设计 (5)4.3 功能模块设计 (6)4.3.1 登陆页面模块设计 (6)4.3.2 选择服务模块设计 (7)4.3.3 取款模块设计 (9)4.3.4 修改密码模块设计 (10)4.3.5 退卡模块设计 (11)4.4 异常处理情况说明 (11)5 系统实现与测试 (12)6 用户使用说明 (17)7 课程设计总结 (19)参考文献 (20)附录 (21)1 绪论1.1 课题背景ATM自动取款机是由计算机控制的持卡人自我服务型的金融专用设备。
随着我国金融电子化建设的深入发展和银行客户对金融服务质量要求的提高,自动柜员(ATM机)在金融行业的应用越来越广泛,自动柜员机(ATM机)在拉近客户与银行之间的距离,扩展营业网点,改善用卡环境,提供全天候、全方位的金融服务,降低经营成本,提高金融行业的服务质量和综合竞争实力等方面正发挥着不可替代的作用。
同时,随着国内银行机构的大量增加,我国的银行业面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。
Java是一个广泛使用的编程语言,是一种新的计算概念。
1995年Java的诞生让全世界的程序员为之疯狂。
与以往的任何一种语言相比Java都有着无可比拟的优势。
首先,Java是一种简单、面向对象、分布式、解释、健壮、安全、结构中立、可移植、高效能、动态的语言。
目前,Java已得到了全世界主要计算机软硬件厂商的支持,在计算机领域中得到了广泛应用。
本系统选题为基于Java程序设计的ATM柜员机模拟系统,是模拟银行存取款的管理。
设计的指导思想是一切为使用者着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的管理系统要有要有良好的容错性,在出现误操作时能尽量及时地给出警告,以便用户及时地改正。
鉴于本系统的特殊性,还需要本程序有良好的保密性。
1.2 课题目的对用户来说,自动柜员机(ATM机)的诞生,使原来必须到银行柜台办理的账务查询、转账等业务,可以在大街小巷的固定取款机前进行办理。
对银行来说,自动柜员机(ATM机)的开通,将大大提高工作效率,在方便用户的同时可以节省大量的柜台服务为人员,从而降低生产经营成本。
同时,学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。
通过课程设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。
2 课题要求与分析2.1 题目及要求课题描述:基于Java程序设计的ATM柜员机模拟系统,ATM柜员机模拟系统要求是由各个Windows窗口组成,它由登录页面、选择服务、取款、查询余额、修改密码和退卡等功能。
它的各种按钮的事件和功能能够实现模拟ATM柜员机的基本要求。
基本要求:(1)实时性好、灵活性强、易于不同年龄阶段的人操作;(2)以Windows窗口形式显示,标题栏为ATM柜员机名称;(3)用户界面窗口右上角有最小化按钮、最大化按钮、关闭按钮;(4)不同的界面窗口中有不同的按钮和选择菜单。
实现提示:(1)用户界面设计为菜单方式。
程序运行用户登录后,显示如下功能菜单:1.存款;2.取款;3.查询余额;4.修改密码;5.退出(2)用户根据自己的需求选择相应数字,程序就执行相应的功能并显示下一级菜单,直至用户单击【确定】退出界面。
2.2 操作环境(1)Windows 8系统(2)MyEclipse 编译环境(3)Wps 20132. 3 开发工具JA V A语言3 概要设计3.1 功能需求分析ATM柜员机模拟系统的主要功能如下所述:(1)要求使用图形用户界面;(2)当输入给定的卡号和密码(初始卡号为201253100226和密码为1314521)时,系统能登录进入ATM柜员机模拟系统;(3)用户可以按照以下流程进行操作:●查询余额:初始余额为60000元;●ATM存款:不能出现负存款;●ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支;●修改密码:只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
3.2 其他需求分析性能描述:ATM柜员机模拟系统实时性好、灵活性强、易于不同年龄阶段的人操作。
设计约束:开发工具:MyEclipse运行环境:Windows XP 、Window 7、Window 8能实现用户所定义的各项需求界面要求:以Windows窗口形式显示,标题栏为ATM柜员机名称,右上角有最小化按钮、最大化按钮、关闭按钮,不同的窗口中有不同的按钮和选择菜单。
系统流程:1. 首先来到“欢迎使用ATM机! ”登录页面,输入卡号和密码。
2. 然后进入选择服务模块。
3. 用户根据自己的需要选择相应的的功能。
4. 用户可根据相应的功能可任意输入一些测试数据。
5. 直到用户单击【确定】菜单退出页面。
4 系统设计4.1 总体设计根据课程设计的要求,为了让系统设计的思路清晰,我所设计的ATM柜员机模拟系统主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由存款模块、取款模块、查询余额模块、修改密码模块、退卡模块组成。
该系统主要功能模块的流程图如下:登录页面模块选择服务模块存款模块取款模块查询余额模块修改密码模块退卡模块4.2 界面设计ATM柜员机模拟系统的界面应该要简单明了、思路清晰,当然界面样式美观、人性化就更好了。