ATM机《Java语言程序设计》课程设计报告.doc

上传人:文库蛋蛋多 文档编号:2386740 上传时间:2023-02-17 格式:DOC 页数:30 大小:474.50KB
返回 下载 相关 举报
ATM机《Java语言程序设计》课程设计报告.doc_第1页
第1页 / 共30页
ATM机《Java语言程序设计》课程设计报告.doc_第2页
第2页 / 共30页
ATM机《Java语言程序设计》课程设计报告.doc_第3页
第3页 / 共30页
ATM机《Java语言程序设计》课程设计报告.doc_第4页
第4页 / 共30页
ATM机《Java语言程序设计》课程设计报告.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《ATM机《Java语言程序设计》课程设计报告.doc》由会员分享,可在线阅读,更多相关《ATM机《Java语言程序设计》课程设计报告.doc(30页珍藏版)》请在三一办公上搜索。

1、Java语言程序设计课程设计报告题 目: ATM机 班 级: 10信息一班 系 部: 信息管理系 专 业: 计算机应用技术 2011年 6 月 25 日ATM机设计报告目录1 概述21.1 问题分析21.2功能22 总体设计33 详细设计31.登录界面Client()类结构介绍:32.卡号生成界面AtmDemo()类结构介绍:33.功能界面Main()类结构介绍:44.存款的界面KeepMoney()和取款的界面GetMoney()结构介绍:45.修改密码界面Change()类结构介绍:57.查询余额界面Yuxia.java()类结构介绍:54 实现51.运行环境52.运行情况抓图55 总结与

2、体会66 参考文献77 附录: 程序清单71 概述1.1 问题分析模拟ATM机基本操作功能:存款、取款、余额查询、修改密码等;初始账户10000元;修改密码时必须修改两次,确认后才可使用;取款的款项和存款的款项必须是100的整倍数;1.2功能1)模拟ATM机实现当用户进入登陆页面后,用户需先点击银行开户按钮进行银行开户;2)进入银行开户页面之后,进行填写客户信息,系统会自动生成卡号,信息填写完整后系统会自动保存用户信息在生成的文件中,并返回登陆页面进行登录。3)登陆成功之后进入ATM机操作页面进行存款、取款、余额查询、修改密码,点击一个按钮都会显示出对应的页面。2 总体设计1、Client()

3、类第一个登陆页面主要包括:登陆账号按钮、银行开户按钮、重新登录按钮、退出系统按钮;2、AtmDemo()类第二个登陆页面主要进行用户资料填写主要包括:卡号、密码、确认密码、用户名、性别、存款金额标签;生成卡号、确认开户、取消开户按钮;3、Main()类第二个登陆页面主要设置安放按钮,主要包括:取款、存款、修改密码、查询余额、退出该界面按钮并对所有按钮进行监听;4、GetMoney()类第三个登陆页面主要进行取款设置主要包括:提款金额数目的数字按钮,当点击相应的按钮时,提取金额框内显示相应的取款金额;当提款的金额超出卡内总金额时,取款失败;5、KeepMoney()类第四个登陆页面主要进行存款设

4、置主要包括:存款金额数目的数字按钮,当点击相应的按钮时,存款金额框内显示相应的存款金额;6、Change()类第五个登陆页面主要进行密码修改的设置主要包括:设置“确认”“取消”“返回主页面”三个按钮;两次输入新的密码,当两次密码相同时点击“确认”按钮修改密码成功,第二次进行账户登录时使用修改后的密码7、Yuxia()类第六个登陆页面主要进行余额查询的设置主要包括:当点击“查看余额”按钮时查看存款、取款后卡内的总金额,显示在文本框内;当点击“返回主页面”时返回Main页面;8、Account()类主要保存文件的卡号,密码和账户金额,对进行数据信息在不同的类内调用传递;3 详细设计1.登录界面Cl

5、ient()类结构介绍:主要包括:三个标签:“欢迎登录ATM机”,“卡号”,“密码”两个文本框:JTextField和JPasswordField四个按钮:“登陆账号”,“银行开户”,“重新登录”,“退出系统”对页面使用了空布局。对文本框进行监听,设置卡号只能为数字,且只能输入8位。设置密码框不为空。给四个按钮创建监听ActionListener,四个按钮实现的功能:登陆账号:第一次进入登录界面时,当点击“登录账户”弹出对话框:“请进行银行开户”。重新登录: 当点击“重新登录”按钮,用setText(“”)把文本框和密码框为空。 银行开户: 当点击“银行开户”按钮时,界面跳到银行开户的界面里。

6、 退出系统:当点击“退出系统”时,弹出对话框“确定要退出ATM系统?”点击是,退出系统,点击否,留在该界面。当银行开户成功后,再次输入卡号和密码,如果其中一个或全部错误,弹出对话框:“请核对你的卡号和密码,重新登录”,并不设置文本框为空。2.卡号生成界面AtmDemo()类结果介绍:继承Jframe创建银行卡号开户窗体,创建监听;应用空布局设置JLabel标签,JTextField, JPasswordField,JButton,JComboBox复选按钮框在窗体中的位置当点击“生成卡号”按钮时系统会自动生成卡号( inti=(int)(Math.random()*100000000);)对生

7、成的卡号进行数据保存(account)由Account传递到登陆页面,让生成的卡号与登陆的卡号相同在登录页面进行登录操作;设置密码与确认密码框中的内容相等,如果不相同提示(“JOptionPane.showConfirmDialog(this,两次填写密码不同,请重新输入正确的密码!,提示,JOptionPane.OK_CANCEL_OPTION );”),对生成的密码进行数据保存(account)让后传递到ATMClient页面进行密码连接;设置存款金额框存款金额为100的整倍数;当点击“取消开户”按钮时,所有文本框内容为空;当点击“确认开户”按钮时,如果资料填写不完整,系统进行提示(els

8、eif(jtf1.getText().equals()|jtf2.getText().equals()|jtf3.getText().equals()|s3.equals()|s2.equals() JOptionPane.showMessageDialog(this,开户失败,资料没填写完整!);)反之,页面转到登陆页面;3.功能界面Main()类结构介绍:主要包括:一个标签:“荷塘月色ATM机正在为您服务”五个按钮:“取款”、“存款”、“查询余额”、“修改密码”、“退出该界面”对页面使用了空布局。对前四个按钮进行监听,当点击其中任一个按钮时,进入到该按钮实现功能的界面里,当点击“退出该界面

9、”,弹出对话框“确定返回登录面?” 点击是,退出该界面,点击否,留在该界面。4.存款的界面KeepMoney()和取款的界面GetMoney()结构介绍:主要包括:十个按钮:七个固定存取款钱数的按钮和一个“自定义”(存取款的钱数)按钮,还有“确定”按钮和“返回主页面”的按钮。一个标签:“您提取(存入)的金额数:一个文本框;对页面使用了空布局。给八个存取款的按钮进行监听。实现的功能:当点击七个固定存取款的按钮时,按钮上的钱数显示在文本框中,当点击自定义按钮时,可以在文本框中手动输入钱数。当点击“返回主页面”按钮时,结束该界面的操作,返回Main页面里。文本框: 文本框设置为不可编辑。当点击存取款

10、按钮时,钱数显示在文本框中,但不能手动修改文本框中的内容。当点击自定义按钮时,文本框可以手动输入,文本框中输入的存取款的钱数必须是100的倍数,最少为100,最多为5000元,否则弹出对话框进行提醒,存取钱不成功。 自定义一个监听类,对文本框进行监听,自定义输入钱数时,文本框中只能输入数字,且最多可输入四位数。当文本框为空时,点击“确定”按钮,弹出对话框:“请输入存(取)款金额”。在存款KeepMoney.java界面时,当点击“确定”按钮,弹出对话框“您已存款*元,余额为*元”。在取款GetMoney.java界面时,当点击“确定”按钮时,如果账户金额大于或等于提取金额时,弹出对话框“您已取

11、款*元,余额为*元”。如果账户金额小于提取金额时,弹出对话框“余额不足,取钱失败”,并获取余额数,停止金额的运算。以防止取款不成功,但已透支的现象。5. 修改密码界面Change()类结构介绍:继承JFrame创建修改密码窗体,设置窗体的空布局;对确认密码框进行监听和数据传递保存(account.setPwd(s2);)传递到Client()类内;当两次输入密码相同时点击“确认”按钮密码修改成功,下次登录使用新密码进行登录。;点击“取消”按钮文本框内容消失为空;点击“返回主页面”按钮返回至Main()(else if(e.getSource()=jb3)new Main();this.setV

12、isible(false););6.查询余额界面Yuxia.java()类结构介绍:创建查询余额窗体,应用空布局设置布局;对按钮创建监听(addActionListener) 当点击“查看余额”按钮时显示卡内当前的余额(运用Account类进行数据传递实现(jtf1.setText(account.getCountmoney()+);)4 实现1. 运行环境 MyEclipse6.52. 运行情况抓图 1 2 3 4 75 总结与体会此次实训基本把我们本学期所学的内容进行综合应用,让我们更加容易简单的了解体验到了未来工作的一般状况,锻炼了我们的实际操作能力,同时也在一定程度上增加了同学们对Ja

13、va语言学习的信心,一些简单的小游戏,通过运用自己所学也是可以实现的,让我们不在对编程感觉那么神秘。团队合作与交流很重要,“团结就是力量”在本次项目开发中真的体会得到,在做项目时,小组成员要知道本小组所做项目的基本构想框架,要做什么、实现什么。如果有自己的想法就要和自己的伙伴进行交流。6 参考文献【1】魏艳铭,Java程序设计,河南经贸职业学院:ATM机视频提示,2011.6【2】网络资源:http:/www.toedu.org/【3】Java程序设计精讲,北京:清华大学出版社,2010.97 附录:程序清单1.Client.java/ATM机的登录界面package client;impor

14、t javax.swing.*;import client.GetMoney.myKeyListener;import java.awt.*;import java.awt.event.*;import .URL;public class Client extends JFrame implements ActionListenerJLabel jl1,jl2,jl3;JLabel jl;/添加图片的标签JTextField jtf;JPasswordField jpf;JButton jb1,jb2,jb3,jb4; static Account account;public Client(

15、Account account)super(ATM-Client);this.account=account;setLayout(null);jl1=new JLabel(欢迎进入“荷塘月色ATM 机”);Font f=new Font(华文新魏,Font.BOLD,24);jl1.setForeground(Color.BLUE);jl1.setFont(f);jl2=new JLabel(卡号:);jl3=new JLabel(密码:);jtf=new JTextField(8);jtf.addKeyListener(new myKeyListener(jtf);jpf=new JPass

16、wordField();jb1=new JButton(登陆账号);jb1.addActionListener(this);jb2=new JButton(银行开户);jb2.addActionListener(this);jb3=new JButton(重新登录);jb3.addActionListener(this);jb4=new JButton(退出系统);jb4.addActionListener(this); /添加图片 jl= new JLabel(); URL resource = this.getClass().getResource(/images/6.jpg); Imag

17、eIcon bgImage=new ImageIcon(resource); /创建图标 jl.setIcon(bgImage); jl.setBounds(0,0,400,400);jl1.setBounds(25, 40, 400, 40);jl2.setBounds(50, 85, 60, 40);jl3.setBounds(50, 150, 60, 40);jtf.setBounds(120, 90,150, 30);jpf.setBounds(120, 155,150,30);jb1.setBounds(0, 250, 90, 30);jb2.setBounds(100, 250,

18、90,30 );jb3.setBounds(200, 250, 90,30 );jb4.setBounds(300, 250, 90, 30);this.add(jl1);this.add(jl2);this.add(jtf); this.add(jl3);this.add(jpf);this.add(jb1);this.add(jb2);this.add(jb3);this.add(jb4);this.add(jl);this.setSize(400,400);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisibl

19、e(true);public static void main(String args) new Client(account);public void actionPerformed(ActionEvent e) if(e.getSource()=jb1)String s1=jtf.getText();String s2=new String(jpf.getPassword();if(account!=null)if(s1.equals(account.ip)&s2.equals(account.pwd)new Main(account);this.setVisible(false);els

20、eJOptionPane.showMessageDialog(this,请核对您的卡号和密码,重新登录);else if(account=null)JOptionPane.showMessageDialog(this, 请进行银行开户);else if(e.getSource()=jb2)/连接到的AtmDemo.javanew AtmDemo();this.setVisible(false);else if(e.getSource()=jb3)jtf.setText();jpf.setText();else if(e.getSource()=jb4)/设置jb4退出系统 int i=JOpt

21、ionPane.showConfirmDialog(this,您确定要退出ATM机系统?,提示,JOptionPane.YES_NO_OPTION);if(i=1)return;System.exit(0);/创建jtf的监听,使jtf只能输入8个数字,且只能输入数字class myKeyListener extends KeyAdapterprivate JTextField jtf;private int length;public myKeyListener(JTextField jtf)this.jtf = jtf;this.length = 8;public myKeyListene

22、r(JTextField jtf,int length)this.jtf = jtf;this.length = length;public void keyTyped(KeyEvent e)boolean b = Character.toString(e.getKeyChar().matches(d);if(!b | jtf.getText().length() = length)e.consume(); 2.AtmDemo.java/ATM卡号生成页面 package client;import java.awt.*;import java.awt.event.*;import java.

23、io.*;import .Socket;import java.util.Calendar;import .URL;import javax.swing.*;public class AtmDemo extends JFrame implements ActionListener JLabel jl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8; JTextField jtf1,jtf2,jtf3; JPasswordField jpf1,jpf2; JButton jb1,jb2,jb3; JComboBox jcb; BufferedReader br; JLabel msg;

24、 Account account; int totalmoney=10000; int money; public AtmDemo() super(银行卡号开户); this.setLayout(null); jl1=new JLabel(卡号开户); jl2=new JLabel(卡号:); jl3=new JLabel(密码 :); jl4=new JLabel(确认密码 :); jl5=new JLabel(用户名:); jl6=new JLabel(性别:); jcb = new JComboBox(); jcb.addItem(男); jcb.addItem(女); jl7=new

25、JLabel(存款金额:); jb1=new JButton(生成卡号); jb2=new JButton(确认开户); jb3=new JButton(取消开户); jtf1=new JTextField(16); jtf1.setEditable(false);/设置文本框不可见 jtf2=new JTextField(4); jtf3=new JTextField(); jpf1=new JPasswordField(6); jpf2=new JPasswordField(6); msg=new JLabel(); msg.setForeground(Color.RED); /监听 jb

26、1.addActionListener(this); jb2.addActionListener(this); jb3.addActionListener(this); jtf3.addKeyListener(new myKeyListener(jtf3); jl1.setForeground(Color.RED); jl1.setFont(new Font(宋体, Font.PLAIN, 40); /添加图片 jl8= new JLabel(); URL resource = this.getClass().getResource(/images/8.jpg); ImageIcon bgIm

27、age=new ImageIcon(resource); /创建图标 jl8.setIcon(bgImage); jl8.setBounds(0,0,400,400); jl1.setBounds(105, 10, 225, 41);/卡号开户 jl2.setBounds(40, 60, 81, 18);/卡号 jb1.setBounds(297, 60, 91, 18);/生成卡号 jl3.setBounds(40, 90, 81, 18);/密码 jl4.setBounds(40, 120, 81, 18);/确认密码 jl5.setBounds(40, 150, 81, 18);/用户名

28、 jl6.setBounds(40, 180, 81, 15);/性别 jcb.setBounds(100, 180, 110, 18);/复选按钮 jl7.setBounds(40, 210, 81, 15);/存款金额 jtf1.setBounds(100, 60, 190, 18);/卡号框 jpf1.setBounds(100, 90, 170, 18);/密码框 jpf2.setBounds(100, 120, 150, 18);/确认密码框 jtf2.setBounds(100, 150, 130, 18);/用户名框 jtf3.setBounds(100, 210, 90, 18

29、);/存款金额框 jb2.setBounds(80, 300,100, 25);/确认开户 jb3.setBounds(230, 300, 100, 25);/取消开户 msg.setBounds(150,260,270,60); add(jb1); add(jb2); add(jb3); add(jcb); add(jl1); add(jl2); add(jl3); add(jl4); add(jl5); add(jl6); add(jl7); add(jpf1); add(jpf2); add(jtf1); add(jtf2); add(jtf3); add(msg); add(jl8);

30、 this.setSize(400,400); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); public static void main(String args) new AtmDemo(); public void actionPerformed(ActionEvent e) String id1=jtf1.getText();/卡号String s1=new String(jpf2.getPassword();/确认密码int mone=money;/生成的金额数account=n

31、ew Account(id1,s1,mone);/把生成的卡号、确认密码、生成金额数保存在account类内try/创建文件 File f=new File(message.txt); if(e.getSource()=jb1)/生成卡号jtf1.setEditable(true); int i=(int)(Math.random()*100000000); jtf1.setText(Integer.toString(i); jtf1.setEditable(false); msg.setText();/消失信息提示 JOptionPane.showMessageDialog(this,卡号已

32、生成,请记住卡号,以便登陆!); else if(e.getSource()=jb2) /确定开户String s3=new String(jpf1.getPassword();String s2=new String(jpf2.getPassword();if(!s3.equals(s2)JOptionPane.showConfirmDialog(this,两次填写密码不同,请重新输入正确的密码!,提示,JOptionPane.OK_CANCEL_OPTION );jpf2.setText(null); return;else if(jtf1.getText().equals()|jtf2.

33、getText().equals()|jtf3.getText().equals()|s3.equals()|s2.equals() JOptionPane.showMessageDialog(this,开户失败,资料没填写完整!); else if(Integer.parseInt(jtf3.getText()%100!=0) JOptionPane.showMessageDialog(this,存款金额必须是100的倍数!); jtf3.setText(); else if(!jtf1.getText().equals()&!jtf2.getText().equals()&!jtf3.ge

34、tText().equals()&!s3.equals()&!s2.equals() money=totalmoney+(Integer.parseInt(jtf3.getText(); JOptionPane.showMessageDialog(this,您已开户成功,卡内金额为:+money); account.setCountmoney(totalmoney+(Integer.parseInt(jtf3.getText();new Client(account);this.setVisible(false); /写入客户信息保存在message.txt中try FileWriter fw

35、 = new FileWriter(f); BufferedWriter bw=new BufferedWriter(fw); String s = 卡号:+jtf1.getText()+t+用户名:+jtf2.getText()+t +密码:+account.getPwd(); bw.write(s); bw.newLine(); bw.close(); fw.close(); catch(IOException ex) ex.printStackTrace(); else if(e.getSource()=jb3) jpf1.setText(null); jpf2.setText(null

36、); jtf1.setText(null); jtf2.setText(null); jtf3.setText(null); msg.setText(您已成功取消开户!); catch (Exception ex)/只允许输入数字的监听器class myKeyListener extends KeyAdapterprivate JTextField jtf;private int length;public myKeyListener(JTextField jtf)this.jtf = jtf;this.length = 15;public myKeyListener(JTextField j

37、tf,int length)this.jtf = jtf;this.length = length;public void keyTyped(KeyEvent e)boolean b = Character.toString(e.getKeyChar().matches(d);if(!b | jtf.getText().length() = length)e.consume(); 3.Main.java/主要包括:存款、取款、修改密码、查询余额等按钮package client;import java.awt.*;import java.awt.event.*;import .URL;impo

38、rt javax.swing.*;public class Main extends JFrame implements ActionListenerJLabel jl1;JLabel jl;JButton jb1,jb2,jb4,jb5,jb6;static Account account;public Main(Account account)super(ATM机主页面);this.account=account;setLayout(null);jl1=new JLabel(荷塘月色ATM机正在为您服务.);jl1.setBounds(50, 0,300, 80);Font f=new F

39、ont(华文琥珀,Font.BOLD,20);jl1.setForeground(Color.BLUE);jl1.setFont(f);jb1=new JButton(取款);jb1.addActionListener(this);jb2=new JButton(查询余额);/设置初始账户金额为1000元jb2.addActionListener(this);jb4=new JButton(存款);jb4.addActionListener(this);jb5=new JButton(修改密码);jb5.addActionListener(this);jb6=new JButton(退出该界面

40、);jb6.addActionListener(this); /添加图片 jl= new JLabel(); URL resource = this.getClass().getResource(/images/6.jpg); ImageIcon bgImage=new ImageIcon(resource); /创建图标 jl.setIcon(bgImage); jl.setBounds(0,0,400,400);jb1.setBounds(10,110 ,140 ,40 );jb2.setBounds(10,190 ,140 ,40 );jb4.setBounds(200, 110, 140, 40);jb5.setBounds(200, 190, 140,40 );jb6.setBounds(100, 270,140 ,40 );this.add(jl1);this.add(jb1);this.add(jb2);this.add(jb4);this.add(jb5);this.add(jb6);this.add(jl);this.setSize(400,400);this.setDef

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号