收藏 分销(赏)

ATM标准管理系统java窗口界面.doc

上传人:w****g 文档编号:2993196 上传时间:2024-06-12 格式:DOC 页数:33 大小:408.04KB
下载 相关 举报
ATM标准管理系统java窗口界面.doc_第1页
第1页 / 共33页
ATM标准管理系统java窗口界面.doc_第2页
第2页 / 共33页
ATM标准管理系统java窗口界面.doc_第3页
第3页 / 共33页
ATM标准管理系统java窗口界面.doc_第4页
第4页 / 共33页
ATM标准管理系统java窗口界面.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、BAM银行账户管理系统(ATM管理系统)本系统采取JAVA语言并在eclipse环境下编写测试完成,包含类概念,和面向对象几大特征(继承,封装,多态,抽象),也有异常处理机制,采取集合(愈加好)存放账户数据,基础能够满足大多数BAM系统相关实现,且代码内标注大量注释,读者能够很轻松地了解相关逻辑,大家能够快乐参考。系统介绍:特点:采取窗口界面风格,而不是传统命令行、控制台运作模式1、JAVA类面相对象应用,拥有异常处理机制,不会因为输入错误而造成程序瓦解2、关键有7个类,即Account(账户类)SaveAccount(储蓄账户类):不能透支CreditAccount(信用账户类):能够透支B

2、ank(银行类)ATMOpenAccountFrame(开户窗口页面)ATMLoginFrame(登录窗口页面)ATMMainFrame(操作窗口页面) 带有完善相关信息提醒弹出窗口 见下面截图 类具体属性级行为见代码 3、各个类之间相互关系,包含继承、封装、多态、抽象,在多态中又包含重载和重 写,请读者注意相关联络(关注注释) 4、能够实现数据保留功效,数据将保留在文件中(即当你注册了一个账户,下次再登 陆系统时,能够实现和上次最终操作相衔接) 5、账户号自动生成,比较符合现实 6、关键功效有:1.开户 2.查询账户余额 3.存款 4.取款 5.转账(一个账户到另一个账户)等 7、运行时界面

3、简示1.初始界面(账户登录) 2.账户登录后界面 3.相关信息提醒一览(只列举一部分)1、查询:2、存款: 3、取款: 4、转账: 4、用户开户界面:注意事项:1、本系统采取编程环境是JDK1.7,jer7。所以,运行代码需要保持电脑上所装JDK为1.7以上版本,如有报错,只需换个高一点版本即可。注意:第一次装JDK,要配置环境变量(请查阅相关资料,比较简单)2、本系统代码包含到包,所以假如报名不一致就会报错,处理方法:修改一下包名即可3、提议把各个类写在同一个包下面,且每一个类单独写一个java文件,以下图:4、在运行程序前,需要在项目下面新建一个account.txt(用来保留数据)文件(

4、如上图),并在其中写入最少一个账户信息,(以下图,其中每项代表意思,请读者参考代码内注释),不然在初始化时候会因为找不到账户信息,从而产生异常。系统源码:Account类package com.qx;import javax.swing.JOptionPane;/* * 账户类:包含两种账户类型-1.储蓄账户 2.信用账户 */public abstract class Account /属性protected long id;protected String password;protected String name;protected String personId;protected

5、String accountType;protected double balance;/结构方法public Account()super();public Account(long id, String password, String name, String personId,String type,double balance) super();this.id = id;this.password = password;this.name = name;this.personId = personId;this.accountType = type;this.balance = ba

6、lance;/getXxx,setXxx方法public long getId() return id;public void setId(long id) this.id = id;public String getPassword() return password;public void setPassword(String password) this.password = password;public String getName() return name;public void setName(String name) this.name = name;public Strin

7、g getPersonId() return personId;public void setPersonId(String personId) this.personId = personId;public String getAccountType() return accountType;public void setAccountType(String accountType) this.accountType = accountType;public double getBalance() return balance;public void setBalance(double ba

8、lance) this.balance = balance;/* * 存款 */public void deposit(double money)balance += money;/* * 取款(取款方法由账户类型决定,所以设为抽象方法,对应Account类应设为抽象类) */public abstract void withdraw(double money);SavingAccount类package com.qx;import javax.swing.JOptionPane;/* * 储蓄账户类 */public class SavingAccount extends Account /

9、结构函数public SavingAccount() super();public SavingAccount(long id, String password, String name, String personId,String accountType, double balance) super(id, password, name, personId, accountType, balance);/对父类withdraw()实现public void withdraw(double money)if(balance money)/*System.out.println(对不起,账户余

10、额不足!);*/JOptionPane.showMessageDialog(null, 对不起,账户余额不足!,信息提醒,JOptionPane.ERROR_MESSAGE);elsebalance -= money;CresitAccount类package com.qx;import javax.swing.JOptionPane;/* * 信用账户类,增加一个信用额度ceiling属性 */public class CreditAccount extends Accountprivate int ceiling;/结构函数public CreditAccount()super();pub

11、lic CreditAccount(long id, String password, String name,String personId,String accountType, double balance, int ceiling)super(id, password, name, personId, accountType, balance);this.ceiling = ceiling;/getXxx,setXxx方法public int getCeiling() return ceiling;public void setCeiling(int ceiling) this.cei

12、ling = ceiling;/实现父类withdraw()public void withdraw(double money)if(balance + ceiling) money)/*System.out.println(对不起,已超出您信用额度!);*/JOptionPane.showMessageDialog(null, 对不起,已超出您信用额度!,信息提醒,JOptionPane.ERROR_MESSAGE);elsebalance -= money;Bank类package com.qx;import java.io.BufferedReader;import java.io.Bu

13、fferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Properties;import javax.swing.JOptionPane;/* * Bank类 * 编写Ba

14、nk类,属性:1.目前全部账户对象集合,存放在数组中2.目前账户数量方法:1.用户开户,需要参数:id,密码,密码确定,姓名,身份证号码,账户类型,返回新创建Account对象账号, 提醒:用s1.equals(s2) 能够比较s1,s2两个字符串值是否相等.账户类型是一个整数,为0时候表示储蓄账户,为1时候表示信用账户2.用户登录,参数:id,密码 返回登录账户账号3.用户存款,参数:id,存款数额,返回void4.用户取款,参数:id,取款数额,返回void5.查询余额,参数:id,返回该账户余额 double用户会经过调用Bank对象以上方法来操作自己账户,请分析各个方法需要参数 */p

15、ublic class Bank /*private Account accounts = new Account20;*/private List accountsList;private int number;/账户数目private int id = 1001;/确定银行账号从1001开始生成,即第一个账户账号是1001/结构函数public Bank() accountsList=new ArrayList();number = 0;BufferedReader bufReader = null;Properties props=System.getProperties();Strin

16、g path=props.getProperty(user.dir);try bufReader=new BufferedReader(new FileReader(new File(path,account.txt);String s = bufReader.readLine();while(s != null)String str = s.split(,);if(str4.equals(0)Account savingAcc = new SavingAccount(Long.parseLong(str0),str1.toString(), str2.toString(),str3.toSt

17、ring(),str4.toString(),Double.parseDouble(str5);accountsList.add(savingAcc);elseAccount creditAcc = new CreditAccount(Long.parseLong(str0),str1.toString(), str2.toString(),str3.toString(),str4.toString(),Double.parseDouble(str5),5000);accountsList.add(creditAcc);number +;id+;s = bufReader.readLine()

18、; catch (NumberFormatException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();finallytry if(bufReader != null)bufReader.close();

19、catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();/getXxx,setXxxpublic List getAccounts() return accountsList;public void setAccounts(List accounts) this.accountsList = accounts;public int getNumber() return number;public void setNumber(int number) this.number = number;publi

20、c int getId() return id;public void setId(int id) this.id = id;/* * 开户 */public Account openAccount(String passwd1, String passwd2, String name, String personId, String type)/创建一个新账户Account account = null;/判定两次密码是否一致if(passwd1.equals(passwd2)/若一致,再判定账户类型(依据type值)if(type.equals(1)/可令开始余额为10,信用额度为5000

21、account = new CreditAccount(id, passwd1, name, personId, type, 10, 5000);elseaccount = new SavingAccount(id, passwd1, name, personId, type, 10);/将账户存入账户集合accountsList中accountsList.add(account);JOptionPane.showMessageDialog(null, 开户成功!,信息提醒, JOptionPane.INFORMATION_MESSAGE);JOptionPane.showMessageDia

22、log(null, 您卡号为:+id+n+ 您密码为:+passwd1+n+您户名为:+name+n+ 您身份证号为:+personId+n+您账户类型为:+type+n,信息提醒, JOptionPane.INFORMATION_MESSAGE);account.accountType = type;number+;id+;return account;/此时开户成功elseJOptionPane.showMessageDialog(null, 对不起!您两次密码输入不匹配,开户失败!,信息提醒,JOptionPane.ERROR_MESSAGE);return null;/此时开户失败/*

23、 * 保留数据 */public void saveAccountDate()BufferedWriter bufWriter=null;try Properties props=System.getProperties();String path=props.getProperty(user.dir);String s = null;bufWriter=new BufferedWriter(new FileWriter(new File(path,account.txt);for(Iterator iterator = accountsList.iterator();iterator.has

24、Next();)/若存在账户Account acc = (Account) iterator.next();/写入账户信息到account.txtbufWriter.write(acc.id+,);bufWriter.write(acc.getPassword()+,);bufWriter.write(acc.getName()+,);bufWriter.write(acc.getPersonId()+,);bufWriter.write(acc.getAccountType()+,);bufWriter.write(Double.toString(acc.getBalance();bufWr

25、iter.newLine();bufWriter.flush();/清空缓存中内容 catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();finallytry if(bufWriter!=null)bufWriter.close(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();/* * 登录验证 */public Account verifyAccount(long id, String pa

26、ssword)Account account = null;Account acc = null;for(Iterator iterator = accountsList.iterator(); iterator.hasNext();)/若存在账户acc = (Account) iterator.next();if (acc != null) if (id = acc.getId() & password.equals(acc.getPassword() account = acc;break;elsebreak;return account;/* * 转账验证(方法重载) */public

27、Account verifyAccount(long id)Account account = null;Account acc = null;for(Iterator iterator = accountsList.iterator(); iterator.hasNext();)/若存在账户acc = (Account) iterator.next();if (acc != null) if (id = acc.getId() account = acc;break;elsebreak;return account;/* * 转账 */public void transferAccount(

28、Account account1, Account account2, double money)account1.withdraw(money);account2.deposit(money);/* * 存款 */public void deposit(Account account, double money)account.deposit(money);/* * 取款 */public void withdraw(Account account, double money)account.withdraw(money);ATMLoginFrame类package com.qx;impor

29、t java.awt.Dimension;import java.awt.GridLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JT

30、extField;public class ATMLoginFrame extends JFrameprivate JLabel jblCardNo,jblPasswd;private JTextField jtfCardNo,jtfPasswd;private JButton jbOk,jbCancel,jbOpenAccount;private JPanel jp1,jp2,jp3,jp4;private Bank bank;public ATMLoginFrame()bank=new Bank();/实例化全部组件jblCardNo=new JLabel(用户名:);jblPasswd=

31、new JLabel(密 码:);jtfCardNo=new JTextField(20);jtfPasswd=new JTextField(20);jbOk=new JButton(确定);jbCancel=new JButton(取消);jbOpenAccount=new JButton(没有账户,开户);jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();jp1.add(jblCardNo);jp1.add(jtfCardNo);jp2.add(jblPasswd);jp2.add(jtfPasswd);

32、jp3.add(jbOk);jp3.add(jbCancel);jp4.add(jbOpenAccount);/将每行逐行添加到frame中this.add(jp1);this.add(jp2);this.add(jp3);this.add(jp4);this.setLayout(new GridLayout(4, 1);/取消默认管理器,设置为3行1列网格布局Dimension d=Toolkit.getDefaultToolkit().getScreenSize();this.setTitle(登陆界面);this.setBounds(d.width-300)/2, (d.height-2

33、00)/2, 300, 200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置关闭窗口时JVM同时推出this.pack();/调整窗口至能容纳组件最小尺寸this.setVisible(true);/设置窗口可见this.setResizable(false);/不能最大化/使用匿名内部类给2个按钮注册监听器jbCancel.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) dispose();/关闭窗口);jbOk

34、.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e) /取出用户界面输入用户名和密码long cardNo=Integer.parseInt(jtfCardNo.getText();String passwd=jtfPasswd.getText();/调用Bank相关方法将二者和正确做比对Account account=bank.verifyAccount(cardNo, passwd);if(account!=null)/假如正确,进入操作界面ATMMainFrame mainFra

35、me=new ATMMainFrame(bank,account);/进入操作界面dispose();/关闭登陆界面else/假如错误,使用对话框提醒错误信息JOptionPane.showMessageDialog(null, 卡号或密码错误, 信息提醒,JOptionPane.ERROR_MESSAGE););jbOpenAccount.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) ATMOpenAccountFrame openFram=new ATMOpenAcc

36、ountFrame();dispose();/关闭登陆界面);/* * param args */public static void main(String args) ATMLoginFrame atm=new ATMLoginFrame();ATMMainFrame类package com.qx;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import jav

37、a.awt.event.ActionListener;import java.util.Scanner;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;public class ATMMainFrame extends JFrame private Account account;private Bank bank;private JButton jbDeposit,jbW

38、ithdraw,jbCancel,jbQuery,jbTransfer;private JLabel jblMsg,jblName;private JPanel jp1,jp2,jp3,jp4;/* * param args */public ATMMainFrame(final Bank bank,Account tmpA)this.account=tmpA;this.bank=bank;jbQuery=new JButton(查询);jbDeposit=new JButton(存款);jbWithdraw=new JButton(取款);jbTransfer=new JButton(转账)

39、;jbCancel=new JButton(退卡);jblName=new JLabel(账户姓名: +account.getName();jblMsg=new JLabel();jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();jp4=new JPanel();jp1.add(jbQuery);jp1.add(jbDeposit);jp2.add(jbWithdraw);jp2.add(jbTransfer);jp3.add(jbCancel);jp4.add(jblName);jp4.add(jblMsg);/将每行逐行添加到frame中

40、this.add(jp1);this.add(jp2);this.add(jp3);this.add(jp4);this.setLayout(new GridLayout(4, 1);/取消默认管理器,设置为4行1列网格布局Dimension d=Toolkit.getDefaultToolkit().getScreenSize();this.setTitle(操作界面);this.setBounds(d.width-300)/2, (d.height-200)/2, 300, 200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/设置关闭窗口时JVM同时推出/this.pack();/调整窗口至能容纳组件最小尺寸

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服