银行账户管理系统实验报告文档_第1页
银行账户管理系统实验报告文档_第2页
银行账户管理系统实验报告文档_第3页
银行账户管理系统实验报告文档_第4页
银行账户管理系统实验报告文档_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计课程名称:JAVA课程设计设计题目:银行账户管理系统学院:信息工程与自动化专业:计算机科学与技术年级:2009级学生姓名:***指导教师:****日期:2012.09教务处制

课程设计任务书信息工程与自动化学院计算机科学与技术专业学生姓名:年级课程设计题目:银行账户管理系统课程设计主要内容:本例是模拟银行账户的管理,开发一个银行个人账户管理系统银行账户管理系统。设计的指导思想是一切为使用者着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的管理系统要有良好的容错性,在出现误操作时能尽量及时地给出警告,以便用户及时地改正。计算机的资源是受到限制的,设计出功能强大的软件,同时要尽可能地减少对系统资源的占用。鉴于本系统的特殊性,还需要本程序有良好的保密性。设计指导教师(签字):教学基层组织负责人(签字):年月日1

摘要本例是模拟银行账户的管理,开发一个银行个人账户管理系统银行账户管理系统。设计的指导思想是一切为使用者着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的管理系统要有良好的容错性,在出现误操作时能尽量及时地给出警告,以便用户及时地改正。计算机的资源是受到限制的,设计出功能强大的软件,同时要尽可能地减少对系统资源的占用。鉴于本系统的特殊性,还需要本程序有良好的保密性。银行账户管理是银行业务流程中十分重要的且必备的环节,由于银行有大量数据需要处理,全部采用人工方式明显不现实:这不仅需要花费很高的成本,而且处理事务的效率和质量都存在很大的问题,出于这些问题的考虑,使用计算机来处理这类问题就成为一个相当理想的方案。利用计算机可以极大地降低成本,更重要的是可以几乎没有错误地高效地处理所有的事务,所以做一款基于银行账户管理方面的系统是十分必要的。本次课程设计通过对《银行账户管理系统》中银行业务流程的基本实现以及用户环节的事务处理,旨在体验数据库设计和实现的基本过程中掌握数据库模式的设计、分析和实现方法,了解数据库应用系统软件开发的一般过程。2

目录一.设计目的.二.设计内容.三.概要设计.1.功能模块图;.2.各个模块详细的功能描述。四.详细设计.1.功能函数的调用关系图.2.重点设计及编码.五.测试数据及运行结果.1.正常测试数据和运行结果2.异常测试数据及运行结果六.调试情况,设计技巧及体会1.改进方案.2.体会.七.参考文献.八.附录:.3

一.设计目的银行账户管理是银行业务流程中十分重要的且必备的环节,由于银行有大量数据需要处理,全部采用人工方式明显不现实:这不仅需要花费很高的成本,而且处理事务的效率和质量都存在很大的问题,出于这些问题的考虑,使用计算机来处理这类问题就成为一个相当理想的方案。利用计算机可以极大地降低成本,更重要的是可以几乎没有错误地高效地处理所有的事务,所以做一款基于银行账户管理方面的系统是十分必要的。本次课程设计通过对《银行账户管理系统》中银行业务流程的基本实现以及用户环节的事务处理,旨在体验数据库设计和实现的基本过程中掌握数据库模式的设计、分析和实现方法,了解数据库应用系统软件开发的一般过程。二.设计内容分别完最后通过代码进行具体实现以及数据库链接所用数据库:SQLServer2008:Java数据库设计:使用了六张表,分别为:管理员表(admin)、ATM机表(ATM)、ATM机出纳ATMOutIn)、银行柜台出纳表(BankOutIn)、银行卡表(card)、用户表(users)。三个触发器,分别为:冻结用户账号操作(ATM机存取款操作()和成银行业务功能和用户管理功能,并设计数据库以支持这些功能的实现,、ATM功能。开发语言表(userstatus_update)、ATMOutIn_insertBankOutIn_insert银行存取款操作()。一个视图、一个虚表:用户操作查询allInfo(userId,cunquTime,cunquAddress,cunquMoney,cunq(uSummary,balanceMoney))。银行业务功能:设置管理员账号,赋予管理员权限以实现开户、销户、存款、取款、查询、办卡和挂失功能ATM功能:ATM机连接。系统数据库,实现用户登录、存(取)款以及用户查询功能。用户管理:通过登录功能获得系统数据库中自己的用户信息,并有权限修改系统允许用户修改的信息。4

2.各个模块详细的功能描述。银行业务功能:➢管理员登录在数据库中添加管理员数据,管理员可登录系统并有权限完成与用户相关所有操作。➢开户收集用户信息,为用户分配账号并通过程序在系统数据库中添加用户信息。➢销户根据账号在数据库中查找用户,确认用户身份信息后,管理员通过程序删除数据库中用户信息。➢存款根据卡号在数据库中查找用户,依据存入金额,管理员通过程序修改数据库中用户的金额信息。➢取款根据卡号在数据库中查找用户,通过密码确认用户,依据取出金额,经判断取出金额合法后(不大于余额),管理员通过程序修改数据库中用户的金额信息。➢查询以用户卡号、账号或身份证号之一为关键字,在数据库中查找用户,依据业务需求显示用户信息(开户人信息、用户近期操作记录)。➢办卡为用户账号绑定卡号,由管理员通过程序将卡号以及用户设置的密码存入系统数据库相应用户信息中。➢挂失根据账号在数据库中查找用户,用户提供登录密码确认用户身份信息后,管理员通过程序将数据库中用户卡状态信息由“使用”改为“冻结”。ATM功能:➢登录ATM机依据用户卡号和密码在系统数据库中查询用户信息,在信息匹配的情况下进入用户操作界面。

➢存款ATM机依据用户存入金额,通过程序修改数据库中用户的金额信息。➢取款ATM机依据取出金额,通过对比本机余额和数据库中用户余额,若金额合法则通过程序修改数据库中用户的金额信息,否则弹出错误信息。用户管理:➢登录依据用户账号和密码由管理员或ATM机在系统数据库中查询用户信息,在信息匹配的情况下用户获得用户管理权限。➢查询个人信息打印数据库中记录的用户个人信息。➢修改个人信息收集用户新信息,由管理员操作,修改数据库中用户拥有修改权限的相应数据。➢查询近期操作依据用户提供所要查询时间范围,由管理员或ATM机通过程序查询系统数据库中用户的操作记录。6

四.详细设计1.功能函数的调用关系图publicstaticvoidmian(String[]args){用户类AdminLoginJFrame()AdminDao管理员登录界面ChaxunKaInfo(StringuserId)卡查询操作KaMimaXiuGai(StringcardId)卡密修改操作KaCaoZuo(Stringtimes,StringcardId)UserLoginJFrame()MainFrame()用户登录界面主界面卡操作记录ChaXunCaoZuo(Usersuser)查询近期操作UserGuanLi(StringATMId,StringcardId)用户管理ATMLoginJFrame()actionPerformed(ActionEvente)登录方法ATM机登录界面UserChaXun(StringcardId)用户信息查询}7

2.重点设计及编码数据库设计:createdatabaseaccountuseaccountcreatetableusers(userIdvarchar(10)notnull,/*用户账号,主键*/userNamevarchar(10)notnull,/*用户名*/userPasswordvarchar(10)notnull,/*密码*/idNovarchar(20)notnull,/*身份证号码,唯一*/userMoneynumeric(10,2)default0,/*总金额,不能小于零*/userStatusvarchar(4)check(userStatus='使用'oruserStatus='冻结')default'使用',/*用户状态(使用,冻结),默认是使用中*/userAddressvarchar(30)notnull,/*用户地址*/startTimeDateTime,/*开户时间,应该是开户时的系统时间,不应该人为输入*/primarykey(userId),/*设置主键*/)--用户的状态一旦变成冻结状态,那么卡也应该不能使用createtriggeruserstatus_updateonusersafterupdateasifupdate(userStatus)beginif(selectuserStatusfrominserted)='冻结'updatecardsetcardStatus='冻结'whereuserId=(selectuserIdfromdeleted)if(selectuserStatusfrominserted)='使用'updatecardsetcardStatus='使用'whereuserId=(selectuserIdfromdeleted)endcreatetablecard(cardIdvarchar(20)primarykey,/*卡号,主键*/userIdvarchar(10)notnull,/*用户账号,外键,参照users表的userId*/cardPasswordvarchar(10)notnull,/*卡密码*/8

cardStatusvarchar(5)check(cardStatusin('使用','冻结','挂失'))default'使用',/*卡状态(使用,冻结,挂失),默认是使用*/--cardMoneynumeric(10,2)check(cardMoney>=0),foreignkey(userId)referencesusers(userId)ondeletecascade/*当删除用户帐号时,他的卡号会及联删除*/)--管理员表createtableadmin(adminIdvarchar(10)notnullprimarykey,/*操作员号码,主键*/adminNamevarchar(10)notnull,/*操作员名字*/adminPasswordvarchar(20)notnull,/*操作员密码*/BankAddressvarchar(20)notnull/*操作员所在银行地址*/)insertintoadminvalues('001','沈万三','123','工商银行长安分行')--创建一个ATM表,至少应该含有编号以及ATM机里的总金额createtableATM(ATMIdvarchar(10)primarykey,/*ATM机ID*/ATMMoneynumeric(20,2)check(ATMMoney>=0),/*ATM机里的总钱数,不允许用户的取款数大于它的总钱数,所以它的总钱数不能小于*/ATMAddressvarchar(20)/*ATM机的地点*/)insertintoATMvalues('000',10000,'长安区')insertintoATMvalues('111',50000,'长安区')--用户ATM机存取款信息表createtableATMOutIn(ATMIdvarchar(10),/*取款机号,外键,参照ATM表的ATMId*/cardIdvarchar(20)notnull,/*用户卡号,外键,参照card表的cardId*/ATMTimeDateTime,/*在ATM机存取款时间(应该是进行存取款时的系统时间*/ATMCunQunumeric(10,2),/*ATM机存款金额*/ATMSummaryvarchar(30),/*存取款摘要*/9

balanceMoneynumeric(10,2)default0,/*经过操作后账号中的金额*/foreignkey(ATMId)referencesATM(ATMId)ondeletecascade,foreignkey(cardId)referencescard(cardId)ondeletecascade)--创建一个触发器,当产生这一信息时,账号上的钱也会随之改动createtriggerATMOutIn_insertonATMOutInafterinsertasdeclare@num_rowsintselect@num_rows=@@rowcountif@num_rows=0/*未插入成功*/returnif@num_rows>0/*数据插入成功*/beginupdateuserssetuserMoney=userMoney+(selectATMCunQufromInserted)whereuserIdin(selectuserIdfromcardc,insertediwherec.cardId=i.cardId)updateATMsetATMMoney=ATMMoney+(selectATMCunQufromInserted)whereATMIdin(selectATMIdfrominserted)/*对应的atm机的总金额也会随之改变*/declare@balanceMoneynumeric(10,2)/*账号余额*/select@balanceMoney=(selectuserMoneyfromuserswhereuserIdin(selectuserIdfromcardc,insertediwherec.cardId=i.cardId))updateATMOutInsetbalanceMoney=(@balanceMoney)wherecardIdin(selectcardIdfrominserted)andatmtimein(selectatmtimefrominserted)/*完成了账号金额的修改,再将新的金额插入到信息表中,就是剩余的总余额了(注意修改的只是一个账号此次的操作*/end--用户银行存取款信息信息表createtableBankOutIn(adminIdvarchar(10)notnull,/*操作员号码,外键,参照操作员表的adminId*/cardIdvarchar(20)notnull,/*用户卡号,外键,参照用户信息表*/BankTimeDateTime,/*银行存款时间*/BankCunQunmeric(10,2),/*银行存款*/BankSummaryvarchar(30),balanceMoneynumeric(10,2)default0,/*经过操作后账号中的金额*/foreignkey(adminId)referencesadmin(adminId)ondeletecascade,10

foreignkey(cardId)referencescard(cardId)ondeletecascade)--创建一个触发器,当插入这条数据时会自动修改users表里的金额信息createtriggerBankOutIn_insertonBankOutInforinsertasdeclare@num_rowsintselect@num_rows=@@rowcountif@num_rows=0/*未插入成功*/returnif@num_rows>0/*数据插入成功*/beginupdateuserssetuserMoney=userMoney+(selectBankCunQufromInserted)whereusers.userId=(selectuserIdfromcardc,insertediwherec.cardId=i.cardId)declare@balanceMoneynumeric(10,2)select@balanceMoney=(selectuserMoneyfromuserswhereuserId=(selectuserIdfromcardc,insertediwherec.cardId=i.cardId))updateBankOutInsetbalanceMoney=(@balanceMoney)wherecardId=(selectcardIdfrominserted)andbanktime=(selectbanktimefrominserted)/*完成了账号金额的修改,再将新的金额插入到信息表中,就是剩余的总余额了(要注意这个信息总额的唯一性)*/end--总信息可以用其它的表推出,建一个视图,一个虚表,来综合他们的信息createviewallInfo(userId,cunquTime,cunquAddress,cunquMoney,cunquSummary,balanceMoney)asselectuserId,bankTime,BankAddress,bankCunqu,bankSummary,balanceMoneyfrombankoutinb,admina,cardcwhereb.adminId=a.adminIdandc.cardId=b.cardIdunionselectuserId,ATMTime,ATMAddress,ATMCunqu,ATMSummary,balanceMoneyfromatmoutina,cardc,ATMatmwherec.cardId=a.cardIdanda.atmid=atm.atmid数据库链接:packagecom.connection;importjava.sql.Connection;11

importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;/***定义一个数据库的连接及关闭资源的类*@authorAdministrator**/publicclassDBConnection{/***创建数据库的链接*@return返回一个数据库的链接*/publicstaticConnectiongetConnection(){Connectionconn=null;try{forNameClass.();//加载数据库驱动Stringurl=;Stringusername=;//数据库用户名Stringpassword=;//数据库密码getConnectionconn=DriverManager.(url,username,password);//获得数据库的链接}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(SQLExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}returnconn;}/***关闭数据库资源*@paramobj数据库打开的资源对象(在此处用Object,因为链接数据库是会打开多个资源)*/publicstaticvoidcloseObject(Objectobj){if(obj!=null){12

if(objinstanceofResultSet)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论