java面向对象课程设计

来源:互联网 发布:老虎证券开户 知乎 编辑:程序博客网 时间:2024/05/17 23:14

                

 

                         

                                           

                                                                                           

                                                                                                                     

《Java面向对象程序设计》 

题目:基于图形界面的ATM机系统

          学生姓名   学号  

          指导教师                  

           学院         信息工程学院      __     

           专  业      软件工程    年 级  2012级 

 

   青   岛   工   学   院
目 录

 

1 前言 3

2 系统分析 4

2.1 功能需求 4

2.2 界面需求 4

3 系统设计 5

3.1 数据库设计 5

3.2 系统总体结构 6

3.3 系统模块 7

3.4 主要相关类 8

4 系统实现 9

4.1 闪屏界面的设计 9

4.2 登录界面的设计 10

4.3 主界面的设计 11

4.4 查询界面的设计 12

4.5 取款界面的设计 13

4.6 存款界面的设计 14

5 总结 15

5.1 系统存在的问题 15

5.2 设计体会 15

 

 

 

 

 

 

 

 

1前言

此次课程设计让本人对JAVA有了更深刻的认识,这次课程设计的主要目的是结合面向对象程序设计课程,培养我们面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解,对以后在面向对象的编程中奠定基础。在设计ATM机时用了model模式,一共分了3个大模块,为db模块(对数据库的链接),model模块(用户与数据库之间的逻辑处理),view模块(用户看到的界面)。View模块中分别为Index界面是用户登录前的闪屏界面,UserLogin界面是用户在登录时需要输入账号和密码的界面,window界面是用户在登录到ATM取款机里面进行选择查询、取款、存款、转账和取卡的界面,chaxun界面是用户查询自己存款余额的界面,Deposit界面是用户存钱时的界面,WithdrawMoney界面是用户取钱时的界面。

 


2系统分析

2.1功能需求

本ATM机的主要功能需求如下所述:

要求使用图形用户界面。当输入给定的卡号和密码(初始卡号为1和密码为123)时,系统能登录,则一共设定3个用户,在3个用户中分别有相应的金额。

    ATM柜员机系统,用户可以按照以下规则进行: 

a.查询余额:初始余额为10000元 

b.ATM取款:每次取款金额为只有100、200、300、500、1000,支取金额不允许透支。 

c.ATM存款:在存款中可以放入自己相应的金额,且不能出现负存款。  

d.取卡:在取卡后又回到ATM机的初始页面。

 

2.2界面需求

  以window窗口形式显示,进去前先经过一个短暂闪屏界面且最后跳转到用户登录界面,则这些界面同时继承了JFrame类和实现相应的ActionListener接口。则每个JFrame类中都调用了dispose()方法来关闭窗口,而在ActionListener中通过重写来分别对响应的事件进行定义。

 

功能结构图:

 

 

 

 

 

 

 

 

 

 


3.系统设计

3.1数据库的设计

  本人在对数据库的设计中一共建了两个表分别是相应的user表和userLogin表,在user表保存了用户的账号和密码,在userLogin表中分别保存了用户账户对应的用户信息和金额。

列名

数据类型

备注

useId

Varchar(30)

 

useName

Char(20)

 

useSex

Char(5)

 

useAge

int

 

useTel

Char(12)

 

useNative

Char(10)

 

useMoney

money

 

 

useId

Varchar(30)

 

passwd

Varchar(30)

 


3.2系统总体结构

 

 

 

 

 

 

 

 

 

 

 

 

3.3系统模块

(1)登录界面模块:用户登录时所需要的界面窗口,需同时输对账号和密码便可登录到选择窗口界面。

在view包中则主要引用了java.awt中相应的包,继承了JFrame和实现了ActionListener接口进行事件的传递到Model包中Usermodel类中进行参数的

传递。

在Model包中则主要引入了java.sql中和db.sqlHelp的包,通过参数sql语句的传递到db包中。

在db包中则进行对数据库的查询访问最后在把需要的数值给传回model层后在到view层进行判断。

 

 

(2)主界面模块:列出所有服务项供用户选择,分别有存款、取款查询余额、修改密码和退卡。

在view包中则主要引用了java.awt中相应的包,继承了JFrame和实现了ActionListener接口,则在界面中通过用户自己的选择各自的跳转相对应的操作界面,比如像查询界面、取款界面、存款界面。

(3)查询余额模块:能够在用户选择此功能是显示所剩余额。

View层中在public ChaXun(String uid)通过参数的传递传到Model层中public String checkUser(String uid)最后在传到db包中进行数据库的查找,最后在返回到View层中通过文本框显示给用户自己的剩余金额数。

 

 

(4)取款模块:用户可以选择想取的金额数。

View层中在自己在存款金额做出相对应的选择后在public WithdrawMoney(String uid)中uid的传递到Model包中public boolean updatStu(String uid)进行sql语句的传递到db包中sqlHelp类与数据库的连接后在把需要的值做出相对应的改变后在回返给用户,用户可以在chaxun()类中看到自己金额的改变。

 

 

(5)存款模块:用户通过文本框输入相应的金额可存入金额。

View层中通过自己输入的金额在public Deposit(String uid)中uid的传递到Model包中BankModel类中public boolean isertStu(String uid,String money)的uidmoney的传递到db包中数据库sqlhelp类做出相对应改变最后在返回给view层,用户可以在chaxun()类中看到自己金额的改变。

 

 

 

(6)退卡模块:退出界面后返回到初始的登录界面。

View层中通过事件的相应在执行this.dispose();JOptionPane.showMessageDialog(this"祝您使用愉快");在进行相应的页面跳转。
3.4主要相关类

(1)Java.awt包中的Container类直接派生出两个常用容器:框架(JFrame类)(JWindow类)和面板(JPanel类),通过继承JFrame和JWindow,在通过调用Setsize()控制窗口大小和SetVisible()来显示窗口。

(2)通过JPanel的构造函数来可以构造新的布局,在分块将面板添加到JPanel中,并设置布局管理器,控制组件的大小和位置。

(3)则在相应的JButton类中对有一个addActionListener(ActionListener)方法,分别对JButton进行相应的响应。

(4)事件类型:分别对不同的模块进行,许多事件类在java.awt.event包中,一般都是对按钮的按下进行相应的响应,在模块与模块之间的相对跳转与查询取款等操作比较用的多。

(5)文本区:通过文本框显示了相应的显示查询的余额和存款中输入的金额。

(6)model包:在model包中有两个类分别是BankModle类和UseModle类,且分别对数据库与图形界面进行相应的连接和进行传输数据,则UseModle类是连接数据库与用户登录界面的一个重要类,通过它可以判断出用户在输入的账号和密码时能确定出在数据库中是否有该用户,而BankModel类则是对数据库与主菜单、查询、取款、存款界面间的连接,通过它可以实现出相应的查询、取款、存款在数据库中的处理。

(7)db包:则在该包中有对数据库的连接操作,也是非常重要的一个模块之一,没有它就不能进行对数据库的操作。


4.系统实现

4.1闪屏界面的设计

 

相关代码:

通过多线程中实现了Runnable接口启动了run方法,给这模块加了个休眠时间。

public void run() {

// TODO Auto-generated method stub

try{

Thread.sleep(10000);

}catch(Exception e){

e.printStackTrace();

}

new UserLogin();

//同时让他自己消失

this.dispose();

}

因为继承JPanel重写paint方法。

super.paint(g);

Image im=Toolkit.getDefaultToolkit().getImage("image\\begin.png");
4.2登录界面的设计

 

相关代码:

关于登录界面的主要代码且且有两个lable和两个button

Jl1=new JLabel("用户名:");

jName=new JTextField(10);

jl2=new JLabel("密    码:");

jPasswd=new JPasswordField(10);

jb1=new JButton("登录");

jb1.addActionListener(this);

jb2=new JButton("取消");

jb2.addActionListener(this);

关于事件处理机制的处理,当用户输入的信息在数据库中能查到时且当点击确定可以调到ATM的主选择界面,如果不能找到且页面不会发生相应的跳转,当点击取消时可以实现相应的退出。

if(e.getSource()==jb1)

{

//取出id和密码

String uid=this.jName.getText().trim();

String p=new String(this.jPasswd.getPassword());

System.out.println(uid+p);

UseModel um=new UseModel();

String str=um.checkUser(uid,p);

System.out.println(str.length()!=0);

if(str.length()!=0)

{

new Window(uid);

this.dispose();

JOptionPane.showMessageDialog(this"欢迎光临"); }}
4.3主界面的设计

 

相关代码:

一共定义了5个button按钮,分别是查询、存款、取款、转账和取卡。则都分别实现了相应的事件处理方法。

jb1=new JButton("查询");

jb1.addActionListener(this);

jb2=new JButton("存款");

jb2.addActionListener(this);

jb3=new JButton("取款");

jb3.addActionListener(this);

jb4=new JButton("转账");

jb4.addActionListener(this);

jb5=new JButton("取卡");

jb5.addActionListener(this);

 

public void actionPerformed(ActionEvent e)
4.4查询界面的设计

 

相关代码:

在代码中通过参数的传递来进行该用户查询功能的实现。

public ChaXun(String uid)

jtf=new JTextField("您的余额为:"+bm.checkUser(uid));

jb=new JButton("返回");

public void actionPerformed(ActionEvent e) 


4.5取款界面的设计

 

相关代码:

在View层主要的相关面板主键,在所设余额分别为100、200、300、500、1000,且也对他们都注册了相应的事件监听,

jb1=new JButton("100");

jb1.addActionListener(this);

jb2=new JButton("200");

jb2.addActionListener(this);

jb3=new JButton("300");

jb3.addActionListener(this);

jb4=new JButton("500");

jb4.addActionListener(this);jb5=new JButton("1000");

jb5.addActionListener(this);

public void actionPerformed(ActionEvent e)
4.5存款界面的设计

 

相关代码:

在界面中有一个label和2个button和1个文本框的实现,用了边界布局,用户可以通过文本框的输入来放入自己想存的金额来进行对应的存款,且注册了事件监听和实现了相对应的事件处理方法。

jp=new JPanel(new BorderLayout());

jl=new JLabel("请放入钞票:");

jtf=new JTextField();

jb1=new JButton("确定");

jb1.addActionListener(this);

jb2=new JButton("返回");

jb2.addActionListener(this);

public void actionPerformed(ActionEvent e)

 

 

 


5.总结

5.1系统存在问题

在该程序中还有几个功能没有实现,比如说用户在登录自己的账户之后可以修改自己的登录密码与对其他用户进行转账等功能。还有最重要的一点就是本人在编写该程序时还没有深刻的理解面向对象的思想,只是为了实现改程序的功能去编写代码,根本没有在该程序中体现面向对象的抽象、继承、多态等重要性质。也只有在改程序中运用了model模式,体现了面向对象中的封装,本人分别对数据库的操作进行了一个db层的封装,和对界面与数据库之间的操作进行了一个model层的封装,和对图形用户界面进行了一个view层的封装。

对于以上问题,本人已有了深刻的理解和体会,在以后也会通过阅读更多关于java的书籍和上网查询更多的资料去解决以上的问题,一定会对面向对象中的4大特性进行深刻的研究和理解。

5.2设计体会

在这次的课程设计中,主要是运用JAVA语言来编写一个小的应用程序,当然还可以用其他的技术来辅助了。在这个小应用程序当中,我用了Java外还用了Swing控件。输入输出流等技术。由于以前学的不是很扎实,而且还有些知识我们都是没有学过的,这就要求我们去查相关的书籍,还有就是和同学之间的交流。正因为这样,才锻炼了我的自学的能力,还有就是加深了我对各个知识点的认识,并且提高了我对专业的学习的兴趣,为我以后的学习打下了基础。此外,我还感受到了面向对象语言的类库的强大的功能,掌握了运用JAVA中的类实现某些基本功能,并学会了自己查询使用类的方法,也就是要会用API文档,为以后更好的学习面向对象语言奠定了基础。

0 0
原创粉丝点击