银行管理系统课程设计报告.docx

上传人:b****4 文档编号:24260362 上传时间:2023-05-25 格式:DOCX 页数:19 大小:229.96KB
下载 相关 举报
银行管理系统课程设计报告.docx_第1页
第1页 / 共19页
银行管理系统课程设计报告.docx_第2页
第2页 / 共19页
银行管理系统课程设计报告.docx_第3页
第3页 / 共19页
银行管理系统课程设计报告.docx_第4页
第4页 / 共19页
银行管理系统课程设计报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

银行管理系统课程设计报告.docx

《银行管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《银行管理系统课程设计报告.docx(19页珍藏版)》请在冰豆网上搜索。

银行管理系统课程设计报告.docx

银行管理系统课程设计报告

仲恺农业工程学院

课程设计

设计题目:

银行储蓄管理系统

姓名方墅东

院(系)计算机科学与工程学院

专业年级计算机科学与技术091班

学号200910214106

指导教师罗慧慧

职称讲师

起止时间2011年6月20日-2011年6月24日

 

仲恺农业工程学院教务处制

 

目录

1概述3

2需求与功能分析3

3概要设计3

4数据库设计5

5关键技术实现8

6数据库安全性控制18

7总结与展望18

参考文献19

 

1概述

现今的社会,资金流动十分频繁。

不单单是企业、产商,个人也不例外。

银行作为一个金融机构,在现代人们的生活中扮演着极其重要的角色。

为生活节奏飞快的现代人提供快速、便捷、高效的理财服务。

伴随着电脑技术的发展,各大银行的储蓄管理系统也随之出现在这一舞台之上。

这次的数据库课程设计我以这一应用环境为背景,应用数据库原理课程所学的数据库设计与关系数据理论,结合实际的操作和设计进行设计。

目标是制定一套合理、有效,规范和实用的银行管理系统,对银行信息进行集中统一的管理。

提高银行工作效率,做到信息的规范管理,科学统计和快速查询。

这次课程设计我所应用的开发环境是windows7,开发工具是SQL2008,所制作数据库在window2000以上操作系统都可以正常运行。

2需求与功能分析

银行储存管理系统要求每一个银行管理者都有一个系统帐号,并且每一个帐号都有密码,系统对用户的添加、管理、存款添加都有管理者执行,而不是由存储用户自己执行。

该系统主要有两部分业务内容:

存款与取款。

取款则可以由储户自己在取款窗口取款,也可以由管理员管理取款操作。

系统扩充的功能有管理员的添加、修改,用户修改密码。

3概要设计

下面为银行存储管理系统的的概要设计:

(1)、系统总体框图:

银行是一个与我们的生活息息相关的部门。

在我们的生活中银行主要办理以下业务:

1,储户开户登记;2,定期存款;3,定期取款;4,活期存款;5,活期取款;6,利息结算7,输出明细账单,8、销户9、管理员的添加与修改。

这些功能都是由管理员来操作的,管理员可以操作管理员信息表、用户个人信息表和用户存储信息表这三个表。

而对于用户,可以单独在端口操作账户查询、取款和修改个人密码。

不管是任何操作,都要先登录核对帐号密码。

 

(2)、数据流程图:

 

4数据库设计

我设计的银行管理系统只有两个实体:

管理员与存储用户。

而管理员只拥有管理员帐号、密码、姓名这三个信息,以方便查询管理员操作记录。

储户则拥有个人信息和存储信息,分为两个表。

个人信息的属性有银行卡号、姓名、身份证号、密码、电话、性别,存储信息有银行卡号、密码、存储数额、存储类型、利息利率、存储日期、已存储时间(年份)、已获得利息、总余额这些信息,其中这里的银行卡号和密码是个人信息表的外键。

由管理员操作用户的开户、存储操作等操作,而用户可以自己进行查询、取款、修改密码。

以下为E-R模型图:

 

各部分E-R图:

关系表(已规范化):

Adminstrator(管理员信息表)

字段名称

含义

类型

长度

是否为空

黙认值

主键

外键

约束

AdNumber

管理员帐号

varchar

10

N

P

主键

AdName

姓名

varchar

10

N

AdPassword

密码

varchar

12

N

Usersmessage(用户个人信息表)

字段名称

含义

类型

长度

是否为空

黙认值

主键

外键

约束

Bankcardnumber

银行卡号

varchar

20

N

P

主键

Name

姓名

varchar

10

N

Password

密码

varchar

20

N

IDcardnumber

身份证号

varchar

20

N

Telephone

电话

varchar

20

N

Sex

性别

nvarchar

1

N

Checkin(‘男’,’女’)

Savemessage(存储信息表)

字段名称

含义

类型

长度

是否为空

黙认值

主键

外键

约束

Bankcardnumber

银行卡号

varchar

20

N

P

主键

UserPassword

密码

varchar

20

N

Savemoney

存储数额

money

8

N

Savestyle

存储类型

varchar

10

N

Accrualrate

利息利率

double

10

N

Savedate

存储日期

datetime

8

N

自动填写当天日期

Savetime

已存储时间(年份)

datetime

Y

公式计算:

(datepart(year,getdate())-datepart(year,[Savedate]))

Interest

已获得利息

Money

Y

公式计算:

(([Savemoney]*[Accrualrate])*(datepart(year,getdate())-datepart(year,[Savedate])))

Allmoney

总余额

Money

Y

公式计算:

([Savemoney]+[Accrualrate]*(datepart(year,getdate())-datepart(year,[Savedate])))

由E-R图转化的关系表

其中,利息、余额、存储时间我采用了公式计算,并检验正确。

由以上关系表在SQL2008中建立了数据库。

5关键技术实现

设计了显示用户个人信息及存储信息的个人信息视图以及只查询用户存储信息的视图和显示管理员信息的管理员视图。

设计了四个触发器,包括两个管理员密码、用户密码设置修改不符合长度的触发器。

一个定期存款未到期不允许取款的触发器,一个余额不足不允许取款的触发器。

设计了添加、修改、删除管理员;用户开户、修改用户个人信息、用户销户(删除个人信息与存储信息)、增加存款存储、用户修改密码用户取款这几个存储过程。

并对关键事务:

用户取款、用户开户、用户修改密码、用户添加存款这几个关键业务做了事务处理,我的方法是将事务的隔离级别设置为为提交读(readuncommitted),防止丢失修改、读脏数据等错误。

具体就是在这些事务前加入settransactionisolationlevelreaduncommitted

具体代码如下:

视图:

由企业管理器直接创建。

触发器:

管理员密码长度触发器:

Createtrigger[dbo].[T1]on[dbo].[admins]forinsert,update

as

declare@AdPasswordvarchar(50)

select@AdPassword=AdPasswordfrominserted

if(len(@AdPassword)<6orlen(@AdPassword)>12)

begin

print'密码长度应在6到12'

ROLLBACKTRANSACTION

End

用户密码长度触发器:

Createtrigger[dbo].[T2]on[dbo].[Usermessage]forinsert,update

as

declare@UserPasswordvarchar(50)

select@UserPassword=UserPasswordfrominserted

if(len(@UserPassword)<6orlen(@UserPassword)>12)

begin

print'密码长度应在到6到12’

ROLLBACKTRANSACTION

End

定期存款取款限定:

Createtrigger[dbo].[T4]on[dbo].[UserSavemessage]forupdate

as

declare@Savetimemoney

declare@Savestylevarchar(50)

select@Savetime=Savetimefrominserted

select@Savestyle=Savestylefrominserted

if(@Savestyle='定期三年'and@Savetime<3)

begin

print'储蓄时间不足年,无法取款'

rollbacktransaction

end

else

if

(@Savestyle='定期五年'and@Savetime<5)

begin

print'储蓄时间不足年,无法取款'

rollbacktransaction

end

余额不足触发器:

Createtrigger[dbo].[T3]on[dbo].[UserSavemessage]forupdate

as

declare@allmoneymoney

select@allmoney=allmoneyfrominserted

if(@allmoney<1)

begin

print'余额不足!

'

rollbacktransaction

end

存储过程:

添加管理员存储过程:

createprocedure[dbo].[AdminAdd]

(@AdNumber[varchar](50),@AdName[varchar](50),@AdPassword[varchar](50)

asinsertinto[admins]

(AdNumber,AdName,AdPassword

values

(@AdNumber,@AdName,@AdPassword

删除管理员存储过程:

createprocedure[dbo].[Admindelete]

(@AdNumber[varchar](50)

asdelete[admins]

where([AdNumber]=@AdNumber)

修改管理员信息存储过程:

createprocedure[dbo].[AdminModify]

(@AdNumber[varchar](50),@AdName[varchar](50),@AdPassword[varchar](50)

asupdate[admins]

setAdName=@AdName,AdPassword=@AdPassword

where(AdNumber=@AdNumber)

用户开户(录入用户个人信息):

settransactionisolationlevelreaduncommitted

Createprocedure[dbo].[UserAdd]

(@Bankcardnumber[varchar](50),@Name[varbinary](50),@UserPassword[varchar](50),

@IDcardnumber[varchar](50),@Telephone[varchar](50),@Sex[varchar]

(1),

@Savemoney[money],@Savestyle[varchar](50),@Accrualrate[float],@Savedate[datetime]

as

insertinto[Usermessage]

(Bankcardnumber,Name,UserPassword,IDcardnumber,Telephone,Sex

values

(@Bankcardnumber,@Name,@UserPassword,@IDcardnumber,@Telephone,@Sex

insertinto[UserSavemessage]

(Savemoney,Savestyle,Accrualrate,Savedate

values

(@Savemoney,@Savestyle,@Accrualrate,@Savedate

用户销户(删除个人信息与存储信息):

createprocedure[dbo].[UserDetele]

(@Bankcardnumber[varchar](50)

as

delete[Usermessage]

where(Bankcardnumber=@Bankcardnumber)

delete[UserSavemessage]

where(Bankcardnumber=@Bankcardnumber)

修改用户个人信息存储过程:

createprocedure[dbo].[UserModify]

(@Bankcardnumber[varchar](50),@Name[varchar](50),@UserPassword[varchar](50),

@IDcardnumber[varbinary](50),@Telephone[varchar](50),@Sex[varchar]

(1)

asupdate[Usermessage]

setName=@Name,UserPassword=@UserPassword,IDcardnumber=@IDcardnumber,

Telephone=@Telephone,Sex=@Sex

where(Bankcardnumber=@Bankcardnumber)

用户取款:

settransactionisolationlevelreaduncommitted

Createprocedure[dbo].[getmoney]

(@Bankcardnumber[varchar](50),@getmoney[money])

asupdate[UserSavemessage]

setSavemoney=Savemoney-@getmoney

where(@Bankcardnumber=Bankcardnumber)

增加存款存储过程:

settransactionisolationlevelreaduncommitted

createprocedure[dbo].[addsavemoney]

(@Bankcardnumber[varchar](50),@Savemoney[money])

asupdate[UserSavemessage]

setSavemoney=Savemoney-@Savemoney

where(@Bankcardnumber=Bankcardnumber)

用户修改密码:

settransactionisolationlevelreaduncommitted

createprocedure[dbo].[Usermodifypassword]

(@Bankcardnumber[varchar](50),@UserPassword[varchar](50)

asupdate[Usermessage]

setUserPassword=@UserPassword

where(Bankcardnumber=@Bankcardnumber)

 

触发器SQL脚本测试结果如下:

余额不足的触发器SQL脚本测试结果:

密码长度限定触发器SQL脚本测试结果:

给出增添、修改、删除、取款等不同操作的存储过程的SQL脚本测试结果,存储过程其余结果类似:

添加管理员存储过程SQL脚本语言测试结果:

取款操作的存储过程测试结果:

取款前:

取款后:

修改用户信息存储过程脚本测试结果:

修改前:

修改后:

删除用户的存储过程:

执行前:

执行后:

6数据库安全性控制

设置了admin的用户,拥有所有架构和权限。

以管理数据库

设置了boss和yinhangwork两个角色,boss有对admins表的所有权限(修改、增加、查询),对usersavemessage表的查询操作权限,以方便查询统计业务。

Yinhangwork可以对usersavemessage和usermessage表的所有操作,管理业务。

7总结与展望

这次的数据库课程设计,我选择做银行储蓄系统,一开始觉得自己数据库原理学得不错,做起来很简单,但是真正开始入手做了才发现做起来确实困难重重,尤其是自己第一次独立设计一个数据库。

从需求分析阶段开始,我就花了不少时间在网上搜索查找资料,想尽量地把这个系统做得完善。

在充分了解了课程设计要求以及这个银行存储管理系统的需求之后,我花了一天多的时间画数据流图、结构框图已经E-R图,再从中得到了我所需要设计的关系表,经过思考和测试后,把关系表进行了一些优化。

接下来便是数据库的设计了,我通过关系表在SQL2008中创建了我的银行管理系统的数据库。

通过分析,做了视图、触发器、各个功能的存储过程,不断完善我的数据库。

途中也遇到了一些问题,一开始不太理解触发器的定义,以为利息计算可以利用触发器,可是是错的,它只能用在插入、修改和删除操作过程中,通过查找最后我变换了方案,利息计算用属性的公式计算就可以了,可能很简单地得出。

经过不断地测试和不断地改进,我把这次的课程设计的系统逐步完善了。

当然,这个系统还存在不少不足的地方,例如没有把权限分得更深化,毕竟银行是一个大系统。

例外有些操作可能实际用起来会比较繁琐。

总之,这次的课程设计我的收获非常的大,学到的不仅是知识还有认真不断认识问题解决问题的精神。

参考文献

石玉强、闫大顺、《数据库原理及应用》石玉强、闫大顺

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1