当前位置:文档之家› ATM柜员机模拟程序

ATM柜员机模拟程序

ATM柜员机模拟程序
ATM柜员机模拟程序

课程论文

现代软件工程与实践

题目: ATM柜员机模拟程序学院(系):信息工程学院专业班级:

学生姓名:

指导教师:

2011 年 12月 4日

武汉理工大学工程硕士课程论文─《现代软件工程与实践》

摘要

通过设计ATM柜员模拟程序,加深自己对Java编程尤其是对Java图形用户界面编程的了解,将自己的学到的编程知识融会贯通,同时培养自身面向对象软件开发的思维,初步了解软件开发的一般流程,提高用Java实际动手能力并增强自己对面向对象的了解。通过这次编程设计,加深了对Java图形界面编程中各个模块和组件的应用了解,以及类和类之间的关系,界面排版的处理等。

设计要求是,当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行(规则可以按照实际系统做需求):(1)查询余额:初始余额为10000元。(2)ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。(3)ATM存款:不能出现负存款。(4)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

该程序设置了7个类,1个主类6个辅助类,6个辅助类都是内部类的形式,辅助类包括五个实现ATM的功能,一个存放客户资料,之所以用内部类来实现是为了在各个界面转换时不至于要创建多个对象,每一个辅助类的对象只要在主类中创建一次就可以在各个内部类中引用。该程序利用的功能是利用Java事件监听技术来实现的,各种功能单独的创建一个类来实现,不会互相混淆,更加容易理清楚思路。设计的程序完美的实现了设计要求,具有查询、取款、存款、修改密码等功能。

目录

摘要......................................................................................................................................... I 目录....................................................................................................................................... II 1 前言. (1)

1.1设计任务 (1)

1.1.1 需求说明 (1)

1.2设计内容 (1)

2 程序要求 (1)

3 算法分析 (2)

4 流程图 (3)

5 程序源代码及说明 (4)

5.1程序源代码 (4)

5.2源代码说明 (21)

5.2.1 源代码中自定义类的说明: (21)

5.2.2源代码中的事件监听器 (22)

6 调试及运行结果 (23)

7 体会 (29)

8 参考文献 (30)

1 前言

1.1 设计任务

1.1.1 需求说明

随着市场经济的繁荣发展,人们的物质生活得到极大的提高,手中的剩余资金也日益增多。受传统观念影响,绝大多数人喜欢把资金投进银行,而在需要使用现金的时候再到银行提取现金。这就导致银行业务的急剧增加。虽然银行网点越来越多,银行的工作效率也随着信息化有较明显的增长,但是依旧不能满足广大用户的需要。而一味的增加营业网点,从理论上虽然能稍微的缓解银行的压力,但是治标不治本,而且每增加一个网点,不仅要付出昂贵的资金成本,还需要长期投入人力资本,成本非常之昂贵。这时候就迫切的需要一种自动的,易于普及的,低成本的设备来解决这一问题。于是ATM 机系统应运而生了。

本文正是通过设计一个ATM模拟模拟程序来实现ATM机系统的基本功能,充分运用自己所学的Java知识进行设计编程。

1.2 设计内容

(1)程序要求(2)算法分析(3)流程图(4)源程序(5)调试及运行结果(6)体会

2 程序要求

本ATM柜员机的主要功能如下所述:

要求使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:

●查询余额:初始余额为10000元。

●ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允

许透支。

●ATM存款:不能出现负存款。

修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。

3 算法分析

通过程序要求,我们可以清楚的知道本次设计的ATM柜员模拟程序需要实现四大功能,即查询余额、取款、存款、修改密码。初次之外,作为ATM系统,还需要最基本的两大功能,即登陆和退出。

根据上述的功能分析,我们可以吧整个ATM系统分为登陆模块、查询模块、取款模块、存款模块、修改密码模块。除此之外,还有在登陆系统后的功能选择模块,退出功能则镶嵌在各个需要的模块中。由于各个模块的功能实现是通过界面显示出来的,则程序设计又可以理解为几大界面的设计:登陆界面、主界面、查询余额界面、取款界面、存款界面、修改密码界面。除了几大界面之外,还有系统的初始化,主要是初始卡号、密码的设定等。

在程序的大体框架确定之后,我们需要了解各个模块所要实现和需要具有的功能。根据现有的银行ATM系统,我们可以很快就可以了解本次设计的ATM系统应该具有的操作。

(1)登陆界面

用户输入正确的账号和密码就可以登录到该系统的主界面中去,进行相应的操作:取款、存款、查询、修改密码。

(2)主界面

主界面包括查询、存款、取款、修改密码、退出的功能按钮,按下相应的按钮,可以进行相应的操作。

(3)查询界面

在主界面中按下查询按钮可以进行查询操作。通过查询功能我们可以查询账户的余额,在查询过程中我们可以选择取款的业务,除此之外,查询界面之中还有返回和退出的操作。返回的操作会使用户回到主界面,退出的操作会使用户直接回到登陆界面。

(4)取款界面

取款界面既可以通过主界面进入,也可以通过查询、存款等操作过程中的界面进入。取款功能在对话框中输入你想要取出的金额,但是次金额不可以比账户的余额大,且必须是100的整数倍,取款完毕,会弹出是否显示余额的提示,选“是”的话就会进入查询界面,选“否”的话,则回到主界面。

(5)存款界面

在主界面按下存款按钮可以进行存款操作,在对话中输入你需要存入的金额,所输

入的数字也要是100的整数倍,而且不可以是负数。存款完毕,会弹出是否显示余额的提示,选“是”的话就会进入查询界面,选“否”的话,则回到主界面。

(6)修改密码

选择修改密码按钮可以进行修改密码房,但是要先输入就密码正确并且两次输入新密码一致才可以修改密码。修改完成后,会返回主界面。

4 流程图

图1 程序流程图

5 程序源代码及说明

5.1 程序源代码

import javax.swing.*;

import javax.swing.JOptionPane;

import java.awt.event.*;

public class ATMmodel {

Account myaccount=new Account();

Load load=new Load();

MainFrame Jmain=new MainFrame();

Take take=new Take();

Input input=new Input();

Display dis=new Display();

Setpw setpw=new Setpw();

public ATMmodel() {

JOptionPane.showMessageDialog(null,"欢迎使用ATM柜员模拟系统");

}

public static void main(String[] args) {

ATMmodel atm=new ATMmodel();

}

/*创建账户*/

class Account {

private int count=10000; //初始账户余额10000

private String account="123456"; //初始账号

private String password="123456"; //初始密码

public Account() {

}

public void setpw(String password){

this.password=password;

}

public void deccount(int money){

count-=money;

}

public void reccount(int money){

count+=money;

}

public int get(){

return count;

}

public String getaccount(){ //账号

return account;

}

public String getpw(){

return password;

}

}

/* 主界面*/

class MainFrame extends JFrame {

public JButton checked;

public JButton cunkuan;

public JButton quit;

public JButton qukuan;

public JButton reset;

public MainFrame() {

initComponents();

this.setLocationRelativeTo(null);

// this.setVisible(false);

}

/* 控件初始化*/

private void initComponents() {

cunkuan = new JButton();

qukuan = new JButton();

checked = new JButton();

reset = new JButton();

quit = new JButton();

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

setTitle("ATM柜员模拟程序");

setName("mianframe");

setResizable(false);

cunkuan.setText("存款");

cunkuan.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

cunkuanActionPerformed(evt);

}

});

qukuan.setText("取款");

qukuan.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

qukuanActionPerformed(evt);

}

});

checked.setText("查询");

checked.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

checkedActionPerformed(evt);

}

});

reset.setText("修改密码");

reset.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

resetActionPerformed(evt);

}

});

quit.setText("退出");

quit.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

quitActionPerformed(evt);

}

});

GroupLayout layout = new GroupLayout(getContentPane()); //GroupLayout它将组件按层次分组,以决定它们在Container 中的位置

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addContainerGap()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING )

.addGroup(layout.createSequentialGroup()

.addComponent(cunkuan)

.addPreferredGap(https://www.doczj.com/doc/1a7664587.html,ponentPlacement.RELATED, 105, Short.MAX_VALUE)

.addComponent(reset))

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

layout.createSequentialGroup()

.addComponent(qukuan)

.addPreferredGap(https://www.doczj.com/doc/1a7664587.html,ponentPlacement.RELATED,

143, Short.MAX_VALUE)

.addComponent(quit))

.addComponent(checked))

.addContainerGap())

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(46, 46, 46)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELIN E)

.addComponent(cunkuan)

.addComponent(reset))

.addGap(51, 51, 51)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELIN E)

.addComponent(quit)

.addComponent(qukuan))

.addGap(57, 57, 57)

.addComponent(checked)

.addGap(39, 39, 39))

);

pack();

}

private void quitActionPerformed(ActionEvent evt) {

load.setVisible(true);

this.setVisible(false);

}

private void resetActionPerformed(ActionEvent evt) {

setpw.setVisible(true);

this.setVisible(false);

}

private void checkedActionPerformed(ActionEvent evt) {

dis.setVisible(true);

this.setVisible(false);

}

private void qukuanActionPerformed(ActionEvent evt) {

take.setVisible(true);

this.setVisible(false);

}

private void cunkuanActionPerformed(ActionEvent evt) {

input.setVisible(true);

this.setVisible(false);

}

}

/*登录界面*/

class Load extends JFrame{

public JPasswordField Jpassword;

public JTextField accountnum;

public JButton commit;

private JLabel jL1;

private JLabel jL2;

public Load() {

initComponents();

this.setLocationRelativeTo(null);

this.setVisible(true);

}

private void initComponents() {

jL1 = new JLabel();

jL2 = new JLabel();

accountnum = new JTextField();

commit = new JButton();

Jpassword = new JPasswordField();

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

setTitle("ATM柜员模拟程序");

setResizable(false);

jL1.setText("账号:");

jL2.setText("密码:");

commit.setText("确定");

commit.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

commitActionPerformed(evt);

}

});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING )

.addGroup(layout.createSequentialGroup()

.addContainerGap(50, Short.MAX_VALUE)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. TRAILING)

.addComponent(jL1)

.addComponent(jL2))

.addGap(31, 31, 31)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING, false)

.addComponent(Jpassword)

.addComponent(accountnum,

javax.swing.GroupLayout.DEFAULT_SIZE, 143, Short.MAX_VALUE)))

.addGroup(layout.createSequentialGroup()

.addGap(122, 122, 122)

.addComponent(commit)))

.addContainerGap(72, Short.MAX_VALUE))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(85, 85, 85)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELIN E)

.addComponent(accountnum, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(jL1))

.addGap(41, 41, 41)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELIN E)

.addComponent(jL2)

.addComponent(Jpassword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(https://www.doczj.com/doc/1a7664587.html,ponentPlacement.RELATED, 72, Short.MAX_VALUE)

.addComponent(commit)

.addGap(64, 64, 64))

);

pack();

}

private void commitActionPerformed(ActionEvent evt) {

if(accountnum.getText().equals(myaccount.getaccount()) && Jpassword.getText().equals(myaccount.getpw()))

{

Jmain.setVisible(true);

this.setVisible(false);

accountnum.setText("");

Jpassword.setText("");

}

else{

JOptionPane.showMessageDialog(null,"密码与账户不匹配,请重新输入","出错提示",1);

accountnum.setText("");

Jpassword.setText("");

}

}

}

/*取款界面*/

class Take extends JFrame {

public JButton back;

public JButton clear;

public JButton commit;

private JLabel jL1;

public JTextField jT1;

public JButton quit;

String str="";

public Take() {

initComponents();

this.setLocationRelativeTo(null);

this.setVisible(false);

}

private void initComponents() {

jL1 = new JLabel();

jT1 = new JTextField();

commit = new JButton();

back = new JButton();

quit = new JButton();

clear = new JButton();

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

jL1.setText("取款金额:");

commit.setText("确定");

commit.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

commitActionPerformed(evt);

}

});

back.setText("返回");

back.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

backActionPerformed(evt);

}

});

quit.setText("退出");

quit.addActionListener(new ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

quitActionPerformed(evt);

}

});

clear.setText("清除");

clear.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

clearActionPerformed(evt);

}

});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(41, 41, 41)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING )

.addGroup(layout.createSequentialGroup()

.addComponent(jL1)

.addGap(33, 33, 33)

.addComponent(jT1, javax.swing.GroupLayout.PREFERRED_SIZE, 174, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(layout.createSequentialGroup()

.addComponent(clear)

.addPreferredGap(https://www.doczj.com/doc/1a7664587.html,ponentPlacement.RELATED, 147, Short.MAX_VALUE)

.addComponent(quit))

.addGroup(layout.createSequentialGroup()

.addComponent(commit)

.addPreferredGap(https://www.doczj.com/doc/1a7664587.html,ponentPlacement.RELATED, 147, Short.MAX_VALUE)

.addComponent(back)))

.addContainerGap(69, javax.swing.GroupLayout.PREFERRED_SIZE)) );

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(103, 103, 103)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELIN E)

.addComponent(jL1)

.addComponent(jT1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(61, 61, 61)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELIN E)

.addComponent(commit)

.addComponent(back))

.addGap(29, 29, 29)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELIN E)

.addComponent(clear)

.addComponent(quit))

.addContainerGap(65, Short.MAX_VALUE))

);

pack();

}

private void clearActionPerformed(ActionEvent evt) {

str="";

jT1.setText(str);

}

private void quitActionPerformed(ActionEvent evt) {

load.setVisible(true);

this.setVisible(false);

}

private void backActionPerformed(ActionEvent evt) {

Jmain.setVisible(true);

this.setVisible(false);

}

private void commitActionPerformed(ActionEvent evt) {

if(Integer.parseInt(jT1.getText())>0 && Integer.parseInt(jT1.getText())%100==0 && Integer.parseInt(jT1.getText())<=5000){

myaccount.deccount(Integer.parseInt(jT1.getText()));

int result=javax.swing.JOptionPane.showConfirmDialog(null,"是否显示余额?","",javax.swing.JOptionPane.YES_NO_OPTION,javax.swing.JOptionPane.QUESTION_MESSAGE);

if(result==javax.swing.JOptionPane.YES_OPTION)

{

dis.set(String.valueOf(myaccount.get()));

str="";

jT1.setText(str);

dis.setVisible(true);

this.setVisible(false);

}

else

{

Jmain.setVisible(true);

this.setVisible(false);

}

}

else{

JOptionPane.showMessageDialog(null,"取款金额不能为负数"+"\n取款金额不能为0"+"\n取款金额必须是100的倍数"+"\n金额一次不能超过5000"+"\n请重新输入你要取的金额数","出错提示",1);

str="";

jT1.setText(str);

}

}

}

/*存款界面*/

class Input extends JFrame {

private JButton clear;

private JButton commit;

private JLabel jL1;

private JTextField jT1;

String str="";

public Input() {

initComponents();

this.setLocationRelativeTo(null);

this.setResizable(false);

this.setVisible(false);

}

private void initComponents() {

jL1 = new JLabel();

jT1 = new JTextField();

commit = new JButton();

clear = new JButton();

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

jL1.setText("存款金额:");

commit.setText("确认");

commit.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

commitActionPerformed(evt);

}

});

clear.setText("清除");

clear.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

clearActionPerformed(evt);

}

});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(47, 47, 47)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING )

.addGroup(layout.createSequentialGroup()

.addGap(12, 12, 12)

.addComponent(commit)

.addGap(111, 111, 111)

.addComponent(clear))

.addGroup(layout.createSequentialGroup()

.addComponent(jL1)

.addGap(27, 27, 27)

.addComponent(jT1, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE)))

.addContainerGap(50, Short.MAX_VALUE))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(88, 88, 88)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELIN E)

.addComponent(jL1)

.addComponent(jT1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(87, 87, 87)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELIN E)

.addComponent(clear)

.addComponent(commit))

.addContainerGap(88, Short.MAX_VALUE))

);

pack();

}//

private void clearActionPerformed(ActionEvent evt) {

str="";

jT1.setText(str);

}

private void commitActionPerformed(java.awt.event.ActionEvent evt) {

if(Integer.parseInt(jT1.getText())%100==0)

{

int a=Integer.parseInt(jT1.getText());

if(a<0)

JOptionPane.showMessageDialog(null,"存款不能为负数","出错",1);

else

myaccount.reccount(a);

dis.set(String.valueOf(myaccount.get()));

int result=javax.swing.JOptionPane.showConfirmDialog(null,"是否显示余额?","",javax.swing.JOptionPane.YES_NO_OPTION,javax.swing.JOptionPane.QUESTION_MESSAGE);

if(result==javax.swing.JOptionPane.YES_OPTION)

{

str="";

jT1.setText(str);

dis.setVisible(true);

this.setVisible(false);

}

else

{

Jmain.setVisible(true);

this.setVisible(false);

}

}

else

{

JOptionPane.showMessageDialog(null,"存款金额必须为100的整数倍!"+"\n请确认你的金额","出错提示",1);

jT1.setText("");

}

}

}

/*显示余额界面*/

class Display extends JFrame {

public JButton back;

private JLabel jL1;

public JTextField jT1;

public JButton quit;

public JButton qukuan;

public Display() {

initComponents();

jT1.setText(String.valueOf(myaccount.get()));

this.setLocationRelativeTo(null);

this.setVisible(false);

}

public void set(String str){

jT1.setText(str);

}

private void initComponents() {

jL1 = new JLabel();

jT1 = new JTextField();

quit = new JButton();

back = new JButton();

qukuan = new JButton();

setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

jL1.setText("您的余额为:");

jT1.setEditable(false);

quit.setText("退出");

quit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { quitActionPerformed(evt);

}

});

back.setText("返回");

back.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { backActionPerformed(evt);

}

});

qukuan.setText("取款");

qukuan.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { qukuanActionPerformed(evt);

}

});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(27, 27, 27)

.addComponent(jL1)

.addPreferredGap(https://www.doczj.com/doc/1a7664587.html,ponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jT1, javax.swing.GroupLayout.PREFERRED_SIZE, 143, javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(36, Short.MAX_VALUE))

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,

layout.createSequentialGroup()

.addContainerGap(215, Short.MAX_VALUE)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILIN G)

.addComponent(back)

.addComponent(qukuan)

.addComponent(quit))

.addContainerGap())

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addGap(93, 93, 93)

.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELIN E)

.addComponent(jL1)

.addComponent(jT1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(54, 54, 54)

.addComponent(qukuan)

.addPreferredGap(https://www.doczj.com/doc/1a7664587.html,ponentPlacement.RELATED)

.addComponent(back)

.addPreferredGap(https://www.doczj.com/doc/1a7664587.html,ponentPlacement.RELATED)

.addComponent(quit)

.addContainerGap())

);

pack();

}

ATM柜员机模拟系统-代码

Win.java import 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) {

柜员机模拟程序

课程论文 现代软件工程与实践题目: ATM柜员机模拟程序学院(系):信息工程学院专业班级: 学生姓名: 指导教师: 2011 年 12月 4日

摘要 通过设计ATM柜员模拟程序,加深自己对Java编程尤其是对Java图形用户界面编程的了解,将自己的学到的编程知识融会贯通,同时培养自身面向对象软件开发的思维,初步了解软件开发的一般流程,提高用Java实际动手能力并增强自己对面向对象的了解。通过这次编程设计,加深了对Java图形界面编程中各个模块和组件的应用了解,以及类和类之间的关系,界面排版的处理等。 设计要求是,当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行(规则可以按照实际系统做需求):(1)查询余额:初始余额为10000元。(2)ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。(3)ATM存款:不能出现负存款。(4)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 该程序设置了7个类,1个主类6个辅助类,6个辅助类都是内部类的形式,辅助类包括五个实现ATM的功能,一个存放客户资料,之所以用内部类来实现是为了在各个界面转换时不至于要创建多个对象,每一个辅助类的对象只要在主类中创建一次就可以在各个内部类中引用。该程序利用的功能是利用Java事件监听技术来实现的,各种功能单独的创建一个类来实现,不会互相混淆,更加容易理清楚思路。设计的程序完美的实现了设计要求,具有查询、取款、存款、修改密码等功能。

c语言程序设计atm自动取款机实验报告材料

课程设计报告 课程类别:本科 课程名称:程序设计基础(C语言) 课程代号:指导教师: 银行ATM自动取款机系统课程设计 姓名:学号: 姓名:学号: 姓名:学号: 学院: 班级:

目录 1.课程设计内容.................................................. 2.课程设计要求.................................................. 3.可行性研究................................................... 4.需求分析..................................................... 5.概要设计...................................................... 5.1 功能模块图............................................... 5.2 功能模块描述............................................. 5.3数据结构 ................................................. 6.详细设计...................................................... 6.1 功能流程图............................................... 6.2 重点设计................................................. 7.测试与调试.................................................... 8.总结.......................................................... 8.1 心得体会.................................................. 8.2 不足与改进................................................ 9.参考文献......................................................

javaATM柜员机模拟程序文件

课程论文 现代软件工程与实践 题目: ATM柜员机模拟程序学院(系):信息工程学院专业班级: 学生: 指导教师: 2011 年 12月 4日

摘要 通过设计ATM柜员模拟程序,加深自己对Java编程尤其是对Java图形用户界面编程的了解,将自己的学到的编程知识融会贯通,同时培养自身面向对象软件开发的思维,初步了解软件开发的一般流程,提高用Java实际动手能力并增强自己对面向对象的了解。通过这次编程设计,加深了对Java图形界面编程中各个模块和组件的应用了解,以及类和类之间的关系,界面排版的处理等。 设计要,当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行(规则可以按照实际系统做需求):(1)查询余额:初始余额为10000元。(2)ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。(3)ATM存款:不能出现负存款。(4)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 该程序设置了7个类,1个主类6个辅助类,6个辅助类都是部类的形式,辅助类包括五个实现ATM的功能,一个存放客户资料,之所以用部类来实现是为了在各个界面转换时不至于要创建多个对象,每一个辅助类的对象只要在主类中创建一次就可以在各个部类中引用。该程序利用的功能是利用Java事件监听技术来实现的,各种功能单独的创建一个类来实现,不会互相混淆,更加容易理清楚思路。设计的程序完美的实现了设计要求,具有查询、取款、存款、修改密码等功能。

C语言ATM程序模拟

一、课题要求 1、当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录A TM柜员机系统。 2、查询余额:初始余额为10000元。 3、ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。 4、ATM存款:不能出现负存款。 5、修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确, 新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 二、代码 #include "stdafx.h" #include "stdio.h" #include "windows.h" #include "stdlib.h" #include "conio.h" void gotoxy(int x,int y); //光标位置函数 void enter_ATM(); //账号输入函数 void input_code(); //密码输入函数 void caozuo(); //基本操作界面 void qukuan(); //取款函数 void success(); //操作成功函数 void delay(); //延时函数 void yu_e(); //余额查询函数 void cunkuan(); //存款函数 void panduan(long int z); //判断取款是否合法函数 void exit(); //退出界面函数 void mima(); //密码修改 void zhuangyi(); long int CODE=123456,YU_E=10000; //=========================主函数========================// main() { enter_ATM(); caozuo(); } //======================================================// //==================================柜台机账号输入函数=======================================//

课程设计-ATM柜员机模拟程序

课程设计-ATM柜员机模拟程序

软件学院 课程设计报告书 课程名称面向对象程序设计 设计题目ATM柜员机模拟程序 专业班级软件工程 学号 姓名 指导教师刘腊梅

1 设计时间 2015 年月 2 设计目的 掌握图形用户界面设计方法,掌握常用swing组件的使用和事件处理程序设计. 3 设计题目 ATM柜员机模拟程序 4 设计任务 使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行: (1)查询余额功能:初始余额为10000元 (2)ATM取款功能:每次取款金额为100的倍数,总额不超过5000元,支取金额不 允许透支。 (3)ATM存款功能:不能出现负存款。 (4)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密 码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 5设计内容 5.1 kehu类代码 import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; // 导入包 import java.util.*; class kehu // 定义客户类 { String zh; //定义账号 String pswf; //定义密码 double jine; //定义金额 public kehu() { } //构造GUKE public kehu(String zh, String pswf, double jine) { this.zh = zh; this.pswf = pswf; this.jine = jine;

C语言ATM机实现

#include //提供了strcmp()函数 #include struct student { char xm[20];//姓名 char mm[10];//密码 int je;//金额 int zh;//帐号 }; void main() { int i; int k=0; int count=1000; int f; student st[10]={"","",0,0}; bool flag=false; do { printf("1--注册2--登录3--取款4--存款5--查询0--退出\n"); scanf("%d",&i); if (i==1) { printf("输入姓名:"); scanf("%s",&st[k].xm); printf("输入密码"); scanf("%s",&st[k].mm); st[k].zh=count++; printf("你的帐号为%d\n",st[k].zh); k++; } else if (i==2) { int zh; char mm[20]; printf("输入卡号"); scanf("%d",&zh); printf("输入密码"); scanf(" %s",&mm);

for(int j=0;j<10;j++) { if(st[j].zh==zh && strcmp(st[j].mm,mm)==0) { flag=true; printf("找到了"); f=j; break; } } } else if (i==4) { if (flag!=true) { printf("您还没有登录"); } else { printf("输入存款金额"); int je; scanf("%d",&je); st[f].je=st[f].je+je; printf("存款成功"); } } else if (i==3) { if (flag!=true) { printf("您还没有登录"); } else { printf("输入取款金额"); int je; scanf("%d",&je); if (je>st[f].je) { printf("余额不足"); } else { st[f].je=st[f].je-je;

自动取款机(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 ●修改密码ChangePassword 2)银行类Bank 银行类Bank的本质就是一组帐号的组合,并负责管理帐号。基本的银行信息包括: ●银行名name ●已经开户的帐号数usedAccountNum ●可以容纳的最大账户数MaxAccountNum ●帐号集accounts 主要的银行操作包括: ●开户OpenAccount ●登录帐号LoginAccount ●撤销帐号,但是由于A TM不能撤销帐号,因此我们不关心这个操作 3)ATM类 ATM类与银行类之间在一对一的关联关系,ATM提供用户界面,并将用户的请求提交给银行、将银行的反馈提交给用户。基本的ATM信息包括: ●银行Bank 主要的ATM操作包括: ●启动Start ●开户OpenAccount ●登录帐号LoginAccount ●管理帐号ManageAccount ●一些显示不同信息的辅助操作(PrintLogo、Print、Pause等)。 4)启动程序类Program 启动程序类Program的唯一功能就是创建银行类和ATM类的实例,并将它们关联起来,然后启动ATM(执行A TM对象的Start方法)。因此,这个类仅仅包含程序的入口点Main方法。 5)ATM模拟程序的类图 根据上述各类的分析,可以画出A TM模拟程序的类图:

java课程设计_ATM柜员机模拟程序文件

课程设计(大作业)报告 课程名称:面向对象程序设计课程设计设计题目:ATM柜员机模拟程序 院系:信息技术学院 班级: 设计者: 学号: 指导教师: 设计时间:2016-1-4-2016-1-8 信息技术学院 学院课程设计(大作业)任务书

课程设计(大作业)报告 一、题目分析 1.系统需求分析 (1)设计目标:随着市场经济的繁荣发展,人们的物质生活得到极大的提高,手中的剩余资金也日益增多。受传统观念影响,绝大多数人喜欢把资金投进银行,而在需要使用现金的时候再到银行提取现金。这就导致银行业务的急剧增加。虽然银行网点越来越多,银行的工作效率也随着信息化有较明显的增长,但是依旧不能满足广大用户的需要。而一味的增加营业网点,从理论上虽然能稍微的缓解银行的压力,但是治标不治本,而且每增加一个网点,不仅要付出昂贵的资金成本,还需要长期投入人力资本,成本非常之昂贵。这时候就迫切的需要一种自动的,易于普及的,低成本的设备来解决这一问题。于是ATM机系统应运而生了。 自动柜员机,即ATM,是指银行在不同地点设置一种小型机器,利用一信用卡大小的胶卡上的磁带记录客户的基本户口资料(通常就是银行卡),让客户可以透过机器进行提款、存款、转账等银行柜台服务,大多数客户都把这种自助机器称为自动提款机。 本文正是通过设计一个ATM模拟模拟程序来实现ATM机系统的基本功能,充分运用自己所学的Java知识进行设计编程。 (2)题目设计要求:本ATM柜员机的主要功能如下所述: 要求使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行: ●查询余额:初始余额为10000元。 ●ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透 支。 ●ATM存款:不能出现负存款。 ●修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密 码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 2.ATM模拟系统总体设计结构 (1)设计思想:通过程序要求,我们可以清楚的知道本次设计的ATM柜员模拟程序需

C语言课程设计ATM机模拟操作附源码

C语言-ATM机模拟操作 程序实现功能点: a.查询:查询帐户的存款余额。按任意键返回主菜单; b.取款:输入100、500、1000、2000、5000、其它金额为取款金额,取 款金额不超过帐户余额,操作后帐户余额应相应减少,之后可返回主菜单; c.存款:输入100、500、1000、2000、5000、其它金额为存款金额,存 款金额不超过20000元,操作后帐户余额应相应增加。之后可返回主菜单; d.转帐:输入一个帐户号,程序判断与文件信息是否相符,储户确认无 误后,再输入100、500、1000、2000、5000、其它金额为转帐金额,转帐金额不得超过帐户余额,操作后帐户余额应相应减少。之后可返回主菜单; e.修改密码:连续输入两次新密码(两次输入结果完全相同)后,新密码 取代旧密码,并存放到帐户信息文件中。之后可返回主菜单; f.退出:退出系统; g.帮助:增加趣味性; h.存款时,可正可负,正表示存款,负表示取款; i.帐户信息存放在文件,储户存取款记录保存在中;(在目录下创建这两

个文件) j.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用; k.储户一天内输错密码的次数不能超过3次,否则无法进入系统; l.有效避免输入存款金额、取款金额为负数等异常情况的出现。 较为突出的功能是注册、登录时账号密码的核对验证;存款转出转入金额的核对。是否超过余额,是否不符合格式,是否为冲突操作。 (2)程序运行截图及说明(每图限50到100字); 进入程序,menu1可选择登录、注册功能。 选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否成功登录。若登录失败,则重新选择。

C语言模拟ATM机

一、实验目的 通过设计一个ATM机模拟操作的程序,全面运用课程的主要知识点,巩固对模块化程序设计、文件操作的理解,提高软件编程能力。 二、实验要求 要求每人独立完成设计,编写一个ATM机模拟操作程序。提交实验报告、源程序、程序运行截图。 1.程序具有以下功能: 1)登录系统: 输入卡号(16位)、密码(6位),只有卡号、密码同时正确(帐户信息存放在文件中)才能进入系统; 2)操作功能: ●查询:查询帐户的存款余额。按任意键返回主菜单; ●修改密码:连续输入两次新密码(两次输入结果完全相同)后,新密码取代旧密码,并存放到 帐户信息文件中。之后可返回主菜单; ●取款:输入50或100的倍数模拟为取款金额,请注意:取款金额不得超过帐户余额,操作后 帐户余额应相应减少。之后可返回主菜单; ●存款:输入50或100的倍数模拟为存款金额,现假设存款金额不得超过20000元,操作后 帐户余额应相应增加。之后可返回主菜单; ●转帐:先输入一个帐户号(已保存在帐户信息文件中),然后显示一部分用户名(如:张*山), 储户确认无误后,再输入50或100的倍数模拟为转帐金额,请注意:转帐金额不得超过帐户余额,操作后帐户余额应相应减少。之后可返回主菜单; ●退出:退出系统。 2.定义如下结构体类型: ●“日期”结构体Date:成员有:year(年)、month(月)、day(日); ●“帐户”结构体Account:成员有:no(帐户号)、name(姓名)、balance(余额) ●“存取款记录”结构体Record,:成员有:no(帐户号)、date(日期)、number(数量,可正可负, 正表示存款,负表示取款)

c语言程序设计atm自动取款机实验报告

程设计报告课程类别:本科 课程名称:程序设计基础(C语言) 课程代号:指导教师: 银行ATM自动取款机系统课程设计姓名:学号: 姓名:学号: 姓名:学号: 学院: 班级:

目录 1. 课程设计内容....................... 2. 课程设计要求....................... 3.可行性研究........................ 4.需求分析......................... 5. ...................................................................... 概要设计. 5.1 功能模块图 ..................... 5.2 功能模块描述 ..................... 5.3 数据结构 ...................... 6. ...................................................................... 详细设计. 6.1 功能流程图 ..................... 6.2 重点设计 ...................... 7. 测试与调试........................ 8. 总结. ....................................................... 8.1 心得体会 ....................... 8.2 不足与改进 ...................... 9. 参考文献. ................................................. 1. 课程设计内容

C语言课程设计ATM机模拟操作附源码

C语言课程设计A T M机模拟操作附源码 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

C语言-ATM机模拟操作 程序实现功能点: a.查询:查询帐户的存款余额。按任意键返回主菜单; b.取款:输入100、500、1000、2000、5000、其它金额为取款金额,取 款金额不超过帐户余额,操作后帐户余额应相应减少,之后可返回主菜单; c.存款:输入100、500、1000、2000、5000、其它金额为存款金额,存 款金额不超过20000元,操作后帐户余额应相应增加。之后可返回主菜单; d.转帐:输入一个帐户号,程序判断与文件信息是否相符,储户确认无 误后,再输入100、500、1000、2000、5000、其它金额为转帐金额,转帐金额不得超过帐户余额,操作后帐户余额应相应减少。之后可返回主菜单; e.修改密码:连续输入两次新密码(两次输入结果完全相同)后,新密码 取代旧密码,并存放到帐户信息文件中。之后可返回主菜单; f.退出:退出系统; g.帮助:增加趣味性; h.存款时,可正可负,正表示存款,负表示取款; i.帐户信息存放在文件,储户存取款记录保存在中;(在目录下创建这

两个文件) j.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用; k.储户一天内输错密码的次数不能超过3次,否则无法进入系统; l.有效避免输入存款金额、取款金额为负数等异常情况的出现。 较为突出的功能是注册、登录时账号密码的核对验证;存款转出转入金额的核对。是否超过余额,是否不符合格式,是否为冲突操作。 (2)程序运行截图及说明(每图限50到100字); 进入程序,menu1可选择登录、注册功能。 选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否成功登录。若登录失败,则重新选择。

C语言程序设计报告模拟ATM取款机

仲恺农业工程学院工程实训报告 ATM取款机 课程名称C语言程序设计工程实训 姓名林少烈 院(系)计算机科学与工程学院 专业班级计算机113班 学号201110214317 指导教师王成 仲恺农业工程学院教务处制

目录 1 需求分析 (1) 2 系统总框图和功能模块说明 (1) 2.1 系统总框图 (1) 2.2 功能模块说明 (1) 3 系统设计 (2) 3.1 主要结构体 (2) 3.2主要功能函数 (2) 3.3 关键函数的流程图 (3) 4 系统调试 (12) 5 总结 (25) 6 源程序清单 (28) 6.1头文件 (28) 6.2主程序 (29) 6.3 解除被冻结用户 (64) 6.4 用户注册 (66)

1 需求分析 所设计的ATM取款机应具备以下功能: ●插入银行卡(用账号输入的方式代替); ●密码的输入; ●用户信息查询; ●用户余额查询; ●取款; ●转账; ●修改密码; ●退卡。 2 系统总框图和功能模块说明 2.1 系统总框图 图1 系统总框图 2.2 功能模块说明 ?输入用户账号模块:在运行时,完成用户账号的输入(代替插卡);

?输入账号密码模块:①在输入账号之后,完成用户密码的输入;②在修改密码的过程中,完成用户输入旧密码的功能; ?信息读取功能模块:完成用户信息的读取; ?冻结账号功能模块:当输入密码3次错误时,冻结用户账号: ?查询用户信息模块:完成用户的信息查询(不包括余额查询); ?查询余额功能模块:完成用户余额的查询; ?取款功能模块:完成取款功能模块: ?转账功能模块:完成转职功能; ?修改密码功能模块:完成用户修改密码功能; ?退卡功能模块:完成退卡功能(即:退出程序功能)。 3 系统设计 3.1 主要结构体 用户账号、、密码、余额 struct User //用户数据 { char num[20]; //用户账号 char name[10]; // char password[7]; //密码 float balance; //余额 }; 3.2主要功能函数 void read_info(); //用户信息读取 void input_num(char * num); //输入账号

ATM柜员机模拟系统-代码

import .*; import .*; import .*; public class Win extends JFrame implements ActionListener { JTextField text[]=new JTextField[6]; JTextArea show=new JTextArea(9,30); JTable table;次取款金额为100的倍数,总额不能超过5000元,支取金额不允许透支")); add(new JLabel("2.存款金额不能为负存款")); add(new JLabel("3.新密码长度不小于6位,不允许出现6位完全相同的情况")); setVisible(true); setDefaultCloseOperation; } public void actionPerformed(ActionEvent e) { Operation modify=new Operation(); ("XX"); if()==insert) {

("INSERT INTO XX VALUES ('"+text[4].getText()+"','"+text[0].getText()+"','"+text[1].getText()+"','"+tex t[2].getText()+"','"+text[3].getText()+"')"); String backMess=(); ("添加新用户"+backMess); } else if()==C) { Connection con=null; Statement sql; ResultSet rs = null; try{ double n=2000; con=("jdbc:odbc:XX","",""); (false); sql=(); rs=("SELECT * FROM XX WHERE 卡号='123456'"); 码 =+'"+text[2].getText()+"' WHERE (((XX.卡号)=+'"+text[0].getText()+"'));"); String backMess=(); ("修改密码"+backMess); }

C语言课程设计报告(银行存取款管理设计)

错误!未找到目录项。 C程序课程设计报告 题目车票管理系统 院别数学与计算机学院班级 姓名学号 指导教师邓永江 二○一五年六月

预习报告 一:设计题目 银行存取款管理设计 二:功能要求 ①能够添加和修改以及删除客户文件。(在客户文件中,每个客户是一条记录,包括编号、客户姓名、支取密码、客户地址、客户电话、账户总金额)。 ②能够输入和查询客户存款取款记录。(在存取款文件中,每次存取款是一条记录,包括编号、日期、类别、存取数目、经办人。类别分为取款和存款两种)。 ③能够给程序提供运行提示。 三:设计要求 ①、用C 语言实现系统; ②、函数功能要划分好(结构化程序设计); ③、界面友好(良好的人机交互),加必要的注释; ④、要提供程序测试方案,程序一定要经得起测试,宁可功能少一些,也要能 运行起来,不能运行的程序是没有价值的。 四:设计目的 ①、通过这次课程设计,使我们更加深入地理解和掌握C 语言基本概念,切身体会用结构化程序设计的工程思想,感受C 语言的魅力。 ②、通过这次课程设计,培养我们独立思考、勇于探索、积极创新、严谨求实、有过必改的工作态度以及较熟的上级操作能力,同时加强我们团结友爱,协作攻关的团队合作意识。 五:设计框架图

void main():在里面写了“功能选择”的SWITCH函数; void kehu();客户资料添加与操作主菜单;void kehu1(struct cou p[],char *re,long *h); 客户资料查询函数; void kehu2(struct cou *p,char *re,long h);客户资料添加函数; void kehu3(struct cou *p,char *re,long h); 客户资料修改函数; void kehu4(struct cou *p,char *re,long h); 客户资料清楚函数; void kehup(struct cou *p,char *re,long *h); 客户资料打印函数; void cunq1(); 存取款办理选择主菜单; void cunq11(struct cou *p,char *re,long h);客户存款资料的键入; void cunq12(struct cou *p,char *re,long h); 客户取款资料的键入; void cunq2();存取款选择查询主菜单; void cunq211(struct cou p[],char *re,long *h);把顾客存款资料从文件读到缓冲 区; void cunq212(struct cou *p,char *re,long *h);打印存款资料; void cunq221(struct cou p[],char *re,long *h);把顾客取款资料从文件读到缓冲 区; void cunq222(struct cou *p,char *re,long *h);打印取款资料; void help(); 使用说明模块。 ㈡变量 ①全局的结构体型数组w(用来存放200多个结构体变量): extern struct cou { long b; char x[20]; long m;

c语言Atm的简单实现

信息科学与工程学院《数据结构》 课程设计报告课程设计名称: ATM得设计与实现 专业班级: 学生姓名: 学号: 2 指导教师: 课程设计时间:2016-2017学年第二学期

计算机科学与技术专业课程设计任务书

目录 1 需求分析 (1) 1、1存款 (1) 1、2取款 (1) 1、3查瞧流水账 (1) 1、4排序 (1) 1、5修改密码 (2) 1、6查瞧ATM使用情况 (2) 1、7录入信息 (2) 1、8恢复限额 (2) 2概要设计 (3) 2、1数据类型得定义 (3) 2、2功能模块结构图 (4) 3运行环境 (6) 4开发工具与编程语言 (6) 5详细设计 (6) 5、1主函数 (7) 5、2 录入函数 (8) 5、3加载与存储函数 (8) 5、4 输出流水账函数 (9) 5、5 查瞧ATM使用情况函数 (9) 6程序编码 (10) 7运行结果 (12) 8心得体会 (14) 9参考文献 (14)

1需求分析 ATM自助机——便于储户存钱、取钱。 按功能分为两大系统:个人用户系统与银行后台系统; 个人用户系统————登录(输入正确得账号或密码才能进入)、存款、取款、查瞧流水账(查瞧用户最近存取款情况)、排序(此为超级用户功能,可以查瞧所有人得余额)、修改密码(修改个人登录密码); 银行后台系统————atm使用情况(便于银行人员管理atm机)、录入信息(包括录入用户及其银行卡号信息与录入atm 信息)、恢复限额(每天6点恢复所有人得取款上限)。 1、1存款 输入金额,存入ATM,当前AMT以及自己得余额会增加并且自动生成流水账。 1、2取款 输入取款金额,判断它就是否小于ATM总金额并且小于当天得限额,当前得ATM金额减少,自己得余额与限额也会减少。 1、3查瞧流水账 输出自己近段时间内得所有操作,发生额,以及时间。 1、4排序 此为超级用户功能,实现以余额对所有用户排序并且输出一些信息。

JAVA课程设计-ATM机模拟系统

《Java语言程序设计》 课程设计报告 题目:ATM柜员机 专业:信息与计算科学 学号:23 姓名:单焱 指导教师:李又良 成绩: 2010 年 12 月 10 日

目录 1课程设计研究背景及意义 (2) 2课程设计题目描述和基本功能设计要求 (2) 3系统需求分析 (2) 3.1 功能需求分析 (2) 3.2 其他需求分析 (3) 4 系统设计 (3) 4.1 总体设计 (3) 4.2 ATM柜员机界面设计 (4) 4.3 各功能模块设计 (5) 4.3.1 登陆页面模块设计 (5) 4.3.2 选择服务模块设计 (6) 4.3.3 取款模块设计 (7) 4.3.4 修改密码模块设计 (8) 4.3.5 查询余额模块设计 (9) 4.3.6 退卡模块设计 (9) 4.4 异常处理情况说明 (10) 5 系统实现与测试 (10) 6 课程设计总结 (13) 6.1 遇到的问题及解决办法 (13) 6.2 心得体会 (14) 参考文献 (14) 附录(源码) (14)

1课程设计研究背景及意义 这次课程设计是通过JAVA编程来实现ATM柜员机的功能。以前,人们用手算取钱,不管从方便的角度还是速度的角度来看都不及现在。电子技术的不断发展使得ATM自动化的功能不断完善。在二十一世纪的今天,A TM柜员机是人们生活中重要的工具,所以,对ATM柜员机的研究的课程设计具有重大意义。 这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象开发的思维,初步了解软件开发的一般流程,提高用JA V A编程的实际动手能力并增强大家对面向对象的了解。这次课程设计的主要内容是独立用JA V A语言开发一个小的应用程序。 2 课程设计题目描述和基本功能设计要求 本次设计的ATM柜员机主要是由各个Windows窗口组成,它是由登录页面、选择服务、取款、查询余额、修改密码和退卡等功能。它的各种按钮的事件和功能可以简单的模拟ATM柜员机的要求。 组员分工: 组长(单焱):负责分配其他组员的任务,构建需求分析,系统实现及异常处理情况,调试程序等,把握ATM柜员机的整体布局。 组员1(刘星):负责登陆界面模块,选择服务模块及退卡模块,编写相应代码。 组员2(王玲玲):负责取款、修改密码、查询余额模块,编写相应代码。 3 系统需求分析 3.1 功能需求分析 本ATM柜员机的主要功能如下所述: 要求使用图形用户界面。当输入给定的卡号和密码(初始卡号为000000和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行: ●查询余额:初始余额为50000元 ●ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允 许透支。 ●ATM存款:不能出现负存款。

软件工程建设_ATM柜员机系统_课程设计

软件工程课程设计 题目:ATM柜员机系统 学院:信息科学与工程学院 专业:计算机科学与技术 学号: 班级: 学生姓名:

一可行性研究 1编写目的 1.1 目的 这份可行性研究报告是对ATM柜员机的可行性研究分析及指出存在的必要性。 1.2 预期的读者 软件管理人员、开发人员、维护人员、顾客用户。 2 问题定义 2.1 ATM柜员机介绍 ATM柜员机使用与ATM机相似的图形用户界面,当用户在登录界面输入给定的卡号和密码时,系统能登录ATM柜员机系统,通过数据链接操作来达到独立的客户与机器交互从而进行取款、存款、转账、查询余额、修改密码等业务办理的目的。 2.2 基本目标 ATM柜员机主要是由各个实体窗口组成,它是由登录页面、选择服务、存款、取款、查询余额、修改密码以及查看交易记录等功能。它的各种按钮的事件和功能可以简单的模拟ATM柜员机的要求,让用户在电脑上可以轻松体验ATM取款机的使用流程,以达到易学易用的效果,避免用户在真实的ATM机上出现失误,带来不必要的损失。 2.3 经济目标 由于本软件的主要背景(为课程设计)在经济上不注重直接的经济收益,而是注重小组成员整体水平的提高。 3 可行性研究的方法及评价度 3.1 可行性研究所采用的方法 根据调查,本小组成员多数有JA V A编程经验,也具备MY SQL的使用经验,因而开发此系统采用JA V A结合MY SQL的数据库系统开发。 3.2 评价尺度 此软件暂时只是一个初级产品,实现的功能也只能完成初步的工作。 4 工作产品 4.1 设计目标 为了减少银行的业务处理压力,尽量节省人们取钱所花费的时间和价值;并且尽可能的防止一些非法的业务操作,同时它的使用可以有效解决用户信息和资金信息的繁杂问题。

ATM机C语言程序

直接运行没有错误的代码c----- 本银行卡管理系统有五个账号和其对应的密码: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 账号: 1:10001 2:10002 3:10003 4:10004 5:10005 对应账号的密码和其账号相同 代码如下: #include #include #include main(){ int a,b,n,c,i,zh[5],mm[5],e,f,j,m,zz,kk; float y,zj,ck[5]={0.00,0.00,0.00,0.00,0.00},jf[5]={0.00,0.00,0.00,0.00,0.00}; n=1; y=0.00; for(e=0;e<5;e++) zh[e]=mm[e]=e+10001; while(n!=0){ printf("\n\n- - - - - - - - - - - - - - -欢迎登陆ATM 操作系统!- - - - - - - - - - - - - - - \n"); for(i=1;i<=80;i++) printf("="); while(n!=0){ printf("\n 1 ==> 新账号注册款项交易及其他业务<== 2\n\n"); for(i=1;i<=80;i++) printf("="); scanf("%d",&kk); if(kk==2){ system("cls"); printf("\n"); for(i=1;i<=80;i++) printf("="); printf("\n ==> 请输入账号:"); scanf("%d",&f); printf("\n ==>==> 请输入密码:"); scanf("%d",&a); for(m=0;m<5;m++){ if(f==zh[m] && a==mm[m]) break;}

相关主题
文本预览
相关文档 最新文档