火車票管理系統(tǒng) 數(shù)據(jù)庫課設(shè) 集美大學(xué)_第1頁
火車票管理系統(tǒng) 數(shù)據(jù)庫課設(shè) 集美大學(xué)_第2頁
火車票管理系統(tǒng) 數(shù)據(jù)庫課設(shè) 集美大學(xué)_第3頁
火車票管理系統(tǒng) 數(shù)據(jù)庫課設(shè) 集美大學(xué)_第4頁
火車票管理系統(tǒng) 數(shù)據(jù)庫課設(shè) 集美大學(xué)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)庫原理課程設(shè)計評語:學(xué)院班級姓名學(xué)號成績指導(dǎo)老師2013年01月10日目錄TOC\o"1-2"\h\z\u第一章引言 31.1課題研究背景與意義 31.2本課題研究內(nèi)容與目標(biāo) 31.3開發(fā)環(huán)境 31.4體系結(jié)構(gòu)設(shè)計 3第二章需求分析 42.1信息要求 42.2處理要求. 52.3數(shù)據(jù)字典. 52.4安全性和完整性要求. 7第三章概念結(jié)構(gòu)設(shè)計 83總ER圖 8第四章邏輯結(jié)構(gòu)設(shè)計 94.1關(guān)系模型 94.2數(shù)據(jù)模型優(yōu)化 154.3視圖設(shè)計 17第五章數(shù)據(jù)庫的實施和維護 185.1存儲過程設(shè)計 185.2觸發(fā)器設(shè)計 225.3模塊設(shè)計 30結(jié)論 35參考文獻 36PAGEPAGE37引言課題研究背景與意義中國的領(lǐng)土面積約960萬平方公里,居世界前列。隨著經(jīng)濟的發(fā)展,各地人民的溝通交流也與之劇增,領(lǐng)土之大也給人民的出行帶來了社會性的難題。中國鐵路四通八達,一直以來中國鐵路以安全、穩(wěn)定、快速和較為便宜的票價,吸引了占世界三分之一的人口乘坐。隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,用信息技術(shù)改造傳統(tǒng)行業(yè),是國家實現(xiàn)鐵路現(xiàn)代化戰(zhàn)略任務(wù)的迫切要求。鐵路信息化是鐵路信息化的重要標(biāo)志,將信息技術(shù)運用到鐵路生產(chǎn)經(jīng)營與各項管理決策中,提高市場競爭力和經(jīng)濟效益,所以,開發(fā)出火車站售票管理系統(tǒng)就顯得尤為重要了。本系統(tǒng)的主要作用是管理車票信息,還可以實現(xiàn)購票,退票,換票讓乘客及時了解售票的情況,及時買票;以保證售票工作能更順暢的運行;車票信息和乘車向的統(tǒng)計分析,以便火車站能更好的調(diào)度車次,以便滿足乘客出行要求。這就要求軟件的設(shè)計要結(jié)合具體實際,從而為車站管理服務(wù),提高運行效率。為此,我們進行了專門調(diào)查,搜集了大量的資料,制定了詳盡的需求分析與系統(tǒng)設(shè)計。本系統(tǒng)可以很好地幫助鐵路部門提高工作效率,進一步提高工作效益和鐵路現(xiàn)代化水平,具有很高的開發(fā)價值和使用價值。本課題研究內(nèi)容與目標(biāo)1.2.1研究內(nèi)容本系統(tǒng)主要是實現(xiàn)火車站的售票管理與統(tǒng)計,從而提高售票效率。使用本系統(tǒng),可以有效地管理和統(tǒng)計車票的基本信息和各類車站相關(guān)信息,包括:車票基本信息、車站基本信息、車次信息、人員管理等,完成這些信息的增加、刪除、修改、查詢統(tǒng)計功能。銷售管理(自動生成車票編號、車票信息的增加、查詢和統(tǒng)計)退票管理(車票的退票操作、車票信息的對應(yīng)修改)換票管理(顧客車票信息的修改、車票信息的修改)查詢管理(車次查詢、時刻表查詢、價格查詢、售票情況查詢)調(diào)度管理(運價修改,車票數(shù)量修改)用戶管理(用戶權(quán)限的分配、登錄名與密碼的設(shè)置)1.2.2研究目標(biāo)分權(quán)限管理,滿足不同用戶的需求。各類信息及時發(fā)布,便于調(diào)度車輛,提高效率。開發(fā)環(huán)境操作系統(tǒng)為WindowsxpWindows7。數(shù)據(jù)庫管理系統(tǒng)為SQLServer2005標(biāo)準(zhǔn)版或企業(yè)版。體系結(jié)構(gòu)設(shè)計本次課程設(shè)計的課題為火車售票管理系統(tǒng),只采用了數(shù)據(jù)庫后臺設(shè)計。實現(xiàn)了銷售管理,退票管理,換票管理,查詢管理,調(diào)度管理,用戶管理等功能。表與表之間數(shù)據(jù)的影響采用觸發(fā)器控制。管理員給相應(yīng)的角色賦相應(yīng)權(quán)限,將用戶添加到角色中來,每個用戶擁有自己獨立的登錄名及相應(yīng)的密碼。使用戶擁有一定的查詢修改插入功能,在增刪改查等操作里使用了存儲過程。需求分析2.1信息要求2.2處理要求2.3數(shù)據(jù)字典1、數(shù)據(jù)項售票員信息表:sale描述列名數(shù)據(jù)類型備注:員工編號(登錄名)Sal_noVarchar(20)PK姓名Sal_nameVarchar(20)可為空登陸密碼Sal_passVarchar(20)不可為空顧客信息表:customer描述列名數(shù)據(jù)類型備注:身份證號碼Cus_idChar(18)PK姓名Cus_nameVarchar(20)不可為空電話號碼Cus_telChar(11)11或8位數(shù)字,可為空上車日期Cus_datedatetime不可為空上車時間Cus_hInt不可為空起點站Cus_staVarchar(20)不可為空終點站Cus_endVarchar(20)不可為空坐臥鋪Cus_wzChar(10)臥鋪或坐鋪,不可為空員工編號Cus_snoVarchar(20)FK車票信息表:ticket描述列名數(shù)據(jù)類型備注:編號Tic_noIntPK,從1開始自動增長1車次編號Tic_cnoVarchar(20)FK發(fā)車日期Tic_dateDatetimeFK車票數(shù)量Tic_setInt可為空顧客身份證號碼Tic_idChar(18)FK,17位數(shù)字+1位數(shù)字或x坐臥鋪Tic_wzChar(10)可為空車次信息表:price描述列名數(shù)據(jù)類型備注:車次編號Pr_cnoVarchar(20)PK起點站Pr_staVarchar(20)可為空終點站Pr_endVarchar(20)可為空票價Pr_valueMoney可為空發(fā)車日期Pr_dateDatetimePK發(fā)車時間Pr_h1Int不可為空到站時間Pr_h2Int不可為空臥鋪數(shù)量Prw_numInt可為空坐鋪數(shù)量Prz_numInt可為空退票信息表:refund描述列名數(shù)據(jù)類型備注:車票編號Ref_noIntPK車次編號Ref_ticnoVarchar(20)可為空顧客身份證號碼Ref_idChar18)可為空顧客姓名Ref_nameVarchar(20)可為空票價Ref_valueMoney可為空應(yīng)退款Ref_moneyMoney可為空數(shù)據(jù)暫存表:data描述列名數(shù)據(jù)類型備注:車次編號Data_cnoVarchar(20)PK顧客身份證號碼Data_idChar18)可為空票價Data_moneyMoney可為空2、數(shù)據(jù)結(jié)構(gòu)1.sale,定義了售票員的主要信息組成:sale(sal_no,sal_name,sal_pass)2.customer,購票顧客的主要信息customer(cus_id,cus_name,cus_tel,cus_date,cus_h,cus_sta,cus_end,cus_wz,cus_sno)3.ticket,車票的主要信息ticket(tic_no,tic_id,tic_cno,tic_date,tic_set,tic_wz)4.price,車次和運價的主要信息price(pr_cno,pr_date,pr_sta,pr_end,pr_h1,pr_h2,pr_value,prw_num,prz_num)5.refund,退票的相關(guān)信息refund(ref_no,ref_ticno,ref_id,ref_name,ref_value,ref_money)6.data,暫存數(shù)據(jù)的主要信息data(data_id,data_cno,data_money)3、數(shù)據(jù)流數(shù)據(jù)流名說明數(shù)據(jù)流來源數(shù)據(jù)流去向添加添加售票員信息管理員S修改修改車次信息管理員Price添加添加顧客信息SCustomer查詢查詢基本信息S火車票信息表售票插入顧客信息,售票S車票信息添加添加售出的車票信息STicket修改修改已購買的車票信息CustomerTicket退票換票對已購買車票進行修改退訂CustomerS添加添加退票信息Customer退票信息4、數(shù)據(jù)存儲1.sale:售票員信息表,用來存儲各個售票員地基本信息,包括數(shù)據(jù)對象sal_no,sal_name,sal_pass2.customer,顧客信息表。購票顧客的主要信息,用來存儲每個顧客的基本信息,確定其購票信息,包括數(shù)據(jù)項cus_id,cus_name,cus_tel,cus_date,cus_h,cus_sta,cus_end,cus_wz,cus_sno3.ticket,車票表。車票的主要信息,包括數(shù)據(jù)項tic_no,tic_id,tic_cno,tic_date,tic_set,tic_wz4.price,車次表。車次和運價的主要信息,包括數(shù)據(jù)項pr_cno,pr_date,pr_sta,pr_end,pr_h1,pr_h2,pr_value,prw_num,prz_num)5.refund,退票表。退票的相關(guān)信息,包括數(shù)據(jù)項:ref_no,ref_ticno,ref_id,ref_name,ref_value,ref_money,6.data,數(shù)據(jù)暫存表。暫存數(shù)據(jù)的主要信息data_id,data_cno,data_money2.4安全性和完整性要求該系統(tǒng)具有較為安全的性能,每次用戶要求進入系統(tǒng)時,由系統(tǒng)進行核對,通過鑒定后才能提供機器使用權(quán)。用一個用戶名來標(biāo)明用戶身份,系統(tǒng)內(nèi)部記錄著所有合法用戶的標(biāo)識,系統(tǒng)鑒別是否是合法用戶,鑒定通過之后方能進行下一步核實,即用戶輸入口令。 對角色進行授權(quán),然后將用戶加進角色,使其擁有改角色所擁有的權(quán)限。通過授權(quán)管理,使得用戶只能對數(shù)據(jù)庫擁有部分操作的功能,防止對數(shù)據(jù)庫的破壞。通過定義視圖,把數(shù)據(jù)對象限制在一定的范圍內(nèi),即通過視圖機制將保密的數(shù)據(jù)對無權(quán)存取的用戶隱藏起來,從而自動地對數(shù)據(jù)提供一定程度的安全保護。該系統(tǒng)整體把握防止了數(shù)據(jù)庫中存在不正確的數(shù)據(jù),使得數(shù)據(jù)具有一定的正確性,相容性和有效性。該系統(tǒng)對每個表都設(shè)置了主鍵,保證了數(shù)據(jù)的唯一性,保證了主鍵的屬性不可為空,從而保證了實體完整性。該系統(tǒng)對于將兩個表中的相應(yīng)元素聯(lián)系起來了,在對參照表和被參照表進行增刪改時,采用了觸發(fā)器,使得對另外的表也做出了正確的操作,從而保證了參照完整性。對于個別屬性,對其定義了非空,check等約束。盡量保證用戶定義完整性。概念結(jié)構(gòu)設(shè)計總ER圖邏輯結(jié)構(gòu)設(shè)計4.1關(guān)系模型Customer:USE[dbs_keshe_gai]GO/******對象:Table[dbo].[Customer]腳本日期:01/10/201321:22:14******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_PADDINGONGOCREATETABLE[dbo].[Customer]( [cus_id][char](18)NOTNULL, [cus_name][varchar](20)NOTNULL, [cus_tel][varchar](11)NULL, [cus_date][datetime]NOTNULL, [cus_h][int]NOTNULL, [cus_sta][varchar](20)NOTNULL, [cus_end][varchar](20)NOTNULL, [cus_wz][char](10)NOTNULL, [cus_sno][varchar](20)NULL,CONSTRAINT[pk_cus_id]PRIMARYKEYCLUSTERED( [cus_id]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GOSETANSI_PADDINGOFFGOALTERTABLE[dbo].[Customer]WITHCHECKADDCONSTRAINT[fk_cus]FOREIGNKEY([cus_sno])REFERENCES[dbo].[sale]([sal_no])GOALTERTABLE[dbo].[Customer]CHECKCONSTRAINT[fk_cus]GOALTERTABLE[dbo].[Customer]WITHCHECKADDCONSTRAINT[ck_wz]CHECK(([cus_wz]like'臥鋪'OR[cus_wz]like'坐鋪'))GOALTERTABLE[dbo].[Customer]CHECKCONSTRAINT[ck_wz]GOALTERTABLE[dbo].[Customer]WITHCHECKADDCONSTRAINT[ckc_tel]CHECK(([cus_tel]like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'OR[cus_tel]like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'OR[cus_tel]ISNULL))GOALTERTABLE[dbo].[Customer]CHECKCONSTRAINT[ckc_tel]Data:USE[dbs_keshe_gai]GO/******對象:Table[dbo].[data]腳本日期:01/10/201321:24:27******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_PADDINGONGOCREATETABLE[dbo].[data]( [data_cno][varchar](20)NULL, [data_id][char](18)NOTNULL, [data_money][money]NULL,CONSTRAINT[pk_data]PRIMARYKEYCLUSTERED( [data_id]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GOSETANSI_PADDINGOFFGOALTERTABLE[dbo].[data]WITHCHECKADDCONSTRAINT[cK_data_id]CHECK(([data_id]like'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9,x,X]'))GOALTERTABLE[dbo].[data]CHECKCONSTRAINT[cK_data_id]Price:USE[dbs_keshe_gai]GO/******對象:Table[dbo].[price]腳本日期:01/10/201321:26:39******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_PADDINGONGOCREATETABLE[dbo].[price]( [pr_cno][varchar](20)NOTNULL, [pr_sta][varchar](20)NULL, [pr_end][varchar](20)NULL, [pr_value][money]NULL, [pr_date][datetime]NOTNULL, [pr_h1][int]NOTNULL, [pr_h2][int]NOTNULL, [prw_num][int]NULL, [prz_num][int]NULL,CONSTRAINT[pk_price]PRIMARYKEYCLUSTERED( [pr_cno]ASC, [pr_date]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GOSETANSI_PADDINGOFFRefund:USE[dbs_keshe_gai]GO/******對象:Table[dbo].[refund]腳本日期:01/10/201321:27:04******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_PADDINGONGOCREATETABLE[dbo].[refund]( [ref_no][int]NOTNULL, [ref_ticno][varchar](20)NULL, [ref_id][char](18)NULL, [ref_name][varchar](20)NULL, [ref_value][money]NULL, [ref_money][money]NULL,CONSTRAINT[pk_refund]PRIMARYKEYCLUSTERED( [ref_no]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GOSETANSI_PADDINGOFFSale:USE[dbs_keshe_gai]GO/******對象:Table[dbo].[sale]腳本日期:01/10/201321:27:21******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_PADDINGONGOCREATETABLE[dbo].[sale]( [sal_no][varchar](20)NOTNULL, [sal_name][varchar](20)NULL, [sal_pass][varchar](20)NOTNULL,CONSTRAINT[pk_sale]PRIMARYKEYCLUSTERED( [sal_no]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GOSETANSI_PADDINGOFFTicket:USE[dbs_keshe_gai]GO/******對象:Table[dbo].[ticket]腳本日期:01/10/201321:27:48******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_PADDINGONGOCREATETABLE[dbo].[ticket]( [tic_no][int]IDENTITY(1,1)NOTNULL, [tic_cno][varchar](20)NULL, [tic_date][datetime]NULL, [tic_set][int]NULLDEFAULT((0)), [tic_wz][char](10)NULL, [tic_id][char](18)NULL,CONSTRAINT[pk_tic_no]PRIMARYKEYCLUSTERED( [tic_no]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GOSETANSI_PADDINGOFFGOALTERTABLE[dbo].[ticket]WITHCHECKADDCONSTRAINT[ck_tic]FOREIGNKEY([tic_cno],[tic_date])REFERENCES[dbo].[price]([pr_cno],[pr_date])GOALTERTABLE[dbo].[ticket]CHECKCONSTRAINT[ck_tic]GOALTERTABLE[dbo].[ticket]WITHCHECKADDCONSTRAINT[ck_tic1]FOREIGNKEY([tic_id])REFERENCES[dbo].[Customer]([cus_id])GOALTERTABLE[dbo].[ticket]CHECKCONSTRAINT[ck_tic1]4.2數(shù)據(jù)模型優(yōu)化1.sale(sal_no,sal_id,sal_name,sal_pass)該關(guān)系的函數(shù)依賴圖: 從函數(shù)依賴圖可以看出,該關(guān)系中不存在部分函數(shù)依賴、傳遞函數(shù)依賴,且只有sal_no能夠確定其它各項。所以該關(guān)系是BCNF范式。2.customer(cus_id,cus_name,cus_tel,cus_date,cus_h,cus_sta,cus_end,cus_wz,cus_sno)該關(guān)系的函數(shù)依賴圖:從函數(shù)依賴圖可以看出,該關(guān)系中不存在部分函數(shù)依賴、傳遞函數(shù)依賴,且只有cus_id能夠確定其它各項。所以該關(guān)系是BCNF范式。3.ticket(tic_no,tic_id,tic_cno,tic_date,tic_set,tic_wz)該關(guān)系的函數(shù)依賴圖:從函數(shù)依賴圖可以看出,該關(guān)系中不存在部分函數(shù)依賴、傳遞函數(shù)依賴,且只有tic_no能夠確定其它各項。所以該關(guān)系是BCNF范式。4.price(pr_cno,pr_date,pr_sta,pr_end,pr_h1,pr_h2,pr_value,prw_num,prz_num)該關(guān)系的函數(shù)依賴圖:從函數(shù)依賴圖可以看出,該關(guān)系中不存在部分函數(shù)依賴、傳遞函數(shù)依賴,且只有pr_cno和pr_date能夠確定其它各項。所以該關(guān)系是BCNF范式。5.refund(ref_no,ref_ticno,ref_id,ref_name,ref_value,ref_money)該關(guān)系的函數(shù)依賴圖:從函數(shù)依賴圖可以看出,該關(guān)系中不存在部分函數(shù)依賴、傳遞函數(shù)依賴,且只有ref_no能夠確定其它各項。所以該關(guān)系是BCNF范式。6.data(data_id,data_cno,data_money)該關(guān)系的函數(shù)依賴圖:從函數(shù)依賴圖可以看出,該關(guān)系中不存在部分函數(shù)依賴、傳遞函數(shù)依賴,且只有data_id能夠確定其它各項。所以該關(guān)系是BCNF范式。4.3視圖設(shè)計/*火車站售票管理系統(tǒng)車票信息視圖information(身份證號,姓名,電話號碼,車次,作為,日期,時間,起點,終點,臥鋪或坐鋪,票價,員工編號)*/createviewinformationas selectdistinctcus_id身份證號,cus_name姓名,cus_tel電話號碼,tic_cno車次,tic_set座位,cus_date日期,cus_h時間, cus_sta起點,cus_end終點,cus_wz臥鋪或坐鋪,data.data_money票價,cus_sno員工編號 fromcustomerc,tickett,pricep,data wherec.cus_id=t.tic_idandp.pr_cno=t.tic_cnoanddata.data_cno=t.tic_cnoanddata.data_id=t.tic_id數(shù)據(jù)庫的實施和維護5.1存儲過程設(shè)計1./*功能:向顧客表插入數(shù)據(jù),即購票入口參數(shù):cus_id,cus_name,cus_tel,cus_date,cus_h,cus_sta,cus_end,cus_wz存儲過程名:proc_cus_in*/createprocproc_cus_in@idchar(18),@namevarchar(20),@telvarchar(11),@datedatetime,@hint,@stavarchar(20),@endvarchar(20),@wzchar(10)asbegindeclare@cus_snovarchar(20)select@cus_sno=user_name()insertintocustomervalues(@id,@name,@tel,@date,@h,@sta,@end,@wz,@cus_sno)end2./*功能:刪除顧客表中的數(shù)據(jù),即退票入口參數(shù):cus_id,cus_cno存儲過程名:proc_cus_de*/createprocproc_cus_de@idchar(18),@cnovarchar(20)asbegindeleteticketwheretic_id=@idandtic_cno=@cnodeletedatawheredata_id=@idanddata_cno=@cnoend3./*功能:更新顧客信息表,即顧客更改信息進行換票入口參數(shù):cus_id,cus_date,cus_h,cus_sta,cus_end,cus_wz存儲過程名:proc_cus_up*/createprocproc_cus_up@idchar(18),@datedatetime,@hint,@stavarchar(20),@endvarchar(20),@wzchar(10)asbeginupdatecustomersetcus_date=@date,cus_h=@h,cus_sta=@sta,cus_end=@end,cus_wz=@wzwhere@id=cus_idend4./*功能:向車次表中插入數(shù)據(jù)參數(shù):pr_cno,pr_sta,pr_end,pr_value,pr_date,pr_h1,pr_h2,prw_num,prz_num存儲過程名:proc_pr_in*/createprocproc_pr_in@cnovarchar(20),@stavarchar(20),@endvarchar(20),@valuemoney,@datedatetime,@h1int,@h2int,@numwint,@numzintasinsertintopricevalues(@cno,@sta,@end,@value,@date,@h1,@h2,@numw,@numz)5./*功能:查看所有客戶的火車票信息入口參數(shù):無存儲過程名:火車票所有信息*/createproc火車票所有信息asselect*frominformation6./*功能:查看具體客戶的火車票信息入口參數(shù):身份證號,姓名存儲過程名:火車票信息*/createproc火車票信息@idchar(18),@namevarchar(20)asbeginselect*frominformationwhere身份證號=@idand@name=姓名end7./*功能:查看所有車次運價表的信息入口參數(shù):無存儲過程名:車次_運價表*/createproc車次_運價表asselect*fromprice8./*功能:查看具體車次入口參數(shù):pr_sta,pr_end存儲過程名:車次查詢*/createproc車次查詢@stavarchar(20),@endvarchar(20)asselect*frompricewhere@sta=pr_staand@end=pr_end9./*功能:查看具體車票價格入口參數(shù):pr_sta,pr_end,pr_wz存儲過程名:價格查詢*/createproc價格查詢@stavarchar(20),@endvarchar(20),@wzchar(10)asbegin declare@moneymoney if(@wz='臥鋪') begin select@money=pr_value+pr_value*0.2 fromprice where@sta=pr_staand@end=pr_end end elseif(@wz='坐鋪') begin select@money=pr_value fromprice where@sta=pr_staand@end=pr_end endselect@money火車票價格end10./*功能:查看退票表中所有信息入口參數(shù):無存儲過程名:退票表*/createproc退票表asselect*fromrefund11./*功能:查看具體某個顧客的退票信息以及應(yīng)退款金額入口參數(shù):ref_id,ref_name存儲過程名:退票表_用戶*/createproc退票表_用戶@idchar(20),@namevarchar(20)asbeginselect*fromrefundwhereref_id=@idandref_name=@nameselectref_money返還金額fromrefundwhereref_id=@idandref_name=@nameend存儲過程一覽表過程名功能入口參數(shù)權(quán)限proc_cus_in向顧客表插入數(shù)據(jù),即購票cus_id,cus_name,cus_tel,cus_date,cus_h,cus_sta,cus_end,cus_wz角色role_sale中的所有用戶proc_cus_de刪除顧客表中的數(shù)據(jù),即退票cus_id,cus_cno角色role_sale中的所有用戶proc_cus_up更新顧客信息表,即顧客更改信息進行換票cus_id,cus_date,cus_h,cus_sta,cus_end,cus_wz角色role_sale中的所有用戶proc_pr_in向車次表中插入數(shù)據(jù)pr_cno,pr_sta,pr_end,pr_value,pr_date,pr_h1,pr_h2,prw_num,prz_num管理員dbo火車票所有信息查看所有客戶的火車票信息無角色role_sale中的所有用戶火車票信息查看具體客戶的火車票信息身份證號,姓名角色role_sale中的所有用戶車次_運價表查看所有車次運價表的信息無角色role_sale中的所有用戶車次查詢查看具體車次pr_sta,pr_end角色role_sale中的所有用戶查看具體車票價格查看具體車票價格pr_sta,pr_end,pr_wz角色role_sale中的所有用戶退票表查看退票表中所有信息無角色role_sale中的所有用戶退票表_用戶查看具體某個顧客的退票信息以及應(yīng)退款金額ref_id,ref_name角色role_sale中的所有用戶5.2觸發(fā)器設(shè)計1./*利用觸發(fā)器實現(xiàn)售票功能每次插入一個顧客信息之后,即在車票表ticket中插入一條信息在數(shù)據(jù)暫存表data中也插入一條信息并更改車次信息表中的數(shù)據(jù),即坐鋪和臥鋪剩余的車票數(shù)量*/IFEXISTS(SELECTNAMEFROMSYSOBJECTSWHERENAME='cus_insert') DROPTRIGGERcus_insert--如果該觸發(fā)器已存在,刪除該觸發(fā)器GO--插入顧客信息后--@id,@name,@tel,@date,@h,@sta,@end,@wzcreatetriggercus_insertonCustomerafterinsertasbegin declare@idvarchar(20),@datedatetime,@hint,@stavarchar(20),@endvarchar(20),@wzchar(10) select@id=cus_id,@date=cus_date,@h=cus_h,@date=cus_date,@sta=cus_sta,@end=cus_end,@wz=cus_wz frominserted 選中車次表中對應(yīng)的起點終點和時間 ifexists(select* fromprice where@sta=pr_staand@end=pr_endand@date=pr_dateand@h=pr_h1) begin declare@tcnovarchar(20),@setwint,@setzint,@moneymoney --選定車次 select@tcno=pr_cno,@money=pr_value fromprice where@sta=pr_staand@end=pr_endand@date=pr_dateand@h=pr_h1 車票表插入數(shù)據(jù) if(@wz='坐鋪') begin 更新運價表中票剩余數(shù)量 if(selectmax(tic_set) fromticket where@tcno=tic_cnoandtic_wz='坐鋪')isnotnull begin select@setz=max(tic_set)+1 fromticket where@tcno=tic_cnoandtic_wz='坐鋪' end elseselect@setz=1 updateprice setprz_num=prz_num-1 where@tcno=pr_cnoand@date=pr_date insertintoticket(tic_cno,tic_date,tic_set,tic_wz,tic_id) values(@tcno,@date,@setz,@wz,@id) insertintodata(data_cno,data_id,data_money) values(@tcno,@id,@money) end if(@wz='臥鋪') begin if(selectmax(tic_set) fromticket where@tcno=tic_cnoandtic_wz='臥鋪')isnotnull begin select@setw=max(tic_set)+1 fromticket where@tcno=tic_cnoandtic_wz='臥鋪' end elseselect@setw=1 updateprice setprw_num=prw_num-1 where@tcno=pr_cnoand@date=pr_date insertintoticket(tic_cno,tic_date,tic_set,tic_wz,tic_id) values(@tcno,@date,@setw,@wz,@id) insertintodata(data_cno,data_id,data_money) values(@tcno,@id,@money+@money*0.2) end--@num剩余票數(shù) declare@numzint,@numwint select@numz=prz_num fromprice where@tcno=pr_cnoand@wz='坐鋪'and@date=pr_date select@numw=prw_num fromprice where@tcno=pr_cnoand@wz='臥鋪'and@date=pr_date if(@numz<0) begin print'沒票了!' rollback end if(@numw<0) begin print'沒票了!' rollback end end elsebeginprint'沒有符合要求的票'rollbackendend2./*利用觸發(fā)器實現(xiàn)退票功能要刪除客戶表customer中的數(shù)據(jù),要先刪除其從表即車票表ticket中的數(shù)據(jù)每次刪除一條記錄,customer中和data中的數(shù)據(jù)也隨之刪除一條同時更新車次表中的車票數(shù)量的數(shù)據(jù)*/IFEXISTS(SELECTNAMEFROMSYSOBJECTSWHERENAME='tic_delete') DROPTRIGGERtic_delete--如果該觸發(fā)器已存在,刪除該觸發(fā)器GO--插入顧客信息后--@id,@name,@tel,@date,@h,@sta,@end,@wzcreatetriggertic_deleteonticketafterdeleteasbegin --退票表中變量定義 declare@noint,@ticnovarchar(20),@ridchar(20),@rnamevarchar(20),@valuemoney,@moneymoney --客戶表變量定義 declare@tnoint,@tcnovarchar(20),@datedatetime,@twzchar(10),@tidchar(20) select@tno=tic_no,@tcno=tic_cno,@date=tic_date,@twz=tic_wz,@tid=tic_id fromdeleted ifexists(select* fromdata wheredata_id=@tid) begin declare@setwint,@setzint,@money1money --選定 select@value=data_money,@money=data_money-data_money*0.3 fromdata where@tid=data_id declare@namevarchar(20) select@name=cus_name fromcustomer wherecus_id=@tid insertintorefund values(@tno,@tcno,@tid,@name,@value,@money) if(@twz='坐鋪') begin updateprice setprz_num=prz_num+1 where@tcno=pr_cnoand@date=pr_date end if(@twz='臥鋪') begin updateprice setprw_num=prw_num+1 where@tcno=pr_cnoand@date=pr_date end deletefromcustomerwherecus_id=@tid end elsebeginprint'您沒有訂過該票'rollbackendend3./*利用存儲器實現(xiàn)換票功能每次更新一次顧客的信息后,同時更新ticket、data、price中的表其中,更新后,之前購買的車票相當(dāng)于退訂,車次表中車票對應(yīng)坐臥鋪的數(shù)量增加更新后的車票,其對應(yīng)的車票信息ticket隨之更改,車次表中車票對應(yīng)坐臥鋪的數(shù)量減*/IFEXISTS(SELECTNAMEFROMSYSOBJECTSWHERENAME='cus_update') DROPTRIGGERcus_update--如果該觸發(fā)器已存在,刪除該觸發(fā)器GO--插入顧客信息后--@id,@name,@tel,@date,@h,@sta,@end,@wzcreatetriggercus_updateonCustomerafterupdateasbegindeclare@stavarchar(20),@endvarchar(20),@datedatetime,@hint,@wzchar(10),@idchar(20)declare@ostavarchar(20),@oendvarchar(20),@odatedatetime,@ohint,@owzchar(10),@oidchar(20)select@sta=cus_sta,@end=cus_end,@date=cus_date,@h=cus_h,@wz=cus_wz,@id=cus_idfrominsertedselect@osta=cus_sta,@oend=cus_end,@odate=cus_date,@oh=cus_h,@owz=cus_wz,@oid=cus_idfromdeleted 選中運價表中對應(yīng)的起點終點和時間 ifexists(select* fromprice where@sta=pr_staand@end=pr_endand@date=pr_dateand@h=pr_h1) begin declare@tcnovarchar(20),@otcnovarchar(20),@setwint,@setzint,@moneymoney,@otnoint,@tnoin --選定車次 select@tcno=pr_cno,@money=pr_value fromprice where@sta=pr_staand@end=pr_endand@date=pr_dateand@h=pr_h1 select@otcno=pr_cno,@money=pr_value fromprice where@osta=pr_staand@oend=pr_endand@odate=pr_dateand@oh=pr_h1 車票表更新數(shù)據(jù) select@otno=tic_nofromticketwheretic_cno=@otcnoandtic_id=@oid select@tno=tic_nofromticketwheretic_cno=@tcnoandtic_id=@id if(@wz='坐鋪') begin if(selectmax(tic_set) fromticket where@tcno=tic_cnoandtic_wz='坐鋪')isnotnull begin select@setz=max(tic_set)+1 fromticket where@tcno=tic_cnoandtic_wz='坐鋪' end elseselect@setz=1 updateticket settic_cno=@tcno,tic_date=@date,tic_set=@setz,tic_wz=@wz wheretic_no=@otno updatedata setdata_cno=@tcno,data_money=@money wheredata_id=@id end if(@wz='臥鋪') begin if(selectmax(tic_set) fromticket where@tcno=tic_cnoandtic_wz='臥鋪')isnotnull begin select@setw=max(tic_set)+1 fromticket where@tcno=tic_cnoandtic_wz='臥鋪' end elseselect@setw=1 updateticket settic_cno=@tcno,tic_date=@date,tic_set=@setw,tic_wz=@wz wheretic_no=@otno updatedata setdata_cno=@tcno,data_money=@money+@money*0.2 wheredata_id=@id end 更新運價表中票剩余數(shù)量 updateprice setprw_num=prw_num-1 where@tcno=pr_cnoand@wz='臥鋪'andpr_date=@date updateprice setprz_num=prz_num-1 where@tcno=pr_cnoand@wz='坐鋪'andpr_date=@date--@num剩余票數(shù) declare@numzint,@numwint select@numz=prz_num fromprice where@tcno=pr_cnoand@wz='坐鋪' select@numw=prw_num fromprice where@tcno=pr_cnoand@wz='臥鋪' if(@numz<0) begin print'沒票了!' rollback end if(@numw<0) begin print'沒票了!' rollback end if(@owz='坐鋪') begin updateprice setprz_num=prz_num+1 where@otcno=pr_cnoand@odate=pr_date end if(@owz='臥鋪') begin updateprice setprw_num=prw_num+1 where@otcno=pr_cnoand@odate=pr_date end end elsebeginprint'沒有符合要求的票'rollbackendend4.*利用觸發(fā)器實現(xiàn)添加售票員的功能每插入一條記錄,就為售票員創(chuàng)建一個登錄名,并添加至角色role_sale中該用戶擁有和角色role_sale一樣的權(quán)限*/IFEXISTS(SELECTNAMEFROMSYSOBJECTSWHERENAME='sale_insert') DROPTRIGGERsale_insert--如果該觸發(fā)器已存在,刪除該觸發(fā)器GOcreatetriggersale_insertonsalewithencryption --對CREATETRIGGER語句的文本進行模糊處理。加密afterinsertas begin declare@namevarchar(20),@pwdvarchar(20),@strvarchar(1000) select@name=sal_no,@pwd=sal_passfrominserted --創(chuàng)建登錄用戶set@str='createlogin'+@name+'withpassword='''+@pwd+''''; exec(@str) --創(chuàng)建數(shù)據(jù)庫用戶 set@str='createuser'+@name+'forlogin'+@name; exec(@str)--給數(shù)據(jù)庫用戶創(chuàng)建權(quán)限 execsp_addrolemember'role_sale',@name end觸發(fā)器一覽表觸發(fā)器名功能類型作用表Cus_insert利用觸發(fā)器實現(xiàn)售票功能。每次插入一個顧客信息之后,即在車票表ticket中插入一條信息在數(shù)據(jù)暫存表data中也插入一條信息,插入成功后,車次表中對應(yīng)坐臥鋪的車票數(shù)量減1InsertCustomer(顧客信息表)Tic_delete利用觸發(fā)器實現(xiàn)退票功能。要刪除客戶表customer中的數(shù)據(jù),要先刪除其從表即車票表ticket中的數(shù)據(jù)。每次刪除一條記錄,customer中和data中的數(shù)據(jù)也隨之刪除一條。刪除成功后,車次表中對應(yīng)坐臥鋪的車票數(shù)量加1DeleteT

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論