课程设计ATM柜员机模拟程序.docx
- 文档编号:29636220
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:27
- 大小:513.66KB
课程设计ATM柜员机模拟程序.docx
《课程设计ATM柜员机模拟程序.docx》由会员分享,可在线阅读,更多相关《课程设计ATM柜员机模拟程序.docx(27页珍藏版)》请在冰豆网上搜索。
课程设计ATM柜员机模拟程序
软件学院
课程设计报告书
课程名称面向对象程序设计
设计题目ATM柜员机模拟程序
专业班级软件工程
学号
姓名
指导教师腊梅
2015年月
1设计时间1
2设计目的1
3设计题目1
4设计任务1
5设计容1
5.1kehu类代码1
5.2ATM主界面模块设计2
5.3选择页面模块设计5
5.4存款模块设计8
5.5取款模块设计11
5.6查询余额模块设计16
5.7修改密码模块设计18
6总结与展望23
参考文献24
成绩评定24
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(ke
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 ATM 柜员机 模拟 程序