ATM机数据库设计Word文档下载推荐.docx

上传人:b****4 文档编号:17814121 上传时间:2022-12-10 格式:DOCX 页数:15 大小:77.83KB
下载 相关 举报
ATM机数据库设计Word文档下载推荐.docx_第1页
第1页 / 共15页
ATM机数据库设计Word文档下载推荐.docx_第2页
第2页 / 共15页
ATM机数据库设计Word文档下载推荐.docx_第3页
第3页 / 共15页
ATM机数据库设计Word文档下载推荐.docx_第4页
第4页 / 共15页
ATM机数据库设计Word文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

ATM机数据库设计Word文档下载推荐.docx

《ATM机数据库设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ATM机数据库设计Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

ATM机数据库设计Word文档下载推荐.docx

要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。

设计报告正文字数不少于0.2万字(不包括附录)

时间安排:

消化资料、系统调查?

1天

系统分析、总体设计,实施计划、撰写报告?

3天

演示、验收            1天

指导教师签字:

2011年6月25日

系主任签字:

2011年6月26日

1.问题描述4

1.1背景4

1.2数据需求4

2.方案图表设计4

2.1E-R图4

2.2数据字典7

2.4关系图:

8

3.数据库源代码9

3.1数据库建立9

3.2数据初始化11

4.结果数据处理12

4.1简单查询12

4.2连接查询13

4.3嵌套查询13

4.3统计银行的资金流通余额和盈利结算14

4.4创建触发器14

4.5创建存储过程15

5.结束语17

1.问题描述

1.1背景

通过数据库课程设计,进一步掌握数据库系统的理论和方法。

培养和锻炼开发管理信息系统的能力。

为今后信息系统开发打下良好的基础。

本课程环节主要针对《关系数据库基础与应用》这么课程进行设计,数据库是一门应用性很强的专业课,在学习时必须注意理论与实践相结合。

本次课程环节旨在培养学生在本课程范围内,初步掌握解决实际应用问题时所应具备的查阅资料、综合运用所学知识的能力,为毕业设计及今后从事专业工作打下基础。

本课程环节要求学生了解企业管理信息系统后台数据库的设计、配置过程,掌握管理信息系统的开发方法。

主要包括:

需求分析、数据分析、系统逻辑模型设计方法;

功能设计、物理模型设计方法;

系统的实现等方法。

完成一个小型系统后台数据库的设计与配置。

1.2数据需求

随着社会的日益发展,银行在人们的日常生活扮演者重要的角色。

ATM机给人们的日常生活带来了方便,它出现在各个街道角落里。

ATM数据库系统使自动取款机机高速快捷的工作,不易发生数据丢失,统计错误,使ATM机更加安全方便。

1.3开发及运行环境

操作系统:

MicrosoftWindowsXP

软件平台:

MicrosoftSQLServer2000

硬件环境:

服务器端P4/256MB/80GB以上,客户端PC586/128MB/40MB以上

2.方案图表设计

2.1E-R图

2.1.1用户信息实体E-R图:

 

图2-1用户信息实体E-R图

2.1.2银行卡信息实体E-R图:

图2-2银行卡信息实体E-R图

2.1.3交易信息实体E-R图:

图2-4交易信息实体E-R图

2.1.6总的信息实体E-R图:

图2-7总的信息实体E-R图

2.2数据字典

表2-1 用户信息表userInfo:

字段名称

说明

customerID

顾客编号

自动编号(标识列),从1开始,主键

customerName

开户名

必填

PID

身份证号

必填,只能是18位或15位,身份证号唯一约束

telephone

联系电话

必填,格式为xxxx-xxxxxxxx或手机号13位

address

居住地址

可选输入

表2-2  银行卡信息表cardInfo:

cardID

卡号

必填,主健,银行的卡号规则和电话号码一样,一般前8位代表特殊含义,如某总行某支行等。

假定该行要求其营业厅的卡号格式为:

10103576xxxxxxx开始,每4位号码后有空格,卡号一般是随机产生.

curType

货币种类

必填,默认为RMB

savingType

存款类型

活期/定活两便/定期

openDate

开户日期

必填,默认为系统当前日期

openMoney

开户金额

必填,不低于1元

balance

余额

必填,不低于1元,否则将销户

pass

密码

必填,6位数字,开户时默认为6个“8”

IsReportLoss

是否挂失

必填,是/否值,默认为”否”

外键,必填,表示该卡对应的顾客编号,一位顾客允许办理多张卡号

表2-3 交易信息表transInfo:

transDate

交易日期

必填,外健,可重复索引

transType

交易类型

必填,只能是’存入/支取’

transMoney

交易金额

必填,大于0

remark

备注

可选输入,其他说明

2.3关系图:

数据库存表关系图

3.数据库源代码

3.1数据库建立

3.1.1创建数据库

usemaster

go

ifexists(select*fromsysdatabaseswherename='

ATM'

dropdatabaseATM

go

--创建数据库

createdatabaseATM

onprimary

name=ATM_data,

filename='

d:

\bank\ATM_data.mdf'

size=10mb,

filegrowth=10%,

maxsize=100mb

logon

name=ATM_log,

\bank\ATM_data.ldf'

3.1.2创建用户信息表

createtableuserinfo

customerIDintidentity(1,1)primarykey,

customerNamevarchar(20)notnull,

PIDchar(18)char(18)notnulluniquecheck(PIDlike'

[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

or

PIDlike'

[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

),

telephonechar(15)check(telephonelike'

[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

or

telephonelike'

[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

)notnull,

addressvarchar(50)

3.1.3创建银行卡信息表

createtablecardinfo

cardIDchar(30)check(cardIDlike'

10103576[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

)primarykey,

curTypechar(5)default('

RMB'

savingTypechar(15)check(savingTypelike'

活期'

orsavingTypelike'

定期'

订活两便'

),

openDatedatetimedefault(getdate())notnull,

openMoneymoneycheck(openMoney>

=1)notnull,

balancemoneycheck(balance>

passchar(6)check(passlike'

[0-9][0-9][0-9][0-9][0-9][0-9]'

)default'

888888'

notnull,

IsReportLosschar(8)check(IsReportLosslike'

是'

orIsReportLosslike'

否'

customerIDintuniquenotnull

3.1.4交换信息表

createtabletransinfo

transDatedatetimedefaultgetdate()notnull,

cardIDchar(30)uniquenotnull,

transTypechar(10)check(transTypelike'

存入'

ortransTypelike'

支取'

),

transMoneymoneycheck(transMoney>

0),

remarktext

3.1.5创建联系

altertabletransinfo

addforeignkey(cardID)referencescardinfo(cardID)

altertablecardinfo

addforeignkey(customerID)referencesuserinfo(customerID)

3.2数据初始化

3.2.1向表userinfo中输入数据

INSERTINTOuserInfo(customerName,PID,telephone,address)

3.2.2向cardInfo表中插入数据

INSERTINTOcardInfo(cardID,savingType,openMoney,balance,customerID)

VALUES('

1010357655895986'

'

1000,1000,1)

1010357655244986'

1000,1000,3)

1010357656985987'

1000,1000,2)

1010357621565789'

1000,1000,5)

1010357655895966'

1000,1000,6)

1010357615691856'

1800,1800,4)

1010357655895386'

1000,1000,7)

3.2.3向transInfo表中插入数据

INSERTINTOtransInfo(transType,cardID,transMoney)

900)

600)

5000)

300)

100)

4.结果数据处理

4.1.1查询本周开户的卡号,显示该卡相关信息

4.1.2查询本月交易金额最高的卡号

4.1.3在黄安的卡上取款900元,在张珂的卡上存入5000元

4.1.3统计银行的资金流通余额和盈利结算

declare@inmoney,@outmoney

select@in=sum(transMoney)fromtransInfowheretransType='

select@out=sum(transMoney)fromtransInfowheretransType='

print'

银行流通余额总计为:

'

+convert(varchar(20),@in-@out)+'

盈利:

+convert(varchar(20),(@out*0.008)-(@in*0.003))+'

4.2创建触发器

createtriggerinsert_transType

ontransinfoforinsert--指定了触发对象与触发事件

as

begin

declare@transTypechar(10),@cardIDchar(30)

select@transType=transType,@cardID=cardIDfrominserted

if(@transType='

begin

updatetransTypesetbalance=blance-transMoneywheretransMoney<

=balance

end

elseupdatetransTypesetbalance=balance+transMoney

end

4.3创建存储过程

--取款

createproctakeMoney

@cardIDvarchar(20),

@passvarchar(6),

@qkMoney

as

begin

print'

正在交易,请稍候……'

'

if((selectpassfromcardInfowherecardID=@cardID)!

=@pass)

密码不正确。

elseif(@qk>

balance)

交易失败,余额不足。

elseif(convert(int,@qk)%100!

=0)

本柜员机只提供面值100元的纸币,取款金额为100的整数倍。

elseif((selectbalancefromcardInfowherecardID=@cardID)-@qk<

1)

取款后余额不能低于1元'

else

updatecardInfosetbalance=balance-@qkwherecardID=@cardID--更新剩余余额

inserttransInfo(transDate,cardID,transType,transMoney,remark)values(default,@cardID,'

@qk,'

)--记录交易信息

--显示卡号,余额

declare@cardIDvarchar(18),@leftmoney

select@cardID=cardID,@left=balancefromcardInfowherepass=@pass

交易成功'

交易金额:

+convert(varchar(10),@qk)

卡号:

+convert(varchar(18),@cardID)+'

余额:

+convert(varchar(10),@left)

--存款

createprocsaveMoney

@cardIDvarchar(18),

@ckmoney

elseif((selectIsReportLossfromcardInfowhereIsReportLoss=@IsReportLoss)='

卡已挂失,交易不能进行。

elseif(convert(int,@ck)%100!

本柜员机只存入面值100元的纸币,存款金额为100的整数倍。

updatecardInfosetbalance=balance+@ckwherecardID=@cardID

inserttransInfo(transDate,cardID,transType,transMoney,remark)values(default,@cardID,'

@ck,'

declare@cardIDvarchar(25),@leftmoney

+convert(varchar(10),@ck)

余额:

5.结束语

在这一个星期中,在做系统的过程中遇到了很多问题,有的是知识存储不足,有的是考虑不够周全,有些问题不但要深入地理解,而且要不断地更正以前的错误思维。

之所以能够顺利实现基本功功能,除了有自己的辛勤努力之外,遇到不能解决的问题,多亏了老师和周围同学的热心帮助。

做一个系统最重要的是整体思路,在做之前,必须要先理清自己的思路,否则在后来系统的开发过程中会感觉没有明确的方向感。

开发一套系统,最重要的是细心,并不是一定要做到面面俱到,但也要充分考虑到客户的需求和现实意义,不管什么系统,只用运用到实际应用中,才具有先现实意义,要保持清醒的头脑。

我刚开始的时候就是看着老师发的文档一题题往下做,后来我发现问题之后就把整个系统的思想理清了又重新开始的。

在整个系统中把我们这个学期学到的所有知识几乎都用到了,在运用知识的过程中如果不熟悉就会无法融会贯通,所以对知识的熟练程度要求比较高,在课外时间我就加强自己的理论知识的学习,在做系统的过程中在参照自己以前的程序代码,这样就可以比较顺利的完成了。

刚开始时创建表时,有一些字段的数据类型设计的不合理。

比如存款类型和账户余额在一开始时我设置的是char类型,但在后来的运算中总是需要把char类型转化,这样很麻烦,我就重新定义了表,把类型转化为money,这样运算时就简单一点了。

在做系统时经常会提示一些约束冲突,刚开始自己还以为做错了,后来才明白那正是自己做的约束在起作用了。

这还是理论与实际不能结合的原因啊。

在整个系统中有很多存储过程,自己对存储过程掌握的不是太熟练,所以在做的过程中很吃力,有时候写完存储过程执行的时候经常会出错,因为有时是输入的变量个数与存储类型不符,有时是类型不一致。

但是最后通过自己的努力还是成功的完成了。

通过这次实践我学到了很多东西,做系统细心很重要,作为一个编程人员,更是如此。

在整个系统中丢失了一个逗号,分号都是很严重的事情,所以保持清醒头脑,胆大心细是一个编程人员的良好心态。

也为以后自己踏上工作之路做好了实践经验准备。

这次实践不仅把学到的知识都进行了运用,巩固了知识之外还学习到了开发系统应该注意的问题的解决方法,这对以后的工作有很大的帮助。

我从这次实践中受益匪浅,感谢老师和同学们。

设计过程中质疑(或答辩)记载:

1.创建触发器的思路?

答:

根据交易类型是“存入”或“支出”,进而更新银行卡信息表的余额

2.如何默认当前时间?

答:

datetimedefault(getdate())

指导教师评语:

签名:

11年6月25日

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

当前位置:首页 > 解决方案 > 学习计划

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

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