数据库课程设计实验报告-银行账户管理系统

  • 格式: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