java实训ATM取款机设计报告.docx
- 文档编号:6761029
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:23
- 大小:62KB
java实训ATM取款机设计报告.docx
《java实训ATM取款机设计报告.docx》由会员分享,可在线阅读,更多相关《java实训ATM取款机设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
java实训ATM取款机设计报告
工程技术师学院
信息工程学院
《Java项目实训》
课程设计报告
题目:
ATM取款机JAVA实训课程设计
专业:
计算机科学与技术
班级:
C1341
XX:
秋红
学号:
25
摘要
我选择的是“ATM取款机”,其目的主要是现在市面上的取款机功能不完善还有许多功能没有实现,用户对界面很熟悉,做起来更得心应手,所以的采用的界面和现在用户所用的界面基本相同,可以实现后台与前台的交互以及数据库之间的连接,使得我设计的ATM取款机更加完善。
利用jps网页设计一个总页面设计选择使用的用户是用户页面还是管理员页面,让使用的人根据权限去使用不同的功能。
在我的ATM取款机上实现了ATM机的基本功能,其界面参照了和原系统基本相同的界面。
增加了一些管理员的功能。
首先选择是用户登入还是管理员登入。
选择用户登入,有查看,存款,取款,转账和修改密码等功能。
选择管理员登入,有开户,销户,查询等功能;利用这些更能,使得ATM更加完善。
关键字:
ATM,查询,取款,转账,修改,界
程序设计概念4
程序设计的目的4
课程设计的容4
设计方案的论证5
概要设计5
需求分析5
技术可行性5
经济可行性5
设计实现容6
数据字典6
成员变量6
方法设计6
页面如下7
数据流程图7
测试运行及结果分析10
测试及问题探讨11
课设总结与体会12
致13
参考文献14
附录115
一、课程设计的概念
1.1课程设计的目的
现代社会,ATM可以说是一种使用非常广泛的机器,ATM使用是非常频繁的,然而由于程序及其机器本人的一些漏洞,导致ATM机的犯罪现象屡有发生。
该项目的开发有利于进一步提高ATM机的性能及安全性,模拟开发ATM系统软件,掌握系统开基本流程,在开发系统中可以巩固所学的有关软件开发的知识,有利于提出优化改进现代ATM系统的建议。
1.2课程设计的容
银行ATM机的使用已经普及,人们都已习惯利用自动柜员机来提取现金,查询存款,转账,修改密码等等,我设计的ATM取款机添加了新的功能,具体功能如下:
1.2.1管理员状态登入:
1.2.1.1开户:
添加一个新的用户
1.2.1.2销户:
删除一个无用用户
1.2.1.3查询:
管理员可以查询用户的相关信息
1.2.2普通用户状态登入:
1.2.2.1查询:
用户可以查询自己的银行卡信息
1.2.2.2存款:
提供用户提取现金的功能
1.2.2.3转账:
提供用户在统一银行的转账功能
1.2.2.4查询交易情况:
查询交易文件中的交易记录
1.2.2.5修改密码:
能够修改用户的银行卡密码
二、设计方案的论证
2.1概要设计
《JAVA程序设计》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
2.2需求分析
2.2.1技术可行性
ATM设计的主要目标为:
管理员登陆时要写入账户的名和号在数据库里进行匹配,匹配成功则登入否则在前台显示账号或密码错误;普通用户登入时要写入银行卡号和所属银行卡号的密码,在数据库中进行匹配,匹配成功即登入否则在前台显示账号或密码错误
2.2.2经济可行性
可行性分析法是对工程项目技术经济论证技术经济论证经济合理性综合分析的方法。
其目的是通过对技术先进程度,经济合理性和条件可能性的分析论证,选择以最小的人力、物力、财力耗费,取得最佳技术、经济、社会效益的切实方案。
它是解决项目投资前期分析的主要手段。
三、设计实现容
3.1系统功能结构设计
3.1.1数据字典
数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。
3.1.2 成员变量
成员变量也叫类的属性,一般带有访问控制属性的,而全局变量虽然也有类的属性,但全局变量严重影响了封装和模块化,一般的全局变量前面要加上static和 fina属性其中,static使该变量任何类都可用(方法 ClassName.全局变量名) ,而 fina则使得变量不可更改,基本上算是常量了,这也在一定程度上防止对变量的非法修改。
3.1.3 方法设计
方法名称为任何合乎语法的识别字,返回值类型是方法执行结果返回给调用者的数据类型,void表示没有返回值,参数行(parameter list)是调用时给予的参数声明,两个以上的参数声明以逗号隔开,若没有参数则参数行为空白,调用时每一个参数对应一个参数值(argument)大括号为方法本体,也称为方法程序模块(block),包含声明(declarations)和语句(statements),声明也可以掺杂在语句之间。
一个方法不能声明在另一个方法。
表3.1.3 方法定义
方法名
功能
备注
Kh
开户
Xh
销户
Cx
查询
Yhcx
用户查询
Jiaoyan
校验
Yhjy
用户校验
Dl
登入
Card
卡号
Select
选择
update
修改
Yhdata
用户修改
yhc
用户查询
jiaoyan
登入校验
GLjiaoyan
管理用户登录校验
3.1.4页面如下:
图:
3.1.1主页面
图3.1.2用户登入页面
图3.1.3普通用户显示界面
图3.1.4管理员显示页面
3.1.5 数据流程图
图3.1.5选择方式登入
图3.1.6登入验证
图3.1.7功能选择
四、测试运行及结果分析
1、用户向ATM提款机中插入银行卡,如果银行卡是合法的,ATM提款机界面提示用户输入提款密码;
2、用户输入该银行卡的密码,ATM提款机与MainFrame传递密码,检验密码的正确性。
如果输入密码正确,提示用户输入取钱金额,提示信息为,“请输入您的提款额度”;
3、用户输入取钱金额,系统校验金额正确,提示用户确认,提示信息为“您输入的金额是xxx,请确认,!
”,用户按下确认键,确认需要提取的金额;
4、系统同步银行主机,点钞票,输出给用户,并且减掉数据库中该用户中的存款金额。
5、用户提款,银行卡自动退出,用户取走现金,拔出银行卡,ATM提款机界面恢复到初始状态;
五、测试及问题探讨
如果插入无效的银行卡,那么,在ATM提款机界面上提示用户“您使用的银行卡无效!
”,3秒钟后,自动退出该银行卡。
如果用户输入的密码错误,则提示用户“您输入的密码无效,请重新输入”
如果用户连续3次输入错误密码,ATM提款机吞卡,并且ATM提款机的界面恢复到初始状态。
此时,其他提款人可以继续使用其他的合法的银行卡在ATM提款机上提取现金。
用户输入错误的密码后,也可以按“退出”键,则银行卡自动退出。
如果用户输入的单笔提款金额超过单笔提款上限,ATM提款机界面提示“您输入的金额错误,单笔提款上限金额是2500RMB,请重新输入”;
如果用户输入的单笔金额,不是以50RMB为单位的,那么提示用户“您输入的提款金额错误,请输入以50为单位的金额”;
如果用户输入正确的提款金额,ATM提款机提示用户确认后,用户取消提款,则ATM提款机自动退出该银行卡;
如果ATM提款机中余额不足,则提示用户,“抱歉,ATM提款机中余额不足”,3秒钟后,自动退出银行卡
如果用户银行户头中的存款小于提款金额,则提示用户“抱歉,您的存款余额不足!
”,3秒钟后,自动退出银行卡;
如果用户没有取走现金,或者没有拔出银行卡,ATM提款机不做任何提示,直接恢复到界面的初始状态;
六、课设总结与体会
大约一个星期的编写JAVA程序,发现自己不懂的地方很多,在完成这个设计的时候,我总是被一些小的,细的问题挡住前进的步伐,让我总是为了解决一个小问题而花费很长的时间,甚至做到很晚,最好猛然发现自己缺少一个定义或者还要查阅其他的书籍才能找出解决的办法。
例如,我定义了一个链表,可是向里面添加东西的时候,总是出错,后来在上机的时候问老师,才知道链表没有初始化,这是自己的粗心造成的。
我在做设计的过程中发现有很多东西,我都还不知道。
在做进制转换时不知道函数怎么写,是我上网查到的,再经过修改查到我的程序中。
其实在用语言来编程的时候,基础是一个不可缺少的知识,但是往往一些核心的高层次的东西更是不可缺少。
七、致
通过这次课程设计还使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,
从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,并且还发现了自己的许多不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
但通过这次课程设计之后,一定把以前所学过的知识重新温故。
我完成了这次JAVA课程设计,不过这只是我学习路上的驿站。
我相信我在未来的学习中会记住从本次课程设计中所学到的东西,并将它用到未来的学习中去。
在这里老师的指导,我会更加努力的学习
八、参考文献
[1].桂珠丽爱国Java面向对象程序设计(第2版)邮电大学
[2]毕广吉.Java程序设计实例教程.:
冶金工业,2007年
[6]董迎红、王薇编著,Java程序设计案例教程与实训,大学
[7]文靖编著,《Java程序设计基础与上机指导》,清华大学
九、附录
packagec;
importjava.sql.CallableStatement;
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.Date;
importjava.util.List;
importc.LianJie;
importc.info;
publicclassZongimplementsJieK{
publicvoidkh(infou)throwsClassNotFoundException,SQLException{
System.out.println("进入方法中的u里的user_name:
"+u.getUser_name());
Stringpid=u.getPid();
Stringuser_name=u.getUser_name();
Stringtelephone=u.getTelephone();
Stringaddr=u.getAddr();
LianJielj=newLianJie();
Connectioncon=lj.getConnection();
Stringsql="{callkaihu(?
?
?
?
)}";
CallableStatementcs=con.prepareCall(sql);
cs.setString(1,pid);
cs.setString(2,user_name);
cs.setString(3,telephone);
cs.setString(4,addr);
cs.executeUpdate();
cs.close();
System.out.println("调用开户方法,创建用户得到的user_name"+u.getUser_name());
}
publicvoidxh(Stringuser_id)throwsClassNotFoundException,SQLException{
Connectioncon=null;
LianJielj=newLianJie();
con=lj.getConnection();
Stringsql="{callxiaohu(?
)}";
CallableStatementcs=con.prepareCall(sql);
cs.setString(1,user_id);
cs.executeQuery();
}
publicList
Connectioncon=null;
LianJielj=newLianJie();
con=lj.getConnection();
Statementsta=null;
Stringsql="SELECT*FROMuserinfowhere1=1";
if(pid!
=null&&pid!
=""){
sql=sql+"andpid='"+pid+"'";
}
if(user_id!
=null&&user_id!
=""){
sql=sql+"anduser_id='"+user_id+"'";
}
sta=con.createStatement();
ResultSetrs=null;
rs=sta.executeQuery(sql);
List
list=newArrayList
while(rs.next()){
Stringuser_id1=rs.getString
(1);
Stringuser_name=rs.getString
(2);
Stringpid1=rs.getString(3);
Stringtelephone=rs.getString(4);
Stringaddr=rs.getString(5);
infos=newinfo();
s.setUser_id(user_id1);
s.setUser_name(user_name);
s.setPid(pid1);
s.setTelephone(telephone);
s.setAddr(addr);
list.add(s);
}
returnlist;
}
publicList
//System.out.println(card_id);
Connectioncon=null;
LianJielj=newLianJie();
con=lj.getConnection();
PreparedStatementps=null;
Stringsql1="selectu.user_id,u.user_name,u.telephone,c.card_id,c.open_date,c.balancefromcardinfoc,userinfouwherec.user_id=u.user_idandcard_id=?
";
ps=con.prepareStatement(sql1);
ps.setString(1,card_id);
ResultSetrs=ps.executeQuery();
List
while(rs.next()){
Stringuser_id=rs.getString
(1);
Stringuser_name=rs.getString
(2);
Stringtelephone=rs.getString(3);
Stringcard_id1=rs.getString(4);
Dateopen_date=rs.getDate(5);
intbalance=rs.getInt(6);
infoinfo=newinfo();
info.setUser_id(user_id);
info.setUser_name(user_name);
info.setTelephone(telephone);
info.setCard_id(card_id1);
info.setOpen_date(open_date);
info.setBalance(balance);
li.add(info);
}
returnli;
}
publicvoidjiaoyi(infou)throwsClassNotFoundException,SQLException{
System.out.println("qqqqq");
Stringcard_id=u.getCard_id();
Stringtrans_type=u.getTrans_type();
inttrans_money=u.getTrans_money();
Stringcard_id1=u.getCard_id();
System.out.println(card_id);
Connectioncon=null;
LianJielj=newLianJie();
con=lj.getConnection();
Stringsql="{calluser_money(?
?
?
?
)}";
CallableStatementcs=con.prepareCall(sql);
System.out.println(card_id);
System.out.println("aaaaa");
cs.setString(1,trans_type);
cs.setString(2,card_id);
cs.setInt(3,trans_money);
cs.setString(4,card_id1);
cs.executeQuery();
}
publicList
Connectioncon=null;
LianJielj=newLianJie();
con=lj.getConnection();
Statementsta=null;
Stringsql="SELECT*FROMtransinfowhere1=1";
if(card_id!
=null&&card_id!
=""){
sql=sql+"andcard_id='"+card_id+"'";
}
System.out.println(sql);
sta=con.createStatement();
ResultSetrs=null;
rs=sta.executeQuery(sql);
List
list=newArrayList
while(rs.next()){
Datetrans_date=rs.getDate
(1);
Stringcard_id1=rs.getString
(2);
intbalance=rs.getInt(3);
Stringtrans_type=rs.getString(4);
inttrans_money=rs.getInt(5);
Stringremark=rs.getString(6);
infos=newinfo();
Stringa=trans_date.toString();
System.out.println(a);
s.setTrans_date(a);
s.setCard_id(card_id1);
s.setBalance(balance);
s.setTrans_type(trans_type);
s.setTrans_money(trans_money);
s.setRemark(remark);
list.add(s);
}
returnlist;
}
publicinfodl(Stringuser_id,Stringpasswd)throwsClassNotFoundException,SQLException{
Connectioncon=null;
LianJielj=newLianJie();
con=lj.getConnection();
Statementsta=con.createStatement();
Stringsql="SELECTcard_idFROMcardinfowhereuser_id='"+user_id+"'andpasswd='"+passwd+"'";
ResultSetrs=null;
rs=sta.executeQuery(sql);
Stringcard_id=null;
infoin=null;
while(rs.next()){
in=newinfo();
card_id=rs.getString("card_id");
in.setCard_id(card_id);
}
System.out.println("card_id:
"+card_id);
sta.close();
con.close();
returnin;
}
publicList
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实训 ATM 取款 设计 报告