还剩43页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
本科毕业论文(设计)银行存取款系统的设计与实现毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意作者签名 日 期 指导教师签名 日 期 使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容作者签名 日 期 目录TOC\o1-4\h\z\u引论11银行存取款系统概述
11.1背景
11.2意义12银行存取款系统需求分析
12.1系统需求
12.2功能需求
12.
2.1用户注册和登陆功能
12.
2.2用户存取款转账和查询历史功能
12.3软件属性需求
22.4业务流程描述
23.银行存取款系统总体设计
23.1系统设计概述
23.2注册帐户
23.3登录
23.4存款
23.5取款
23.6转账
23.7查询历史
23.8退出34Oracle数据库的设计
34.1Oracle数据库设计概论
34.2表的结构设计
34.
2.1用户表
34.
2.2历史表
34.3PL/SQL存储过程的设计
34.
3.1用户表存储过程的设计
44.
3.2历史表存储过程的设计45银行存取款系统的实现
55.1用户登陆模块的实现
55.
1.1界面样式
55.
1.2功能实现
55.2新用户注册模块的实现
65.
2.1界面样式
65.
2.2功能实现
65.3用户操作模块的实现
75.
3.1界面样式
85.
3.2功能实现
85.4存款模块的实现
95.
4.1界面样式
95.
4.2功能实现
95.5取款模块的实现
105.
5.1界面样式
115.
5.2功能实现
115.6转账模块的实现
125.
6.1界面样式
125.
6.2功能实现
125.7查询历史记录模块的实现
155.
7.1界面样式
155.
7.2功能实现156发布程序及分包规范16结论17参考文献17致谢17银行存取款系统的设计与实现摘要计算机科学技术的发展不仅极大地促进了整个科学的发展,而且明显加快了经济信息化和社会信息化的进程绝大多数的公司的日常办公已经离不开计算机技术和软件技术国内的银行大都大力发展银行自动取款机(ATM),以提高工作效率和降低成本本系统采用Eclipsc作为开发工具,使用Java语言编写,并连接Oracle数据库搭建和模拟银行最常见存款取款转账操作可实现用户注册、用户登录、用户存款、用户取款、用户转账、查询该用户所有的操作记录的功能关键词注册;登陆;存取款;转账;历史记录DesignandimplementationofbankdepositandwithdrawalsystemAbstractThedevelopmentofcomputerscienceandtechnologynotonlygreatlypromotedthedevelopmentofscienceasawholeandsignificantlyspeeduptheprocessofeconomicandsocialinformation.Thevastmajorityofthecompanysday-to-dayofficecannotdowithoutthecomputertechnologyandsoftwaretechnology.DomesticbanksMostvigorouslydevelopmentBankautomatedtellermachineATMinordertoenhanceefficiencyandreducecosts.EclipscThesystemusesasadevelopmenttooloftousingtheJavalanguageandconnecttoanOracledatabasesetupthemostcommonandanalogbankdepositwithdrawalstransferoperation.Userregistrationuserlogintheuserdepositstheuserwithdrawalcheckalloperatingrecordoftheuser.KeywordsRegistration;Login;Deposit;Transfer;History引论随着市场经济的发展,经济信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要同时,随着国内银行机构的大量增加,我国的银行业面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题Java是一个广泛使用的编程语言,是一种新的计算概念1995年Java的诞生让全世界的程序员为之疯狂与以往的任何一种语言相比Java都有着无可比拟的优势首先,Java是一种简单、面向对象、分布式、解释、健壮、安全、结构中立、可移植、高效能、动态的语言目前,Java已得到了全世界主要计算机软硬件厂商的支持,在计算机领域中得到了广泛应用本系统选题为基于Java程序设计的银行存取款系统,是模拟银行存取款的管理设计的指导思想是一切为使用者着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的管理系统要有要有良好的容错性,在出现误操作时能尽量及时地给出警告,以便用户及时地改正鉴于本系统的特殊性,还需要本程序有良好的保密性1银行存取款系统概述
1.1背景随着我国金融电子化建设的深入发展和银行客户对金融服务质量要求的提高,自动柜员ATM机在金融行业的应用越来越广泛,自动柜员机ATM机在拉近客户与银行之间的距离,扩展营业网点,改善用卡环境,提供全天候、全方位的金融服务,降低经营成本,提高金融行业的服务质量和综合竞争实力等方面正发挥着不可替代的作用
1.2意义对用户来说,自动柜员机ATM机的诞生,使原来必须到银行柜台办理的账务查询、转账等业务,可以在大街小巷的固定取款机前进行办理对银行来说,自动柜员机ATM机的开通,将大大提高工作效率,在方便用户的同时可以节省大量的柜台服务为人员,从而降低生产经营成本2银行存取款系统需求分析
2.1系统需求本系统是一套类似于ATM机的模拟银行系统存取款管理软件,其采用C/S结构来实现,当用户在界面进行存取款操作后,其数据信息会存入数据库,用户也可以选择查询这些信息
2.2功能需求根据系统的需求分析,本系统的功能要求如下
2.
2.1用户注册和登陆功能新用户必须先注册,注册需要填写用户名和密码;老用户可以输入户名和密码直接登陆,通过读取数据库,获取该用户的信息,如果用户不存在则会提示错误
2.
2.2用户存取款转账和查询历史功能用户登录成功后,可以选择存款、取款、转账或者查询历史记录四项业务,系统会自动进行各种计算,然后将结果返回给用户并将信息存入数据库
2.3软件属性需求本系统为银行存取款管理系统,要求程序具有一定的可移植,可扩展,安全性、保密性!
2.4业务流程描述图1-1业务流程
3.银行存取款系统总体设计
3.1系统设计概述本系统使用Eclipse作为开发工具,采用Oracle作为后台数据库,使用swing界面,用户所有的操作信息会自动记录在数据库中,用户界面简单明了,功能严谨合理,务求使用户有好的体验
3.2注册帐户填写注册信息,注册成功后,把用户信息存进数据库,并自动获得10000元存款
3.3登录输入帐户名和密码,读取数据库内容进行验证,如果存在,登录成功,否则提示无此账户,请确认后重新输入!登录成功后可进行存款取款转账查询历史操作;
3.4存款输入的存款金额进行验证,如输入负数或字母,提示金额错误,否则提示存款成功,存储被修改的余额信息!
3.5取款输入的取款金额进行验证,如输入负数或字母,提示金额错误取款成功后,存入数据库!当取款金额大于余额,要有提示,并操作不成功
3.6转账输入对方户名可以进行转账,转账后自己余额减少,对方余额增加
3.7查询历史显示用户从注册开始的所有操作时间和操作记录
3.8退出退出系统4Oracle数据库的设计
4.1Oracle数据库设计概论OracleDatabase,简称Oracle是甲骨文公司的一款关系数据库管理系统到目前仍然是全球最流行的数据库在银行存取款系统的设计中,多次使用了Oracle作为存储信息和读取信息的工具
4.2表的结构设计在银行存取款系统的设计中,我们建立了用户表和历史表用于存储信息;
4.
2.1用户表用户表用于存储用户的户名密码余额注册时间信息,当用户注册成功后这些信息会自动记录在数据库中,以便用户查询表3-1用户表字段名数值类型说明HUMINGVARCHAR215用户户名(主键)MIMAVARCHAR215用户密码YUEMUMBER用户余额SHIJIANDATE用户注册时间
4.
2.2历史表历史表用于存储用户从注册开始的所有用户操作,历史表中的字段HUMING与用户表中的字段HUMING是外键关系,以实现2个表之间的关联表3-2历史表字段名数值类型说明SHIJIANVARCHAR215用户执行当前操作的时间(主键)HUMINGVARCHAR215用户户名CAOZUOVARCHAR2100当前操作YUEMUNBER操作后用户余额
4.3PL/SQL存储过程的设计存储极大地方便了对数据库的增删改查等操作,因此创建与用户表对应的存储过程P_YH和与历史表对应的存储过程P_LS
4.
3.1用户表存储过程的设计针对用户表的特点和JDBC连接的需要,现设计P_YH代码如下createorreplaceprocedurep_yh--pl/sql存储过程-用于对用户表--进行更新密码和余额操作v_rmarkinnumber--判定操作v_huminginvarchar2--户名v_mimainvarchar2--用户密码v_yueinnumber--剩余金额isbeginifv_rmark=1theninsertintoyonghuvaluesv_humingv_mimav_yuesysdate;elsifv_rmark=2thenupdateyonghusetmima=v_mimawherehuming=v_huming;elseupdateyonghusetyue=yue+v_yuewherehuming=v_huming;endif;commit;end;
4.
3.2历史表存储过程的设计针对历史表的特点和JDBC连接的需要,现设计P_LS代码如下createorreplaceprocedurep_ls--pl/sql存储过程--用于对历史表--进行存储删除操作v_rmarkinnumber--判定操作v_huminginvarchar2--户名v_caozuoinvarchar2--用户操作v_yueinnumber--操作金额isbeginifv_rmark=1then--存储insertintolishivaluesto_charsystimestampyyyy-mm-ddhh24:mi:ssv_humingv_caozuov_yue;elsedeletefromlishiwherehuming=v_huming;endif;commit;end;5银行存取款系统的实现
5.1用户登陆模块的实现
5.
1.1界面样式图3-1用户登陆界面
5.
1.2功能实现程序启动后调用Dlact类,显示用户登陆界面新用户需要点击注册按钮调转到用户注册界面进行注册,老用户输入户名和密码点击登陆按钮,程序将跳转到用户操作界面户名和密码错误或者不存在会提示登录失败该模块主要代码如下publicclassDlactextendsJFrameimplementsActionListener{publicvoidff{f.setLayoutnull;addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}publicstaticvoidmainString[]agrs{Dlactd=newDlact;d.ff;}@OverridepublicvoidactionPerformedActionEvente{Strings1=t
1.getText;Strings2=String.valueOfp
1.getPassword;ife.getSource==JB2{//调用注册界面Zcactz=newZcact;z.ff;}else{//登陆成功进入用户操作界面Xzactx=newXzact;x.ffs1s2;}}}
5.2新用户注册模块的实现新用户在登陆界面点击注册按钮后调转到注册界面,在程序中调用Zcact类;
5.
2.1界面样式图3-2新用户注册界面
5.
2.2功能实现新用户输入户名、密码及确认密码输入两次密码必须一致,不一致提示输入不一致需要重新输入在程序中定义两个变量s1和s2,判断两个变量的值是否相等新用户注册成功后,系统将自动存储信息,并有余额10000元该部分主要代码如下publicclassZcactextendsJFrameimplementsActionListener{publicvoidff{f.setLayoutnull;addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}@OverridepublicvoidactionPerformedActionEvente{Strings1=t
1.getText;Strings2=String.valueOfp
1.getPassword;Strings3=String.valueOfp
2.getPassword;System.out.printlns2;if!s
2.equalss3{//判断2次密码是否一致JOptionPane.showMessageDialognull密码输入不一致;return;}else{JOptionPane.showMessageDialognull注册成功;}Yhvoyvo=newYhvo;//调用Yhvo将数据存入用户表Lsvolvo=newLsvo;//调用Lsvo将数据存入历史表yvo.setHumings1;yvo.setMimas2;yvo.setYue10000;lvo.setHumings1;lvo.setCaozuo注册账号获得10000;lvo.setYue10000;yvo.setShijiannewDate;try{Yhdao.ff2yvo1;Lsdao.ff2lvo1;}catchClassNotFoundExceptione1{e
1.printStackTrace;}catchSQLExceptione1{e
1.printStackTrace;}}}
5.3用户操作模块的实现用户登陆成功后,进入操作选择界面在程序中应用Xzact类
5.
3.1界面样式图3-3用户主界面
5.
3.2功能实现用户登陆成功后,用户可以选择存款、取款、转账、查询历史操作;选择不同的操作会跳转到对应的界面;该部分主要代码如下publicclassXzactextendsJFrameimplementsActionListener{Stringhm=null;Stringmm=null;publicvoidffStringhmStringmm{this.hm=hm;this.mm=mm;f.setLayoutnull;addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}@OverridepublicvoidactionPerformedActionEvente{ife.getSource==JB1{//跳转到存款界面Ckactc=newCkact;c.ffhmmm;}elseife.getSource==JB2{//跳转到取款界面Qkactc=newQkact;c.ffhmmm;}elseife.getSource==JB3{//跳转到转账界面Zzactz=newZzact;z.ffhm;}elseife.getSource=JB4{//跳转到查询历史界面Lsactl=newLsact;l.ffhm;}}}
5.4存款模块的实现用户登录成功后,可进入存取款系统在程序中应用Xzact类
5.
4.1界面样式图3-4用户存款
5.
4.2功能实现用户输入的存款金额,金额不能为负数或字母然后单击存款按钮,会提示存款成功和当前余额;该模块主要代码如下publicclassCkactextendsJFrameimplementsActionListener{Stringhm;Stringmm;publicvoidffStringhmStringmm{this.hm=hm;this.mm=mm;//传递户名和密码addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}@OverridepublicvoidactionPerformedActionEvente{Yhvoyvo=newYhvo;//更新用户表yvo.setHuminghm;yvo.setMimamm;yvo.setYueInteger.parseIntt
1.getText;try{Yhdao.ff2yvo3;}catchClassNotFoundExceptione1{e
1.printStackTrace;}catchSQLExceptione1{e
1.printStackTrace;}Lsvolvo=newLsvo;//更新历史表lvo.setHuminghm;lvo.setCaozuo存款+Integer.parseIntt
1.getText;ListYhvolist=null;try{list=newYhdao.ff;}catchClassNotFoundExceptione2{e
2.printStackTrace;}catchSQLExceptione2{e
2.printStackTrace;}forinti=0;ilist.size;i++{iflist.geti.getHuming.equalshm{lvo.setYuelist.geti.getYue;}}try{Lsdao.ff2lvo1;}catchClassNotFoundExceptione1{e
1.printStackTrace;}catchSQLExceptione1{e
1.printStackTrace;}}}
5.5取款模块的实现用户点击取款按钮,可进行取款操作在程序中应用Qkact类
5.
5.1界面样式图3-5用户取款
5.
5.2功能实现用户输入取款金额,金额不能为负数或字母然后单击取款按钮,如果取款数不大于余额,读取取款数额,将信息写入数据库,提示取款成功和当前余额,否则,提示取款错误该模块主要代码如下publicclassQkactextendsJFrameimplementsActionListener{Stringhm;Stringmm;publicvoidffStringhmStringmm{this.hm=hm;this.mm=mm;addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}@OverridepublicvoidactionPerformedActionEvente{Yhvoyvo=newYhvo;//更新用户表yvo.setHuminghm;yvo.setMimamm;yvo.setYue-Integer.parseIntt
1.getText;try{Yhdao.ff2yvo3;}catchClassNotFoundExceptione3{e
3.printStackTrace;}catchSQLExceptione3{e
3.printStackTrace;}Lsvolvo=newLsvo;//更新历史表lvo.setHuminghm;lvo.setCaozuo取款+Integer.parseIntt
1.getText;ListYhvolist=null;try{list=newYhdao.ff;}catchClassNotFoundExceptione2{e
2.printStackTrace;}catchSQLExceptione2{e
2.printStackTrace;}forinti=0;ilist.size;i++{iflist.geti.getHuming.equalshm{lvo.setYuelist.geti.getYue;}}try{Lsdao.ff2lvo1;}catchClassNotFoundExceptione1{e
1.printStackTrace;}catchSQLExceptione1{e
1.printStackTrace;}}}
5.6转账模块的实现用户点击转账按钮,可进行转载转账操作在程序中应用Zzact类
5.
6.1界面样式图3-6用户转账
5.
6.2功能实现用户需要输入户名和转账金额,户名必须存在且金额不能为负数或字母如果转账数不大于余额,读取转账数额,将信息写入数据库,提示转账成功,否则,提示转账错误该部分主要代码如下publicclassZzactextendsJFrameimplementsActionListener{//用户转账窗口Stringhm;publicvoidffStringhm{this.hm=hm;JB
1.addActionListenerthis;f.setBounds400150385290;f.setLayoutnull;addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}@OverridepublicvoidactionPerformedActionEvente{Yhvoyvo=newYhvo;Yhvoyvo2=newYhvo;yvo.setHumingt
1.getText;yvo
2.setHuminghm;yvo.setMima;yvo
2.setMima;yvo
2.setYue-Integer.parseIntt
2.getText;yvo.setYueInteger.parseIntt
2.getText;try{Yhdao.ff2yvo3;}catchClassNotFoundExceptione2{e
2.printStackTrace;}catchSQLExceptione2{e
2.printStackTrace;}Lsvolvo=newLsvo;lvo.setHumingt
1.getText;lvo.setCaozuo从账户+hm+转入+Integer.parseIntt
2.getText+元;ListYhvolist=null;try{list=newYhdao.ff;}catchClassNotFoundExceptione1{e
1.printStackTrace;}catchSQLExceptione1{e
1.printStackTrace;}forinti=0;ilist.size;i++{iflist.geti.getHuming.equalst
1.getText{lvo.setYuelist.geti.getYue;}}try{Lsdao.ff2lvo1;}catchClassNotFoundExceptione1{e
1.printStackTrace;}catchSQLExceptione1{e
1.printStackTrace;}try{Yhdao.ff2yvo23;}catchClassNotFoundExceptione1{e
1.printStackTrace;}catchSQLExceptione1{e
1.printStackTrace;}Lsvolvo2=newLsvo;lvo
2.setHuminghm;lvo
2.setCaozuo向账户+t
1.getText+转入+Integer.parseIntt
2.getText+元;ListYhvolist2=null;try{list2=newYhdao.ff;}catchClassNotFoundExceptione1{e
1.printStackTrace;}catchSQLExceptione1{e
1.printStackTrace;}forinti=0;ilist
2.size;i++{iflist.geti.getHuming.equalshm{lvo
2.setYuelist
2.geti.getYue;}}try{Lsdao.ff2lvo21;}catchClassNotFoundExceptione1{e
1.printStackTrace;}catchSQLExceptione1{e
1.printStackTrace;}}}
5.7查询历史记录模块的实现用户点击查询历史按钮,可进行查询用户历史操作在程序中应用Lsact类
5.
7.1界面样式图3-7查询历史纪录
5.
7.2功能实现用户单击查询按钮文本框内会显示用户从注册到此时的所有注册、存款、取款、转账等操作的详细信息该部分主要代码如下publicclassLsactextendsJFrameimplementsActionListener{addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}@OverridepublicvoidactionPerformedActionEvente{ListLsvolist=null;try{list=newLsdao.ff;}catchClassNotFoundExceptione1{e
1.printStackTrace;}catchSQLExceptione1{e
1.printStackTrace;}StringBuffersb=newStringBuffer;System.out.printlnlist;sb.append账户+操作时间+操作+账户余额+\n;forinti=0;ilist.size;i++{iflist.geti.getHuming.equalshm{sb.appendlist.geti.getHuming++list.geti.getShijian++list.geti.getCaozuo++\t+list.geti.getYue+;sb.append\n;}}t.setTextsb.toString;}}6发布程序及分包规范可以使用jar.exe把一写文件压缩成JAR文件,来发布我们的应用程序,我们把本Java应用程序中涉及到的类文件压缩成一个JAR文件,即lunwen.jar程序详见附录程序分包及其功能如下Java部分util包基础通用包,可以被所有类调用,包含Allutil.java;vo包公共属性包,与数据库属性对应,包含数据库属性的设定器访问器,包含Lsvo.java和Yhvo.java;dao包处理Java与Oracle的连接和数据交互,包含Lsdao.java和Yhdao.java;action包交互界面的设计和处理用户界面数据的接受与传递,包含Dl.java、Zc.java、Xz.java、Ck.java、Qk.java、Zz.java和Cx.java;Oracle部分创建图表创建用于存储用户信息的yonghu表和存储用户操作记录的lishi表;创建存储过程创建存储过程p_yh和p_ls用于数据的存取;结论随着我国信息产业发展迅速,国内银行之间以及与外国银行之间的竞争也越来越激烈,怎样发展业务以吸引更多顾客是各银行面队的当务之急而存取款帐目管理是银行业务流程过程中十分重要且必备的环节之一,在银行业务流程当中起着相当重要的作用现在银行的业务越来越多,吸引的客户也越来越多怎样消耗最少的资源达到最大的收益就越显重要银行存取款系统是针对普通银行用户的需要而设计银行存取款系统不仅要求操作方便而且要求界面简洁,它还需要实现存取款,用户查询和查询统计功能针对上述情况和要求,采用软件工程的开发原理,依据软件流程过程规范,按照需求分析、概要设计、详细设计、程序编码、测试等过程开发了一个银行账目管理系统采用JAVA作为编程语言,实现了银行存取款系统,完成存取款帐目管理、查询历史等功能参考文献
[1]印晏王行言.Java语言与面向对象程序设计.北京清华大学出版社,
2010.
[2]BruceEckel,ThinkinginJava.北京机械工业出版社
2011.
[3]王保罗,Java面向对象程序设计.北京清华大学出版社
2003.
[4]刘腾红,孙细明,信息系统分析与设计.北京科学出版社
2003.
[5]毕广吉,Java程序设计实例教程.北京冶金工业出版社
2007.致谢在本论文的写作过程中,我的导师给予我大量的指导意见,从选题到开题报告,从写作提纲,到一遍又一遍地指出每稿中的具体问题,严格把关,循循善诱,在此我表示衷心感谢同时我还要感谢在我学习期间给我极大关心和支持的各位老师以及关心我的同学和朋友写作毕业论文是对大学知识的回顾,毕业论文的完成,同样也意味着新的工作生活的开始附录程序Java部分util包/*util包基础通用包*可以被所有类调用*内装通用方法*getConn用于oracle的连接*close用于关闭数据库操作**/packageutil;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;publicclassAllutil{publicstaticConnectiongetConnthrowsClassNotFoundExceptionSQLException{//getConn用于oracle的连接Class.forNameoracle.jdbc.driver.OracleDriver;Stringurl=jdbc:oracle:thin:@localhost:1521:orcl;Stringuser=scott;Stringpw=tiger;Connectionconn=DriverManager.getConnectionurluserpw;returnconn;}//publicstaticvoidmainString[]argsthrowsClassNotFoundExceptionSQLException{//System.out.printlngetConn;//}publicstaticvoidcloseConnectionconnStatementstmtResultSetrsthrowsSQLException{//close用于关闭数据库操作ifconn!=null{conn.close;}ifstmt!=null{stmt.close;}ifrs!=null{rs.close;}}}vo包packagevo;/*vo包用于与数据库内属性对应的基础包通常被dao调用*内装getset方法**/publicclassLsvo{//与数据库内历史表对应privateStringshijian;//操作时间privateStringhuming;//户名privateStringcaozuo;//用户操作privateIntegeryue;//操作金额publicStringgetShijian{//SimpleDateFormatf=newSimpleDateFormatyyyy-MM-ddHH:mm:ss;returnshijian;}publicvoidsetShijianStringshijian{this.shijian=shijian;}publicStringgetHuming{returnhuming;}publicvoidsetHumingStringhuming{this.huming=huming;}publicStringgetCaozuo{returncaozuo;}publicvoidsetCaozuoStringcaozuo{this.caozuo=caozuo;}publicIntegergetYue{returnyue;}publicvoidsetYueIntegeryue{this.yue=yue;}}packagevo;importjava.util.Date;/*vo包用于与数据库内属性对应的基础包通常被dao调用*内装getset方法**/publicclassYhvo{//与数据库内用户表对应privateStringhuming;//户名privateStringmima;//密码privateIntegeryue;//余额privateDateshijian;//注册时间publicStringgetHuming{returnhuming;}publicvoidsetHumingStringhuming{this.huming=huming;}publicStringgetMima{returnmima;}publicvoidsetMimaStringmima{this.mima=mima;}publicIntegergetYue{returnyue;}publicvoidsetYueIntegeryue{this.yue=yue;}publicDategetShijian{returnshijian;}publicvoidsetShijianDateshijian{this.shijian=shijian;}}Dao包packagedao;importjava.sql.CallableStatement;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importutil.Allutil;importvo.Lsvo;publicclassLsdao{publicListLsvoffthrowsClassNotFoundExceptionSQLException{ListLsvolist=newArrayListLsvo;Connectionconn=Allutil.getConn;conn.setAutoCommitfalse;StringBuildersql=newStringBuilderselect*fromlishi;PreparedStatementps=conn.prepareStatementsql.toString;ResultSetrs=ps.executeQuery;//SimpleDateFormatf=newSimpleDateFormatyyyy-MM-ddhh:mm:ss;whilers.next{Lsvolvo=newLsvo;lvo.setShijianrs.getString1;//rs.getDate1lvo.setHumingrs.getString2;lvo.setCaozuors.getString3;lvo.setYuers.getInt4;list.addlvo;}conn.commit;Allutil.closeconnpsrs;returnlist;}publicstaticListLsvoff2LsvolvointremarkthrowsClassNotFoundExceptionSQLException{Connectionconn=Allutil.getConn;CallableStatementcs=conn.prepareCall{callp_ls};//预处理sql语句conn.setAutoCommitfalse;cs.setObject1remark;cs.setObject2lvo.getHuming;cs.setObject3lvo.getCaozuo;cs.setObject4lvo.getYue;cs.execute;conn.commit;Allutil.closeconncsnull;returnnull;}}packagedao;importjava.sql.CallableStatement;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.List;importutil.Allutil;importvo.Yhvo;publicclassYhdao{publicListYhvoffthrowsClassNotFoundExceptionSQLException{ListYhvolist=newArrayListYhvo;Connectionconn=Allutil.getConn;conn.setAutoCommitfalse;StringBuildersql=newStringBuilderselect*fromyonghu;PreparedStatementps=conn.prepareStatementsql.toString;ResultSetrs=ps.executeQuery;whilers.next{Yhvoyvo=newYhvo;yvo.setHumingrs.getString1;yvo.setMimars.getString2;yvo.setYuers.getInt3;yvo.setShijianrs.getDate4;list.addyvo;}conn.commit;Allutil.closeconnpsrs;returnlist;}publicstaticListYhvoff2YhvoyvointremarkthrowsClassNotFoundExceptionSQLException{Connectionconn=Allutil.getConn;CallableStatementcs=conn.prepareCall{callp_yh};//预处理sql语句conn.setAutoCommitfalse;cs.setObject1remark;cs.setObject2yvo.getHuming;cs.setObject3yvo.getMima;cs.setObject4yvo.getYue;cs.execute;conn.commit;Allutil.closeconncsnull;returnnull;}}Action包packageaction;//主界面importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPasswordField;importjavax.swing.JTextField;publicclassDlactextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=-5044882879474382285L;JFramef=newJFrame银行存取款转账系统;JLabell1=newJLabel户名;JTextFieldt1=newJTextField10;JLabell2=newJLabel密码;JPasswordFieldp1=newJPasswordField;JButtonJB1=newJButton登陆;JButtonJB2=newJButton注册;publicvoidff{f.addl1;l
1.setBounds140704030;f.addl2;l
2.setBounds1401204030;f.addt1;t
1.setBounds1907016030;f.addp1;p
1.setBounds19012016030;f.addJB1;JB
1.setBounds1402006030;f.addJB2;JB
1.addActionListenerthis;JB
2.addActionListenerthis;JB
2.setBounds2802006030;f.setBounds400150485350;f.setLayoutnull;addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}publicstaticvoidmainString[]agrs{Dlactd=newDlact;d.ff;}@OverridepublicvoidactionPerformedActionEvente{//TODOAuto-generatedmethodstubStrings1=t
1.getText;//Strings2=p
1.getPassword+;Strings2=String.valueOfp
1.getPassword;ife.getSource==JB2{Zcactz=newZcact;z.ff;}else{//f.setVisiblefalse;Xzactx=newXzact;System.out.printlns1+s2;x.ffs1s2;}}}packageaction;//新用户注册importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.sql.SQLException;importjava.util.Date;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JPasswordField;importjavax.swing.JTextField;importdao.Lsdao;importdao.Yhdao;importvo.Lsvo;importvo.Yhvo;publicclassZcactextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=5527318937044475231L;JFramef=newJFrame账户注册;JLabell1=newJLabel户名;JTextFieldt1=newJTextField10;JLabell2=newJLabel密码;JPasswordFieldp1=newJPasswordField;JLabell3=newJLabel确认密码;JPasswordFieldp2=newJPasswordField;JButtonJB1=newJButton注册;publicvoidff{f.addl1;//户名l
1.setBounds140504030;f.addl2;l
2.setBounds1401004030;f.addt1;t
1.setBounds1905016030;f.addp1;p
1.setBounds19010016030;f.addl3;l
3.setBounds1201506030;f.addp2;p
2.setBounds19015016030;f.addJB1;JB
1.addActionListenerthis;JB
1.setBounds2002206030;f.setBounds400150480350;f.setLayoutnull;addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}//publicstaticvoidmainString[]agrs{//Zcactd=newZcact;//d.ff;//}@OverridepublicvoidactionPerformedActionEvente{//TODOAuto-generatedmethodstubStrings1=t
1.getText;Strings2=String.valueOfp
1.getPassword;Strings3=String.valueOfp
2.getPassword;System.out.printlns2;if!s
2.equalss3{JOptionPane.showMessageDialognull密码输入不一致;return;}else{JOptionPane.showMessageDialognull注册成功;}Yhvoyvo=newYhvo;Lsvolvo=newLsvo;yvo.setHumings1;yvo.setMimas2;yvo.setYue10000;lvo.setHumings1;lvo.setCaozuo注册账号获得10000;lvo.setYue10000;yvo.setShijiannewDate;try{Yhdao.ff2yvo1;Lsdao.ff2lvo1;}catchClassNotFoundExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}catchSQLExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}}}packageaction;//用户主界面importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjavax.swing.JButton;importjavax.swing.JFrame;//用户个人界面publicclassXzactextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=6259280831667305554L;JFramef=newJFrame用户界面;JButtonJB1=newJButton存款;JButtonJB2=newJButton取款;JButtonJB3=newJButton转账;JButtonJB4=newJButton查询历史记录;Stringhm=null;Stringmm=null;publicvoidffStringhmStringmm{this.hm=hm;this.mm=mm;f.addJB1;//户名JB
1.setBounds1005012030;f.addJB2;//户名JB
2.setBounds2505012030;f.addJB3;//户名JB
3.setBounds10010012030;f.addJB4;//户名JB
4.setBounds25010012030;JB
1.addActionListenerthis;JB
2.addActionListenerthis;JB
3.addActionListenerthis;JB
4.addActionListenerthis;f.setBounds400150480350;f.setLayoutnull;addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}//publicstaticvoidmainString[]agrs{//Xzactd=newXzact;//d.ff;//}@OverridepublicvoidactionPerformedActionEvente{//TODOAuto-generatedmethodstub//System.out.printlnzzz+hm+mm;ife.getSource==JB1{Ckactc=newCkact;c.ffhmmm;}elseife.getSource==JB2{Qkactc=newQkact;c.ffhmmm;}elseife.getSource==JB3{Zzactz=newZzact;z.ffhm;}elseife.getSource==JB4{Lsactl=newLsact;l.ffhm;}}}packageaction;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.sql.SQLException;importjava.util.List;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JTextField;importdao.Lsdao;importdao.Yhdao;importvo.Lsvo;importvo.Yhvo;//用户存款小窗口publicclassCkactextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=3515118621002743025L;JFramef=newJFrame用户存款界面;JLabell1=newJLabel存款金额;JTextFieldt1=newJTextField10;JButtonJB1=newJButton存款;Stringhm;Stringmm;publicvoidffStringhmStringmm{this.hm=hm;this.mm=mm;f.addl1;l
1.setBounds90708030;f.addt1;t
1.setBounds1607010030;f.addJB1;JB
1.setBounds1401308030;JB
1.addActionListenerthis;f.setBounds400150385250;f.setLayoutnull;addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}//publicstaticvoidmainString[]agrs{//Ckactc=newCkact;//c.ff;//}@OverridepublicvoidactionPerformedActionEvente{//TODOAuto-generatedmethodstubYhvoyvo=newYhvo;yvo.setHuminghm;yvo.setMimamm;yvo.setYueInteger.parseIntt
1.getText;try{Yhdao.ff2yvo3;}catchClassNotFoundExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}catchSQLExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}Lsvolvo=newLsvo;lvo.setHuminghm;lvo.setCaozuo存款+Integer.parseIntt
1.getText;ListYhvolist=null;try{list=newYhdao.ff;}catchClassNotFoundExceptione2{//TODOAuto-generatedcatchblocke
2.printStackTrace;}catchSQLExceptione2{//TODOAuto-generatedcatchblocke
2.printStackTrace;}forinti=0;ilist.size;i++{iflist.geti.getHuming.equalshm{lvo.setYuelist.geti.getYue;}}try{Lsdao.ff2lvo1;}catchClassNotFoundExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}catchSQLExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}}}packageaction;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.sql.SQLException;importjava.util.List;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JTextField;importdao.Lsdao;importdao.Yhdao;importvo.Lsvo;importvo.Yhvo;//用户取款小窗口publicclassQkactextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=-1643869494402974271L;JFramef=newJFrame用户取款界面;JLabell1=newJLabel取款金额;JTextFieldt1=newJTextField10;JButtonJB1=newJButton取款;Stringhm;Stringmm;publicvoidffStringhmStringmm{this.hm=hm;this.mm=mm;f.addl1;l
1.setBounds90708030;f.addt1;t
1.setBounds1607010030;f.addJB1;JB
1.setBounds1401308030;JB
1.addActionListenerthis;f.setBounds400150385250;f.setLayoutnull;addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}//publicstaticvoidmainString[]agrs{//Qkactc=newQkact;//c.ff;//}@OverridepublicvoidactionPerformedActionEvente{//TODOAuto-generatedmethodstubYhvoyvo=newYhvo;yvo.setHuminghm;yvo.setMimamm;yvo.setYue-Integer.parseIntt
1.getText;try{Yhdao.ff2yvo3;}catchClassNotFoundExceptione3{//TODOAuto-generatedcatchblocke
3.printStackTrace;}catchSQLExceptione3{//TODOAuto-generatedcatchblocke
3.printStackTrace;}Lsvolvo=newLsvo;lvo.setHuminghm;lvo.setCaozuo取款+Integer.parseIntt
1.getText;ListYhvolist=null;try{list=newYhdao.ff;}catchClassNotFoundExceptione2{//TODOAuto-generatedcatchblocke
2.printStackTrace;}catchSQLExceptione2{//TODOAuto-generatedcatchblocke
2.printStackTrace;}forinti=0;ilist.size;i++{iflist.geti.getHuming.equalshm{lvo.setYuelist.geti.getYue;//list.geti.getYue;}}try{Lsdao.ff2lvo1;}catchClassNotFoundExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}catchSQLExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}}}packageaction;//zhuanzhangimportjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.sql.SQLException;importjava.util.List;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JTextField;importdao.Lsdao;importdao.Yhdao;importvo.Lsvo;importvo.Yhvo;publicclassZzactextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=-8838030643284973946L;//用户转账窗口JFramef=newJFrame用户转账界面;JLabell1=newJLabel对方户名;JTextFieldt1=newJTextField10;JLabell2=newJLabel转账金额;JTextFieldt2=newJTextField10;JButtonJB1=newJButton转账;Stringhm;publicvoidffStringhm{this.hm=hm;f.addl1;l
1.setBounds90508030;f.addt1;t
1.setBounds1605010030;f.addl2;l
2.setBounds901008030;f.addt2;t
2.setBounds16010010030;f.addJB1;JB
1.setBounds1401708030;JB
1.addActionListenerthis;f.setBounds400150385290;f.setLayoutnull;addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}//publicstaticvoidmainString[]agrs{//Zzactc=newZzact;//c.ff;//}@OverridepublicvoidactionPerformedActionEvente{//TODOAuto-generatedmethodstubYhvoyvo=newYhvo;Yhvoyvo2=newYhvo;yvo.setHumingt
1.getText;yvo
2.setHuminghm;yvo.setMima;yvo
2.setMima;yvo
2.setYue-Integer.parseIntt
2.getText;yvo.setYueInteger.parseIntt
2.getText;try{Yhdao.ff2yvo3;}catchClassNotFoundExceptione2{//TODOAuto-generatedcatchblocke
2.printStackTrace;}catchSQLExceptione2{//TODOAuto-generatedcatchblocke
2.printStackTrace;}Lsvolvo=newLsvo;lvo.setHumingt
1.getText;lvo.setCaozuo从账户+hm+转入+Integer.parseIntt
2.getText+元;ListYhvolist=null;try{list=newYhdao.ff;}catchClassNotFoundExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}catchSQLExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}forinti=0;ilist.size;i++{iflist.geti.getHuming.equalst
1.getText{lvo.setYuelist.geti.getYue;}}try{Lsdao.ff2lvo1;}catchClassNotFoundExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}catchSQLExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}try{Yhdao.ff2yvo23;}catchClassNotFoundExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}catchSQLExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}Lsvolvo2=newLsvo;lvo
2.setHuminghm;lvo
2.setCaozuo向账户+t
1.getText+转入+Integer.parseIntt
2.getText+元;ListYhvolist2=null;try{list2=newYhdao.ff;}catchClassNotFoundExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}catchSQLExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}forinti=0;ilist
2.size;i++{iflist.geti.getHuming.equalshm{lvo
2.setYuelist
2.geti.getYue;}}try{Lsdao.ff2lvo21;}catchClassNotFoundExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}catchSQLExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}}}packageaction;importjava.awt.TextArea;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;importjava.sql.SQLException;importjava.util.List;importjavax.swing.JButton;importjavax.swing.JFrame;importvo.Lsvo;importdao.Lsdao;//用户历史界面publicclassLsactextendsJFrameimplementsActionListener{privatestaticfinallongserialVersionUID=1L;JFramef=newJFrame用户历史查询;TextAreat=newTextArea15130;//setWrapStyleWord;JButtonJB1=newJButton查询;Stringhm;publicvoidffStringhm{this.hm=hm;f.addt;f.addJB1;JB
1.addActionListenerthis;JB
1.setBounds2902606030;t.setBounds5050600200;f.setBounds400150700350;f.setLayoutnull;addWindowListenernewWindowAdapter{publicvoidwindowClosingWindowEvente{System.exit0;}};f.setVisibletrue;}//publicstaticvoidmainString[]agrs{//Lsactl=newLsact;//l.ff;//}@OverridepublicvoidactionPerformedActionEvente{//TODOAuto-generatedmethodstubListLsvolist=null;try{list=newLsdao.ff;}catchClassNotFoundExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}catchSQLExceptione1{//TODOAuto-generatedcatchblocke
1.printStackTrace;}StringBuffersb=newStringBuffer;System.out.printlnlist;//SimpleDateFormatf=newSimpleDateFormatyyyy-MM-ddHH:mm:ss;sb.append账户+操作时间+操作+账户余额+\n;forinti=0;ilist.size;i++{iflist.geti.getHuming.equalshm{sb.appendlist.geti.getHuming++list.geti.getShijian++list.geti.getCaozuo++\t+list.geti.getYue+;//System.out.printlnlist.geti.getShijian;//SimpleDateFormat//SimpleDateFormatf=newSimpleDateFormatyyyy-MM-ddHH:mm:ss;//System.out.printlnf.formatlist.geti.getShijian;//t.setTextsb.toString;sb.append\n;}}t.setTextsb.toString;}}Oracle部分建表--CreatetablecreatetableLISHIshijianVARCHAR250humingVARCHAR215caozuoVARCHAR2100yueNUMBERtablespaceUSERSpctfree10initrans1maxtrans255storageinitial64Kminextents1maxextentsunlimited;--Create/RecreateprimaryuniqueandforeignkeyconstraintsaltertableLISHIaddconstraint户名外键foreignkeyHUMINGreferencesYONGHUHUMING;--CreatetablecreatetableYONGHUhumingVARCHAR215notnullmimaVARCHAR215yueNUMBERdefault10000shijianDATEtablespaceUSERSpctfree10initrans1maxtrans255storageinitial64Kminextents1maxextentsunlimited;--Create/RecreateprimaryuniqueandforeignkeyconstraintsaltertableYONGHUaddconstraint户名primarykeyHUMINGusingindextablespaceUSERSpctfree10initrans2maxtrans255storageinitial64Kminextents1maxextentsunlimited;存储过程createorreplaceprocedurep_yh--pl/sql存储过程--用于对用户表--进行更新密码和余额操作v_rmarkinnumber--判定操作--v_shijianinvarchar2--//操作时间v_huminginvarchar2--户名v_mimainvarchar2--用户密码v_yueinnumber--//剩余金额is--Localvariablesherebegin--Teststatementshereifv_rmark=1theninsertintoyonghuvaluesv_humingv_mimav_yuesysdate;elsifv_rmark=2thenupdateyonghusetmima=v_mimawherehuming=v_huming;elseupdateyonghusetyue=yue+v_yuewherehuming=v_huming;endif;commit;end;createorreplaceprocedurep_ls--pl/sql存储过程--用于对历史表--进行存储删除操作v_rmarkinnumber--判定操作--v_shijianinvarchar2--//操作时间v_huminginvarchar2--户名v_caozuoinvarchar2--用户操作v_yueinnumber--//操作金额is--Localvariablesherebegin--Teststatementshereifv_rmark=1then--存储insertintolishivaluesto_charsystimestampyyyy-mm-ddhh24:mi:ssv_humingv_caozuov_yue;else--删除deletefromlishiwherehuming=v_huming;endif;commit;end;启动程序老用户新用户登录查询历史转账取款存款。