ATM柜员机模拟系统.docx
- 文档编号:20966646
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:24
- 大小:74.16KB
ATM柜员机模拟系统.docx
《ATM柜员机模拟系统.docx》由会员分享,可在线阅读,更多相关《ATM柜员机模拟系统.docx(24页珍藏版)》请在冰豆网上搜索。
ATM柜员机模拟系统
ATM柜员机模拟系统
课程名称Java课程设计设计题目ATM柜员机模拟系统学生姓名学号
专业
指导教师
2010年06月25日
课程设计评语与成绩评定
评判标准(在每一项目对应的标准下方空格内标记?
)
项目
优秀良好中等及格不及格能很好地完成任能较好地完成任按时完成任务基本完成任务没有完成任务书规
工作务书规定的工作务书规定的工作书规定的工作书规定的工作定的工作量。
量。
量。
量。
量。
量
独立提出实施方能阅读一些自选能分析整理各能阅读教师指未完成教师指定的资料案,有分析整理、资料,能较好地分类信息。
定的参考资料。
参考资料的阅读。
收集获取新知识的能析整理各类信息。
方案力。
设计能熟练掌握和运能熟练掌握和运较好地掌握有掌握和运用理基本理论模糊不清,用基本理论,取得用有关理论,能独关理论,在教师论比较符合要无任何结果。
综合
的结果有一定的立取得结果。
指导下能完成求。
应用
实用价值。
工作。
能力
设计合理,有较强设计比较合理、有设计比较合理,设计基本合理,设计不合理,实际动技术的实际动手能力一定的实际动手实际动手尚可。
理论分析与实手能力差。
水平和计算机应用能能力和计算机应施无大错。
实际力。
用能力。
能力结构严谨,逻辑性结构合理,符合逻结构基本合理,结构基本合理,结构混乱,文字表达强,层次清晰,文辑,文章层次分层次较分明,文文字尚通顺,勉不清,错别字较多,说明
字流畅,符合规范明,语言准确,达理通顺,基本达强达到规范化达不到规范化要求。
书撰
化要求,打印精到规范化要求,打到规范化要求。
要求。
写质
美。
印工整。
量
态度认真,作风严学习态度比较认遵守纪律,基本态度尚可,在指纪律涣散,不能保证谨,严格按进度开真,能按期圆满完保证设计时间,导教师的帮助设计时间和进度。
学习展各项工作。
成任务书规定的按期完成各项下能按期完成态度任务。
工作。
任务。
综合评定成绩:
优秀良好中等及格不及格
指导教师:
2010年月日
一、开发环境与开发工具.......................................1
二、系统需求分析.............................................1三、功能需求分析.............................................1
四、系统设计.................................................2
4.1数据概念结构设计.......................................2
4.1.1数据流程图.........................................2
4.1.2系统E-R图.........................................3
4.2数据库逻辑结构(关系模式)设计.........................3
4.3数据库物理结构设计.....................................3五、系统功能的实现...........................................4
5.1数据库连接实现..........................................4
5.2登录模块(LoginFrame.java)的实现.........................6
5.3主窗口实现..............................................8
5.4查询余额窗体(CxyeFrame.java)实现.......................10
5.5存、取款功能实现.......................................11
5.6修改密码(XgmmFrame.java)功能实现.......................14
六、测试与维护..............................................16七、小结................................................17
随着银行客户数量的增加和业务的繁重,一些具体的业务流程如果还只是采用手工操作的方式来实施,不公费时、费力,效率低下,而且无法达到理想的效果。
例如平常的存取款和查询等业务。
所以,ATM机管理系统随之出现,提高了银行业务处理的效率,也方便了用户。
本系统在极大简化的情况下,想要体现ATM管理系统的基本雏形,想要体现Java技术在传统C/S模式。
多窗体方式下数据库应用系统的开发方法。
本系统的设计与实现能充分体现出JAVA的编程技术,特别是Java操作数据库数据的技术。
一、开发环境与开发工具
1、开发语言:
JAVA
2、开发工具:
Netbeans6.8
3、应用数据库:
Netbeans自带的数据库mysql
4、操作平台:
WindowsXP
二、系统需求分析
用户可以通过ATM柜员机模拟系统实现对账户信息及其相关信息的管理,简化银行业务处理和方便用户,本系统具有如下功能:
1、账户登录认证;
2、取款业务;
3、存款业务;
4、查询余额;
5、查询交易记录;
6、转账;
7、修改密码。
三、功能需求分析
ATM柜员机模拟系统按如上所假设,管理功能是比较简单的,主要实现了对账户的管理,具体功能有账户认证、存取款、查询余额、查询交易记录、修改密码等。
系统功能布局见系统功能模块,如图1-1所示。
1
ATM柜员机模拟系统
转存查修取查账账款改款询询户模模密模余登交块块码块额录易模模模记块块块录
图1-1系统功能模块图
四、系统设计4.1数据概念结构设计
4.1.1数据流程图
系统数据流程图如图1-2所示:
办理业务账户信息管理ATM管用户
理系统返回信息交易记录信息
图1-2简易系统数据流程图
2
4.1.2系统E-R图
-R图如图1-3所示。
经调研分析后得ATM管理系统整体基本E
账号账号
交易类型
1N
交易记录信息账户信息更新密码交易金额
交易日期余额
余额交易时间
图1-3系统基本E—R图
4.2数据库逻辑结构(关系模式)设计
按照E-R图到逻辑关系模式的转换规则,可得到系统如下两个关系:
(1)账户信息(账号、密码、余额);
(2)交易记录信息(账号、交易类型、交易金额、交易日期、交易时间、余额)
其中带下划线“”的为关系关键字(即主码),带“”为外键。
4.3数据库物理结构设计
本系统数据库表的物理设计通过创建表的SQL命令及数据数库关系图来呈现。
采用的是Netbeans自带的数据库mysql。
方法如下:
先创建一个数据库,名为db_user,密码为null,(如果数据库名称不一样,要更改user.ini配置文件里面的内容),选择表右键选择执行语句,再执行以下语句(如果想
3
一次执行以下全部语句必须全部选择再按执行):
--创建交易记录表
CREATETABLEAPP.JYLS(CARDNOVARCHAR(22),JYLXVARCHAR(22),JYJE
DECIMAL(22),RQDECIMAL(22),SJVARCHAR(22),YEDECIMAL(22));
--创建用户表
CREATETABLEAPP.USERS(CARDNOVARCHAR(10)NOTNULL,PWDVARCHAR(6),MONEY
DECIMAL(12),PRIMARYKEY(CARDNO));
--添加用户数据
insertintoAPP.USERS(cardno,pwd,money)values('081541348','198612',10000);
insertintoAPP.USERS(cardno,pwd,money)values('081541345','198611',6000);
insertintoAPP.USERS(cardno,pwd,money)values('081541346','6143141',8000);
五、系统功能的实现
5.1数据库连接实现
本系统的数据库是利用netbeans自带的mysql,需要添加驱动在库里,先利用PropertyManager类连接配置文件user.ini。
packageinit;
importjava.io.*;
importjava.util.*;
publicclassPropertyManager{
privatePropertiessettings=newProperties();
publicvoidconfigure(Stringfilename)throwsIOException{
FileInputStreamfi=null;
try{
fi=newFileInputStream(filename);
settings.load(fi);
}catch(Exceptionex){
System.out.println("err-->>"+ex);
}
finally{
if(fi!
=null){
fi.close();
}
4
}
}
publicStringgetProperty(Stringkey){
returnthis.settings.getProperty(key);
}
publicPropertiesgetSettings(){
returnsettings;
}
}
数据库连接类ConnectDB:
packagejdb;
importinit.PropertyManager;
importjava.io.IOException;
importjava.sql.*;
publicclassConnectDB{
publicConnectiongetConnection(){
try{
Connectionconn=null;
PropertyManagerpm=newPropertyManager();
pm.configure("user.ini");
Stringdriver=pm.getProperty("db.driver");
Stringurl=pm.getProperty("db.url");
Stringuser=pm.getProperty("db.user");
Stringpassword=pm.getProperty("db.password");
Class.forName(driver);
conn=DriverManager.getConnection(url,user,password);
returnconn;
}catch(SQLExceptionex){
System.out.print("SQL--->"+ex);
returnnull;
}catch(ClassNotFoundExceptionex){
System.out.print("ClassNotFound-->"+ex);
returnnull;
}catch(IOExceptionex){
System.out.print("IOException-->"+ex);
returnnull;
}
}
}
5
5.2登录模块(LoginFrame.java)的实现
图1-4登录界面
关键方法代码实现:
privatevoidcmdokActionPerformed(java.awt.event.ActionEventevt){
UserManagerlg=newUserManager();//TODOaddyourhandlingcodehere:
cardno=txtCardNo.getText();
pwd=txtPwd.getText();
if(i<=2){
if(lg.certify(cardno,pwd)){
MainFramemf=newMainFrame(cardno,pwd);
mf.setVisible(true);
this.dispose();
}
else{
i++;
if(3-i==0){
JOptionPane.showMessageDialog(null,"连续输入三次错误,退出~");
this.dispose();
}else{
JOptionPane.showMessageDialog(null,"密码或账号错误~"+"\n"+"你还有"+(3-i)+"次机会~");
txtPwd.setText("");
}
}
}
else{
JOptionPane.showMessageDialog(null,"连续输入三次错误,退出~");
this.dispose();
}
}
6
privatevoidcmdresetActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
txtPwd.setText("");
txtCardNo.setText("");
}
privatevoidcmdquitActionPerformed(java.awt.event.ActionEventevt){
this.dispose();//TODOaddyourhandlingcodehere:
}
UserManager.java类中的验证方法代码:
//认证用户
publicbooleancertify(Stringcardno,Stringpwd){
booleanyn_pass=false;
ResultSetrs=null;
PreparedStatementps=null;
ConnectDBdao=newConnectDB();
Connectionconn=dao.getConnection();
Stringsql="select*fromAPP.userswhereCARDNO=?
andPWD=?
";
try{
ps=conn.prepareStatement(sql);
ps.setString(1,cardno);
ps.setString(2,pwd);
rs=ps.executeQuery();
if(rs.next()){
yn_pass=true;
}
}catch(SQLExceptionex){
System.out.println("inUserManager-->certify[error]:
"+ex.toString());
}
finally{
try{
if(ps!
=null)
ps.close();
if(rs!
=null)
rs.close();
if(conn!
=null)
conn.close();
}catch(Exceptionex){}
}
returnyn_pass;
}
7
5.3主窗口实现
图1-5业务办理主窗口
主窗口MaiFrame.java关键代码:
publicMainFrame(Stringocardno,Stringopwd){
initComponents();//把initComponents()放在构造方法中,目的在于:
在主类调用构造方法初始化时,完成了界面的绘制
this.cardno=ocardno;
this.pwd=opwd;
lbcardno.setText(this.cardno);
}
publicMainFrame(Stringgcardno){
initComponents();
this.cardno=gcardno;
lbcardno.setText(cardno);
}
privatevoidcmdyeActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
CxyeFramecxf=newCxyeFrame(lbcardno.getText());
cxf.setVisible(true);
}
privatevoidcmdxgmmActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
XgmmFramexgf=newXgmmFrame(cardno,pwd);
xgf.setVisible(true);
}
8
privatevoidcmdquitActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
LoginFramelgf=newLoginFrame();
lgf.setVisible(true);
this.dispose();
}
privatevoidcmdqkActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
QkFrameqkf=newQkFrame(this.cardno);
qkf.setVisible(true);
}
privatevoidcmdckActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
CkFrameckf=newCkFrame(cardno);
ckf.setVisible(true);
}
privatevoidcmdjyjlActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
JyjlFramejyf=newJyjlFrame(cardno);
jyf.setVisible(true);
}
privatevoidcmdzzActionPerformed(java.awt.event.ActionEventevt){
//TODOaddyourhandlingcodehere:
JOptionPane.showMessageDialog(null,"温馨提示:
功能开发中„„");
}
publicstaticvoidmain(Stringargs[]){
java.awt.EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
newMainFrame().setVisible(true);
}
});
}
9
5.4查询余额窗体(CxyeFrame.java)实现
图1-6查询余额窗口
关键方法代码:
//查询余额
publicintcxye(Stringcardno){//查询余额
ResultSetrs=null;
PreparedStatementps=null;
ConnectDBdao=newConnectDB();
Connectionconn=dao.getConnection();
Stringsql="select*fromAPP.userswherecardno=?
";
try{
ps=conn.prepareStatement(sql);
ps.setString(1,cardno);
rs=ps.executeQuery();
if(rs.next()){
this.money=rs.getInt("money");
}
}catch(SQLExceptionex){
System.out.print("errincxye-->SQL-->"+ex);
}
finally{
try{
if(ps!
=null){
ps.close();
}
if(rs!
=null){
rs.close();
}
if(conn!
=null){
10
conn.close();
}
}catch(SQLExceptionex){
Logger.getLogger(UserManager.class.getName()).log(Level.SEVERE,null,ex);
}
}
returnmoney;
}
5.5存、取款功能实现
图1-7取款功能窗口
图1-8存款功能窗口
关键实现代码:
11
//存\取款
publicbooleanqk(Stringcardno,intjyje,Stringjylx){
booleanjy_yn=false;
PreparedStatementps=null;
ConnectDBdao=newConnectDB();
Connectionconn=dao.getConnection();
Stringsql="";
if(jylx.equals("取款")||jylx.equals("转账")){
sql="updateAPP.userssetmoney=money-?
wherecardno=?
";
}else{
sql="updateAPP.userssetmoney=money+?
wherecardno=?
";
}
try{
ps=conn.prepareStateme
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ATM 柜员机 模拟 系统