版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、合肥学院计算机科学与技术系课程设计报告20132014学年第一学期课程 面向对象课程设计课程设计名称自动取款机模拟程序学生姓名学号专业班级指导教师2013 年 12月目录一、前言4二、需求分析51、功能需求5(1)、管理端方面5(2)、客户端方面5(3)、满足上述要求的系统基本功能外还应该实现基本的安全控制机制。52、性能需求53、出错处理需求5三、设计理论和环境61、系统设计理论62、系统设计环境6四、系统数据库设计71、数据库构建语句72、表构建语句7五、总体设计8(一)、主登陆界面8(二)、管理端界面81、主界面82、增加银行卡账户界面93、删除银行卡账户对话框94、查询105、显示全部
2、10(三)、客户端界面111、客户端登陆界面112、客户端操作界面113、余额查询124、存款125、取款136、修改密码137、返回148、退卡14六、具体设计151、类及其主要功能152、一些关键代码的功能15(1)、连接数据库的代码(Link类)15(2)、管理端中实现新建银行卡的部分代码(Build类)16(3)、管理端中实现删除银行卡的代码段17(4)、用户登陆验证的实现18(5)、实现存款功能的代码段19(6)、实现取款功能的代码段20(7)、实现修改密码的代码23七、课程设计目的25八、总结26参考文件26一、前言为了进一步巩固、加深学生所学专业课程JAVA语言教程的基本理论知识
3、,理论联系实际,进一步培养学生综合分析问题,解决问题的能力;熟练掌握JAVA语言的GUI设计、数据库连接以及异常的使用、灵活运用各种类库等java知识,以及利用所学知识,开发小型应用系统的能力。我们在老师的带领下来参加java课程设计教学活动。在课程设计所提供的题目清单中,我选择了“自动取款机模拟程序”这个项目。对于给定的设计题目,我进行了详细的分析,理清了思路,并做出相应的数学模型力求完美的完成课程设计任务。以下是该项目的任务要求:1、程序分为两部分:管理端和客户端。2、管理端负责管理所有的银行卡,管理员(省略身份验证)可以增加和删除银行卡。(1)每张银行卡由卡号唯一标识,卡号由12位阿拉伯
4、数字组成;(2)新增的银行卡密码均为“”,卡内金额均为0元;(3)只有管理员增加的银行卡才能登陆客户端;(4)删除后的银行卡将不能再登陆客户端。3、客户端负责常见的取款机操作。(1)客户端需要登陆,用户输入正确的银行卡号和密码,系统核对无误后才能进行操作;(2)登陆后,用户可以进行查询余额、取款、存款和修改密码的操作;(3)修改密码时,用户需输入两次新密码,确定无误后方可更改;(4)取款和存款操作,有操作结果提示,如“操作成功”或“余额不足,操作失败”等。4、界面尽可能模仿自动取款机的实际界面。5、对于失败操作,尽可能采用异常捕捉的机制来完成。二、需求分析1、功能需求自动取款机模拟程序需要实现
5、的功能主要包括以下几个方面:(1)、管理端方面l 新增银行卡账户l 删除银行卡账户(2)、客户端方面l 查询账户余额l 修改密码l 存款l 取款(3)、满足上述要求的系统基本功能外还应该实现基本的安全控制机制。l 客户从客户端登录时,需要进行身份,身份合法才能进入本系统。l 客户修改密码时,必须输入两次新密码,确保无误后方可修改且新密码必须与旧密码不同。l 取款和存款操作时,要有操作提示,确保客户对每一步的操作不存在疑惑和不解。2、性能需求通过分析,系统性能需求如下:系统的高速性、稳定性、安全性。系统人机界面友好,易学易用。系统维护成本较低。3、出错处理需求当操作中出现了不正确的操作内容时需要
6、停止该操作并给出提示。三、设计理论和环境1、系统设计理论该程序使用JDBC-ODBC桥与数据库连接,主要定义:主类和操作类。主类的主要功能是提供等待用户的操作的主界面(菜单)。操作类中定义与数据库的连接、提供各种操作界面(增、删、改及统计等操作)。2、系统设计环境该系统程序设计在Eclipse、JDK1.5或JBuilder运行环境下实现。四、系统数据库设计本软件系统经过我详细分析,我认为所用到的数据库内仅需一张信息表,针对于此,我前期所做的构建数据库及信息表的数据库代码如下:1、数据库构建语句CREATE DATABASE ATMON(NAME = ATM,FILENAME=C:Progra
7、m FilesMicrosoft SQL ServerMSSQL.1MSSQLDataATM.mdf,SIZE = 10MB,MAXSIZE = 50MB,FILEGROWTH = 5MB)LOG ON(NAME =ATM _log.ldf,FILENAME=C:ProgramFilesMicrosoftSQL ServerMSSQL.1MSSQLDataATM_log.ldf, SIZE = 5MB,MAXSIZE = 25MB,FILEGROWTH = 5MB) 2、表构建语句CREATE TABLE 信息(卡号 CHAR(12) PRIMARY KEY,密码 CHAR(6) DEFAUL
8、T ,余额 MONEY DEFAULT 五、总体设计(一)、主登陆界面用户选择登陆端口选择管理端入口进入管理端,选择客户端入口进入客户端类系统开始实现此页面布局,点击“管理端入口”调用类管理端口进入管理操作界面,点击“客户端入口”调用类客户端口进入客户操作界面。(二)、管理端界面1、主界面程序的主界面,实现基本的查询功能及响应各种动作按钮类管理端口和类管理界面实现此页面布局,点击“添加”,调用类新建银行卡进入新建银行卡界面;点击“删除”,删除选定的银行卡账户;点击“返回”,返回上一层界面。2、增加银行卡账户界面新增银行卡,新用户可利用此账户的卡号和密码登陆客户端修改账户信息。 点击“添加”时,
9、连接数据库,执行相应的instert SQL语句实现新增银行卡账户功能,点击“取消”时,关闭此界面,调用类管理界面,返回管理端主界面。3、删除银行卡账户对话框删除选定的银行卡后,该银行卡用户将不能再利用该卡号和密码登陆客户端修改账户信息4、查询管理员可根据账户卡号来查询账户信息5、显示全部点击此按钮,管理员可一览所有帐户信息(三)、客户端界面1、客户端登陆界面用户通过输入用户名和密码验证登陆类客户端口实现此页面布局,用户输入卡号和密码,点击“确认”,系统验证用户输入的密码与输入的卡号相对应的密码是否相同,验证合法后调用类客户界面,进入客户操作主界面。若非法,则关闭界面,拒绝用户登陆退出系统。2
10、、客户端操作界面类客户界面实现此页面布局,主要含有六个按钮“余额查询”,“存款”,“退卡”,“修改密码”,“取款”,“返回”六个按钮及相应的响应方法。当点击各种按钮时,调用相应的响应方法或相应的类,实现各种操作。3、余额查询点击余额查询,程序就会显示账户余额(如图所示)。4、存款点击“存款”按钮后,将会出现如图界面,然后客户可以根据自己的意愿来输入存款金额,点击“确认”按钮后即可存款成功。5、取款点击“取款”按钮后,将会出现如上图的取款界面,然后客户可以按照界面上的提示来取款,如果是自行输入金额,则点击“确认”即可。当然,如果不想取款了,也可以点击“回主菜单”按钮,即可返回主菜单。6、修改密码
11、点击“修改密码”按钮后,程序将会出现如上图所示的界面,然后客户就可以按照自己的意愿修改密码了。7、 返回点击“返回”按钮,程序会自动回到用户登陆前的界面,如需继续操作,必须重新登陆。8、 退卡点击“退卡”按钮后,程序将会终止。六、具体设计1、类及其主要功能Link:连接数据库,其余类若要连接数据库,需调用此类。Main: 主类,软件运行入口。Start:主登陆界面,根据选择的方式,分别调用类Guanlilogin或类Kehulogin进入管理界面或客户界面。Guanlilogin:一个扩展JFrame的容器类,设置管理端主界面布局,包含一个管理界面类(扩展类)及分别实现添加、删除、返回等功能的
12、按钮,包括相应的响应方法。Guanli:一个扩展JPanel的容器类,包含一个DefaultTableModel的表用来显示账户信息及两个分别实现查询功能及显示全部账户信息功能的按钮,包括相应的响应方法。Build:一个扩展JFrame的容器类,当在类Guanli中点击“添加”按钮时被调用。此类包含两个按钮,点击“添加”时,连接数据库,执行相应的instert SQL语句实现新增银行卡账户功能,点击“取消”时,关闭此界面,调用类Guanli,返回管理端主界面。Kehulogin:扩展JFrame类的容器类,设置客户端登陆界面布局,含有两个客户文本框,点击“确认”,系统验证用户输入的密码与输入的
13、卡号相对应的密码是否相同,验证合法后调用类Kehu,进入客户操作主界面。若非法,则关闭界面,拒绝用户登陆退出系统。Kehu:扩展JFrame类,设置客户端操作主界面布局,主要含有六个按钮“余额查询”,“存款”,“退卡”,“修改密码”,“取款”,“返回”六个按钮及相应的响应方法。当点击各种按钮时,调用相应的响应方法,实现各种操作。Cun:扩展JFrame类,设置用户存款取款界面布局,用户输入存入的金额数点击“确定”执行SQL语句,修改账户信息。Qu:扩展JFrame类,设置用户取款取款界面布局,用户点击金额按钮取出或输入与界面上金额不同的金额,点击“确定”执行SQL语句,修改账户信息。Xiuga
14、i:扩展JFrame类,设置用户修改密码界面布局,用户需两次输入新密码且两次输入相同,点击“确定”执行SQL语句,修改账户信息。2、一些关键代码的功能(1)、连接数据库的代码(Link类)package main;import java.sql.*;public class Link public Connection conn;public Statement stm;public Link()tryClass.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);/加载驱动程序String url = jdbc:sqlserver:/l
15、ocalhost:1433;databasename=ATM;/说明连接的是sql server下的ATM数据库conn = DriverManager.getConnection(url,sa,);/建立数据库连接stm = conn.createStatement();/创建Statement对象catch(Exception e)e.printStackTrace();(2)、管理端中实现新建银行卡的部分代码(Build类) /省略部分声明代码public void actionPerformed(ActionEvent e) /点击添加按钮实现新建银行卡的代码段if(e.getSour
16、ce()=btnAdd)String number = txtCard1.getText();/获取新建卡号String mm = ;String ye = 0;String addDatas = new String3;addDatas0=number;addDatas1=mm;addDatas2=ye;try if(addDatas0.length()=12)/判断新建的银行卡卡号是否/符合必须是12位的要求addEmployee(addDatas);/调用addEmployee(String s)方法eface.showData();/调用Guanli类中的showData()方法thi
17、s.dispose();elseerror.setText(格式错误,新建卡号必须是12位数字!);/当新建银行卡号不是12位的错误提示 catch (NumberFormatException e1) error.setText(格式错误,新建卡号必须是12位数字!);/当新建银行卡号不是12位数字的错误提示if(e.getSource()=btnCancel)this.dispose();private void addEmployee(String addDatas)/定义addEmployee()方法try String sql = insert into 卡信息 values(+ad
18、dDatas0+,;sql+=+addDatas1+,;sql+=+addDatas2+);/初始化插入sql语句 Link link1=new Link();/新建数据库连接 this.stm=link1.stm; this.conn=link1.conn; stm.executeUpdate(sql); catch (Exception e) e.printStackTrace();finallytry stm.close();conn.close();/关闭数据库连接 catch (Exception e) e.printStackTrace();(3)、管理端中实现删除银行卡的代码段
19、/省略的代码public void actionPerformed(ActionEvent e) if(e.getSource()=btnAdd)new Build(emp);else if(e.getSource()=btnDel)/接收点击删除按钮产生的事件if(emp.updateKey!=null) /下面是实现点击按钮时出现的提示的代码段if(JOptionPane.showConfirmDialog(this,确定删除记录吗?,银行卡删除,JOptionPane.WARNING_MESSAGE)=JOptionPane.YES_OPTION)deleteData();/调用删除银行
20、卡deleteData()方法emp.updateKey = null;String queryString=;emp.showData(queryString); /显示所有银行卡信息elsenew Start();this.dispose();private void deleteData() /定义删除银行卡的方法try String sql = delete from 卡信息 where 卡号 =+emp.updateKey+;/初始化sql语句Link link1=new Link();/建立数据库连接 this.stm=link1.stm; this.conn=link1.conn
21、; stm.executeUpdate(sql); catch (Exception e) e.printStackTrace();finallytry stm.close();conn.close();/关闭数据库连接 catch (SQLException e) e.printStackTrace();(4)、用户登陆验证的实现 /省略的代码public void actionPerformed(ActionEvent e) if(e.getSource()=okey)/点击登陆按钮实现的事件String s1,s2;s1=ka_id.getText();s2=ka_m.getText()
22、;/获得输入的卡号和密码tryars(s1,s2);/调用验证身份方法ars(String s1,String s2)catch(NumberFormatException f)ts.setText(密码错误!);/密码错误提示if(e.getSource()=cancel)new Start();this.dispose();public void ars(String s1,String s2) /定义验证身份的方法int a,b;trylink = new Link();/新建数据库连接this.conn = link.conn;this.stm = link.stm;String sq
23、l = select * from 卡信息 where 卡号 =+s1+;rs=stm.executeQuery(sql);a=Integer.parseInt(s2);while(rs.next()String mm=rs.getString(2);b=Integer.parseInt(mm);if(a=b)new Kehu(s1,s2);this.dispose();/从数据库中提取信息验证是否存在该银行卡elsets.setText(密码错误!); catch (Exception f) f.printStackTrace();finallytry stm.close();conn.cl
24、ose();/关闭数据库连接 catch (SQLException f) f.printStackTrace();(5)、实现存款功能的代码段 /省略的代码public void actionPerformed(ActionEvent e) if(e.getSource()=ok)double a;String money;money=je.getText();trya=Double.parseDouble(money);if(a%100=0&a0) /判断存款面额是否是百元的cunkaun(s,a);elselabel2.setText(您使用的不是面额为百元的纸币!);catch(Num
25、berFormatException f)label2.setText(请输入金额,且必须使用面额为百元的纸币);elsethis.dispose();private void cunkaun(String s2, double a) /实现存款功能代码double b,c = 0;trylink = new Link();/新建数据库连接this.conn = link.conn;this.stm = link.stm;String sql = select * from 卡信息 where 卡号 =+s2+;rs=stm.executeQuery(sql);while(rs.next()S
26、tring jine=rs.getString(3);b=Double.parseDouble(jine);c=a+b;sql=update 卡信息 set 金额=+Double.toString(c)+where 卡号 =+s2+;stm.executeUpdate(sql);this.dispose();face.l3.setText(操作成功!请选择下一步操作); catch (SQLException f) face.l3.setText(操作失败!);finallytry stm.close();conn.close();/关闭数据库连接 catch (SQLException f)
27、 f.printStackTrace();(6)、实现取款功能的代码段 /省略的代码public void actionPerformed(ActionEvent e) if(e.getSource()=butok)double a;String money;money=je.getText();/获得输入的金额数trya=Double.parseDouble(money);if(a%100=0&a0) /判断是否符合条件if(a=a)c=b-a;sql=update 卡信息 set 金额=+Double.toString(c)+where 卡号 =+s+;stm.executeUpdate(
28、sql);/执行更新语句this.dispose();Kehu f=new Kehu(s1,s2);f.l3.setText(取款成功!请进行下一步操作);elsethis.dispose();Kehu f=new Kehu(s1,s2);f.l3.setText(余额不足,操作失败); catch (SQLException f) Kehu d=new Kehu(s1,s2);d.l3.setText(取款成功!请进行下一步操作);finallytry stm.close();conn.close();/关闭数据库连接 catch (SQLException f) f.printStackT
29、race();(7)、实现修改密码的代码 /省略的代码public void actionPerformed(ActionEvent e) if(e.getSource()=butcancel)this.dispose();czjm.l3.setText(修改密码操作失败);if(e.getSource()=butokey) /当点击确认时实现更改密码功能的代码String mm1,mm2;int a,b,c;mm1=text1.getText();mm2=text2.getText();/获取两次输入的密码trya=Integer.parseInt(mm1); b=Integer.parse
30、Int(mm2); c=Integer.parseInt(czjm.s2);if(mm1.length()=6) /判断输入的密码是否是6位if(a=b)if(a!=c) altermm(mm1); /调用实现修改密码的方法altermm(String s) this.dispose(); czjm.l3.setText(修改密码成功,请选择下一步操作);elselabel3.setText(新密码必须与旧密码不同); else label3.setText(两次输入的密码必须相同);elselabel3.setText(密码必须为六位数字);catch(NumberFormatException g)label3.setText(密码必须为六位数字);/出现错误时的一些错误提示 public void altermm(String mm) /定义修改密码的方法 try String sql=update 卡信息 set 密码=+mm+ where 卡号 =+czjm.s1+; Link link1=new Link();/新建数据库连接 this.conn=link1.conn; this.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 零售预备清算协议
- 2025年湛江市麻章区住房和城乡建设局人员招聘考试试题及答案详解
- 2026年河北对外经贸职业学院高职单招职业适应性测试考试题库附参考答案详解(培优B卷)
- 2026年铜川康养职业学院高职单招职业技能考试模拟试卷及答案详解(历年真题)
- 2027年成都天府文旅职业学院高职单招职业技能考试模拟试卷及参考答案详解【培优B卷】
- 2026年恒盛职业学院单招综合素质考试模拟试卷及完整答案详解(夺冠系列)
- 2027年唐河职业学院高职单招职业技能考试模拟试卷附答案详解(突破训练)
- 2025年漯河食品产业职业学院高职单招职业技能考试题库及答案详解【有一套】
- 2025年天山宏恒职业学院高职单招职业技能考试模拟试卷含答案详解【培优】
- 2024年南岳康养职业学院高职单招职业技能考试模拟试卷附参考答案详解(轻巧夺冠)
- 2026年榆林经济技术开发区公共安全服务辅助人员招聘60人考试参考题库及答案详解
- 多发伤伤情评估与分诊技巧
- 2025-2026学年对数均值不等式的专题教学设计
- 2026年吉林省中考数学试题(含答案及解析)
- 2026新疆农业大学面向社会招聘编制外聘用人员61人笔试参考试题及答案详解
- 2026年管理学专升本模拟题及答案
- 2025年度电力工程造价从业人员专业能力评价(电力工程建设管理)练习题库
- 定位设计策划课
- 混凝土泵车维护保养保证措施
- 高中数学教学论专业知识与实践技能考题及答案
- 2026年石油炼制催化剂行业分析报告及未来发展趋势报告
评论
0/150
提交评论