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=?";