atm自動取款機系統(tǒng)課程設(shè)計說明書_第1頁
已閱讀1頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p><b>  課程設(shè)計說明書</b></p><p>  題目 ATM自動取款機系統(tǒng) </p><p>  系(部) 計算機科學與技術(shù)系 </p><p>  專業(yè)(班級) 軟件B班 </p><p>  姓名

2、 </p><p>  學號 </p><p>  指導教師 </p><p>  起止日期 2011-12-5至2012-3-17 </p><p><b>  課程設(shè)計任務(wù)書</b></p>

3、<p>  課程名稱:工程實訓三</p><p>  設(shè)計題目:ATM自動取款機系統(tǒng)</p><p>  已知技術(shù)參數(shù)和設(shè)計要求:</p><p>  本次案列將完成一個ATM銀行取款機系統(tǒng)的數(shù)據(jù)庫。</p><p>  創(chuàng)建數(shù)據(jù)庫BankDB數(shù)據(jù)庫。并保存在D:\ATM文件夾下。</p><p>  創(chuàng)建用

4、戶信息表(userinfo)。</p><p>  創(chuàng)建銀行卡信息表(cardinfo)。</p><p>  創(chuàng)建交易信息表(transinfo)。</p><p>  為userinfo表中的客戶ID(customer)添加主鍵約束。</p><p>  為userinfo表中的客戶身份證(PID)添加唯一約束。</p>&

5、lt;p>  為userinfo表中的身份證號碼添加檢查約束,長度為15或18.</p><p>  為cardinfo表中的客戶電話號碼添加檢查約束。</p><p>  為cardinfo表中的卡號ID(cardID)添加主鍵約束。</p><p>  為cardinfo表中的卡號ID(cardID)添加約束,必須是以‘1010 3576’開頭,長度為12

6、。</p><p>  為cardinfo表中的貨幣類型(cur_type)添加默認約束,默認是RMB</p><p>  為cardinfo表中的存款類型添加約束,只能是‘活期、定期、定活兩便’。</p><p>  cardinfo表中的開卡日期默認是當天日期。</p><p>  cardinfo表中的開戶金額不能低于1元。</p

7、><p>  cardinfo表中的余額不能低于1元。</p><p>  cardinfo表中的密碼長度為6位數(shù)。默認是888888。</p><p>  cardinfo表中是否掛失只能是‘是’和‘否’。默認是‘否’。</p><p>  添加userinfo表與cardinfo表的外間約束。</p><p>  tr

8、ansinfo表中的交易日期默認是當天。</p><p>  交易類型只能是‘存入’和‘支取’。</p><p>  添加cardinfo表與transinfo表的外鍵約束。</p><p><b>  各階段具體要求:</b></p><p><b>  1、需求分析階段</b></p>

9、;<p>  定義數(shù)據(jù)項的含義和取值</p><p>  定義目標系統(tǒng)的數(shù)據(jù)流</p><p>  2、概念結(jié)構(gòu)設(shè)計階段</p><p>  畫出實體模型E-R圖</p><p>  3、邏輯結(jié)構(gòu)設(shè)計階段</p><p>  將實體模型轉(zhuǎn)化為關(guān)系模型</p><p>  給出每個關(guān)

10、系的主關(guān)鍵字和函數(shù)依賴集</p><p>  分析你所設(shè)計的關(guān)系數(shù)據(jù)庫模式是否屬于3NF</p><p><b>  4、物理設(shè)計階段</b></p><p>  確定所有字段的名稱、類型、寬度、小數(shù)位數(shù)及完整性約束 </p><p>  確定數(shù)據(jù)庫及表的名稱及其組成 </p><p>  確定

11、索引文件和索引關(guān)鍵字</p><p>  5、數(shù)據(jù)庫安全及維護設(shè)計階段</p><p>  設(shè)計一個適合的數(shù)據(jù)庫安全策略(用戶身份認證、訪問權(quán)限、視圖)</p><p>  為了實現(xiàn)復(fù)雜的數(shù)據(jù)完整性約束,設(shè)計適當?shù)挠|發(fā)器</p><p>  設(shè)計一個適合的數(shù)據(jù)庫備份策略</p><p><b>  6、實施階

12、段</b></p><p>  要求所有操作必須在查詢分析器中用SQL語句或系統(tǒng)存儲過程完成。</p><p><b>  設(shè)計工作量:</b></p><p>  (1)軟件設(shè)計:完成問題陳述中所提到的所有需求功能。</p><p> ?。?)論文:要求撰寫不少于3000個文字的文檔,詳細說明各階段具體要求

13、。</p><p><b>  工作計劃:</b></p><p>  安排兩周時間進行課程設(shè)計,軟件開發(fā)步驟如下,第一周完成1~4,第二周完成5~8,論文同步進行;</p><p>  1)選定題目</p><p>  2)需求分析</p><p>  3)概念結(jié)構(gòu)設(shè)計

14、</p><p>  4)邏輯結(jié)構(gòu)設(shè)計</p><p>  5)物理設(shè)計</p><p>  6)數(shù)據(jù)庫安全及維護設(shè)計</p><p>  7)數(shù)據(jù)庫上機實現(xiàn)</p><p>  8)答辯</p><p>  項目實訓(三)工作計劃表</p>

15、<p><b>  注意事項</b></p><p><b>  提交文檔</b></p><p>  長沙學院課程設(shè)計任務(wù)書(每學生1份)</p><p>  長沙學院課程設(shè)計論文(每學生1份)</p><p>  長沙學院課程設(shè)計鑒定表(每學生1份)</p>&

16、lt;p>  指導教師簽名:       日期:     </p><p>  教研室主任簽名:        日期:        </p><p>  系主任簽名:          日期:        </p><p><b>  摘要</b></p><p>  此設(shè)計是一個A

17、TM自動取款機系統(tǒng),運用了SQL Server2008作為開發(fā)環(huán)境。以及運用了數(shù)據(jù)庫設(shè)計中的建表、創(chuàng)建存儲過程等知識 。實現(xiàn)對ATM自動取款機系統(tǒng)的如轉(zhuǎn)賬、開戶、存取錢、查看信息、盈利結(jié)算等功能的模擬。能夠查看、修改用戶信息、銀行卡信息等。該程序設(shè)計全部實現(xiàn)其要求的功能,經(jīng)檢測,功能實現(xiàn)正確。</p><p><b>  目 錄</b></p><p><

18、;b>  一、引言1</b></p><p><b>  1.1編寫目的1</b></p><p><b>  1.2參考資料1</b></p><p><b>  二、需求規(guī)約1</b></p><p><b>  2.1業(yè)務(wù)描述1&l

19、t;/b></p><p><b>  2.2需求分析2</b></p><p>  三、數(shù)據(jù)庫環(huán)境說明3</p><p>  四、數(shù)據(jù)庫的命名規(guī)則4</p><p>  4.1數(shù)據(jù)庫對象命名規(guī)則4</p><p>  4.2數(shù)據(jù)項編碼規(guī)則4</p><p&

20、gt;<b>  五、邏輯設(shè)計5</b></p><p>  5.1 E-R圖:5</p><p>  5.2關(guān)系模型:6</p><p>  5.3規(guī)范化分析6</p><p>  六、數(shù)據(jù)庫設(shè)計7</p><p>  6.1概念模型設(shè)計7</p><p>

21、;  6.2物理模型設(shè)計7</p><p>  6.3導入SQLServer20008</p><p><b>  6.4表匯總8</b></p><p><b>  6.5表8</b></p><p>  6.6視圖的設(shè)計11</p><p>  6.7創(chuàng)建約束

22、11</p><p>  6.8觸發(fā)器的設(shè)計13</p><p>  6.9存儲過程的設(shè)計14</p><p><b>  七、總結(jié)20</b></p><p><b>  參考文獻21</b></p><p><b>  一、引言</b><

23、;/p><p><b>  1.1編寫目的</b></p><p>  本文檔是ATM自動取款機系統(tǒng)系統(tǒng)設(shè)計文檔的組成部分,編寫數(shù)據(jù)庫設(shè)計文檔的目的是:明確數(shù)據(jù)庫的表名、字段名等數(shù)據(jù)信息,用來指導后期的數(shù)據(jù)庫腳本的開發(fā),本文檔遵循《ATM自動取款機系統(tǒng)系統(tǒng)數(shù)據(jù)庫設(shè)計和開發(fā)規(guī)范》。本文檔的讀者對象是需求人員、系統(tǒng)設(shè)計人員、開發(fā)人員、測試人員。</p><

24、p><b>  1.2參考資料</b></p><p><b>  需求規(guī)約</b></p><p><b>  2.1業(yè)務(wù)描述</b></p><p>  本次案列將完成一個ATM銀行取款機系統(tǒng)的數(shù)據(jù)庫。</p><p>  創(chuàng)建數(shù)據(jù)庫BankDB數(shù)據(jù)庫。并保存在D:\

25、ATM文件夾下。</p><p>  創(chuàng)建用戶信息表(userinfo)。</p><p>  創(chuàng)建銀行卡信息表(cardinfo)。</p><p>  創(chuàng)建交易信息表(transinfo)。</p><p>  為userinfo表中的客戶ID(customerID)添加主鍵約束。</p><p>  為useri

26、nfo表中的客戶身份證(PID)添加唯一約束。</p><p>  為userinfo表中的身份證號碼添加檢查約束,長度為15或18.</p><p>  為cardinfo表中的客戶電話號碼添加檢查約束。</p><p>  為cardinfo表中的卡號ID(cardID)添加主鍵約束。</p><p>  為cardinfo表中的卡號ID

27、(cardID)添加約束,必須是以‘1010 3576’開頭,長度為12.</p><p>  為cardinfo表中的貨幣類型(cur_type)添加默認約束,默認是RMB</p><p>  為cardinfo表中的存款類型添加約束,只能是‘活期、定期、定活兩便’。</p><p>  cardinfo表中的開卡日期默認是當天日期。</p><

28、;p>  cardinfo表中的開戶金額不能低于1元。</p><p>  cardinfo表中的余額不能低于1元。</p><p>  cardinfo表中的密碼長度為6位數(shù)。默認是888888。</p><p>  cardinfo表中是否掛失只能是‘是’和‘否’。默認是‘否’。</p><p>  添加userinfo表與ccar

29、dinfo表的外間約束。</p><p>  transinfo表中的交易日期默認是當天。</p><p>  交易類型只能是‘存入’和‘支取’。</p><p>  添加cardinfo表與transinfo表的外鍵約束。</p><p><b>  2.2需求分析</b></p><p>  

30、2.2.1數(shù)據(jù)分析:</p><p><b>  數(shù)據(jù)項分析:</b></p><p><b>  數(shù)據(jù)結(jié)構(gòu)分析:</b></p><p>  2.2.2功能分析:</p><p><b>  1、催款提醒功能</b></p><p><b>

31、  2、獲得密碼功能</b></p><p><b>  3、修改密碼功能</b></p><p>  4、創(chuàng)建隨機卡號功能</p><p><b>  5、開戶功能</b></p><p>  6、銀行卡掛失處理功能</p><p>  7、查看本周的辦卡信息功

32、能</p><p>  8、查看某卡本周的交易信息功能</p><p>  9、查看所有掛失卡號的用戶信息功能</p><p>  10、查詢單筆消費最高的卡號功能</p><p>  11、統(tǒng)計銀行的資金流通余額和盈利結(jié)算功能</p><p>  12、用戶存款和取款功能</p><p>&l

33、t;b>  13、銀行轉(zhuǎn)帳功能</b></p><p><b>  數(shù)據(jù)庫環(huán)境說明</b></p><p><b>  數(shù)據(jù)庫的命名規(guī)則</b></p><p>  4.1數(shù)據(jù)庫對象命名規(guī)則</p><p>  4.2數(shù)據(jù)項編碼規(guī)則</p><p><

34、b>  邏輯設(shè)計</b></p><p><b>  5.1 E-R圖:</b></p><p><b>  5.2關(guān)系模型:</b></p><p>  用戶信息(顧客編號(PK),開戶人姓名,身份證號,聯(lián)系電話,居住地址)</p><p>  銀行卡信息(卡號(PK),貨幣類型

35、,存款類型,開戶日期,開戶金額,余額,密碼,掛失否,顧客編號(FK))</p><p>  交易信息(交易日期,卡號(FK),交易類型,交易金額,備注信息)</p><p><b>  5.3規(guī)范化分析</b></p><p>  用戶信息表函數(shù)依賴關(guān)系:</p><p>  顧客編號開戶人姓名 顧客編號 身份

36、證號 顧客編號 聯(lián)系電話</p><p>  顧客編號居住地址 身份證號 開戶人姓名 身份證號 聯(lián)系電話</p><p>  因為用戶信息表的關(guān)系的非主屬性中不存在部分依賴和傳遞依賴關(guān)系,所以說用戶信息表表是3NF的。</p><p>  銀行卡信息表函數(shù)依賴關(guān)系:</p><p>  卡號

37、密碼 卡號 開戶日期 卡號 存款類型 卡號 開戶金額</p><p>  卡號 余額</p><p>  因為銀行卡信息表的關(guān)系的非主屬性中不存在部分依賴和傳遞依賴關(guān)系,所以說銀行卡信息表是3NF的。</p><p>  交易信息表函數(shù)依賴關(guān)系:</p><p> ?。ㄌ枺灰兹掌冢?交

38、易金額 (卡號,交易日期) 交易類型 </p><p> ?。ㄌ枺灰兹掌冢?備注信息</p><p>  因為交易信息表的關(guān)系的非主屬性中不存在部分依賴和傳遞依賴關(guān)系,所以說機票表是3NF的。</p><p>  綜上所述,可知本系統(tǒng)設(shè)計是符合3NF規(guī)范的。</p><p><b>  數(shù)據(jù)庫設(shè)計</b&

39、gt;</p><p><b>  6.1概念模型設(shè)計</b></p><p><b>  概念模型設(shè)計圖</b></p><p><b>  6.2物理模型設(shè)計</b></p><p><b>  物理模型設(shè)計圖</b></p><p

40、>  6.3導入SQLServer2000</p><p><b>  導入圖</b></p><p><b>  6.4表匯總</b></p><p><b>  6.5表 </b></p><p><b>  用戶信息表:</b></p&g

41、t;<p><b>  銀行卡信息表:</b></p><p><b>  交易信息表:</b></p><p><b>  6.6視圖的設(shè)計</b></p><p>  為userinfo表、cardinfo表、transinfo表1、view_flight的創(chuàng)建</p>

42、<p><b>  --用戶表創(chuàng)建視圖</b></p><p>  create view view_userinfo</p><p><b>  as</b></p><p>  select 客戶編號=customerID,開戶名=customer_name,身份證號=PID,</p>&l

43、t;p>  聯(lián)系電話=telephone,居住地址=address from userinfo</p><p>  --銀行卡表創(chuàng)建視圖</p><p>  create view view_cardinfo</p><p><b>  as </b></p><p>  select 卡號=cardID,貨幣類型

44、=cur_type,存款類型=saving_type,</p><p>  開戶日期=open_date,開戶金額=open_money,余額=balance,</p><p>  密碼=pass,是否掛失=is_report_loss,客戶編號=customerID from cardinfo</p><p>  ---交易表創(chuàng)建視圖</p><

45、;p>  create view view_transinfo</p><p><b>  as</b></p><p>  select 交易日期=trans_date,卡號=cardID,交易類型=trans_type,</p><p>  交易金額=trans_money,備注=remark </p><p>

46、;  from transinfo</p><p><b>  6.7創(chuàng)建約束</b></p><p>  alter table transinfo</p><p>  add constraint pk_transID primary key(transID)</p><p>  --為userinfo 表中客戶ID

47、添加主鍵約束</p><p>  alter table userinfo</p><p>  add constraint pk_customerID primary key(customerID)</p><p>  --為userinfo 表中客戶身份證號PID添加唯一約束</p><p>  alter table userinfo&

48、lt;/p><p>  add constraint uq_PID unique (PID)</p><p>  alter table userinfo --為userinfo 表中客戶PID添加check約束</p><p>  add constraint ck_PID check(len(PID)=15 or len(PID)=18)</p>&

49、lt;p>  alter table userinfo --為userinfo 表中客戶telephone添加check約束</p><p>  add constraint ck_telephone check(</p><p>  telephone like'[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-

50、9][0-9]'</p><p>  or telephone like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'</p><p>  or telephone like'[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]&

51、#39;)</p><p>  alter table cardinfo --為cardinfo 表中cardID添加主鍵約束</p><p>  add constraint pk_cardID primary key(cardID)</p><p>  alter table cardinfo --為cardinfo 表中客戶cardID添加check約束&

52、lt;/p><p>  add constraint ck_cardID check(</p><p>  cardID like '1010 3576 [0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]')</p><p>  alter table cardinfo --為cardinfo 表中curType添加默認

53、值</p><p>  add constraint df_curType default('RMB') for curType</p><p>  alter table cardinfo --為cardinfo 表中客戶savingType添加check約束</p><p>  add constraint ck_savingType check

54、(</p><p>  savingType like '活期' or savingType like '定活兩便' or savingType like '定期'</p><p><b>  ) </b></p><p>  alter table cardinfo --為cardinfo 表中

55、openDate添加默認值</p><p>  add constraint df_openDate default(getdate()) for openDate</p><p>  alter table cardinfo --為cardinfo 表中客戶openMoney添加check約束</p><p>  add constraint ck_openMo

56、ney check(openMoney>=1)</p><p>  alter table cardinfo --為cardinfo 表中客戶balance添加check約束</p><p>  add constraint ck_balance check(balance>=1)</p><p>  alter table cardinfo add

57、--為cardinfo 表中客戶pass添加check約束</p><p>  constraint ck_pass check(len(pass)=6),</p><p>  constraint df_pass default(888888) for pass</p><p>  alter table cardinfo add --為cardinfo 表中客戶

58、IsReportLoss添加check約束</p><p>  constraint ck_IsReportLoss check(IsReportLoss='是'or IsReportLoss='否'),</p><p>  constraint df_IsReportLoss default('否') for IsReportLoss<

59、;/p><p>  alter table cardinfo</p><p>  --設(shè)置customerID為外鍵約束</p><p>  add constraint fk_customerID</p><p>  foreign key(customerID) references userinfo(customerID)</p>

60、;<p>  --為交易日期設(shè)置默認值</p><p>  alter table transinfo</p><p>  add constraint df_transDate default(getdate()) for transDate</p><p><b>  --約束交易類型</b></p><p

61、>  alter table transinfo</p><p>  add constraint ck_transType check(transType like '存入' or transType like '支取')</p><p>  --約束交易最低金額</p><p>  alter table transinfo

62、</p><p>  add constraint ck_transMoney check(transMoney>0)</p><p>  --設(shè)置cardid為外鍵約束</p><p>  alter table transinfo</p><p>  add constraint fk_cardID foreign key(card

63、ID) references cardinfo(cardID)</p><p>  --向userinfo插入信息</p><p>  insert into userinfo (customerName,PID,telephone,address)</p><p>  values('張三','123456789912345',&#

64、39;010-92348678','北京海定')</p><p>  insert into userinfo (customerName,PID,telephone,address)</p><p>  values('李四','789012345123456','010-98978678','null

65、9;)</p><p>  --向cardinfo插入信息</p><p>  insert into cardinfo (cardID,curType,savingType, openMoney, balance,pass,customerID)</p><p><b>  values(</b></p><p>  

66、'1010 3576 1234 5678','RMB','活期',1000,1000,123456,1)</p><p>  insert into cardinfo (cardID,curType,savingType, openMoney, balance,pass,customerID)</p><p>  values('10

67、10 3576 1212 1134','RMB','活期',1,1,654321,2)</p><p>  --向transinfo插入信息</p><p>  insert into transinfo(transtype,cardid,transMoney)</p><p>  values('支取',&#

68、39;1010 3576 1234 5678',400)</p><p>  insert into transinfo(transtype,cardid,transMoney)</p><p>  values('存入','1010 3576 1212 1134',500)</p><p><b>  6.8觸發(fā)器

69、的設(shè)計</b></p><p>  --創(chuàng)建信息表插入觸發(fā)器</p><p>  create trigger Insert_trigger</p><p>  on transinfo</p><p>  for insert</p><p><b>  as</b></p&g

70、t;<p>  if((select transType from inserted)='支取')--判斷存取類型</p><p><b>  begin</b></p><p>  if((select transMoney from inserted)<(select balance from cardInfo where<

71、;/p><p>  cardID=(select cardID from inserted))) --判斷余額是否充足</p><p><b>  begin</b></p><p>  update cardinfo </p><p><b>  --余額減少</b></p><

72、p>  set balance=balance-(select transMoney from inserted) where cardID=(select cardID from inserted)</p><p><b>  end</b></p><p><b>  else</b></p><p><

73、b>  begin</b></p><p>  raiserror('交易失敗,余額不足',16,1)</p><p><b>  end</b></p><p><b>  end</b></p><p><b>  else</b><

74、/p><p><b>  begin</b></p><p>  update cardinfo </p><p><b>  --余額增加</b></p><p>  set balance=balance+(select transMoney from inserted) where cardID

75、=(select cardID from inserted)</p><p><b>  end</b></p><p><b>  --創(chuàng)建銷戶觸發(fā)器</b></p><p>  create trigger delete_userinfo_trigger</p><p>  on userinf

76、o</p><p>  for update</p><p><b>  as</b></p><p>  if((select isLogout from inserted)='是') </p><p><b>  begin</b></p><p>  i

77、f(exists(select * from cardinfo where customerID=(select customerID from inserted)))--判斷客戶編號是否存在</p><p><b>  begin</b></p><p>  update cardinfo set isTurnoff='是' where custom

78、erID=(select customerID from inserted) --關(guān)閉相應(yīng)卡號</p><p>  print '銷戶成功'</p><p><b>  end</b></p><p><b>  end</b></p><p>  6.9存儲過程的設(shè)計</p&

79、gt;<p><b>  存儲過程:</b></p><p>  --1,催款提醒 Proc_BusinessRemind </p><p>  create procedure Proc_BusinessRemind</p><p><b>  as</b></p><p>  s

80、elect customerName,telephone from userinfo where customerID in(select customerID from cardInfo </p><p>  where balance<=1)</p><p><b>  --執(zhí)行存儲過程</b></p><p>  exec Proc

81、_BusinessRemind</p><p>  --2、獲得密碼 Proc_GetPass </p><p>  create procedure Proc_GetPass</p><p>  @cardID char(20) ,--卡號</p><p>  @pass int output</p><p><

82、;b>  as</b></p><p>  select @pass=pass from cardInfo where cardID=@cardID</p><p><b>  --執(zhí)行存儲過程</b></p><p>  declare @p int</p><p>  exec Proc_GetPa

83、ss '1010 3576 1234 5678',@pass=@p output</p><p><b>  print @p</b></p><p>  --3、修改密碼 Proc_UpdatePass </p><p>  create procedure Proc_UpdatePass</p><p&g

84、t;  @cardID char(20),--卡號</p><p>  @oldpass int, --舊密碼</p><p>  @newpass int --新密碼</p><p><b>  as</b></p><p>  if(exists(select * from cardInfo where cardID

85、=@cardID))</p><p><b>  begin</b></p><p>  if(@oldpass=(select pass from cardInfo where cardID=@cardID ))</p><p><b>  begin</b></p><p>  update c

86、ardInfo set pass=@newpass where cardID=@cardID</p><p>  if(@oldpass=@newpass)</p><p>  print '修改成功,但是新密碼和舊密碼相同'</p><p><b>  else</b></p><p>  print

87、'修改成功' </p><p><b>  end</b></p><p><b>  else</b></p><p>  print '密碼不正確'</p><p><b>  end</b></p><p><

88、b>  else</b></p><p>  print '沒有找到此卡號'</p><p><b>  --執(zhí)行存儲過程</b></p><p>  exec Proc_UpdatePass '1010 3576 1234 5678',456123,456123</p><

89、p>  --4、創(chuàng)建隨機卡號 Proc_ RandCardID </p><p>  create procedure Proc_RandCardID</p><p>  @randCardID char(20) output --隨機卡號</p><p><b>  as</b></p><p>  declar

90、e @rand varchar(14) --轉(zhuǎn)換后的字符型隨機卡號</p><p>  declare @randfloat bigint --轉(zhuǎn)換前的隨機整數(shù)</p><p>  --用rand()函數(shù)創(chuàng)建隨機數(shù)</p><p><b>  set</b></p><p>  @randfloat=floor(ran

91、d(datepart(m,getdate())*100000+datepart(s,getdate())*1000+datepart(ms,getdate()))*1000000000)</p><p>  set @rand=convert(char,@randfloat) --轉(zhuǎn)換成字符型</p><p><b>  set</b></p><

92、;p>  @randCardID='1010 3576'+' '+substring(@rand,5,4)+' '+substring(@rand,1,4) --用substring()函數(shù)截取字符串</p><p><b>  --執(zhí)行存儲過程</b></p><p>  declare @cardID cha

93、r(20)</p><p>  exec Proc_RandCardID @randCardID=@cardID output</p><p>  print @cardID</p><p>  --5、開戶 Proc_ OpenAccount </p><p>  create procedure Proc_OpenAccount</

94、p><p>  @customerName varchar(16), --顧客姓名</p><p>  @PID varchar(18), --身份證</p><p>  @telephone varchar(14), --電話</p><p>  @address varchar(50), --地址</p><p>

95、  @curType varchar(10), --貨幣類型</p><p>  @savingType varchar(10), --存儲類型</p><p>  @openMoney money, --開副</p><p>  @balance money, --錢</p><p>  @pass int --密碼</p>

96、<p><b>  as</b></p><p>  declare @cardID char(20) --聲明銀行卡號</p><p>  exec Proc_RandCardID @randCardID=@cardID output --執(zhí)行存儲過程Proc_ OpenAccount 創(chuàng)建隨機卡號</p><p>  whil

97、e exists(select * from cardInfo where cardID=@cardID) --判斷卡號是否相同</p><p><b>  begin</b></p><p>  exec Proc_RandCardID @randCardID=@cardID output --執(zhí)行存儲過程Proc_ OpenAccount 創(chuàng)建隨機卡號</

98、p><p><b>  end</b></p><p>  if(not exists(select * from userInfo where PID=@PID and customerName=@customerName)) --判斷用戶是否已經(jīng)辦理銀行卡</p><p><b>  begin</b></p>

99、;<p>  insert into userInfo (customerName,PID,telephone,address) values(@customerName,@PID,@telephone,@address) --向用戶表插入信息</p><p><b>  end</b></p><p>  declare @customerID int

100、 --申明臨時變量顧客編號</p><p>  select @customerID=customerID from userInfo where PID=@PID and customerName=@customerName</p><p>  --向cardinfo表插入信息</p><p>  insert into cardInfo (cardID,curT

101、ype,savingType, openMoney, balance,pass,customerID) values(@cardID,@curType,@savingType,@openMoney,@balance,@pass,@customerID)</p><p>  print '開戶成功'</p><p><b>  --執(zhí)行存儲過程</b>&

102、lt;/p><p>  exec Proc_OpenAccount '張三','123456789912345','010-92348678','海定','RMB','活期',1000,1000,123456</p><p>  --6銀行卡掛失處理 Proc_ ReportLoss </p&

103、gt;<p>  create procedure Proc_ReportLoss </p><p>  @CardId char(20)</p><p><b>  as</b></p><p>  if(exists(select * from cardInfo where cardID=@cardID))</p>

104、<p><b>  begin</b></p><p>  update cardInfo set IsReportLoss='是' where cardID=@cardID --設(shè)置cardInfo表IsReportLoss為“是”</p><p><b>  end</b></p><p>

105、;<b>  else</b></p><p>  print '沒有此卡號'</p><p><b>  --執(zhí)行存儲過程</b></p><p>  exec Proc_ReportLoss '1040 3576 1234 5678'</p><p>  --7查

106、看前一周的辦卡信息 </p><p>  create procedure Proc_SelCreateCardOneWeek</p><p><b>  as</b></p><p>  select * from cardInfo where openDate between GETDATE()-DATEPART(dw,getdate())

107、 and getdate() -- 選擇前一周的辦卡信息</p><p><b>  --執(zhí)行存儲過程</b></p><p>  exec Proc_SelCreateCardOneWeek</p><p>  --8、查看某卡本周的交易信息 Proc_SelACardTransInfoOneWeek</p><p>

108、;  alter procedure Proc_SelACardTransInfoOneWeek </p><p>  @CardId char(20) --用戶輸入的卡號</p><p><b>  as</b></p><p><b>  select * </b></p><p>  from

109、 transinfo </p><p>  where transDate between GETDATE()-DATEPART(dw,getdate()) and getdate() and cardID=@CardId </p><p><b>  --執(zhí)行存儲過程</b></p><p>  exec Proc_SelACardT

110、ransInfoOneWeek '1010 3576 1234 5678'</p><p>  --9、查看所有掛失卡號的用戶信息 </p><p>  create procedure Proc_SelReporLossCardInfo </p><p><b>  as</b></p><p>  s

111、elect * from userInfo where customerID in(select customerID from cardinfo where IsReportLoss='是')</p><p><b>  --執(zhí)行存儲過程 </b></p><p>  exec Proc_SelReporLossCardInfo</p>

112、<p>  -- 10、查詢單筆消費最高的卡號</p><p>  create procedure Proc_SelVolumeHighestCard</p><p><b>  as</b></p><p>  select cardID from transinfo</p><p>  where tr

113、ansMoney in(select max(transMoney) from transInfo)</p><p><b>  --執(zhí)行存儲過程</b></p><p>  exec Proc_SelVolumeHighestCard</p><p>  --11、統(tǒng)計銀行的資金流通余額和盈利結(jié)算</p><p>  

114、create procedure Proc_Statistics</p><p><b>  as</b></p><p>  declare @store int</p><p>  declare @draw int</p><p>  select @store=sum(transMoney) from trans

115、info where transType='存入'</p><p>  select @draw=sum(transMoney) from transinfo where transType='支取' </p><p>  print '資金流通余額:'+convert(char,@store-@draw)</p><p&

116、gt;  print '盈利結(jié)算:'+convert(char,@store*0.008-@draw*0.003)</p><p><b>  --執(zhí)行存儲過程</b></p><p>  exec Proc_Statistics</p><p>  -- 12、用戶存款和取款Proc_ TakeMoney </p>

117、<p>  create procedure Proc_TakeMoney</p><p>  @cardid char(20), --卡號</p><p>  @money money, --錢</p><p>  @type char(5), --類型</p><p>  @pass int --密碼</p>

118、<p><b>  as</b></p><p>  print '交易正在進行中,請稍后.....'</p><p>  if(exists(select * from cardInfo where cardID=@cardID))</p><p><b>  begin</b></p&

119、gt;<p>  if(@pass=(select pass from cardinfo where cardID=@cardid))</p><p><b>  begin</b></p><p>  insert into transinfo values(getdate(),@cardid,@type,@money,null) --向transin

120、fo插入信息,有觸發(fā)器自動修改卡里面的余額</p><p>  print '恭喜,交易成功'</p><p><b>  end</b></p><p><b>  else</b></p><p>  print '密碼錯誤,交易失敗'</p>&l

121、t;p><b>  end</b></p><p><b>  else</b></p><p>  print '沒有此卡'</p><p><b>  --執(zhí)行存儲過程</b></p><p>  exec Proc_TakeMoney '10

122、10 3576 1234 5678',100,'支取',123456</p><p>  --13、銀行轉(zhuǎn)帳Proc_ Transfer </p><p>  alter procedure Proc_Transfer</p><p>  @orginCardID char(20), --要轉(zhuǎn)出的卡號</p><p>

123、  @orginPass int,--密碼</p><p>  @money money, --錢</p><p>  @aimCardID char(20) ----要轉(zhuǎn)入的存儲過程</p><p><b>  as</b></p><p>  --判斷卡號是否存在</p><p>  if(e

124、xists(select * from cardInfo where cardID=@orginCardID)and exists(select * from cardInfo where cardID=@aimCardID))</p><p><b>  begin</b></p><p>  if(@orginPass=(select pass from card

125、info where @orginCardID=cardID ))--判斷密碼是否正確</p><p><b>  begin</b></p><p>  --if((select balance from cardinfo where cardID=@orginCardID)>@money) --判斷余額是否充足</p><p><

126、;b>  --begin</b></p><p>  begin transaction</p><p>  declare @e int;--錯誤信息</p><p><b>  set @e=0;</b></p><p>  --向transinfo插入信息,有觸發(fā)器自動修改卡里面的余額</p

127、><p>  insert into transinfo values(getdate(),@orginCardID,'支取',@money,null)</p><p>  set @e=@e+@@error;</p><p>  --向transinfo插入信息有觸發(fā)器自動修改卡里面的余額</p><p>  insert in

128、to transinfo values(getdate(),@aimCardID,'存入',@money,null)</p><p>  set @e=@e+@@error;</p><p>  if @e<>0 --錯誤為轉(zhuǎn)帳不成功</p><p><b>  begin</b></p><p

129、>  print '轉(zhuǎn)賬失敗'</p><p>  rollback tran--事務(wù)撤消</p><p>  declare @balance1 decimal(20,4),@balance2 decimal(20,4)</p><p>  select @balance1=balance from cardinfo where @orgi

130、nCardID=cardid</p><p>  select @balance2=balance from cardinfo where @aimCardID=cardid</p><p>  print '卡號'+convert(varchar(20),@orginCardID)+'余額'+convert(varchar(10),@balance1)&l

131、t;/p><p>  print '卡號'+convert(varchar(20),@aimCardID)+'余額'+convert(varchar(10),@balance2)</p><p><b>  end</b></p><p><b>  else</b></p>&l

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論