數(shù)據(jù)庫ATM自動取款機系統(tǒng)_第1頁
數(shù)據(jù)庫ATM自動取款機系統(tǒng)_第2頁
數(shù)據(jù)庫ATM自動取款機系統(tǒng)_第3頁
數(shù)據(jù)庫ATM自動取款機系統(tǒng)_第4頁
數(shù)據(jù)庫ATM自動取款機系統(tǒng)_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、長 沙 學 院課程設計說明書題目ATM系統(tǒng)系(部)計算機科學與技術系專業(yè)(班級)軟件五班姓名學號指導教師起止日期2013.6.132013.06.22實訓任務書課程名稱:服務外包軟件綜合實訓設計題目:ATM系統(tǒng)已知技術參數(shù)和設計要求:1 實訓目的要求通過本實訓,應能夠對SQLServer20005工具的了解,與數(shù)據(jù)庫語法的能力。1)了解SQL的簡史和功能特性。2)掌握E-R圖的繪制和數(shù)據(jù)庫的設計。3)掌握T-SQL的語法知識,并能夠熟練運用它。 4)掌握事務與存儲過程的使用。2 問題描述(功能要求):本次案例將完成一個ATM銀行取款機系統(tǒng)的數(shù)據(jù)庫。(1) 創(chuàng)建BankDB數(shù)據(jù)庫。并保存在D:A

2、TM文件夾下。 (2) 創(chuàng)建用戶信息表(userinfo) (3) 創(chuàng)建銀行卡信息表(cardinfo) (4) 創(chuàng)建交易信息表(transinfo) (5) 添加各種約束關系:Ø 為userinfo表中客戶ID(customerID)添加主鍵約束。Ø 為userinfo表中客戶的身份證(PID)添加唯一約束Ø 為useinfo表中的身份證號碼添加檢查約束,長度為15或者18Ø 為userinfo表中的客戶電話號碼添加檢查約束。Ø 為cardinfo表中的卡號ID(cardID)添加主鍵約束Ø 為cardinfo表中的卡號ID(car

3、dID)添加約束,必須是以Ø 1010 3576開頭,長度為12Ø 為cardinfo表中的貨幣類型(curType)添加默認約束,默認為RMB。Ø 為cardinfo表中的存款類型添加約束,只能是活期、定活兩便和定期。Ø cardinfo表中開卡日期默認為當天日期。Ø cardinfo表中的開戶金額不能低于1元。Ø cardinfo表中的余額不能低于1元。Ø cardinfo表中的密碼長度為6位數(shù)。默認為88888。Ø cardinfo表中是否掛失只能是是和否。默認為否Ø 添加userinfo表與car

4、dinfo表的外鍵約束。Ø transinfo表中的交易日期默認為當天。Ø 交易類型只能是存入和支取。Ø 添加cardinfo表與transinfo表的外鍵約束。(6)開戶(7)取錢(8)存錢(9)查詢余額(10)轉賬(11)交易統(tǒng)計3. 運行環(huán)境要求:(1)客戶端:windows操作系統(tǒng),SQL Server 2005 數(shù)據(jù)庫客戶端(2)服務器:SQL Server 2005 數(shù)據(jù)庫服務器、4. 技術要求:1)掌握E-R圖的繪制和數(shù)據(jù)庫的設計。2)掌握T-SQL的語法知識,并能夠熟練運用它。 3)掌握事務與存儲過程的使用。 4) 觸發(fā)器(選做)設計工作量:40課

5、時工作計劃:(1) 2011級軟件工程所有班級20課時: 設計,計算機系機房/普通教室。16課時:上機、調試。計算機系機房4課時:答辯。計算機系機房。班級日期節(jié)次地點內容指導老師11軟件5班15周周四9-12節(jié)致遠樓1201布置任務、上機調試曾俊勇15周周五9-12節(jié)致遠樓1201上機調試15周周六9-12節(jié)致遠樓1201上機調試16周周一9-12節(jié)致遠樓1401上機調試16周周二9-12節(jié)致遠樓1401上機調試16周周三9-12節(jié)致遠樓1401上機調試16周周四9-12節(jié)致遠樓1201上機調試16周周五9-12節(jié)致遠樓1201上機調試16周周六5-8節(jié)致遠樓1404上機調試16周周六9-12

6、節(jié)致遠樓1201答辯指導教師簽名:日期:教研室主任簽名: 日期:系主任簽名: 日期:長沙學院課程設計鑒定表姓名學號專業(yè)軟件工程班級軟件五班設計題目ATM自動取款機系統(tǒng)指導教師曾俊勇指導教師意見: 評定等級: 教師簽名: 日期: 答辯小組意見:評定等級:答辯小組長簽名:日期:教研室意見:教研室主任簽名: 日期: 系(部)意見:系主任簽名:日期:說明課程設計成績分“優(yōu)秀”、“良好”、“及格”、“不及格”四類;目 錄一、引言61.1編寫目的61.2參考資料6二、需求規(guī)約72.1 業(yè)務描述72.2 需求分析7三、數(shù)據(jù)庫環(huán)境說明8四、數(shù)據(jù)庫的命名規(guī)則84.1 數(shù)據(jù)庫對象命名規(guī)則84.2 數(shù)據(jù)項編碼規(guī)則8

7、五、邏輯設計95.1 E-R圖95.2 關系模型9六、物理設計106.1表匯總106.2表1: userinfo表( 用戶信息表)106.3表2: cardinfo表( 銀行卡信息表)116.4表3: transinfo表(供應表)126.5 存儲過程的設計136.6 觸發(fā)器的設計18七、操作結果207.1 存款測試結果207.2 取款測試結果207.3 轉賬測試結果217.4 注銷結果測試21八、事物設計238.1 事物的創(chuàng)建23總結25一、引言1.1編寫目的通過數(shù)據(jù)庫ATM實訓,進一步掌握數(shù)據(jù)庫系統(tǒng)的理論和方法。培養(yǎng)和鍛煉開發(fā)管理信息系統(tǒng)的能力。為今后信息系統(tǒng)開發(fā)打下良好的基礎。本文檔是A

8、TM系統(tǒng)設計文檔的組成部分,數(shù)據(jù)庫是一門應用性很強的專業(yè)課,在學習時必須注意理論與實踐相結合。本次課程環(huán)節(jié)旨在培養(yǎng)學生在本課程范圍內,初步掌握解決實際應用問題時所應具備的查閱資料、綜合運用所學知識的能力,為畢業(yè)設計及今后從事專業(yè)工作打下基礎。本課程環(huán)節(jié)要求學生了解企業(yè)管理信息系統(tǒng)后臺數(shù)據(jù)庫的設計、配置過程,掌握管理信息系統(tǒng)的開發(fā)方法。主要包括:需求分析、數(shù)據(jù)分析、系統(tǒng)邏輯模型設計方法;功能設計、物理模型設計方法;系統(tǒng)的實現(xiàn)等方法。完成一個小型系統(tǒng)后臺數(shù)據(jù)庫的設計與配置。目的是:明確數(shù)據(jù)庫的表名、字段名等數(shù)據(jù)信息,用來指導后期的數(shù)據(jù)庫腳本的開發(fā),設計該數(shù)據(jù)庫的目的是設計一個ATM系統(tǒng),能夠按照一

9、定條件查詢、統(tǒng)計交易信息,可以模擬完成開戶、存款、取款、轉賬、注銷、掛失、激活、修改密碼、查詢等業(yè)務。1.2參考資料資料名稱作者文件編號、版本數(shù)據(jù)庫系統(tǒng)概論王珊、薩師煊2006年5月第4版數(shù)據(jù)庫設計入門經(jīng)典鮑威爾2007年3月第1版數(shù)據(jù)庫原理克羅恩科2005年6月第1版二、 需求規(guī)約2.1 業(yè)務描述ATM系統(tǒng)業(yè)務是模擬了銀行ATM提款機業(yè)務的管理功能。在計算機網(wǎng)絡,數(shù)據(jù)庫和先進的開發(fā)平臺上,利用數(shù)據(jù)庫sql語言模擬開發(fā)一個良好的ATM系統(tǒng),實現(xiàn)顧客的開戶、存款、取款、查詢、轉賬、修改密碼等一系列操作。并且在完成一定的操作后保存數(shù)據(jù)的更新和查詢。在轉賬和取款時還要核對余額是否足夠,在足夠的條件下

10、才能執(zhí)行。存儲內容則是存儲用戶的一些信息,如電話號碼和身份證號碼等,一些用戶的詳細資料,還有卡號表中的金額的信息,并對這些信息能夠及時更新。2.2 需求分析開戶功能: 新客戶需要開戶之后才能擁有相應的卡,并對其進行各種交易。在存入一定金額后可以登錄或跳轉到交易的界面,進行各種交易。存款功能:客戶要能夠正確地存款,能夠準確地更新客戶賬號中的余額,并且記錄客戶的操作。 l 取款功能:判斷客戶的余額是否大于取款金額,避免出現(xiàn)溢出現(xiàn)象,操作結果記錄在表中。轉賬功能: 準確核對客戶的賬戶信息,核對轉入賬號的信息,判斷轉出賬號的余額是否大于轉出金額,避免出現(xiàn)溢出現(xiàn)象,并記錄轉

11、出賬號和轉入賬號的操作。注銷功能: 老用戶可在此注銷自己原有的卡。掛失功能: 當客戶遺失自己卡后,需對卡進行掛失操作,否則該卡的余額取不出。激活功能: 客戶遺失自己卡并找到卡后,可對卡進行激活操作,以便繼續(xù)使用該卡。修改密碼功能: 客戶可在此功能下修改卡的原始密碼。查詢功能: 查詢客戶余額 ;查詢客戶的賬號信息 ;查詢客戶的操作記錄;三、 數(shù)據(jù)庫環(huán)境說明數(shù)據(jù)庫實例數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫部署環(huán)境數(shù)據(jù)庫設計工具數(shù)據(jù)庫存放位置說明ATM自動取款機系統(tǒng)Sql Server 2008Windows 2007Sql Server存放位置,絕對路徑/相對路徑用于ATM自動取款四、 數(shù)

12、據(jù)庫的命名規(guī)則4.1 數(shù)據(jù)庫對象命名規(guī)則數(shù)據(jù)庫對象命名規(guī)則備注表字符串功能描述字符串例如:Client客戶信息表視圖_View功能描述字符串例如:all_view每個客戶訂單數(shù)視圖觸發(fā)器_trigger功能描述字符串例如:Decre_trigger減少庫存觸發(fā)器存儲過程proce_ 功能描述字符串例如:proce_SearchClient查詢客戶 信息存儲過程 4.2 數(shù)據(jù)項編碼規(guī)則數(shù)據(jù)項命名規(guī)則數(shù)據(jù)類型長度范圍備注編號類整數(shù)序號整型0-65535無姓名類字符串Varchar(20)0-20位無地址類字符串Varchar(20)0-20位無電話類字符串Char(11)11位無價格類浮點型flo

13、at無無時間類Datetime型Datetime無2011-01-01 10:10:10五、 邏輯設計5.1 E-R圖用戶信息表戶名顧客編號顧客編號PID聯(lián)系電話居住地址銀行卡信息表表卡號密碼貨幣類型是否掛失余額顧客編號開戶金額開戶日期屬于交易信息表屬于交易日期交易金額交易類型卡號備注1NMN交易號5.2 關系模型注:下劃線為主碼,下劃波浪線為外碼用戶(顧客編號,開戶名,身份證號碼,聯(lián)系電話,居住地址)銀行卡(卡號,顧客編號,密碼,開戶金額,開戶日期,是否掛失,余額,存款類型,貨幣類型)交易(交易號,卡號,交易金額,交易日期,交易類型,備注)六、 物理設計6.1表匯總表名功能說明表userin

14、fo用戶信息表,存儲用戶信息等表cardinfo銀行卡信息表,存儲銀行卡信息等表transinfo交易信息表,存儲客戶的交易信息信息等6.2表1: userinfo表( 用戶信息表)表名用戶信息表(userinfo)數(shù)據(jù)庫用戶sa主鍵customer_ID其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認值約束條件/說明1customer_IDintNY無無identity(1,1)主鍵/客戶編號2customer_namechar(10)NN無無客戶姓名3P_IDvarchar(18)NY無無check(len(P_ID)=15 or len(P_ID

15、)=18)身份證號碼4customer_phonevarchar(11)YN無無check(customer_phone like '0-90-90-90-90-90-90-90-90-90-90-9' )聯(lián)系電話5customer_addressvarchar(50) YN無無居住地址sql腳本create table userinfo( customer_ID int identity(1,1) primary key,-顧客編號 customer_name char(10) not null,-開戶名 P_ID varchar(18) unique check(len(P

16、_ID)=15 or len(P_ID)=18) not null,-身份證號碼 customer_phone varchar(11) check(customer_phone like '0-90-90-90-90-90-90-90-90-90-90-9' ),-聯(lián)系電話 customer_address varchar(50) -居住地址 );6.3表2: cardinfo表( 銀行卡信息表)表名銀行卡信息表(cardinfo)數(shù)據(jù)庫用戶sa主鍵card_ID其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認值約束條件/說明1card

17、_IDchar(19) NY無無check(card_ID like '1010 3576 0-90-90-90-9 0-90-90-90-9')主鍵/卡號2customer_ID int NY無無外鍵/顧客編號3card_passwordchar(6)NN無無default '888888' check(len(card_password)=6)密碼4open_moneymoneyNN無無check(open_money>=1)開戶金額5open_datedatetimeNN無無default 'getdate() '開戶日期6isrep

18、ortlosschar(2)YN無無default '否' check(isreportloss='是' or isreportloss='否')掛失狀態(tài)7balancemoneyNN無無check(balance>=1)余額8saving_typevarchar(10)NN無無check(saving_type like '活期' or saving_type like '定活兩便' or saving_type like'定期')存款類型9cur_typechar(5)NN無無defaul

19、t 'RMB' /貨幣類型sql腳本create table cardinfo( card_ID char(19) check(card_ID like '1010 3576 0-90-90-90-9 0-90-90-90-9') primary key,-卡號 customer_ID int,-顧客編號 card_password char(6) not null default '888888 ' check(len(card_password)=6),-卡密碼 open_money money not null check(open_mon

20、ey>=1),-開戶金額 open_date datetime default 'getdate() ' not null, -開戶日期 isreportloss char(2) default '否' check(isreportloss='是' or isreportloss='否'), -是否掛失 balance money not null check(balance>=1), -余額 saving_type varchar(10) not null check(saving_type like '活期

21、' or saving_type like '定活兩便' or saving_type like'定期'),-存款類型 cur_type char(5) not null default 'RMB' ,-貨幣類型 foreign key (customer_ID) references userinfo(customer_ID) on delete cascade on update cascade);6.4表3: transinfo表(供應表)表名交易信息表(transinfo)數(shù)據(jù)庫用戶sa主鍵trans_ID其他排序字段無索引字段無

22、序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認值約束條件/說明1trans_IDintNY無無identity(1,1)主鍵/交易號2card_IDchar(19)NY無無check(card_ID like '1010 3576 0-90-90-90-9 0-90-90-90-9')外鍵/卡號3trans_moneymoneyNN無無check(trans_money>0)/交易金額4trans_datedetetimeNN無無default'getdate()'交易日期5trans_typevarchar(5)NN無無check(t

23、rans_type like '存入' or trans_type like '支取')交易類型6remarkvarchar(50)YN無無備注sql腳本create table transinfo( trans_ID int identity(1,1) primary key,-交易號 card_ID char(19) not null check(card_ID like '1010 3576 0-90-90-90-9 0-90-90-90-9') ,-卡號 trans_money money not null check(trans_mon

24、ey>0),-交易金額 trans_date datetime not null default'getdate()',-交易日期 trans_type varchar(5) check(trans_type like '存入' or trans_type like '支取'),-交易類型 remark varchar(50), -備注 foreign key (card_ID) references cardinfo(card_ID) on delete cascade on update cascade)6.5 存儲過程的設計1、開戶存

25、儲過程-提示:銀行卡卡號共19位(4位數(shù)一組,中間用空格隔開),對于某個銀行來說,前面8個數(shù)字是固定的,后面8個數(shù)字-要求隨機的,并且唯一。我們只需要產(chǎn)生8位隨機的數(shù)字,然后和前8位固定的數(shù)字“10103576”連接即可。隨機函數(shù)的用法下:-RAND(隨機種子):將產(chǎn)生01的隨機數(shù),要求每次的隨機種子不一樣。為了保證隨機種子每次不相同,一般的算法如下:-隨機種子=當前的月份數(shù)×100000 + 當前秒數(shù)×1000 +當前毫秒數(shù)-產(chǎn)生了01的隨機數(shù)后,我們取小數(shù)點后8位,即:0.xxxxxxxx-使用substring(字符串,開始位置,長度)create procedure

26、 proc_CardID2 randCardID char(19) output, -輸出參數(shù)-銀行卡號 card_password char(6), -賬號密碼 open_money money, -開戶金額 isreportloss char(2), -是否掛失 saving_type varchar(10), -存款類型 cur_type char(5), -貨幣類型 customer_name char(10), -用戶姓名 P_ID varchar(18) -身份證號AS declare r numeric(15,8) -15位數(shù),保留8位小數(shù)declare tempStr char

27、(10)select r=rand(datepart(mm,getdate()*100000)+ (datepart(ss,getdate()*1000)+datepart(ms,getdate() set tempStr=rset randCardID='1010 3576 '+substring(tempStr,3,4)+' '+substring(tempStr,7,4) -若存在該客戶信息 declare customer_ID int if EXISTS(select * from userinfo where P_ID=P_ID) begin - 禁

28、用CHECK約束 alter table cardinfo nocheck constraint ALL; select customer_ID=customer_ID from userinfo where(P_ID=P_ID ) insert into cardinfo(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

29、(),isreportloss,open_money,saving_type,cur_type) - 啟用CHECK約束 alter table cardinfo check constraint ALL; end else begin print'需注冊用戶信息!請先登記您的詳細信息.' end-執(zhí)行存儲過程:declare randCardID char(19)print '您的卡號為:'+randCardID2、存錢存儲過程在存儲過程中定義三個變量,card_ID char(19), inputmoney money和card_password char(

30、6),這三個變量是用來核對賬號的。card_ID char(19)用來核對卡號是否正確,inputmoney money暫時存儲需要存入的金額,card_password char(6)則是用來核對密碼的。存儲過程中對所有需要核對的信息都進行了準確的核對,例如核對賬號是否處于掛失狀態(tài),核對賬號密碼是否正確。在核對完所有的信息之后才準確地完成操作。存錢存儲過程如下:create procedure proc_inputMoney card_ID char(19), inputmoney money , card_password char(6) as declare errorsum int s

31、et errorsum=0 declare isreportloss char(2) select isreportloss=isreportloss from cardinfo where card_ID=card_ID and card_password=card_password if(isreportloss='是') begin print '交易正在進行中.' print '帳戶處于掛失狀態(tài)則不可以存款' end else if (cast(inputmoney as int)%100<>0) begin print &#

32、39;交易正在進行中.' print '存款金額為100的整數(shù)倍' end else if(inputmoney>10000) begin print '交易正在進行中.' print '存款金額不能大于10000' end else begin begin transaction update cardinfo set balance=balance+inputmoney where card_ID=card_ID and card_password=card_password insert transinfo(card_ID,t

33、rans_money,trans_date,trans_type,remark) values (card_ID,inputmoney ,getdate(),'存入','無') declare money money select money=balance from cardinfo where card_ID=card_ID and card_password=card_password print '交易正在進行中.' print '卡號:'+card_ID+' 余額'+convert(char(19),mo

34、ney) print '交易成功' if(error<>0) begin rollback transaction end commit transaction end-執(zhí)行存儲過程:exec proc_inputMoney '1010 3576 1111 1111',500,'123456'3、取錢存儲過程在存儲過程中定義三個變量,card_ID char(19), takemoney money和card_password char(6),這三個變量是用來核對賬號的。card_ID char(19)用來核對卡號是否正確,takem

35、oney money暫時存儲需要取出的金額,并且用該變量存儲的值與數(shù)據(jù)庫中的值進行比較,如果變量中的值大于數(shù)據(jù)庫中存儲的余額的,則不進行取款操作,card_password char(6)則是用來核對密碼的。存儲過程中對所有需要核對的信息都進行了準確的核對,例如核對賬號是否處于掛失狀態(tài),核對賬號密碼是否正確。在核對完所有的信息之后才準確地完成操作。取錢存儲過程如下:create proc proc_takeMoney card_ID char(19),-卡號 takemoney money,-取款金額 card_password char(6) -密碼as declare errorsum i

36、nt -錯誤基數(shù) set errorsum=0begin transaction -開始取款 if not EXISTS( select card_ID from cardinfo where card_ID=card_ID and card_password=card_password) begin print '交易正在進行中.' print '賬號或密碼輸入不正確,請重輸:' end else begin if EXISTS(select * from cardinfo where isreportloss='是')-判斷卡是否掛失 beg

37、in print '交易正在進行中.' print '帳戶處于掛失狀態(tài)則不可以取款' end else begin if (cast(takemoney as int)%100<>0)-判斷取款金額是否為100的整數(shù)倍 begin print '交易正在進行中.' print '取款金額應為100的整數(shù)倍' end else begin declare money money select money=balance from cardinfo where card_ID=card_ID and card_passwo

38、rd=card_password if(takemoney>money) -取款金額不能超過卡上余額 begin print '交易正在進行中.' print '余額不足' end else begin update cardinfo set balance=balance-takemoney where card_ID=card_ID and card_password=card_passwordinsert transinfo(card_ID,trans_money,trans_date,trans_type,remark) values (card_

39、ID,takemoney ,getdate(),'支取','無') declare balance money -余額 select balance=balance from cardinfo where card_ID=card_ID and card_password=card_password if(error<>0)begin rollback transactionendelse begincommit transactionprint '交易正在進行中.'print '卡號:'+card_ID +'

40、 余額'+convert(char(19),balance) print '交易成功' end end end end end -執(zhí)行存儲過程:exec proc_takeMoney '1010 3576 1111 1111',100,'123456'4、轉賬存儲過程:在存儲過程中定義三個變量,card_ID char(19), card_ID2 char(19)和transmoney money,這三個變量是用來核對賬號的。card_ID char(19)用來核對轉出卡號是否正確,transmoney money暫時存儲需要轉出的金額,

41、并且用這個變量中的值與數(shù)據(jù)庫中存儲的余額值進行比較,如果這個轉出值大于數(shù)據(jù)庫中的余額值,則不能執(zhí)行操作。card_ID2 char(19)則是用來核對轉入賬號的。在轉賬的存儲過程中,轉入的賬號核對是非常重要的。存儲過程中對所有需要核對的信息都進行了準確的核對,例如核對賬號是否處于掛失狀態(tài),核對賬號密碼是否正確。在核對完所有的信息之后才準確地完成操作。轉賬存儲過程如下:create proc proc_transaccountscard_ID char(19),-卡號card_ID2 char(19),transmoney moneyasbegin tran-開始執(zhí)行事務 declare mon

42、ey int -轉賬出錢,減去轉出的金額 select money=balance-transmoney -驗證是否超額 from cardinfo where card_ID=card_IDif (money > 1) -驗證余額begininsert transinfo(card_ID,trans_money,trans_date,trans_type,remark) values (card_ID,transmoney,getdate(),'支取','無')update cardinfoset balance=balance-transmoneywh

43、ere card_ID=card_ID and balance-transmoney>0 update cardinfo -轉賬進錢,加上轉出的金額set balance=balance+transmoneywhere card_ID2=card_ID insert transinfo(card_ID,trans_money,trans_date,trans_type,remark) values (card_ID2,transmoney,getdate(),'存入','無')print '恭喜您,轉賬成功!'commit tranif (

44、error<>0) rollback tranreturn 0end elsebeginprint '余額不足,無法轉賬'end-執(zhí)行存儲過程:exec proc_transaccounts '1010 3576 1111 2222','1010 3576 1111 1111',150由于每個操作都用到了存儲過程,所以列出以上具有代表性的存儲過程。6.6 觸發(fā)器的設計1、建立觸發(fā)器Decre_trigger:當用戶注銷賬號時,執(zhí)行delete過程。在cardinfo表中出現(xiàn)delete過程時觸發(fā)。執(zhí)行delete用戶表中的用戶編號功能

45、:能夠根據(jù)數(shù)據(jù)庫中數(shù)據(jù)的變化來注銷掉選中的用戶信息-觸發(fā)器- -當用戶注銷賬號時,執(zhí)行delete過程 -在cardinfo表中出現(xiàn)delete過程時觸發(fā) -執(zhí)行delete用戶表中的用戶編號 - create trigger Decre_trigger on cardinfo after delete asdeclare card_ID char(19),customer_id intselect card_ID=card_ID,customer_id=customer_id from deletedbeginprint '開始注銷用戶信息!'delete from user

46、info where customer_id=customer_idprint '恭喜您,用戶信息注銷成功!' end -注銷的過程的創(chuàng)建-用戶注銷卡-核對卡賬號密碼-執(zhí)行delete注銷create proc proc_dropcardcard_ID char(19),card_password char(6)asbegin transaction if EXISTS( select card_id from cardinfo where card_ID=card_ID and card_password=card_password)-核對卡號 begin print 

47、9;請等待' print'開始注銷卡' delete from cardinfo where card_id=card_ID and card_password=card_password print '注銷成功' commit transaction end else begin print '您的卡不存在,無需注銷' rollback transaction end-執(zhí)行注銷過程:exec proc_dropcard '1010 3576 1111 1111','111111'七、操作結果7.1 存款測

48、試結果在執(zhí)行存儲過程的時候同事執(zhí)行兩行查詢語句,查詢卡上存款前后的信息,進行對照,來檢測存儲過程的設計是都正確,檢測存儲過程的執(zhí)行是否正確。該存儲過程執(zhí)行的是將卡號為1010 3576 1111 1111中的的balance存入500,可以看到balance的值由開始的100變?yōu)?00.執(zhí)行中沒有出現(xiàn)報錯現(xiàn)象,說明存儲過程的設計和執(zhí)行都是正確的。執(zhí)行結果如下圖:圖7.1 存款前后結果查詢7.2 取款測試結果在執(zhí)行存儲過程的時候同事執(zhí)行兩行查詢語句,查詢卡上取款款前后的信息,進行對照,來檢測存儲過程的設計是都正確,檢測存儲過程的執(zhí)行是否正確。該存儲過程執(zhí)行的是將卡號為1010 3576 1111

49、 1111中的的balance取出100,可以看到balance的值由開始的600變?yōu)?00.執(zhí)行中沒有出現(xiàn)報錯現(xiàn)象,說明存儲過程的設計和執(zhí)行都是正確的。執(zhí)行結果如下圖:圖7.2取款前后結果查詢7.3 轉賬測試結果在執(zhí)行存儲過程的時候同事執(zhí)行兩行查詢語句,查詢卡上取款款前后的信息,進行對照,來檢測存儲過程的設計是都正確,檢測存儲過程的執(zhí)行是否正確。該存儲過程執(zhí)行的是將卡號為1010 3576 1111 2222中的的balance轉出150到卡號為1010 3576 1111 1111中去,可以看到1010 3576 1111 1111卡中balance的值由開始的500變?yōu)?50。1010 3576 1111 2222卡中balance的值由開始的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論