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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

java课程设计报告自动取款机程序.docx

1、java课程设计报告自动取款机程序学院计算机科学与技术系课程设计报告20122013学年第二学期课程 JAVA语言课程设计名称自动取款机模拟程序学生姓名 学号专业班级指导教师2013年2月自动取款机模拟程序一、 课程设计过程概述这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解。这次课程设计的主要内容是独立用JAVA语言开发一个小的应用程序名称:自动取款机模拟程序内容:在PC机上设计一个自动取款机的模拟程序,实现现实中取款机的大部分功能。二、任务和要求1 程序分为两部分:管理端

2、和客户端。2 管理端负责管理所有的银行卡,管理员可以增加和删除银行卡。(1) 每张银行卡由卡号唯一标识,卡号由9位阿拉伯数字组成;(2) 新增的银行卡密码均为“123456”,卡内金额均为0元;(3) 只有管理员增加的银行卡才能登陆客户端;(4) 删除后的银行卡将不能再登陆客户端。3 客户端负责常见的取款机操作。(1) 客户端需要登陆,用户输入正确的银行卡号和密码,系统核对无误后才能进行操作;(2) 登陆后,用户可以进行查询余额、取款、存款和修改密码的操作;(3) 修改密码时,用户需输入两次新密码,确定无误后方可更改;(4) 取款和存款操作,有操作结果提示,如“操作成功”或“余额不足,操作失败

3、”等。三、数据库设计 程序中包括用户客户端和管理客户端,所以在数据库中需要设计用户信息表和管理员信息表分别来保存用户信息和管理员信息。表1用户信息表(userse)列名数据类型及长度是否为空主键说明FIDvarcharNO主键用户帐号FNamevarcharNO用户名 FPswvarcharNO用户密码FMonvarcharNO钱数目表2管理员信息表(gl)列名数据类型及长度是否为空主键说明FIDvarcharNO主键管理员帐号 FPswvarcharNO管理员密码四、系统设计1、总体设计我所设计的ATM机主要是由登录页面模块还由选择服务模块组成,在登录时可选择用户登录或管理员登陆。其中用户的

4、选择服务模块由取款模块、存款模块、查询余额模块、修改密码模块、转账模块、退卡模块组成,管理员的选择服务模块由开户模块、销户模块、修改个人密码模块退出模块组成。其功能结构图如下所示: 用户模块结构图 2 、ATM柜员机界面设计我觉得一个系统的界面应该要简单明了,当然样式美观就更好了。我设计的界面主要是由窗体组成,操作简单。而每一个窗口则执行相应的功能。一个系统界面的好坏直接影响到用户的操作,界面设计要求样式美观、简单明了、方便易操作。我设计的界面主要分为窗体、菜单、按钮和文本输入框几个部分,分别执行相应的操作。(1)窗体的设计窗体整个框架使用JFrame类构造,JFrame有自己的外边框和自己的

5、标题,创建JFrame时可以指定其窗口标题,我创建的窗口标题是各个不同功能的模块的名字,比如说查询余额窗口,取款窗口等。(2)窗体的主要结构的设计我所设计的窗口的主要结构的特点就是每个窗口都对应着一个特定的功能。比如说报各种各样的错,还有各种查询余额、取款、选择服务等,所以它们都是由各种按钮和文本框,标签组成的,而联系各个窗体成为一个整体的就是各个按钮的监听事件,另外所有窗口布局均为网格布局。为了定义各个按钮所对应的命令和操作,首先需要将各个按钮注册给实现了动作事件的监听接口ActionListener的监听者,然后为监听者定义actionPerformed(ActionEvent e)方法,

6、在这个方法中调用e.getSource()或e.getActionCommand()来判断用户点击的菜单子项,并完成这个菜单子项定义的操作。3 、各功能模块设计3.1 登录页面模块设计用户进入登录页面后要输入账号和密码,点击确定后系统会通过连接数据库验证密码是否正确,在密码正确的情况下界面跳转到功能选择界面,否则弹出警告密码错误窗口。我定义了文本框累的对象FI,FPs。主要是用于输入单行的文本;文本区调用public String getText()方法,获取用户想要的字符串。因为要区分登录者是用户还是管理员,所以设置了两个JRadioButton来确定登录者的身份。当登录者选择的身份为用户时

7、通过Alogin()类驱动加载数据库,从用户表中获取相关信息并与用户输入信息比较,信息相符时登录成功,否则弹出警告窗口。部分源码如下; if(gl.isSelected() DatabaseOperate myLogin = new DatabaseOperate();/连接数据库及相关操作 s = myLogin.Alogin(FI.getText().trim(); if (FI.getText().trim().equals(s0.trim()& (FPs.getText().trim().equals(s1.trim() JOptionPane.showMessageDialog(nu

8、ll,”您好,Administrator Welcome!); dispose(); / 关闭登录窗口 new AdminFrame(); / 调出管理员操作窗口 else JOptionPane.showMessageDialog(null, 用户名或密码错误,请重新登录!,警告, JOptionPane.ERROR_MESSAGE); 当登录者选择身份为管理员时身份验证源码如下:else if(us.isSelected() DatabaseOperate myLogin = new DatabaseOperate(); s = myLogin.login(FI.getText().tri

9、m(); if (FI.getText().trim().equals(s0.trim()& (FPs.getText().trim().equals(s1.trim() JOptionPane.showMessageDialog(null, 欢迎普通用户,登录成功!); dispose(); / 关闭登录窗口 new MainFrame(); / 调出主操作窗口 else JOptionPane.showMessageDialog(null, 用户名或密码错误,请重新登录!,警告, JOptionPane.ERROR_MESSAGE); 图1 登录窗口3.2 选择服务模块设计在选择服务模块中

10、,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。每一个按钮都有监听器,在选择了按钮后,java.awt.event中的ActionEvent类创建一个事件对象,并将它传递给方法public void actionPerformed(ActionEvent e)中的参数e,监视器就会知道所发生的事件,对此事件进行处理。其中的部分源代码为:public void actionPerformed(ActionEvent e) if (e.getSource() = deposit) dispose(); new DepositFrame(); else if (e.g

11、etSource() = get) dispose(); new GetFrame(); else if (e.getSource() = transfer) dispose(); new TransferFrame(); else if (e.getSource() = change) dispose(); new Change(); else if (e.getSource() = search) DatabaseOperate mySearch = new DatabaseOperate(); String t = new String2; t = mySearch.schbalance

12、(BankSystem.s0.trim(); FMo.setText(t1); else if (e.getSource() = exit) dispose(); JOptionPane.showMessageDialog(null,请取回您的磁卡!); dispose(); 图2 主操作窗口3.3 取款模块设计在取款模块有两个取款窗口,取款窗口1和取款窗口2。在取款窗口1中用户可以直接点击固定金额对应的按钮进行取款,当然了取款的时候也不能超过卡里的余额,否则就会弹出报错的窗口。取款窗口1部分源代码如下:DatabaseOperate myGet = new DatabaseOperate()

13、; String t = new String2; if (e.getSource() = money1) Integer moneyi=100; String money=moneyi.toString(); t = myGet.schbalance(BankSystem.s0.trim(); if (100 = Double.parseDouble(t1.trim() myGet.get(money, BankSystem.s0.trim(); JOptionPane.showMessageDialog(null, 成功取款100元!); dispose(); new MainFrame(

14、); else JOptionPane.showMessageDialog(null, 取款失败,您金额不足!, 警告, JOptionPane.ERROR_MESSAGE); 图3 取款窗口1当用户想要取款金额不存在对应的按钮时,用户可以点击其他面值按钮,然后系统将会关闭当前窗口弹出取款窗口2,在该窗口用户可以再文本框里输入任意整百的金额进行取款操作。部分源代码如下:DatabaseOperate myGet = new DatabaseOperate(); String t = new String2; if (e.getSource() = ok) int money;String my

15、Text; myText= moneyField.getText(); money=Integer.parseInt(myText); if(money % 100 =0) t = myGet.schbalance(BankSystem.s0.trim(); if (Double.parseDouble(moneyField.getText() = Double.parseDouble(t1.trim() myGet.get(moneyField.getText().trim(), BankSystem.s0.trim(); JOptionPane.showMessageDialog(null

16、, 取款成功!); dispose();new MainFrame(); else JOptionPane.showMessageDialog(null,取款失败,您金额不足!, 警告,JOptionPane.ERROR_MESSAGE); else JOptionPane.showMessageDialog(null, 请重新输入,请输入整百的数!, 警告,JOptionPane.ERROR_MESSAGE); moneyField.setText(null); 图4 取款窗口23.4 存款模块设计 在存款模块中,用e.getSource()方法获取用户在文本框中输入的金额,然后调用Data

17、baseOperate()类的deposit(String,String)方法来更新数据库里的相关信息。deposit(String,String)方法的源代码如下:public String deposit(String money, String num) DatabaseConn DB = new DatabaseConn(); this.FMon = money;this.FID = num; String t = new String2; t = schbalance(FID); double temp = Double.parseDouble(t1.trim() + Double.

18、parseDouble(FMon); sql = update userse set FMon = + temp + where FID = + Integer.parseInt(t0.trim()+ ; try DB.OpenConn(); DB.executeUpdate(sql); catch (Exception e) System.out.println(e); JOptionPane.showMessageDialog(null, 存款失败!); finally DB.closeStmt(); DB.closeConn(); return t; 图5 存款窗口3.5修改密码模块设计

19、在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。再一个就是要两次输入你的新密码,且两次要匹配,否则也会报错,然后再重新回到修改密码的界面。在修改密码时用到的方法为:DatabaseOperate myChan = new DatabaseOperate(); if(e.getSource()=ok) /单击确定按钮后,判断两次输入的新密码是否一致 if(FPs1.getText().trim().equals(FPs2.getText().trim() myChan.change(FPs1.getText().trim(), BankSystem.s0.trim(); JO

20、ptionPane.showMessageDialog(null, 密码修改成功!); dispose(); new MainFrame(); else JOptionPane.showMessageDialog(null, 您再次输入的密码不一致,请重新输入!); 图6 用户修改密码窗口3.6 转账模块设计在该模块中用两个文本框分别获取转账对方的账号和转账金额,通过Catch()方法连接数据库检索对方账号是否存在,在对方账号存在的情况下在调用schbalance()方法查看本人账户金额是否充足,若充足则调用get()和deposit()方法分别对本人账户进行取款操作对对方账户进行取款操作。部

21、分代码如下: if(Double.parseDouble(moneyField.getText().trim() = Double.parseDouble(t1.trim() myTransfer.get(moneyField.getText().trim(), BankSystem.s0.trim(); /本人相当于取钱 myTransfer.deposit(moneyField.getText().trim(), FI.getText().trim(); /对方相当于存钱 JOptionPane.showMessageDialog(null,转账成功!); dispose(); new M

22、ainFrame(); else JOptionPane.showMessageDialog(null,转账失败,您卡上余额不足!,警告,JOptionPane.ERROR_MESSAGE); 图7 转账窗口3.7查询余额模块设计查询余额功能是在主操作窗口中实现的,当用户点击查询余额按钮时在下面的文本框中显示出该账号的当前余额。图8 查询余额窗口3.8 管理员操作模块设计 管理员登录后可以进行的操作有开户、销户、修改个人密码。在开户操作时要先检查新的账户是否已经存在,销户时可以先查询被销账户中的余额。图9 管理员操作窗口开户部分代码如下:info0 = FID.getText().trim()

23、;info1 = FName.getText().trim();DatabaseOperate mycatch = new DatabaseOperate();a = mycatch.Catch(FID.getText().trim();if (a=false) DatabaseOperate insertTable = new DatabaseOperate(); String sqluserse = insert into userse(FID,FName,FPsw ,FMon) + values(+info0+, +info1+, +123456+,+ 0 +); insertTable

24、.Insert(sqluserse); JOptionPane.showMessageDialog(null, 客户信息已添加!); dispose(); new AdminFrame(); else JOptionPane.showMessageDialog(null, 此帐号已存在,请重新输入!,警告, JOptionPane.ERROR_MESSAGE); FID.setText(null); FName.setText(null);图10 开户窗口销户部分代码如下:if (e.getSource() = logoff) / 将找到的相关信息,删除 String deluserse =

25、delete from userse where FID = + Integer.parseInt(FID.getText().trim() + ; myLogoff.Insert(deluserse); JOptionPane.showMessageDialog(null, 客户所有信息已删除!); dispose(); new AdminFrame();else if (e.getSource() = search) DatabaseOperate mySearch = new DatabaseOperate(); String t = new String2; t = mySearch.

26、schbalance(FID.getText().trim(); FMo.setText(t1)图11 销户窗口图12 管理员个人密码修改窗口五、设计中遇到的问题在此次课程设计中,我遇到了一些问题,如:对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。尤其是连接数据库的相关操作感觉更加困难,在

27、此也花了很长时间。 对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,对于书上以及网站上下载的资料中的Java实例必须有清楚的理解,还有就是多跟精通此方面的老师和同学交流,取其精华。对于实际动手能力与系统开发的流程的适应,必须多进行实际的练习与操作,才能有大的进步。六、设计体会在这次的课程设计中,主要是运用JAVA语言来编写一个小的应用程序,当然还可以用其他的技术来辅助了。在这个小应用程序当中,我用了Java外还用了Swing控件。由于以前学的不是很扎实,而且还有些知识我们都是没有学过的,这就要求我们去查相关的书籍,还有就是和同学之间的交流。正因为这样,才锻炼了我的自学的能力

28、,还有就是加深了我对各个知识点的认识,并且提高了我对专业的学习的兴趣,为我以后的学习打下了基础。此外,我还感受到了面向对象语言的类库的强大的功能,掌握了运用JAVA中的类实现某些基本功能,并学会了自己查询使用类的方法,也就是要会用API文档,为以后更好的学习面向对象语言奠定了基础。七、参考文献1 王桂彬、刘家兰,JAVA大学教程M.清华大学出版社 20082 印昊, JAVA与面向对象程序设计M.高等教育出版社 20043 李尊朝, JAVA语言程序设计M.中国铁道出版社 20044 丁诚.JAVA完全自学手册M.机械工业出版社 2010八、源代码登录相关代码package abc;import java.awt.Color;import java.awt.Container;import java.awt.Font;import java.awt.GridLayout;import java.awt.TextField;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ButtonGroup;im

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

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