Java程序设计课程设计报告ATMWord文档格式.doc
- 文档编号:1451826
- 上传时间:2023-04-30
- 格式:DOC
- 页数:29
- 大小:1.20MB
Java程序设计课程设计报告ATMWord文档格式.doc
《Java程序设计课程设计报告ATMWord文档格式.doc》由会员分享,可在线阅读,更多相关《Java程序设计课程设计报告ATMWord文档格式.doc(29页珍藏版)》请在冰点文库上搜索。
4.2应用环境 18
5系统测试 19
6系统不足与改进 25
6.1系统不足 25
6.2改进想法 25
7课程设计总结与心得 26
参考文献 27
1系统的需求分析
当前的银行服务项目较多,一些可以通过独立设备进行的操作的服务项目仍然在专柜进行会造成资源浪费。
并且传统的柜台服务,效率较低。
例如,存取款以及查询存款等不耗时业务,却需要排队等待很长时间。
为了节约时间,节省人力物力,所以有必要把银行部分业务从柜台分离出来,以提高银行整体的工作效率。
随着计算机技术的发展,人们的需求也不断增加。
日常生活中人们越来越多的使用ATM来进行存钱、取钱、转账等银行业务,这个项目的开发是为银行提供一套高效稳定可靠的终端服务平台,为储户登录、存款、取款、查询、转账、手机充值等操作提供便利。
这些已经一本实现,需要提高服务的便捷性和用户界面的友好性。
该系统还主要实现了管理员操作,可以减少实现客户挂失、补卡、开卡等功能的等待时间。
其中的一些术语官方解释如下:
客户
:
在银行办理各种业务的自由人。
卡:
客户在银行卡户的凭证之一。
ATM机通过读取卡中信息,进行自助服务。
储户
在银行办理存款的客户。
ATM
Auto
Teller
Machine,分为两部分组成。
一部分是ATM服务器,另一部分是ATM终端。
终端负责和银行卡持有者进行交互,ATM服务器负责处理交易。
一个ATM服务器可以同时连接多个ATM终端。
账号:
客户在银行开户的唯一ID。
2系统总体设计
2.1系统总体设计架构
系统主要分为两大界面,一个是用户界面,一个是管理员界面。
有各自的进入页面方式,而进入用户界面主要有存款、取款、查询、改密码、转账和手机交费的功能。
管理员界面主要有开户、补办、注销、挂失操作。
在功能实现时,主要有一个公共类用于设置各种信息的类型,另一个类用于存储实例化的用户信息。
一个主界面类,进行进入页面的选择。
然后点击进入用户界面或者管理员界面,两个页面分别包括上述的功能按钮。
可以点击进行选择进入相应的页面进行操作。
每个界面,每个功能都会单独进行一个类的设置。
2.2系统各模块设计结构
该系统分为用户模块和管理员模块。
其中用户模块分为6个模块,管理员分为4个模块。
图2-1用户界面结构示意图
图2-2管理员界面结构示意图
2.2.1用户模块
1、存款:
界面设置——定义各种按钮名称和文本框名称,实例化要添加的文本框、按钮,设置背景图片,向面板上添加按钮和文本框并设置添加位置、大小和按钮的背景颜色,设置窗体大小。
下面的每个用户界面的设置方式基本都相同就不一一列举主要叙述功能的实现。
功能实现——存款的过程相对简单,主要是将文本域内的内容转换为String类型,然后将当前用户的金额加上刚刚转换来的数值,并将其设置到相应的用户信息的变量上即可。
2、取款:
功能实现就是按钮的动作监听。
功能实现有所不同,取款分为储蓄卡和信用卡,通过设置标记来进行标记,用于区分两种卡。
将输入到文本框的内容强制转化,在所有的信息中搜索与该卡号相符的信息,将所有信息保存到新的集合类,进行更改。
进行小窗口的提示输出。
存取款的过程中,面板上会有两个相对其他面板不同的按钮,就是显示存取款金额的按钮,每个按钮都设置相应的监听,如果按动此按钮,则将按钮上的相应信息传给setTest函数,将文本域内设置为相应的数值。
3、查询:
只是需要设置监听动作实现查询按钮的功能。
需要查询时将文本域内的内容强制转换为String类型,在集合类中查找相应内容,并为小窗体显示的函数传入相应的数值。
通过小窗体显示金额。
4、修改密码:
在功能现实时主要考虑原密码是否正确、两次输入的新密码是否一致、输入的密码是否为六位有效字符。
如果正确进入相应的页面,输入错误三次后则吞卡。
两次密码输入不一致则进行小窗口提示,并且调用函数将输入的内容清空,让用户重新输入。
字符串长度不为六位则进行清空重新输入。
5、转账:
在功能现实时需要考虑的问题就是卡号输入是否正确、判断是否输入的是数字、输入卡号的格式是否为三位有效的数字。
输入的卡号是否为当前登录的用户的卡号,如果是则小窗口提示不能为自己转账。
如果正常转出,即余额能满足支出金额时,则在集合类对象中将所取金额减去并进行存储即可。
当转出金额大于卡内余额时需要提示,这里可以通过boolean值来进行标记,判断如果是信用卡则可以透支1000元,如果透支额度超过1000元,提示用户取款不成功。
6、手机交费:
在功能是需要考虑的就是输入的手机号码的判断,利用到了正则表达式。
判断手机号码以常用的两位数字开头,且总的位数为11位的正确数字,还有就是当充值的金额大于卡内金额时,要区分卡是否为信用卡,需要对用户进行提示。
7、利率:
利率是在用户主界面上设置的一个动作监听不是一个单独的类。
将相应的信息get出来,然后将其乘以当前市场的短期存款利率,将获得的数值传入到小窗口提示的函数中,在小窗口进行输出。
2.2.2管理员模块
1、开户:
在功能实现上我们需要考虑的是银行卡的类型有信用卡和储蓄卡两种、进行姓名输入时要判断该用户是否进行过开户,如果已开户则不能再次进行开户。
密码的数位少于6位时,我们需要提示密码请输入不少于6位的数字,在第二次输入密码的时候需要考虑的是两次密码是否一致,当不一致时候需要提示用户,密码输入不一致。
自动进行清空。
2、注销:
注销中需要想到的是用户输入需要注销的卡号有没有存在这个需要判断一下,当输入错误的卡号时需要提示您输入的卡号不存在。
同时还有注销卡号的密码是否输入正确。
输入错误时同样需要提示你输入的密码有误。
注销之后还有一个调查,进行收集用户注销的原因,设置了三个选择的数据。
3、挂失补办:
补办中我们需要考虑的是挂失的卡号和密码,卡号需要满足的是卡号的号码输入正确,同时对应卡号的密码也需要输入正确。
但是如果这个卡被注销过之后我们就不能进行补办,同时提示你这张卡不存在。
2.3设计要求
设计实现模拟银行储蓄业务软件。
能够实现管理员的登录,能够进行账户的开户、账户的查询及账户销户等业务。
用户可以实现存款、取款、转账以功能。
能够结合当前的利率,为储户自动计算相应的存款收益。
2.4系统权限划分
本系统分为用户和管理者两个主面板,用户可以通过自己的卡号和密码进行用户界面的登录。
管理员需要通过身份验证——密码验证,进行管理员界面登录,然后对用户信息进行相应的操作。
3系统详细设计
3.1数据类型建立
管理员密码
字符串
用户帐号
用户密码
电话号码
信用卡与储蓄卡
Boolean
3.2程序模块具体设计
该程序主要分为四个主要模块。
一个是公共类,用于存储用户的信息和实例化的对象信息;
一个是用户服务模块,主要包括用户登录界面的设计还有用户各种功能类的实现;
还有一个是管理员模块,主要包括管理员的各种业务实现。
并且将信息存储模块单独建立package其他的功能类放到一个package中,进行信息存储与功能的划分。
在所有功能实现后,由一个主要登录界面、一个用户登录界面和一个管理员登陆界面的设置。
主要的登录界面用于选择人员登录,是管理员还是用户。
进入相应界面后就是相应的人员登录口令,登陆后就进入个字的主要面板。
下面具体进行介绍。
3.2.1信息存储模块
建立两个类。
一个是card类,设置用户信息包括的类型变量主要有账户、密码、姓名、存款总金额。
再设置一个布尔类型值,用于判断用户使用的卡片是储蓄卡还是信用卡。
普通储蓄卡标记为true,信用卡标记为false。
privateStringaccount;
//账户
privateStringpwd;
//密码
privateStringname;
//姓名
privatefloattotalMoney;
//总金额
privatebooleantype//标记卡的类型
类型变量设置完成后设置一个构造方法,传递参数。
然后设置每个类型的set,get方法。
用于变量的设置和获取。
另一个是CardArray类,在CardArray类中定义一个集合类对象,通过集合类对象来存储用户的分条信息。
在构造成员方法时,将返回类型设置为集合类类型。
并且在类中通过add();
方法向集合类中添加实例化的card类的三条用户信息。
3.2.2界面功能模块
(一)主界面(Main):
主界面主要是用于管理员和用户的登录选择。
主要包括界面的设计,按钮的设计和两个按钮的动作监听。
还包含一个使用该系统时系统的时间显示。
设置按钮JButtonbtClient,btServer;
、容器和面板Containercontainer=this.getContentPane();
JPanelpanel=newJPanel(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.setBackground(Color.white);
先设置窗体,窗体的大小this.setSize(580,450);
、窗体大小不可变setResizable(false)、位置setLocation(350,170);
、可视setVisible(true)、窗体题目setTitle("
欢迎来到金苑银行!
"
);
以及窗体关闭按钮的动作添加panel.setLayout(null);
。
然后就是界面设计,包括容器和面板的使用以及将相应的按钮添加到panel上。
为使窗体更美观,设置一个方法,将p好的背景图片设置大小和位置在窗体显示。
panel=newJPanel(){
protectedvoidpaintComponent(Graphicsg){//图片设置
ImageIconicon=newImageIcon("
Image\\serverLogin.jpg"
Imageimg=icon.getImage();
g.drawImage(img,0,0,580,450,this);
}
};
其次就是系统时间的设置,通过SimpleDateFormatdf=newSimpleDateFormat("
HH:
mm:
ss"
Datenow=newDate();
语句获取当前时间,并且设置时间的显示格式,然后添加到面板即可。
以下的主页面和登录页面的设置与主页面几乎相同,就不进行详细的介绍了。
最后就是按钮的设置和两个按钮的动作监听。
将两个按钮Client、Sever添加到面板,设置其位置和大小,并通过setFont来设置显示的字体和字号。
通过setBackground设置按钮的颜色。
最主要的就是对这两个按钮进行动作的监听。
首先是用户按钮,因为要点击用户按钮进入用户界面所以直接调用ClientLogin中的init()方法即可。
然后就是server按钮,点击管理员按钮进入管理员界面,所以直接调用severLogin类中的init()方法,进入相应的界面进行接下来的操作。
在Main主界面中设置程序的入口主函数,实例化自身即可,通过调用自身的initiative()方法就将主界面显示出来,通过上述按钮的动作添加就可以进入接下来的页面,进行相应的操作。
(二)用户登录界面(ClientLogin):
界面的设置与主界面相同,在这里还用到了一个文本域的设置。
JPasswordFieldpfPwd;
//输入密码的框
该界面还包括用户帐号和密码的输入,以及ok、cancel和empty按钮的监听设置。
首先设置ok按钮的监听,Stringaccount=tfAccount.getText();
Stringpwd=newString(pfPwd.getPassword());
通过这两个语句将文本域内输入的内容转换为String类型。
然后利用集合类的迭代的方法将CardArray中的所有集合类的元素赋值给currCard集合类。
然后就是功能的实现。
这里定义的boolean值用于判断集合类中的卡号信息和获得的String变量是否相等,如果相等返回true否则返回false。
如果不相等,通过JOptionPane.showMessageDialog(ClientLogin.this,"
账号有误!
语句用小窗口提示:
账号有误。
如果相等,则说明有此用户的信息,那么进行下一步的判断——密码是否相等。
如果相等那么小窗口提示欢迎用户登录,并且调用ClientMain类中的init()方法,进入ClientMain的主界面。
设置计数器进行计数如果输入三次密码错误,那么小窗口提示错误三次,吞卡。
并且直接通过System.exit(0)来退出程序。
然后是Empty按钮的动作,直接通过调用setText();
方法,将文本域中的内容清空。
最后是取消按钮的设置,通过调用dispose方法清空屏幕的部分信息,然后调用主函数的init()方法,返回主函数的界面。
就可以进行下一步的操作。
(三)用户主页面(ClientMain):
其中有两项功能直接添加在用户登录界面上,是余额查询和利率的计算。
余额的查询主要是通过一个JOptionPane.showMessageDialog();
方法在方法中传入要显示的数值,该数值通过currCard.getTotalMoney()来获得。
利率的计算也是通过JOptionPane.showMessageDialog();
在小窗口来显示,方法传入的数值通过(0.0035*(currCard.getTotalMoney()))来传递。
当前活期利率为0.35%所以数值计算用当前所剩的金钱总数乘以0.0035来获得。
其中四项操作都是通过定义相应的类,通过设置动作监听,调用相应类的init()方法进入相应的界面。
取钱、存钱、改密码、转账方法都是通过这种方法实现的。
次类动作按钮的设置都很简单,都是通过dispose()清空屏幕信息,然后调用相应的init()方法,进入到相应的界面。
最后是退出操作,直接调用System.exit(0);
方法直接推出程序,就是用户操作完成后的退卡操作。
(四)管理员登录界面(SeverLogin):
管理员登陆界面设计与用户登录界面设计相同。
然后就是按钮的动作监听,ok按钮,首先将文本域内输入的内容强制转换为String类型Stringpwd=newString(pfPwd.getPassword());
,然后判断该字符串是否与密码相同,如果相同则清空屏幕信息进入管理员的主界面,通过实例化管理员主界面的类来进行相应函数的调用转跳;
如果不同,计数器增加1,并且输出小窗口提示密码错误,如果计数器记到3依然错误,那么小窗口提示错误次数太多请与15分钟后再次登录。
小窗口提示信息通过JOptionPane.showMessageDialog();
在括号内传入相应的信息即可显示出来。
取消按钮通过实例化Main,来调用init()方法来进行转跳。
(五)管理员主界面(SeverMain):
管理员登陆界面功能的实现。
在这里要将所有的信息读取出来,显示在主界面上。
显示卡号、姓名。
这里就需要使用迭代器和集合类的方法,新定义一个集合类将原集合类中的所有信息添加到新的集合类中,将其显示的主面板上。
Iterator<
Card>
it=CardArray.getCardList().iterator();
intw=180,h=180;
while(it.hasNext()){
currCard=it.next();
JLabellName=newJLabel("
姓名:
+currCard.getName());
JLabellAccount=newJLabel("
卡号:
+currCard.getAccount());
panel.add(lName);
lName.setBounds(w,h,100,30);
lName.setFont(newFont("
微软雅黑"
Font.PLAIN,14));
panel.add(lAccount);
lAccount.setBounds(w+100,h,100,30);
lAccount.setFont(newFont("
h+=30;
}
动作的监听都是比较简单的,主要包括注销、开户、挂失、补卡的操作,这些按钮都建立了相应的类,通过实例化对象,调用相应的init()方法就可以实现窗口之间的跳转。
3.2.3用户服务模块
所有的用户模块采用Jframe来进行设计,首先要做的就是容器的设置以及在容器上添加面板。
每一个类的设计分为两类:
一类是窗口显示模块的设计、一类是按钮动作的监听的设置。
窗口显示模块主要包括每个窗体的大小、位置的设计,背景图片大小、位置的设计,按钮的位置、大小和颜色的设计。
动作监听在下面的每一类中进行详细的解释。
(一)更改密码(ChangePwd):
更改密码首先是要进行原密码和更改的密码的输入。
要在面板上添加单行文本域进行内容的输入。
然后将输入的内容赋值给相应的变量,便于动作监听时进行使用。
动作的监听有OK按钮、取消按钮、清空按钮。
首先是ok按钮,表示新旧密码的输入完成,点击ok后提示密码修改完成。
在更改密码时要进行三次密码的判断,一是判断密码输入是否正确,二是判断两次输入的新密码是否相同,三是判断输入的新密码是否为六位数。
在现实这个过程的时候,首先要将文本框内的内容转换为字符串类型Stringoldpwd=newString(pfOldPwd.getPassword());
,以便于调用字符串的equals()方法进行密码是否相符的判断。
oldpwd.equals(currCard.getPwd())用来判断当前文本域内输入的字符串是否与原来的字符串相等,如果不相等则小窗口提示密码输入错误,并利用pfOldPwd.setText("
(setText方法用于清空数据重新输入)语句,将文本域内输入的内容清空,请用户进行重新输入。
若判断输入的字符串与实例化的对象的相应信息相同,则进行新密码两次输入的匹配判断,如果不相等,进行小窗口提示两次输入的信息不匹配,然后利用pfNewPwd.setText("
pfRNewPwd.setText("
语句将两次输入的密码清空,请用户进行重新输入。
如果两个字符串比较结果相同,那么进行最后一个环节的判断,利用语句if(newpwd.length()==6)判断字符串长度是否为6,如果不为6进行小窗口输出提示,并清空相应的文本域进行重新输入。
如果为6则进行集合类对象中的相应内容的查找和修改。
利用ArrayList<
al=CardArray.getCardList();
语句将CardArray集合类中的所有信息赋值给新的集合类对象a1,然后通过inti=al.indexOf(currCard);
将当前输入的信息与集合类中所有的信息进行匹配,找到后将首次出现该信息的位置返回给i变量。
并通过currCard.setPwd(newpwd);
al.set(i,currCard);
语句将查找出来的信息条目的密码进行更改。
更改后,小窗口提示用户密码更改成功。
然后是cancel按钮,取消改密码的操作ChangePwd.this.dispose();
(dispose方法销毁程序中指定的图形界面资源,对数据资源不产生影响,所以当我们在SWing或是AWT中的图形界面组件时如果调用它,组建内的数据对象不会消失,只有在这些数据资源其他地方没有再使用后才会由垃圾回收机制处理掉。
)然后调用用户主界面的init()方法newClientMain(currCard).init();
,返回到用户主界面即可进行接下来的其他操作。
最后是Empty按钮,主要用于信息输入错误,进行该操作页面的信息清空处理。
只要调用setText()方法,将每个文本域的内容设置为空即可。
(二)取钱(TakeMoney):
取钱的面板设置基本相同,多了一些按钮,显示取款的金额的按钮,btMon100=newJButton("
¥100"
btMon300=newJButton("
¥300"
btMon500=newJButton("
¥500"
btMon800=newJButton("
¥800"
btMon1000=newJButton("
¥1000"
btMon3000=newJButton("
¥3000"
btMon2000=newJButton("
¥2000"
btMon5000=newJButton("
¥5000"
将这些按钮添加到面板上,通过setText();
将按钮上的数值填写到文本域中。
这些按钮可以通过函数setBackground()来设置按钮的背景颜色。
通过setBounds();
来设置按钮的位置和大小。
然后就是动作的监听,ok按钮,主要是取款成功提示,但这里也不乏取款不成功的时候。
按下ok键时首先要进行判断,首次判断输入的内容是否为整百,即取余数是否为0,来进行判断。
如果为0那么进行下面的内容,如果不为0提示输入错误。
进入下一次判断后,要判断卡的类型为信用卡还是储蓄卡,如果为储蓄卡那么所取金额必须小于卡内余额如果条件不成立,那么通过小窗口提示取款失败。
JOptionPane.showMessageDialog(TakeMoney.this,"
余额不足!
!
如果为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 课程设计 报告 ATM