实验二实践报告Word格式.docx
- 文档编号:16938972
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:12
- 大小:79.74KB
实验二实践报告Word格式.docx
《实验二实践报告Word格式.docx》由会员分享,可在线阅读,更多相关《实验二实践报告Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
JCratorProV3.5.0
运行环境:
Windows2000以上
能实现用户所定义的各项需求。
(3)界面要求
以Windows窗口形式显示,标题栏为ATM柜员机名称,右上角有最小化按钮、最大化按钮、关闭按钮,不同的窗口中有不同的按钮和选择菜单。
4系统设计
4.1总体设计
我所设计的ATM柜员机主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由取款模块、查询余额模块、修改密码模块、退卡模块组成。
其功能结构图如下所示:
图1ATM功能结构示意图
4.2ATM柜员机界面设计
我觉得一个系统的界面应该要简单明了,当然样式美观就更好了。
我设计的界面主要是由窗体组成,操作简单。
而每一个窗口则执行相应的功能。
一个系统界面的好坏直接影响到用户的操作,界面设计要求样式美观、简单明了、方便易操作。
我设计的界面主要分为窗体、菜单、按钮和文本输入框几个部分,分别执行相应的操作。
(1)窗体的设计
窗体整个框架使用Frame类构造,Frame有自己的外边框和自己的标题,创建Frame时可以指定其窗口标题,我创建的窗口标题是各个不同功能的模块的名字,比如说查询余额,还有取款等。
相应源代码为:
WindowBox(Strings,Accountact){super(“ATM柜员机”);
}、Selection(Strings,Accountact){
super(s);
}
向Frame窗口中添加组件使用add()。
例如:
button1=newButton("
存款"
);
p1.add(button1);
this.add(p1);
每个Frame在其右上角都有三个控制图标,分别代表将窗口最小化、窗口最大化和关闭的操作,其中最小化和最大化操作Frame可自动完成,而关闭窗口操作实现需要书写有关的代码,在我的程序中我采用的是对WINDOWS_CLOSING事件做出响应,调用dispose()方法关闭窗口。
Frame也可以引发WindowsEvent类代表的窗口事件。
addWindowListener(newWindowAdapter()//窗口侦听器,以从此窗口接收窗口事件
{publicvoidwindowClosing(WindowEvente)//处理窗口关闭事件
{System.exit(0);
}
});
(2)窗体的主要结构的设计
我所设计的窗口的主要结构的特点就是每个窗口都对应着一个特定的功能。
比如说报各种各样的错,还有各种查询余额、取款、选择服务等,所以它们都是由各种按钮和文本框,标签组成的,而联系各个窗体成为一个整体的就是各个按钮的监听事件。
所以整个设计就趋向简单化了。
为了定义各个按钮所对应的命令和操作,首先需要将各个按钮注册给实现了动作事件的监听接口ActionListener的监听者,然后为监听者定义actionPerformed(ActionEvente)方法,在这个方法中调用e.getSource()或e.getActionCommand()来判断用户点击的菜单子项,并完成这个菜单子项定义的操作。
4.3各功能模块设计
4.3.1登陆页面模块设计
与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:
密码。
所以第一个界面就是要输入密码和卡号才能继续服务。
我定义了文本框累的对象tf1,tf2。
抓药是用于输入单行的文本;
文本区调用publicStringgetText()方法,获取用户想要的字符串。
用来判断输入的密码和卡号是否正确,如果不正确的话,则弹出密码或卡号错误的警告框,并用dispose()关掉窗口。
此模块相应的部分源代码为:
publicvoidactionPerformed(ActionEvente){
Accountact;
Stringcard;
Stringpwd;
act=newAccount("
000000"
"
Devil"
123456"
50000);
//初始化
/*选择各种服务*/
if(e.getSource()==button1){
Stringnumber1,number2;
number1=tf1.getText();
number2=tf2.getText();
/*判断密码和卡号是否正确*/if((act.get_Code().equals(number1))&
&
(act.get_Password().equals(number2))){
dispose();
/*卡号和密码都正确则进入功能选择窗口*/
Selections=newSelection("
选择服务"
act);
}else{
dispose();
ErrorWarnew=newErrorWarn("
消息!
"
}
}
/*退卡*/
if(e.getSource()==button2){
System.exit(0);
dispose();
}
4.3.2选择服务模块设计
在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。
每一个按钮都有监听器,在选择了按钮后,java.awt.event中的ActionEvent类创建一个事件对象,并将它传递给方法publicvoidactionPerformed(ActionEvente)中的参数e,监视器就会知道所发生的事件,对此事件进行处理。
其中的部分源代码为:
p.add(newLabel("
请选择你要的服务"
));
this.add(p);
button1=newButton("
button2=newButton("
取款"
p2.add(button2);
this.add(p2);
button3=newButton("
查询余额"
p3.add(button3);
this.add(p3);
button4=newButton("
退出"
p4.add(button4);
this.add(p4);
button5=newButton("
修改密码"
p5.add(button5);
this.add(p5);
this.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
}
});
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
button5.addActionListener(this);
//setLayout(newGridLayout());
setBounds(150,150,200,200);
setVisible(true);
validate();
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==button2){//取款
GetBalancegb=newGetBalance("
}
if(e.getSource()==button3){//查询余额
Queryq=newQuery("
dispose();
elseif(e.getSource()==button4){//退出
elseif(e.getSource()==button5){//修改密码
ChangePasswordcp=newChangePassword("
dispose();
4.3.3取款模块设计
在取款模块中,和其他的界面也是同样的结构。
也是有一个文本框和一个按钮还有标签组成的。
用户在文本框中输入他想取的数额,但是必须是100的倍数,而且每一次最多只能取5000块。
当然了取款的时候也不能超过卡里的余额,再就是卡里的余额不可以为负,否则就会弹出报错的窗口。
其方法为:
if(e.getSource()==button){
/*判断余额是否为负*/
if(act.get_Money()<
0){
ErrorWarn4ew4=newErrorWarn4("
/*判断取款数额是否小于卡里余额*/
elseif(money<
=act.get_Money()){
/*取款的数额必须是100的倍数且每次最多只能取5000块*/
if((money%100!
=0)||(money>
=5000)){
dispose();
ErrorWarn6ew6=newErrorWarn6("
}
act.set_Balance(money);
//重新设置卡里的余额
this.setVisible(false);
/*取款后就再次进入选择界面*/
Selections=newSelection("
//dispose();
}elseif(money>
act.get_Money()){
ErrorWarn5ew5=newErrorWarn5("
4.3.4修改密码模块设计
在修改密码模块中,首先你必须要输入你的旧密码是否正确,否则就会报错。
再一个就是要两次输入你的新密码,且两次药匹配,否则也会报错,然后再重新回到修改密码的界面。
在修改密码时用到的方法为:
/*判断旧密码是是否正确*/
if(pwd2.equals(act.get_Password())){
/*判断两次输入的密码是否匹配*/
if(pwd3.equals(pwd4)){
/*如果都正确的话就设置新密码*/
act.setPassword(pwd3);
Selections=newSelection("
选择"
}else{
ErrorWarn2ew2=newErrorWarn2("
消息"
}
}else{
this.setVisible(false);
ErrorWarn3ew1=newErrorWarn3("
4.3.5退卡模块设计
在退卡模块设计中,这个方法就更加的简单了,它只是用了if(e.getSource()==button4){//退出
这个方法就可以实现了,这里就不再多说了。
4.4异常处理情况说明
(1)打开、保存文件时的异常处理
需要处理的异常:
IOException
(2)数据库访问时的异常处理
SQLException
(3)加载类时的异常处理
ClassNotFindException,当应用程序试图使用Class类中的forName方法通过字符串名加载类时,但是没有找到具有指定名称的类的定义。
(4)加载URL时的异常
MalformedURLException,抛出这一异常指示出现了错误的URL。
或者在规范字符串中找不到任何合法协议,或者无法分析字符串。
5系统实现与测试
(1)打开DOS,编译运行程序后,将会看到如下的界面,如图2所示。
如果输入的密码或卡号不正确的话就会报右下图的错误。
图2主界面—登陆页面
(2)选择服务界面效果
当输入的密码和卡号正确,单击确定后就会进入到选择服务的界面,如图3所示。
然后就可以选择所需要的服务了。
图3选择服务界面
(3)取款界面,如图4所示。
图4取款界面
当输入的钱数不是100的倍数或每一次大于5000时就会报图5的错误。
图5输入错误1
当取款时如果超过卡里的余额的话就会报图6的错误。
图6输入错误2
(4)查询余额界面,如图7所示。
图7查询余额界面
经过测试,所有的功能基本上都实现了,而且运行正常。
6课程设计总结
6.1遇到的问题及解决办法
在此次课程设计中,我遇到了一些问题,如:
对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;
对于Java语言,只学习到了一些最基本的知识,这导致编写程序时经常出现一些语法错误,而且要在短时间内用Java语言来设计一个具体的系统是一个较大的挑战;
还有对于正规开发一个系统的流程不熟悉,适应起来比较慢,编写各个模块相对应的操作时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。
对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,对于书上以及网站上下载的资料中的Java实例必须有清楚的理解,还有就是多跟精通此方面的老师和同学交流,取其精华。
对于实际动手能力与系统开发的流程的适应,必须多进行实际的练习与操作,才能有大的进步。
6.2心得体会
通过这两个礼拜的课程设计我真的学到了很多的东西,当然这也和我的同学的帮助是离不开的。
好了,下面就谈一下我在这些天的体会吧:
在这次的课程设计中,主要是运用JAVA语言来编写一个小的应用程序,当然还可以用其他的技术来辅助了。
在这个小应用程序当中,我用了Java外还用了Swing控件。
输入输出流等技术。
由于以前学的不是很扎实,而且还有些知识我们都是没有学过的,这就要求我们去查相关的书籍,还有就是和同学之间的交流。
正因为这样,才锻炼了我的自学的能力,还有就是加深了我对各个知识点的认识,并且提高了我对专业的学习的兴趣,为我以后的学习打下了基础。
此外,我还感受到了面向对象语言的类库的强大的功能,掌握了运用JAVA中的类实现某些基本功能,并学会了自己查询使用类的方法,也就是要会用API文档,为以后更好的学习面向对象语言奠定了基础。
通过将近两周的努力,这次课程设计终于结束了,在这个过程当中,我学到了很多的知识,同时也感谢我的同学的帮助和指导。
在以后的学习当中,我会更加努力的学习好专业知识,并将所学的知识用于实践当中去,以便牢固掌握知识。
7:
任务分配:
源代码负责:
林丽容
整理归纳文档负责:
白巧玲
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 实践 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)