课程设计ATM柜员机模拟程序.docx
- 文档编号:25913212
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:27
- 大小:535.90KB
课程设计ATM柜员机模拟程序.docx
《课程设计ATM柜员机模拟程序.docx》由会员分享,可在线阅读,更多相关《课程设计ATM柜员机模拟程序.docx(27页珍藏版)》请在冰豆网上搜索。
课程设计ATM柜员机模拟程序
课程设计-ATM柜员机模拟程序
软件学院
课程设计报告书
课程名称面向对象程序设计
设计题目ATM柜员机模拟程序
专业班级软件工程
学号
姓名
指导教师刘腊梅
1设计时间
2015年月
2设计目的
掌握图形用户界面设计方法,掌握常用swing组件的使用和事件处理程序设计.
3设计题目
ATM柜员机模拟程序
4设计任务
使用图形用户界面。
当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:
(1)查询余额功能:
初始余额为10000元
(2)ATM取款功能:
每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
(3)ATM存款功能:
不能出现负存款。
(4)修改密码:
新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
5设计内容
5.1kehu类代码
importjavax.swing.*;
importjavax.swing.event.*;
importjava.awt.*;
importjava.awt.event.*;//导入包
importjava.util.*;
classkehu//定义客户类
{
Stringzh;//定义账号
Stringpswf;//定义密码
doublejine;//定义金额
publickehu(){}//构造GUKE
publickehu(Stringzh,Stringpswf,doublejine)
{
this.zh=zh;
this.pswf=pswf;
this.jine=jine;
}
Stringgetzh()//定义成员变量账号
{
returnzh;//成员方法
}
doublesetMima(doublepswf)//定义成员变量密码
{
returnpswf;//成员方法
}
doublegetJine()//定义成员变量金额
{
returnjine;//定义成员方法
}
voidcunkuan(doublemoney)//定义成员变量存款
{
jine=jine+money;//定义成员方法
}
voidquqian(doublemoney)//定义成员变量取款
{
jine=jine-money;//定义成员方法
}
Stringxiugaim(Stringmi)//定义成员变量密码
{
pswf=mi;//定义成员方法
returnpswf;
}
}
5.2ATM主界面模块设计
classATMextendsJFrameimplementsActionListener//导入接口类
{
JPanelp1,p2,p3;//定义个面板
JLabell1,l2,l3,l4;//定义个标签
JPasswordFieldpswf;//定义一个密码文本
JButtonjb1,jb2;//定义个按钮
JTextFieldjtf1,jc1;//定义个文本框
Containercontent;//定义一个容器
kehu[]g=newkehu[4];//定义客户类数组
publicATM()//布局
{
g[0]=newkehu("liuyiping","123456",10000);//客户类数组里给的帐号,密码,钱数
g[1]=newkehu("chengyang","123456",10000);
g[2]=newkehu("zhangzhicheng","123456",10000);
g[3]=newkehu("pengzhanyuan","123456",10000);
p1=newJPanel();
p2=newJPanel();//定义第二个面板
l2=newJLabel("卡号:
");//定义标签l2
jc1=newJTextField(10);//定义账号文本
l3=newJLabel("密码:
");//定义标签l3
pswf=newJPasswordField(12);//定义密码文本
l4=newJLabel("欢迎使用自动取款机");
p1.add(l4);
p2.add(l2);//把它们分别镶在面板上
p2.add(jc1);
p2.add(l3);
p2.add(pswf);
p3=newJPanel();//定义第三个面板
jb1=newJButton("登录");//定义按钮登录jb1
jb1.addActionListener(this);//jb1申请监听
jb2=newJButton("注销");//定义按钮注销jb2
jb2.addActionListener(this);//jb2申请监听
p3.add(jb1);//把它们添加到p3面板里
p3.add(jb2);
content=this.getContentPane();//布局定义
content.setLayout(newBorderLayout());
content.add(p1,BorderLayout.NORTH);
content.add(p2,BorderLayout.CENTER);//定义中部为面板p2
content.add(p3,BorderLayout.SOUTH);//定义底部为面板p3
this.pack();
this.setTitle("ATM柜员机");//定义为窗口名称
this.setBounds(300,300,400,300);//定义窗口的大小
this.setResizable(false);
this.show();//显示
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭、退出
}
publicvoidactionPerformed(ActionEvente)//监听类
{
Stringx=jc1.getText();
if(e.getSource()==jb1)//如果点击是jb1按钮就进入For
{for(inti=0;i<4;i++)//判断名字在数组的位置
if(x.equals(g[i].zh))//检查到开始判断是否匹配
{if(pswf.getText().equals(g[i].pswf))//名字匹配成功后判断密码是否成功{
newXUANZE(g[i]);//密码真确后进入XUANZE的界面
}
else
{
JOptionPane.showMessageDialog(this,"密码错误!
");//密码错误弹出提示密码错误
}
}
}
else
System.exit(0);//注销事件退出
}
publicstaticvoidmain(Stringargs[])//定义的MAIN,才能进入。
{
newATM();
}
}
主界面
密码输入错误提示栏
5.3选择页面模块设计
classXUANZEextendsJFrameimplementsActionListener//导入接口类
{
JPanelp2,p3;//定义个面板
JLabell1;//定义个标签
JButtonjb1,jb2,jb3,jb4,jb5;//定义个按钮
Containercontent;//定义一个容器
kehukey;//定义客户类传从参数key
publicXUANZE(GUKEkey)
{
this.key=key;
p2=newJPanel();//定义面板
jb1=newJButton("ATM取款");//定义jb1按钮ATM取款
jb1.addActionListener(this);//jb1申请监听
jb2=newJButton("ATM存款");//定义jb2按钮ATM存款
jb2.addActionListener(this);//jb2申请监听
jb3=newJButton("查询余额");//定义jb3按钮查询余额
jb3.addActionListener(this);//jb3申请监听
jb4=newJButton("修改密码");//定义jb4按钮修改密码
jb4.addActionListener(this);//jb4申请监听
p2.add(jb1);
p2.add(jb2);
p2.add(jb3);
p2.add(jb4);
p3=newJPanel();//定义面板
jb5=newJButton("退出");//定义jb5按钮退出
jb5.addActionListener(//定义一个匿名类
newActionListener()
{
publicvoidactionPerformed(ActionEventevent)
{
System.exit(0);//退出登陆
}
}
);
p3.add(jb5);
content=this.getContentPane();//布局定义
content.setLayout(newBorderLayout());
content.add(p2,BorderLayout.CENTER);//定义中部为面板p2
content.add(p3,BorderLayout.SOUTH);//定义底部为面板p3
this.pack();
this.setTitle("进入界面");//定义为窗口名称
this.setBounds(300,300,400,300);//定义窗口的大小
this.setResizable(false);
this.show();
}
publicvoidactionPerformed(ActionEventevent)//接口监听
{
if(event.getSource()==jb4)//判断是否是jb4
{
newXgmm(key);//进入Xgmm
setVisible(false);
}
if(event.getSource()==jb1)//判断是否是jb1
{
newQUKUAN(key);//进入QUKUAN
setVisible(false);
}
if(event.getSource()==jb2)//判断是否是jb2
{
newCUNKUAN(key);//进入CUNKUAN
setVisible(false);
}
if(event.getSource()==jb3)//判断是否是jb3
{
newCHAXUN(key);//进入CHAXUN
setVisible(false);
}
}
}
进入选择界面
5.4存款模块设计
classCUNKUANextendsJFrameimplementsActionListener//导入接口类
{
JPanelp2,p3;//定义个面板
JLabell1;//定义个标签
JButtonjb1,jb2;//定义个按钮
JTextFieldjtf1;//定义一个文本框
Containercontent;//定义一个容器
kehukey;//定义客户类传从参数key
publicCUNKUAN(kehukey)
{
this.key=key;//把key传到顶层容器
p2=newJPanel();//定义面板
l1=newJLabel("请输入您要存入的金额:
");//定义一个标签请输入您要存入的金额:
jtf1=newJTextField(10);//定义一个文本框
p2.add(l1);
p2.add(jtf1);
p3=newJPanel();//定义第三个面板
jb1=newJButton("确定");//定义一个按钮确定
jb1.addActionListener(this);//jb1申请一个监听
jb2=newJButton("返回");//定义一个按钮返回
jb2.addActionListener(//定义一个匿名类监听
newActionListener()
{
publicvoidactionPerformed(ActionEventevent)
{
XUANZEActionPerformed(event);
}
}
);
p3.add(jb1);
p3.add(jb2);
content=this.getContentPane();//布局定义
content.setLayout(newBorderLayout());
content.add(p2,BorderLayout.NORTH);//定义顶部为面板p1content.add(p2,BorderLayout.CENTER);//定义中部为面板p2
content.add(p3,BorderLayout.SOUTH);//定义底部为面板p3
this.pack();
this.setTitle("自动存款");//定义为窗口名称
this.setBounds(300,300,400,300);//定义窗口的大小
this.setResizable(false);
this.show();//显示
}
publicvoidactionPerformed(ActionEvente)//接口监听类
{
if(e.getSource()==jb1)//判断是是否是jb1
{
doublemoney=Double.parseDouble(jtf1.getText());//把money转成Double
JOptionPane.showMessageDialog(this,"成功存款"+jtf1.getText()+"元!
");//一个提示框填出你成功存了多少
key.cunkuan(money);//把存的钱传回客户类
jtf1.setText("0");
}
}
publicvoidXUANZEActionPerformed(ActionEventevent)//匿名类监听过程
{
if(event.getSource()==jb2)//判断要是jb2
{
newXUANZE(key);//返回XUANZE界面
setVisible(false);
}
}
}
存款界面
存款成功
5.5取款模块设计
classQUKUANextendsJFrameimplementsActionListener//导入接口类
{
JPanelp2,p3;//定义个面板
JLabell1;//定义个标签
JButtonjb1,jb2;//定义个按钮
JTextFieldjtf1;//定义一个文本框
Containercontent;//定义一个容器
GUKEkey;//定义客户类传从参数key
publicQUKUAN(GUKEkey)
{
this.key=key;//把key传到顶层容器
p2=newJPanel();//定义面板
l1=newJLabel("请输入您要取的金额:
");//定义一个标签请输入您要取的金额:
jtf1=newJTextField(10);//定义一个文本框
p2.add(l1);
p2.add(jtf1);
p3=newJPanel();//定义面板
jb1=newJButton("确定");//定义一个按钮确定
jb1.addActionListener(this);//jb1申请一个监听
jb2=newJButton("返回");//定义一个按钮返回
jb2.addActionListener(this);//jb1申请一个监听
p3.add(jb1);
p3.add(jb2);
content=this.getContentPane();//布局定义
content.setLayout(newBorderLayout());
content.add(p2,BorderLayout.CENTER);//定义中部为面板p2
content.add(p3,BorderLayout.SOUTH);//定义底部为面板p3
this.pack();
this.setTitle("自动取款");//定义为窗口名称
this.setBounds(300,300,400,300);//定义窗口的大小
this.setResizable(false);
this.show();
}
publicvoidactionPerformed(ActionEvente)//接口监听类
{
if(e.getSource()==jb1)//判断是是否是jb1
{
doublemoney=Double.parseDouble(jtf1.getText());//把money转成Double
if(money { if(money%100==0) { if(money<=5000) { JOptionPane.showMessageDialog(this,"成功取款"+jtf1.getText()+"元! ");//一个提示框填出你成功取了多少 key.quqian(money);//把存的钱传回客户类 jtf1.setText("0"); } else { JOptionPane.showMessageDialog(this,"提取金额不许超过五千"); } } else { JOptionPane.showMessageDialog(this,"取款许为一百的整数"); } } else { JOptionPane.showMessageDialog(this,"金额不足不许透支");//一个提示框提示你你的卡即将要已透支 } } if(e.getSource()==jb2)//判断是是否是jb2 { newXUANZE(key);//返回XUANZE setVisible(false); } } 取款界面 取款成功 金额不足取款失败提示 提取金额不许超过五千 提取金额需为一百的整数 5.6查询余额模块设计 classCHAXUNextendsJFrameimplementsActionListener//导入接口类 { JPanelp2,p3;//定义个面板 JLabell1;//定义个标签 JButtonjb1;//定义个按钮 Containercontent;//定义一个容器 kehukey;//定义客户类传从参数key publicCHAXUN(kehukey){ this.key=key;//把key传到顶层容器 p2=newJPanel();//定义面板 l1=newJLabel("您的剩余金额为: "+key.getJine()); p2.add(l1); p3=newJPanel();//定义面板 jb1=newJButton("返回"); jb1.addActionListener(this); p3.add(jb1); content=this.getContentPane();//布局定义 content.setLayout(newBorderLayout()); content.add(p2,BorderLayout.CENTER);//定义中部为面板p2 content.add(p3,BorderLayout.SOUTH);//定义底部为面板p3 this.pack(); this.setTitle("查询余额");//定义为窗口名称 this.setBounds(300,300,400,300);//定义窗口的大小 this.setResizable(false); this.show(); } publicvoidactionPerformed(ActionEvente)//接口监听类 {if(e.getSource()==jb1)//判断是否是jb1 { newXUANZE(key);//返回XUANZE setVisible(false); } } 开户资金10000元 存700后查询余额 再取款900后查询余额 5.7修改密码模块设计 classXgmmextendsJFrameimplementsActionListener//导入接口类 {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 ATM 柜员机 模拟 程序