ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:451.86KB ,
资源ID:9851239      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9851239.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(javaATM课程设计报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

javaATM课程设计报告.docx

1、javaATM课程设计报告序号: 学号: 10416216 课 程 设 计设计课程名称: JAVA 课程设计 题 目: APM柜员机 学 生 姓 名: 梁惠康 学 院: 信息科学与工程 专 业 班 级:计算机102 指 导 教 师: 杨亚南 成 绩: 设计时间: 2011 年 12 月 27 日 2012 年 1 月 7 日面向对象程序设计(JAVA) 课程设计任务书一、设计题目:企业客户管理系统二、设计内容:利用项目管理器组织、设计并连编一个应用程序用于管理某个企业的客户资源。要求系统能够通过菜单实现数据维护、浏览、查询、报表、退出等基本功能;可以自行设计使系统具有更强的功能。三、基本要求:

2、1、 对源程序编写的要求:(1) 能够实现任务书中的功能;(2)尽可能使界面友好、直观、易操作; (3)源程序要有适当的注释,使程序容易阅读。2、 撰写“课程设计报告”,要求如下:(1) 封面:统一采用常州大学课程设计说明书封面(2) 任务书(3) 目录(4) 正文,包括:1) 分析系统功能,绘制系统功能结构框图;2) 数据库设计3) 表单、报表设计以及程序代码;4) 菜单设计; 5) 使用说明;6) 日志;7) 心得体会;(5)参考文献3、 课程设计验收要求:(1)运行所设计的系统;(2)回答有关问题;(3)提交课程设计报告和任务书;(4)提交源程序四、进度安排:1、系统分析、设计准备阶段:

3、2学时2、编程调试阶段:14学时3、总结和书写报告阶段:2学时4、考核阶段:2学时指导教师: 年 月 日系主任: 苏兵 年 月 日目 录1 课程设计过程概述 42 课程设计题目描述和基本设计要求 43 系统需求分析 43.1 功能需求分析 43.2 系统运行环境 54 系统设计 54.1 系统设计原理 54.1.1 系统流程图 54.1.2 数据流程图 64.1.3 功能模块图 64.1.4 系统模块结构图 74.2 数据库设计 74.2.1 ATM E-R图 74.2.2 系统 E-R图 84.2.3 MySQL数据库表 84.3 各功能模块设计 84.3.1 ATM柜员机界面设计 84.3

4、.2 登陆页面模块设计 84.3.3 选择服务模块设计 94.3.4 取款模块设计 94.3.5 修改密码模块设计 104.3.6 记录查询模块设计 114.3.7 实时转账模块设计 114.4 异常处理情况说明 125 系统实现与测试 126 课程设计总结 14ATM柜员机1 课程设计过程概述这学期的最后一周,学院对我们进行了为期一周的JAVA课程课题研究,要求我们在文约楼二楼进行了课程设计。这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解。这次课程设计的主要内容是独立用J

5、AVA语言开发一个小的应用程序。我开发了一个ATM柜员机。2 课程设计题目描述和基本设计要求我设计的ATM柜员机主要是由各个Windows窗口组成,它是由登录页面、选择服务、取款、查询余额、修改密码和退卡等功能。它的各种按钮的事件和功能可以简单的模拟ATM柜员机的要求。3 系统需求分析3.1 功能需求分析本ATM柜员机的主要功能如下所述:要求使用图形用户界面。当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行: 查询余额:初始余额为10000元 ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。 ATM

6、存款:不能出现负存款。 修改密码:只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。 存取款明细查询。3.2 系统运行环境CPUPentium4 1.8G以上内存512MB以上硬盘空间500MB以上操作系统Windows XP或Windows 7数据库MYSQL 开发环境MyEclipse+JDK2.14 系统设计4.1 系统设计原理a. 先建立数据库且追建数据库的驱动程序。 b. 在使用时,分为后台管理和前台操作。c. 用户输入账户基本信息进行登录,然后方能进行下一步操作 。4.1.1 系统流程图4. 1.2 数据流程图4. 1.3 功能模块图4. 1.4 系统模块结

7、构图4.2 数据库设计4. 2.1 ATM E-R图4. 2.2 系统 E-R图4. 2.3 MySQL 数据库表本系统共设计了2个数据表,分别为atmuer表和action_log表.atmuer表:此表是用来保存用户信息。ID是这个表的唯一标识, ID是卡号,PASSWORD是用户账户的密码,NAME是用户名,BALANCE使用户账户余额。action_log表:此表是用来保存交易记录。ACT_ID是这个表格的唯一标识,ACTION是操作类型,ACT_DATE用来记录交易时间,VALUE是交易数额,BALANCE是余额。4.3 各功能模块设计4.3.1 ATM柜员机界面设计窗体整个框架使用

8、Frame类构造,Frame有自己的外边框和自己的标题,创建Frame时可以指定其窗口标题,我创建的窗口标题是各个不同功能的模块的名字,比如说查询余额,还有取款等。 向Frame窗口中添加组件使用add()。例如:button1 = new Button(存款); p1.add(button1);我所设计的窗口的主要结构的特点就是每个窗口都对应着一个特定的功能。比如说报各种各样的错,还有各种查询余额、取款、选择服务等,所以它们都是由各种按钮和文本框,标签组成的,而联系各个窗体成为一个整体的就是各个按钮的监听事件。所以整个设计就趋向简单化了。为了定义各个按钮所对应的命令和操作,首先需要将各个按钮

9、注册给实现了动作事件的监听接口ActionListener的监听者,然后为监听者定义actionPerformed(ActionEvent e)方法,在这个方法中调用e.getSource() 来判断用户点击的菜单子项,并完成这个菜单子项定义的操作。4.3.2 登陆页面模块设计与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:密码。所以第一个界面就是要输入密码和卡号才能继续服务。 文本区调用public String getText()方法,获取用户想要的字符串。用来判断输入的密码和卡号是否正确,如果不正确的话,则弹出密码或卡号错误的警告框,并用dispose()关掉窗口。登录模块依

10、然采用的是用户名和密码验证的方式,首先需要用户输入用户名和密码然后点击确认进行验证,这里涉及到一组输入位数的问题,系统规定用户需要输入卡号和密码。4.3.3 选择服务模块设计选择服务界面共有取款、存款、转账、查询余额、修改密码和查看交易记录的6项功能,用户登陆后出现此界面,可以由用户根据自己的需要选择相应的功能。部分代码如下:private void jButton1MouseClicked(java.awt.event.MouseEvent evt) /GEN-FIRST:event_jButton1MouseClicked new Manager(this).setVisible(true

11、); this.dispose(); 4.3.4 取存款模块设计此模块一个功能是用户登录成功后需要存款时的操作界面,在这个界面中输入存款金额,点击确定按钮后进行存款操作。另一功能是用户登录成功后需要取款时的操作界面,因为ATM机就要的功能就是取款业务,因此在算法以及界面设计上花的功夫也是最多的,要根据功能需要中的要求做到用户顺利地取款,用户选择取款金额,然后点击确定进行取款操作,数字按钮的个数设计比较大,方便用户操作。4.3.5 修改密码模块设计只有当旧密码正确且两次新密码输入相同时能进行密码修改,信息正确后系统会给出成功的提示信息。4.3.6 记录查询模块设计此模块调用数据库ACTION_L

12、OG表的数据,然后通过可视化将数据显示给用户,完成查询用户最近交易的功能。 4.3.7 实时转帐模块设计此模块实现两个用户转账功能,登录帐号,实时转账,输入转入帐号,输入转入数额,便可实现转账。4.4 异常处理情况说明(1)打开、保存文件时的异常处理需要处理的异常:IOException(2)数据库访问时的异常处理需要处理的异常:SQLException(3)加载类时的异常处理需要处理的异常:ClassNotFindException,当应用程序试图使用Class类中的forName方法通过字符串名加载类时,但是没有找到具有指定名称的类的定义。(4)加载URL时的异常需要处理的异常:Malfo

13、rmedURLException,抛出这一异常指示出现了错误的 URL。或者在规范字符串中找不到任何合法协议,或者无法分析字符串。5 系统实现与测试(1) 运行程序,弹出登录界面(2) 输入正确卡号和密码(卡号123111密码123456),进入功能选择界面(3) 实时查询余额(4) 实时存款2500元(5) 实时取款1800元(6) 查询信息(7) 修改密码,将原密码123456改为123999(8) 实时转账6 课程设计总结6.1 遇到的问题及解决办法在此次课程设计中,我遇到了一些问题,如:对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,只学习到了一些最

14、基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。 对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,对于书上以及网站上下载的资料中的Java实例必须有清楚的理解,还有就是多跟精通此方面的老师和同学交流,取其精华。对于实际动手能力与系统开发的流程的适应,必须多进行实际的练习与操作,才能有大的进步。6.2 心得体会在这次的学年度课程设计中,我主要运用了Java语言的界面设计、

15、异常处理、Swing控件等,综合运用了Java语言。我深刻感受到了面向对象语言中类库的强大功能,掌握了运用Java中的类实现某些基本功能,并学会了自己查询使用类的方法,为以后的面向对象语言的自学奠定了基础。通过这一个礼拜的课程设计我真的学到了很多的东西,当然这也和我的同学的帮助是离不开的。好了,下面就谈一下我在这些天的体会吧:在这次的课程设计中,主要是运用JAVA语言来编写一个小的应用程序,当然还可以用其他的技术来辅助了。在这个小应用程序当中,我用了Java外还用了Swing控件。输入输出流等技术。由于以前学的不是很扎实,而且还有些知识我们都是没有学过的,这就要求我们去查相关的书籍,还有就是和

16、同学之间的交流。正因为这样,才锻炼了我的自学的能力,还有就是加深了我对各个知识点的认识,并且提高了我对专业的学习的兴趣,为我以后的学习打下了基础。此外,我还感受到了面向对象语言的类库的强大的功能,掌握了运用JAVA中的类实现某些基本功能,并学会了自己查询使用类的方法,也就是要会用API文档,为以后更好的学习面向对象语言奠定了基础。通过将近一周的努力,这次课程设计终于结束了,在这个过程当中,我学到了很多的知识,同时也感谢我的同学的帮助和指导。在以后的学习当中,我会更加努力的学习好专业知识,并将所学的知识用于实践当中去,以便牢固掌握知识。参考文献1 王萌,刘婧,来宾著.JAVA程序设计M北京 冶金

17、工业出版社,20042 黄聪明 精通 JAVA2程序设计M北京:清华大学出版社,2004.43 王文涛,袁海燕 JAVA实用程序设计100例M北京:人民邮电出版社,2005.54 雍俊海 JAVA程序设计M北京:清华大学出版社,2006.85 刘宝林 JAVA程序设计与案例M北京:高等教育出版社,2006.11附录主要代码 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) int id = Integer.valueOf(jTextField1.getText(); String pawo = String

18、.valueOf(jPasswordField1.getPassword(); Manager m = new Manager(); try stat = conn.createStatement(); rs = stat.executeQuery(select * from atmuser); counter+; if (counter 3) System.exit(-1); catch (SQLException e) e.printStackTrace(); finally try if (rs != null) rs.close(); if (stat != null) stat.cl

19、ose(); catch (SQLException e) e.printStackTrace(); public static void main(String args) java.awt.EventQueue.invokeLater(new Runnable() public void run() new Login().setVisible(true); ); /转账 private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) jLabel2.setVisible(false); /余额显示的取消 Tran_

20、Accounts tran_accounts = new Tran_Accounts(); tran_accounts.id = id; tran_accounts.pawo = pawo; /tran_accounts.isdeposit = true; tran_accounts.setVisible(true); this.dispose(); /修改密码 private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) /余额显示的取消 EdPassword edpassword = new EdPassword(

21、); edpassword.id = id; edpassword.pawo = pawo; edpassword.setVisible(true); this.dispose(); /取款按钮 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) jLabel2.setVisible(false); Deposit deposit = new Deposit(); deposit.id = id; deposit.pawo = pawo; deposit.isdeposit = true; deposit.s

22、etVisible(true); this.dispose(); /存款按钮 private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) jLabel2.setVisible(false); Deposit deposit = new Deposit(); deposit.id = id; deposit.pawo = pawo; deposit.isdeposit = false; deposit.setVisible(true); this.dispose(); private void formComponen

23、tShown(java.awt.event.ComponentEvent evt) String sql = select * from atmuser where id = ? ; try pstat = conn.prepareStatement(sql); pstat.setInt(1, id); /pstat.setString(2, pawo); rs = pstat.executeQuery(); rs.next(); jLabel1.setText(rs.getString(3); catch (SQLException e) e.printStackTrace(); final

24、ly /按钮余额查询 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) try jLabel2.setText(余额: + rs.getString(4); catch (SQLException e) e.printStackTrace(); jLabel2.setVisible(true); /确定转账 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) int i = 0; if (jTextField1.getTe

25、xt().equals(jTextField2.getText() try stat = conn.createStatement(); rs = stat.executeQuery(select * from atmuser); 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.

26、QUESTION_MESSAGE) = 0) Deposit deposit = new Deposit(); 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

27、; else jLabel1.setText(查询不到该用户);/修改 catch (SQLException e) 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 (SQLException e) e.printStackTrace(); else jLabel3.setText(请输入相同输入账号); /执行取款 conn.setAutoCommit(true); sub_sql = update atmuser set balance = balance - ? where id = ? ; add_sql = update atmuser set balance = balance + ? where id = ? ; if (isdeposit) pstat = conn.prepareStatemen

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1