




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、長 沙 學(xué) 院課程設(shè)計說明書題目ATM系統(tǒng)系(部)計算機科學(xué)與技術(shù)系專業(yè)(班級)軟件五班姓名學(xué)號指導(dǎo)教師起止日期2013.6.132013.06.22實訓(xùn)任務(wù)書課程名稱:服務(wù)外包軟件綜合實訓(xùn)設(shè)計題目:ATM系統(tǒng)已知技術(shù)參數(shù)和設(shè)計要求:1 實訓(xùn)目的要求通過本實訓(xùn),應(yīng)能夠?qū)QLServer20005工具的了解,與數(shù)據(jù)庫語法的能力。1)了解SQL的簡史和功能特性。2)掌握E-R圖的繪制和數(shù)據(jù)庫的設(shè)計。3)掌握T-SQL的語法知識,并能夠熟練運用它。 4)掌握事務(wù)與存儲過程的使用。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) 添加各種約束關(guān)系:Ø 為userinfo表中客戶ID(customerID)添加主鍵約束。Ø 為userinfo表中客戶的身份證(PID)添加唯一約束Ø 為useinfo表中的身份證號碼添加檢查約束,長度為15或者18Ø 為userinfo表中的客戶電話號碼添加檢查約束。Ø 為cardinfo表中的卡號ID(cardID)添加主鍵約束Ø 為cardinfo表中的卡號ID(car
3、dID)添加約束,必須是以Ø 1010 3576開頭,長度為12Ø 為cardinfo表中的貨幣類型(curType)添加默認(rèn)約束,默認(rèn)為RMB。Ø 為cardinfo表中的存款類型添加約束,只能是活期、定活兩便和定期。Ø cardinfo表中開卡日期默認(rèn)為當(dāng)天日期。Ø cardinfo表中的開戶金額不能低于1元。Ø cardinfo表中的余額不能低于1元。Ø cardinfo表中的密碼長度為6位數(shù)。默認(rèn)為88888。Ø cardinfo表中是否掛失只能是是和否。默認(rèn)為否Ø 添加userinfo表與car
4、dinfo表的外鍵約束。Ø transinfo表中的交易日期默認(rèn)為當(dāng)天。Ø 交易類型只能是存入和支取。Ø 添加cardinfo表與transinfo表的外鍵約束。(6)開戶(7)取錢(8)存錢(9)查詢余額(10)轉(zhuǎn)賬(11)交易統(tǒng)計3. 運行環(huán)境要求:(1)客戶端:windows操作系統(tǒng),SQL Server 2005 數(shù)據(jù)庫客戶端(2)服務(wù)器:SQL Server 2005 數(shù)據(jù)庫服務(wù)器、4. 技術(shù)要求:1)掌握E-R圖的繪制和數(shù)據(jù)庫的設(shè)計。2)掌握T-SQL的語法知識,并能夠熟練運用它。 3)掌握事務(wù)與存儲過程的使用。 4) 觸發(fā)器(選做)設(shè)計工作量:40課
5、時工作計劃:(1) 2011級軟件工程所有班級20課時: 設(shè)計,計算機系機房/普通教室。16課時:上機、調(diào)試。計算機系機房4課時:答辯。計算機系機房。班級日期節(jié)次地點內(nèi)容指導(dǎo)老師11軟件5班15周周四9-12節(jié)致遠樓1201布置任務(wù)、上機調(diào)試曾俊勇15周周五9-12節(jié)致遠樓1201上機調(diào)試15周周六9-12節(jié)致遠樓1201上機調(diào)試16周周一9-12節(jié)致遠樓1401上機調(diào)試16周周二9-12節(jié)致遠樓1401上機調(diào)試16周周三9-12節(jié)致遠樓1401上機調(diào)試16周周四9-12節(jié)致遠樓1201上機調(diào)試16周周五9-12節(jié)致遠樓1201上機調(diào)試16周周六5-8節(jié)致遠樓1404上機調(diào)試16周周六9-12
6、節(jié)致遠樓1201答辯指導(dǎo)教師簽名:日期:教研室主任簽名: 日期:系主任簽名: 日期:長沙學(xué)院課程設(shè)計鑒定表姓名學(xué)號專業(yè)軟件工程班級軟件五班設(shè)計題目ATM自動取款機系統(tǒng)指導(dǎo)教師曾俊勇指導(dǎo)教師意見: 評定等級: 教師簽名: 日期: 答辯小組意見:評定等級:答辯小組長簽名:日期:教研室意見:教研室主任簽名: 日期: 系(部)意見:系主任簽名:日期:說明課程設(shè)計成績分“優(yōu)秀”、“良好”、“及格”、“不及格”四類;目 錄一、引言61.1編寫目的61.2參考資料6二、需求規(guī)約72.1 業(yè)務(wù)描述72.2 需求分析7三、數(shù)據(jù)庫環(huán)境說明8四、數(shù)據(jù)庫的命名規(guī)則84.1 數(shù)據(jù)庫對象命名規(guī)則84.2 數(shù)據(jù)項編碼規(guī)則8
7、五、邏輯設(shè)計95.1 E-R圖95.2 關(guān)系模型9六、物理設(shè)計106.1表匯總106.2表1: userinfo表( 用戶信息表)106.3表2: cardinfo表( 銀行卡信息表)116.4表3: transinfo表(供應(yīng)表)126.5 存儲過程的設(shè)計136.6 觸發(fā)器的設(shè)計18七、操作結(jié)果207.1 存款測試結(jié)果207.2 取款測試結(jié)果207.3 轉(zhuǎn)賬測試結(jié)果217.4 注銷結(jié)果測試21八、事物設(shè)計238.1 事物的創(chuàng)建23總結(jié)25一、引言1.1編寫目的通過數(shù)據(jù)庫ATM實訓(xùn),進一步掌握數(shù)據(jù)庫系統(tǒng)的理論和方法。培養(yǎng)和鍛煉開發(fā)管理信息系統(tǒng)的能力。為今后信息系統(tǒng)開發(fā)打下良好的基礎(chǔ)。本文檔是A
8、TM系統(tǒng)設(shè)計文檔的組成部分,數(shù)據(jù)庫是一門應(yīng)用性很強的專業(yè)課,在學(xué)習(xí)時必須注意理論與實踐相結(jié)合。本次課程環(huán)節(jié)旨在培養(yǎng)學(xué)生在本課程范圍內(nèi),初步掌握解決實際應(yīng)用問題時所應(yīng)具備的查閱資料、綜合運用所學(xué)知識的能力,為畢業(yè)設(shè)計及今后從事專業(yè)工作打下基礎(chǔ)。本課程環(huán)節(jié)要求學(xué)生了解企業(yè)管理信息系統(tǒng)后臺數(shù)據(jù)庫的設(shè)計、配置過程,掌握管理信息系統(tǒng)的開發(fā)方法。主要包括:需求分析、數(shù)據(jù)分析、系統(tǒng)邏輯模型設(shè)計方法;功能設(shè)計、物理模型設(shè)計方法;系統(tǒng)的實現(xiàn)等方法。完成一個小型系統(tǒng)后臺數(shù)據(jù)庫的設(shè)計與配置。目的是:明確數(shù)據(jù)庫的表名、字段名等數(shù)據(jù)信息,用來指導(dǎo)后期的數(shù)據(jù)庫腳本的開發(fā),設(shè)計該數(shù)據(jù)庫的目的是設(shè)計一個ATM系統(tǒng),能夠按照一
9、定條件查詢、統(tǒng)計交易信息,可以模擬完成開戶、存款、取款、轉(zhuǎn)賬、注銷、掛失、激活、修改密碼、查詢等業(yè)務(wù)。1.2參考資料資料名稱作者文件編號、版本數(shù)據(jù)庫系統(tǒng)概論王珊、薩師煊2006年5月第4版數(shù)據(jù)庫設(shè)計入門經(jīng)典鮑威爾2007年3月第1版數(shù)據(jù)庫原理克羅恩科2005年6月第1版二、 需求規(guī)約2.1 業(yè)務(wù)描述ATM系統(tǒng)業(yè)務(wù)是模擬了銀行ATM提款機業(yè)務(wù)的管理功能。在計算機網(wǎng)絡(luò),數(shù)據(jù)庫和先進的開發(fā)平臺上,利用數(shù)據(jù)庫sql語言模擬開發(fā)一個良好的ATM系統(tǒng),實現(xiàn)顧客的開戶、存款、取款、查詢、轉(zhuǎn)賬、修改密碼等一系列操作。并且在完成一定的操作后保存數(shù)據(jù)的更新和查詢。在轉(zhuǎn)賬和取款時還要核對余額是否足夠,在足夠的條件下
10、才能執(zhí)行。存儲內(nèi)容則是存儲用戶的一些信息,如電話號碼和身份證號碼等,一些用戶的詳細(xì)資料,還有卡號表中的金額的信息,并對這些信息能夠及時更新。2.2 需求分析開戶功能: 新客戶需要開戶之后才能擁有相應(yīng)的卡,并對其進行各種交易。在存入一定金額后可以登錄或跳轉(zhuǎn)到交易的界面,進行各種交易。存款功能:客戶要能夠正確地存款,能夠準(zhǔn)確地更新客戶賬號中的余額,并且記錄客戶的操作。 l 取款功能:判斷客戶的余額是否大于取款金額,避免出現(xiàn)溢出現(xiàn)象,操作結(jié)果記錄在表中。轉(zhuǎn)賬功能: 準(zhǔn)確核對客戶的賬戶信息,核對轉(zhuǎn)入賬號的信息,判斷轉(zhuǎn)出賬號的余額是否大于轉(zhuǎn)出金額,避免出現(xiàn)溢出現(xiàn)象,并記錄轉(zhuǎn)
11、出賬號和轉(zhuǎn)入賬號的操作。注銷功能: 老用戶可在此注銷自己原有的卡。掛失功能: 當(dāng)客戶遺失自己卡后,需對卡進行掛失操作,否則該卡的余額取不出。激活功能: 客戶遺失自己卡并找到卡后,可對卡進行激活操作,以便繼續(xù)使用該卡。修改密碼功能: 客戶可在此功能下修改卡的原始密碼。查詢功能: 查詢客戶余額 ;查詢客戶的賬號信息 ;查詢客戶的操作記錄;三、 數(shù)據(jù)庫環(huán)境說明數(shù)據(jù)庫實例數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫部署環(huán)境數(shù)據(jù)庫設(shè)計工具數(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五、 邏輯設(shè)計5.1 E-R圖用戶信息表戶名顧客編號顧客編號PID聯(lián)系電話居住地址銀行卡信息表表卡號密碼貨幣類型是否掛失余額顧客編號開戶金額開戶日期屬于交易信息表屬于交易日期交易金額交易類型卡號備注1NMN交易號5.2 關(guān)系模型注:下劃線為主碼,下劃波浪線為外碼用戶(顧客編號,開戶名,身份證號碼,聯(lián)系電話,居住地址)銀行卡(卡號,顧客編號,密碼,開戶金額,開戶日期,是否掛失,余額,存款類型,貨幣類型)交易(交易號,卡號,交易金額,交易日期,交易類型,備注)六、 物理設(shè)計6.1表匯總表名功能說明表userin
14、fo用戶信息表,存儲用戶信息等表cardinfo銀行卡信息表,存儲銀行卡信息等表transinfo交易信息表,存儲客戶的交易信息信息等6.2表1: userinfo表( 用戶信息表)表名用戶信息表(userinfo)數(shù)據(jù)庫用戶sa主鍵customer_ID其他排序字段無索引字段無序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明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ū)別度默認(rèn)值約束條件/說明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表(供應(yīng)表)表名交易信息表(transinfo)數(shù)據(jù)庫用戶sa主鍵trans_ID其他排序字段無索引字段無
22、序號字段名稱數(shù)據(jù)類型(精度范圍)允許為空Y/N唯一Y/N區(qū)別度默認(rèn)值約束條件/說明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 存儲過程的設(shè)計1、開戶存
25、儲過程-提示:銀行卡卡號共19位(4位數(shù)一組,中間用空格隔開),對于某個銀行來說,前面8個數(shù)字是固定的,后面8個數(shù)字-要求隨機的,并且唯一。我們只需要產(chǎn)生8位隨機的數(shù)字,然后和前8位固定的數(shù)字“10103576”連接即可。隨機函數(shù)的用法下:-RAND(隨機種子):將產(chǎn)生01的隨機數(shù),要求每次的隨機種子不一樣。為了保證隨機種子每次不相同,一般的算法如下:-隨機種子=當(dāng)前的月份數(shù)×100000 + 當(dāng)前秒數(shù)×1000 +當(dāng)前毫秒數(shù)-產(chǎn)生了01的隨機數(shù)后,我們?nèi)⌒?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'需注冊用戶信息!請先登記您的詳細(xì)信息.' 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)則是用來核對密碼的。存儲過程中對所有需要核對的信息都進行了準(zhǔn)確的核對,例如核對賬號是否處于掛失狀態(tài),核對賬號密碼是否正確。在核對完所有的信息之后才準(zhǔn)確地完成操作。存錢存儲過程如下: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)則是用來核對密碼的。存儲過程中對所有需要核對的信息都進行了準(zhǔn)確的核對,例如核對賬號是否處于掛失狀態(tài),核對賬號密碼是否正確。在核對完所有的信息之后才準(zhǔn)確地完成操作。取錢存儲過程如下: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 '取款金額應(yīng)為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、轉(zhuǎn)賬存儲過程:在存儲過程中定義三個變量,card_ID char(19), card_ID2 char(19)和transmoney money,這三個變量是用來核對賬號的。card_ID char(19)用來核對轉(zhuǎn)出卡號是否正確,transmoney money暫時存儲需要轉(zhuǎn)出的金額,
41、并且用這個變量中的值與數(shù)據(jù)庫中存儲的余額值進行比較,如果這個轉(zhuǎn)出值大于數(shù)據(jù)庫中的余額值,則不能執(zhí)行操作。card_ID2 char(19)則是用來核對轉(zhuǎn)入賬號的。在轉(zhuǎn)賬的存儲過程中,轉(zhuǎn)入的賬號核對是非常重要的。存儲過程中對所有需要核對的信息都進行了準(zhǔn)確的核對,例如核對賬號是否處于掛失狀態(tài),核對賬號密碼是否正確。在核對完所有的信息之后才準(zhǔn)確地完成操作。轉(zhuǎn)賬存儲過程如下:create proc proc_transaccountscard_ID char(19),-卡號card_ID2 char(19),transmoney moneyasbegin tran-開始執(zhí)行事務(wù) declare mon
42、ey int -轉(zhuǎn)賬出錢,減去轉(zhuǎn)出的金額 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 -轉(zhuǎn)賬進錢,加上轉(zhuǎn)出的金額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 '恭喜您,轉(zhuǎn)賬成功!'commit tranif (
44、error<>0) rollback tranreturn 0end elsebeginprint '余額不足,無法轉(zhuǎn)賬'end-執(zhí)行存儲過程:exec proc_transaccounts '1010 3576 1111 2222','1010 3576 1111 1111',150由于每個操作都用到了存儲過程,所以列出以上具有代表性的存儲過程。6.6 觸發(fā)器的設(shè)計1、建立觸發(fā)器Decre_trigger:當(dāng)用戶注銷賬號時,執(zhí)行delete過程。在cardinfo表中出現(xiàn)delete過程時觸發(fā)。執(zhí)行delete用戶表中的用戶編號功能
45、:能夠根據(jù)數(shù)據(jù)庫中數(shù)據(jù)的變化來注銷掉選中的用戶信息-觸發(fā)器- -當(dāng)用戶注銷賬號時,執(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'七、操作結(jié)果7.1 存款測
48、試結(jié)果在執(zhí)行存儲過程的時候同事執(zhí)行兩行查詢語句,查詢卡上存款前后的信息,進行對照,來檢測存儲過程的設(shè)計是都正確,檢測存儲過程的執(zhí)行是否正確。該存儲過程執(zhí)行的是將卡號為1010 3576 1111 1111中的的balance存入500,可以看到balance的值由開始的100變?yōu)?00.執(zhí)行中沒有出現(xiàn)報錯現(xiàn)象,說明存儲過程的設(shè)計和執(zhí)行都是正確的。執(zhí)行結(jié)果如下圖:圖7.1 存款前后結(jié)果查詢7.2 取款測試結(jié)果在執(zhí)行存儲過程的時候同事執(zhí)行兩行查詢語句,查詢卡上取款款前后的信息,進行對照,來檢測存儲過程的設(shè)計是都正確,檢測存儲過程的執(zhí)行是否正確。該存儲過程執(zhí)行的是將卡號為1010 3576 1111
49、 1111中的的balance取出100,可以看到balance的值由開始的600變?yōu)?00.執(zhí)行中沒有出現(xiàn)報錯現(xiàn)象,說明存儲過程的設(shè)計和執(zhí)行都是正確的。執(zhí)行結(jié)果如下圖:圖7.2取款前后結(jié)果查詢7.3 轉(zhuǎn)賬測試結(jié)果在執(zhí)行存儲過程的時候同事執(zhí)行兩行查詢語句,查詢卡上取款款前后的信息,進行對照,來檢測存儲過程的設(shè)計是都正確,檢測存儲過程的執(zhí)行是否正確。該存儲過程執(zhí)行的是將卡號為1010 3576 1111 2222中的的balance轉(zhuǎn)出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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 整體調(diào)控政策解讀課件
- 高校舞蹈教學(xué)課件
- 教育消防安全宣傳課件
- 圖層教學(xué)課件
- 新品入店申請活動方案
- 春節(jié)手工活動方案
- 文體活動插花活動方案
- 新手尋寶活動方案
- 新婚聚會活動方案
- 主播助理合同范本
- 2025年遼寧沈陽地鐵集團有限公司所屬分公司招聘筆試參考題庫附帶答案詳解
- 車間主任轉(zhuǎn)正述職報告
- 靜脈采血并發(fā)癥預(yù)防與處理
- 2024年體育類第一批(本科)投檔最低分排名
- 2025年河南省許昌市許昌縣小升初數(shù)學(xué)綜合練習(xí)卷含解析
- 2.5 噴泉 教學(xué)設(shè)計 六年級音樂下冊 人教版
- 剖宮產(chǎn)手術(shù)專家共識2023年解讀
- 2024-2025學(xué)年廣東省惠州市惠城區(qū)七年級下學(xué)期期末數(shù)學(xué)教學(xué)質(zhì)量監(jiān)測試題(含答案)
- 2025年上半年駐村工作總結(jié)范例(三篇)
- 樓宇自控系統(tǒng)入門基礎(chǔ)知識
評論
0/150
提交評論