ATM机《Java语言程序设计》课程设计报告.docx
《ATM机《Java语言程序设计》课程设计报告.docx》由会员分享,可在线阅读,更多相关《ATM机《Java语言程序设计》课程设计报告.docx(46页珍藏版)》请在冰豆网上搜索。
ATM机《Java语言程序设计》课程设计报告
《Java语言程序设计》课程设计报告
题目:
ATM机
班级:
10信息一班
系部:
信息管理系
专业:
计算机应用技术
2011年6月25日
ATM机设计报告
1概述2
1.1问题分析2
1.2功能2
2总体设计3
3详细设计3
1.登录界面Client()类结构介绍:
3
2.卡号生成界面AtmDemo()类结构介绍:
3
3.功能界面Main()类结构介绍:
4
4.存款地界面KeepMoney()和取款地界面GetMoney()结构介绍:
4
5.修改密码界面Change()类结构介绍:
5
7.查询余额界面Yuxia.java()类结构介绍:
5
4实现5
1.运行环境5
2.运行情况抓图5
5总结与体会6
6参考文献7
7附录:
程序清单7
1概述
1.1问题分析
模拟ATM机基本操作功能:
存款、取款、余额查询、修改密码等;初始账户10000元;修改密码时必须修改两次,确认后才可使用;取款地款项和存款地款项必须是100地整倍数;
1.2功能
1)模拟ATM机实现当用户进入登陆页面后,用户需先点击银行开户按钮进行银行开户;
2)进入银行开户页面之后,进行填写客户信息,系统会自动生成卡号,信息填写完整后系统会自动保存用户信息在生成地文件中,并返回登陆页面进行登录.
3)登陆成功之后进入ATM机操作页面进行存款、取款、余额查询、修改密码,点击一个按钮都会显示出对应地页面.
2总体设计
1、Client()类第一个登陆页面主要包括:
登陆账号按钮、银行开户按钮、重新登录按钮、退出系统按钮;
2、AtmDemo()类第二个登陆页面主要进行用户资料填写主要包括:
卡号、密码、确认密码、用户名、性别、存款金额标签;生成卡号、确认开户、取消开户按钮;
3、Main()类第二个登陆页面主要设置安放按钮,主要包括:
取款、存款、修改密码、查询余额、退出该界面按钮并对所有按钮进行监听;
4、GetMoney()类第三个登陆页面主要进行取款设置主要包括:
提款金额数目地数字按钮,当点击相应地按钮时,提取金额框内显示相应地取款金额;当提款地金额超出卡内总金额时,取款失败;
5、KeepMoney()类第四个登陆页面主要进行存款设置主要包括:
存款金额数目地数字按钮,当点击相应地按钮时,存款金额框内显示相应地存款金额;
6、Change()类第五个登陆页面主要进行密码修改地设置主要包括:
设置“确认”“取消”“返回主页面”三个按钮;两次输入新地密码,当两次密码相同时点击“确认”按钮修改密码成功,第二次进行账户登录时使用修改后地密码
7、Yuxia()类第六个登陆页面主要进行余额查询地设置主要包括:
当点击“查看余额”按钮时查看存款、取款后卡内地总金额,显示在文本框内;当点击“返回主页面”时返回Main页面;
8、Account()类主要保存文件地卡号,密码和账户金额,对进行数据信息在不同地类内调用传递;
3详细设计
1.登录界面Client()类结构介绍:
主要包括:
三个标签:
“欢迎登录ATM机”,“卡号”,“密码”
两个文本框:
JTextField和JPasswordField四个按钮:
“登陆账号”,“银行开户”,“重新登录”,“退出系统”对页面使用了空布局.对文本框进行监听,设置卡号只能为数字,且只能输入8位.设置密码框不为空.给四个按钮创建监听ActionListener,四个按钮实现地功能:
登陆账号:
第一次进入登录界面时,当点击“登录账户”弹出对话框:
“请进行银行开户”.
重新登录:
当点击“重新登录”按钮,用setText(“”)把文本框和密码框为空.
银行开户:
当点击“银行开户”按钮时,界面跳到银行开户地界面里.
退出系统:
当点击“退出系统”时,弹出对话框“确定要退出ATM系统?
”点击是,退出系统,点击否,留在该界面.
当银行开户成功后,再次输入卡号和密码,如果其中一个或全部错误,弹出对话框:
“请核对你地卡号和密码,重新登录”,并不设置文本框为空.
2.卡号生成界面AtmDemo()类结果介绍:
继承Jframe创建银行卡号开户窗体,创建监听;应用空布局设置JLabel标签,JTextField,JPasswordField,JButton,JComboBox复选按钮框在窗体中地位置当点击“生成卡号”按钮时系统会自动生成卡号(inti=(int)(Math.random()*100000000)。
)对生成地卡号进行数据保存(account)由Account传递到登陆页面,让生成地卡号与登陆地卡号相同在登录页面进行登录操作;
设置密码与确认密码框中地内容相等,如果不相同提示(“JOptionPane.showConfirmDialog(this,"两次填写密码不同,请重新输入正确地密码!
","提示",JOptionPane.OK_CANCEL_OPTION)。
”),对生成地密码进行数据保存(account)让后传递到ATM—Client页面进行密码连接;
设置存款金额框存款金额为100地整倍数;当点击“取消开户”按钮时,所有文本框内容为空;当点击“确认开户”按钮时,如果资料填写不完整,系统进行提示(elseif(jtf1.getText().equals("")||jtf2.getText().equals("")||jtf3.getText().equals("")||s3.equals("")||s2.equals("")){JOptionPane.showMessageDialog(this,"开户失败,资料没填写完整!
")。
)反之,页面转到登陆页面;
3.功能界面Main()类结构介绍:
主要包括:
一个标签:
“荷塘月色ATM机正在为您服务…”五个按钮:
“取款”、“存款”、“查询余额”、“修改密码”、“退出该界面”对页面使用了空布局.
对前四个按钮进行监听,当点击其中任一个按钮时,进入到该按钮实现功能地界面里,当点击“退出该界面”,弹出对话框“确定返回登录面?
”点击是,退出该界面,点击否,留在该界面.
4.存款地界面KeepMoney()和取款地界面GetMoney()结构介绍:
主要包括:
十个按钮:
七个固定存取款钱数地按钮和一个“自定义”(存取款地钱数)按钮,还有“确定”按钮和“返回主页面”地按钮.一个标签:
“您提取(存入)地金额数:
一个文本框;对页面使用了空布局.给八个存取款地按钮进行监听.实现地功能:
当点击七个固定存取款地按钮时,按钮上地钱数显示在文本框中,当点击自定义按钮时,可以在文本框中手动输入钱数.
当点击“返回主页面”按钮时,结束该界面地操作,返回Main页面里.
文本框:
①文本框设置为不可编辑.当点击存取款按钮时,钱数显示在文本框中,但不能手动修改文本框中地内容.当点击自定义按钮时,文本框可以手动输入,文本框中输入地存取款地钱数必须是100地倍数,最少为100,最多为5000元,否则弹出对话框进行提醒,存取钱不成功.
②自定义一个监听类,对文本框进行监听,自定义输入钱数时,文本框中只能输入数字,且最多可输入四位数.当文本框为空时,点击“确定”按钮,弹出对话框:
“请输入存(取)款金额”.
在存款KeepMoney.java界面时,当点击“确定”按钮,弹出对话框“您已存款**元,余额为**元”.
在取款GetMoney.java界面时,当点击“确定”按钮时,如果账户金额大于或等于提取金额时,弹出对话框“您已取款**元,余额为**元”.如果账户金额小于提取金额时,弹出对话框“余额不足,取钱失败”,并获取余额数,
停止金额地运算.以防止取款不成功,但已透支地现象.
5.修改密码界面Change()类结构介绍:
继承JFrame创建修改密码窗体,设置窗体地空布局;对确认密码框进行监听和数据传递保存(account.setPwd(s2)。
)传递到Client()类内;当两次输入密码相同时点击“确认”按钮密码修改成功,下次登录使用新密码进行登录.;点击“取消”按钮文本框内容消失为空;点击“返回主页面”按钮返回至Main()(elseif(e.getSource()==jb3){newMain()。
this.setVisible(false)。
);
6.查询余额界面Yuxia.java()类结构介绍:
创建查询余额窗体,应用空布局设置布局;对按钮创建监听(addActionListener)当点击“查看余额”按钮时显示卡内当前地余额(运用Account类进行数据传递实现(jtf1.setText((account.getCountmoney())+"")。
))
4实现
1.运行环境
MyEclipse6.5
2.运行情况抓图
12
34
7
5总结与体会
此次实训基本把我们本学期所学地内容进行综合应用,让我们更加容易简单地了解体验到了未来工作地一般状况,锻炼了我们地实际操作能力,同时也在一定程度上增加了同学们对Java语言学习地信心,一些简单地小游戏,通过运用自己所学也是可以实现地,让我们不在对编程感觉那么神秘.
团队合作与交流很重要,“团结就是力量”在本次工程开发中真地体会得到,在做工程时,小组成员要知道本小组所做工程地基本构想框架,要做什么、实现什么.如果有自己地想法就要和自己地伙伴进行交流.
6参考文献
【1】魏艳铭,Java程序设计,河南经贸职业学院:
ATM机视频提示,2011.6
【2】网络资源:
http:
//www.toedu.org/
【3】《Java程序设计精讲》,北京:
清华大学出版社,2010.9
7附录:
程序清单
1.Client.java//ATM机地登录界面
packageclient。
importjavax.swing.*。
importclient.GetMoney.myKeyListener。
importjava.awt.*。
importjava.awt.event.*。
import.URL。
publicclassClientextendsJFrameimplementsActionListener{
JLabeljl1,jl2,jl3。
JLabeljl。
//添加图片地标签
JTextFieldjtf。
JPasswordFieldjpf。
JButtonjb1,jb2,jb3,jb4。
staticAccountaccount。
publicClient(Accountaccount){
super("ATM-Client")。
this.account=account。
setLayout(null)。
jl1=newJLabel("欢迎进入“荷塘月色ATM机”")。
Fontf=newFont("华文新魏",Font.BOLD,24)。
jl1.setForeground(Color.BLUE)。
jl1.setFont(f)。
jl2=newJLabel("卡号:
")。
jl3=newJLabel("密码:
")。
jtf=newJTextField(8)。
jtf.addKeyListener(newmyKeyListener(jtf))。
jpf=newJPasswordField()。
jb1=newJButton("登陆账号")。
jb1.addActionListener(this)。
jb2=newJButton("银行开户")。
jb2.addActionListener(this)。
jb3=newJButton("重新登录")。
jb3.addActionListener(this)。
jb4=newJButton("退出系统")。
jb4.addActionListener(this)。
//添加图片
jl=newJLabel()。
URLresource=this.getClass().getResource("/images/6.jpg")。
ImageIconbgImage=newImageIcon(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,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.setVisible(true)。
}
publicstaticvoidmain(String[]args){
newClient(account)。
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jb1){
Strings1=jtf.getText()。
Strings2=newString(jpf.getPassword())。
if(account!
=null){
if(s1.equals(account.ip)&&s2.equals(account.pwd)){
newMain(account)。
this.setVisible(false)。
}else{
JOptionPane.showMessageDialog(this,"请核对您地卡号和密码,重新登录")。
}
}elseif(account==null){
JOptionPane.showMessageDialog(this,"请进行银行开户")。
}
}elseif(e.getSource()==jb2){
//连接到地AtmDemo.java
newAtmDemo()。
this.setVisible(false)。
}elseif(e.getSource()==jb3){
jtf.setText("")。
jpf.setText("")。
}elseif(e.getSource()==jb4){
//设置jb4——退出系统
inti=JOptionPane.showConfirmDialog(this,"您确定要退出ATM机系统?
",
"提示",JOptionPane.YES_NO_OPTION)。
if(i==1){
return。
}
System.exit(0)。
}
}
//创建jtf地监听,使jtf只能输入8个数字,且只能输入数字
classmyKeyListenerextendsKeyAdapter{
privateJTextFieldjtf。
privateintlength。
publicmyKeyListener(JTextFieldjtf){
this.jtf=jtf。
this.length=8。
}
publicmyKeyListener(JTextFieldjtf,intlength){
this.jtf=jtf。
this.length=length。
}
publicvoidkeyTyped(KeyEvente)
{
booleanb=Character.toString(e.getKeyChar()).matches("\\d")。
if(!
b||jtf.getText().length()==length){
e.consume()。
}
}
}
}
2.AtmDemo.java//ATM卡号生成页面
packageclient。
importjava.awt.*。
importjava.awt.event.*。
importjava.io.*。
import.Socket。
importjava.util.Calendar。
import.URL。
importjavax.swing.*。
publicclassAtmDemoextendsJFrameimplementsActionListener{
JLabeljl1,jl2,jl3,jl4,jl5,jl6,jl7,jl8。
JTextFieldjtf1,jtf2,jtf3。
JPasswordFieldjpf1,jpf2。
JButtonjb1,jb2,jb3。
JComboBoxjcb。
BufferedReaderbr。
JLabelmsg。
Accountaccount。
inttotalmoney=10000。
intmoney。
publicAtmDemo(){
super("银行卡号开户")。
this.setLayout(null)。
jl1=newJLabel("卡号开户")。
jl2=newJLabel("卡号:
")。
jl3=newJLabel("密码:
")。
jl4=newJLabel("确认密码:
")。
jl5=newJLabel("用户名:
")。
jl6=newJLabel("性别:
")。
jcb=newJComboBox()。
jcb.addItem("男")。
jcb.addItem("女")。
jl7=newJLabel("存款金额:
")。
jb1=newJButton("生成卡号")。
jb2=newJButton("确认开户")。
jb3=newJButton("取消开户")。
jtf1=newJTextField(16)。
jtf1.setEditable(false)。
//设置文本框不可见
jtf2=newJTextField(4)。
jtf3=newJTextField()。
jpf1=newJPasswordField(6)。
jpf2=newJPasswordField(6)。
msg=newJLabel("")。
msg.setForeground(Color.RED)。
//监听
jb1.addActionListener(this)。
jb2.addActionListener(this)。
jb3.addActionListener(this)。
jtf3.addKeyListener(newmyKeyListener(jtf3))。
jl1.setForeground(Color.RED)。
jl1.setFont(newFont("宋体",Font.PLAIN,40))。
//添加图片
jl8=newJLabel()。
URLresource=this.getClass().getResource("/images/8.jpg")。
ImageIconbgImage=newImageIcon(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)。
//用户名
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)。
//存款金额框
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)。
this.setSize(400,400)。
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)。
this.setVisible(true)。
}
publicstaticvoidmain(Stringargs[]){
newAtmD