《ATM取款机系统》PPT课件.ppt_第1页
《ATM取款机系统》PPT课件.ppt_第2页
《ATM取款机系统》PPT课件.ppt_第3页
《ATM取款机系统》PPT课件.ppt_第4页
《ATM取款机系统》PPT课件.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ATM取款机系统数据库设计,2,问题描述,某银行拟开发一套ATM取款机系统,实现如下功能:1、开户(到银行填写开户申请单,卡号自动生成)2、取钱3、存钱4、查询余额5、转账(如使用一卡通代缴手机话费、个人股票交易等)现要求对“ATM柜员机系统”进行数据库的设计并实现,数据库保存在D:bank目录下,文件增长率为15%。,3,问题分析-1,用户信息表:userInfo:,4,问题分析-2,银行卡信息表:cardInfo,5,问题分析-3,交易信息表:transInfo,6,难点分析-1,设计ER图、建库、建表、加约束、建关系部分,建库语句:CREATEDATABASEbankDBON(NAME=,FILENAME=,SIZE=,FILEGROWTH=)LOGON(.),建表语句:CREATETABLE表名(customerIDINTIDENTITY(1,1),customerNameCHAR(8)NOTNULL,.),文件增长率,数据文件,日志文件,自动编号,从1开始,非空/必填,7,难点分析-2,设计ER图、建库、建表、加约束、建关系部分,建约束语句:ALTERTABLEcardInfoADDCONSTRAINTPK_cardIDPRIMARYKEY(cardID),CONSTRAINTCK_cardIDCHECK(cardIDLIKE101035760-9),CONSTRAINTDF_curTypeDEFAULT(RMB)FORcurTypeCONSTRAINTFK_customerIDFOREIGNKEY(customerID)REFERENCESuserInfo(customerID),CONSTRAINTUQ_PIDUNIQUE(PID),.,主键约束,检查约束,外键约束(建关系),唯一约束,默认约束,8,难点分析-3,建表时:IDENTITY(1,1),check约束:len()函数,建表时:NOTNULL,check约束:like0-90-9,设计ER图、建库、建表、加约束、建关系部分,9,子查询:SELECT.FROMWHEREtransMoney=(SELECTFROM)内部连接:SELECTFROMuserInfoINNERJOINcardInfoON.SQL编程:DECLAREinMoneymoneySELECTinMoney=sum(transMoney)from.where(transType=存入)视图:CREATEVIEWview_userInfoAS-SQL语句GO,难点分析-4,声明变量,插入测试数据、常规业务模拟、创建索引视图部分,给变量赋值的两种方法:SELECT或SET,测试视图:SELECT.FROMview_userInfo,10,CREATETRIGGERtrig_transONtransInfoFORINSERTAS.selectmyTransType=transType,outMoney=transMoney,myCardID=cardIDfrominsertedif(.)beginraiserror(交易失败!余额不足!,16,1)rollbacktran-取消交易endGO,难点分析-5,插入的数据临时表:inserted,创建触发器部分,错误提示:raiserror()函数,取消交易,撤销事务:rollbacktrans,插入触发器,11,创建存储过程:CREATEPROCEDUREproc_takeMoneycardchar(19),typechar(4),inputPasschar(6)=AS.SQL语句GO调用存储过程:EXECproc_openAccount李四,3212456789123456781,定期,难点分析-6,存储过程部分1:,存储过程的参数,有默认值的参数,放在最后,12,创建存储过程:CREATEPROCEDUREproc_randCardIDrandCardIDchar(19)OUTPUTSELECTr=RAND(随机种子)例如:0.082332623215.setrandCardID=.SUBSTRING(tempStr,3,4).GO调用存储过程:DECLAREmycardIDchar(19)EXECUTEproc_randCardIDmycardIDOUTPUT,难点分析-7,存储过程部分2:,OUTPUT表示传出的参数,产生0-1的随机数,字符串截取函数,截取小数点后8位作为卡号的后八为数卡号(4位一组,用空格隔开):1010357608233262,调用带output输出参数的存储过程,13,阶段划分,第一阶段(30分钟)利用PowerDesigner设计E-R图第二阶段(50分钟)利用SQL语句实现建库、建表、加约束、建关系第三阶段(30分钟)利用SQL语句插入测试数据、模拟常规业务操作第四阶段(40分钟)利用SQL语句创建索引和视图、创建触发器第五阶段(60分钟)利用SQL语句创建3个存储过程并测试第六阶段(20分钟)利用SQL语句创建转帐事务并测试第七阶段(20分钟)利用SQL语句创建系统维护帐号并授权,14,第一阶段,第一阶段(50分钟)利用PowerDesigner设计E-R图要求学员自己动手操作,教员巡视,解答学员提出的问题,15,阶段检查,针对第一阶段抽查学员的操作结果教员给出点评或集中演示难点部分,16,第一阶段结果演示1,第一阶段操作的结果:?加吗?,17,第二阶段,第二阶段(50分钟)利用SQL语句实现建库、建表、加约束、建关系要求学员自己动手编写SQL语句,教员巡视,解答学员提出的问题,18,阶段检查,针对第二阶段抽查学员的编码结果教员给出点评或集中演示难点部分,19,第二阶段标准代码演示-1,建库,IFexists(SELECT*FROMsysdatabasesWHEREname=bankDB)DROPDATABASEbankDBGOCREATEDATABASEbankDBON(NAME=bankDB_data,FILENAME=d:bankbankDB_data.mdf,SIZE=1mb,FILEGROWTH=15%)LOGON(.,检验数据库是否存在,如果为真,删除此数据库,创建建库bankDB,20,第二阶段标准代码演示-2,建表:,USEbankDBGOCREATETABLEuserInfo用户信息表(customerIDINTIDENTITY(1,1),customerNameCHAR(8)NOTNULL,PIDCHAR(18)NOTNULL,telephoneCHAR(13)NOTNULL,addressVARCHAR(50)GO,CREATETABLEcardInfo-银行卡信息表(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)GO,21,第三阶段,第三阶段(60分钟):利用SQL语句实现插入测试数据、常规业务操作要求学员自己动手操作,教员巡视,解答学员提出的问题,22,阶段检查,针对第三阶段抽查学员的编码结果抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果教员给出点评,23,第三阶段标准代码演示-1,张三和李四开户:,SETNOCOUNTON-不显示受影响的条数信息INSERTINTOuserInfo(customerName,PID,telephone,address)VALUES(张三,123456789012345北京海淀)INSERTINTOcardInfo(cardID,savingType,openMoney,balance,customerID)VALUES(1010357612345678,活期,1000,1000,1)INSERTINTOuserInfo(customerName,PID,telephone)VALUES(李四,321245678912345678INSERTINTOcardInfo(cardID,savingType,openMoney,balance,customerID)VALUES(1010357612121134,定期,1,1,2)SELECT*FROMuserInfoSELECT*FROMcardInfoGO,24,第三阶段标准代码演示-2,张三的卡号取款900元,李四的卡号存款5000元,/*-交易信息表插入交易记录-*/INSERTINTOtransInfo(transType,cardID,transMoney)VALUES(支取,1010357612345678,900)/*-更新银行卡信息表中的现有余额-*/UPDATEcardInfoSETbalance=balance-900WHEREcardID=1010357612345678/*-交易信息表插入交易记录-*/INSERTINTOtransInfo(transType,cardID,transMoney)VALUES(存入,1010357612121134,5000)/*-更新银行卡信息表中的现有余额-*/UPDATEcardInfoSETbalance=balance+5000WHEREcardID=1010357612121134GO,25,第三阶段标准代码演示-3,修改密码和挂失帐号,/*-修改密码-*/-1.张三(卡号为1010357612345678)修改银行卡密码为123456-2.李四(卡号为1010357612121134)修改银行卡密码为123123updatecardInfosetpass=123456WHEREcardID=1010357612345678updatecardInfosetpass=123123WHEREcardID=1010357612121134SELECT*FROMcardInfo/*-李四的卡号挂失-*/updatecardInfosetIsReportLoss=1WHEREcardID=1010357612121134SELECT*FROMcardInfoGO,26,第三阶段标准代码演示-4,统计银行的资金流通余额和盈利结算,DECLAREinMoneymoneyDECLAREoutMoneymoneyDECLAREprofitmoneySELECTinMoney=sum(transMoney)FROMtransInfoWHERE(transType=存入)SELECToutMoney=sum(transMoney)FROMtransInfoWHERE(transType=支取)print银行流通余额总计为:+convert(varchar(20),inMoney-outMoney)+RMBsetprofit=outMoney*0.008-inMoney*0.003print盈利结算为:+convert(varchar(20),profit)+RMBGO,27,第三阶段标准代码演示-5,其他操作,/*-查询本周开户的卡号,显示该卡相关信息-*/SELECT*FROMcardInfoWHERE(DATEDIFF(Day,getDate(),openDate)0)beginprint转帐失败!rollbacktranendelsebeginprint转帐成功!committranendGO,-调用上述事务过程转帐declarecard1char(19),card2char(19)selectcard1=cardIDfromcardInfoInnerJoinuserInfoONcardInfo.customerID=userInfo.customerIDwherecustomerName=李四selectcard2=cardIDfromcardInfoInnerJoinuserInfoONcardInfo.customerID=userInfo.customerIDwherecustomerName=张三EXECproc_transfercard1,card2,2000GO,40,第七阶段,第七阶段(60分钟):利用SQL语句创建系统维护帐号并授权要求学员自己动手操作,教员巡视,解答学员提出的问题,41,阶段检查,针对第三阶段抽查学员的编码结果抽查学员编写的完整代码,要求学员上台讲解,并演示运行结果教员给出点评,42,第七阶段标准代码演示-1,添加系统维护帐号sysAdmin,并授权,-1.添加S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论