JAVA 期中课程设计报告
报告题目:ATM模拟程序 
             
    姓名:     
学号:
专业:计算机科学与技术
班级:2班
课程设计目的和内容:
目的:结合面向对象程序设计课程,培养面向对象软件开发思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强对面向对象编程的兴趣。
内容:设计ATM取款机主要包括登陆页面,选择服务,存款,取款,查询余额,修改密码和退出等功能。
二.系统需求分析:
1、模拟ATM柜员机程序;
2、修改密码。当用户需要修改密码时,可以用这个功能,新密码的长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
3、取款。用户根据自己的需要取多少钱,输入要取的钱,每次输入的取款金额为100的倍数,总额不超过5000,支取金额不允许透支。
4、查询余额。用户需要知道自己的账户还剩多少钱时,可以查询余额, 初始余额为50000元
5、 存款。用户可以存款,金额为100的倍数,不能出现负数存款。
6、 锁机。用户3次输入密码错误时,停止操作。
系统设计:
1. 我所设计的ATM柜员机主要是由登录页面模块还由选择服务模块组成,其中选择服务模块又由取款模块、存款模块、查询余额模块、修改密码模块、退卡模块组成。
2.  ATM柜员机界面设计
一个系统界面的好坏直接影响到用户的操作,界面设计要求样式美观、简单明了、方便易操作。我设计的界面主要分为窗体、菜单、按钮和文本输入框几个部分,分别执行相应的操作。
(1)窗体的设计
窗体整个框架使用Frame类构造,Frame有自己的外边框和自己的标题,创建Frame时可以指定其窗口标题,我创建的窗口标题是各个不同功能的模块的名字,比如说查询余额,还有取款等。相应源代码为:WindowBox(String s,Account act){super(ATM柜员机);} 、Selection(String s,Account act){
        super(s);
}
向Frame窗口中添加组件使用add()。
每个Frame在其右上角都有三个控制图标,分别代表将窗口最小化、窗口最大化和关闭的操作,其中最小化和最大化操作Frame可自动完成,而关闭窗口操作实现需要书写有关的代码,在我的程序中我采用的是对WINDOWS_CLOSING事件做出响应,调用dispose()方法关闭窗口。Frame也可以引发WindowsEvent类代表的窗口事件。相应源代码为:
addWindowListener(new WindowAdapter() //窗口侦听器,以从此窗口接收窗口事件
{public void windowClosing(WindowEvent e) //处理窗口关闭事件 
{    it(0);    }
});
}
(2)窗体的主要结构的设计
我所设计的窗口的主要结构的特点就是每个窗口都对应着一个特定的功能。比如说报各种各样的错,还有各种查询余额、取款、选择服务等,所以它们都是由各种按钮和文本框,标签组成的,而联系各个窗体成为一个整体的就是各个按钮的监听事件。所以整个设计就趋向简单化了。
为了定义各个按钮所对应的命令和操作,首先需要将各个按钮注册给实现了动作事件的监听接口ActionListener的监听者,然后为监听者定义actionPerformed(ActionEvent e)方法,在这个方法中调用e.getSource()或e.getActionCommand()来判断用户点击的菜单子项,并完成这个菜单子项定义的操作。
3.模块设计
(1). 与ATM柜员机打交道比较多的,也是大家对安全比较关心的问题:密码。所以第一个界面就是要输入密码和卡号才能继续服务。
我定义了文本框累的对象tf1,tf2。抓药是用于输入单行的文本;文本区调用public String getT
ext()方法,获取用户想要的字符串。用来判断输入的密码和卡号是否正确,如果不正确的话,则弹出密码或卡号错误的警告框,并用dispose()关掉窗口。此模块相应的部分源代码为:
public void actionPerformed(ActionEvent e){
        Account act;
        String card;
      String pwd;
        act=new Account("000000","Devil","123456",50000);//初始化
              /*选择各种服务*/
        Source() == button1){
            String number1,number2;
                    Text();
                        Text();
                /*判断密码和卡号是否正确*/        if((_Code().equals(number1))&&(_Password().equals(number2))){
安卓课程设计源代码
                                dispose();
                    /*卡号和密码都正确则进入功能选择窗口*/
                                Selection s = new Selection("选择服务",act);
                            }else{
                                    dispose();
                                    ErrorWarn ew = new ErrorWarn("消息!",act);
                                }
        }   
      /*退卡*/
Source()==button2){
                it(0);
                dispose();
            }
}
(2).  选择服务模块设计
在选择服务模块中,有各种ATM的服务功能,只要用户在该界面中选择按钮,它就会弹出各个相应的界面。每一个按钮都有,在选择了按钮后,java.awt.event中的ActionEvent类创建一个事件对象,并将它传递给方法public void actionPerformed(ActionEvent e)中的参数e,监视器就会知道所发生的事件,对此事件进行处理。其中的部分源代码为:
p.add(new Label("请选择你要的服务"));
        this.add(p);
        button1 = new Button("存款");
        p1.add(button1);
        this.add(p1);
        button2 = new Button("取款");
        p2.add(button2);
        this.add(p2);
        button3 = new Button("查询余额");
        p3.add(button3);
        this.add(p3);
        button4 = new Button("退出");
        p4.add(button4);
        this.add(p4);
        button5 = new Button("修改密码");
        p5.add(button5);
        this.add(p5);
        this.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                it(0);
                }
            });
        button2.addActionListener(this);
        button3.addActionListener(this);
        button4.addActionListener(this);
        button5.addActionListener(this);
        //setLayout(new GridLayout());
        setBounds(150,150,200,200);
        setVisible(true);
        validate();
    }
    public void actionPerformed(ActionEvent e){
        Source()==button2){//取款
                dispose();
            GetBalance gb = new GetBalance("取款",act);
           
        }
        Source()==button3){//查询余额
            Query q =new Query("查询余额",act);
            dispose();
        }
        else Source()==button4){//退出
                it(0);
                dispose();
            }
            else Source()==button5){//修改密码
                    ChangePassword cp = new ChangePassword("修改密码",act);
                    dispose();
                }
    }
}
(3).  取款模块设计
在取款模块中,和其他的界面也是同样的结构。也是有一个文本框和一个按钮还有标签组成的。用户在文本框中输入他想取的数额,但是必须是100的倍数,而且每一次最多只能取5000块。当然了取款的时候也不能超过卡里的余额,再就是卡里的余额不可以为负,否则就会弹出报错的窗口。其方法为:
Source()==button){
      /*判断余额是否为负*/
            _Money()<0){
                    dispose();
                    ErrorWarn4 ew4 = new ErrorWarn4("消息!",act);
                }
          /*判断取款数额是否小于卡里余额*/
            else if(money<=_Money()){
    /*取款的数额必须是100的倍数且每次最多只能取5000块*/
                if((money%100!=0)||(money>=5000)){
                        dispose();
                        ErrorWarn6 ew6 = new ErrorWarn6("消息!",act);
                    }
                    act.set_Balance(money);//重新设置卡里的余额
                    this.setVisible(false);
            /*取款后就再次进入选择界面*/
                Selection s = new Selection("选择服务",act);
                //dispose();
                }else if(money&_Money()){
                        dispose();

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。