javaATM课程设计报告.docx
- 文档编号:9851239
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:28
- 大小:451.86KB
javaATM课程设计报告.docx
《javaATM课程设计报告.docx》由会员分享,可在线阅读,更多相关《javaATM课程设计报告.docx(28页珍藏版)》请在冰豆网上搜索。
javaATM课程设计报告
序号:
学号:
10416216
课程设计
设计课程名称:
JAVA课程设计
题目:
APM柜员机
学生姓名:
梁惠康
学院:
信息科学与工程专业班级:
计算机102
指导教师:
杨亚南成绩:
设计时间:
2011年12月27日2012年1月7日
面向对象程序设计(JAVA)课程设计任务书
一、设计题目:
企业客户管理系统
二、设计内容:
利用项目管理器组织、设计并连编一个应用程序用于管理某个企业的客户资源。
要求系统能够通过菜单实现数据维护、浏览、查询、报表、退出等基本功能;可以自行设计使系统具有更强的功能。
三、基本要求:
1、对源程序编写的要求:
(1)能够实现任务书中的功能;
(2)尽可能使界面友好、直观、易操作;
(3)源程序要有适当的注释,使程序容易阅读。
2、撰写“课程设计报告”,要求如下:
(1)封面:
统一采用《常州大学课程设计说明书》封面
(2)任务书
(3)目录
(4)正文,包括:
1)分析系统功能,绘制系统功能结构框图;
2)数据库设计
3)表单、报表设计以及程序代码;
4)菜单设计;
5)使用说明;
6)日志;
7)心得体会;
(5)参考文献
3、课程设计验收要求:
(1)运行所设计的系统;
(2)回答有关问题;(3)提交课程设计报告和任务书;(4)提交源程序
四、进度安排:
1、系统分析、设计准备阶段:
2学时
2、编程调试阶段:
14学时
3、总结和书写报告阶段:
2学时
4、考核阶段:
2学时
指导教师:
年月日
系主任:
苏兵年月日
目录
1课程设计过程概述4
2课程设计题目描述和基本设计要求4
3系统需求分析4
3.1功能需求分析4
3.2系统运行环境5
4系统设计5
4.1系统设计原理5
4.1.1系统流程图5
4.1.2数据流程图6
4.1.3功能模块图6
4.1.4系统模块结构图7
4.2数据库设计7
4.2.1ATME-R图7
4.2.2系统E-R图8
4.2.3MySQL数据库表8
4.3各功能模块设计8
4.3.1ATM柜员机界面设计8
4.3.2登陆页面模块设计8
4.3.3选择服务模块设计9
4.3.4取款模块设计9
4.3.5修改密码模块设计10
4.3.6记录查询模块设计11
4.3.7实时转账模块设计11
4.4异常处理情况说明12
5系统实现与测试12
6课程设计总结14
ATM柜员机
1课程设计过程概述
这学期的最后一周,学院对我们进行了为期一周的JAVA课程课题研究,要求我们在文约楼二楼进行了课程设计。
这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解。
这次课程设计的主要内容是独立用JAVA语言开发一个小的应用程序。
我开发了一个ATM柜员机。
2课程设计题目描述和基本设计要求
我设计的ATM柜员机主要是由各个Windows窗口组成,它是由登录页面、选择服务、取款、查询余额、修改密码和退卡等功能。
它的各种按钮的事件和功能可以简单的模拟ATM柜员机的要求。
3系统需求分析
3.1功能需求分析
本ATM柜员机的主要功能如下所述:
要求使用图形用户界面。
当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:
●查询余额:
初始余额为10000元
●ATM取款:
每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
●ATM存款:
不能出现负存款。
●修改密码:
只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
●存取款明细查询。
3.2系统运行环境
CPU
Pentium41.8G以上
内存
512MB以上
硬盘空间
500MB以上
操作系统
WindowsXP或Windows7
数据库
MYSQL
开发环境
MyEclipse+JDK2.1
4系统设计
4.1系统设计原理
a.先建立数据库且追建数据库的驱动程序。
b.在使用时,分为后台管理和前台操作。
c.用户输入账户基本信息进行登录,然后方能进行下一步操作。
4.1.1系统流程图
4.1.2数据流程图
4.1.3功能模块图
4.1.4系统模块结构图
4.2数据库设计
4.2.1ATME-R图
4.2.2系统E-R图
4.2.3MySQL数据库表
本系统共设计了2个数据表,分别为atmuer表和action_log表.
atmuer表:
此表是用来保存用户信息。
ID是这个表的唯一标识,ID是卡号,PASSWORD是用户账户的密码,NAME是用户名,BALANCE使用户账户余额。
action_log表:
此表是用来保存交易记录。
ACT_ID是这个表格的唯一标识,ACTION是操作类型,ACT_DATE用来记录交易时间,VALUE是交易数额,BALANCE是余额。
4.3各功能模块设计
4.3.1ATM柜员机界面设计
窗体整个框架使用Frame类构造,Frame有自己的外边框和自己的标题,创建Frame时可以指定其窗口标题,我创建的窗口标题是各个不同功能的模块的名字,比如说查询余额,还有取款等。
向Frame窗口中添加组件使用add()。
例如:
button1=newButton("存款");
p1.add(button1);
我所设计的窗口的主要结构的特点就是每个窗口都对应着一个特定的功能。
比如说报各种各样的错,还有各种查询余额、取款、选择服务等,所以它们都是由各种按钮和文本框,标签组成的,而联系各个窗体成为一个整体的就是各个按钮的监听事件。
所以整个设计就趋向简单化了。
为了定义各个按钮所对应的命令和操作,首先需要将各个按钮注册给实现了动作事件的监听接口ActionListener的监听者,然后为监听者定义actionPerformed(ActionEvente)方法,在这个方法中调用e.getSource()来判断用户点击的菜单子项,并完成这个菜单子项定义的操作。
4.3.2登陆页面模块设计
与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:
密码。
所以第一个界面就是要输入密码和卡号才能继续服务。
文本区调用publicStringgetText()方法,获取用户想要的字符串。
用来判断输入的密码和卡号是否正确,如果不正确的话,则弹出密码或卡号错误的警告框,并用dispose()关掉窗口。
登录模块依然采用的是用户名和密码验证的方式,首先需要用户输入用户名和密码然后点击确认进行验证,这里涉及到一组输入位数的问题,系统规定用户需要输入卡号和密码。
4.3.3选择服务模块设计
选择服务界面共有取款、存款、转账、查询余额、修改密码和查看交易记录的6项功能,用户登陆后出现此界面,可以由用户根据自己的需要选择相应的功能。
部分代码如下:
privatevoidjButton1MouseClicked(java.awt.event.MouseEventevt){//GEN-FIRST:
event_jButton1MouseClicked
newManager(this).setVisible(true);
this.dispose();
}
4.3.4取存款模块设计
此模块一个功能是用户登录成功后需要存款时的操作界面,在这个界面中输入存款金额,点击确定按钮后进行存款操作。
另一功能是用户登录成功后需要取款时的操作界面,因为ATM机就要的功能就是取款业务,因此在算法以及界面设计上花的功夫也是最多的,要根据功能需要中的要求做到用户顺利地取款,用户选择取款金额,然后点击确定进行取款操作,数字按钮的个数设计比较大,方便用户操作。
4.3.5修改密码模块设计
只有当旧密码正确且两次新密码输入相同时能进行密码修改,信息正确后系统会给出成功的提示信息。
4.3.6记录查询模块设计
此模块调用数据库ACTION_LOG表的数据,然后通过可视化将数据显示给用户,完成查询用户最近交易的功能。
4.3.7实时转帐模块设计
此模块实现两个用户转账功能,登录帐号,实时转账,输入转入帐号,输入转入数额,便可实现转账。
4.4异常处理情况说明
(1)打开、保存文件时的异常处理
需要处理的异常:
IOException
(2)数据库访问时的异常处理
需要处理的异常:
SQLException
(3)加载类时的异常处理
需要处理的异常:
ClassNotFindException,当应用程序试图使用Class类中的forName方法通过字符串名加载类时,但是没有找到具有指定名称的类的定义。
(4)加载URL时的异常
需要处理的异常:
MalformedURLException,抛出这一异常指示出现了错误的URL。
或者在规范字符串中找不到任何合法协议,或者无法分析字符串。
5系统实现与测试
(1)运行程序,弹出登录界面
(2)输入正确卡号和密码(卡号123111密码123456),进入功能选择界面
(3)实时查询余额
(4)实时存款2500元
(5)实时取款1800元
(6)查询信息
(7)修改密码,将原密码123456改为123999
(8)实时转账
6课程设计总结
6.1遇到的问题及解决办法
在此次课程设计中,我遇到了一些问题,如:
对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。
对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,对于书上以及网站上下载的资料中的Java实例必须有清楚的理解,还有就是多跟精通此方面的老师和同学交流,取其精华。
对于实际动手能力与系统开发的流程的适应,必须多进行实际的练习与操作,才能有大的进步。
6.2心得体会
在这次的学年度课程设计中,我主要运用了Java语言的界面设计、异常处理、Swing控件等,综合运用了Java语言。
我深刻感受到了面向对象语言中类库的强大功能,掌握了运用Java中的类实现某些基本功能,并学会了自己查询使用类的方法,为以后的面向对象语言的自学奠定了基础。
通过这一个礼拜的课程设计我真的学到了很多的东西,当然这也和我的同学的帮助是离不开的。
好了,下面就谈一下我在这些天的体会吧:
在这次的课程设计中,主要是运用JAVA语言来编写一个小的应用程序,当然还可以用其他的技术来辅助了。
在这个小应用程序当中,我用了Java外还用了Swing控件。
输入输出流等技术。
由于以前学的不是很扎实,而且还有些知识我们都是没有学过的,这就要求我们去查相关的书籍,还有就是和同学之间的交流。
正因为这样,才锻炼了我的自学的能力,还有就是加深了我对各个知识点的认识,并且提高了我对专业的学习的兴趣,为我以后的学习打下了基础。
此外,我还感受到了面向对象语言的类库的强大的功能,掌握了运用JAVA中的类实现某些基本功能,并学会了自己查询使用类的方法,也就是要会用API文档,为以后更好的学习面向对象语言奠定了基础。
通过将近一周的努力,这次课程设计终于结束了,在这个过程当中,我学到了很多的知识,同时也感谢我的同学的帮助和指导。
在以后的学习当中,我会更加努力的学习好专业知识,并将所学的知识用于实践当中去,以便牢固掌握知识。
参考文献
[1]王萌,刘婧,来宾著.JAVA程序设计[M]北京冶金工业出版社,2004
[2]黄聪明精通JAVA2程序设计[M]北京:
清华大学出版社,2004.4
[3]王文涛,袁海燕JAVA实用程序设计100例[M]北京:
人民邮电出版社,2005.5
[4]雍俊海JAVA程序设计[M]北京:
清华大学出版社,2006.8
[5]刘宝林JAVA程序设计与案例[M]北京:
高等教育出版社,2006.11
附录
主要代码
privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){
intid=Integer.valueOf(jTextField1.getText());
Stringpawo=String.valueOf(jPasswordField1.getPassword());
Managerm=newManager();
try{
stat=conn.createStatement();
rs=stat.executeQuery("select*fromatmuser");
counter++;
if(counter<=3){
while(rs.next()){
if(rs.getInt
(1)==id&&rs.getString
(2).equals(pawo)){
m.id=id;
m.pawo=pawo;
m.setVisible(true);
conn.close();
this.dispose();
break;
}else{
jLabel1.setText("登录失败");
}
}
}else{
counter++;
if(counter>3)
System.exit(-1);
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
try{
if(rs!
=null){
rs.close();
}
if(stat!
=null){
stat.close();
}
}catch(SQLExceptione){
e.printStackTrace();
}
}
}
publicstaticvoidmain(Stringargs[]){
java.awt.EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
newLogin().setVisible(true);
}
});
}
//转账
privatevoidjButton7ActionPerformed(java.awt.event.ActionEventevt){
jLabel2.setVisible(false);//余额显示的取消
Tran_Accountstran_accounts=newTran_Accounts();
tran_accounts.id=id;
tran_accounts.pawo=pawo;
//tran_accounts.isdeposit=true;
tran_accounts.setVisible(true);
this.dispose();
}
//修改密码
privatevoidjButton4ActionPerformed(java.awt.event.ActionEventevt){
//余额显示的取消
EdPasswordedpassword=newEdPassword();
edpassword.id=id;
edpassword.pawo=pawo;
edpassword.setVisible(true);
this.dispose();
}
//取款按钮
privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){
jLabel2.setVisible(false);
Depositdeposit=newDeposit();
deposit.id=id;
deposit.pawo=pawo;
deposit.isdeposit=true;
deposit.setVisible(true);
this.dispose();
}
//存款按钮
privatevoidjButton6ActionPerformed(java.awt.event.ActionEventevt){
jLabel2.setVisible(false);
Depositdeposit=newDeposit();
deposit.id=id;
deposit.pawo=pawo;
deposit.isdeposit=false;
deposit.setVisible(true);
this.dispose();
}
privatevoidformComponentShown(java.awt.event.ComponentEventevt){
Stringsql="select*fromatmuserwhereid=?
";
try{
pstat=conn.prepareStatement(sql);
pstat.setInt(1,id);
//pstat.setString(2,pawo);
rs=pstat.executeQuery();
rs.next();
jLabel1.setText(rs.getString(3));
}catch(SQLExceptione){
e.printStackTrace();
}finally{
}
}
//按钮余额查询
privatevoidjButton2ActionPerformed(java.awt.event.ActionEventevt){
try{
jLabel2.setText("余额:
"+rs.getString(4));
}catch(SQLExceptione){
e.printStackTrace();
}
jLabel2.setVisible(true);
}
//确定转账
privatevoidjButton1ActionPerformed(java.awt.event.ActionEventevt){
inti=0;
if(jTextField1.getText().equals(jTextField2.getText())){
try{
stat=conn.createStatement();
rs=stat.executeQuery("select*fromatmuser");
System.out.println(i++);
while(rs.next()){
if(rs.getInt
(1)==id&&rs.getString
(2).equals(pawo)){
if(JOptionPane.showConfirmDialog(null,"确实转账?
","确认",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE)==0){
Depositdeposit=newDeposit();
deposit.id=id;
deposit.tran_id=Integer.valueOf(jTextField1
.getText());
deposit.pawo=pawo;
System.out.println(i++);
deposit.isdeposit=true;
deposit.is_tran=false;
deposit.setVisible(true);
this.dispose();
conn.close();
break;
}else{
break;
}
}else{
jLabel1.setText("查询不到该用户");//修改
}
}
}catch(SQLExceptione){
e.printStackTrace();
}finally{
try{
if(rs!
=null){
rs.close();
}
if(pstat!
=null){
pstat.close();
}
if(stat!
=null){
stat.close();
}
if(conn!
=null){
conn.close();
}
}catch(SQLExceptione){
e.printStackTrace();
}
}
}else{
jLabel3.setText("请输入相同输入账号");
}
}
//执行取款
conn.setAutoCommit(true);
sub_sql="updateatmusersetbalance=balance-?
whereid=?
";
add_sql="updateatmusersetbalance=balance+?
whereid=?
";
if(isdeposit){
pstat=conn.prepareStatemen
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- javaATM 课程设计 报告