熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

利用Delphi開發旅游景點微機售票系統

2013-11-23 17:44:38  來源: Delphi編程 
 引言

  隨著計算機局域網和廣域網的出現網絡產品(包括軟硬件)質量不斷提高品種數量迅速增長和發展以及數據庫技術的成熟和軟件工程方法的發展各種計算機網絡管理系統越來越完善旅游景點微機售票系統是計算機技術與網絡技術相結合的產物方便快捷的查詢統計使管理者能准確地掌握景點的經營情況並對售票人員進行監督管理並為其提供准確可信的決策依據其成功實現提高了旅游景點的售票效率和管理水平使一直由人工售票的局面劃上句號從而進入智能化售票的新階段

  本文介紹以Delphi為開發語言Microsoft SQL Server 為後台運行於Windows NT 的旅游景點微機售票系統的開發方法該系統適合各大小旅游景點售票系統的自動化管理具有較強的實際推廣應用價值

  系統總體方案設計

  微機售票系統采用星形拓撲局域網結構由服務器集線器計算機打印機組成見圖服務器上運行數據庫及系統管理程序實現查詢統計報表打印系統維護等功能各售票微機與相應的打印機放置在售票窗口運行售票程序完成界面輸入門票打印及售票員個人信息查詢統計等功能

  對於售票系統來說打印機的速度和數據通過網絡的傳輸速度是非常關鍵的指標如秦皇島野生動物園在其高峰期每天有大約萬人入園游覽要求使用三台微機進行售票而入園客人大都集中在同一段時間如早晨剛開園到上午點左右下午點~點之間等所以減少游客排隊等候時間加快售票速度就是微機售票系統必須解決的問題影響售票速度有兩方面因素一是硬件打印機的打印速度二是打印程序啟動打印和傳輸數據的速度經實際測試EPSON stylus color 彩色噴墨打印機其打印速度為A頁/分鐘能夠滿足要求

  在程序方面為了滿足打印速度的要求經過測試和精心選擇確定用Delphi做為程序設計語言Delphi把強大的對象Pascal語言和快捷便利的RAD相結合是一個通用的圖形用戶界面(GUI)開發工具它是基於可視化和組件的概念而設計出來的而且能非常方便地操縱數據庫及實現各種報表使得編程迅速且是目前調試編譯速度最快的編程語言之一在門票打印時直接調用Delphi的類Printers中的各種過程和函數如PrintersCanvasTextout(x:integer;y:integer;const Text:string)再結合其他的過程和函數即可實現快速打印解決了程序打印速度的問題

  系統選擇SQL Sever做為數據庫SQL Sever是一個客戶機/服務器關系型數據管理系統(RDBMS)使用TransactSQl在客戶機和SQL Sever之間發送請求能夠滿足系統的網絡傳輸要求Delphi中可以通過BDE(數據庫引擎)和ODBC進行數據庫訪問或者通過ADO直接進行數據庫訪問

  另外在總的程序設計時考慮到使用本系統的操作員素質參差不齊計算機操作水平相對較低所涉及的操作要盡可能簡單盡量少輸入信息盡量使用下拉框和選擇框避免出錯本系統操作員要輸入的只有游客人數(成人和小孩或學生)和車輛數其他信息如票價程序啟動時從數據庫中自動調出時間取自系統時間總價由計算機自動生成界面簡單操作容易易學易用   

  系統軟件總體設計

  數據庫表設計

  系統數據庫中共有零售票信息表密碼表操作員信息表票價信息表以及為統計查詢建造的視圖等以零售票信息表為例介紹表的結構其字段定義如表所示

  序列號由售票員的標識符號隨機號和微機售票開始的票數記錄組成如GK代表標識號為G的售票員隨機號為K張票

  退票否此字段用來標識票是否有效若有效則為無效為

  軟件結構設計

  系統軟件設計遵循模塊化程序設計的思想自頂向下步步求精系統程序由系統管理模塊和售票模塊組成售票模塊運行在售票微機上系統管理模塊運行在服務器上

  系統主要功能特性及實現方法

  系統主要模塊登錄及密碼輸入模塊系統主界面輸入模塊統計查詢報表打印模塊門票打印模塊下面分述各模塊的功能以及關鍵部分的實現

  登錄及密碼輸入模塊

  登錄及密碼輸入模塊用於限制操作員的權限程序完成的功能從界面上取出密碼查詢數據庫密碼表有相同密碼操作員有權進入下一界面三次輸入失敗程序自動退出另外在售票模塊中根據密碼要取出對應的操作員的名字以便將售票信息與操作員相關聯從數據庫中根據輸入密碼取相應的操作員函數如下其中handletbl為密碼表名稱idhandlenamehandlecode為表中字段代表編號操作員姓名操作員密碼

  function TFormPswdgethandlename(code:String):String;

  var name:String;

  begin

  name:=;

  QueryClose;

  QuerySQLClear;

  QueryDisableControls;

  QuerySQLAdd(Select idhandlenamehandlecode from handletbl);

  QueryOpen;

  if Querylocate(handlecodecode[]) then

  begin

  name:=queryFieldByName(handlename)AsString;

  end;

  Queryclose;

  Result:=name;

  end;

  系統主界面輸入模塊

  系統的主界面輸入模塊用於輸入和顯示售票信息根據其信息和票價自動計算出游客的總人數以及票價在此模塊中要求操作員只輸入游客人數確定即可自動計算和顯示總價打印則打印門票為了防止操作員誤輸入除整型數據以外的其他字符如AB等而導致程序出錯程序中在需要數據輸入的Tedit位置設置判斷條件只允許整型數據輸入

  統計與查詢報表打印模塊

  統計與查詢報表打印模塊用於實現售票信息的統計與查詢可以設定起止日期等信息並可生成報表打印統計與查詢用內嵌的SQL查詢語言實現報表使用Delphi的快速報表組件Qreport部件組中的各種控件

  門票打印模塊

  門票打印模塊實現門票的打印輸出功能在門票打印中需根據門票的樣式確定輸出的位置為了實現快速打印在打印時直接調用printers的過程和函數

  打印的過程如下

  procedure printmsg(thesyqoTotalpeopleadultNum childNumTotalcarbigcarmiddlecarminicartotalmoney prtdate:String);

  begin

  PrinterCanvasFontCharset := GB_CHARSET;

  PrinterBeginDoc;

  PrinterPageHeight;

  PrinterPageWidth;

  PrinterCanvasFontSize :=;//字體設置

  ……//根據用戶需要插入要打印的內容

  PrinterCanvasTextOut(x+ythesyqo);//打印內容

  PrinterEndDoc;

  end;

  退票管理模塊

  實際的售票過程中涉及到由於各種原因游客退票的情況而計算機打印售出的門票及相關信息已經存入數據庫中當有退票情況發生時必然存在操作員售票金額與數據庫查詢結果不一致的現象為了解決這一現象增加了退票管理模塊


From:http://tw.wingwit.com/Article/program/Delphi/201311/24982.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.