数据库ATM自动取款机系统Word文档下载推荐.docx
- 文档编号:16303605
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:32
- 大小:275.37KB
数据库ATM自动取款机系统Word文档下载推荐.docx
《数据库ATM自动取款机系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库ATM自动取款机系统Word文档下载推荐.docx(32页珍藏版)》请在冰豆网上搜索。
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周周五
上机调试
15周周六
16周周一
致远楼1401
16周周二
16周周三
16周周四
16周周五
16周周六
5-8节
致远楼1404
答辩
指导教师签名:
日期:
教研室主任签名:
日期:
系主任签名:
日期:
学院课程设计鉴定表
专业
软件工程
设计题目
ATM自动取款机系统
指导教师意见:
评定等级:
教师签名:
日期:
答辩小组意见:
答辩小组长签名:
日期:
教研室意见:
系(部)意见:
日期:
说明
课程设计成绩分“优秀”、“良好”、“及格”、“不及格”四类;
一、引言6
1.1编写目的6
1.2参考资料6
二、需求规约7
2.1业务描述7
2.2需求分析7
三、数据库环境说明8
四、数据库的命名规则8
4.1数据库对象命名规则8
4.2数据项编码规则8
五、逻辑设计9
5.1E-R图9
5.2关系模型9
六、物理设计10
6.1表汇总10
6.2表[1]:
[userinfo表](用户信息表)10
6.3表[2]:
[cardinfo表](银行卡信息表)11
6.4表[3]:
[transinfo表](供应表)12
6.5存储过程的设计13
6.6触发器的设计18
七、操作结果20
7.1存款测试结果20
7.2取款测试结果20
7.3转账测试结果21
7.4注销结果测试21
八、事物设计23
8.1事物的创建23
总结25
一、引言
1.1编写目的
通过数据库ATM实训,进一步掌握数据库系统的理论和方法。
培养和锻炼开发管理信息系统的能力。
为今后信息系统开发打下良好的基础。
本文档是ATM系统设计文档的组成部分,数据库是一门应用性很强的专业课,在学习时必须注意理论与实践相结合。
本次课程环节旨在培养学生在本课程围,初步掌握解决实际应用问题时所应具备的查阅资料、综合运用所学知识的能力,为毕业设计及今后从事专业工作打下基础。
本课程环节要求学生了解企业管理信息系统后台数据库的设计、配置过程,掌握管理信息系统的开发方法。
主要包括:
需求分析、数据分析、系统逻辑模型设计方法;
功能设计、物理模型设计方法;
系统的实现等方法。
完成一个小型系统后台数据库的设计与配置。
目的是:
明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发,设计该数据库的目的是设计一个ATM系统,能够按照一定条件查询、统计交易信息,可以模拟完成开户、存款、取款、转账、注销、挂失、激活、修改密码、查询等业务。
1.2参考资料
资料名称
作者
文件编号、版本
《数据库系统概论》
王珊、萨师煊
2006年5月第4版
《数据库设计入门经典》
鲍威尔
2007年3月第1版
《数据库原理》
克罗恩科
2005年6月第1版
二、需求规约
2.1业务描述
ATM系统业务是模拟了银行ATM提款机业务的管理功能。
在计算机网络,数据库和先进的开发平台上,利用数据库sql语言模拟开发一个良好的ATM系统,实现顾客的开户、存款、取款、查询、转账、修改密码等一系列操作。
并且在完成一定的操作后保存数据的更新和查询。
在转账和取款时还要核对余额是否足够,在足够的条件下才能执行。
存储容则是存储用户的一些信息,如和等,一些用户的详细资料,还有卡号表中的金额的信息,并对这些信息能够及时更新。
2.2需求分析
开户功能:
新客户需要开户之后才能拥有相应的卡,并对其进行各种交易。
在存入一定金额后可以登录或跳转到交易的界面,进行各种交易。
存款功能:
客户要能够正确地存款,能够准确地更新客户账号中的余额,并且记录客户的操作。
取款功能:
判断客户的余额是否大于取款金额,避免出现溢出现象,操作结果记录在表中。
转账功能:
准确核对客户的账户信息,核对转入账号的信息,判断转出账号的余额是否大于转出金额,避免出现溢出现象,并记录转出账号和转入账号的操作。
注销功能:
老用户可在此注销自己原有的卡。
挂失功能:
当客户遗失自己卡后,需对卡进行挂失操作,否则该卡的余额取不出。
激活功能:
客户遗失自己卡并找到卡后,可对卡进行激活操作,以便继续使用该卡。
修改密码功能:
客户可在此功能下修改卡的原始密码。
查询功能:
查询客户余额
;
查询客户的账号信息
查询客户的操作记录;
三、数据库环境说明
数据库实例
数据库系统
数据库部署环境
数据库设计工具
数据库存放位置
SqlServer2008
Windows2007
SqlServer
存放位置,绝对路径/相对路径
用于ATM自动取款
四、数据库的命名规则
4.1数据库对象命名规则
数据库对象
命名规则
备注
表
字符串功能描述字符串
例如:
Client客户信息表
视图
_View功能描述字符串
all_view每个客户订单数视图
触发器
_trigger功能描述字符串
Decre_trigger减少库存触发器
存储过程
proce_功能描述字符串
proce_SearchClient查询客户
信息存储过程
4.2数据项编码规则
数据项
数据类型
长度围
编号类
整数序号
整型
0-65535
无
类
字符串
Varchar(20)
0-20位
地址类
Char(11)
11位
价格类
浮点型
float
时间类
Datetime型
Datetime
‘2011-01-0110:
10:
10’
五、逻辑设计
5.1E-R图
5.2关系模型
注:
下划线为主码,下划波浪线为外码
用户(顾客编号,开户名,,联系,居住地址)
银行卡(卡号,顾客编号,密码,开户金额,开户日期,是否挂失,余额,存款类型,货币类型)
交易(交易号,卡号,交易金额,交易日期,交易类型,备注)
六、物理设计
6.1表汇总
表名
功能说明
表userinfo
用户信息表,存储用户信息等
表cardinfo
银行卡信息表,存储银行卡信息等
表transinfo
交易信息表,存储客户的交易信息信息等
[userinfo表](用户信息表)
用户信息表(userinfo)
数据库用户
sa
主键
customer_ID
其他排序字段
索引字段
序号
字段名称
数据类型(精度围)
允许为空Y/N
唯一Y/N
区别度
默认值
约束条件/说明
1
int
N
Y
identity(1,1)
主键/客户编号
2
customer_name
char(10)
客户
3
P_ID
varchar(18)
check(len(P_ID)=15orlen(P_ID)=18)
4
customer_phone
varchar(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]'
)联系
5
customer_address
varchar(50)
居住地址
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'
),--联系
customer_addressvarchar(50)--居住地址
);
[cardinfo表](银行卡信息表)
银行卡信息表(cardinfo)
card_ID
char(19)
check(card_IDlike'
10103576[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
)
主键/卡号
customer_ID
int
外键/顾客编号
card_password
char(6)
default'
888888'
check(len(card_password)=6)密码
open_money
money
check(open_money>
=1)
开户金额
open_date
datetime
getdate()'
开户日期
6
isreportloss
char
(2)
否'
check(isreportloss='
是'
orisreportloss='
挂失状态
7
balance
check(balance>
=1)余额
8
saving_type
varchar(10)
check(saving_typelike'
活期'
orsaving_typelike'
定活两便'
orsaving_typelike'
定期'
)存款类型
9
cur_type
char(5)
RMB'
/货币类型
createtablecardinfo
card_IDchar(19)check(card_IDlike'
)primarykey,--卡号
customer_IDint,--顾客编号
card_passwordchar(6)notnulldefault'
888888'
check(len(card_password)=6),--卡密码
open_moneymoneynotnullcheck(open_money>
=1),--开户金额
open_datedatetimedefault'
notnull,--开户日期
isreportlosschar
(2)default'
),--是否挂失
balancemoneynotnullcheck(balance>
=1),--余额
saving_typevarchar(10)notnullcheck(saving_typelike'
),--存款类型
cur_typechar(5)notnulldefault'
--货币类型
foreignkey(customer_ID)referencesuserinfo(customer_ID)
ondeletecascade
onupdatecascade
[transinfo表](供应表)
交易信息表(transinfo)
trans_ID
identity(1,1)主键/交易号
char(19)
)外键/卡号
trans_money
check(trans_money>
0)/交易金额
trans_date
detetime
default'
getdate()'
交易日期
trans_type
varchar(5)
check(trans_typelike'
存入'
ortrans_typelike'
支取'
)交易类型
remark
varchar(50)
createtabletransinfo
trans_IDintidentity(1,1)primarykey,--交易号
card_IDchar(19)notnullcheck(card_IDlike'
),--卡号
trans_moneymoneynotnullcheck(trans_money>
0),--交易金额
trans_datedatetimenotnulldefault'
--交易日期
trans_typevarchar(5)check(trans_typelike'
),--交易类型
remarkvarchar(50),--备注
foreignkey(card_ID)referencescardinfo(card_ID)
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
declarernumeric(15,8)--15位数,保留8位小数
declaretempStrchar(10)
selectr=rand((datepart(mm,getdate())*100000)+
(datepart(ss,getdate())*1000)+datepart(ms,getdate()))
settempStr=r
setrandCardID='
10103576'
+substring(tempStr,3,4)+'
'
+substring(tempStr,7,4)
--若存在该客户信息
declarecustomer_IDint
ifEXISTS(select*fromuserinfowhereP_ID=P_ID)
begin
--禁用CHECK约束
altertablecardinfo
nocheckconstraintALL;
selectcustomer_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约束
checkconstraintALL;
end
else
begin
print'
需注册用户信息!
请先登记您的详细信息....'
--执行存储过程:
declarerandCardIDchar(19)
execproc_CardID2randCardIDoutput,'
123456'
109,'
'
曲先生'
4'
print'
您的卡号为:
'
+randCardID
2、存钱存储过程
在存储过程中定义三个变量,card_IDchar(19),inputmoneymoney和card_passwordchar(6),这三个变量是用来核对账号的。
card_IDchar(19)用来核对卡号是否正确,inputmoneymoney暂时存储需要存入的金额,card_pass
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 ATM 自动 取款 系统