数据库ATM自动取款机系统Word下载.docx
- 文档编号:20198376
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:28
- 大小:277.09KB
数据库ATM自动取款机系统Word下载.docx
《数据库ATM自动取款机系统Word下载.docx》由会员分享,可在线阅读,更多相关《数据库ATM自动取款机系统Word下载.docx(28页珍藏版)》请在冰豆网上搜索。
(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自动取款机系统SqlServer2008Windows2007SqlServer存放位置,绝对路径/相对路径用于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图图5.2关系模型关系模型注:
下划线为主码,下划波浪线为外码用户(顾客编号,开户名,身份证号码,联系电话,居住地址)银行卡(卡号,顾客编号,密码,开户金额,开户日期,是否挂失,余额,存款类型,货币类型)交易(交易号,卡号,交易金额,交易日期,交易类型,备注)六、六、物理设计物理设计6.1表汇总表汇总表名功能说明表userinfo用户信息表,存储用户信息等表cardinfo银行卡信息表,存储银行卡信息等表transinfo交易信息表,存储客户的交易信息信息等6.2表表1:
userinfo表表(用户信息表用户信息表)表名用户信息表(userinfo)数据库用户sa主键customer_ID其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1customer_IDintNY无无identity(1,1)主键/客户编号2customer_namechar(10)NN无无客户姓名3P_IDvarchar(18)NY无无check(len(P_ID)=15orlen(P_ID)=18)身份证号码4customer_phonevarchar(11)YN无无check(customer_phonelike0-90-90-90-90-90-90-90-90-90-90-9)联系电话5customer_addressvarchar(50)YN无无居住地址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_phonelike0-90-90-90-90-90-90-90-90-90-90-9),-联系电话customer_addressvarchar(50)-居住地址);
6.3表表2:
cardinfo表表(银行卡信息表银行卡信息表)表名银行卡信息表(cardinfo)数据库用户sa主键card_ID其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1card_IDchar(19)NY无无check(card_IDlike101035760-90-90-90-90-90-90-90-9)主键/卡号2customer_IDintNY无无外键/顾客编号3card_passwordchar(6)NN无无default888888check(len(card_password)=6)密码4open_moneymoneyNN无无check(open_money=1)开户金额5open_datedatetimeNN无无defaultgetdate()开户日期6isreportlosschar
(2)YN无无default否check(isreportloss=是orisreportloss=否)挂失状态7balancemoneyNN无无check(balance=1)余额8saving_typevarchar(10)NN无无check(saving_typelike活期orsaving_typelike定活两便orsaving_typelike定期)存款类型9cur_typechar(5)NN无无defaultRMB/货币类型sql脚本createtablecardinfo(card_IDchar(19)check(card_IDlike101035760-90-90-90-90-90-90-90-9)primarykey,-卡号customer_IDint,-顾客编号card_passwordchar(6)notnulldefault888888check(len(card_password)=6),-卡密码open_moneymoneynotnullcheck(open_money=1),-开户金额open_datedatetimedefaultgetdate()notnull,-开户日期isreportlosschar
(2)default否check(isreportloss=是orisreportloss=否),-是否挂失balancemoneynotnullcheck(balance=1),-余额saving_typevarchar(10)notnullcheck(saving_typelike活期orsaving_typelike定活两便orsaving_typelike定期),-存款类型cur_typechar(5)notnulldefaultRMB,-货币类型foreignkey(customer_ID)referencesuserinfo(customer_ID)ondeletecascadeonupdatecascade);
6.4表表3:
transinfo表表(供应表供应表)表名交易信息表(transinfo)数据库用户sa主键trans_ID其他排序字段无索引字段无序号字段名称数据类型(精度范围)允许为空Y/N唯一Y/N区别度默认值约束条件/说明1trans_IDintNY无无identity(1,1)主键/交易号2card_IDchar(19)NY无无check(card_IDlike101035760-90-90-90-90-90-90-90-9)外键/卡号3trans_moneymoneyNN无无check(trans_money0)/交易金额4trans_datedetetimeNN无无defaultgetdate()交易日期5trans_typevarchar(5)NN无无check(trans_typelike存入ortrans_typelike支取)交易类型6remarkvarchar(50)YN无无备注sql脚本createtabletransinfo(trans_IDintidentity(1,1)primarykey,-交易号card_IDchar(19)notnullcheck(card_IDlike101035760-90-90-90-90-90-90-90-9),-卡号trans_moneymoneynotnullcheck(trans_money0),-交易金额trans_datedatetimenotnulldefaultgetdate(),-交易日期trans_typevarchar(5)check(trans_typelike存入ortrans_typelike支取),-交易类型remarkvarchar(50),-备注foreignkey(card_ID)referencescardinfo(card_ID)ondeletecascadeonupdatecascade)6.5存储过程的设计存储过程的设计1、开户存储过程-提示:
银行卡卡号共19位(4位数一组,中间用空格隔开),对于某个银行来说,前面8个数字是固定的,后面8个数字-要求随机的,并且唯一。
我们只需要产生8位随机的数字,然后和前8位固定的数字“10103576”连接即可。
随机函数的用法下:
-RAND(随机种子):
将产生01的随机数,要求每次的随机种子不一样。
为了保证随机种子每次不相同,一般的算法如下:
-随机种子=当前的月份数100000+当前秒数1000+当前毫秒数-产生了01的随机数后,我们取小数点后8位,即:
0.xxxxxxxx-使用substring(字符串,开始位置,长度)createprocedureproc_CardID2randCardIDchar(19)output,-输出参数-银行卡号card_passwordchar(6),-账号密码open_moneymoney,-开户金额isreportlosschar
(2),-是否挂失saving_typevarchar(10),-存款类型cur_typechar(5),-货币类型customer_namechar(10),-用户姓名P_IDvarchar(18)-身份证号ASdeclarernumeric(15,8)-15位数,保留8位小数declaretempStrchar(10)selectr=rand(datepart(mm,getdate()*100000)+(datepart(ss,getdate()*1000)+datepart(ms,getdate()settempStr=rsetrandCardID=10103576+substring(tempStr,3,4)+substring(tempStr,7,4)-若存在该客户信息declarecustomer_IDintifEXISTS(select*fromuserinfowhereP_ID=P_ID)begin-禁用CHECK约束altertablecardinfonocheckconstraintALL;
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约束altertablecardinfocheckconstraintALL;
endelsebeginprint需注册用户信息!
请先登记您的详细信息.end-执行存储过程:
declarerandCardIDchar(19)execproc_CardID2randCardIDoutput,123456,109,否,活期,RMB,曲先生,421411188001230314print您的卡号为:
+randCardID2、存钱存储过程在存储过程中定义三个变量,card_IDchar(19),inputmoneymoney和card_passwordchar(6),这三个变量是用来核对账号的。
card_IDchar(19)用来核对卡号是否正确,inputmoneymoney暂时存储需要存入的金额,card_passwordchar(6)则是用来核对密码的。
存储过程中对所有需要核对的信息都进行了准确的核对,例如核对账号是否处于挂失状态,核对账号密码是否正确。
在核对完所有的信息之后才准确地完成操作。
存钱存储过程如下:
createprocedureproc_inputMoneycard_IDchar(19),inputmoneymoney,card_passwordchar(6)asdeclareerrorsumintseterrorsum=0declareisreportlosschar
(2)selectisreportloss=isreportlossfromcardinfowherecard_ID=card_IDandcard_password=card_passwordif(isreportloss=是)beginprint交易正在进行中.print帐户处于挂失状态则不可以存款endelseif(cast(inputmoneyasint)%1000)beginprint交易正在进行中.print存款金额为100的整数倍endelseif(inputmoney10000)beginprint交易正在进行中.print存款金额不能大于10000endelsebeginbegintransactionupdatecardinfosetbalance=balance+inputmoneywherecard_ID=card_IDandcard_password=card_passwordinserttransinfo(card_ID,trans_money,trans_date,trans_type,remark)values(card_ID,inputmoney,getdate(),存入,无)declaremoneymoneyselectmoney=balancefromcardinfowherecard_ID=card_IDandcard_password=card_passwordprint交易正在进行中.print卡号:
+card_ID+余额+convert(char(19),money)print交易成功if(error0)beginrollbacktransactionendcommittransactionend-执行存储过程:
execproc_inputMoney1010357611111111,500,1234563、取钱存储过程在存储过程中定义三个变量,card_IDchar(19),takemoneymoney和card_passwordchar(6),这三个变量是用来核对账号的。
card_IDchar(19)用来核对卡号是否正确,takemoneymoney暂时存储需要取出的金额,并且用该变量存储的值与数据库中的值进行比较,如果变量中的值大于数据库中存储的余额的,则不进行取款操作,card_passwordchar(6)则是用来核对密码的。
取钱存储过程如下:
createprocproc_takeMoneycard_IDchar(19),-卡号takemoneymoney,-取款金额card_passwordchar(6)-密码asdeclareerrorsumint-错误基数seterrorsum=0begintransaction-开始取款ifnotEXISTS(selectcard_IDfro
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 ATM 自动 取款 系统