《ATM取款机系统》PPT课件

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

ACCPV4.0ATM取款机系统数据库设计ACCPV4.02问题描述某银行拟开发一套ATM取款机系统,实现如下功能:1、开户(到银行填写开户申请单,卡号自动生成)2、取钱3、存钱4、查询余额5、转账(如使用一卡通代缴手机话费、个人股票交易等)现要求对“ATM柜员机系统”进行数据库的设计并实现,数据库保存在D:\bank目录下,文件增长率为15%。ACCPV4.03问题分析-1字段名称说明customerID顾客编号自动编号(标识列),从1开始,主键customerName开户名必填PID身份证号必填,只能是18位或15位,身份证号唯一约束telephone联系电话必填,格式为xxxx-xxxxxxxx或手机号13位address居住地址可选输入用户信息表:userInfo:ACCPV4.04问题分析-2银行卡信息表:cardInfo字段名称说明cardID卡号必填,主健,银行的卡号规则和电话号码一样,一般前8位代表特殊含义,如某总行某支行等。假定该行要求其营业厅的卡号格式为:10103576xxxxxxx开始,每4位号码后有空格,卡号一般是随机产生.curType货币种类必填,默认为RMBsavingType存款类型活期/定活两便/定期openDate开户日期必填,默认为系统当前日期openMoney开户金额必填,不低于1元balance余额必填,不低于1元,否则将销户pass密码必填,6位数字,开户时默认为6个“8”IsReportLoss是否挂失必填,是/否值,默认为”否”customerID顾客编号外键,必填,表示该卡对应的顾客编号,一位顾客允许办理多张卡号ACCPV4.05问题分析-3字段名称说明transDate交易日期必填,默认为系统当前日期cardID卡号必填,外健,可重复索引transType交易类型必填,只能是存入/支取transMoney交易金额必填,大于0remark备注可选输入,其他说明交易信息表:transInfoACCPV4.06难点分析-1设计ER图、建库、建表、加约束、建关系部分建库语句:CREATEDATABASEbankDBON(NAME=‘…',FILENAME=…',SIZE=…,FILEGROWTH=…)LOGON(….)建表语句:CREATETABLE表名(customerIDINTIDENTITY(1,1),customerNameCHAR(8)NOTNULL,…..)文件增长率数据文件日志文件自动编号,从1开始非空/必填ACCPV4.07难点分析-2设计ER图、建库、建表、加约束、建关系部分建约束语句:ALTERTABLEcardInfoADDCONSTRAINTPK_cardIDPRIMARYKEY(cardID),CONSTRAINTCK_cardIDCHECK(cardIDLIKE'10103576[0-9]…'),CONSTRAINTDF_curTypeDEFAULT('RMB')FORcurTypeCONSTRAINTFK_customerIDFOREIGNKEY(customerID)REFERENCESuserInfo(customerID),CONSTRAINTUQ_PIDUNIQUE(PID),…..主键约束检查约束外键约束(建关系)唯一约束默认约束ACCPV4.08难点分析-3字段名称说明customerID顾客编号自动编号(标识列),从1开始,主键customerName开户名必填PID身份证号必填,只能是18位或15位,身份证号唯一约束telephone联系电话必填,格式为xxxx-xxxxxxxx或手机号13位address居住地址可选输入建表时:IDENTITY(1,1)check约束:len()函数建表时:NOTNULLcheck约束:like‘[0-9][0-9]…’设计ER图、建库、建表、加约束、建关系部分ACCPV4.09子查询:SELECT....FROM…WHEREtransMoney=(SELECT…FROM…)内部连接:SELECT…FROMuserInfoINNERJOINcardInfoON…..SQL编程:DECLARE@inMoneymoneySELECT@inMoney=sum(transMoney)from..where(transType='存入')视图:CREATEVIEWview_userInfoAS…--SQL语句GO难点分析-4声明变量插入测试数据、常规业务模拟、创建索引视图部分给变量赋值的两种方法:SELECT或SET测试视图:SELECT..FROMview_userInfo…ACCPV4.010CREATETRIGGERtrig_transONtransInfoFORINSERTAS…..select@myTransType=transType,@outMoney=transMoney,@myCardID=cardIDfrominsertedif(…..)beginraiserror('交易失败!余额不足!',16,1)rollbacktran--取消交易end…GO难点分析-5插入的数据临时表:inserted创建触发器部分错误提示:raiserror()函数取消交易,撤销事务:rollbacktrans插入触发器ACCPV4.011创建存储过程:CREATEPROCEDUREproc_takeMoney@cardchar(19),@typechar(4),@inputPasschar(6)=''AS…..—SQL语句GO调用存储过程:EXECproc_openAccount'李四','321245678912345678','0478-44443333',1,'定期'难点分析-6存储过程部分1:存储过程的参数有默认值的参数,放在最后ACCPV4.012创建存储过程:CREATEPROCEDUREproc_randCardID@randCardIDchar(19)OUTPUT…SELECT@r=RAND(随机种子)例如:0.082332623215…..set@randCardID=….SUBSTRING(@tempStr,3,4)…..GO调用存储过程:DECLARE@mycardIDchar(19)EXECUTEproc_randCardID@mycardIDOUTPUT难点分析-7存储过程部分2:OUTPUT表示传出的参数产生0-1的随机数字符串截取函数截取小数点后8位作为卡号的后八为数卡号(4位一组,用空格隔开):1010357608233262调用带output输出参数的存储过程ACCPV4.013阶段划分第一阶段(30分钟)利用PowerDesigner设计E-R图第二阶段(50分钟)利用SQL语句实现建库、建表、加约束、建关系第三阶段(30分钟)利用SQL语句插入测试数据、模拟常规业务操作第四阶段(40分钟)利用SQL语句创建索引和视图、创建触发器第五阶段(60分钟)利用SQL语句创建3个存储过程并测试第六阶段(20分钟)利用SQL语句创建转帐事务并测试第七阶段(20分钟)利用SQL语句创建系统维护帐号并授权ACCPV4.014第一阶段第一阶段(50分钟)利用PowerDesigner设计E-R图要求学员自己动手操作,教员巡视,解答学员提出的问题ACCPV4.015阶段检查针对第一阶段抽查学员的操作结果教员给出点评或集中演示难点部分ACCPV4.016第一阶段结果演示1第一阶段操作的结果:?????加吗?ACCPV4.017第二阶段第二阶段(50分钟)利用SQL语句实现建库、建表、加约束、建关系要求学员自己动手编写SQL语句,教员巡视,解答学员提出的问题ACCPV4.018阶段检查针对第二阶段抽查学员的编码结果教员给出点评或集中演示难点部分ACCPV4.019第二阶段标准代码演示-1建库IFexists(SELECT*FROMsysdatabasesWHEREname='bankDB')DROPDATABASEbankDBGOCREATEDATABASEbankDBON(NAME='bankDB_data',FILENAME='d:\bank\bankDB_data.mdf',SIZE=1mb,FILEGROWTH=15%)LOGON(…..检验数据库是否存在,如果为真,删除此数据库创建建库bankDBACCPV4.020第二阶段标准代码演示-2建表:USEbankDBGOCREATETABLEuserInfo--用户信息表(customerIDINTIDENTITY(1,1),customerNameCHAR(8)NOTNULL,PIDCHAR(18)NOTNULL,telephoneCHAR(13)NOTNULL,addressVARCHAR(50))GOCREATETABLEcardInfo--银行卡信息表(cardIDCHAR(19)NOTNULL,curTypeCHAR(5)NOTNULL,savingTypeCHAR(8)NOTNULL,openDateDATETIMENOTNULL,openMoneyMONEYNOTNULL,balanceMONEYNOTNULL,passCHAR(6)NOTNULL,IsReportLossBITNOTNULL,customerIDINTNOTNULL)CREATETABLEtransInfo--交易信息表(transDateDATETIMENOTNULL,transTypeCHAR(4)NOTNULL,cardIDCHAR(19)NOTNULL,transMoneyMONEYNOTNULL,remarkTEXT)GOACCPV4.021第三阶段第三阶段(60分钟):利用SQL语句实现插入测试数据、常规业务操作要求学员自己动手操作,教员巡视,解答学员提出的问题ACCPV4.022阶段检查针对第三阶段抽查学员的编码结果抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果教员给出点评ACCPV4.023第三阶段标准代码演示-1张三和李四开户:SETNOCOUNTON--不显示受影响的条数信息INSERTINTOuserInfo(customerName,PID,telephone,address)VALUES('张三','123456789012345','010-67898978','北京海淀')INSERTINTOcardInfo(cardID,savingType,openMoney,balance,customerID)VALUES('1010357612345678','活期',1000,1000,1)INSERTINTOuserInfo(customerName,PID,telephone)VALUES('李四','321245678912345678','0478-44443333')INSERTINTOcardInfo(cardID,savingType,openMoney,balance,customerID)VALUES('1010357612121134','定期',1,1,2)SELECT*FROMuserInfoSELECT*FROMcardInfoGOACCPV4.024第三阶段标准代码演示-2张三的卡号取款900元,李四的卡号存款5000元/*--------------交易信息表插入交易记录--------------------------*/INSERTINTOtransInfo(transType,cardID,transMoney)VALUES('支取','1010357612345678',900)/*-------------更新银行卡信息表中的现有余额-------------------*/UPDATEcardInfoSETbalance=balance-900WHEREcardID='10103576123456

1 / 43
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功