2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  航空公司管理信息系統(tǒng)</p><p>  一個正常營運的航空公司需要管理所擁有的飛機、航線的設(shè)置、客戶的信息等,更重要的還要提供票務管理。面對各種不同種類的信息,需要合理的數(shù)據(jù)庫結(jié)構(gòu)來保存數(shù)據(jù)信息以及有效的程序結(jié)構(gòu)支持各種數(shù)據(jù)操作的執(zhí)行。</p><p>  本設(shè)計講述如何建立一個航空公司管理信息系統(tǒng)。一般而言,航空公司的管理信息系統(tǒng)應該包括人事、工資管理模塊 。&l

2、t;/p><p><b>  1 系統(tǒng)設(shè)計</b></p><p>  1.1 系統(tǒng)功能分析</p><p>  系統(tǒng)開發(fā)的總體任務是實現(xiàn)各種信息的系統(tǒng)化、規(guī)范化和自動化。</p><p>  系統(tǒng)功能分析是在系統(tǒng)開發(fā)的總體任務的基礎(chǔ)上完成。本例子中的航空公司管理信息系統(tǒng)需要完成功能主要有:</p><p

3、>  艙位信息的輸入和修改,包括艙位等級編號、艙位等級名稱、提供的各種服務類別,以及備注信息等。</p><p>  客機信息的輸入、修改和查詢,包括客機編號、客機型號、購買時間、服役時間、經(jīng)濟艙座位數(shù)量、公務艙座位數(shù)量、頭等艙座位數(shù)量以及備注信息等。</p><p>  航線信息的輸入、修改和查詢,包括航線編號、出發(fā)城市、到達城市、航班日期、出發(fā)時間、到達時間、客機編號、經(jīng)濟艙價格

4、、公務艙價格、頭等艙價格和備注信息等。</p><p>  客戶等級信息的輸入、修改,包括客戶等級編號、客戶等級名稱、折扣比例和備注信息等。</p><p>  客戶信息的輸入、修改和查詢,包括客戶編號、客戶姓名、客戶性別、身份證號碼、聯(lián)系電話、客戶類型和備注信息等。</p><p>  訂票信息的輸入、查詢和修改,包括訂票編號、客戶編號、客戶姓名、客戶類型、折扣比

5、例、航線編號、出發(fā)城市、到達城市、出發(fā)時間、艙位類型、票價、結(jié)算金額和備注信息等。</p><p>  1.2 系統(tǒng)功能模塊設(shè)計</p><p>  對上述各項功能進行集中、分塊,按照結(jié)構(gòu)化程序設(shè)計的要求,得到如圖9-1所示的系統(tǒng)功能模塊圖。</p><p>  圖9-1 系統(tǒng)功能模塊圖</p><p><b>  2 數(shù)據(jù)庫設(shè)計&

6、lt;/b></p><p>  數(shù)據(jù)庫在一個信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的好壞將直接對應用系統(tǒng)的效率以及實現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計可以提高數(shù)據(jù)存儲的效率,保證數(shù)據(jù)的完整和一致。</p><p>  設(shè)計數(shù)據(jù)庫系統(tǒng)時應該首先充分了解用戶各個方面的需求,包括現(xiàn)有的以及將來可能增加的需求。數(shù)據(jù)庫設(shè)計一般包括如下幾個步驟:</p><p

7、><b>  數(shù)據(jù)庫需要分析。</b></p><p>  數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計。</p><p>  數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計。</p><p>  2.1 數(shù)據(jù)庫需求分析</p><p>  用戶的需求具體體現(xiàn)在各種信息的提供、保存、更新和查詢,這就要求數(shù)據(jù)庫結(jié)構(gòu)能充分滿足各種信息的輸出和輸入。收集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)以

8、及數(shù)據(jù)處理的流程,組成一份詳盡的數(shù)據(jù)字典,為后面的具體設(shè)計打下基礎(chǔ)。</p><p>  仔細分析調(diào)查有關(guān)航空公司管理信息需求的基礎(chǔ)上,將得到如圖9-2所示的本系統(tǒng)所處理的數(shù)據(jù)流程。</p><p>  圖9-2 航空公司管理信息系統(tǒng)數(shù)據(jù)流程圖</p><p>  針對一般航空公司管理信息系統(tǒng)的需求,通過對航空公司管理工作過程的內(nèi)容和數(shù)據(jù)流程分析,設(shè)計如下面所示的數(shù)

9、據(jù)項和數(shù)據(jù)結(jié)構(gòu):</p><p>  艙位等級信息,包括的數(shù)據(jù)項有:艙位等級編號、艙位等級名稱、是否有禮品、是否有報紙、是否有飲料、是否有午餐、是否有電影、是否可以改簽、是否可以退票、是否可以打折、備注信息等。</p><p>  客機信息,包括的數(shù)據(jù)項有:客機編號、客機型號、購買時間、服役時間、經(jīng)濟艙座位數(shù)量、公務艙座位數(shù)量、頭等艙座位數(shù)量、備注信息等。</p><p

10、>  航線信息,包括的數(shù)據(jù)項有:航線編號、出發(fā)城市、到達城市、航班日期、出發(fā)時間、到達時間、客機編號、經(jīng)濟艙價格、公務艙價格、頭等艙價格、備注信息等。</p><p>  客戶類型信息,包括的數(shù)據(jù)項有:客戶類型編號、客戶類型名稱、折扣比例、備注信息等。</p><p>  客戶信息,包括的數(shù)據(jù)項有:客戶編號、客戶姓名、客戶性別、身份證號碼、聯(lián)系電話、客戶類型、備注信息等。</p

11、><p>  訂票信息,包括的數(shù)據(jù)項有:訂票編號、顧客編號、顧客姓名、顧客類型、折扣比例、航線編號、出發(fā)城市、到達城市、艙位類型、機票價格、結(jié)算金額、備注信息等。</p><p>  有了上面的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)項和數(shù)據(jù)流程,我們就能進行下面的數(shù)據(jù)庫設(shè)計。</p><p>  2.2 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計</p><p>  得到上面的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)

12、以后,就可以設(shè)計出能夠滿足用戶需求的各種實體,以及它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計打下基礎(chǔ)。這些實體包含各種具體信息,通過相互之間的作用形成數(shù)據(jù)的流動。</p><p>  本實例根據(jù)上面的設(shè)計規(guī)劃出的實體有:艙位等級信息實體、客機信息實體、航線信息實體、客戶類型信息實體、客戶信息實體、訂票信息實體。各個實體具體的描述E-R圖如下。</p><p>  艙位等級信息實體E-R圖如圖9-

13、3所示。</p><p>  圖9-3 艙位等級信息實體E-R圖</p><p>  客機信息實體E-R圖如圖9-4所示。</p><p>  圖9-4 客機信息實體E-R圖</p><p>  航線信息實體E-R圖如圖9-5所示。</p><p>  圖9-5 航線信息實體E-R圖</p><p&

14、gt;  客戶類型信息實體E-R圖如圖9-6所示。</p><p>  圖9-6 客戶類型信息實體E-R圖</p><p>  客戶信息實體E-R圖如圖9-7所示。</p><p>  圖9-7 客戶信息實體E-R圖</p><p>  訂票信息實體E-R圖如圖9-8所示。</p><p>  圖9-8 訂票信息實體E

15、-R圖</p><p>  實體之間關(guān)系的E-R圖如圖9-9所示。</p><p>  圖9-9 實體之間關(guān)系的E-R圖</p><p>  2.3 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計</p><p>  現(xiàn)在需要將上面的數(shù)據(jù)庫概念結(jié)構(gòu)轉(zhuǎn)化為SQL Server 2000數(shù)據(jù)庫系統(tǒng)所支持的實際數(shù)據(jù)模型,也就是數(shù)據(jù)庫的邏輯結(jié)構(gòu)。</p><

16、p>  航空公司管理信息系統(tǒng)數(shù)據(jù)庫中各個表格的設(shè)計結(jié)果如下面表格所示。每個表格表示在數(shù)據(jù)庫中的一個表。表9-1為供應商信息表。</p><p>  表9-1 serviceInfo 艙位等級信息表</p><p>  表9-2為顧客信息表格。</p><p>  表9-2

17、 planeInfo客機信息表格</p><p>  表9-3為航線信息表。</p><p>  表9-3 airlineInfo航線信息表</p><p>  表9-4為客戶類型信息表格。</p><p>  表9-4 customerType 客戶類

18、型信息表</p><p><b>  續(xù)表</b></p><p>  表9-5為客戶信息表格。</p><p>  表9-5 customerInfo 客戶信息表</p><p>  表9-6為訂票信息表格。</p><p>  表9-6

19、 ticketInfo 訂票信息表</p><p>  3 數(shù)據(jù)庫結(jié)構(gòu)的實現(xiàn)</p><p>  經(jīng)過前面的需求分析和概念結(jié)構(gòu)設(shè)計以后,得到數(shù)據(jù)庫的邏輯結(jié)構(gòu)?,F(xiàn)在就可以在SQL Server 2000數(shù)據(jù)庫系統(tǒng)中實現(xiàn)該邏輯結(jié)構(gòu)。這是利用SQL Server 2000數(shù)據(jù)庫系統(tǒng)中的SQL 查詢分析器實現(xiàn)的。下面給出創(chuàng)建這些表格的SQL語句。</p>

20、;<p>  3.1 創(chuàng)建系統(tǒng)用戶表</p><p>  CREATE TABLE [dbo].[user_Info1] (</p><p>  [user_ID] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,</p><p>  [user_PWD] [char] (10) COLLATE Chin

21、ese_PRC_CI_AS NULL ,</p><p>  [user_Des] [char] (10) COLLATE Chinese_PRC_CI_AS NULL </p><p>  ) ON [PRIMARY]</p><p>  3.2 創(chuàng)建艙位等級信息表</p><p>  CREATE TABLE [dbo].[service

22、Info] (</p><p>  [serviceNO] [char] (4) COLLATE Chinese_PRC_CI_AS NOT NULL ,</p><p>  [serviceName] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [noPresent] [char] (2)

23、COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [noNewsPaper] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [noDrink] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [noFood]

24、[char] (2) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [noMovie] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [canChange] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  

25、[canCancel] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [canDiscount] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [serviceMemo] [text] COLLATE Chinese_PRC_CI_AS NULL </p>

26、<p>  ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]</p><p>  3.3 創(chuàng)建客機信息表</p><p>  CREATE TABLE [dbo].[planeInfo] (</p><p>  [planeNO] [char] (18) COLLATE Chinese_PRC_CI_AS NOT NULL ,

27、</p><p>  [planeType] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [buyDate] [datetime] NULL ,</p><p>  [serveDate] [datetime] NULL ,</p><p>  [isCommon] [nvar

28、char] (20) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [isCommercial] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [isFirst] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,</p>

29、<p>  [planeMemo] [text] COLLATE Chinese_PRC_CI_AS NULL </p><p>  ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]</p><p>  3.4 創(chuàng)建航線信息表</p><p>  CREATE TABLE [dbo].[airlineInfo] (</p

30、><p>  [airlineNO] [char] (14) COLLATE Chinese_PRC_CI_AS NOT NULL ,</p><p>  [departCity] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [arrivalCity] [nvarchar] (50) COLLAT

31、E Chinese_PRC_CI_AS NULL ,</p><p>  [departDate] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [departTime] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [arrivalTim

32、e] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [planeNO] [char] (18) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [commonPrice] [numeric](18, 2) NULL ,</p><p>  [commercialPr

33、ice] [numeric](18, 2) NULL ,</p><p>  [firstPrice] [numeric](18, 2) NULL ,</p><p>  [airlineMemo] [text] COLLATE Chinese_PRC_CI_AS NULL </p><p>  ) ON [PRIMARY] TEXTIMAGE_ON [PRIMAR

34、Y]</p><p>  3.5 創(chuàng)建客戶類型信息表</p><p>  CREATE TABLE [dbo].[customerType] (</p><p>  [ctypeNO] [char] (14) COLLATE Chinese_PRC_CI_AS NOT NULL ,</p><p>  [ctypeName] [char] (

35、20) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [discount] [numeric](2, 0) NULL ,</p><p>  [ctypeMemo] [text] COLLATE Chinese_PRC_CI_AS NULL </p><p>  ) ON [PRIMARY] TEXTIMAGE_ON [PRI

36、MARY]</p><p>  3.6 創(chuàng)建客戶信息表</p><p>  CREATE TABLE [dbo].[customerInfo] (</p><p>  [customerNO] [char] (14) COLLATE Chinese_PRC_CI_AS NOT NULL ,</p><p>  [customerName] [

37、char] (50) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [customerSex] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [customerID] [char] (18) COLLATE Chinese_PRC_CI_AS NULL ,</p><p

38、>  [customerTele] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [customerType] [char] (14) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [customerMemo] [text] COLLATE Chinese_PRC_CI_AS NU

39、LL </p><p>  ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]</p><p>  3.7 創(chuàng)建訂票信息表</p><p>  CREATE TABLE [dbo].[ticketInfo] (</p><p>  [ticketNO] [char] (14) COLLATE Chinese_PRC_C

40、I_AS NOT NULL ,</p><p>  [customerNO] [char] (14) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [customerName] [char] (50) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [customerType] [char

41、] (14) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [discount] [numeric](18, 0) NULL ,</p><p>  [airlineNO] [char] (14) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [departCity] [nvarchar

42、] (50) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [arrivalCity] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [ticketDate] [datetime] NULL ,</p><p>  [serviceType] [nvarc

43、har] (20) COLLATE Chinese_PRC_CI_AS NULL ,</p><p>  [ticketPrice] [numeric](18, 2) NULL ,</p><p>  [ticketSum] [numeric](18, 2) NULL ,</p><p>  [ticketMemo] [text] COLLATE Chinese_P

44、RC_CI_AS NULL </p><p>  ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]</p><p>  4 航空公司管理信息系統(tǒng)主窗體的創(chuàng)建</p><p>  上面的SQL語句在SQL Server 2000中查詢分析器的執(zhí)行,將自動產(chǎn)生需要的所有表格。有關(guān)數(shù)據(jù)庫結(jié)構(gòu)的所有后臺工作已經(jīng)完成?,F(xiàn)在將通過航空公司管理信息系統(tǒng)中

45、各個功能模塊的實現(xiàn),講解如何使用Visual Basic來編寫數(shù)據(jù)庫系統(tǒng)的客戶端程序。</p><p>  4.1 創(chuàng)建工程項目——MIS_Ticket</p><p>  啟動Visual Basic后,單擊File|New Project菜單,在工程模板中選擇Standard EXE,Visual Basic將自動產(chǎn)生一個Form窗體,屬性都是缺省設(shè)置。這里我們刪除這個窗體,單擊Fil

46、e|Save Project菜單,將這個工程項目命名為MIS_Ticket。</p><p>  4.2 創(chuàng)建航空公司管理信息系統(tǒng)的主窗體</p><p>  這個項目我們使用多文檔界面,單擊工具欄中的ADD MDI Form按鈕,產(chǎn)生一個窗體。在這個窗體上添加所需的控件,窗體和控件的屬性設(shè)置見表9-7。創(chuàng)建好的窗體如圖9-10所示。</p><p>  表9-7

47、 主窗體及其控件屬性設(shè)置</p><p>  圖9-10 航空公司管理信息系統(tǒng)主窗體</p><p>  在主窗體中加入狀態(tài)欄控件,可以實時反映系統(tǒng)中的各個狀態(tài)的變化。狀態(tài)欄控件需要在通常的屬性窗口中設(shè)置一般屬性,還需要在其特有的彈出式菜單中進行設(shè)置。選中狀態(tài)欄控件,單擊鼠標右鍵,選中Property菜單,然后設(shè)置屬性。面板1用來顯示各種文本信息,面

48、板2用來顯示當前日期,面板3用來顯示當前時間。</p><p>  4.3 創(chuàng)建主窗體的菜單</p><p>  在如圖9-10所示的主窗體中,單擊鼠標右鍵,選擇彈出式菜單中的Menu Editor,創(chuàng)建如圖9-11所示的菜單結(jié)構(gòu):</p><p>  圖9-11 主窗體中的菜單結(jié)構(gòu)</p><p>  4.4 創(chuàng)建公用模塊</p>

49、;<p>  在Visual Basic中可以用公用模塊來存放整個工程項目公用的函數(shù)、過程和全局變量等。這樣可以極大地提高代碼的效率。在項目資源管理器中為項目添加一個Module,保存為Module1.bas。下面就可以開始添加需要的代碼了。</p><p>  由于系統(tǒng)中各個功能模塊都將頻繁使用數(shù)據(jù)庫中的各種數(shù)據(jù),因此需要一個公共的數(shù)據(jù)操作函數(shù),用以執(zhí)行各種SQL語句。添加函數(shù)ExecuteSQL

50、,代碼如下:</p><p>  Public Function ExecuteSQL(ByVal SQL _</p><p>  As String, MsgString As String) _</p><p>  As ADODB.Recordset</p><p>  '執(zhí)行SQL語句,并返回記錄集對象</p>

51、<p><b>  ‘聲明一個連接</b></p><p>  Dim cnn As ADODB.Connection</p><p>  ‘聲明一個數(shù)據(jù)集對象</p><p>  Dim rst As ADODB.Recordset</p><p>  Dim sTokens() As String</

52、p><p><b>  '異常處理</b></p><p>  On Error GoTo ExecuteSQL_Error</p><p>  '用Split函數(shù)產(chǎn)生一個包含各個子串的數(shù)組 </p><p>  sTokens = Split(SQL)</p><p><b

53、>  ‘創(chuàng)建一個連接</b></p><p>  Set cnn = New ADODB.Connection</p><p><b>  '打開連接</b></p><p>  cnn.Open ConnectString</p><p>  If InStr("INSERT,DEL

54、ETE,UPDATE", _</p><p>  UCase$(sTokens(0))) Then</p><p><b>  ‘執(zhí)行查詢語句</b></p><p>  cnn.Execute SQL</p><p>  MsgString = sTokens(0) & _</p>&l

55、t;p>  " query successful"</p><p><b>  Else</b></p><p>  Set rst = New ADODB.Recordset</p><p>  rst.Open Trim$(SQL), cnn, _</p><p>  adOpenKeyse

56、t, _</p><p>  adLockOptimistic</p><p>  'rst.MoveLast 'get RecordCount</p><p><b>  '返回記錄集對象</b></p><p>  Set ExecuteSQL = rst</p><

57、;p>  MsgString = "查詢到" & rst.RecordCount & _</p><p><b>  " 條記錄 "</b></p><p><b>  End If</b></p><p>  ExecuteSQL_Exit:</p>

58、;<p>  Set rst = Nothing</p><p>  Set cnn = Nothing</p><p>  Exit Function </p><p>  ExecuteSQL_Error:</p><p>  MsgString = "查詢錯誤: " & _</p>

59、;<p>  Err.Description</p><p>  Resume ExecuteSQL_Exit</p><p>  End Function</p><p>  在ExecuteSQL函數(shù)中使用了Connect String函數(shù),這個函數(shù)用來連接數(shù)據(jù)庫,代碼如下:</p><p>  Public Functio

60、n ConnectString() _</p><p><b>  As String</b></p><p>  '返回一個數(shù)據(jù)庫連接</p><p>  ConnectString = "FileDSN=ticket.dsn;UID=sa;PWD="</p><p>  End Funct

61、ion</p><p>  在錄入有關(guān)信息時,需要回車來進入下一個文本框,這樣對軟件使用者非常方便。在所有的功能模塊都需要這個函數(shù),所以將它放在公用模塊中,代碼如下:</p><p>  Public Sub EnterToTab(Keyasc As Integer)</p><p><b>  '判斷是否為回車鍵</b></p&

62、gt;<p>  If Keyasc = 13 Then</p><p><b>  '轉(zhuǎn)換成Tab鍵</b></p><p>  SendKeys "{TAB}"</p><p><b>  End If</b></p><p><b>  En

63、d Sub</b></p><p>  Keyasc用來保存當前按鍵,SendKeys函數(shù)用來指定的按鍵。一旦按下回車鍵,將返回Tab鍵,下一個控件自動獲得輸入焦點。</p><p>  添加全局變量,用來記錄各個功能模塊的讀寫狀態(tài),代碼如下:</p><p>  Public gintSmode As Integer '記載艙位等級功能模塊的讀

64、寫狀態(tài)</p><p>  Public gintPmode As Integer '記載客機信息模塊的讀寫狀態(tài)</p><p>  Public gintAmode As Integer '記載航線信息模塊的讀寫狀態(tài)</p><p>  Public gintTmode As Integer '記載客戶類型模塊的讀寫狀態(tài)</p>

65、<p>  Public gintCmode As Integer '記載客戶信息模塊的讀寫狀態(tài)</p><p>  Public gintKmode As Integer '記載訂票信息模塊的讀寫狀態(tài)</p><p>  這些全局變量用來記錄是添加狀態(tài)還是修改狀態(tài),賦值1為添加,賦值2為修改。</p><p>  由于航空公司管理信息

66、管理系統(tǒng)啟動后,需要對用戶進行判斷。如果登錄者是授權(quán)用戶,將進入系統(tǒng),否則將停止程序的執(zhí)行。這個判斷需要在系統(tǒng)運行的最初進行,因此將代碼放在公用模塊中。</p><p>  5 系統(tǒng)用戶管理模塊的創(chuàng)建</p><p>  用戶管理模塊主要實現(xiàn):</p><p><b>  用戶登錄。</b></p><p><b&

67、gt;  添加用戶。</b></p><p><b>  修改用戶密碼。</b></p><p>  6 艙位信息管理模塊的創(chuàng)建</p><p>  艙位信息管理模塊主要實現(xiàn)如下功能:</p><p><b>  添加艙位信息。</b></p><p><b

68、>  修改艙位信息。</b></p><p><b>  刪除艙位信息。</b></p><p>  6.1 顯示艙位信息窗體的創(chuàng)建</p><p>  選擇“航線信息管理|艙位信息”菜單,將出現(xiàn)如圖9-12所示的窗體。</p><p>  圖9-12 艙位等級信息窗體</p><p

69、>  這個窗體用來顯示艙位等級信息,并且可以對各條記錄進行操作。在載入窗體時,程序?qū)⒆詣虞d入所有記錄,代碼如下:</p><p>  Private Sub menuCarbin_Click()</p><p>  frmService.txtSQL = "select * from serviceInfo"</p><p>  frmSe

70、rvice.Show 0</p><p><b>  End Sub</b></p><p>  窗體的Show方法后面加上0或者1,可以得到不同的窗體顯示方式。參數(shù)為0時,顯示的窗體為無模式形式,窗體切換時不需要進行其他操作;參數(shù)為1時,顯示的窗體為有模式形式,窗體切換時必須進行相關(guān)操作。</p><p>  載入窗體時將自動顯示各條記錄,代

71、碼如下:</p><p>  Private Sub Form_Load()</p><p><b>  ShowTitle</b></p><p><b>  ShowData</b></p><p><b>  End Sub</b></p><p>

72、;  函數(shù)ShowTitle用來顯示表頭,代碼如下:</p><p>  Private Sub ShowTitle()</p><p>  Dim i As Integer</p><p>  With msgList</p><p>  .Cols = 12</p><p>  .TextMatrix(0, 1)

73、= "等級編號"</p><p>  .TextMatrix(0, 2) = "機艙等級"</p><p>  .TextMatrix(0, 3) = "是否有禮品"</p><p>  .TextMatrix(0, 4) = "是否有報紙"</p><p>  

74、.TextMatrix(0, 5) = "是否有飲料"</p><p>  .TextMatrix(0, 6) = "是否有午餐"</p><p>  .TextMatrix(0, 7) = "是否提供電影"</p><p>  .TextMatrix(0, 8) = "是否可以改簽"&

75、lt;/p><p>  .TextMatrix(0, 9) = "是否可以退票"</p><p>  .TextMatrix(0, 10) = "是否可以打折"</p><p>  .TextMatrix(0, 11) = "備注信息"</p><p><b>  '固

76、定表頭</b></p><p>  .FixedRows = 1</p><p>  '設(shè)置各列的對齊方式</p><p>  For i = 0 To 11</p><p>  .ColAlignment(i) = 0</p><p><b>  Next i</b><

77、/p><p><b>  '表頭項居中</b></p><p>  .FillStyle = flexFillRepeat</p><p><b>  .Col = 0</b></p><p><b>  .Row = 0</b></p><p> 

78、 .RowSel = 1</p><p>  .ColSel = .Cols - 1</p><p>  .CellAlignment = 4</p><p><b>  '設(shè)置單元大小</b></p><p>  .ColWidth(0) = 1000</p><p>  .ColWid

79、th(1) = 1000</p><p>  .ColWidth(2) = 2000</p><p>  .ColWidth(3) = 1000</p><p>  .ColWidth(4) = 1000</p><p>  .ColWidth(5) = 1000</p><p>  .ColWidth(6) = 10

80、00</p><p>  .ColWidth(7) = 1000</p><p>  .ColWidth(8) = 1000</p><p>  .ColWidth(9) = 1000</p><p>  .ColWidth(10) = 1000</p><p>  .ColWidth(11) = 1000</p

81、><p><b>  .Row = 1</b></p><p><b>  End With</b></p><p><b>  End Sub</b></p><p>  函數(shù)ShowData把各條記錄加到表格中,并顯示出來,代碼如下:</p><p> 

82、 Private Sub ShowData()</p><p>  Dim j As Integer</p><p>  Dim i As Integer</p><p>  Dim MsgText As String</p><p><b>  ‘獲得數(shù)據(jù)集</b></p><p>  Set

83、mrc = ExecuteSQL(txtSQL, MsgText)</p><p>  With msgList</p><p><b>  .Rows = 1</b></p><p><b>  ‘判斷是否為空</b></p><p>  Do While Not mrc.EOF</p>

84、;<p><b>  ‘移動到下一行</b></p><p>  .Rows = .Rows + 1</p><p><b>  ‘循環(huán)</b></p><p>  For i = 1 To mrc.Fields.Count</p><p><b>  ‘判斷是否為空<

85、/b></p><p>  If Not IsNull(Trim(mrc.Fields(i - 1))) Then</p><p><b>  ‘根據(jù)數(shù)據(jù)類型顯示</b></p><p>  Select Case mrc.Fields(i - 1).Type</p><p>  Case adDBDate<

86、/p><p>  .TextMatrix(.Rows - 1, i) = Format(mrc.Fields(i - 1) & "", "yyyy-mm-dd")</p><p><b>  Case Else</b></p><p>  .TextMatrix(.Rows - 1, i) = mrc

87、.Fields(i - 1) & ""</p><p>  End Select</p><p><b>  End If</b></p><p><b>  Next I</b></p><p><b>  ‘移動到下一條記錄</b></p&

88、gt;<p>  mrc.MoveNext</p><p><b>  Loop</b></p><p><b>  End With</b></p><p><b>  ‘關(guān)閉數(shù)據(jù)集對象</b></p><p><b>  mrc.Close</

89、b></p><p><b>  End Sub</b></p><p>  在窗體顯示時,可以控制窗體中各個控件按照要求的位置顯示。可以在窗體的Resize事件中加入代碼,代碼如下:</p><p>  Private Sub Form_Resize()</p><p>  ‘判斷當前窗體所處的狀態(tài),當前窗體不處

90、于最小化狀態(tài)并且主窗體不處于最小化狀態(tài)時進行后面的操作</p><p>  If Me.WindowState <> vbMinimized And fMainForm.WindowState <> vbMinimized Then</p><p><b>  '邊界處理</b></p><p>  If Me.

91、ScaleHeight < 10 * lblTitle.Height Then</p><p><b>  Exit Sub</b></p><p><b>  End If</b></p><p>  If Me.ScaleWidth < lblTitle.Width + lblTitle.Width / 2

92、 Then</p><p><b>  Exit Sub</b></p><p><b>  End If</b></p><p><b>  '控制控件的位置</b></p><p>  lblTitle.Top = lblTitle.Height</p>

93、<p>  lblTitle.Left = (Me.Width - lblTitle.Width) / 2</p><p>  ‘控制表格控件的位置</p><p>  msgList.Top = lblTitle.Top + lblTitle.Height + lblTitle.Height / 2</p><p>  msgList.Width =

94、 Me.ScaleWidth - 200</p><p>  msgList.Left = Me.ScaleLeft + 100</p><p>  msgList.Height = Me.ScaleHeight - msgList.Top - 1500</p><p><b>  ‘控制按鈕位置</b></p><p>

95、;  Frame2.Top = msgList.Top + msgList.Height + 50</p><p>  Frame2.Left = Me.ScaleWidth / 2 - 3000</p><p><b>  End If</b></p><p><b>  End Sub</b></p>&

96、lt;p>  6.2 添加艙位信息窗體的創(chuàng)建</p><p>  在艙位信息顯示窗體中單擊“添加”按鈕,將出現(xiàn)如圖9-13所示的窗體。</p><p>  圖9-13 添加艙位等級信息窗體</p><p>  載入窗體時,首先根據(jù)標志變量判斷狀態(tài),然后決定是添加還是修改,代碼如下:</p><p>  Private Sub Form_

97、Load()</p><p>  Dim intCount As Integer</p><p>  Dim MsgText As String</p><p>  Dim i As Integer</p><p><b>  ‘判斷是否為添加</b></p><p>  If gintSmode

98、 = 1 Then</p><p>  Me.Caption = Me.Caption & "添加"</p><p>  For i = 0 To 7</p><p>  Combo1(i).AddItem "否"</p><p>  Combo1(i).AddItem "是"

99、;</p><p>  Combo1(i).ListIndex = 0</p><p><b>  Next I</b></p><p>  ‘載入當前選擇記錄內(nèi)容</p><p>  ElseIf gintSmode = 2 Then</p><p>  Set mrc = ExecuteSQL

100、(txtSQL, MsgText)</p><p><b>  ‘判斷記錄是否為空</b></p><p>  If mrc.EOF = False Then</p><p><b>  With mrc</b></p><p>  For intCount = 0 To 1</p>

101、<p>  txtItem(intCount) = .Fields(intCount)</p><p>  Next intCount</p><p>  txtItem(2) = .Fields(10)</p><p>  For i = 0 To 7</p><p>  Combo1(i).AddItem "否&quo

102、t;</p><p>  Combo1(i).AddItem "是"</p><p>  Combo1(i).ListIndex = 0</p><p><b>  Next i</b></p><p><b>  End With</b></p><p>

103、;  txtItem(0).Enabled = False</p><p><b>  End If</b></p><p>  Me.Caption = Me.Caption & "修改"</p><p><b>  End If</b></p><p>  mblCh

104、ange = False</p><p><b>  End Sub</b></p><p>  輸入內(nèi)容完畢,單擊“保存”按鈕,將首先判斷輸入內(nèi)容是否滿足要求,然后添加到數(shù)據(jù)庫中。代碼如下:</p><p>  Private Sub cmdSave_Click()</p><p>  Dim intCount As

105、Integer</p><p>  Dim sMeg As String</p><p>  Dim MsgText As String</p><p>  ‘判斷輸入內(nèi)容是否為空</p><p>  For intCount = 0 To 1</p><p>  If Trim(txtItem(intCount) &

106、amp; " ") = "" Then</p><p>  Select Case intCount</p><p><b>  Case 0</b></p><p>  sMeg = "機艙等級編號"</p><p><b>  Case 1<

107、/b></p><p>  sMeg = "機艙等級名稱"</p><p>  End Select</p><p>  sMeg = sMeg & "不能為空!"</p><p>  MsgBox sMeg, vbOKOnly + vbExclamation, "警告"

108、;</p><p>  txtItem(intCount).SetFocus</p><p><b>  Exit Sub</b></p><p><b>  End If</b></p><p>  Next intCount</p><p>  ‘判斷輸入內(nèi)容是否為數(shù)字&

109、lt;/p><p>  If Not IsNumeric(Trim(txtItem(0))) Then</p><p>  sMeg = "機艙等級編號"</p><p>  sMeg = sMeg & "請輸入數(shù)字!"</p><p>  MsgBox sMeg, vbOKOnly + vbExc

110、lamation, "警告"</p><p>  txtItem(0).SetFocus</p><p><b>  End If</b></p><p>  '添加判斷是否有相同的ID記錄</p><p>  If gintSmode = 1 Then</p><p>

111、;  txtSQL = "select * from serviceInfo where serviceNO='" & Trim(txtItem(0)) & "'"</p><p>  Set mrc = ExecuteSQL(txtSQL, MsgText)</p><p>  If mrc.EOF = False

112、Then</p><p>  MsgBox "已經(jīng)存在此編號的記錄!", vbOKOnly + vbExclamation, "警告"</p><p>  txtItem(0).SetFocus</p><p><b>  Exit Sub</b></p><p><b>

113、;  End If</b></p><p><b>  mrc.Close</b></p><p><b>  End If</b></p><p>  '判斷是否有相同內(nèi)容的記錄</p><p>  txtSQL = "select * from serviceInf

114、o where serviceNO<>'" & Trim(txtItem(0)) & "' and serviceName='" & Trim(txtItem(1)) & "'"</p><p>  Set mrc = ExecuteSQL(txtSQL, MsgText)</p&g

115、t;<p>  If mrc.EOF = False Then</p><p>  MsgBox "已經(jīng)存在相同機艙等級的記錄!", vbOKOnly + vbExclamation, "警告"</p><p>  txtItem(1).SetFocus</p><p><b>  Exit Sub&l

116、t;/b></p><p><b>  End If</b></p><p><b>  '先刪除已有記錄</b></p><p>  txtSQL = "delete from serviceInfo where serviceNO='" & Trim(txtItem(0

117、)) & "'"</p><p>  Set mrc = ExecuteSQL(txtSQL, MsgText)</p><p><b>  '再加入新記錄</b></p><p>  txtSQL = "select * from serviceInfo"</p>

118、<p>  Set mrc = ExecuteSQL(txtSQL, MsgText)</p><p>  mrc.AddNew</p><p>  For intCount = 0 To 1</p><p>  mrc.Fields(intCount) = Trim(txtItem(intCount))</p><p>  Nex

119、t intCount</p><p>  For intCount = 0 To 7</p><p>  mrc.Fields(intCount + 2) = Trim(Combo1(intCount))</p><p>  Next intCount</p><p>  mrc.Fields(10) = Trim(txtItem(2))&l

120、t;/p><p><b>  ‘更新數(shù)據(jù)集內(nèi)容</b></p><p>  mrc.Update</p><p><b>  ‘關(guān)閉數(shù)據(jù)集內(nèi)容</b></p><p><b>  mrc.Close</b></p><p>  If gintSmode =

121、1 Then</p><p>  MsgBox "添加記錄成功!", vbOKOnly + vbExclamation, "添加記錄"</p><p>  For intCount = 0 To 1</p><p>  txtItem(intCount) = ""</p><p> 

122、 Next intCount</p><p>  For intCount = 0 To 3</p><p>  Combo1(intCount).ListIndex = 0</p><p>  Next intCount</p><p>  txtItem(2) = ""</p><p>  mb

123、lChange = False</p><p>  Unload frmService</p><p>  frmService.txtSQL = "select * from serviceInfo"</p><p>  frmService.Show</p><p>  ElseIf gintSmode = 2 The

124、n</p><p><b>  Unload Me</b></p><p>  Unload frmService</p><p>  frmService.txtSQL = "select * from serviceInfo"</p><p>  frmService.Show</p>

125、<p><b>  End If</b></p><p><b>  End Sub</b></p><p>  6.3 修改艙位等級信息</p><p>  在艙位等級信息列表中選擇需要修改的記錄,然后單擊“修改”按鈕,將出現(xiàn)如圖9-13所示的窗體。選擇記錄的內(nèi)容將顯示在窗體中,可以進行修改,最后保存修改后

126、的記錄。代碼如下:</p><p>  Private Sub cmdModify_Click()</p><p>  Dim intCount As Integer</p><p>  判斷列表中是否有記錄</p><p>  If frmService.msgList.Rows > 1 Then</p><p&g

127、t;<b>  ‘改變狀態(tài)變量</b></p><p>  gintSmode = 2</p><p><b>  ‘記錄選擇記錄位置</b></p><p>  intCount = msgList.Row</p><p>  If intCount > 0 Then</p>

128、<p>  frmService1.txtSQL = "select * from serviceInfo where serviceNO ='" & Trim(msgList.TextMatrix(intCount, 1)) & "'"</p><p>  frmService1.Show 1</p><p&g

129、t;<b>  Else</b></p><p>  MsgBox "警告", vbOKOnly + vbExclamation, "請首先選擇需要修改的記錄!"</p><p><b>  End If</b></p><p><b>  End If</b>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論