ATM柜员机模拟程序_第1页
ATM柜员机模拟程序_第2页
ATM柜员机模拟程序_第3页
ATM柜员机模拟程序_第4页
ATM柜员机模拟程序_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、目录1设计目的32功能介绍33概要设计33.1 需求分析33.2 自定义类说明33.3 界面设计思想43.4 方法定义说明44详细设计44.1程序流程图44.2登陆界面设计5具体实现过程5关键代码设计65 设计心得与体会261设计目的使用图形用户界面。当输入给定的卡号和密码(初始卡号和初始密码)时,系统能登录atm柜员机系统2功能介绍(1)查询余额:初始余额为10000元(2)atm取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。(3)atm存款:不能出现负存款。(4)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两

2、次输入相同的情况下才可以成功修改密码。3概要设计3.1 需求分析 使用atm机可以节约人力资源,方便用户进行简单常用操作,并且可以为用户提供全天候的服务,提高银行效率。3.2 自定义类说明 a: guest类定义客户类,该类主要提供用户的各种操作提供定义变量 b: dengru类为主类,主要有按钮、文本框,组合框,标签,在组合中选择账号,在密码的文本框中输入各个账号所对应的密码,单击登录按钮可以进入选择界面,如果密码错误,就会弹出对话框,提示“密码错误 ,拒绝登录”。c:kq类为选择界面模块,在选择模块服务中,有各种atm的服务功能,只要在用户该界面中选择按钮,它会弹出各个相应的界面。d: z

3、dqk类为取款类,在取款模块中,用户在文本框中输入它想取的数额,但必须是100的倍数,否则会弹出报错窗口,而且每一次最多只能去5000快,否则会弹出报错窗口,当然取款时不能超过卡里的余额没卡里的余额不可以为负数,否则会弹出报错的窗口。e: zdck类为自动存款类,用户在文本框中输入它想存入的数额,单击确定,就可以存入,如果输错了或者是不想存了,可以单击取消,退出的选择界面。f: cxye类为查询余额类,查询余额的界面主要有文本框,标签,按钮,主要功能是在上一级选择菜单中选择查询余额,就会弹出查询余额的这个对话框。g: xgmm类为修改密码类,主要功能是先在输入原始密码的文本框中输入原来的密码,

4、然后在输入要修改的密码的文本框中输入新密码,新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。3.3 界面设计思想 图形化界面设计3.4 方法定义说明 通过dengru这个类登入kq类的界面选择各种操作。4详细设计4.1程序流程图atm柜员机界面登入账户密码码进入界面文本框输入取款数额修改密码查询余额atm存款atm取款数额是否符合要求文本区输入取款数额输入新旧密码显示余额旧密码是否正确 否 是 否 提示并确认错误提示取款成功重新输入密码根据提示操作返回进入界面弹出确认是是否继续返回进入界面 否否是否继续是4.2登陆界

5、面设计具体实现过程dengru类继承jframe类,有账号选项和输入密码的文本框,在输入密码后登入按钮登入,如果密码错误弹出提示,按要求修改后可重新登入。之后进入kq类定义的atm机界面,选择不同的选项进入不同操作,在进行各种操作是有错误时可根据弹出的对话框进行修改。 关键代码设计import javax.swing.*;import javax.swing.event.*; import java.awt.*;import java.awt.event.*;import java.util.*;class guest / 定义客户类string zh; /定义账号string pswf; /

6、定义密码double jine; /定义金额 public guest() /构造guestpublic guest(string zh,string pswf,double jine)this.zh=zh; /带入顶层容器,账号,密码,金额this.pswf=pswf;this.jine=jine;string getzh() /定义成员变量账号return zh; /成员方法double setmima(double pswf)/定义成员变量密码return pswf;/成员方法 double getjine()/定义成员变量金额 return jine;/定义成员方法 void cunk

7、uan(double money)/定义成员变量存款 jine=jine+money; /定义成员方法 void quqian(double money)/定义成员变量取款 jine=jine-money; /定义成员方法 string xiugaim(string mi)/定义成员变量密码 pswf = mi; /定义成员方法 return pswf; public class dengru extends jframe implements actionlistener /导入接口类 jpanel p1,p2,p3; jlabel l1,l2,l3,l4; jpasswordfield p

8、swf; jbutton jb1,jb2,jb3; jtextfield jtf1; jcombobox jc1; imageicon myimage; container content; guest g=new guest4; public dengru() g0=new guest(chengchao,199101,10000);帐号,密码,钱数 g1=new guest(baijing,199102,10000); g2=new guest(gaolingling,199103,10000); g3=new guest(zhaofengying,199104,10000);p1 = n

9、ew jpanel(); myimage = new imageicon(yl1.jpg); l1 = new jlabel(myimage); 的上面p1.add(l1); p2 = new jpanel(); l2 = new jlabel(卡号:); jc1 = new jcombobox(); jc1.additem( chengchao ); jc1.additem(baijing);jc1.additem(zhaofengying);jc1.additem(gaolingling); jc1.setselectedindex( 0 ); jc1.seteditable(true);

10、 l3=new jlabel(密 码:); pswf=new jpasswordfield(12); l4 = new jlabel(如果没有账号请注册不能登录); /*jb3 = new jbutton(); p2.add(l2); p2.add(jc1);p2.add(l3);p2.add(pswf);p2.add(l4);/*p2.add(jb3);*/p3 = new jpanel(); /定义第三个面板 jb1 = new jbutton(登录); /定义按钮登录jb1jb1.addactionlistener(this); /jb1申请监听jb2 = new jbutton(注销)

11、; /定义按钮注销jb2jb2.addactionlistener(this); /jb2申请监听 p3.add(jb1); /把它们添加到p3面板里p3.add(jb2); content = this.getcontentpane(); /布局定义 content.setlayout(new borderlayout(); content.add(p1,borderlayout.north); /定义顶部为面板p1 content.add(p2,borderlayout.center); /定义中部为面板p2 content.add(p3,borderlayout.south); /定义底

12、部为面板p3 this.pack(); this.settitle(atm 柜员机); /定义为窗口名称 this.setsize(600,300); / 定义窗口的大小 this.setresizable(false); this.show(); /显示 this.setdefaultcloseoperation( jframe.exit_on_close );/ 关闭、退出 this.validate(); public void actionperformed(actionevent e ) /监听类string x= jc1.getselecteditem().tostring();

13、/把jc1的值强制转换成字符if(e.getsource()=jb1) /如果点击是jb1按钮就进入forfor(int i=0;i4;i+) /判断名字在数组的位置if(x.equals(gi.zh) /检查到开始判断是否匹配 if(pswf.gettext().equals(gi.pswf) /名字匹配成功后判断密码是否成功 new kq(gi); /密码真确后进入kq的界面 setvisible( false); else joptionpane.showmessagedialog( this,密码错误,拒绝登陆); /密码错误弹出提示密码错误 elsesystem.exit(0); /

14、注销事件退出 public static void main(string args) /定义的main,才能进入。 new dengru(); class kq extends jframe implements actionlistener /导入接口类 jpanel p1,p2,p3; /定义3个面板jlabel l1; /定义1个标签jbutton jb1,jb2,jb3,jb4,jb5; /定义5个按钮imageicon myimage; /定义导入图片container content; /定义一个容器 guest key; /定义客户类传从参数keypublic kq(guest

15、 key) this.key =key; /把key传到顶层容器p1 = new jpanel(); /定义第一个面板myimage = new imageicon(yl1.jpg); /定义填入的图片l1 = new jlabel(myimage); /定义把图片放在标签的上面p1.add(l1); p2 = new jpanel(); /定义第二个面板 jb1 = new jbutton(atm取款); /定义jb1按钮atm取款 jb1.addactionlistener(this); /jb1申请监听jb2 = new jbutton(atm存款); /定义jb2按钮atm存款 jb2

16、.addactionlistener(this); /jb2申请监听jb3 = new jbutton(查询余额 ); /定义jb3按钮查询余额 jb3.addactionlistener(this); /jb3申请监听jb4 = new jbutton(修改密码); /定义jb4按钮修改密码 jb4.addactionlistener(this); /jb4申请监听p2.add(jb1);p2.add(jb2);p2.add(jb3);p2.add(jb4);p3 = new jpanel(); /定义第三个面板 jb5 = new jbutton(退出); /定义jb5按钮退出 jb5.a

17、ddactionlistener( /定义一个匿名类 new actionlistener() public void actionperformed( actionevent event ) system.exit(0); /退出登陆 );p3.add(jb5); content = this.getcontentpane(); /布局定义 content.setlayout(new borderlayout(); content.add(p1,borderlayout.north); /定义顶部为面板p1 content.add(p2,borderlayout.center); /定义中部

18、为面板p2 content.add(p3,borderlayout.south); /定义底部为面板p3 this.pack();this.settitle(进入界面); /定义为窗口名称this.setsize(400,300); / 定义窗口的大小 this.setresizable(false);this.show(); public void actionperformed ( actionevent event ) /接口监听 if (event.getsource()=jb4 ) /判断是否是jb4 new xgmm(key); /进入xgmm setvisible(false);

19、 if (event.getsource()=jb1 ) /判断是否是jb1 new zdqk(key); /进入zdqk setvisible(false); if (event.getsource()=jb2 ) /判断是否是jb2 new zdck(key); /进入zdck setvisible( false); if (event.getsource()=jb3 ) /判断是否是jb3 new cxye(key); /进入cxye setvisible( false); class zdck extends jframe implements actionlistener /导入接口

20、类 jpanel p1,p2,p3; /定义3个面板jlabel l1; /定义1个标签jbutton jb1,jb2; /定义2个按钮jtextfield jtf1; /定义一个文本框imageicon myimage; /定义导入图片container content; /定义一个容器guest key; /定义客户类传从参数keypublic zdck(guest key) this.key=key; /把key传到顶层容器 p1=new jpanel(); /定义第一个面板 myimage = new imageicon(yl1.jpg); /定义填入的图片 l1 = new jlab

21、el(myimage); /定义把图片放在标签的上面 p1.add(l1); p2=new jpanel(); /定义第二个面板 l1=new jlabel(请输入您要存入的金额:); /定义一个标签请输入您要存入的金额: jtf1 = new jtextfield(10); /定义一个文本框 p2.add(l1); p2.add(jtf1); p3=new jpanel(); /定义第三个面板 jb1=new jbutton(确定); /定义一个按钮确定 jb1.addactionlistener(this); /jb1申请一个监听 jb2=new jbutton(返回); /定义一个按钮返

22、回 jb2.addactionlistener( /定义一个匿名类监听 new actionlistener() public void actionperformed(actionevent event) kqactionperformed(event); ); p3.add(jb1); p3.add(jb2); content=this.getcontentpane(); /布局定义 content.setlayout(new borderlayout(); content.add(p2,borderlayout.north); /定义顶部为面板p1 content.add(p2,bord

23、erlayout.center); /定义中部为面板p2 content.add(p3,borderlayout.south); /定义底部为面板p3 this.pack(); this.settitle(自 动 存 款); /定义为窗口名称 this.setsize(320,300); / 定义窗口的大小 this.setresizable(false); this.show(); /显示 public void actionperformed (actionevent e) /接口监听类 if(e.getsource()=jb1) /判断是是否是jb1 double money = dou

24、ble.parsedouble(jtf1.gettext();/ 把money转成double joptionpane.showmessagedialog(this,成功存款+jtf1.gettext()+元!);/一个提示框填出你成功存了多少 key.cunkuan(money); /把存的钱传回客户类 jtf1.settext(0); return; public void kqactionperformed ( actionevent event ) /匿名类监听过程 if (event.getsource()=jb2 ) /判断要是jb2 new kq(key); /返回kq界面 se

25、tvisible( false); class zdqk extends jframe implements actionlistener /导入接口类jpanel p1,p2,p3; /定义3个面板jlabel l1; /定义1个标签jbutton jb1,jb2; /定义2个按钮jtextfield jtf1; /定义一个文本框imageicon myimage; /定义导入图片container content; /定义一个容器 guest key; /定义客户类传从参数key public zdqk(guest key) this.key=key; /把key传到顶层容器 p1=new

26、 jpanel(); /定义第一个面板 myimage = new imageicon(yl1.jpg); /定义填入的图片 l1 = new jlabel(myimage); /定义把图片放在标签的上面 p1.add(l1); p2=new jpanel(); /定义第二个面板 l1=new jlabel(请输入您要取的金额:); /定义一个标签请输入您要取的金额: jtf1 = new jtextfield(10); /定义一个文本框 p2.add(l1); p2.add(jtf1); p3=new jpanel(); /定义第三个面板 jb1=new jbutton(确定); /定义一个

27、按钮确定 jb1.addactionlistener(this); /jb1申请一个监听 jb2=new jbutton(返回); /定义一个按钮返回 jb2.addactionlistener(this); /jb1申请一个监听 p3.add(jb1); p3.add(jb2); content=this.getcontentpane(); /布局定义 content.setlayout(new borderlayout(); content.add(p1,borderlayout.north); /定义顶部为面板p1 content.add(p2,borderlayout.center);

28、 /定义中部为面板p2 content.add(p3,borderlayout.south); /定义底部为面板p3 this.pack(); this.settitle(自 动 取 款); /定义为窗口名称 this.setsize(320,300); / 定义窗口的大小 this.setresizable(false); this.show(); public void actionperformed (actionevent e) /接口监听类 if(e.getsource()=jb1) /判断是是否是jb1 if(double.parsedouble(jtf1.gettext()%10

29、0=0&(double.parsedouble(jtf1.gettext()=5000&(double.parsedouble(jtf1.gettext()!=0) double money = double.parsedouble(jtf1.gettext();/ 把money转成double if(moneykey.jine) joptionpane.showmessagedialog(this,成功取款+jtf1.gettext()+元!);/一个提示框填出你成功取了多少 key.quqian(money); /把存的钱传回客户类 jtf1.settext(0); return; els

30、e joptionpane.showmessagedialog(this,你的卡即将要已透支);/一个提示框提示你你的卡即将要已透支 else joptionpane.showmessagedialog(this,取款额必须为100的正整数倍且单次数额5000); if (e.getsource()=jb2 )/判断是是否是jb2 new kq(key); /放回kq setvisible( false); class cxye extends jframe implements actionlistener /导入接口类jpanel p1,p2,p3; /定义3个面板jlabel l1; /

31、定义1个标签jbutton jb1; /定义3个按钮 imageicon myimage; /定义导入图片container content; /定义一个容器guest key; /定义客户类传从参数key public cxye(guest key) this.key=key; /把key传到顶层容器 p1=new jpanel(); /定义第一个面板 myimage = new imageicon(yl1.jpg); /定义填入的图片 l1 = new jlabel(myimage); /定义把图片放在标签的上面 p1.add(l1); p2=new jpanel(); /定义第二个面板

32、l1=new jlabel(您的剩余金额为:+ key.getjine(); p2.add(l1); p3=new jpanel(); /定义第三个面板 jb1=new jbutton(返回); jb1.addactionlistener(this); p3.add(jb1); content=this.getcontentpane(); /布局定义 content.setlayout(new borderlayout(); content.add(p1,borderlayout.north); /定义顶部为面板p1 content.add(p2,borderlayout.center); /

33、定义中部为面板p2 content.add(p3,borderlayout.south); /定义底部为面板p3 this.pack(); this.settitle(查 询 余 额); /定义为窗口名称 this.setsize(320,300); / 定义窗口的大小 this.setresizable(false); this.show(); public void actionperformed ( actionevent e ) /接口监听类 if (e.getsource()=jb1 ) /判断是否是jb1 new kq(key); /放回kq setvisible( false);

34、 class xgmm extends jframe implements actionlistener /导入接口类jpanel p1,p2,p3; /定义3个面板jlabel l1, l2, l3, l4; /定义4个标签jtextfield jtf1,jtf2,jtf3; /定义3个文本框jbutton jb1,jb2; /定义2个按钮imageicon myimage; /定义导入图片container content; /定义一个容器guest key; /定义客户类传从参数keypublic xgmm(guest key)this.key=key; /把key传到顶层容器p1 =

35、new jpanel(); /定义第一个面板myimage = new imageicon(yl1.jpg); /定义填入的图片l1 = new jlabel(myimage); /定义把图片放在标签的上面 p1.add(l1)p2=new jpanel(); /定义第二个面板l2=new jlabel(请输入原始密码:); /定义标签请输入原始密码:l3=new jlabel(输入要修改的密码:); /定义标签输入要修改的密码l4=new jlabel(确认输入的新密码:); /定义标签确认输入的新密码:jtf1=new jtextfield(15); /定义文本框jtf1jtf2=new jtextfield(15); /定义文本框jtf2 jtf3=new jtextfield(15); /定义文本框jtf3p2.add(l2); p2.add(jtf1); p2.add(l3);

温馨提示

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

评论

0/150

提交评论