java课设atm机

上传人:沈*** 文档编号:84833756 上传时间:2022-05-04 格式:DOC 页数:37 大小:423KB
返回 下载 相关 举报
java课设atm机_第1页
第1页 / 共37页
java课设atm机_第2页
第2页 / 共37页
java课设atm机_第3页
第3页 / 共37页
点击查看更多>>
资源描述
. -软 件 学 院课程设计报告书课程名称 面向对象程序课程设计 设计题目 ATM柜员机模拟程序专业班级 学 号 姓 名 指导教师 2021年 6 月目 录 1设计时间32设计目的33设计任务34设计内容44.1 概要设计44444.2 总体设计5554.3 详细设计66275总结与展望34参考文献35成绩评定351 设计时间2021年06月8日至2021年06月14日2 设计目的面向对象程序设计是一门实践性很强的计算机专业根底课程,课程设计是学习完该课程后进展的一次较全面的综合练习。JAVA程序设计的设计加深了学生对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用。本次面向对象程序课程设计目标为:通过实践加深学生对面向对象程序设计的理论、方法和根底知识的理解,掌握使用Java语言进展面向对象设计的根本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。通过此次课程设计稳固所学Java语言根本知识增进Java语言编辑根本功掌握JDK等开发工具的运用拓宽常用类库的应用。通过该环节与课程及相关知识加以融会贯穿全面掌握Java语言的编程思想及面向对象程序设计的方法为今后从事实际工作打下坚实的根底。通过实践加深学生对面向对象程序设计的类、对象、方法和根底知识的理解,掌握使用Java语言进展面向对象设计的根本方法,帮助学生建立面向对象的思维模式。在实践中,通过对Java程序的调试,提高学生分析程序中出现的错误和解决这些错误的能力。3设计任务题目:ATM柜员机模拟程序 要求:使用图形用户界面。当输入给定的卡号和密码初始卡号和密码为123456时,系统能登录ATM柜员机系统,用户可以按照以下规则进展:(1)查询余额功能:初始余额为10000元。(2)ATM取款功能:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。(3)ATM存款功能:不能出现负存款。(4)修改密码:新密码长度不小于6位,不允许出现6位完全一样的情况,只有旧密码正确,新密码符合要求,且两次输入一样的情况下才可以成功修改密码。4 设计内容 4.1 概要设计4.1.1 设计思想ATM机主要包括登陆模块,注册设计模块,选择效劳模块,取款模块,存款模块,查询模块,修改密码模块等几个功能模块。其中:(1)登陆模块设计:提示用户输入卡号和密码的信息,要是用户输入的密码有错误,ATM将会提醒您的密码输入错误,请重新输入,ATM允许用户输入三次密码,假设第三次输入也错误,机器将会吞卡。如果用户密码输入正确,点击确认将会进入选择效劳的界面。(2)选择效劳模块设计:该界面显示ATM柜员机的根本功能,如:取款,存款,查询余额,修改密码,退出。当用户选择其中任何一个功能时会进入对应界面,假设选择退出功则将会退出登录界面。(3)取款模块设计:限制取款金额,即每次取款金额为100的倍数,不为负数,总额不超过5000元,支取金额不允许透支。(4)修改密码模块设计:修改密码界面要求新密码长度不小于6位,不允许出现6位完全一样的情况,只有旧密码正确,新密码符合要求,且两次输入一样的情况下才可以成功修改密码。(5)注册界面设计:当新用户使用ATM机时,注册用户。用户名不得与已存在用户同名,且密码长度不小于6位,不允许出现6位完全一样。4.1.2 实现方法ATM柜员机主要是由各个Windows窗口组成,它是由登录页面、选择效劳、取款、查询余额、修改密码和退卡等功能。它的各种按钮的事件和功能可以简单的模拟ATM柜员机的要求。4.1.3程序所能到达的功能运用了事件监听技术来实现ATM的各种功能例如:存款、取款、修改密码、查询。通过使用图形用户界面的设计思路,以方便用户操作,同时也使的程序更加简单。4.2 总体设计4.2.1 Java类和自定义类的层次关系如图JFramecha*unqukuancunkuangaimidenlu图MF类、denlu类、qukuan类、cunkuan类、cha*un类和gaimi类都继承了Java类的JFrame类。4.2.1 自定义类的说明(1) Class Account创立客户,初始化客户信息功能以及保存客户信息,例如:卡号、密码、原有余额、取款后卡里的余额以及存款后卡里的余额。此类中包含的成员有:成员变量code,mima,money和构造方法Account(),获得用户卡号方法get_Code(),获得用户密码方法get_Mima(),获得用户信用卡的金额方法get_Money(),设置取款后的账户余额方法set_Balance(),设置存款后的账户余额方法reccount(),设置修改密码的方法gaimi()。(2) Class MF实现登录的界面,如果卡号和密码匹配就可以登录到主界面否则报错。它的成员有:P1,P2,L1,L2,L3,password,B1,B2,TF1,content,a和构造方法MF和事件监听方法actionPerformed()。(3) Class ZC实现新用户注册界面,如果注册用户名出现重复进展提示。注册成功后进入效劳界面。它的成员有:p1,p2,p3,p4,b1,l1,l2,l3, t1, password,content,v和构造方法ZC和事件监听方法actionPerformed()。(4)Class denlu实现功能的主界面,它的成员有:P3,P4,B1,B2,B3,B4,B5,content,key和构造方法denlu和事件监听方法actionPerformed()。(5)Class qukuan实现取款的界面,如果每次取款金额不为100的倍数,总额超过500元,支取金额透支则报错。它的成员有:P1,P2,L1,B1,B2,TF1,content,key和构造方法qukuan和事件监听方法actionPerformed()。(6)Class cunkuan实现存款的界面,如果输入存款数为负款则报错。它的成员有:P1,P2,L1,B1,B2,TF1,content,key和构造方法cunkuan和事件监听方法actionPerformed()。(7)Class cha*un实现查询余额的界面,它的成员有:P1,P2,L1,B1,content,key和构造方法cunkuan和事件监听方法actionPerformed()。(8)Class gaimi实现查询余额的界面,如果新密码长度不小于6位,没出现6位同的情况,旧密码正确,新密码符合要求,且两次输入一样的情况下才可以成功修改密码否则报错。它的成员有:P1,P2,L1,L2,L3,TF1,TF2,TF3,B1,B2,content,key和构造方法cunkuan和事件监听方法actionPerformed()。除Account类之外,其他的类均实现ActionListener接口。4.3 详细设计4.3.1 程序代码:import java*.swing.*;import java*.swing.event.*;import java.awt.*;import java.awt.event.*;import java.util.*;class Account static String code = null; /信用卡号static String mima = null; /用户密码static int money = 0; /信用卡里金额public Account(String code,String mima,int money )/构造函数this.code = code;this.mima= mima;this.money = money;protected String get_Code() /获取用户信用卡号return code;protected String get_mima() /获得用户密码return mima;public int get_Money() /获得用户信用卡里金额return money;protected void set_Balance(double mon) /设置取款后的账户余额money -= mon;public void reccount(double mon) /设置存款后的账户余额money += mon;String gaimima(String mi) /修改密码方法mima = mi; return mima;class MF e*tends JFrame implements ActionListener /导入接口类JTe*tField t1;JLabel l1, l2, l3, l4;utton b1, b2, b3;JPasswordField password;JPanel p1,p2,p3,p31,p32,p33,p321,p322;Account a=new Account100;int v;public static void main(String args)new MF();public MF()a0 = new Account(shishi, 123456, 10000);int v=1;this.setSize(500,300); password = new JPasswordField(12);t1 = new JTe*tField(10);l1 = new JLabel(用户);l2 = new JLabel(密码); l3 = new JLabel(未注册用户请注册);l4 = new JLabel(欢送使用ATM);b1 = new utton(注册);b2 = new utton(确定);b3 = new utton(取消);b1.addActionListener(this); /B1申请监听b2.addActionListener(this); /B2申请监听Q* q* = new Q*(t1,password);b3.addActionListener(q*); /B3申请监听setLayout(new GridLayout(3, 1); /布局管理p1 = new JPanel();p2 = new JPanel();p3 = new JPanel();this.add(p1);this.add(p2);this.add(p3);p3.setLayout(new GridLayout(1, 3);p31 = new JPanel();p32 = new JPanel();p33 = new JPanel();p3.add(p31);p3.add(p32);p3.add(p33);p32.setLayout(new GridLayout(1, 2);p321 = new JPanel();p322 = new JPanel();p32.add(p321);p32.add(p322);p1.add(l4);p2.add(l1);p2.add(t1);p2.add(l2);p2.add(password);p2.add(l3);p2.add(b1);p321.add(b2);p322.add(b3);p1.setBackground(Color.pink);p2.setBackground(Color.pink);p31.setBackground(Color.pink);p321.setBackground(Color.pink);p322.setBackground(Color.pink);p33.setBackground(Color.pink);this.addWindowListener(new MyWindowMonitor();this.setVisible(true);public void actionPerformed(ActionEvent e) /监听类if (e.getSource() = b1) /判断是否是b1 new ZC(v,a); /进入qukuan setVisible(false); if (e.getSource() = b2) /判断是否是b1 String * = t1.getTe*t(); /把TF1的值强制转换成字符if (*.equals(a0.code) /检查到开场判断是否匹配 for (int i = 1; i = 3; i+) /利用for循环来判断错误密码输入次数if (password.getTe*t().equals(a0.mima) /名字匹配成功后判断密码是否成功new denlu(a0); /密码输入正确后进入denlu的界面setVisible(false);elseJOptionPane.showMessageDialog(null, 对不起密码错误+n您还有 + (3 - i) + 次时机,否则将会吞卡!);/密码错误弹出提示密码错误框break;class MyWindowMonitor implements WindowListener /窗口监听public void windowActivated(WindowEvent e) public void windowClosed(WindowEvent e) public void windowClosing(WindowEvent e) System.e*it(-1); public void windowDeactivated(WindowEvent e) public void windowDeiconified(WindowEvent e) public void windowIconified(WindowEvent e) public void windowOpened(WindowEvent e) class ZC e*tends JFrame implements ActionListener JPanel p1,p2,p3,p4; utton b1;JLabel l1,l2,l3;JTe*tField t1;JPasswordField password;Container content;int v,j;Account a;public ZC(int v,Account a)this.v=v;this.a=a;p1 = new JPanel();l1 = new JLabel(用户注册);p1.add(l1);p2 = new JPanel(); l2 = new JLabel(*);t1 = new JTe*tField(10);p2.add(l2);p2.add(t1);p3 = new JPanel();l3 = new JLabel(密码);password = new JPasswordField(12);p3.add(l3);p3.add(password);p4 = new JPanel();b1 = new utton(确定);b1.addActionListener(this);p4.add(b1);p1.setBackground(Color.pink);p2.setBackground(Color.pink);p3.setBackground(Color.pink);p4.setBackground(Color.pink);content = this.getContentPane(); /布局定义content.setLayout(new GridLayout(4, 1);content.add(p1);content.add(p2);content.add(p3); content.add(p4); this.pack();this.setLocation(100, 100);this.setTitle(用户注册); this.setSize(500, 300); this.setResizable(false);this.show();public void actionPerformed(ActionEvent event) /接口监听String * = t1.getTe*t();for(int j=0;jv;j+)if (*.equals(aj.code)JOptionPane.showMessageDialog(null, 该用户已存在,请重新命名);t1.setTe*t();elseav=new Account(null,null,0);av.code = *;av.mima= password.getTe*t();av.money = 5000;JOptionPane.showMessageDialog(null, 注册成功);new denlu(aj); setVisible(false);class Q* implements ActionListenerJTe*tField n1;JPasswordField n2;public Q*(JTe*tField n1,JPasswordField n2 )this.n1=n1;this.n2=n2;public void actionPerformed(ActionEvent e)n1.setTe*t();n2.setTe*t();class denlu e*tends JFrame implements ActionListener /导入接口类JPanel p2,p3,p4; utton b1, b2, b3, b4, b5;JLabel l1;Container content; Account key; /定义客户类传从参数keypublic denlu(Account key)this.key = key; /把key传到顶层容器p2 = new JPanel();l1 = new JLabel(欢送进入用户界面);p2.add(l1);p3 = new JPanel(); b1 = new utton(取款);b1.addActionListener(this); /b1申请监听b2 = new utton(存款); b2.addActionListener(this); /b2申请监听b3 = new utton(查询余额); b3.addActionListener(this); /b3申请监听b4 = new utton(修改密码); b4.addActionListener(this); /b4申请监听p3.add(b1);p3.add(b2);p3.add(b3);p3.add(b4);p4 = new JPanel(); b5 = new utton(退出); b5.addActionListener( /定义一个匿名类 new ActionListener()public void actionPerformed(ActionEvent event)System.e*it(0); /退出登陆p4.add(b5);p2.setBackground(Color.pink);p3.setBackground(Color.pink);p4.setBackground(Color.pink);content = this.getContentPane(); /布局定义content.setLayout(new GridLayout(3, 1);content.add(p2);content.add(p3); content.add(p4); this.pack();this.setLocation(100, 100);this.setTitle(ATM); this.setSize(500, 300); this.setResizable(false);this.show(); public void actionPerformed(ActionEvent event) /接口监听 if (event.getSource() = b1) /判断是否是b1 new qukuan(key); /进入qukuan setVisible(false); if (event.getSource() = b2) /判断是否是b2 new cunkuan(key); /进入cunkuan setVisible(false); if (event.getSource() = b3) /判断是否是b3 new cha*un(key); /进入cha*un setVisible(false); if (event.getSource() = b4) /判断是否是b4 new gaimi(key); /进入gaimi setVisible(false); class qukuan e*tends JFrame implements ActionListener /导入接口类JPanel P1,P2,P3; JLabel L1; utton B1, B2; JTe*tField TF1; Container content; Account key; /定义客户类传从参数keypublic qukuan(Account key)this.key = key; /把key传到顶层容器P1 = new JPanel(); L1 = new JLabel(请输入您要取的金额:); P1.add(L1);P2 = new JPanel();TF1 = new JTe*tField(10); P2.add(TF1);P3 = new JPanel(); B1 = new utton(确定); B1.addActionListener(this); /B1申请一个监听B2 = new utton(返回); B2.addActionListener(this); /B2申请一个监听P3.add(B1);P3.add(B2);P1.setBackground(Color.pink);P2.setBackground(Color.pink);P3.setBackground(Color.pink);content = this.getContentPane(); /布局定义content.setLayout(new GridLayout(3, 1);content.add(P1);content.add(P2);content.add(P3); this.pack();this.setLocation(100, 100);this.setTitle(取 款); this.setSize(500,300); this.setResizable(false);this.show();public void actionPerformed(ActionEvent e) /接口监听类if (e.getSource() = B1) /判断是是否是B1 double money =Double.parseDouble(TF1.getTe*t(); /把money转成Doubleif (money % 100 = 0 & money 0)JOptionPane.showMessageDialog(this, 取款成功,你已经成功取款 + TF1.getTe*t() + 元!);key.set_Balance(money); /把存的钱传回客户类TF1.setTe*t();return;elseJOptionPane.showMessageDialog(this, 对不起,你所输入的金额有误+n每次取款金额为的倍数且总额不得超过5000元+n请您重新输入!);if (e.getSource() = B2) /判断是是否是B2new denlu(key); /返回denlusetVisible(false);class cunkuan e*tends JFrame implements ActionListener /导入接口类JPanel P1,P2; JLabel L1; utton B1, B2; JTe*tField TF1; Container content; Account key; /定义客户类传从参数keypublic cunkuan(Account key)this.key = key; /把key传到顶层容器P1 = new JPanel(); L1 = new JLabel(请输入您要存入的金额:); TF1 = new JTe*tField(10); P1.add(L1);P1.add(TF1);P2= new JPanel(); B1 = new utton(确定); B1.addActionListener(this); /B1申请一个监听B2 = new utton(返回); B2.addActionListener( /定义一个匿名类监听new ActionListener()public void actionPerformed(ActionEvent event)KQActionPerformed(event); );P2.add(B1);P2.add(B2);P1.setBackground(Color.pink);P2.setBackground(Color.pink);content = this.getContentPane(); /布局定义content.setLayout(new GridLayout(2, 1);content.add(P1); content.add(P2); this.pack();this.setLocation(100, 100);this.setTitle(存 款); this.setSize(500,300); this.setResizable(false);this.show(); /显示public void actionPerformed(ActionEvent e) /接口监听类if (e.getSource() = B1) /判断是是否是1 double money = Double.parseDouble(TF1.getTe*t(); /把money转成Doubleif (money = 0)JOptionPane.showMessageDialog(this, 存款成功,你已经成功存款 + TF1.getTe*t() + 元!);key.reccount(money); /把存的钱传回客户类TF1.setTe*t();return;elseJOptionPane.showMessageDialog(this, 对不起,你所输入的金额有误+n要求不能出现负存款);public void KQActionPerformed(ActionEvent event) /匿名类监听过程if (event.getSource() = B2) /判断要是B2new denlu(key); /返回denlu界面setVisible(false);class cha*un e*tends JFrame implements ActionListener /导入接口类JPanel P1,P2; JLabel L1; utton B1; Container content; Account key; /定义客户类传从参数keypublic cha*un(Account key)this.key = key; /把key传到顶层容器P1 = new JPanel(); L1 = new JLabel(您的剩余金额为: + key.get_Money()+元);P1.add(L1);P2 = new JPanel(); B1 = new utton(返回);B1.addActionListener(this);P2.add(B1);P1.setBackground(Color.pink);P2.setBackground(Color.pink);content = this.getContentPane(); /布局定义content.setLayout(new GridLayout(2, 1);content.add(P1); content.add(P2); this.pack();this.setLocation(100, 100);this.setTitle(查 询 余 额); this.setSize(500, 300); this.setResizable(false);this.show();public void actionPerformed(ActionEvent e) /接口监听类if (e.getSource() = B1) /判断是否是B1 new denlu(key); /返回denlusetVisible(false);class gaimi e*tends JFrame implements ActionListener /导入接口类JPanel P1, P2,P3,P4; JLabel L1, L2, L3; JTe*tField TF1, TF2, TF3; utton B1, B2; Container content; Account key; /定义客户类传从参数keypublic gaimi(Account key)this.key = key; /把key传到顶层容器P1 = new JPanel();P2 = new JPanel(); P3 = new JPanel(); L1 = new JLabel(请输入您的原始密码:); L2 = new JLabel(请输入您要修改的密码:);L3 = new JLabel(请确认您要修改的密码:); TF1 = new JTe*tField(15); TF2 = new JTe*tField(15); TF3 = new JTe*tField(15); P1.add(L1);P1.add(TF1);P2.add(L2);P2.add(TF2);P3.add(L3);P3.add(TF3);P4 = new JPanel(); B1 = new utton(确定); B1.addActionListener(this); /B1申请监听 B2 = new utton(返回登录); B2.addActionListener(this); /B2申请监听P4.add(B1);P4.add(B2);P1.setBackground(Color.pink);P2.setBackground(Color.pink);P3.setBackground(Color.pink);P4.setBackground(Color.pink);content = this.getContentPane(); /布局定义content.setLayout(new GridLayout(4, 1);content.add(P1); content.add(P2);content.add(P3);content.add(P4);this.pack();this.setLocation(100, 100);this.setTitle(修 改 密 码); this.setSize(500, 300); this.setResizable(false);this.show(); /显示public void actionPerformed(Ac
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!