《JAVA提款机设计报告》由会员分享,可在线阅读,更多相关《JAVA提款机设计报告(24页珍藏版)》请在人人文库网上搜索。

1、沈阳理工大学应用技术学院JAVA程序设计综合实验报告题 目 : ATM提款机 系 别: 专 业: 班级学号: 学生姓名: 成 绩:指导教师: 2010年 6 月 9 日目 录1设计内容 32总体设计32.1 Account类42.2 Atm类42.2ATMScreen类42.4 dataAccess类42.4 moneyMachine类42.4 readCard类53详细设计53.1 Account类53.1.1 成员变量介绍53.1.2 方法介绍53.1.4 代码53.2 Atm类73.2.1 成员变量介绍73.2.2 代码73.3 ATMScreen类73.1.1 效果图73.1.2 成员。

2、变量介绍93.1.3 方法介绍103.2.1 代码103.4 dataAccess类1834.1 方法及成员变量介绍183.4.2 代码183.5 moneyMachine类193.5.1 方法及成员变量介绍193.5.2 代码193.6 readCard类203.6.1 方法介绍203.6.2 代码204代码调试20总 结22参考文献231设计内容本系统主要实现ATM提款机的主要功能,包括系统自动识别卡号,验证用户信息(如果输入的密码三次错误时,系统自动扣留本信用卡),查询当前用户信用卡的余额,修改用户密码,打印清单,取款等功能。2总体设计本系统包含六大类:Account类、Atm类、ATM。

3、Screen类、dataAccess类、moneyMachine类、readCard类,用于实现ATM提款机日常操作功能。类之间的组合关系如图2.1所示:dataAccessAtmATMScreenAccountmoneyMachinereadCard图2.1类之间的组合关系2.1 Account类Account(用户账户)类:主要包含用户信息的验证、余额查询和扣除取款数等方法,实现修改用户密码、验证用户信息、查询余额和自动扣除取款钱数等操作。2.2 Atm类Atm(系统)类:是系统主方法的开始,负责调用其他类。2.2 ATMScreen类ATMScreen(ATM屏幕)类:主要创建各操作窗体。

4、和相应按钮事件,通过创建不同的方法来实现ATM提款机的取款、查询余额、修改用户密码、退出操作界面等功能。2.4 dataAccess类dataAccess(数据操作)类:包含用于数据库的相关操作,是JAVA语言与数据库进行交互的关键。2.4 moneyMachine类moneyMachine(取钱机)类:只用于帮助用户打印清单操作。2.4 readCard类readCard(读卡机)类:包含读取用户卡号和退卡(退出系统)操作。3详细设计3.1 Account类3.1.1 成员变量介绍在Account类中实例化了dataAccess类,创建changePwd()方法,用于修改密码;创建返回值类型。

5、为布尔型的checkAccount()和checkPwd()方法,用于验证用户信息;创建srting类型的ssql,用于和数据库中的信息进行交互,从而保证验证的准确性;创建浮点型的queryBalance()和布尔型的reduceMoney()方法,实现及时更新信用卡中的余额,避免系统出现余额数据的错误。3.1.2 方法介绍Account类中创建了5个方法,分别为changePwd()、checkAccount()、 checkPwd()、 queryBalance()和reduceMoney(),实现ATM提款机的修改用户密码、验证用户ID和密码、查询余额和扣除取款数的功能。3.1.4 代码。

6、import java.sql.*;import java.io.*;public class Account dataAccess das=new dataAccess();public int changePwd(String gid,String pwd,String oldPwd,String newPwd,String newPwd2) if(newPwd.length()=0 | newPwd.trim().equals() return -3; else if(oldPwd.equals(pwd) if(newPwd.equals(newPwd2)das.exeSql(updat。

7、e guest set pwd=+newPwd+ wheregid=+gid+);return 1; elsereturn -2; elsereturn -1; public boolean checkAccount(String tid) String ssql; ssql=select * from guest where gid=+tid+; if(das.getRowcount(ssql)0) return true; else return false; public boolean checkPwd(String tid,String tpwd) String ssql;ssql=。

8、select * from guest where pwd=+tpwd+ and gid=+tid+;if(das.getRowcount(ssql)0) return true;elsereturn false;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(Exception。

9、 e) System.out.println(e.toString();finally return balance; public boolean reduceMoney(String tgid,float money) String ssql;if(this.queryBalance(tgid)0)/用户ID验证 if(!act.checkAccount(rcd.getCardID(ta.getText() msghint.setText(非法用户ID,请重新输入!);ta.setText();dac.sleep(2);msghint.setText();else ta.setEchoCh。

10、ar(*);msgstr.setText(请输入密码:);this.gid=ta.getText(); ta.setText();return;if(msgstr.getText().indexOf(密码)0)/密码验证操作if(!act.checkPwd(gid,ta.getText() msghint.setText(密码错误,请重新输入!);ta.setText();dac.sleep(2);msghint.setText();else ta.setEchoChar(0);clt.show(fram,Menu);this.pwd=ta.getText(); return;if(msgst。

11、r.getText().indexOf(金额)0)/手动输入金额操作 trygmoney=Float.parseFloat(ta.getText();if(act.reduceMoney(gid,gmoney) lblMsg.setText(mce.printBill(gmoney,gid,act.queryBalance(gid);nstate=3;else lblMsg.setText(余额不足!);nstate=3;catch(NumberFormatException e2)/输入非法的金额 lblMsg.setText(您输入的金额错误!);nstate=2;finallyclt.s。

12、how(fram,Msg);return;if(e.getSource()=a4 | e.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();if(e.getSource()=a1)/进入取款界面clt.show(fram,Getmoney);return;if(e.getSource()=a2。

13、)/进入余额查看界面 float mleft=act.queryBalance(gid);lbleft.setText(帐号余额为:$ +mleft);clt.show(fram,Queryleft);return;if(e.getSource()=a3)/进入密码修改界面 clt.show(fram,Chgpwd);return;if(e.getSource()=b1)/执行取款100操作 if(!act.reduceMoney(gid,100) lblMsg.setText(余额不足!);elselblMsg.setText(mce.printBill(100,gid,act.queryB。

14、alance(gid);nstate=3;clt.show(fram,Msg);return;if(e.getSource()=b2)/执行取款300操作 if(!act.reduceMoney(gid,300) lblMsg.setText(余额不足!);else lblMsg.setText(mce.printBill(300,gid,act.queryBalance(gid);nstate=3;clt.show(fram,Msg);return;if(e.getSource()=b3)/执行取款500操作 if(!act.reduceMoney(gid,500) lblMsg.setTe。

15、xt(余额不足!);elselblMsg.setText(mce.printBill(500,gid,act.queryBalance(gid);nstate=3;clt.show(fram,Msg);return;if(e.getSource()=b4)/执行取款800操作 if(!act.reduceMoney(gid,800) lblMsg.setText(余额不足!);elselblMsg.setText(mce.printBill(800,gid,act.queryBalance(gid);nstate=3;clt.show(fram,Msg);return;if(e.getSour。

16、ce()=b5)/执行取款1000操作 if(!act.reduceMoney(gid,1000) lblMsg.setText(余额不足!);elselblMsg.setText(mce.printBill(1000,gid,act.queryBalance(gid);nstate=3;clt.show(fram,Msg);return;if(e.getSource()=b6)/进入手动输入金额取款界面 y2.setVisible(true);msgstr.setText(请输入金额);ta.setText();msghint.setText();clt.show(fram,input);r。

17、eturn;if(e.getSource()=dok)/执行修改密码操作 int t=act.changePwd(gid,pwd,oldpwd.getText(),newpwd1.getText(),newpwd2.getText();if(t=-1)lblMsg.setText(原密码输入错误!); nstate=1;else if(t=-2)lblMsg.setText(两次密码输入不同!); nstate=1;else if(t=-3)lblMsg.setText(新密码不能为空!); nstate=1;if(t=1) lblMsg.setText(密码修改成功!); nstate=3;。

18、 this.pwd=newpwd1.getText();oldpwd.setText();newpwd1.setText(); newpwd2.setText();clt.show(fram,Msg);return;if(e.getSource()=back) if(nstate=1) clt.show(fram,Chgpwd); else if(nstate=2) clt.show(fram,input);ta.setText(); else if(nstate=3) clt.show(fram,Menu);if(e.getSource()=b7 | e.getSource()=c1 | e。

19、.getSource()=d1) clt.show(fram,Menu);if(e.getSource()=y2) clt.show(fram,Getmoney);3.4 dataAccess类34.1 方法及成员变量介绍dataAccess类主要是实现Java与数据库的交互,类中创建了构造函数dataAccess用于连接数据库,创建getData()方法,以数据集的形式返回数据。3.4.2 代码import java.sql.*;import java.io.*;public class dataAccess private Connection conn;private Statement。

20、 stmt; public dataAccess() /构造函数设置连接数据库 tryClass.forName(sun.jdbc.odbc.JdbcOdbcDriver);String dburl =jdbc:odbc:driver=Microsoft Access Driver (*.mdb);DBQ=Dataatm.mdb;conn=DriverManager.getConnection(dburl);stmt=conn.createStatement(); catch(Exception e1) System.out.println(e1.toString(); public Resu。

21、ltSet 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) int i=0;try ResultSet rs=this.getData(sqlstr); while(rs.next() i+;catch(Exception e) System.out.println(e.toStri。

22、ng();finallyreturn i; public boolean exeSql(String sqlstr)try stmt.execute(sqlstr);return true; catch(Exception e) System.out.println(e.toString();return false; public void sleep(int second)try Thread th=new Thread(); th.sleep(second*1000);catch(Exception e) System.out.println(e.toString();protected。

23、 void finalize()/析构函数 tryif(stmt!=null) stmt.close();if(conn!=null) conn.close();catch(Exception e) 3.5 moneyMachine类3.5.1 方法及成员变量介绍本类中创建了一个printBill()方法,用于打印清单。定义了一个字符串型的变量msg,把参数值赋值给msg,并输出,完成打印订单的操作。3.5.2 代码public class moneyMachine public String printBill(float money,String gid,float leftmoney) 。

24、String msg;msg=帐号: +gid+ ;msg+=操作类型: 取款+ ;msg+=操作金额: +money+ ;msg+=帐号余额: +leftmoney+ ;return msg;3.6 readCard类3.6.1 方法介绍在readCard类中,创建getCardID()和exitCard()方法,分别用于读卡号和退出本系统操作。3.6.2 代码public class readCard public void exitCard()/ System.exit(0); public String getCardID(String carID)/ return carID; 4代。

25、码调试在对ATM提款机进行开发的时候,曾出现无法与数据库进行连接的状况,下面是解决连接输错的具体步骤:1. 软件安装和帐户设定1-1、安装“MS Sql Server 2005(SP2)”(内置帐户选择本地账户,登陆模式选Windows与SQL混合模式,密码可任设;如果没有设置内置帐户sa的话,请直接使用WinNT登录“SQL Server Management Studio”,选择安全性 登录名 sa 登录属性,然后设置密码,关闭“SQL Server Management Studio”)1-2、安装“MyEclipse 6.6.1 GA”(或其它版本)1-3、下载连接驱动包“sqljdb。

26、c.jar”2. 设置SQL Server服务器:2-1,“开始” “程序” “Microsoft SQL Server 2005” “配置工具” “SQL Server Configuration Manager”(确认“SQL Server Management Studio”已关闭)2-2、“SQL Server 2005 服务”中停止服务“SQL Server (SQLEXPRESS)”(默认是启动状态)2-3、“SQL Server 2005 网络配置” “MSSQLSERVER 的协议”,启动“TCP/IP”(默认是禁用状态),然后双击“TCP/IP”进入属性设置,在“IP 地址”。

27、里,确认“IPAll”中的“TCP 端口”为14332-4、“SQL Server 2005 服务”中启动服务“SQL Server (MSSQLSERVER )”(默认是停止状态)2-5、关闭“SQL Server Configuration Manager”(此时可以启动“SQL Server Management Studio”,并用帐户sa、密 码登录,SQL Server服务器设置正确的话应该能登录成功)3. 创建测试数据库和表:启动“SQL Server Management Studio”,并用帐户sa、密码登录(SQL Server服务器设置正确的话应该能登录成功),创建一个数。

28、据库JSPTest,内建一个表register4、创建测试的Java工程和代码4(1)启动“MyEclipse” “File” “New” “Project” “Java Project”,命名为Test(2)打开Test的“Properties” “Java Build Path” “Libraries” “Add External JARs” ,选择下载好的连接驱动包“sqljdbc.jar”,然后点击“OK”确定(3)创建一个测试类,编写如下代码:import java.sql.*;public class Test public static void main(String args。

29、) Connection con=null;Statement stmt=null;ResultSet rs=null;try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); con=DriverManager.getConnection(jdbc:sqlserver:/localhost:1433;DatabaseName=JSPTest,sa,sa);/ Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); con= DriverManager.getConnection(jdbc。

30、:odbc:JDBCSQLDemo_JSPTest);stmt = con.createStatement();rs = stmt.executeQuery(select userName,passWord,email from regist);while(rs.next()String strUserName = rs.getString(1);String strPassWord = rs.getString(2);String strEmail = rs.getString(email); System.out.println(strUserName+t+strPassWord+t+st。

31、rEmail+t);if(rs!=null)rs.close();if(stmt!=null)stmt.close();if(con!=null)con.close();catch (Exception e) e.printStackTrace();FinallySystem.out.println(演示完毕!); (4)执行代码,应该显示register表的数据(5)代码中注释的部分为ODBC桥连接代码,可以选用(6)如果你以前用JDBC连接SQL Server 2000的话就要注意了:在SQL Server2000 中加载驱动和URL路径的语句是“com.microsoft.jdbc.sqlserver.SQLServerDriver”“jdbc:microsoft:sqlserver:/localhost:1433; DatabaseName=JSPTest”而SQL Server 2005 中加载驱动和URL的语句则为“com.microsoft.sqlserver.jd。

atm机java设计_JAVA提款机设计报告相关推荐

  1. java阿基米德螺线_阿基米德螺线图形设计_java基础实验报告.doc

    阿基米德螺线图形设计_java基础实验报告.doc 南京工程学院实验报告课程名称JAVA基础实验项目名称图形用户界面设计实验题目阿基米德螺线图形设计实验学生班级网络132实验学生姓名薛康威学号2021 ...

  2. ATM柜员机JAVA课程设计_JAVA课程设计报告银行ATM机系统.doc

    JAVA课程设计报告银行ATM机系统 Java课程设计报告 题 目 银行ATM机系统 所在院系 软件学院 学生姓名 金磊 专 业 R机械+软件 班 级 R机械094 学 号 2011年 7 月 15日 ...

  3. java模拟atm 课程设计_java课程设计ATM机(图形用户)代码

    [实例简介] 这是我在大二的时候学java时自己写的一个模拟ATM机的小程序,用了图形用户界面,数据库,绝对原创 [实例截图] [核心代码] atm └── atm ├── bin │   └── c ...

  4. 记忆测试系统java代码_JAVA课程设计——记忆测试系统(附源程序).doc

    <JAVA程序设计>课程设计报告 题 目: 记忆游戏 姓 名: 学 号: 班 级: 指导教师: 完成时间 成 绩: 信息工程学院 2015年6月 目 录 TOC \o "1-5& ...

  5. java打字游戏课程设计_Java课程设计打字游戏.docx

    中南大学 Java 课程设计报告 题 目 打字游戏 学生姓名 窦立阳 指导教师 陈丽萍 学 院 信息科学与工程学院 专业班级 计科 1204 完成时间 2015 年1月15日 目录 第二章 总体设计 ...

  6. 打怪游戏Java课程设计_java 课程设计大作业 写的一个RPG游戏(代码+文档)

    [实例简介] java 课程设计大作业 写的一个RPG游戏(代码+文档) java 课程设计大作业 写的一个RPG游戏(代码+文档) [实例截图] [核心代码] Rebellion-master ├─ ...

  7. java时钟课程设计_JAVA课程设计报告电子钟

    JAVA课程设计报告电子钟 课 程 设 计 报 告( 2012-- 2013 年度第 2 学期)日历记事本专业 计算机科学与技术学生姓名班级 学号指导教师完成日期目 录目 录 .21 概 述 .41. ...

  8. 电子记事本java代码_JAVA课程设计报告电子钟日历记事本

    JAVA课程设计报告电子钟日历记事本 课课程程设设计计 报报告告 ( 2012-- 2013 年度第年度第 2 学期学期) 日历记事本日历记事本 专业专业计算机科学与技术计算机科学与技术 学生姓名学生 ...

  9. java的结课课程设计_Java课程设计总结报告

    闽南师范大学计算机学院 Java 课程设计总结报告 .项目开发总结报告 <Java 应用开发与实践>,人民邮电出版社,刘乃琦,苏畅主编 此书中第20章或21章或22章课程设计报告的写法.) ...

最新文章

  1. 轻松学Pytorch –使用torchvision实现对象检测
  2. java日志模块_Java源码初探_logging日志模块实现
  3. Android应用开发SharedPreferences存储数据的使用方法
  4. 未命名语句块中的声明
  5. Linux内核源代码分析-目录
  6. LeetCode 刷题笔记 (树)
  7. add(1)(2)(3) add(1,2)(3)
  8. matplotlib散点图点大小_机器学习Web应用:matplotlib教程
  9. php 改变图片的宽高,php缩放图片(根据宽高的等比例缩放)示例
  10. 二维 均值方差高斯分布图 python_PRML笔记 第二章 (多维)高斯分布
  11. 2017-2018-2 1723《程序设计与数据结构》第八周作业 实验二 第一周结对编程 总结...
  12. [TCO2013]TrickyInequality
  13. 三层结构对多语言的支持
  14. Maven开发笔记(三)—— Maven中dependencies和dependencyManagement
  15. Java前后端分离项目跨域问题
  16. SVN服务器端安装教程
  17. php服务器总是崩,服务器php对外发包引起崩溃的解决办法
  18. 2022程序员必备网站
  19. nux下导入、导出mysql数据库命令
  20. tp+layui 时间戳转换

热门文章

  1. lv官网编码查询_【干货】商品条码(条形码)哪里查?官方查询网站和APP推荐给你~...
  2. mysql linux初始化密码_linux mysql初始化密码
  3. java 软件运维面试题_运维面试题(一)
  4. 有什么商务蓝牙耳机推荐?盘点四款通话清晰的商务蓝牙耳机
  5. [ C语言 ]指针---结构体(struct)---分支语句(1)---初识C语言末尾
  6. Linux创建新用户(useradd与adduser用法的区别)
  7. 联诚发|一封来自中国中小企业国际合作协会的感谢信
  8. 前端项目实战44-cannot be compiled under ‘--isolatedModules‘ because it is considered a global script file.
  9. 关于Mac Mini 不能调整显示器亮度
  10. Redis-基础知识