Java程序设计课程设计报告ATM_第1页
Java程序设计课程设计报告ATM_第2页
Java程序设计课程设计报告ATM_第3页
Java程序设计课程设计报告ATM_第4页
Java程序设计课程设计报告ATM_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java程序设计课程设计报告题 目: 模拟银行储蓄业务软件 学生姓名:孙xx 学 号:20*1016 学生姓名:王xx 学 号:20*1019 系别班级: 14级计算机科学与技术1班 专业(方向): 指导教师: 曹* 信息管理与工程系 2015年12月26日目 录1 系统的需求分析12 系统总体设计12. 1 系统总体设计架构12. 2 系统各模块设计结构22.2.1 用户模块32.2.2 管理员模块423 设计要求424 系统权限划分53 系统详细设计531 数据类型建立532 程序模块具体设计53.2.1 信息存储模块53.2.2 界面功能模块63.2.3 用户服务模块103.2.4 管理

2、员模块144 系统开发环境1841 开发工具1842 应用环境185 系统测试196 系统不足与改进2561 系统不足2562 改进想法257 课程设计总结与心得26参 考 文 献271 系统的需求分析 当前的银行服务项目较多,一些可以通过独立设备进行的操作的服务项目仍然在专柜进行会造成资源浪费。并且传统的柜台服务,效率较低。例如,存取款以及查询存款等不耗时业务,却需要排队等待很长时间。为了节约时间,节省人力物力,所以有必要把银行部分业务从柜台分离出来,以提高银行整体的工作效率。随着计算机技术的发展,人们的需求也不断增加。日常生活中人们越来越多的使用ATM来进行存钱、取钱、转账等银行业务,这个

3、项目的开发是为银行提供一套高效稳定可靠的终端服务平台,为储户登录、存款、取款、查询、转账、手机充值等操作提供便利。这些已经一本实现,需要提高服务的便捷性和用户界面的友好性。该系统还主要实现了管理员操作,可以减少实现客户挂失、补卡、开卡等功能的等待时间。其中的一些术语官方解释如下:客户 :在银行办理各种业务的自由人。 卡:客户在银行卡户的凭证之一。ATM机通过读取卡中信息,进行自助服务。 储户 :在银行办理存款的客户。 ATM : Auto Teller Machine,分为两部分组成。一部分是ATM服务器

4、,另一部分是ATM终端。终端负责和银行卡持有者进行交互,ATM服务器负责处理交易。一个ATM服务器可以同时连接多个ATM终端。 账号:客户在银行开户的唯一ID。  2 系统总体设计 2. 1 系统总体设计架构系统主要分为两大界面,一个是用户界面,一个是管理员界面。有各自的进入页面方式,而进入用户界面主要有存款、取款、查询、改密码、转账和手机交费的功能。管理员界面主要有开户、补办、注销、挂失操作。在功能实现时,主要有一个公共类用于设置各种信息的类型,另一个类用于存储实例化的用户信息。一个主界面类,进行进入页面的选择。然后点击进入用户界面或者管理员界面,两个页面分别包

5、括上述的功能按钮。可以点击进行选择进入相应的页面进行操作。每个界面,每个功能都会单独进行一个类的设置。2. 2 系统各模块设计结构 该系统分为用户模块和管理员模块。其中用户模块分为6个模块,管理员分为4个模块。图2-1 用户界面结构示意图图2-2 管理员界面结构示意图2.2.1 用户模块1、 存款:界面设置定义各种按钮名称和文本框名称,实例化要添加的文本框、按钮,设置背景图片,向面板上添加按钮和文本框并设置添加位置、大小和按钮的背景颜色,设置窗体大小。下面的每个用户界面的设置方式基本都相同就不一一列举主要叙述功能的实现。功能实现存款的过程相对简单,主要是将文本域内的内容转换为String类型,

6、然后将当前用户的金额加上刚刚转换来的数值,并将其设置到相应的用户信息的变量上即可。2、 取款:功能实现就是按钮的动作监听。功能实现有所不同,取款分为储蓄卡和信用卡,通过设置标记来进行标记,用于区分两种卡。将输入到文本框的内容强制转化,在所有的信息中搜索与该卡号相符的信息,将所有信息保存到新的集合类,进行更改。进行小窗口的提示输出。存取款的过程中,面板上会有两个相对其他面板不同的按钮,就是显示存取款金额的按钮,每个按钮都设置相应的监听,如果按动此按钮,则将按钮上的相应信息传给setTest函数,将文本域内设置为相应的数值。3、 查询:只是需要设置监听动作实现查询按钮的功能。需要查询时将文本域内的

7、内容强制转换为String类型,在集合类中查找相应内容,并为小窗体显示的函数传入相应的数值。通过小窗体显示金额。4、 修改密码:在功能现实时主要考虑原密码是否正确、两次输入的新密码是否一致、输入的密码是否为六位有效字符。如果正确进入相应的页面,输入错误三次后则吞卡。两次密码输入不一致则进行小窗口提示,并且调用函数将输入的内容清空,让用户重新输入。字符串长度不为六位则进行清空重新输入。5、 转账:在功能现实时需要考虑的问题就是卡号输入是否正确、判断是否输入的是数字、输入卡号的格式是否为三位有效的数字。输入的卡号是否为当前登录的用户的卡号,如果是则小窗口提示不能为自己转账。如果正常转出,即余额能满

8、足支出金额时,则在集合类对象中将所取金额减去并进行存储即可。当转出金额大于卡内余额时需要提示,这里可以通过boolean值来进行标记,判断如果是信用卡则可以透支1000元,如果透支额度超过1000元,提示用户取款不成功。6、 手机交费:在功能是需要考虑的就是输入的手机号码的判断,利用到了正则表达式。判断手机号码以常用的两位数字开头,且总的位数为11位的正确数字,还有就是当充值的金额大于卡内金额时,要区分卡是否为信用卡,需要对用户进行提示。7、 利率:利率是在用户主界面上设置的一个动作监听不是一个单独的类。将相应的信息get出来,然后将其乘以当前市场的短期存款利率,将获得的数值传入到小窗口提示的

9、函数中,在小窗口进行输出。2.2.2 管理员模块1、开户:在功能实现上我们需要考虑的是银行卡的类型有信用卡和储蓄卡两种、进行姓名输入时要判断该用户是否进行过开户,如果已开户则不能再次进行开户。密码的数位少于6位时,我们需要提示密码请输入不少于6位的数字,在第二次输入密码的时候需要考虑的是两次密码是否一致,当不一致时候需要提示用户,密码输入不一致。自动进行清空。2、注销:注销中需要想到的是用户输入需要注销的卡号有没有存在这个需要判断一下,当输入错误的卡号时需要提示您输入的卡号不存在。同时还有注销卡号的密码是否输入正确。输入错误时同样需要提示你输入的密码有误。注销之后还有一个调查,进行收集用户注销

10、的原因,设置了三个选择的数据。3、挂失补办:补办中我们需要考虑的是挂失的卡号和密码,卡号需要满足的是卡号的号码输入正确,同时对应卡号的密码也需要输入正确。但是如果这个卡被注销过之后我们就不能进行补办,同时提示你这张卡不存在。23 设计要求设计实现模拟银行储蓄业务软件。能够实现管理员的登录,能够进行账户的开户、账户的查询及账户销户等业务。用户可以实现存款、取款、转账以功能。能够结合当前的利率,为储户自动计算相应的存款收益。24 系统权限划分本系统分为用户和管理者两个主面板,用户可以通过自己的卡号和密码进行用户界面的登录。管理员需要通过身份验证密码验证,进行管理员界面登录,然后对用户信息进行相应的

11、操作。3 系统详细设计31 数据类型建立管理员密码字符串用户帐号字符串用户密码字符串电话号码字符串信用卡与储蓄卡Boolean32 程序模块具体设计该程序主要分为四个主要模块。一个是公共类,用于存储用户的信息和实例化的对象信息;一个是用户服务模块,主要包括用户登录界面的设计还有用户各种功能类的实现;还有一个是管理员模块,主要包括管理员的各种业务实现。并且将信息存储模块单独建立package其他的功能类放到一个package中,进行信息存储与功能的划分。在所有功能实现后,由一个主要登录界面、一个用户登录界面和一个管理员登陆界面的设置。主要的登录界面用于选择人员登录,是管理员还是用户。进入相应界面

12、后就是相应的人员登录口令,登陆后就进入个字的主要面板。下面具体进行介绍。3.2.1 信息存储模块建立两个类。一个是card类,设置用户信息包括的类型变量主要有账户、密码、姓名、存款总金额。再设置一个布尔类型值,用于判断用户使用的卡片是储蓄卡还是信用卡。普通储蓄卡标记为true,信用卡标记为false。private String account;/账户private String pwd;/密码private String name;/姓名private float totalMoney;/总金额private boolean type/标记卡的类型类型变量设置完成后设置一个构造方法,传递参数

13、。然后设置每个类型的set,get方法。用于变量的设置和获取。另一个是CardArray类,在CardArray类中定义一个集合类对象,通过集合类对象来存储用户的分条信息。在构造成员方法时,将返回类型设置为集合类类型。并且在类中通过add();方法向集合类中添加实例化的card类的三条用户信息。3.2.2 界面功能模块(1) 主界面(Main):主界面主要是用于管理员和用户的登录选择。主要包括界面的设计,按钮的设计和两个按钮的动作监听。还包含一个使用该系统时系统的时间显示。设置按钮JButton btClient,btServer;、容器和面板Container container=this.

14、getContentPane();JPanel panel = new JPanel(null);,设置按钮的位置按钮的大小以及字体的设置和按钮背景色。 btClient.setBounds(120,260,140,40);btServer.setBounds(300,260,140,40);lTime.setBounds(70,350,100,40);btClient.setFont(font);btServer.setFont(font);lTime.setFont(font);,/按钮背景色btClient.setBackground(Color.white);btServer.setB

15、ackground(Color.white); 先设置窗体,窗体的大小this.setSize(580,450); 、窗体大小不可变setResizable(false)、位置setLocation(350, 170);、可视setVisible(true)、窗体题目setTitle("欢迎来到金苑银行!");以及窗体关闭按钮的动作添加panel.setLayout(null);。然后就是界面设计,包括容器和面板的使用以及将相应的按钮添加到panel上。为使窗体更美观,设置一个方法,将p好的背景图片设置大小和位置在窗体显示。 panel = new JPanel() pro

16、tected void paintComponent(Graphics g) /图片设置ImageIcon icon = new ImageIcon("ImageserverLogin.jpg");Image img = icon.getImage(); g.drawImage(img, 0, 0, 580,450, this); ;其次就是系统时间的设置,通过SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");Date now=new Date();语句获取当前时间,并且设置时间的显示格式,然后

17、添加到面板即可。以下的主页面和登录页面的设置与主页面几乎相同,就不进行详细的介绍了。最后就是按钮的设置和两个按钮的动作监听。将两个按钮Client、Sever添加到面板,设置其位置和大小,并通过setFont来设置显示的字体和字号。通过setBackground设置按钮的颜色。最主要的就是对这两个按钮进行动作的监听。首先是用户按钮,因为要点击用户按钮进入用户界面所以直接调用ClientLogin中的init()方法即可。然后就是server按钮,点击管理员按钮进入管理员界面,所以直接调用severLogin类中的init()方法,进入相应的界面进行接下来的操作。在Main主界面中设置程序的入口

18、主函数,实例化自身即可,通过调用自身的initiative()方法就将主界面显示出来,通过上述按钮的动作添加就可以进入接下来的页面,进行相应的操作。(2) 用户登录界面(ClientLogin):界面的设置与主界面相同,在这里还用到了一个文本域的设置。JPasswordField pfPwd;/输入密码的框该界面还包括用户帐号和密码的输入,以及ok、cancel和empty按钮的监听设置。首先设置ok按钮的监听,String account=tfAccount.getText();String pwd=new String(pfPwd.getPassword();通过这两个语句将文本域内输入的

19、内容转换为String类型。然后利用集合类的迭代的方法将CardArray中的所有集合类的元素赋值给currCard集合类。然后就是功能的实现。这里定义的boolean值用于判断集合类中的卡号信息和获得的String变量是否相等,如果相等返回true否则返回false。如果不相等,通过JOptionPane.showMessageDialog(ClientLogin.this,"账号有误!");语句用小窗口提示:账号有误。如果相等,则说明有此用户的信息,那么进行下一步的判断密码是否相等。如果相等那么小窗口提示欢迎用户登录,并且调用ClientMain类中的init()方法,

20、进入ClientMain的主界面。设置计数器进行计数如果输入三次密码错误,那么小窗口提示错误三次,吞卡。并且直接通过System.exit(0)来退出程序。然后是Empty按钮的动作,直接通过调用setText();方法,将文本域中的内容清空。最后是取消按钮的设置,通过调用dispose方法清空屏幕的部分信息,然后调用主函数的init()方法,返回主函数的界面。就可以进行下一步的操作。(三)用户主页面(ClientMain):其中有两项功能直接添加在用户登录界面上,是余额查询和利率的计算。余额的查询主要是通过一个JOptionPane.showMessageDialog();方法在方法中传入要

21、显示的数值,该数值通过currCard.getTotalMoney()来获得。利率的计算也是通过JOptionPane.showMessageDialog();在小窗口来显示,方法传入的数值通过(0.0035*(currCard.getTotalMoney()来传递。当前活期利率为0.35%所以数值计算用当前所剩的金钱总数乘以0.0035来获得。其中四项操作都是通过定义相应的类,通过设置动作监听,调用相应类的init()方法进入相应的界面。取钱、存钱、改密码、转账方法都是通过这种方法实现的。次类动作按钮的设置都很简单,都是通过dispose()清空屏幕信息,然后调用相应的init()方法,进入

22、到相应的界面。最后是退出操作,直接调用System.exit(0);方法直接推出程序,就是用户操作完成后的退卡操作。(4) 管理员登录界面(SeverLogin):管理员登陆界面设计与用户登录界面设计相同。然后就是按钮的动作监听,ok按钮,首先将文本域内输入的内容强制转换为String类型String pwd=new String(pfPwd.getPassword();,然后判断该字符串是否与密码相同,如果相同则清空屏幕信息进入管理员的主界面,通过实例化管理员主界面的类来进行相应函数的调用转跳;如果不同,计数器增加1,并且输出小窗口提示密码错误,如果计数器记到3依然错误,那么小窗口提示错误次

23、数太多请与15分钟后再次登录。小窗口提示信息通过JOptionPane.showMessageDialog();在括号内传入相应的信息即可显示出来。取消按钮通过实例化Main,来调用init()方法来进行转跳。(五)管理员主界面(SeverMain):管理员登陆界面功能的实现。在这里要将所有的信息读取出来,显示在主界面上。显示卡号、姓名。这里就需要使用迭代器和集合类的方法,新定义一个集合类将原集合类中的所有信息添加到新的集合类中,将其显示的主面板上。Iterator<Card> it=CardArray.getCardList().iterator();int w=180,h=18

24、0;while(it.hasNext()currCard=it.next(); JLabel lName=new JLabel("姓名:"+currCard.getName();JLabel lAccount=new JLabel("卡号:"+currCard.getAccount();panel.add(lName);lName.setBounds(w, h, 100, 30); lName.setFont(new Font("微软雅黑",Font.PLAIN,14); panel.add(lAccount);lAccount.se

25、tBounds(w+100,h, 100, 30);lAccount.setFont(new Font("微软雅黑",Font.PLAIN,14);h+=30;动作的监听都是比较简单的,主要包括注销、开户、挂失、补卡的操作,这些按钮都建立了相应的类,通过实例化对象,调用相应的init()方法就可以实现窗口之间的跳转。3.2.3 用户服务模块所有的用户模块采用Jframe来进行设计,首先要做的就是容器的设置以及在容器上添加面板。每一个类的设计分为两类:一类是窗口显示模块的设计、一类是按钮动作的监听的设置。窗口显示模块主要包括每个窗体的大小、位置的设计,背景图片大小、位置的设计

26、,按钮的位置、大小和颜色的设计。动作监听在下面的每一类中进行详细的解释。(1) 更改密码(ChangePwd):更改密码首先是要进行原密码和更改的密码的输入。要在面板上添加单行文本域进行内容的输入。然后将输入的内容赋值给相应的变量,便于动作监听时进行使用。动作的监听有OK按钮、取消按钮、清空按钮。首先是ok按钮,表示新旧密码的输入完成,点击ok后提示密码修改完成。在更改密码时要进行三次密码的判断,一是判断密码输入是否正确,二是判断两次输入的新密码是否相同,三是判断输入的新密码是否为六位数。在现实这个过程的时候,首先要将文本框内的内容转换为字符串类型String oldpwd=new Strin

27、g(pfOldPwd.getPassword();,以便于调用字符串的equals()方法进行密码是否相符的判断。oldpwd.equals(currCard.getPwd()用来判断当前文本域内输入的字符串是否与原来的字符串相等,如果不相等则小窗口提示密码输入错误,并利用pfOldPwd.setText("");(setText方法用于清空数据重新输入)语句,将文本域内输入的内容清空,请用户进行重新输入。若判断输入的字符串与实例化的对象的相应信息相同,则进行新密码两次输入的匹配判断,如果不相等,进行小窗口提示两次输入的信息不匹配,然后利用pfNewPwd.setText(

28、"");pfRNewPwd.setText("");语句将两次输入的密码清空,请用户进行重新输入。如果两个字符串比较结果相同,那么进行最后一个环节的判断,利用语句if(newpwd.length()=6)判断字符串长度是否为6,如果不为6进行小窗口输出提示,并清空相应的文本域进行重新输入。如果为6则进行集合类对象中的相应内容的查找和修改。利用ArrayList<Card> al=CardArray.getCardList();语句将CardArray集合类中的所有信息赋值给新的集合类对象a1,然后通过int i=al.indexOf(curr

29、Card);将当前输入的信息与集合类中所有的信息进行匹配,找到后将首次出现该信息的位置返回给i变量。并通过currCard.setPwd(newpwd);al.set(i,currCard);语句将查找出来的信息条目的密码进行更改。更改后,小窗口提示用户密码更改成功。然后是cancel按钮,取消改密码的操作ChangePwd.this.dispose();(dispose方法销毁程序中指定的图形界面资源,对数据资源不产生影响,所以当我们在SWing或是AWT中的图形界面组件时如果调用它,组建内的数据对象不会消失,只有在这些数据资源其他地方没有再使用后才会由垃圾回收机制处理掉。)然后调用用户主界

30、面的init()方法new ClientMain(currCard).init();,返回到用户主界面即可进行接下来的其他操作。最后是Empty按钮,主要用于信息输入错误,进行该操作页面的信息清空处理。只要调用setText()方法,将每个文本域的内容设置为空即可。(2) 取钱(TakeMoney):取钱的面板设置基本相同,多了一些按钮,显示取款的金额的按钮,btMon100=new JButton("¥ 100");btMon300=new JButton("¥ 300");btMon500=new JButton("¥ 500")

31、;btMon800=new JButton("¥ 800");btMon1000=new JButton("¥ 1000");btMon3000=new JButton("¥ 3000");btMon2000=new JButton("¥ 2000");btMon5000=new JButton("¥ 5000");将这些按钮添加到面板上,通过setText();将按钮上的数值填写到文本域中。这些按钮可以通过函数setBackground()来设置按钮的背景颜色。通过setBounds();来设

32、置按钮的位置和大小。然后就是动作的监听,ok按钮,主要是取款成功提示,但这里也不乏取款不成功的时候。按下ok键时首先要进行判断,首次判断输入的内容是否为整百,即取余数是否为0,来进行判断。如果为0那么进行下面的内容,如果不为0提示输入错误。进入下一次判断后,要判断卡的类型为信用卡还是储蓄卡,如果为储蓄卡那么所取金额必须小于卡内余额如果条件不成立,那么通过小窗口提示取款失败。JOptionPane.showMessageDialog(TakeMoney.this, "余额不足!");如果为信用卡,那么可以透支1000元,主要通过余额减去获取文本域内容然后与-1000比较,如果

33、大于-1000那么取款成功。如果小于-1000那么小窗口提示已透支取款不成功。如果取款成功那么通过indexOf()函数查找出当前记录的首次出现为止,将相应信息进行更改即可。取消按钮,主要是实例化ClientMain类,调用init()方法进行转跳。转跳到主界面。(3) 存钱(SaveMoney):存钱包括了主界面的设置方法和取钱的界面的设置方法。就不详细介绍了。Ok按钮主要是从当前集合类中利用get方法查找出相应的信息,将文本域内的内容转换为int类型。然后将查找出来的信息与转换的内容相加。重新写回集合类中。int saveMoney=Integer.parseInt(tfSaveMoney

34、.getText(); currCard.setTotalMoney(int) (currCard.getTotalMoney()+saveMoney);ArrayList<Card> al=CardArray.getCardList();int i=al.indexOf(currCard);al.set(i,currCard);取消按钮就是对取消的监听,通过实例化ClientMain调用相应的init()方法,来跳转到相应的界面。(4) 转账(Transfer):转账界面主要包括文本域JTextField tfAccount,tfTransMoney;的设置,第一个文本域用来输入

35、传入的帐号,第二个文本域用来存储传出的金额。按钮的设置,JButton btOk,btCancel,btEmpty;下面会具体介绍每个按钮的动作监听。设置两个Card类型的变量Card currCard;private Card currCard2;,用于存放实例化出来的Card对象。其他的窗体可视、大小、位置、关闭,界面图片,按钮大小、位置、字体、颜色等的设置都与其他的界面相同。Ok动作按钮,首先将文本域的内容提取出来强制转换为String和int类型。用于以后的查找、判断和运算。String account=tfAccount.getText();inttransMoney=Integer

36、.parseInt(tfTransMoney.getText();用迭代器将集合类中的信息获取出来,一步一步判断查找。将所有的信息存储到currCard2中,用于以后的查找。判断转换来的String类型与currCard2中的卡号信息进行对比,如果为当前登录的卡号,那么小窗口提示不能完成转账。并且将转换为的int类型与当前登陆的卡号内的Money数值相减,如果Money-int类型的变量>0,那么成功转账,如果<0那么转初步成功。信用卡就将数值与-1000比较。进行相应的判断。取消按钮,是通过实例化ClientMain来调用init()方法,实现转跳。清空按钮就是通过tfAccou

37、nt.setText("");tfTransMoney.setText("");来将tfAccount和tfTransMoney内的内容设置为空。实现清空的功能。(5) 电话充值(Phone):花费充值也用到两个文本域,一个ok和一个cancel按钮。一个Card类类型的currCard变量。文本域、按钮的设置还有面板的设置都与上述的功能类的设置方法相同。在话费充值时要判断输入的电话号码是否为正常的好吗主要用到了正则表达式来进行手机号码的判断,if(phone.matches("(13|15|18)d9$");即手机号必须是13或者1

38、5或者18开头,后面接九位的自然数即可。如果不相符输出小窗口提示输入的不是电话号码,并清空文本域,如果相符进行下一步。取出文本域中的内容来将其转换为int类型,用int nowMoney=(int) (currCard.getTotalMoney()-payMoney);来计算当前账户减去充值金额后的余额。再进行判断,如果为储蓄卡则判断nowMoney是否>0,如果>0那么显示小窗口提示,是否为当前手机号充值int n = JOptionPane.showConfirmDialog(null, "请确认是否为"+phone+"缴费", &qu

39、ot;标题",JOptionPane.YES_NO_OPTION); ,如果点击否,那么清空文本域内的内容。如果点击是那么提示重置成功并找到当前用户在集合类中的位置,将金额相应的减去重新存入集合类中ArrayList<Card> al=CardArray.getCardList();int i=al.indexOf(currCard);al.set(i,currCard);JOptionPane.showMessageDialog(Phone.this,"缴费成功!");,否则提醒卡内余额不足。如果为信用卡则判断nowMoney是否>-1000。

40、Cancel按钮的动作监听,就是实例化ClientMain类,调用init()跳转到ClientMain的主界面。(6) 查询余额、利率计算(包含在ClientMain中):这两个方法不像其他类一样进行动作监听,类面板之间的跳转。都是在ClientMain上直接添加的两个按钮,进行小窗口提示。利率计算的语句为:JOptionPane.showMessageDialog(ClientMain.this, "以当前利率计算,您的活期利息为"+(0.0035*(currCard.getTotalMoney();显示余额的语句为:JOptionPane.showMessageDia

41、log(ClientMain.this, "您当前的余额为"+currCard.getTotalMoney();3.2.4 管理员模块(1) 开卡(OpenCard):界面的设置在这里主要设置了三个文本域:JTextField tfName;(输入名字的文本域)JPasswordField pfPwd(输入密码),pfRPwd(重新输入密码);三个按钮JButton btOk,btCancel,btEmpty;一个Card类的变量,存储当前存在的卡,Card currCard;然后设置一个集合类ArrayList<Card> cardList;String it

42、ems="储蓄卡","信用卡"利用数组存储下来选择的两个选项。FinalJComboBox cbType=new JComboBox(items);JComboBox将按钮或可编辑字段与下拉列表组合的组件。用户可以从下拉列表中选择值,下拉列表在用户请求时显示。如果使组合框处于可编辑状态,则组合框将包括用户可在其中键入值的可编辑字段。 接下来设置容器、面板,将按钮、文本域add到面板上。然后在面板上通过drawImage()来设置图片的位置和大小。protected void paintComponent(Graphics g) ImageIcon ico

43、n = new ImageIcon("ImageopenCard.jpg");Image img = icon.getImage(); g.drawImage(img, 0, 0, 580,450, this);/this.setSize(580, 450); ;然后通过setBounds()来设置按钮和文本域等的位置和大小。然后设置窗体的大小及其可关闭的动作,并且设置窗体的位置、可是不可改变大小和题目。this.setSize(580,450);panel.setLayout(null);this.setLocation(350, 170);this.setDefault

44、CloseOperation(JFrame.EXIT_ON_CLOSE );this.setResizable(false);this.setVisible(true);this.setTitle("欢迎来到金院建设银行!");然后通过setBackgrond()来设置按钮的背景颜色。管理员的其他功能类都与此类的显示模块设计相似,接下来就不详细介绍,只介绍每个按钮的动作监听个,和界面设计的不同之处。开卡功能的实现,ok按钮的动作监听。首先将文本域内的内容强制转换为String类型,与集合类中存储的对象信息进行匹配,如果发现相同项则输出小窗口提示“该用户已存在”并调用setT

45、ext方法将文本域内的内容清空。如果集合类中没有此信息,那么就进行下一步的判断,判断两次输入的密码是否相等,不想等那么输出小窗口提示“密码不存在,请重新输入”并且清空。 如果两次输入的密码相等那么进行窗口提示,int n = JOptionPane.showConfirmDialog(null, "注:开户时需充值不少于100元,其中卡费10元。是否继续?", "确认框",JOptionPane.YES_NO_OPTION); 如果否,那么直接返回主页面Main。如果选择是,那么获取输入的金额(必为100的整数倍,否则输出小窗口提示)并减去10作为总金额

46、,并且获取当前的时间作为卡号,并且标记储蓄卡还是信用卡if(n=0)String money=JOptionPane.showInputDialog("请输入首次充值金额");int Money =Integer.parseInt(money); if(Money%100=0&&Money>10) int nowMoney=Money-10;SimpleDateFormat df = new SimpleDateFormat("HHmmss");String newCard=df.format(new Date(); if(type

47、id.equals("储蓄卡")boolean type = true;elseboolean type = false;小窗口弹出窗口提示开卡成功,输出所有信息。JOptionPane.showMessageDialog(OpenCard.this,"恭喜您,开户成功(请带身份证找相关人员激活登记后方可使用)!n账户信息:n银行卡类型:"+typeid+"n卡号:"+newCard+"n姓名:"+name+"n余额:"+nowMoney);取消按钮,也是直接实例化Main类,调用他的init(

48、)方法,跳转到相应的界面。清空按钮就是setText()来将文本域内的所有内容清空。(二)注销(Destory):功能实现,主要是ok和cancel的按钮的监听动作的设置。将文本域内的内容强制转换为String类型。String account=tfAccount.getText();然后查找到迭代其中的相应信息。String pwd=new String(pfPwd.getPassword();(将输入的内容和正确账号匹配)Iterator<Card> it=CardArray.getCardList().iterator();boolean flag=false;while(i

49、t.hasNext()currCard=it.next();/存放当前账号所有信息if(account.equals(currCard.getAccount()it.remove();flag=true;break;如果找到相应的信息,并且密码判断不想等,那么小窗口输出密码错误,并进行错误次数计算。如果错误次数三次那么将自动退出程序System.exit(0);如果密码相同那么进行接下来的操作,提示销户成功并输出选择窗口,进行主销卡的原因选择。注销成功后实例化SevereMain调用init()方法,自动返回管理员界面。if(pwd.equals(currCard.getPwd()JOptio

50、nPane.showMessageDialog(Destory.this,"销户成功!");(showMessageDialog 告知用户某事已发生。 )Object possibleValues = "银行卡丢失", "想换个银行", "卡太多了" ; Object selectedValue = JOptionPane.showInputDialog(Destory.this, currCard.getName()+",您注销的原因是", "Input", JOption

51、Pane.INFORMATION_MESSAGE, new ImageIcon("imgpet.png"), possibleValues, possibleValues0);(showInputDialog 提示要求某些输入Destory.this.dispose();new SeverMain().init();取消按钮的监听个,就是实例化SevereMain类,调用其init()方法,实现界面之间的跳转,回到主界面。(三)挂失(Lost):挂失的功能与注销的方法相同。就不详细的介绍。挂失的功能在主界面上主要与补卡的功能相连接,共同实现。注销只是一个单独的按钮实现注销的

52、功能。(四)补卡(ReOpen):ok 的按钮监听首先也是要根据输入的信息查找到该用户的项目信息。然后再继续下一步。判断刚刚输入的内容是否跟当前用户的相匹配,如果不匹配那么输出该用户不存在。如果相匹配,那么输出小窗口提示int n = JOptionPane.showConfirmDialog(null, "请确认卡主姓名:"+currCard.getName()+"n确定要挂失该卡并补办新卡么?nPs:将扣除办卡费10元", "确认框",JOptionPane.YES_NO_OPTION);然后就是补办卡的类型的选择,int m =

53、 JOptionPane.showConfirmDialog(null, "新卡类型是否选择为储蓄卡?", "确认框",JOptionPane.YES_NO_OPTION);if(m=0)typeid="储蓄卡"elsetypeid="信用卡"用户选择完成后就是用户的卡号和金额的显示。卡号是获取系统的当前时间SimpleDateFormat df = new SimpleDateFormat("HHmmss");String newCard=df.format(new Date();。现实的金额

54、就是文本域内输入的内容减去10int nowMoney=(int) (currCard.getTotalMoney()-10);。然后利用迭代器的函数,将原来的用户信息删除remove()。然后提示补卡成功即可。然后是取消按钮的监听,利用dispose方法清空当前屏幕的信息,实例化SevereMain,调用其init()跳转到用户主界面。4 系统开发环境在硬件或操作系统平台上安装一个java平台之后,java应用程序就可以运行。现在java平台已经嵌入到了几乎所有的操作系统。这样java程序可以只编译一次,就可以在各种系统中运行。Java分为三个体系JavaSE、JavaEE、JavaME。4

55、1 开发工具本ATM取款机主要通过MyEclipse进行编写,可以在Eclipse等开发工具上进行调试、运行。42 应用环境Jdk版本1.60以上GBK工作环境编写系统的测试5 系统测试图3.4.1 系统登录界面图 系统中用户登录界面图 系统中用户存款界面图 系统中用户取款界面图 系统中用户查询余额界面图 系统中用户改密码界面图 系统中用户存款界面图 系统中用户手机缴费界面图 系统中用户利率查询界面图 系统中管理员登录界面图 系统中管理员界面图 系统中管理员开户界面图 系统中管理员补办界面图 系统中管理员注销界面6 系统不足与改进61 系统不足系统整体的功能实现上面分为两个模块,一个管理员,一

56、个是用户,管理员界面的功能主要有开户、注销、挂失,而在用户界面我们的所实现的功能有取款、存款、查询、手机缴费、利率的计算、改密码、转账等等,其中每次当我们打开程序运行的时候,用户登录时是我们在开始在类里面写好,实例化的三个用户,他们三个初次登录时就会存在,同时系统还有开户的功能,开户之后就可以登录,其中用户名是开户的时候会有提示,我们取得是开户当时的时间,精确到秒,而密码就是用户自己设置的,这些信息都是在电脑的内存中,当这个程序停止运行,重新再次进入这样的话就不会保存之前的信息,导致刚刚开户的用户无法登陆,这样只能使之前我们在程序中实例化的那三个用户登录。62 改进想法实现这个功能我们想的就是加上文件,利用文件进行存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论