计算机数据库课程设计银行管理系统.docx
《计算机数据库课程设计银行管理系统.docx》由会员分享,可在线阅读,更多相关《计算机数据库课程设计银行管理系统.docx(25页珍藏版)》请在冰点文库上搜索。
计算机数据库课程设计银行管理系统
银行管理系统
1.课程设计的目的
应用对数据库系统概论的理论学习,通过上机实践的方式将理论知识与实践更好的结合起来,巩固所学知识。
实践和巩固在课堂教学中学习的关于数据库的有关知识,熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。
实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库银行管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计打下基础。
2.设计方案论证
2.1问题提出
银行是一个国家正常运转必不可缺的机构,当今社会,几乎是每个人都会涉及到储蓄业务,为此,为方便用户查询和使用各种业务,可用计算机为工具对查询管理为一体的各种服务。
当然,这样的一个银行储蓄业务系统就应运而生了。
本系统是一个简单的储蓄系统,可以对储户的信息进行查询修改以及删除。
2.2可行性研究
2.2.1技术可行性
[1]硬件环境:
CPU:
2.0GH以上
内存:
2GB以上
[2]软件环境:
操作系统:
MecrosoftWindowsXP
运行环境:
SQLServer2005
建模工具:
MicrosoftVisio,word编辑器
2.2.2运行可行性
当今社会所有的银行使用计算机数据库来做管理。
我们通过该课程设计,应该达到的目的是把数据库理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。
本系统是银行用户的存取款系统。
主要功能是管理各个用户存取款的相关数据。
储户填写的存款单或取款单输入系统,如果是存款,则系统记录存款人姓名,住址(或电话号码),身份证号码,存款类型,存款金额,存款日期等信息,并打印存单给储户;如果是取款,则需要输入帐号、取款金额等信息,核对正确后系统打印出清单给储户。
2.3需求分析
2.3.1需求分析
对于用户部分,能够新建和删除用户,在操作过程中可以更改用户;对于账户部分,可以查询用户的信息,包括各种基本信息、活期余额、定期账单等;对于账户操作部分,有活期存取款、定期存取款操作,另外操作完成之后存储相应的操作记录并能够查询操作记录等功能。
应用计算机管理后,由于计算机能存贮大量的数据,而且数据只要一次存入,便可多次重复使用,所以管理数据达到完整,统一,原始记录能保证及时,准确。
2.3.2数据字典
银行管理系统数据流图中,数据信息和处理过程需要通过数据字典才能描述清楚。
在定义的银行数据库管理系统数据字典中,主要对数据流图中的账户信息
定期历史操作记录定期存款定期取款活期操作进行说明。
【1】数据需求的描述
(1)数据项名称:
帐号
含义说明:
惟一标识一个用户
类型:
数字型
长度:
20
逻辑关系:
不允许为空
(2)数据项名称:
开户人姓名
类型:
字符型
长度:
20
逻辑关系:
不允许为空
(3)数据项名称:
账户密码
类型:
数字型
长度:
6
逻辑关系:
不允许为空
(4)数据项名称:
身分证号
类型:
数字型
长度:
20
逻辑关系:
不允许为空
(5)数据项名称:
账户余额
类型:
数字型
逻辑关系:
不允许为空
(6)数据项名称:
开户日期
类型:
数字型
逻辑关系:
不允许为空
(7)数据项名称:
开户地址
类型:
字符型
长度:
30
逻辑关系:
不允许为空
(8)数据项名称:
利息
类型:
数字型
逻辑关系:
不允许为空
(9)数据项名称:
金额
含义说明:
可以表示为存入和支出
类型:
数字型
逻辑关系:
不允许为空
(10)数据项名称:
存入日期
类型:
数字型
逻辑关系:
不允许为空
(11)数据项名称:
存款人姓名
类型:
字符型
长度:
10
逻辑关系:
不允许为空
(12)数据项名称:
存储年份
类型:
数字型
逻辑关系:
不允许为空
(13)数据项名称:
存储利率
类型:
float型
逻辑关系:
不允许为空
(14)数据项名称:
取款人姓名
类型:
字符型
长度:
10
逻辑关系:
不允许为空
【2】.数据结构的描述
(1)数据名字:
注册申请表
数据来源:
储户
数据目的:
储户信息
数据组成:
姓名+密码+住址+身份证号码
(2)数据名字:
储户信息表
数据来源:
储户
数据目的:
身份验证
数据组成:
姓名+密码+住址+身份证号码+现有金额
(3)数据名字:
利息清单
数据来源:
系统
数据目的:
储户
数据组成:
利息+姓名+取款时间
(4)数据名字:
存单
数据来源:
存款信息表
数据目的:
储户
数据组成:
姓名+到期时间+存入类型+存入时间+利率+存入金额
(5)数据名字:
取款单
数据来源:
储户
数据目的:
取款信息表
数据组成:
姓名+到期时间+存入类型+存入时间+利率+取款金额+身份证号
(6)数据名字:
存款单
数据来源:
储户
数据目的:
存款信息表
数据组成:
姓名+到期时间+存入类型+存入时间+利率+存入金额+身份证号
【3】.数据存储描述
(1)数据存储名称:
储户基本表
含义说明:
存放储户的有关信息
组成结构:
储户信息包括账号,姓名,密码,身份证号,性别,帐户余额,开户日期,开户地址。
说明:
储户帐号具有惟一性和非空性。
(2)数据存储名称:
活期存取款表
含义说明:
存放活期存取款的信息
组成结构:
活期存取款包括帐号,金额,办理日期,利息,账户余额;
说明:
帐号具有惟一性和非空性.
(3)数据存储名称:
定期存款表;
含义说明:
存放定期存款的信息
组成结构:
帐号,存款人姓名,金额,存储年份,年利率,存储日期
说明:
帐号,存储日期,存储年份,年利率具有惟一性和非空性.
(4)数据存储名称:
定期取款表;
含义说明:
存放定期取款的信息
组成结构:
帐号,取款人姓名,取款金额,取款日期.
说明:
帐号,取款人姓名,取款日期具有惟一性和非空性.
(5)数据存储名称:
定期记录表
含义说明:
存放定期存取款的信息
组成结构:
帐号,存取款人姓名,操作金额,年份,操作日期
说明:
帐号,操作日期具有惟一性和非空性.
2.4概念结构设计
2.4.1概念结构设计的方法
概念设计阶段采用自底向上的方法,即自顶向下的进行需求分析,然后再自底向上的进行概念结构设计。
对已经细化到无法再分的阶段逐步集成在一起,最终合成一个全局概念模式。
2.4.2概念结构设计的步骤
第一步是进行局部视图的设计:
由于高层的数据流图只能反映系统的概貌,而中层流图能较好的反映系统中各局部应用的子系统组成。
因此先逐一的设计分E-R图。
第二步是进行视图的集成:
各子系统的E-R图设计好之后,下一步就是要将所有的分E-R图合成一个系统的总E-R图,一般有两个方式,多个分E-R图一次集成,另一种是一次集成两个分E-R图。
我想采用一次集成多个分E-R图的方式。
2.4.3数据抽象与局部视图设计
图1银行基本信息实体图图2储户基本信息实体图
图3定期记录基本信息实体图
图4合并部分视图生成E-R图
2.5逻辑结构设计
2.5.1E-R图向关系模型的转换
(1)一个1:
1联系可转换为一个独立的关系模式,可以与任意一端对应的关系模式合并;
(2)一个1:
n联系可以转换为独立的关系模式,也可以与n端对应的关系模式合并;
(3)一个m:
n联系转换为一个关系模式。
与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,各实体的码组成关系的码或关系码的一部分;将实体转化为关系模式。
由E-R图转换成关系模式
储户(帐号,姓名,密码,身份证号,性别,帐户余额,开户日期,开户地址);
活期存取款(nID,帐号,金额,办理日期,利息,账户余额);
定期存款(nID,帐号,存款人姓名,金额,存储年份,年利率,存储日期);
定期取款(nID,帐号,取款人姓名,取款金额,取款日期);
定期记录(nID,帐号,存取款人姓名,操作金额,操作类型,操作日期)
2.5.2判断每个表分别属于第几范式
(1)由储户表(姓名,账号,密码,身份证号,性别,帐户余额,开户日期,开户地址)写出数据依赖:
储户姓名→身份证号,储户姓名→账号,储户姓名→地址
该表中的各个元组都不可再分、并且无部分函数依赖和传递函数依赖、主码都是候选码,所以该表满足BCNF范式。
(2)由活期存取款表(序号,利息,帐号,金额,办理日期,账户余额);
写出数据依赖:
利息→帐号,利息→办理日期,利息→金额
该表中的每个元组都不可再分、并且无部分函数依赖和传递函数依赖、主码都是候选码,所以该表也满足BCNF范式。
(3)由定期存款表(序号,年利率,帐号,存款人姓名,金额,存储年份,存储日期)写出数据依赖:
年利率→存储年份,年利率→存储日期,
该表中每个元组都不可再分并且无部分函数依赖和传递函数依赖、主码都是候选码,所以该表同样满足BCNF范式。
(4)由定期取款表(序号,取款人姓名,帐号,取款金额,取款日期)写出数据依赖:
取款人姓名→帐号
该表中各个元组都不可再分同样无部分函数依赖和传递函数依赖并且主码都是候选码,所以该表同样满足BCNF范式。
(5)由定期记录表(序号,存取款人姓名,帐号,操作金额,操作类型,操作日期)写出数据依赖:
存取款人姓名→帐号
2.5.3数据库的结构
表1储户表
序号
字段名称
字段描述
数据类型
长度
属性
1
CNo
帐号
int
20
PK
2
CName
开户人姓名
Varhcar
20
非空
3
CPassword
登录密码
int
6
非空
4
CID
身份证号
int
20
非空
5
CSex
性别
Char
2
非空
6
CBalance
帐户余额
int
8
非空
7
CDate
开户日期
datetime
8
非空
8
CAddress
开户地址
Varchar
30
非空
主键:
帐号;
约束条件:
各属性均非空,密码长度为6位;
表2活期存取款表
序号
字段名称
字段描述
数据类型
长度
属性
1
nID
序号
Int
4
PK
2
CNo
帐号
int
20
非空
3
CMoney
操作金额
int
8
非空
4
CDate
操作日期
Datetime
8
非空
5
CInterest
利息
int
8
非空
6
CBalance
帐户余额
int
8
非空
主键:
nID;外键:
帐号;被参照表:
储户表
约束条件:
各属性均非空;
表3定期存款表
序号
字段名称
字段描述
数据类型
长度
属性
1
nID
序号
Int
4
PK
2
CNo
帐号
int
20
非空
3
CName
存款人姓名
Varchar
10
非空
4
CMoney
存款金额
int
8
非空
5
CDate
存款日期
Datetime
8
非空
6
CYear
存储年份
Int
4
非空
7
CRate
存储利率
Float
8
非空
主键:
nID;外键:
帐号;被参照表:
储户表
约束条件:
各属性均非空;
表4定期取款表
序号
字段名称
字段描述
数据类型
长度
属性
1
nID
序号
Int
4
PK
2
CNo
帐号
int
20
非空
3
CName
取款人姓名
Varchar
10
非空
4
CMoney
取款金额
int
8
非空
5
CDate
取款日期
Datetime
8
非空
主键:
nID;外键:
nID;被参照表:
定期存款表
约束条件:
各属性非空
表5定期操作记录表
序号
字段名称
字段描述
数据类型
长度
属性
1
nID
序号
Int
4
PK
2
CNo
帐号
int
20
非空
3
CName
存取款人姓名
char
8
非空
4
CStyle
操作类型
Char
4
非空
5
CMoney
存取款金额
int
8
非空
6
CDate
存取款日期
Datetime
8
非空
主键:
nID;外键:
nID;被参照表:
定期存款表,定期取款表
约束条件:
各属性非空
2.5.4创建基本表
提高查询速度,分别为各表经常查询的列建立索引。
(1)为chuhu(储户表)中的cno属性建立唯一索引cno:
CREATEUNIQUEINDEXcno_indexonchuhutable(cno);
(2)为Hcq(活期存取款表)中nid属性建立唯一索引nid:
CREATEUNIQUEINDEXnid_indexONHcq(nid);
(3)为dqcun(定期存款表)中nid属性建立降序唯一索引niddesc:
CREATEUNIQUEINDEXniddescONdqcun(niddesc);
(4)为dqqu(定期取款表)中nid属性建立升序唯一索引nidasc:
CREATEUNIQUEINDEXnidascONdqqu(nidasc);
(5)为dqjilu(定期记录表)中nid属性建立降序唯一索引niddesc:
CREATEUNIQUEINDEXniddescONdqjilun(niddesc);
数据的载入是一个非常繁杂和重要的过程需要很大的工作量,可分为人工输入与其它格式数据文件导入。
该系统只是一个简单的实验系统,所以采用手工输入少量的数据可满足实验要求即可。
分别给储户基本信息表,活期存取款基本信息表,定期存款基本信息表,定期取款基本信息表和定期操作记录基本信息表输入数据。
下面若干个表分别显示了所要求的表基本信息息的录入和显示的结果
(1)创建储户表
Createtablechuhu
(CNointprimarykey,
CNamechar(20)notnull,
CPasswordintnotnull,
CIDintnotnull,
CAddresschar(20)notnull,
CBalanceintnotnull,
CDatedatetimenotnull,
CSexchar
(2)notnull,
)
图5利用查询编辑器创建储户信息表
图6储户信息表
(2)创建活期存取款表
CreatetableHcq
(nIDintprimarykey,
CNointnotnull,
CMoneyintnotnull,
CBalanceintnotnull,
CDatedatetimenotnull,
CInterestintnotnull,
)
图7利用查询编辑器创建活期存取款表
图8活期存取款表
(3)创建定期存款表
Createtabledqcun
(nIDintprimarykey,
CNointnotnull,
CNamechar(10)notnull,
CMoneyintnotnull,
Cratefloatnotnull,
CYearintnotnull,
CDatedatetimenotnull,
)
图9利用查询编辑器创建定期存款表
图10定期存款表
(4)创建定期取款表
Createtabledqqu
(nIDintprimarykey,
CNointnotnull,
CDatedatetimenotnull,
CMoneyintnotnull,
CNamechar(20)notnull,
)
图11利用查询编辑器创建定期取款表
图12定期取款表
(5)定期操作记录表
Createtabledqjilu
(nIDintprimarykey,
CNointnotnull,
CDatedatetimenotnull,
CStylechar(4)notnull,
CMoneyintnotnull,
CNamechar(8)notnull,
)
图13利用查询编辑器创建定期操作记录表
图14定期操作记录表
2.5.5为系统创建视图
(1)储户表的视图
图15储户表的视图
(2)活期存取款表的视图
图16活期存取款表的视图
(3)定期存款表的视图
图17定期存款表的视图
(4)定期取款表的视图
图18定期取款表的视图
(5)定期操作记录的视图
图19定期操作记录的视图
3.设计结果及分析
3.1查询与结果分析
(1)查询储户姓名为王刚的用户的信息
结果为:
图20查询储户姓名为王刚的用户的信息
(2)查询操作金额为85000元用户的帐号
结果为:
图21查询操作金额为85000元用户的帐号
(3)查询定期存取款表中序号为1的用户的名字
结果为:
图22查询定期存取款表中序号为1的用户的名字
(4)为储户表插入一条数据(10012365,张朋,000236,31426003017,鞍山,64,2003-12-20,男)的信息
结果为:
图23为储户表插入一条数据信息
(5)创建角色u1并将对储户表查询,修改和插入的功能赋给角色u1
createroleu1
grantselect,update,insert
onchuhu
tou1
结果为:
图24创建角色u1并将对储户表查询,修改和插入的功能赋给角色u1
(6)收回角色u1储户表修改的功能
revokeupdate
onchuhu
fromu1
结果为:
图25收回角色u1储户表修改的功能
(7)删除角色u1
结果为:
图26删除角色u1
(8)建立触发器,当向储户表插入新信息后,打印出又添加了一个供应商信息字样
结果为:
图27建立触发器
(9)创建查看一个储户的基本信息的存储过程
结果为:
图28创建存储过程
4设计体会
这次银行管理系统课程设计,我主要采用是MicrosoftSQLSevere2005数据库设计软件。
通过这次课程设计,加深了我对课程设计的理解。
通过这次数据库课程设计,真正达到了学与用的结合,增强了对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,在实验过程中,从建立数据开始,对数据库设计理念及思想上有了更高的认识,从需求分析,到概念设计和逻辑设计,E-R图的表示,数据字典的创建,我懂得了不少数据库开发过程中的知识,在实验中建表,及其关系模式,关系代数的建立和理解,增强了自己在数据库中应用SQL语言的灵活性,其中包括插入、删除、修改、查询,牵涉表与表之间的联系,主键与外键的定义约束项的设置,使逻辑更严密。
在整个学习与设计过程中,在课程设计过程中不免遇到各种各样的困难,通过与同学间的探讨,查阅资料解决困难,增强了自己的自学能力.这次课程设计让我知道了什么叫做付出才有回报.这次课程设计给了我一个锻炼自己,强化专业知识的机会,通过这次课程设计,我相信,只要认真学习,多借鉴别人的经验,多思考,多实践,最后就能成功了。
在实验中我上网查阅了不少参考资料,并学以致用,自我创新,从学到用又从用到学,不断修改,同时加强了自己对理论知识的学习与理解,这对完善系统设计有很大帮助。
总之在这次设计过程中我受益匪浅,为以后工作打下了坚实的基础
此次设计的银行管理系统实现的功能还很有限,都是些基本的功能,还有很多改进完善的地方,比如办理信用卡的业务,此次只是办理的银行储蓄卡的业务;实现帐号密码变更的功能,查询列出同一用户多个帐户的功能。
这些功能等以后再添加了,因为这次课程设计时间有限,所以完成的功能也就很有限,但感觉收获很大,很有成就感。
5.参考文献
[1]范立南,刘天惠,周力等主编的SQLServer2005实用教程,清华大学出版社
[2]成先海.数据库基础与应用SQLSever2000,机械工业出版社。
[3]周山夫,黄京莲.数据库应用程序设计,清华大学出版社。
[4]孙瑜.数据库系统基础,人民邮电出版社。
[5]杨海霞,南志红.数据库实验指导,人民邮电出版社。
[6]石岩.数据库技术与应用,哈尔滨工业大学出版社。
[7]周山夫,黄京莲.数据库应用程序设计,清华大学出版社