ATM柜员机课题报告
- 格式:doc
- 大小:376.50 KB
- 文档页数:38
ATM柜员机课题报告
------周明玉 09医用3班。
1. 需求分析
自动柜员机(ATM)自发明以来,以其高效和低成本一直受到银行业的亲睐,从我国引进第一台柜员机至今已经拥有6万台左右的规模,但与世界平均水平相比,我国的人均拥有量还有差距,与先进国家相比人均拥有数量甚至不到四分之一。
由于信用卡取代现金的现象越来越多,ATM柜员机系统则必须要日益增进技术,精确,满足人们的日益需求。我们的生活离不开钱,到处都需要钱,所以到处都要取钱的地方。人们存钱,取钱的频率比以往的大,所以ATM柜员机成了生活中必不可少的一部分。
ATM柜员机主要是给广大群众取钱存钱途方便,减少人力工作,节约资源。该小系统我们用JAVA来模拟一个柜员机。尽量做到安全,容易操作。功能强大。界面用 图形用户界面完成即GUI。用CMD来运行即可。
ATM柜员机模拟程序有以下功能:
A. 登录。固定卡号长度(19个数字)和固定密码长度(6个数字)要输入正确和匹配正确才可以进入系统。
B. 修改密码。
C. 查询。查询账户余额。
D. 取款。每次取款只可以取100的倍数,总额不超过5000,且不可透支。
E. 存款。每次存款不可为负数,存100的倍数。
F. 查看收支明细。
G. 退出。退出系统回到登录界面。
功能图:
ATM取款机流程图:
用户特点:
不要求具备任何专业知识;
普通用户使用存款,查询余额,转账,修改密码,查询存取历史明细等等功能
2. 概要设计 输入账号密码
存款 显示密码错误,返回
查询余额 取款 退出 登录成功?
进入页面,并进行各种操作
收支明细 ATM自动取款机
用户账号登录
退出
我要存款 我要取款 查询余额 修改密码
收支明细 2.1数据库设计
采用JDBC技术。在MYSQL建立了两个表。
数据库很简单,就只有一个表 Account:
个属性,分别是:银行卡号,密码,姓名,性别,余额,姓氏,密码错误次数,锁,输密码错误的时间,开锁时间,清空时间。
Accountdetail 收支明细
收支明细表的属性,银行卡号,时间,名字,操作(存/取),现在余额。
2.2界面设计:
登录界面:
主页面:
工作页面,其中显示了所有功能:修改密码,存款,取款,查看余额,查看收支明细等等。 从中可以看到1到9 的 button键盘,是模拟ATM柜员机手输的情况。
修改密码,有很多提示:
1,旧密码不正确,;
2,新密码字符数少于6个
3,新密码字符数大于6个
4,密码必须是数字
5,新密码不可为6个相同的数字。
收支明细,可以选择时间范围,查询该段时间,
3. 详细设计和编码。(代码见附录1) JAVA小程序。有三份文档,其中一份是连接数据库,一份是对数据库的操作,一份是GUI操作平台。有窗口,有事件。
课程设计感想:
从一开始只对JAVA有初步认识,到可以连接到数据库,对数据库操作,是我这个过程中最高兴的事情了,呵呵。一下子对JAVA编程的认识深刻了。本来我都喜欢JAVA的编程的思考方式,可惜我们班很少人去弄,我自己又没胆量自己去搞,今次课程设计,有理由逼着自己去干了。很庆幸有课程设计,而且是用JAVA来做的,完了我个心愿。毕业设计我也会用JAVA做。
Eclipse,mysql 都没用过,发现全英文,好难用啊~~JAVA编程的结构都还没知道,要那么度步骤跟运行环境,开发平台之类的,跟的很不同呀。开始做课程设计,真的很担心很害怕,之后马上问人,问老师,慢慢的在图书馆找书,看书,看视频,很充实,一步一步,回复自信,我也可以做到。不难。学习后实践的过程很好,很享受。呵~所以我一直再抽时间做。有机会都想给老师看,就连考试那天也不放过。尽量做好吧。要做的话。
遇到什么问题,先不要怕,要去做,做完再说吧。呵呵。不要想太多了。
要有文化,不然很可怕。呵呵~(@^_^@)~
附录1:
第一份 是连接数据库的文档。
import java.sql.*;
public class mysqlCon {
// 驱动程序就是之前在classpath中配置的jdbc的驱动程序的jar包中
public static final String DBDRIVER =
"org.gjt.mm.mysql.Driver";
// 连接地址是由各个数据库生产商单独提供的,所以需要单独记住
public static final String DBURL =
"jdbc:mysql://localhost:3306/test";
// 连接数据库的用户名
public static final String DBUSER = "root"; // 连接数据库的密码
public static final String DBPASS = "root";
// 表示数据库的连接的对象
Connection dbConn;
//错误信息
String errMes;
public mysqlCon()
{
errMes="";
dbConn=null;
}
public Connection getConn()
{
try{
// 1、使用Class类加载驱动程序
Class.forName(DBDRIVER);
// 2、连接数据库
dbConn = DriverManager.getConnection(DBURL,
DBUSER, DBPASS);
} //获得数据库的连接对象
catch(Exception e)
{
dbConn=null;
errMes=e.toString();
}
return dbConn;
}
//获取错误信息
public String getErrMes()
{
return errMes;
}
}
第二份是对数据库的操作文档
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class mysqlExecu extends mysqlCon{
private Connection conn;
private Statement stmt;
private PreparedStatement prestm;
private ResultSet rs;
private String errMes;
int fla = 0;
public mysqlExecu(){
conn = super.getConn();
stmt = null;
rs = null;
this.errMes = super.getErrMes();
}
//执行查询
public ResultSet exeLookFor(String sql){
try{
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(Exception e){
this.errMes = this.errMes + "" + e.toString();
rs = null;
}
return rs;
}
//查询一个账户
public ResultSet exeLoFouser(String ID){
try{
String sql2 = "select * from bankaccount where CardID=?";
prestm = (PreparedStatement) conn.prepareStatement(sql2);
prestm.setString(1,ID);
rs = (ResultSet)prestm.executeQuery(sql2);
fla = 1;
}
catch(Exception e){
this.errMes = this.errMes + "" + e.toString();
fla = 0;
}
return rs;
}
//查询个账户收支明细
public ResultSet exeLoFodetail(String ID){
try{
String sql2 = "select * from accountdetail where CardID=?";