篇一:java自动取款机模拟程序报告含源代码
合肥学院
计算机科学与技术系
课程设计报告
2013~2014学年第一学期
课学学专指
业导
班教生
姓
程 名 号 级 师
面向对象课程设计
自动取款机模拟程序
夏中雨 1204013021 12计本(3) 胡春玲、张贯虹
课程设计名称
20 13年12月
一、 前言.............................................................................................................. 3 二、需求分析........................................................................................................ 3
1、功能需求.................................................................................................. 3
A、管理端方面 ..................................................................................... 3 B、客户端方面 ..................................................................................... 3 2、基本的安全控制机制。.......................................................................... 4 3、 性能需求:............................................................................................ 4 4、出错处理需求.......................................................................................... 4 三、设计理论和环境............................................................................................ 4
1、系统设计理论.......................................................................................... 4 2、系统设计环境.......................................................................................... 4 四、系统数据库设计............................................................................................ 4
1、数据库构建语句...................................................................................... 4 2、表构建语句.............................................................................................. 5 五、总体设计........................................................................................................ 5
B、管理端界面 ............................................................................................. 6
3、删除银行卡账户对话框:.............................................................. 8 4、查询:.............................................................................................. 8 5、显示全部:...................................................................................... 9 C、客户端界面 ........................................................................................... 10
2、客户端操作界面............................................................................ 11 3、余额查询........................................................................................ 11 4、修改密码........................................................................................ 12 5、存款................................................................................................ 13 6、取款................................................................................................ 13
六、具体设计...................................................................................................... 13
1、各类主要功能及相互关系。................................................................ 13 2、关键代码。............................................................................................ 14
(2)、删除银行卡 ................................................................................. 17 (3)、验证客户登陆 ............................................................................. 18 (4)、余额查询 ..................................................................................... 21 (5)、修改密码 ..................................................................................... 22 (7)、取款 ............................................................................................. 27 (8)、连接数据库 ................................................................................. 30
七、 总结............................................................................................................ 31 八、 参考文献.................................................................................................... 31
一、前言
基于进一步巩固、加深学生所学专业课程《JAVA语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力的考虑和全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。学院进行了此项课程设计教学活动,此次课程设计的主要任务是为了训练同学们利用所学知识,开发小型应用系统,掌握运用JAVA语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
针对这次课程设计任务,我对于给定的题目,进行了详细分析,理清了思路,弄明白了应该分几步走,每一步应该怎么走。顺利完成了课程设计任务。
项目任务要求:
1、程序分为两部分:管理端和客户端。
2、管理端负责管理所有的银行卡,管理员(省略身份验证)可以增加和删除银行卡。
(1)每张银行卡由卡号唯一标识,卡号由12位阿拉伯数字组成; (2)新增的银行卡密码均为“123456”,卡内金额均为0元; (3)只有管理员增加的银行卡才能登陆客户端; (4)删除后的银行卡将不能再登陆客户端。 3、客户端负责常见的取款机操作。
(1)客户端需要登陆,用户输入正确的银行卡号和密码,系统核对无误后才能进行操作;
(2)登陆后,用户可以进行查询余额、取款、存款和修改密码的操作; (3)修改密码时,用户需输入两次新密码,确定无误后方可更改;
(4)取款和存款操作,有操作结果提示,如“操作成功”或“余额不足,操作失败”等。
4、界面尽可能模仿自动取款机的实际界面。
5、对于失败操作,尽可能采用异常捕捉的机制来完成。
二、需求分析
1、功能需求
自动取款机模拟程序需要实现的功能主要包括以下几个方面:
A、管理端方面
○1新增银行卡账户 ○2删除银行卡账户
B、客户端方面
○1查询账户余额
○2修改密码 ○3存款 ○4取款
2、基本的安全控制机制。
○1客户从客户端登录时,需要进行身份,身份合法才能进入本系统 ○2客户修改密码时,必须输入两次新密码,确保无误后方可修改且新密码必须与旧密码不同
○3取款和存款操作时,要有操作提示,确保客户对每一步的操作不存在疑惑和不解
3、性能需求:
通过分析,系统性能需求如下: ○1系统的高速性、稳定性、安全性。 ○2系统人机界面友好,易学易用。 ○3系统维护成本较低。
4、出错处理需求
当操作中出现了不正确的操作内容时需要停止该操作并给出提示。
三、设计理论和环境
1、系统设计理论
该程序使用JDBC-ODBC桥与数据库连接,主要定义:主类和操作类。主类的主要功能是提供等待用户的操作的主界面(菜单)。操作类中定义与数据库的连接、提供各种操作界面(增、删、改及统计等操作)。
2、系统设计环境
该系统程序设计在Eclipse、JDK1.5或JBuilder运行环境下实现。
四、系统数据库设计
本软件系统经过我详细分析,我认为所用到的数据库内仅需一张信息表,针对于此,我前期所做的构建数据库及信息表的数据库代码如下:
1、数据库构建语句
CREATE DATABASE Bank ON
(NAME = Bank,
FILENAME=
‘C:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\Bank.mdf’, SIZE = 10MB, MAXSIZE = 50MB, FILEGROWTH = 5MB) LOG ON
(NAME = Bank_log.ldf, FILENAM=
‘C:\ProgramFiles\MicrosoftSQLServer\MSSQL.1\MSSQL\Data\Bank_log.ldf’,
SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB)
2、表构建语句
CREATE TABLE 信息(
卡号 CHAR(12) PRIMARY KEY, 密码 CHAR(6)NOT NULL, 余额 MONEY NOT NULL)
五、总体设计
A、主登陆界面:
用户选择登陆端口选择管理端入口进入管理端,选择客户端入口进入客户端
篇二:Java银行ATM模拟系统报告
《Java核心技术上》
结课报告
班级:学号: 姓名:
银行ATM机模拟系统
1. 设计内容
本系统采用JAVA语言并在eclipse环境下编写测试完成,涉及类的概念,异常处理机制,基本上模拟了ATM系统的相关实现,且代码内标注大量注释,读者可以很轻松的看清楚。
2. 技术说明
当输入用户的卡号和密码时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:
(1)查询余额:初始余额为10000元
(2)ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
(3)ATM存款:不能出现负存款。
(4)修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 3. 系统设计
3.1功能说明
本系统主要模拟银行ATM机系统功能,主要有查阅、取款、存款、账户修改密码等功能。
3.2类的设计
4. 测试
*验证登陆无法成功执行 解决方法:查资料,上网查询 *修改密码某些要求无法实现 解决方法:查资料,上网查询 5. 总结
总的来说,本次设计当中存有许多的不足之处,基本上设计出了和自己预想中的效果,但同时在设计上也还存在着很多的,很多事没有什么用的代码,我想是因为时间和经验的问题,以后多练习就肯定能提高。仔细地看,还是有一些小问题。
通过java编写简单的ATM登录系统的设计,我不仅复习了上学期的java编程设计基 础知识,并且增强了我对java语言的领悟和应用,同时也更深刻的懂得了学好学会了并不是代表能够真正的在实践中运用得流畅,这次实践给了我们一个既动手又动脑独立实践的机
会,但其中也包含了自我寻找资料的能力和同学间的合作能力。这个系统将理论和实践相结合,提高自己的分析、解决问题的能力,并且让我明白了计算机的技术一定要从实际出发才能真正的提高自己的能力; 6. 参考文献安博教育《java核心技术》电子工业出版社
8. 源代码
package other;
//------ATM模拟系统------ import java.util.Scanner;
public class ATM {
private String AccountNum="1367111222";//账号
private String password="123456";//密码 private long balance=10000;//初始余额
Scanner sc=new Scanner(System.in);
//构造函数 public ATM(){}
public ATM(String temp,String temp2){ }
//-------修改密码模块------
public void changePassword(String oldPass,String password){
if(!oldPass.equals(this.password)){//判断初始密码 System.err.println("Wrong initial password."); return;
this.AccountNum=temp; this.password=temp2;
}
if(password.length()<6){//判断新密码长度 System.err.println("Password too short."); return; }
if(this.password.equals(password)){ //不能与原密码相同 System.err.println("Password cannot be the same."); return; }
this.password=password;
System.out.println("newpassword:"+this.password); }
//-------查询余额模块------
public long balanceInquery(){
return this.balance; }
//------存款模块------ public void deposit(){
int amount;
System.out.println("请输入存款金额:"); amount=sc.nextInt();
if(amount<0){ //避免出现负存款
System.err.println("Cannot deposit negative amount"); return;
篇三:ATM的java实训项目设计报告书
《Java语言程序设计》课程设计报告
题 目:
设 计 者:
班 级:
学 号:指导教师:
系 部:
专 业:ATM机 何珍珍 张明月 10信息一班210510113210510152 魏艳铭 信息管理系 计算机应用技术
2011年 6 月 25 日
ATM机设计报告
目录
1 概述 ..........................................................................................................................................2
1.1 问题分析..........................................................................................................................2
1.2功能..................................................................................................................................2
2 总体设计 ...................................................................................................................................3
3 详细设计 ...................................................................................................................................3
1.登录界面Client()类结构介绍: ........................................................................................3
2.卡号生成界面AtmDemo()类结构介绍: .................................................错误!未定义书签。
3.功能界面Main()类结构介绍: .........................................................................................4
4.存款的界面KeepMoney()和取款的界面GetMoney()结构介绍: ...................................4
5.修改密码界面Change()类结构介绍:.................................................错误!未定义书签。
7.查询余额界面Yuxia.java()类结构介绍: ...............................................................................5
4 实现 ..........................................................................................................................................5
1. 运行环境 .........................................................................................................................5
2. 运行情况抓图 ..................................................................................................................5
5 总结与体会 ................................................................................................................................7
6 参考文献 ...................................................................................................................................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()(else if(e.getSource()==jb3){new Main();this.setVisible(false););
6.查询余额界面Yuxia.java()类结构介绍:
创建查询余额窗体,应用空布局设置布局;对按钮创建监听(addActionListener) 当点击“查看余额”按钮时显示卡内当前的余额(运用Account类进行数据传递实现(jtf1.setText((account.getCountmoney())+"");))
4 实现
1.运行环境
MyEclipse6.5
2.运行情况抓图
1 2