《银行账户管理系统实验报告文档.pdf》由会员分享,可在线阅读,更多相关《银行账户管理系统实验报告文档.pdf(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 课 程 设 计 课程名称:JAVA课程设计 设计题目:银行账户管理系统 学 院:信息工程与自动化 专 业:计算机科学与技术 年 级:2009 级 学生姓名:*指导教师:*日 期:2012.09 教 务 处 制 1 课 程 设 计 任 务 书 信息工程与自动化 学院 计算机科学与技术 专业 年级 学生姓名:课程设计题目:银行账户管理系统 课程设计主要内容:本例是模拟银行账户的管理,开发一个银行个人账户管理系统银行账户管理系统。设计的指导思想是一切为使用者着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的管理系统要有良好的容错性,在出现误操作时能尽量及时地给出警告,以便用户及时地改正。计
2、算机的资源是受到限制的,设计出功能强大的软件,同时要尽可能地减少对系统资源的占用。鉴于本系统的特殊性,还需要本程序有良好的保密 性。设 计 指 导 教 师(签字):教 学 基层组织负责 人(签字):年 月 日 2 摘要 本例是模拟银行账户的管理,开发一个银行个人账户管理系统银行账户管理系统。设计的指导思想是一切为使用者着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的管理系统要有良好的容错性,在出现误操作时能尽量及时地给出警告,以便用户及时地改正。计算机的资源是受到限制的,设计出功能强大的软件,同时要尽可能地减少对系统资源的占用。鉴于本系统的特殊性,还需要本程序有良好的保密性。银行账户
3、管理是银行业务流程中十分重要的且必备的环节,由于银行有大量数据需要处理,全部采用人工方式明显不现实:这不仅需要花费 很高 的 成 本,而且处理 事 务的 效率和质 量 都存 在很 大的 问题,出于这 些问题 的 考虑,使用计算机 来 处理这 类问题就成 为一个 相当 理想的方 案。利用计算机可以 极 大地 降低成 本,更 重要的是可以 几乎没 有错误地 高效 地处理 所 有的 事 务,所 以 做一 款基 于银行账户管理方面的系统是十分必要的。本 次课 程设计 通过 对 银行账户管理系统 中银行业务流程的 基 本实现以及用户环节的 事 务处理,旨 在 体验 数据 库 设计 和 实现的 基 本 过
4、 程中 掌握 数据 库 模式的设计、分 析和 实现方 法,了 解数据 库应 用系统软件开发的一 般过 程。3 目录 一.设计目的.二.设计内容.三概要设计.1功能模块图;.2各个模块详细的功能描述。四详细设计.1功能函数的调用关系图.2重点设计及编码.五测试数据及运行结果.1正常测试数据和运行结果2异常测试数据及运行结果六调试情况,设计技巧及体会1改进方案.2体会.七参考文献.八附录:.4 一.设计目的 银行账户管理是银行业务流程中十分重要的且必备的环节,由于银行有大量数据需要处理,全部采用人工方式明显不现实:这不仅需要花费很高的成本,而且处理事务的效率和质量都存在很大的问题,出于这些问题的考
5、虑,使用计算机来处理这类问题就成为一个相当理想的方案。利用计算机可以极大地降低成本,更重要的是可以几乎没有错误地高效地处理所有的事务,所以做一款基于银行账户管理方面的系统是十分必要的。本次课程设计通过对 银行账户管理系统 中银行业务流程的基本实现以及用户环节的事务处理,旨在体验数据库设计和实现的基本过程中掌握数据库模式的设计、分析和实现方法,了解数据库应用系统软 件开发 的一 般 过程。二.设计 内容 分 别完 成银行业务 功能、ATM 功能 和用户管理 功能,并 设计数据库以 支持 这些 功能 的实现,最后 通过 代码进 行 具 体实现以及数据库 链接。所用数据库:SQL Server 20
6、08 开发语言:Java 数据库设计:使用了 六张表,分 别 为:管理 员表(admin)、ATM 机 表(ATM)、ATM 机出 纳 表(ATMOutIn)、银行 柜台 出 纳表(BankOutIn)、银行 卡表(card)、用户 表(users)。三 个 触发器,分 别 为:冻结 用户账 号操作(userstatus_update)、ATM 机存 取 款 操作(ATMOutIn_insert)和 银行存 取 款 操作(BankOutIn_insert)。一个 视图、一个 虚表:用户 操作查询(allInfo(userId,cunquTime,cunquAddress,cunquMoney,
7、cunq uSummary,balanceMoney))。银行业务 功能:设 置 管理 员 账 号,赋予 管理 员权限 以实现 开 户、销 户、存款、取 款、查询、办卡和 挂失功能。ATM 功能:ATM 机 连接 系统数据库,实现用户 登录、存(取)款以及用户 查询功能。用户管理:通过 登录功能获得 系统数据库中 自己 的用户 信息,并 有 权限修改 系统 允许 用 户 修改 的 信息。5 三概要设计 1功能模块图;2各个模块详细的功能描述。银行业务功能:管理员登录 在 数 据 库 中 添 加 管 理 员 数 据,管 理 员 可 登 录 系 统 并 有 权 限 完 成 与 用户相关所有操作。开
8、户 收集用户信息,为用户分配账号并通过程序在系统数据库中添加用户信息。销户 根据账号在数据库中查找用户,确认用户身份信息后,管理员通过程序删除数据库中用户信息。存款 根据卡号在数据库中查找用户,依据存入金额,管理员通过程序修改数据库中用户的金额信息。取款 根据卡号在数据库中查找用户,通过密码确认用户,依据取出金额,经判断取出金额合法后(不大于余额),管理员通过程序修改数据库中用户的金额信息。查询 以用户卡号、账号或身份证号之一为关键字,在数据库中查找用户,依据业务需求显示用户信息(开户人信息、用户近期操作记录)。办卡 为用户账号绑定卡号,由管理员通过程序将卡号以及用户设 置 的密码存入系统数据
9、库相 应 用户信息中。挂失 根据账号在数据库中查找用户,用户 提供 登录密码确认用户身份信息后,管理员通过程序将数据库中用户卡 状态 信息由“使 用”改为“冻结”。ATM 功能:登录 ATM 机 依据用户卡号 和 密码在系统数据库中查询用户信息,在信息 匹 配的 情况下进 入用户操作 界面。6 存款 ATM 机依据用户存入金额,通过程序修改数据库中用户的金额信息。取款 ATM 机依据取出金额,通过对比本机余额和数据库中用户余额,若金额合法则通过程序修改数据库中用户的金额信息,否则弹出错误信息。用户管理:登录 依据用户账号和密码由管理员或 ATM 机在系统数据库中查询用户信息,在信息匹配的情况下
10、用户获得用户管理权限。查询个人信息 打印数据库中记录的用户个人信息。修改个人信息 收集用户新信息,由管理员操作,修改数据库中用户拥有修改权限的相应数据。查询近期操作 依据用户提供所要查询时间范围,由管理员或 ATM 机通过程序查询系统数据库中用户的操作记录。7 四详细设计 1功能函数的调用关系图 用户类 卡查询 操作 卡密修改 操作 卡操作记 录 查询近期 操作 用户管理 登录方法 用户信息 查询 public static void mian(String args)AdminLoginJFrame()AdminDao 管理员登录界面 ChaxunKaInfo(String userId)K
11、aMimaXiuGai(String cardId)UserLoginJFrame()MainFrame()用户登录界面 KaCaoZuo(String times,String cardId)主界面 ChaXunCaoZuo(Users user)UserGuanLi(String ATMId,String cardId)ATMLoginJFrame()actionPerformed(ActionEvent e)ATM机登录界面 User ChaXun(String car dId)8 2重点设计及编码 数据库设计:create database account use account cr
12、eate table users(userId varchar(10)not null,/*用户账号,主键*/userName varchar(10)not null,/*用户名*/userPassword varchar(10)not null,/*密码*/idNo varchar(20)not null,/*身份证号码,唯一*/userMoney numeric(10,2)default 0,/*总金额,不能小于零*/userStatus varchar(4)check(userStatus=使用 or userStatus=冻结)default 使用,/*用户状态(使用,冻结),默认是使
13、用中*/userAddress varchar(30)not null,/*用户地址*/startTime DateTime,/*开户时间,应该是开户时的系统时间,不应该人为输入*/primary key(userId),/*设置主键*/)-用户的状态一旦变成冻结状态,那么卡也应该不能使用 create trigger userstatus_update on users after update as if update(userStatus)begin if(select userStatus from inserted)=冻结 update card set cardStatus=冻结
14、where userId=(select userId from deleted)if(select userStatus from inserted)=使用 update card set cardStatus=使用 where userId=(select userId from deleted)end create table card(cardId varchar(20)primary key,/*卡号,主键*/userId varchar(10)not null,/*用户账号,外键,参照 users 表的 userId*/cardPassword varchar(10)not nul
15、l,/*卡密码*/9 cardStatus varchar(5)check(cardStatus in(使用,冻结,挂失)default 使用,/*卡状态(使用,冻结,挂失),默认是使用*/-cardMoney numeric(10,2)check(cardMoney=0),foreign key(userId)references users(userId)on delete cascade/*当删除用户帐号时,他的卡号会及联删除*/)-管理员表 create table admin(adminId varchar(10)not null primary key,/*操作员号码,主键*/ad
16、minName varchar(10)not null,/*操作员名字*/adminPassword varchar(20)not null,/*操作员密码*/BankAddress varchar(20)not null/*操作员所在银行地址*/)insert into admin values(001,沈万三,123,工商银行长安分行)-创建一个 ATM 表,至少应该含有编号以及 ATM 机里的总金额 create table ATM(ATMId varchar(10)primary key,/*ATM 机 ID*/ATMMoney numeric(20,2)check(ATMMoney=
17、0),/*ATM 机里的总钱数,不允许用户的取款数大于它的总钱数,所以它的总钱数不能小于*/ATMAddress varchar(20)/*ATM 机的地点*/)insert into ATM values(000,10000,长安区)insert into ATM values(111,50000,长安区)-用户 ATM 机存取款信息表 create table ATMOutIn(ATMId varchar(10),/*取款机号,外键,参照 ATM 表的 ATMId*/cardId varchar(20)not null,/*用户卡号,外键,参照 card 表的 cardId*/ATMTim
18、e DateTime,/*在 ATM 机存取款时间(应该是进行存取款时的系统时间*/ATMCunQu numeric(10,2),/*ATM 机存款金额*/ATMSummary varchar(30),/*存取款摘要*/10 balanceMoney numeric(10,2)default 0,/*经过操作后账号中的金额*/foreign key(ATMId)references ATM(ATMId)on delete cascade,foreign key(cardId)references card(cardId)on delete cascade)-创建一个触发器,当产生这一信息时,账
19、号上的钱也会随之改动 create trigger ATMOutIn_insert on ATMOutIn after insert as declare num_rows int select num_rows=rowcount if num_rows=0/*未插入成功*/return if num_rows 0/*数据插入成功*/begin update users set userMoney=userMoney+(select ATMCunQu from Inserted)where userId in(select userId from card c,inserted i where
20、 c.cardId=i.cardId)update ATM set ATMMoney=ATMMoney+(select ATMCunQu from Inserted)where ATMId in(select ATMId from inserted)/*对应的 atm 机的总金额也会随之改变*/declare balanceMoney numeric(10,2)/*账号余额*/select balanceMoney=(select userMoney from users where userId in(select userId from card c,inserted i where c.
21、cardId=i.cardId)update ATMOutIn set balanceMoney=(balanceMoney)where cardId in(select cardId from inserted)and atmtime in(select atmtime from inserted)/*完成了账号金额的修改,再将新的金额插入到信息表中,就是剩余的总余额了(注意修改的只是一个账号此次的操作*/end-用户银行存取款信息信息表 create table BankOutIn(adminId varchar(10)not null,/*操作员号码,外键,参照操作员表的 adminId
22、*/cardId varchar(20)not null,/*用户卡号,外键,参照用户信息表*/BankTime DateTime,/*银行存款时间*/BankCunQu numeric(10,2),/*银行存款*/BankSummary varchar(30),balanceMoney numeric(10,2)default 0,/*经过操作后账号中的金额*/foreign key(adminId)references admin(adminId)on delete cascade,11 foreign key(cardId)references card(cardId)on delete
23、 cascade)-创建一个触发器,当插入这条数据时会自动修改 users 表里的金额信息 create trigger BankOutIn_insert on BankOutIn for insert as declare num_rows int select num_rows=rowcount if num_rows=0/*未插入成功*/return if num_rows 0/*数据插入成功*/begin update users set userMoney=userMoney+(select BankCunQu from Inserted)where users.userId=(se
24、lect userId from card c,inserted i where c.cardId=i.cardId)declare balanceMoney numeric(10,2)select balanceMoney=(select userMoney from users where userId=(select userId from card c,inserted i where c.cardId=i.cardId)update BankOutIn set balanceMoney=(balanceMoney)where cardId=(select cardId from in
25、serted)and banktime=(select banktime from inserted)/*完成了账号金额的修改,再将新的金额插入到信息表中,就是剩余的总余额了(要注意这个信息总额的唯一性)*/end-总信息可以用其它的表推出,建一个视图,一个虚表,来综合他们的信息 create view allInfo(userId,cunquTime,cunquAddress,cunquMoney,cunquSummary,balanceMoney)as select userId,bankTime,BankAddress,bankCunqu,bankSummary,balanceMoney
26、 from bankoutin b,admin a,card c where b.adminId=a.adminId and c.cardId=b.cardId union select userId,ATMTime,ATMAddress,ATMCunqu,ATMSummary,balanceMoney from atmoutin a,card c,ATM atm where c.cardId=a.cardId and a.atmid=atm.atmid 数据库链接:package com.connection;import java.sql.Connection;12 import java
27、.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;/*定义一个数据库的连接及关闭资源的类*author Administrator*/public class DBConnection/*创建数据库的链接*return 返回一个数据库的链接*/public static Connection getConnection()Connection conn=null;try Class.forName();/加载数据库驱动 Strin
28、g url=String url=;String username=String username=;/数据库用户名 String password=String password=;/数据库密码 conn=DriverManager.getConnection(url,username,password);/获得数据库的链接 catch(ClassNotFoundException e)/TODO Auto-generated catch block e.printStackTrace();catch(SQLException e)/TODO Auto-generated catch blo
29、ck e.printStackTrace();return conn;/*关闭数据库资源*param obj 数据库打开的资源对象(在此处用 Object,因为链接数据库是会打开多个资源)*/public static void closeObject(Object obj)if(obj!=null)13 if(obj instanceof ResultSet)try(ResultSet)obj).close();catch(SQLException e)/TODO Auto-generated catch block e.printStackTrace();if(obj instanceof
30、 PreparedStatement)try(PreparedStatement)obj).close();catch(SQLException e)/TODO Auto-generated catch block e.printStackTrace();-if(obj instanceof Connection)try(Connection)obj).close();catch(SQLException e)/TODO Auto-generated catch block e.printStackTrace();程序入口函数:package com.main;import com.frame
31、.MainFrame;public class Begin/*param args*/public static void main(String args)/TODO Auto-generated method stub new MainFrame();14 五测试数据及运行结果 1正常测试数据和运行结果 管理员登录:登录名:沈万三 登录密码:123 管理员操作:1.查询用户信息 15 2.开户 16 ATM 机操作 1.登录 2.查询 17 2异常测试数据及运行结果 1.查询失败 3.ATM 机存款失败 18 六调试情况,设计技巧及体会 1改进方案 本系统基本实现了银行账户管理的基本功能,不过在细节方面处理的不够完善,细化功能也做的不够好,此外,交互界面美工基本没做。对于此,在接下来的时间里我将对系统不断完善,尽力做到尽善尽美。2体会 在课程设计的两周中,我在数据库设计以及代码编写方面都遇到了不少问题,所幸在同学们的帮助下以及借助网络查找相应问题,总算按时完成了课程设计关于上机的任务。在此过程中我通过数据库设计和实现的基本过程中掌握数据库模式的设计、分析和实现方法,了解数据库应用系统软件开发的 一般 过程,获益匪浅。七 参考文献 数据库系统 原 理 与 应用 孟彩霞、乔平安、张荣 编 著 八 附录:源 码 见电子版