数据库课程设计实验报告-银行账户管理系统
- 格式:doc
- 大小:556.00 KB
- 文档页数:206
数据库课程设计报告
题 目: 银行账户管理系统
院系名称: 计算机学院
专业名称: 软件工程
班 级: 09级01班
学生姓名: ***
学号(8位): *******
指导教师: ***
设计起止时间:2011年12月19日~2011年12月30日
一. 设计目的
银行账户管理是银行业务流程中十分重要的且必备的环节,由于银行有大量数据需
要处理,全部采用人工方式明显不现实:这不仅需要花费很高的成本,而且处理事务的
效率和质量都存在很大的问题,出于这些问题的考虑,使用计算机来处理这类问题就成
为一个相当理想的方案。利用计算机可以极大地降低成本,更重要的是可以几乎没有错
误地高效地处理所有的事务,所以做一款基于银行账户管理方面的系统是十分必要的。
本次课程设计通过对《银行账户管理系统》中银行业务流程的基本实现以及用户环
节的事务处理,旨在体验数据库设计和实现的基本过程中掌握数据库模式的设计、分析 和实现方法,了解数据库应用系统软件开发的一般过程。
二. 设计内容
分别完成银行业务功能、ATM功能和用户管理功能,并设计数据库以支持这些功能的实现,最后通过代码进行具体实现以及数据库链接。
所用数据库:SQL Server 2008
开发语言:Java
数据库设计:使用了六张表,分别为:管理员表(admin)、ATM机表(ATM)、ATM机出纳
表(ATMOutIn)、银行柜台出纳表(BankOutIn)、银行卡表(card)、用户
表(users)。
三个触发器,分别为:冻结用户账号操作(userstatus_update)、
ATM机存取款操作(ATMOutIn_insert)和
银行存取款操作(BankOutIn_insert)。
一个视图、一个虚表:用户操作查询
(allInfo(userId,cunquTime,cunquAddress,cunquMoney,cunq
uSummary,balanceMoney))。
银行业务功能:设置管理员账号,赋予管理员权限以实现开户、销户、存款、取款、查
询、办卡和挂失功能。
ATM功能:ATM机连接系统数据库,实现用户登录、存(取)款以及用户查询功能。
用户管理:通过登录功能获得系统数据库中自己的用户信息,并有权限修改系统允许用
户修改的信息。 三(概要设计
1(功能模块图;
2(各个模块详细的功能描述。
银行业务功能:
, 管理员登录
在数据库中添加管理员数据,管理员可登录系统并有权限完成与
用户相关所有操作。
, 开户
收集用户信息,为用户分配账号并通过程序在系统数据库中添加用户信
息。
, 销户
根据账号在数据库中查找用户,确认用户身份信息后,管理员通过程序删
除数据库中用户信息。
, 存款
根据卡号在数据库中查找用户,依据存入金额,管理员通过程序修改数据
库中用户的金额信息。
, 取款
根据卡号在数据库中查找用户,通过密码确认用户,依据取出金额,经判
断取出金额合法后(不大于余额),管理员通过程序修改数据库中用户的 金额信息。
, 查询
以用户卡号、账号或身份证号之一为关键字,在数据库中查找用户,依据
业务需求显示用户信息(开户人信息、用户近期操作记录)。 , 办卡
为用户账号绑定卡号,由管理员通过程序将卡号以及用户设置的密码存入
系统数据库相应用户信息中。
, 挂失
根据账号在数据库中查找用户,用户提供登录密码确认用户身份信息后,
管理员通过程序将数据库中用户卡状态信息由“使用”改为“冻结”。
ATM功能:
, 登录
ATM机依据用户卡号和密码在系统数据库中查询用户信息,在信息匹配的
情况下进入用户操作界面。
, 存款
ATM机依据用户存入金额,通过程序修改数据库中用户的金额信息。
, 取款
ATM机依据取出金额, 通过对比本机余额和数据库中用户余额,若金额
合法则通过程序修改数据库中用户的金额信息,否则弹出错误信息。
用户管理:
, 登录
依据用户账号和密码由管理员或ATM机在系统数据库中查询用户信息,在
信息匹配的情况下用户获得用户管理权限。
, 查询个人信息
打印数据库中记录的用户个人信息。 , 修改个人信息
收集用户新信息,由管理员操作,修改数据库中用户拥有修改权限的相应
数据。
, 查询近期操作
依据用户提供所要查询时间范围,由管理员或ATM机通过程序查询系统数
据库中用户的操作记录。
四(详细设计
1(功能函数的调用关系图
public static void mian(String[] args){
用户类 AdminLoginJFrame() AdminDao 管理员登录界面
卡查询 ChaxunKaInfo(String userId)
操作
KaMimaXiuGai(String cardId) 卡密修改 UserLoginJFrame() 操作
MainFrame() 用户登录界面 KaCaoZuo(String times,String cardId)
主界面 卡操作记
ChaXunCaoZuo(Users user) 录
查询近期 操作 UserGuanLi(String ATMId,String cardId) 用户管理
ATMLoginJFrame() actionPerformed(ActionEvent e)
ATM机登录界面 登录方法
UserChaXun(String cardId)
用户信息 查询 }
2(重点设计及编码
数据库设计:
create database account use account
create 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 '使用',
/*用户状态(使用,冻结),默认是使用中*/
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 = '冻结' 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 null, /*卡密码*/
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, /*操作员号码,主键*/
adminName 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