ATM机《Java语言程序设计》课程设计报告_第1页
ATM机《Java语言程序设计》课程设计报告_第2页
ATM机《Java语言程序设计》课程设计报告_第3页
ATM机《Java语言程序设计》课程设计报告_第4页
ATM机《Java语言程序设计》课程设计报告_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河南经贸职业学院信息管理系java程序设计课程设计报告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()类结构介绍:

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

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

4、、keepmoney()类第四个登陆页面主要进行存款设置主要包括:存款金额数目的数字按钮,当点击相应的按钮时,存款金额框内显示相应的存款金额;6、change()类第五个登陆页面主要进行密码修改的设置主要包括:设置“确认”“取消”“返回主页面”三个按钮;两次输入新的密码,当两次密码相同时点击“确认”按钮修改密码成功,第二次进行账户登录时使用修改后的密码7、yuxia()类第六个登陆页面主要进行余额查询的设置主要包括:当点击“查看余额”按钮时查看存款、取款后卡内的总金额,显示在文本框内;当点击“返回主页面”时返回main页面;8、account()类主要保存文件的卡号,密码和账户金额,对进行数据

5、信息在不同的类内调用传递;3 详细设计1.登录界面client()类结构介绍:主要包括:三个标签:“欢迎登录atm机”,“卡号”,“密码”两个文本框:jtextfield和jpasswordfield四个按钮:“登陆账号”,“银行开户”,“重新登录”,“退出系统”对页面使用了空布局。对文本框进行监听,设置卡号只能为数字,且只能输入8位。设置密码框不为空。给四个按钮创建监听actionlistener,四个按钮实现的功能:登陆账号:第一次进入登录界面时,当点击“登录账户”弹出对话框:“请进行银行开户”。重新登录: 当点击“重新登录”按钮,用settext(“”)把文本框和密码框为空。 银行开户:

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

7、ath.random()*100000000);)对生成的卡号进行数据保存(account)由account传递到登陆页面,让生成的卡号与登陆的卡号相同在登录页面进行登录操作;设置密码与确认密码框中的内容相等,如果不相同提示(“joptionpane.showconfirmdialog(this,"两次填写密码不同,请重新输入正确的密码!","提示",joptionpane.ok_cancel_option );”),对生成的密码进行数据保存(account)让后传递到atmclient页面进行密码连接;设置存款金额框存款金额为100的整倍数;当点击“取

8、消开户”按钮时,所有文本框内容为空;当点击“确认开户”按钮时,如果资料填写不完整,系统进行提示(elseif(jtf1.gettext().equals("")|jtf2.gettext().equals("")|jtf3.gettext().equals("")|s3.equals("")|s2.equals("") joptionpane.showmessagedialog(this,"开户失败,资料没填写完整!");)反之,页面转到登陆页面;3.功能界面main()类结

9、构介绍:主要包括:一个标签:“荷塘月色atm机正在为您服务”五个按钮:“取款”、“存款”、“查询余额”、“修改密码”、“退出该界面”对页面使用了空布局。对前四个按钮进行监听,当点击其中任一个按钮时,进入到该按钮实现功能的界面里,当点击“退出该界面”,弹出对话框“确定返回登录面?” 点击是,退出该界面,点击否,留在该界面。4.存款的界面keepmoney()和取款的界面getmoney()结构介绍:主要包括:十个按钮:七个固定存取款钱数的按钮和一个“自定义”(存取款的钱数)按钮,还有“确定”按钮和“返回主页面”的按钮。一个标签:“您提取(存入)的金额数:一个文本框;对页面使用了空布局。给八个存取

10、款的按钮进行监听。实现的功能:当点击七个固定存取款的按钮时,按钮上的钱数显示在文本框中,当点击自定义按钮时,可以在文本框中手动输入钱数。当点击“返回主页面”按钮时,结束该界面的操作,返回main页面里。文本框: 文本框设置为不可编辑。当点击存取款按钮时,钱数显示在文本框中,但不能手动修改文本框中的内容。当点击自定义按钮时,文本框可以手动输入,文本框中输入的存取款的钱数必须是100的倍数,最少为100,最多为5000元,否则弹出对话框进行提醒,存取钱不成功。 自定义一个监听类,对文本框进行监听,自定义输入钱数时,文本框中只能输入数字,且最多可输入四位数。当文本框为空时,点击“确定”按钮,弹出对话

11、框:“请输入存(取)款金额”。在存款keepmoney.java界面时,当点击“确定”按钮,弹出对话框“您已存款*元,余额为*元”。在取款getmoney.java界面时,当点击“确定”按钮时,如果账户金额大于或等于提取金额时,弹出对话框“您已取款*元,余额为*元”。如果账户金额小于提取金额时,弹出对话框“余额不足,取钱失败”,并获取余额数,停止金额的运算。以防止取款不成功,但已透支的现象。5. 修改密码界面change()类结构介绍:继承jframe创建修改密码窗体,设置窗体的空布局;对确认密码框进行监听和数据传递保存(account.setpwd(s2);)传递到client()类内;当两

12、次输入密码相同时点击“确认”按钮密码修改成功,下次登录使用新密码进行登录。;点击“取消”按钮文本框内容消失为空;点击“返回主页面”按钮返回至main()(else if(e.getsource()=jb3)new main();this.setvisible(false););6.查询余额界面yuxia.java()类结构介绍:创建查询余额窗体,应用空布局设置布局;对按钮创建监听(addactionlistener) 当点击“查看余额”按钮时显示卡内当前的余额(运用account类进行数据传递实现(jtf1.settext(account.getcountmoney()+""

13、;);)4 实现1. 运行环境 myeclipse6.52. 运行情况抓图 1 2 3 4 75 总结与体会此次实训基本把我们本学期所学的内容进行综合应用,让我们更加容易简单的了解体验到了未来工作的一般状况,锻炼了我们的实际操作能力,同时也在一定程度上增加了同学们对java语言学习的信心,一些简单的小游戏,通过运用自己所学也是可以实现的,让我们不在对编程感觉那么神秘。团队合作与交流很重要,“团结就是力量”在本次项目开发中真的体会得到,在做项目时,小组成员要知道本小组所做项目的基本构想框架,要做什么、实现什么。如果有自己的想法就要和自己的伙伴进行交流。6 参考文献【1】魏艳铭,java程序设计,

14、河南经贸职业学院:atm机视频提示,2011.6【2】网络资源:/【3】java程序设计精讲,北京:清华大学出版社,2010.97 附录:程序清单1.client.java/atm机的登录界面package client;import javax.swing.*;import client.getmoney.mykeylistener;import java.awt.*;import java.awt.event.*;import .url;public class client extends jframe implements actionlisten

15、erjlabel jl1,jl2,jl3;jlabel jl;/添加图片的标签jtextfield jtf;jpasswordfield jpf;jbutton jb1,jb2,jb3,jb4; static account account;public client(account account)super("atm-client");this.account=account;setlayout(null);jl1=new jlabel("欢迎进入“荷塘月色atm 机”");font f=new font("华文新魏",font.

16、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 jpasswordfield();jb1=new jbutton("登陆账号");jb1.addactionlistener(this);jb2=new jbutton("银行开户"

17、;);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"); imageicon bgimage=new imageicon(resource); /创建图标

18、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, 90,30 );jb3.setbounds(200, 250, 90,30 );jb4.s

19、etbounds(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.setvisible(true);public static void main(string args)

20、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);elsejoptionpane.showmessagedialog(this,

21、"请核对您的卡号和密码,重新登录");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退出系

22、统 int i=joptionpane.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

23、;this.length = 8;public mykeylistener(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

24、 java.awt.*;import java.awt.event.*;import java.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,jb

25、3; jcombobox jcb; bufferedreader br; jlabel msg; 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("确认密码 :")

26、; jl5=new jlabel("用户名:"); jl6=new jlabel("性别:"); jcb = new jcombobox(); jcb.additem("男"); jcb.additem("女"); jl7=new jlabel("存款金额:"); jb1=new jbutton("生成卡号"); jb2=new jbutton("确认开户"); jb3=new jbutton("取消开户"); jtf1=new jte

27、xtfield(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); /监听 jb1.addactionlistener(this); jb2.addactionlistener(this); jb3.addactionlistener(this);

28、 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 bgimage=new imageicon(resource); /创建图标 jl8.seticon(bgimage); jl8

29、.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);/用户名 jl6.setbounds(40, 180, 81, 15);/性别 jcb.setbounds(100, 180,

30、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);/存款金额框 jb2.setbounds(80, 300,100, 25);/确认开户 jb3.setbounds(

31、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); this.setsize(400,400); this.setdefaultcloseoperation(jframe

32、.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=new account(id1,s1,mone);/把生成的卡号、确认密码、生成金额数保存在account类内try/创建

33、文件 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,"卡号已生成,请记住卡号,以便登陆!"); else if

34、(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("&

35、quot;)|jtf2.gettext().equals("")|jtf3.gettext().equals("")|s3.equals("")|s2.equals("") joptionpane.showmessagedialog(this,"开户失败,资料没填写完整!"); else if(integer.parseint(jtf3.gettext()%100!=0) joptionpane.showmessagedialog(this,"存款金额必须是100的倍数!")

36、; jtf3.settext(""); else if(!jtf1.gettext().equals("")&&!jtf2.gettext().equals("")&&!jtf3.gettext().equals("")&&!s3.equals("")&&!s2.equals("") money=totalmoney+(integer.parseint(jtf3.gettext(); joptionpane.sh

37、owmessagedialog(this,"您已开户成功,卡内金额为:"+money); account.setcountmoney(totalmoney+(integer.parseint(jtf3.gettext();new client(account);this.setvisible(false); /写入客户信息保存在message.txt中try filewriter fw = new filewriter(f); bufferedwriter bw=new bufferedwriter(fw); string s = "卡号:"+jtf1.

38、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); jtf1.settext(null); jtf2.settext(

39、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 jtf,int length)this.jtf =

40、 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;import javax.swi

41、ng.*;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);

42、font f=new font("华文琥珀",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 jbu

43、tton("修改密码");jb5.addactionlistener(this);jb6=new jbutton("退出该界面");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

44、,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.setdefa

45、ultcloseoperation(jframe.exit_on_close);this.setvisible(true);public void actionperformed(actionevent e) if(e.getsource()=jb1)new getmoney(account);this.setvisible(false);else if(e.getsource()=jb2)new yuxia(account);this.setvisible(false);else if(e.getsource()=jb4)new keepmoney(account);this.setvisi

46、ble(false);else if(e.getsource()=jb5)new change(account);this.setvisible(false);else if(e.getsource()=jb6)int i=joptionpane.showconfirmdialog(this,"确定要返回登陆界面?","提示",joptionpane.yes_no_option );if(i=1)return;new client(account);this.setvisible(false);public static void main(string

47、 args) new main(account);4.getmoney.java/取款页面package client;import java.awt.*;import javax.swing.*;import java.awt.event.*;import .url;public class getmoney extends jframe implements actionlistenerjbutton jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9,jb10;jlabel jl;jlabel jl1;jtextfield jtf;int a=0;static acc

48、ount account;public getmoney(account account)super("提取现金");this.account=account;setlayout(null);jb1=new jbutton("100");jb1.addactionlistener(this);jb2=new jbutton("300");jb2.addactionlistener(this);jb3=new jbutton("500");jb3.addactionlistener(this);jb4=new jbu

49、tton("1000");jb4.addactionlistener(this);jb5=new jbutton("1500");jb5.addactionlistener(this);jb6=new jbutton("3000");jb6.addactionlistener(this);jb7=new jbutton("自定义");jb7.addactionlistener(this);jb8=new jbutton("5000");jb8.addactionlistener(this);jb

50、9=new jbutton("确定");jb9.addactionlistener(this);jb10=new jbutton("返回主页面");jb10.addactionlistener(this);jl=new jlabel("您提取的金额数为:"); jtf=new jtextfield(4);jtf.addkeylistener(new mykeylistener(jtf);/设置文本框不可手动输入jtf.seteditable(false); /添加图片 jl1= new jlabel(); url resource =

51、 this.getclass().getresource("/images/6.jpg"); imageicon bgimage=new imageicon(resource); /创建图标 jl1.seticon(bgimage); jl1.setbounds(0,0,400,400);jb1.setbounds(20, 40, 100,40 );jb2.setbounds(20, 90,100 ,40 );jb3.setbounds(20,140 ,100 ,40 );jb4.setbounds(280,40 ,100 ,40 );jb5.setbounds(280,9

52、0 ,100 ,40 );jb6.setbounds(280,140 ,100 ,40 );jb7.setbounds(20, 190, 100, 40);jb8.setbounds(280, 190, 100, 40);jb9.setbounds(50,290,100, 40);jb10.setbounds(250,290,100,40 );jl.setbounds(20, 240, 150,40 );jtf.setbounds(180, 250, 100,20 );this.add(jb1);this.add(jb2);this.add(jb3);this.add(jb4);this.add(jb5);this.add(jb6);this.add(jb7);this.add(jb8);this.add(jb9);this.add(jb10);this.add(jl);this.add(jtf);this.add(jl1);this.setsize(400,400);this.setdefaultcloseoperatio

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论