版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1. 課程設(shè)計(jì)的目的與意義1.1、課程設(shè)計(jì)的目的數(shù)據(jù)庫(kù)課程設(shè)計(jì)是數(shù)據(jù)庫(kù)系統(tǒng)原理實(shí)踐環(huán)節(jié)的及為重要的一部分其目的是:(1) 培養(yǎng)學(xué)生能夠應(yīng)用數(shù)據(jù)庫(kù)系統(tǒng)原理在需求分析的基礎(chǔ)上對(duì)系統(tǒng)進(jìn)行概念 設(shè)計(jì),學(xué)會(huì)設(shè)計(jì)局部ER,全局ER圖;(2) 培養(yǎng)學(xué)生能夠應(yīng)用數(shù)據(jù)庫(kù)系統(tǒng)在概念設(shè)計(jì)的基礎(chǔ)上應(yīng)用關(guān)系規(guī)化理論對(duì) 系統(tǒng)進(jìn)行邏輯設(shè)計(jì),學(xué)會(huì)在ER圖基礎(chǔ)上設(shè)計(jì)出易于查詢(xún)和操作的合理的 規(guī)化關(guān)系模型;(3) 培養(yǎng)學(xué)生能夠應(yīng)用SQL語(yǔ)言對(duì)所設(shè)計(jì)的規(guī)化關(guān)系模型進(jìn)行物理設(shè)計(jì),并 且能夠應(yīng)用事務(wù)處理,存儲(chǔ)過(guò)程,觸發(fā)器以保證數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)完整性 安全性,一致性,保證數(shù)據(jù)共享和防止數(shù)據(jù)沖突;(4) 培養(yǎng)學(xué)生理論與實(shí)際相結(jié)合能力,培養(yǎng)
2、學(xué)生開(kāi)發(fā)創(chuàng)新能力;(5) 培養(yǎng)學(xué)生獨(dú)立分析問(wèn)題、解決問(wèn)題、查閱資料以及自學(xué)能力,以適應(yīng)計(jì)算機(jī)產(chǎn)業(yè)日新月異發(fā)展的形勢(shì);(6) 提高和加強(qiáng)學(xué)生的計(jì)算機(jī)應(yīng)用與軟件開(kāi)發(fā)能力,使學(xué)生由初學(xué)者向?qū)I(yè) 的程序員過(guò)渡。1.2、課程設(shè)計(jì)的意義目前,我國(guó)在計(jì)算機(jī)應(yīng)用、計(jì)算機(jī)軟件和電子類(lèi)相關(guān)專(zhuān)業(yè)的人才培養(yǎng)方面,取得了長(zhǎng)足的發(fā)展,但同時(shí)也讓我們深刻地感覺(jué)到缺乏實(shí)際開(kāi)發(fā)設(shè)計(jì)項(xiàng)目的經(jīng)驗(yàn),不善與綜合運(yùn)用所學(xué)理論,對(duì)知識(shí)的把握缺乏融會(huì)貫通的能力尤其是我們計(jì)算機(jī)專(zhuān)業(yè)大學(xué)生,由于缺乏具體項(xiàng)目經(jīng)驗(yàn),畢業(yè)之后普遍感到知識(shí)不能轉(zhuǎn)化為 能力。課程設(shè)計(jì)可以鍛煉我們理論聯(lián)系實(shí)際的能力,為今后工作做鋪墊。信息時(shí)代已經(jīng)來(lái)臨,信息處理的利器一一計(jì)
3、算機(jī)應(yīng)用于火車(chē)站售票的日常管 理為火車(chē)站售票的現(xiàn)代化帶來(lái)了從未有過(guò)的動(dòng)力和機(jī)遇,為火車(chē)站票務(wù)管理領(lǐng)域 的飛速發(fā)展提供了無(wú)限潛力。采用計(jì)算機(jī)管理信息系統(tǒng)已成為火車(chē)站票務(wù)管理科 學(xué)化和現(xiàn)代化的重要標(biāo)志,給火車(chē)站票務(wù)帶來(lái)了明顯的經(jīng)濟(jì)效益和社會(huì)效益 。計(jì) 算機(jī)已經(jīng)成為人們生活不可卻小的一部分。鐵路票務(wù)管理是一件比較負(fù)責(zé)但又非 常重要的事情,它是涉及國(guó)家鐵路運(yùn)輸?shù)恼9ぷ鳌?國(guó)民經(jīng)濟(jì)的發(fā)展和人民生活 水平及質(zhì)量的大事情。隨著經(jīng)濟(jì)的發(fā)展,交通運(yùn)輸越來(lái)越便捷,為了提高效率, 減輕勞動(dòng)強(qiáng)度,設(shè)計(jì)開(kāi)發(fā)高效的鐵路信息查詢(xún)系統(tǒng)就顯得頗為重要。火車(chē)售票管 理中包含許多容,有鐵路乘客運(yùn)輸?shù)倪\(yùn)力問(wèn)題,有訂票管理問(wèn)題等等。
4、鐵路信息 查詢(xún)系統(tǒng)是企業(yè)信息決策和管理的重要的組成部分,是一種典型的信息管理系統(tǒng)(MIS),其開(kāi)發(fā)主要包括后臺(tái)的數(shù)據(jù)庫(kù)的建立、 維護(hù)以及前端的相應(yīng)應(yīng)用程序的 開(kāi)發(fā)兩個(gè)方面的容,數(shù)據(jù)庫(kù)的建立和維護(hù)主要要求其管理數(shù)據(jù)的一致性、 完整性、 安全性等特點(diǎn),而前臺(tái)的應(yīng)用程序開(kāi)發(fā)則要求做到各項(xiàng)功能要完備、操作要簡(jiǎn)便、 易學(xué)易用等特點(diǎn)。本課程設(shè)計(jì)專(zhuān)門(mén)要解決這些問(wèn)題,由于鐵路火車(chē)票務(wù)管理的復(fù) 雜性,本設(shè)計(jì)與開(kāi)發(fā)也僅是一個(gè)嘗試性的工作,但其中有很多重要的思想和方法, 涉及一些重要的程序代碼,對(duì)于研究開(kāi)發(fā)該類(lèi)程序的工程人員可以起一個(gè)拋磚引 玉的作用。2. 需求分析2.1.需求分析的任務(wù)隨著旅游業(yè)的逐漸的成熟發(fā)達(dá),
5、鐵路客運(yùn)量大幅度的提高,各大省市的列 車(chē)都顯著的增加,這些都對(duì)列車(chē)票務(wù)管理系統(tǒng)提出了更高的要求, 所以要不斷的 完善更新列車(chē)票務(wù)管理系統(tǒng),提高列車(chē)售票系統(tǒng)的工作效率。隨著科學(xué)的不斷進(jìn) 步,計(jì)算機(jī)應(yīng)用已經(jīng)遍布整個(gè)社會(huì)的每個(gè)角落。 目前社會(huì)正處于健保發(fā)展方興未 艾的時(shí)代,各火車(chē)站莫不兢兢業(yè)業(yè)地改善本身的體制或管理方式,以適應(yīng)健保越來(lái)越嚴(yán)格的規(guī)。列車(chē)在我國(guó)的人員流動(dòng)、物資運(yùn)輸中占據(jù)著舉足輕重的地位。 全 國(guó)有大量的人員通過(guò)搭乘火車(chē)到達(dá)目的地。而與火車(chē)的特殊性及可能經(jīng)過(guò)多個(gè)城 市,每個(gè)城市的車(chē)站可以出售此火車(chē)的車(chē)票。而且同一車(chē)站可能有多輛車(chē)經(jīng)過(guò)。 許多希望以最快的方式選擇自己想來(lái)乘坐的那一趟列車(chē)。 所
6、以以人工的方式是不 可能實(shí)現(xiàn)這種功能的。一種可行的方案是基于客戶端服務(wù)器的體系結(jié)構(gòu)。服務(wù)器 為數(shù)據(jù)庫(kù)系統(tǒng),存儲(chǔ)所有必要的信息??蛻舳送ㄟ^(guò)連接到服務(wù)的應(yīng)用程序快速、 準(zhǔn)確地完成相應(yīng)的工作,通過(guò)網(wǎng)上訂購(gòu),可以達(dá)到高效、便捷的購(gòu)票。列車(chē)票務(wù) 管理系統(tǒng)的實(shí)施,將會(huì)在一定程度上促進(jìn)鐵路客運(yùn)生產(chǎn)力和生產(chǎn)關(guān)系的變革,增強(qiáng)市場(chǎng)競(jìng)爭(zhēng)能力,提高鐵路部門(mén)的工作效率,提升管理水平,減少勞動(dòng)強(qiáng)度,方便廣大旅客購(gòu)票,有一定的社會(huì)和經(jīng)濟(jì)效益。22 系統(tǒng)需要實(shí)現(xiàn)的功能和操作如下:(1) .查詢(xún):可以通過(guò)起點(diǎn)站與終點(diǎn)站在進(jìn)行查詢(xún), 也可根據(jù)具體的車(chē)次輸入 進(jìn)行查詢(xún),同時(shí)每次查詢(xún)都會(huì)顯示車(chē)次號(hào),點(diǎn)擊即可顯示該趟列車(chē)所進(jìn)過(guò)站點(diǎn)的
7、詳細(xì)信息,其中包括所到達(dá)每個(gè)站的到達(dá)時(shí)間與出發(fā)時(shí)間。(2) .客戶注冊(cè)、注銷(xiāo):由于要進(jìn)行網(wǎng)上訂購(gòu)車(chē)票,用戶需注冊(cè),填寫(xiě)有關(guān)信 息,由物流公司負(fù)責(zé)送車(chē)票到客戶手中。如果用戶不再使用本系統(tǒng)可以選擇注銷(xiāo), 從而從數(shù)據(jù)庫(kù)中刪除其有關(guān)記錄。(3) .訂票業(yè)務(wù):本系統(tǒng)為網(wǎng)上訂票,用戶經(jīng)過(guò)查詢(xún)車(chē)次信息、票務(wù)信息,找 到自己所需的車(chē)票通過(guò)所關(guān)聯(lián)的賬戶進(jìn)行訂購(gòu)。(4) .退票業(yè)務(wù):根據(jù)客戶提供的情況(車(chē)次、時(shí)間、)為客戶辦理退票手續(xù),退票時(shí)按票價(jià)的80%退給客戶金額,若所退票額能滿足他的要求,則為他辦理退 票手續(xù),同時(shí)在數(shù)據(jù)庫(kù)中進(jìn)行更新。(5) .更新功能:該系統(tǒng)隨時(shí)跟據(jù)車(chē)輛的變化情況進(jìn)行更新,增加車(chē)輛時(shí)可 以
8、在系統(tǒng)中插入該車(chē)的詳細(xì)信息,同時(shí)也能根據(jù)需要修改某趟車(chē)經(jīng)過(guò)的站點(diǎn)與發(fā) 車(chē)時(shí)間,當(dāng)某趟車(chē)停止、開(kāi)行時(shí)可以刪除該趟車(chē)的信息。同時(shí)包括對(duì)列車(chē)信息、 站點(diǎn)信息、管理人員信息、訂票記錄等的更新功能。(6) .車(chē)票配送:客戶在訂購(gòu)了車(chē)票之后,管理人員通過(guò)后臺(tái)管理訂票記錄 然后根據(jù)客戶的要求選擇物流公司及時(shí)為其配送車(chē)票。3. 系統(tǒng)設(shè)計(jì)3.1總體設(shè)計(jì)1.功能設(shè)計(jì):該鐵路票務(wù)系統(tǒng)流程主要包括客戶操作、 管理人員操作、主管操作: 客戶操作:查詢(xún)操作:可以按照車(chē)次或始發(fā)站、終點(diǎn)站兩種方式進(jìn)行查詢(xún),只需要輸入關(guān) 鍵信息即可查到所需的車(chē)次的有關(guān)信息,包括車(chē)的類(lèi)型、所剩票 的類(lèi)型、數(shù)量、票價(jià)等。注冊(cè)操作:網(wǎng)上訂票,需要與
9、客戶的銀行賬號(hào)、地址等有關(guān)信息關(guān)聯(lián),只有進(jìn)行注冊(cè)之后才可以進(jìn)行訂票操作。訂票操作:客戶進(jìn)行注冊(cè)后,可以方便地進(jìn)行訂票,可以選擇支付方式與送票 方式,以達(dá)到最快速、高效地完成車(chē)票的訂購(gòu)。退票操作:由于一些原因,可能造成客戶要求退票,系統(tǒng)根據(jù)具體的情況判定 是否可以退票,進(jìn)行退票。注銷(xiāo)操作:客戶可能因?yàn)槟承┰蛞M(jìn)行注銷(xiāo)操作, 系統(tǒng)根據(jù)客戶請(qǐng)求完成客 戶注銷(xiāo),刪除數(shù)據(jù)庫(kù)中的該客戶有關(guān)信息。2.功能模塊圖車(chē)票編3.局部ER圖(以客戶為主體)n物流公司口送票1查詢(xún)票務(wù)信息1身份證號(hào)n客戶數(shù)量車(chē)票類(lèi)型1n車(chē)票1列車(chē)途徑站點(diǎn)起始時(shí)間屬于里程到達(dá)時(shí)間住址電話f m 支付類(lèi)型密i=r姓名m統(tǒng)計(jì)車(chē)票類(lèi)型2nn日
10、期車(chē)次 車(chē)類(lèi)型起始站訂購(gòu)3.2詳細(xì)設(shè)計(jì):邏輯結(jié)構(gòu)設(shè)計(jì)用戶(用戶賬號(hào),用戶詳細(xì)信息(用戶賬號(hào),性別,地址,支付方式)支付類(lèi)型(類(lèi)型編號(hào),支付類(lèi)型)網(wǎng)上銀行(銀行編號(hào),銀行名稱(chēng))訂票記錄(用戶編號(hào),車(chē)票編號(hào),數(shù)量,訂票日期)票務(wù)信息(車(chē)票編號(hào),剩余數(shù)量,日期)票類(lèi)型1 (票類(lèi)型編號(hào)1,票類(lèi)型名稱(chēng)1)票類(lèi)型2 (票類(lèi)型編號(hào)2,票類(lèi)型名稱(chēng)2)物流公司(物流公司編號(hào),物流公司名稱(chēng))數(shù)據(jù)庫(kù)物理設(shè)計(jì)用戶表:字段名稱(chēng)數(shù)據(jù)類(lèi)型寬度可否為空是否為主鍵說(shuō)明ID8char20否是用戶賬號(hào)passwordchar16否否用戶密碼用戶詳細(xì)信息表:字段名稱(chēng)數(shù)據(jù)類(lèi)型寬度可否為空是否為主鍵說(shuō)明ID8char20否是用戶賬號(hào)Na
11、mechar20否否Sexnoint1否否性別編號(hào)telchar11否否Addresschar30否否地址zhif unoint1否否支付方式支付類(lèi)型表:字段名稱(chēng)數(shù)據(jù)類(lèi)型寬度可否為空是否為主鍵說(shuō)明zhif unoint1否是類(lèi)型編號(hào)zhifuchar20否否支付類(lèi)型網(wǎng)上銀行:字段名稱(chēng)數(shù)據(jù)類(lèi)型寬度可否為空是否為主鍵說(shuō)明Banknoint1否是銀行編號(hào)Ba nkchar20否否銀行名稱(chēng)訂票記錄:字段名稱(chēng)數(shù)據(jù)類(lèi)型寬度可否為空是否為主鍵說(shuō)明ID8char20否是用戶IDchar20否是車(chē)票編號(hào)numint1否否數(shù)量Datedatetime1否否訂票日期票務(wù)信息表:字段名稱(chēng)數(shù)據(jù)類(lèi)型寬度可否為空是否為主鍵
12、說(shuō)明IDchar20否是車(chē)票編號(hào)num1int1否否剩余數(shù)量Date1datetime1否否日期票類(lèi)型1表:字段名稱(chēng)數(shù)據(jù)類(lèi)型寬度可否為空是否為主鍵說(shuō)明Type1int1否是票類(lèi)型編號(hào)1Type1nachar20否否票類(lèi)型名稱(chēng)1票類(lèi)型2表:字段名稱(chēng)數(shù)據(jù)類(lèi)型寬度可否為空是否為主鍵說(shuō)明Type2int1否是票類(lèi)型編號(hào)2Type2nachar20否否票類(lèi)型名稱(chēng)2物流公司(物流公司編號(hào),物流公司名稱(chēng))字段名稱(chēng)數(shù)據(jù)類(lèi)型寬度可否為空是否為主鍵說(shuō)明transnoInt1否是物流公司編號(hào)transnaChar20否否物流公司名稱(chēng)3.2系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)3.2.1. 該系統(tǒng)由兩部分組成:登錄部分和車(chē)次車(chē)票部分。(1)
13、 .登錄部分:該部分分為管理員與乘客登錄,管理員登錄時(shí)需要設(shè)定賬號(hào)與密碼,只有輸入正確的賬號(hào)與密碼才能登陸,同時(shí)系統(tǒng)的功能管理員都能操作, 乘客不需要賬號(hào)與密碼,但是乘客只有查詢(xún)的操作權(quán)限。(2) .車(chē)次車(chē)票部分:該部分又分為四個(gè)子系統(tǒng):查詢(xún)系統(tǒng):可以查詢(xún)車(chē)次基本信息與車(chē)次詳細(xì)。購(gòu)票系統(tǒng):用于乘客購(gòu)票,同時(shí)顯示剩余票數(shù)與票價(jià)。更新系統(tǒng):當(dāng)車(chē)次信息有變化時(shí),管理員可以根據(jù)情況插入和刪除車(chē)次信息。退票系統(tǒng):用于乘客需要退票時(shí),且退票時(shí)只退票價(jià)的80%圖3.2該系統(tǒng)流程圖如下開(kāi)始錯(cuò)誤客 乘查詢(xún)系統(tǒng)返回退退出作、11出M4士擊1-d圖3.24. 系統(tǒng)實(shí)現(xiàn)設(shè)計(jì)的火車(chē)站售票系統(tǒng)主要分為五個(gè)模塊:5.1.
14、登陸模塊。在登陸系統(tǒng)中,所需要的功能就是對(duì)輸入的賬號(hào)和密碼與數(shù)據(jù)庫(kù)中的賬號(hào)信息進(jìn)行匹配查詢(xún)。其實(shí)現(xiàn)使用了 text控件,adodc控件,frame控件,option控件,comman(控件以及l(fā)abel控件。主要代碼如下:Private Sub Comma nd1_Click() If Optio nl.Value = True The n '判斷是否是管理員登陸If Text1.Text = "" The n 'MsgBox "請(qǐng)輸入賬號(hào)"ElseIf Text2.Text = "" The nMsgBox &quo
15、t;請(qǐng)輸入密碼"ElseIf Text1.Text <> "" The nDim strsql As Stri ngstrsql = "select * from如果賬號(hào)中輸入為空則顯示"請(qǐng)輸入賬號(hào)"如果密碼框輸入為空則顯示"請(qǐng)輸入密碼"當(dāng)賬號(hào)框中輸入不為空表 3 Where id=" + "”' + Textl + 從數(shù)據(jù)庫(kù)中找到賬號(hào)等于賬號(hào)框中輸入的數(shù)據(jù)時(shí)With AdodclCo nn ectio nStri ng = "Provider=Microsoft
16、.J et.OLEDB.4.0;" _&"Data Source=" + App.Path +"db3.mdb;Persist Security Info=False".RecordSource = strsql.RefreshEnd WithIf Adodc1.Recordset.EOF = True The nMsgBox "賬號(hào)信息錯(cuò)誤"ElseIf Text2.Text <> Adodc1.Recordset.Fields("pass nu m") ThenMsgBox &qu
17、ot;密碼錯(cuò)誤"Elself Text2.Text = Adodc1.Recordset.Fields("pass nu m") Then密碼框中輸入的數(shù)據(jù)與數(shù)據(jù)庫(kù)的密碼相符時(shí)Form1.HideForm2.ShowEnd IfEnd IfElseIf Optio n2.Value = True The n '如果選擇為游客登錄則跳轉(zhuǎn)到游客查詢(xún)界面Form3.ShowForm1.HideEnd IfEnd Sub另外為了美化界面,增加登陸界面的功能,添加了 time控件,將計(jì)算機(jī)系統(tǒng)時(shí)間顯示在lable控件中,具體代碼如下:Private Sub Time
18、r1_Timer()Label4.Capti on = NowEnd Sub5.2. 主菜單即管理員登陸進(jìn)入后的操作菜單。本界面中用到了comman(控件作用是跳轉(zhuǎn)到操作員所需要的界面。主要代碼示例如下:Private Sub Comma nd1_Click()'當(dāng)前主菜單隱藏,更新系統(tǒng)顯示。Form2.HideForm4.ShowEnd Sub53更新系統(tǒng)更新系統(tǒng)中主要要求對(duì)數(shù)據(jù)庫(kù)中的表的數(shù)據(jù)進(jìn)行修改,主要包括 插入,修改,刪除。在這些功能的實(shí)現(xiàn)中我們使用了 adodc控件,option控件, label控件,datagrid 控件。主要代碼如下:Private Sub Comma
19、nd1_Click()'如果選擇的為火車(chē)基本信息,則讓datagrid控件中顯示火車(chē)基本信息的表。并實(shí)現(xiàn)插入功能。反之則對(duì)火車(chē)詳細(xì) 信息表進(jìn)行插入操作。If Optio nl.Value = True The nSet DataGridl.DataSource = AdodclElself Optio n2.Value = True The nSet DataGrid1.DataSource = Adodc2End IfEnd SubPrivate Sub Command2_Click()'允許在 datagrid 中對(duì)數(shù)據(jù)進(jìn)行更新DataGrid1.AllowUpdate =
20、 TrueEnd SubPrivate Sub Command3_Click()'如 果選擇 的為火車(chē)基本 信息,則讓datagrid 控件中顯示火車(chē)基本信息的表。并實(shí)現(xiàn)刪除功能。反之則對(duì)火車(chē)詳細(xì) 信息表進(jìn)行刪除操作。If Optio n1.Value = True The nElseIf Optio n2.Value = True The nSet DataGrid1.DataSource = Adodc2End IfEnd Sub'使用戶不能對(duì)datagrid中數(shù)據(jù)進(jìn)行更新,Private Sub Comma nd4_Click()防止出錯(cuò)。DataGrid1.AllowU
21、pdate = FalseEnd Sub54查詢(xún)系統(tǒng) 在本系統(tǒng)中主要是要求用戶能對(duì)火車(chē)進(jìn)行查詢(xún),包括車(chē)次查詢(xún), 站點(diǎn)查詢(xún)以及詳細(xì)查詢(xún)。另外要求不能對(duì)數(shù)據(jù)進(jìn)行修改。為了實(shí)現(xiàn)這些功能,我們用到了 datagrid 控件,adodc控件,label控件,comman控件,text控件。 具體代碼如下:Private Sub Command1_Click()'對(duì)輸入的兩個(gè)站點(diǎn)進(jìn)行查詢(xún)。查詢(xún)進(jìn)過(guò)輸入 的兩個(gè)站點(diǎn)的所有火車(chē)。為了實(shí)現(xiàn)這個(gè)對(duì)兩個(gè)站點(diǎn)間的查詢(xún),我們使用了子查詢(xún) 語(yǔ)句。Dim strsql As Stri ngstrsql = "select * from表 2 where 車(chē)
22、次 in (select 車(chē)次 from 表 2Where 站點(diǎn) in ( '" + Textl + "', '" + Text2 + "') group by車(chē)次 hav ingcou nt(*)>=2) and站點(diǎn) in ( '" + Textl + "', '" + Text2 + "') order by編號(hào)asc"With Adodc2.Conn ectio nStri ng = "Provider=Microsof
23、t .J et.OLEDB.4.0;" _&"Data Source=" + App.Path +"db3.mdb;Persist Security Info=False".RecordSource = strsqlSet DataGridl.DataSource = Adodc2.RefreshEnd WithEnd SubPrivate Sub Comma nd2_Click()'對(duì)Dim strsql As Stri ngstrsql = "select * from表 2 Where 車(chē)次="+ &q
24、uot;” + Text3 + "' orderby編號(hào)asc"With Adodc2.Conn ectio nStri ng = "Provider=Microsoft .J et.OLEDB.4.0;" _"Data Source=" + App.Path"db3.mdb;Persist Security Info=False".RecordSource = strsqlSet DataGrid1.DataSource = Adodc2 .RefreshEnd WithEnd SubPrivate Su
25、b Command3_Click()'對(duì)輸入的車(chē)次進(jìn)行查詢(xún),輸出該車(chē)次的信息Dim strsql As Stri ngstrsql = "select * from表 2 order by 編號(hào) asc"With Adodc2.Conn ectio nStri ng = "Provider=Microsoft .J et.OLEDB.4.0;" _&"Data Source=" + App.Path"db3.mdb;Persist Security In fo=False".RecordSource
26、 = strsqlSet DataGridl.DataSource = Adodc2.RefreshEnd WithEnd SubPrivate Sub Form_Load()'使datagrid 中輸出的數(shù)據(jù)不能進(jìn)行修改。DataGridl.AllowAddNew = FalseDataGridl.AllowDelete = FalseDataGridl.AllowUpdate = FalseEnd Sub5.5.購(gòu)票退票系統(tǒng)在該系統(tǒng)中要實(shí)現(xiàn)的功能是支持售票員對(duì)游客購(gòu)票的車(chē)次 的查詢(xún),以及購(gòu)票的操作,其中包括對(duì)票價(jià)的顯示,座位數(shù)的加減,尤其是實(shí)時(shí) 對(duì)數(shù)據(jù)庫(kù)的車(chē)票情況的更新,以及購(gòu)買(mǎi)硬
27、座、硬臥、軟臥、站票這不同車(chē)票的區(qū) 另為此,我們使用了 label控件,frame控件,text控件,options控件,datagrid 控件,adodc控件以及commanc控件。具體功能實(shí)現(xiàn)如下:(查詢(xún)的實(shí)現(xiàn)與查詢(xún) 系統(tǒng)的相似,不在這里列出)Private Sub Comma nd1_Click()'實(shí)現(xiàn)乘客購(gòu)票的顯示,以及實(shí)時(shí)對(duì)數(shù)據(jù)庫(kù)中的車(chē)票信息進(jìn)行更新。Label9.Capti on =Text2.Text Label11.C aptio n = Text1.Text Label10.Captio n = Text3.Text(” 發(fā)車(chē)時(shí)間")If Option1.
28、Value =TrueThe n Label13.C aptio n = Optio n1.C apti on Adodc1.Recordset.Fields("軟臥剩余票數(shù)")=Adodc1.Recordset.Fields("軟臥剩余票數(shù)")-1 Label17.Caption =Adodc1.Recordset.Fields("軟臥剩余票數(shù)")ElseIf Option2.Value = TrueThe nLabel13.Capti on = Optio n2.C apti on Adodc1.Recordset.Fields(
29、"硬臥剩余票Adodc1.Recordset.Fields("硬臥剩余票數(shù)")-1 Label17.Caption =Adodc1.Recordset.Fields(" 硬臥剩余票數(shù)")ElseIf Option4.Value = TrueThe nLabel13.Captio n = Optio n4 .C apti on Adodc1.Recordset.Fields("硬座剩余票Adodc1.Recordset.Fields("硬座剩余票數(shù)")-1 Label17.Caption =Adodc1.Record
30、set.Fields(" 硬座剩余票數(shù)")End If Label14.Caption =Text4.TextLabel15.Caption= Adodc1.Recordset.Fields("車(chē)次類(lèi)型")Label16.Caption=DateEnd SubPrivate Sub Command3_Click()'通過(guò)option控件,查詢(xún)出不同座位價(jià)格并把價(jià)格顯示到text控件中。If Optio nl.Value = True The nLabel20.Caption = (Text4.Text) * 0.8(”軟臥剩余票數(shù)(” 軟臥剩余票
31、數(shù)")+ 1Label17.Caption = Adodc1.Recordset.Fields("軟臥剩余票數(shù)")ElseIf Optio n2.Value = True The nLabel20.C aptio n = (Text4.Text) * 0.8Adodc1.Recordset.Fields(" 硬臥剩余票數(shù)")=Adodc1.Recordset.Fields(" 硬 臥剩余票數(shù)")+ 1Label17.Caption = Adodc1.Recordset.Fields("硬臥剩余票數(shù)")El
32、seIf Optio n4.Value = True The nLabel20.C aptio n = (Text4.Text) * 0.8Adodc1.Recordset.Fields(" 硬座剩余票數(shù)")=Adodc1.Recordset.Fields(" 硬 座剩余票數(shù)")+ 1Label17.Caption = Adodc1.Recordset.Fields("硬座剩余票數(shù)")End If'選擇軟臥,并把軟臥的剩余票數(shù)輸出軟臥票價(jià)")軟臥票價(jià)")End SubPrivate Sub Optio n1
33、_Click() Dim a As Double, b As Double Adodcl.Recordset.MoveFirst a = Adodc1.Recordset.Fields(" AdodcI.Recordset.MoveNext b = Adodc1.Recordset.Fields("Text4.Text = b - a軟臥剩余票數(shù)")Label17.Caption = Adodc1.Recordset.Fields("End Sub56此外,在系統(tǒng)設(shè)計(jì)過(guò)程中,我們發(fā)現(xiàn)如果直接使用adodc控件對(duì)數(shù)據(jù)庫(kù)進(jìn)行 關(guān)聯(lián),將使得我們?cè)O(shè)計(jì)的軟件只能在
34、指定的路徑中才能運(yùn)行,為此,我們查閱了相關(guān)資料,在軟件設(shè)計(jì)過(guò)程中動(dòng)態(tài)設(shè)置我們數(shù)據(jù)庫(kù)的路徑, 從而使軟件能在不同 的路徑中正常運(yùn)行,代碼如下:With Adodcl.Conn ectio nStri ng = "Provider=Microsoft .J et.OLEDB.4.0;" _&"Data Source=" + App.Path +"db3.mdb;Persist Security Info=False".RefreshEnd With5. 系統(tǒng)調(diào)試5.1.登陸系統(tǒng)圖5.1 :此為密碼輸入錯(cuò)誤提示。圖5.2 :此為密碼
35、輸入正確后跳轉(zhuǎn)到主菜單的界面圖5.3 :此為選擇乘客后正確跳轉(zhuǎn)到查詢(xún)的界面。圖5.1圖5.252查詢(xún)系統(tǒng)圖5.4 :此為輸入到的站點(diǎn)查詢(xún)后正確查詢(xún)出的信息。圖5.5 :此為輸入1374車(chē)次后正確查詢(xún)出的車(chē)次信息。圖5.6 :此為點(diǎn)擊詳細(xì)查詢(xún)后正確輸出的信息。圖5.4圖5.65.3.更新系統(tǒng)圖5.7 :此為未更新前顯示信息。圖5.8 :此為插入1234車(chē)次后顯示信息。圖5.9 :此為刪除1234車(chē)次后顯示信息圖5.854購(gòu)票系統(tǒng)。圖5.10 :此為輸入站點(diǎn),車(chē)次后過(guò)濾出的車(chē)次信息。圖5.11 :此為在圖十的基礎(chǔ)上選擇軟座后顯示的票價(jià)及剩余票數(shù)信息。圖5.12 :此為點(diǎn)擊確定購(gòu)買(mǎi)后顯示的信息,包括
36、對(duì)剩余票數(shù)的更新信息圖 5.10圖 5.11圖 5.125.5.退票系統(tǒng)圖5.13 :此為初始狀態(tài) 圖5.14 :此為在輸入與購(gòu)票系統(tǒng)相同信息后輸出的退還現(xiàn)金數(shù)目圖 5.13圖 5.146. 小結(jié)對(duì)于此次課程設(shè)計(jì)我感慨頗多,的確,從拿到題目到完成整個(gè)編程,從理論 到實(shí)踐,在整整兩個(gè)星期的日子里,學(xué)到的很多理論知識(shí),在這次課程設(shè)計(jì)實(shí)習(xí) 中更具體的體現(xiàn)了出來(lái),在實(shí)踐過(guò)程中,不僅鞏固了以前所學(xué)過(guò)的知識(shí),而且學(xué) 到了很多在書(shū)本上所沒(méi)有學(xué)到過(guò)的知識(shí)。通過(guò)這次課程設(shè)計(jì)使我懂得了理論與實(shí) 際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)到的理論知識(shí)與 實(shí)踐相結(jié)合起來(lái),從理論中得出結(jié)論,將結(jié)論輔助與理
37、論,才能真正學(xué)到知識(shí)并 寫(xiě)出有用的程序,所以提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力是十分重要 的。在設(shè)計(jì)的過(guò)程中遇到很多的問(wèn)題, 可以說(shuō)得是困難重重,由于對(duì)以前所學(xué)過(guò) 的知識(shí)理解得不夠深刻,掌握得不夠牢固。導(dǎo)致自己在程序設(shè)計(jì)過(guò)程中經(jīng)常出錯(cuò), 致使程序無(wú)法運(yùn)行或無(wú)法實(shí)現(xiàn)要求的步驟。 還有很多是些小問(wèn)題,這都是由于我 粗心大意而造成的,所以我認(rèn)識(shí)到設(shè)計(jì)程序一定要仔細(xì), 容不得絲毫的馬虎和粗 心大意。當(dāng)然還有其他的問(wèn)題,尤其是關(guān)于文件的操作,是我們最大的問(wèn)題,不 過(guò),經(jīng)過(guò)老師的講解和改錯(cuò)之后,也開(kāi)始懂得設(shè)計(jì)和運(yùn)用了。在本次實(shí)踐中,我認(rèn)識(shí)到了團(tuán)隊(duì)的重要性,團(tuán)隊(duì)需要個(gè)人,個(gè)人也離不開(kāi)團(tuán) 隊(duì),必須發(fā)揚(yáng)團(tuán)結(jié)
38、協(xié)作的精神。某個(gè)人的離群都可能導(dǎo)致整項(xiàng)工作的失敗。只有 一個(gè)人知道原理是遠(yuǎn)遠(yuǎn)不夠的,必須讓每個(gè)人都知道,否則一個(gè)人的錯(cuò)誤,就有 可能導(dǎo)致整個(gè)工作失敗。團(tuán)結(jié)協(xié)作是我們實(shí)習(xí)成功的一項(xiàng)非常重要的保證。而這次實(shí)習(xí)也正好鍛煉我們這一點(diǎn),這也是非常寶貴的。我很清楚的知道團(tuán)結(jié)協(xié)作的 力量是偉大的,如果是我一個(gè)人孤軍奮戰(zhàn)的話,肯定不能在規(guī)定時(shí)間完成這次課 程設(shè)計(jì)的要求容,因此我很懷念這兩個(gè)星期的合作, 想起我們一起查閱資料,一 起討論設(shè)計(jì)程序的思路,成功的時(shí)候一起分享喜悅,失敗的時(shí)候互相鼓勵(lì),我堅(jiān) 信,在這兩個(gè)星期的時(shí)間里面,我們的友情和團(tuán)結(jié)精神在歷練中經(jīng)受住了考驗(yàn), 變的更加頑強(qiáng),我們是一個(gè)集體的思想已經(jīng)深
39、入人心!附錄源代碼from1(登陸界面):Private Sub Comma nd1_Click()If Optio nl.Value = True The nIf Text1.Text = "" The nMsgBox "請(qǐng)輸入賬號(hào)"ElseIf Text2.Text = "" The nMsgBox "請(qǐng)輸入密碼"ElseIf Text1.Text <> "" The nDim strsql As Stri ngstrsql = "select * from表 3 Wh
40、ere id=" + "”' + Textl + "”'With Adodcl.Conn ectio nStri ng = "Provider=Microsoft .J et.OLEDB.4.0;" _& "Data Source=" + App.Path +"db3.mdb;Persist Security Info=False".RecordSource = strsql.RefreshEnd WithIf Adodc1.Recordset.EOF = True The nMs
41、gBox "賬號(hào)信息錯(cuò)誤"ElseIf Text2.Text <> Adodc1.Recordset.Fields("pass num") The nMsgBox " 密碼錯(cuò)誤"ElseIf Text2.Text = Adodc1.Recordset.Fields("pass nu m") The nForml.HideForm2.ShowEnd IfEnd IfElseIf Optio n2.Value = True The nForm3.ShowForml.HideEnd IfEnd SubPriv
42、ate Sub Comma nd2_Click()EndEnd SubPrivate Sub Form_Load()End SubPrivate Sub Timer1_Timer()Label4.Capti on = NowEnd Sub from2 (主菜單):Private Sub Comma nd1_Click()Form2.HideForm4.ShowEnd SubPrivate Sub Comma nd2_Click()Form2.HideForm5.ShowEnd SubPrivate Sub Comma nd3_Click()EndEnd SubPrivate Sub Comma
43、 nd4_Click()Form2.HideForm5.ShowEnd SubPrivate Sub Comma nd5_Click()Form2.HideForm3.ShowEnd Sub from3 (查詢(xún)系統(tǒng)):Private Sub Comma nd1_Click()Dim strsql As Stri ngstrsql = "select * from表 2 where 車(chē)次 in (select車(chē)次 from 表 2Where 站點(diǎn) in ( '" + Textl + "', '" + Text2 + "
44、39;) group by車(chē)次 hav ingcou nt(*)>=2) and 站點(diǎn) in ( '" + Textl + "', '" + Text2 + "') order by 編號(hào)asc"With Adodc2.Conn ectio nStri ng = "Provider=Microsoft .J et.OLEDB.4.0;" _& "Data Source=" + App.Path +"db3.mdb;Persist Security I
45、n fo=False".RecordSource = strsqlSet DataGridl.DataSource = Adodc2 .RefreshEnd WithEnd SubPrivate Sub Comma nd2_Click()Dim strsql As Stri ngstrsql = "select * from表 2 Where 車(chē)次="+ "” + Text3 + "' orderby編號(hào)asc"With Adodc2.Conn ectio nStri ng = "Provider=Microsoft
46、 .J et.OLEDB.4.0;" _& "Data Source=" + App.Path +"db3.mdb;Persist Security Info=False".RecordSource = strsqlSet DataGridl.DataSource = Adodc2.RefreshEnd WithEnd SubPrivate Sub Comma nd3_Click()Dim strsql As Stri ngstrsql = "select * from表 2 order by 編號(hào) asc"With
47、 Adodc2.Co nn ectio nStri ng = "Provider=Microsoft .J et.OLEDB.4.0;"& "Data Source=" + App.Path +"db3.mdb;Persist Security In fo=False".RecordSource = strsqlSet DataGridl.DataSource = Adodc2.RefreshEnd WithEnd SubPrivate Sub Form_Load()DataGridl.AllowAddNew = False
48、DataGridl.AllowDelete = False DataGridl.AllowUpdate = False End SubPrivate Sub Label4_Click() Forml.ShowForm3.HideEnd SubPrivate Sub Label5_Click()EndEnd Sub from4 (更新系統(tǒng)):Private Sub Comma nd1_Click()If Optio n1.Value = True The nSet DataGrid1.DataSource = Adodc1ElseIf Optio n2.Value = True The nSet
49、 DataGrid1.DataSource = Adodc2End IfEnd SubPrivate Sub Comma nd2_Click() DataGrid1.AllowUpdate = True End SubPrivate Sub Comma nd3_Click()If Optio n1.Value = True The nEnd IfEnd SubPrivate Sub Comma nd4_Click() DataGrid1.AllowUpdate = False End SubPrivate Sub Form_Load()strsql = "select * from表
50、 1 "With Adodcl.Co nn ectio nStri ng = "Provider=Microsoft .J et.OLEDB.4.0;"& "Data Source=" + App.Path +"db3.mdb;Persist Security Info=False".RecordSource = strsql.RefreshEnd Withstrsqll = "select * from表 2 "With Adodc2.Co nn ectio nStri ng = "P
51、rovider=Microsoft .J et.OLEDB.4.0;"& "Data Source=" + App.Path +"db3.mdb;Persist Security Info=False".RecordSource = strsql1.RefreshEnd WithDataGrid1.AllowUpdate = FalseEnd SubPrivate Sub Label1_Click()EndEnd SubPrivate Sub Label2_Click()Form2.ShowForm4.HideEnd SubPrivat
52、e Sub Optio n1_Click()Set DataGrid1.DataSource = Adodc1End SubPrivate Sub Optio n2_Click()Set DataGrid1.DataSource = Adodc2End Sub from5 (購(gòu)票退票系統(tǒng)):Private Sub Comma nd1_Click()Label9.C aptio n = Text2.TextLabel11.C apti on = Text1.TextLabel10.C apti on = Text3.TextLabel12.Caption = Adodc1.Recordset.F
53、ields("發(fā)車(chē)時(shí)間")If Optio n1.Value = True The nLabel13.C apti on = Optio n1.C aptio nAdodc1.Recordset.Fields(" 軟臥剩余票數(shù)")=Adodc1.Recordset.Fields(" 軟 臥剩余票數(shù)")-1Label17.Caption = Adodc1.Recordset.Fields("軟臥剩余票數(shù)")ElseIf Optio n2.Value = True The nLabel13.C apti on = Op
54、tio n2.C aptio nAdodc1.Recordset.Fields(" 硬臥剩余票數(shù)")=Adodc1.Recordset.Fields(" 硬臥剩余票數(shù)")-1(”硬臥剩余票數(shù)")Elself Optio n4.Value = True The nLabel13.C aptio n = Optio n4.Cap tio nAdodc1.Recordset.Fields("硬座剩余票數(shù)")=Adodc1.Recordset.Fields(" 硬座剩余票數(shù)")-1Label17.Caption
55、= Adodc1.Recordset.Fields("硬座剩余票數(shù)")ElseIf Opti on 5.Value = True The nLabel13.C aptio n = Optio n5.C aptio nAdodc1.Recordset.Fields("硬座剩余票數(shù)")=Adodc1.Recordset.Fields(" 硬座剩余票數(shù)")-1Label17.Caption = Adodc1.Recordset.Fields("硬座剩余票數(shù)")End IfLabel14.C aptio n = Text4
56、.TextLabel15.Caption = Adodc1.Recordset.Fields("車(chē)次類(lèi)型")Label16.C apti on = DateEnd SubPrivate Sub Comma nd2_Click()Dim strsql As Stri ngstrsql = "select * from 表 2 where 車(chē)次 in(” & Text1.Text & "') and 站點(diǎn) in ( '" + Text2 + "', '" + Text3 + &qu
57、ot;') order by編號(hào) asc"With Adodc1.Conn ectio nStri ng = "Provider=Microsoft .J et.OLEDB.4.0;" _& "Data Source=" + App.Path +"db3.mdb;Persist Security Info=False".RecordSource = strsqlSet DataGrid1.DataSource = Adodc1.RefreshEnd WithEnd SubPrivate Sub Comma n
58、d3_Click()If Optio n1.Value = True The nLabel20.C aptio n = (Text4.Text) * 0.8Adodc1.Recordset.Fields("軟臥剩余票數(shù)")=Adodc1.Recordset.Fields(" 軟臥剩余票數(shù)")+ 1Label17.Caption = Adodc1.Recordset.Fields("軟臥剩余票數(shù)")ElseIf Optio n2.Value = True The nLabel20.C aptio n = (Text4.Text) * 0
59、.8Adodc1.Recordset.Fields("硬臥剩余票數(shù)")=Adodc1.Recordset.Fields(" 硬臥剩余票數(shù)")+ 1Label17.Caption = Adodc1.Recordset.Fields("硬臥剩余票數(shù)")Elself Optio n4.Value = True The nLabel20.Caption = (Text4.Text) * 0.8(”硬座剩余票數(shù)(”硬座剩余票數(shù)")+ 1Label17.Caption = Adodc1.Recordset.Fields(" 硬座剩余票數(shù)&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年09月上海2024屆中國(guó)民生銀行上海分行秋季校園招考筆試歷年參考題庫(kù)附帶答案詳解
- 2024年09月2024屆華夏銀行昆明分行校園招聘筆試歷年參考題庫(kù)附帶答案詳解
- 2024年08月廣發(fā)銀行深圳分行夏季校園招聘(45人)筆試歷年參考題庫(kù)附帶答案詳解
- 2024年08月中國(guó)光大銀行蘇州分行公司客戶經(jīng)理崗招聘筆試歷年參考題庫(kù)附帶答案詳解
- 2024年08月中國(guó)光大銀行淄博分行轄屬支行副行長(zhǎng)(分管零售條線)招聘筆試歷年參考題庫(kù)附帶答案詳解
- 2024年08月中國(guó)人民財(cái)產(chǎn)保險(xiǎn)股份有限公司黔南分公司(貴州)招考5名派遣制工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 篆刻古代文化常識(shí)單選題100道及答案
- 2024年08月陜西2024年北京銀行西安分行校園招考筆試歷年參考題庫(kù)附帶答案詳解
- 2024年08月浙江/上海浦發(fā)銀行信息科技部社會(huì)招考(827)筆試歷年參考題庫(kù)附帶答案詳解
- 2024年08月河北平安銀行經(jīng)營(yíng)管理類(lèi)社會(huì)招考(803)筆試歷年參考題庫(kù)附帶答案詳解
- 外科學(xué)-粘連性腸梗阻
- 護(hù)理學(xué)基礎(chǔ)簡(jiǎn)答題 126道題 附答案
- 名著導(dǎo)讀簡(jiǎn)·愛(ài)整本書(shū)閱讀計(jì)劃
- 明渠均勻流計(jì)算公式
- GB/T 28621-2023安裝于現(xiàn)有建筑物中的新電梯制造與安裝安全規(guī)范
- CPK-數(shù)據(jù)自動(dòng)生成器
- 英語(yǔ)現(xiàn)在完成時(shí)專(zhuān)項(xiàng)練習(xí)題(附答案)
- 柒牌電梯媒體投放提案
- 碧桂園集團(tuán)同心共享實(shí)施辦法全套文件
- 五金合同2023(含價(jià)格清單明細(xì))
- 冷連軋機(jī)張力控制
評(píng)論
0/150
提交評(píng)論