atm机《java语言程序设计》课程设计报告学位论文.docx
《atm机《java语言程序设计》课程设计报告学位论文.docx》由会员分享,可在线阅读,更多相关《atm机《java语言程序设计》课程设计报告学位论文.docx(41页珍藏版)》请在冰豆网上搜索。
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);