数据库ATM自动取款机系统.docx

上传人:b****6 文档编号:4480703 上传时间:2022-12-01 格式:DOCX 页数:30 大小:241.53KB
下载 相关 举报
数据库ATM自动取款机系统.docx_第1页
第1页 / 共30页
数据库ATM自动取款机系统.docx_第2页
第2页 / 共30页
数据库ATM自动取款机系统.docx_第3页
第3页 / 共30页
数据库ATM自动取款机系统.docx_第4页
第4页 / 共30页
数据库ATM自动取款机系统.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

数据库ATM自动取款机系统.docx

《数据库ATM自动取款机系统.docx》由会员分享,可在线阅读,更多相关《数据库ATM自动取款机系统.docx(30页珍藏版)》请在冰豆网上搜索。

数据库ATM自动取款机系统.docx

数据库ATM自动取款机系统

 

长沙学院

 

课程设计说明书

题目

ATM系统

系(部)

计算机科学与技术系

专业(班级)

软件五班

姓名

学号

指导教师

起止日期

2013.6.13—2013.06.22

 

实训任务书

课程名称:

服务外包软件综合实训Ⅰ

设计题目:

ATM系统

已知技术参数和设计要求:

1.实训目的要求

通过本实训,应能够对SQLServer20005工具的了解,与数据库语法的能力。

1)了解SQL的简史和功能特性。

2)掌握E-R图的绘制和数据库的设计。

3)掌握T-SQL的语法知识,并能够熟练运用它。

4)掌握事务与存储过程的使用。

2.问题描述(功能要求):

本次案例将完成一个ATM银行取款机系统的数据库。

(1)创建BankDB数据库。

并保存在D:

\ATM文件夹下。

(2)创建用户信息表(userinfo)

(3)创建银行卡信息表(cardinfo)

(4)创建交易信息表(transinfo)

(5)添加各种约束关系:

为userinfo表中客户ID(customerID)添加主键约束。

为userinfo表中客户的身份证(PID)添加唯一约束

为useinfo表中的身份证号码添加检查约束,长度为15或者18

为userinfo表中的客户电话号码添加检查约束。

为cardinfo表中的卡号ID(cardID)添加主键约束

为cardinfo表中的卡号ID(cardID)添加约束,必须是以

‘10103576’开头,长度为12

为cardinfo表中的货币类型(curType)添加默认约束,默认为RMB。

为cardinfo表中的存款类型添加约束,只能是‘活期、定活两便和定期’。

cardinfo表中开卡日期默认为当天日期。

cardinfo表中的开户金额不能低于1元。

cardinfo表中的余额不能低于1元。

cardinfo表中的密码长度为6位数。

默认为88888。

cardinfo表中是否挂失只能是‘是’和‘否’。

默认为‘否’

添加userinfo表与cardinfo表的外键约束。

transinfo表中的交易日期默认为当天。

交易类型只能是‘存入’和‘支取’。

添加cardinfo表与transinfo表的外键约束。

(6)开户

(7)取钱

(8)存钱

(9)查询余额

(10)转账

(11)交易统计

3.运行环境要求:

(1)客户端:

windows操作系统,SQLServer2005数据库客户端

(2)服务器:

SQLServer2005数据库服务器、

4.技术要求:

1)掌握E-R图的绘制和数据库的设计。

2)掌握T-SQL的语法知识,并能够熟练运用它。

3)掌握事务与存储过程的使用。

4)触发器(选做)

 

设计工作量:

40课时

工作计划:

(1)2011级软件工程所有班级

20课时:

设计,计算机系机房/普通教室。

16课时:

上机、调试。

计算机系机房

4课时:

答辩。

计算机系机房。

班级

日期

节次

地点

内容

指导老师

11软件5班

15周周四

9-12节

致远楼1201

布置任务、上机调试

曾俊勇

15周周五

9-12节

致远楼1201

上机调试

15周周六

9-12节

致远楼1201

上机调试

16周周一

9-12节

致远楼1401

上机调试

16周周二

9-12节

致远楼1401

上机调试

16周周三

9-12节

致远楼1401

上机调试

16周周四

9-12节

致远楼1201

上机调试

16周周五

9-12节

致远楼1201

上机调试

16周周六

5-8节

致远楼1404

上机调试

16周周六

9-12节

致远楼1201

答辩

 

指导教师签名:

         日期:

        

教研室主任签名:

       日期:

        

系主任签名:

         日期:

        

 

长沙学院课程设计鉴定表

姓名

学号

专业

软件工程

班级

软件五班

设计题目

ATM自动取款机系统

指导教师

曾俊勇

指导教师意见:

 

评定等级:

教师签名:

日期:

答辩小组意见:

 

评定等级:

     答辩小组长签名:

     日期:

    

教研室意见:

 

教研室主任签名:

日期:

 

系(部)意见:

 

系主任签名:

        日期:

     

说明

课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;

 

一、引言

1.1编写目的

通过数据库ATM实训,进一步掌握数据库系统的理论和方法。

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

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

本文档是ATM系统设计文档的组成部分,数据库是一门应用性很强的专业课,在学习时必须注意理论与实践相结合。

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

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

主要包括:

需求分析、数据分析、系统逻辑模型设计方法;功能设计、物理模型设计方法;系统的实现等方法。

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

目的是:

明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发,设计该数据库的目的是设计一个ATM系统,能够按照一定条件查询、统计交易信息,可以模拟完成开户、存款、取款、转账、注销、挂失、激活、修改密码、查询等业务。

1.2参考资料

资料名称

作者

文件编号、版本

《数据库系统概论》

王珊、萨师煊

2006年5月第4版

《数据库设计入门经典》

鲍威尔

2007年3月第1版

《数据库原理》

克罗恩科

2005年6月第1版

 

二、需求规约

2.1业务描述

ATM系统业务是模拟了银行ATM提款机业务的管理功能。

在计算机网络,数据库和先进的开发平台上,利用数据库sql语言模拟开发一个良好的ATM系统,实现顾客的开户、存款、取款、查询、转账、修改密码等一系列操作。

并且在完成一定的操作后保存数据的更新和查询。

在转账和取款时还要核对余额是否足够,在足够的条件下才能执行。

存储内容则是存储用户的一些信息,如电话号码和身份证号码等,一些用户的详细资料,还有卡号表中的金额的信息,并对这些信息能够及时更新。

2.2需求分析

开户功能:

新客户需要开户之后才能拥有相应的卡,并对其进行各种交易。

在存入一定金额后可以登录或跳转到交易的界面,进行各种交易。

存款功能:

客户要能够正确地存款,能够准确地更新客户账号中的余额,并且记录客户的操作。

 

取款功能:

判断客户的余额是否大于取款金额,避免出现溢出现象,操作结果记录在表中。

转账功能:

 

准确核对客户的账户信息,核对转入账号的信息,判断转出账号的余额是否大于转出金额,避免出现溢出现象,并记录转出账号和转入账号的操作。

注销功能:

老用户可在此注销自己原有的卡。

挂失功能:

当客户遗失自己卡后,需对卡进行挂失操作,否则该卡的余额取不出。

激活功能:

客户遗失自己卡并找到卡后,可对卡进行激活操作,以便继续使用该卡。

修改密码功能:

客户可在此功能下修改卡的原始密码。

查询功能:

 

查询客户余额 ;查询客户的账号信息 ;查询客户的操作记录;

三、数据库环境说明

数据库实例

数据库系统

数据库部署环境

数据库设计工具

数据库存放位置

说明

ATM自动取款机系统

SqlServer2008

Windows2007

SqlServer

存放位置,绝对路径/相对路径

用于ATM自动取款

四、数据库的命名规则

4.1数据库对象命名规则

数据库对象

命名规则

备注

字符串功能描述字符串

例如:

Client客户信息表

视图

_View功能描述字符串

例如:

all_view每个客户订单数视图

触发器

_trigger功能描述字符串

例如:

Decre_trigger减少库存触发器

存储过程

proce_功能描述字符串

例如:

proce_SearchClient查询客户

信息存储过程

 

4.2数据项编码规则

数据项

命名规则

数据类型

长度范围

备注

编号类

整数序号

整型

0-65535

姓名类

字符串

Varchar(20)

0-20位

地址类

字符串

Varchar(20)

0-20位

电话类

字符串

Char(11)

11位

价格类

浮点型

float

时间类

Datetime型

Datetime

‘2011-01-0110:

10:

10’

 

五、逻辑设计

5.1E-R图

用户信息表

户名

顾客编号

顾客编号

PID

联系电话

居住地址

银行卡信息表表

卡号

密码

货币类型

是否挂失

余额

顾客编号

开户金额

开户日期

属于

交易信息表

属于

交易日期

交易金额

交易类型

卡号

备注

1

N

M

N

交易号

5.2关系模型

注:

下划线为主码,下划波浪线为外码

用户(顾客编号,开户名,身份证号码,联系电话,居住地址)

银行卡(卡号,顾客编号,密码,开户金额,开户日期,是否挂失,余额,存款类型,货币类型)

交易(交易号,卡号,交易金额,交易日期,交易类型,备注)

六、物理设计

6.1表汇总

表名

功能说明

表userinfo

用户信息表,存储用户信息等

表cardinfo

银行卡信息表,存储银行卡信息等

表transinfo

交易信息表,存储客户的交易信息信息等

6.2表[1]:

[userinfo表](用户信息表)

表名

用户信息表(userinfo)

数据库用户

sa

主键

customer_ID

其他排序字段

索引字段

序号

字段名称

数据类型(精度范围)

允许为空Y/N

唯一Y/N

区别度

默认值

约束条件/说明

1

customer_ID

int

N

Y

identity(1,1)

主键/客户编号

2

customer_name

char(10)

N

N

客户姓名

3

P_ID

varchar(18)

N

Y

check(len(P_ID)=15orlen(P_ID)=18)身份证号码

4

customer_phone

varchar(11)

Y

N

check(customer_phonelike'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')联系电话

5

customer_address

varchar(50)

Y

N

居住地址

sql脚本

createtableuserinfo

customer_IDintidentity(1,1)primarykey,--顾客编号

customer_namechar(10)notnull,--开户名

P_IDvarchar(18)uniquecheck(len(P_ID)=15orlen(P_ID)=18)notnull,--身份证号码

customer_phonevarchar(11)check(customer_phonelike'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),--联系电话

customer_addressvarchar(50)--居住地址

);

6.3表[2]:

[cardinfo表](银行卡信息表)

表名

银行卡信息表(cardinfo)

数据库用户

sa

主键

card_ID

其他排序字段

索引字段

序号

字段名称

数据类型(精度范围)

允许为空Y/N

唯一Y/N

区别度

默认值

约束条件/说明

1

card_ID

char(19)

N

Y

check(card_IDlike'10103576[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')

主键/卡号

2

customer_ID

int

N

Y

外键/顾客编号

3

card_password

char(6)

N

N

default'888888'check(len(card_password)=6)密码

4

open_money

money

N

N

check(open_money>=1)

开户金额

5

open_date

datetime

N

N

default'getdate()'

开户日期

6

isreportloss

char

(2)

Y

N

default'否'check(isreportloss='是'orisreportloss='否')

挂失状态

7

balance

money

N

N

check(balance>=1)余额

8

saving_type

varchar(10)

N

N

check(saving_typelike'活期'orsaving_typelike'定活两便'orsaving_typelike'定期')存款类型

9

cur_type

char(5)

N

N

default'RMB'/货币类型

sql脚本

createtablecardinfo

card_IDchar(19)check(card_IDlike'10103576[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')primarykey,--卡号

customer_IDint,--顾客编号

card_passwordchar(6)notnulldefault'888888'check(len(card_password)=6),--卡密码

open_moneymoneynotnullcheck(open_money>=1),--开户金额

open_datedatetimedefault'getdate()'notnull,--开户日期

isreportlosschar

(2)default'否'check(isreportloss='是'orisreportloss='否'),--是否挂失

balancemoneynotnullcheck(balance>=1),--余额

saving_typevarchar(10)notnullcheck(saving_typelike'活期'orsaving_typelike'定活两便'orsaving_typelike'定期'),--存款类型

cur_typechar(5)notnulldefault'RMB',--货币类型

foreignkey(customer_ID)referencesuserinfo(customer_ID)

ondeletecascade

onupdatecascade

);

6.4表[3]:

[transinfo表](供应表)

表名

交易信息表(transinfo)

数据库用户

sa

主键

trans_ID

其他排序字段

索引字段

序号

字段名称

数据类型(精度范围)

允许为空Y/N

唯一Y/N

区别度

默认值

约束条件/说明

1

trans_ID

int

N

Y

identity(1,1)主键/交易号

2

card_ID

char(19)

N

Y

check(card_IDlike'10103576[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')外键/卡号

3

trans_money

money

N

N

check(trans_money>0)/交易金额

4

trans_date

detetime

N

N

default'getdate()'交易日期

5

trans_type

varchar(5)

N

N

check(trans_typelike'存入'ortrans_typelike'支取')交易类型

6

remark

varchar(50)

Y

N

备注

sql脚本

createtabletransinfo

trans_IDintidentity(1,1)primarykey,--交易号

card_IDchar(19)notnullcheck(card_IDlike'10103576[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'),--卡号

trans_moneymoneynotnullcheck(trans_money>0),--交易金额

trans_datedatetimenotnulldefault'getdate()',--交易日期

trans_typevarchar(5)check(trans_typelike'存入'ortrans_typelike'支取'),--交易类型

remarkvarchar(50),--备注

foreignkey(card_ID)referencescardinfo(card_ID)

ondeletecascade

onupdatecascade

6.5存储过程的设计

1、开户存储过程

--提示:

银行卡卡号共19位(4位数一组,中间用空格隔开),对于某个银行来说,前面8个数字是固定的,后面8个数字

--要求随机的,并且唯一。

我们只需要产生8位随机的数字,然后和前8位固定的数字“10103576”连接即可。

随机函数的用法下:

--RAND(随机种子):

将产生0~1的随机数,要求每次的随机种子不一样。

为了保证随机种子每次不相同,一般的算法如下:

--随机种子=当前的月份数×100000+当前秒数×1000+当前毫秒数

--产生了0~1的随机数后,我们取小数点后8位,即:

0.xxxxxxxx

--使用substring(字符串,开始位置,长度)

createprocedureproc_CardID2

@randCardIDchar(19)output,--输出参数--银行卡号

@card_passwordchar(6),--账号密码

@open_moneymoney,--开户金额

@isreportlosschar

(2),--是否挂失

@saving_typevarchar(10),--存款类型

@cur_typechar(5),--货币类型

@customer_namechar(10),--用户姓名

@P_IDvarchar(18)--身份证号

AS

declare@rnumeric(15,8)--15位数,保留8位小数

declare@tempStrchar(10)

select@r=rand((datepart(mm,getdate())*100000)+

(datepart(ss,getdate())*1000)+datepart(ms,getdate()))

set@tempStr=@r

set@randCardID='10103576'+substring(@tempStr,3,4)+''+substring(@tempStr,7,4)

--若存在该客户信息

declare@customer_IDint

ifEXISTS(select*fromuserinfowhere@P_ID=P_ID)

begin

--禁用CHECK约束

altertablecardinfo

nocheckconstraintALL;

select@customer_ID=customer_IDfromuserinfowhere(@P_ID=P_ID)

insertintocardinfo(card_ID,customer_ID,card_password,open_money,

open_date,isreportloss,balance,saving_type,cur_type)

values(@randCardID,@customer_ID,@card_password,@open_money,

getdate(),@isreportloss,@open_money,@saving_type,@cur_type)

--启用CHECK约束

altertablecardinfo

checkconstraintALL;

end

else

begin

print'需注册用户信息!

请先登记您的详细信息....'

end

--执行存储过程:

declare@randCardIDchar(19)

execproc_CardID2@randCardIDoutput,'123456',109,'否','活期','RMB','曲先生','421411188001230314'

print'您的卡号为:

'+@randCardID

2、存钱存储过程

在存储过程中定义三个变量,@card_IDchar(19),@inputmoneymoney和@card_passwordchar(6),这三个变量是用来核对账号的。

@card_IDchar(19)用来核对卡号是否正确,@inputmoneymoney暂时存储需要存入的金额,@card_passwordchar(6)则是用来核对密码的。

存储过程中对所有需要核对的信息都进行了准确的核对,例如核对账号是否处于挂失状态,核对账号密码是否正确。

在核对完所有的信息之后才准确地完成操作。

存钱存储过程如下:

createprocedureproc_in

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

当前位置:首页 > 高中教育 > 英语

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

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