1、JavaATM自动取款机Java课程设计报告项目: ATM自动取款机 姓名: 学号: 10592127 班级: 10级网络一班 分数: 角色姓名学号任务分配组长10592127数据库连接,主页代码,取款,查询,系统提示,和整理代码。 组员10592235欢迎界面,登陆界面,修改密码,退出界面项 目 说 明第一部分、项目整体概述页第二部分、数据库信息描述页第三部分、自己承担部分的实验报告页第四部分、心得体会页一、项目整体概述我们的ATN机系统设计的实现根据结构程序设计原理,将每个模块的功能用相应的标准语句表示出来。包括代码设计、数据库设计、用户界面设计、处理过程设计。代码设计是指把系统管理对象数
2、字化或字符化,便于计算机的处理。遵照代码设计的原则:合理性、简明性、系统性、稳定性、可扩充性、标准化、便于识别和记忆。数据库设计指对系统所采用的数据模式、子模式、应用程序、数据库等根据用户的具体要求进行分析和设计。它也是管理信息系统设计的重要组成部分。数据库设计的基本原则是尽可能提高数据组织的相对独立性,简化其结构,即用规范化方法设施数据存储的结构,提高数据的可维护性、完整性、一致性。通过收集和分析用户需求,确定了数据库要保存的信息。我们这次实训课设计的ATM机,主要应用java图形用户界面开发的知识,主要界面有欢迎界面,登陆界面,选择业务界面和退出,其中选择业务界面又包括修改密码,取款服务和
3、查询余额。能让人们通过我们的设计完成想要的操作。为人们带来方面。(1)模拟ATM柜员机程序;(2)欢迎界面点击Login(登录)跳到登陆界面,点击quit(退出)则退出。(3)登陆界面包括输入卡号和密码,不正确时则不能进入提示没有该用户名称或密码错误,请核对后重新输入。当密码和用户名都正确时则进入选择服务界面。(4)选择页面可以选择修改密码,查询余额,和取款3个服务。(2)修改密码。当用户需要修改密码时,可以用这个功能,新密码不能为空,确定密码时不能为空,旧密码必须正确,且新密码和确定密码两次输入相同的情况下才可以成功修改密码。(3)取款。用户根据自己需要取多少钱,点击自定义按钮输入要取的金额
4、,每次取款金额为大于0的数就可以了,但取款金额不允许透支。还可以点击按钮进行取款,如果选择的金额大于自己账户的金额则提示金额不足。(4)查询余额。用户需要知道自己账户还剩多少钱时,可以查询自己账户的余额。实验流程图如下:二、数据库信息描述建立的数据库是根据代码的完成建立的其数据库为ATM,表名为guest。在表中建立id字段其类型为自动编号,并设置其为主键,用户名字段为gid,密码字段为pwd,金额字段为gmoney。在表中分别输入我的和组员信息。金额类型为数字。建立好数据库知道连接到程序中运行即可。三、自己承担部分的实验报告连接数据库现在控制面板管理工具中建立数据源连接数据库代码为impor
5、t java.sql.*;import java.io.*;public class dataAccess private Connection conn; private Statement stmt; public dataAccess() /构造函数设置连接数据库 try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); String dburl =jdbc:odbc:driver=Microsoft Access Driver (*.mdb);DBQ=Dataatm.mdb; conn=DriverManager.getConnection(db
6、url); stmt=conn.createStatement(); catch(Exception e1) System.out.println(e1.toString(); public ResultSet getData(String sqlstr)/返回查询的数据集 try ResultSet rs=this.stmt.executeQuery(sqlstr); return rs; catch(Exception e) System.out.println(e.toString(); return null; public int getRowcount(String sqlstr)
7、 int i=0; try ResultSet rs=this.getData(sqlstr); while(rs.next() i+; catch(Exception e) System.out.println(e.toString(); finally return i; public boolean exeSql(String sqlstr)/执行无返回的SQL语句 try stmt.execute(sqlstr); return true; catch(Exception e) System.out.println(e.toString(); return false; public
8、void sleep(int second) try Thread th=new Thread(); th.sleep(second*1000); catch(Exception e) System.out.println(e.toString(); protected void finalize()/析构函数 try if(stmt!=null) stmt.close(); if(conn!=null) conn.close(); catch(Exception e) 选择服务界面:它是由取款,查询金额,和修改密码构成点击按钮的时候跳到相应的界面有四个按钮分别布局于东西南北四个方向,选择服务
9、字放在中间。选择服务页面代码:public void showMenu() PnlMenu=new Panel(); GridLayout gdo3=new GridLayout(4,3,4,3); Label albl=new Label(请选择业务); /albl.setBackground(Color.green); albl.setAlignment(Label.CENTER); a1=new Button(1、取款服务); a2=new Button(2、查询余额); a3=new Button(3、修改密码); a4=new Button(4、退出); a1.addActionLi
10、stener(this); a3.addActionListener(this); a2.addActionListener(this); a4.addActionListener(this); PnlMenu.setLayout(gdo3); PnlMenu.add(albl); PnlMenu.add(a1); PnlMenu.add(a2); PnlMenu.add(a3); PnlMenu.add(a4); a1.setSize(200,200); a2.setSize(600,200); a3.setSize(200,200); a4.setSize(600,200); albl.s
11、etSize(200, 200); a1.setFont(new Font(楷体,Font.BOLD,18); a2.setFont(new Font(楷体,Font.BOLD,18); a3.setFont(new Font(楷体,Font.BOLD,18); a4.setFont(new Font(楷体,Font.BOLD,18); albl.setFont(new Font(楷体,Font.BOLD,24); albl.setForeground(Color.red); PnlMenu.setLayout(new BorderLayout(); PnlMenu.add(a1,Border
12、Layout.WEST); PnlMenu.add(a4,BorderLayout.SOUTH); PnlMenu.add(a2,BorderLayout.NORTH);PnlMenu.add(a3,BorderLayout.EAST);PnlMenu.add(albl,BorderLayout.CENTER); 用于点击按钮跳转到页面代码:if(e.getSource()=a1)/进入取款界面 clt.show(fram,Getmoney); return; if(e.getSource()=a2)/进入余额查看界面 float mleft=act.queryBalance(gid); lb
13、left.setText(帐号余额为:¥ +mleft); lbleft.setFont(new Font(楷体,Font.BOLD,15); clt.show(fram,Queryleft); return; if(e.getSource()=a3)/进入密码修改界面 clt.show(fram,Chgpwd); return; 取款页面可以根据想要去的金额去点击按钮取钱,也可以输入自定义金额取钱,但两种方法都不能透支。取款页面代码:public void showGetMoney() PnlGetmoney=new Panel(); GridLayout gdo4=new GridLayo
14、ut(4,2); PnlGetmoney.setLayout(new BorderLayout(); Label blbl=new Label(请选择取款金额); blbl.setFont(new Font(楷体,Font.BOLD,24); msg3=new Label(); p1=new Panel(); b1=new Button(100); b2=new Button(500); b3=new Button(1000);b4=new Button(3000); b5=new Button(5000);b6=new Button(自定义); b1.setFont(new Font(楷体,
15、Font.BOLD,15); b2.setFont(new Font(楷体,Font.BOLD,15); b3.setFont(new Font(楷体,Font.BOLD,15); b4.setFont(new Font(楷体,Font.BOLD,15); b5.setFont(new Font(楷体,Font.BOLD,15); b6.setFont(new Font(楷体,Font.BOLD,15); b1.addActionListener(this); b5.addActionListener(this); b2.addActionListener(this); b6.addActio
16、nListener(this); b3.addActionListener(this); b4.addActionListener(this); b7=new Button(返回); b7.setFont(new Font(楷体,Font.BOLD,15); b7.addActionListener(this); b8=new Button(退出); b8.setFont(new Font(楷体,Font.BOLD,15); b8.addActionListener(this); Panel bpnl1=new Panel(); bpnl1.add(blbl); Panel bpnl3=new
17、 Panel(); bpnl3.add(b7); bpnl3.add(b8); Panel bpnl2=new Panel(); bpnl2.setLayout(gdo4); bpnl2.add(b1); bpnl2.add(new Label(); bpnl2.add(b4); bpnl2.add(b2); bpnl2.add(msg3); bpnl2.add(b5); bpnl2.add(b3); bpnl2.add(new Label(); bpnl2.add(b6); bpnl2.add(new Label(); bpnl2.add(bpnl3); bpnl2.add(new Labe
18、l(); PnlGetmoney.add(bpnl1,BorderLayout.NORTH); PnlGetmoney.add(bpnl2,BorderLayout.CENTER); PnlGetmoney.add(bpnl3,BorderLayout.SOUTH); public boolean reduceMoney(String tgid,float money) String ssql; if(this.queryBalance(tgid)0)/手动输入金额操作 try gmoney=Float.parseFloat(ta.getText(); if(act.reduceMoney(g
19、id,gmoney) lblMsg.setText(mce.printBill(gmoney,gid,act.queryBalance(gid); nstate=3; else lblMsg.setText(余额不足!); lblMsg.setFont(new Font(楷体,Font.BOLD,15); nstate=3; catch(NumberFormatException e2)/输入非法的金额 lblMsg.setText(您输入的金额错误!); nstate=2; finally clt.show(fram,Msg); return; if(e.getSource()=a4 | e
20、.getSource()=b8 | e.getSource()=c2 | e.getSource()=d2 | e.getSource()=x1 | e.getSource()=y1 | e.getSource()=quit)/退出系统 this.gid=; this.pwd=; act.finalize(); dac.finalize(); rcd.exitCard(); 查询界面;public void showQueryLeft() PnlQueryleft=new Panel(); PnlQueryleft.setLayout(new BorderLayout(); Label clb
21、l=new Label(帐户余额); clbl.setFont(new Font(楷体,Font.BOLD,24); clbl.setAlignment(Label.CENTER); lbleft=new Label(); Panel cpnl1=new Panel(); cpnl1.add(lbleft); Panel cpnl2=new Panel(); c1=new Button(返回); c1.setFont(new Font(楷体,Font.BOLD,15); c1.addActionListener(this); c2=new Button(退出); c2.setFont(new
22、Font(楷体,Font.BOLD,15); c2.addActionListener(this); /cpnl2.add(edok);Button edok=new Button(确定); cpnl2.add(c1); cpnl2.add(c2); PnlQueryleft.add(clbl,BorderLayout.NORTH); PnlQueryleft.add(cpnl1,BorderLayout.CENTER); PnlQueryleft.add(cpnl2,BorderLayout.SOUTH); public float queryBalance(String gid) ResultSet rs; String ssql=select * from guest where gid=+gid+; float balance=0; try rs=das.getData(ssql); rs.next(); balance=rs.getFloat(gmoney); catch(Excepti
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1