首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 開發旅遊景區微機售票系統:SQL Server 後台、星型網路、快速列印實戰

     編輯:Delphi

針對旅遊景區售票高峰期「排隊久、人工錯、統計難」三大痛點,採用 Delphi + SQL Server 6.5 + Windows NT 4.0 星型區域網架構,實現自動化售票、即時統計、管理報表。本文詳細記錄系統總體設計、資料庫結構、核心模組代碼與關鍵技術選型心得。

系統架構

  • 拓撲:星型 LAN,中心伺服器掛 SQL Server,集線器連接多台售票微機 + 票據打印機 (EPSON Stylus Color 850, 8頁/分)。
  • 分工:伺服器跑管理程式 (查詢/統計/報表/維護);售票機跑售票程式 (介面輸入/打印/個人統計)。
  • 關鍵指標:高峰日 2 萬人次、3 台售票機、集中在上午 10 點前與下午 2-3 點,打印速度與網路傳輸是瓶頸。

資料庫核心表:零售票信息表

核心模組實作

1. 登入驗證 (密碼表查詢)


function TFormPswd.GetHandlerName(Code: String): String;
var Name: String;
begin
  Name := '';
  Query2.Close; Query2.SQL.Clear; Query2.DisableControls;
  Query2.SQL.Add('SELECT id, handlename, handlecode FROM handletbl');
  Query2.Open;
  if Query2.Locate('handlecode', Code, []) then
    Name := Query2.FieldByName('handlename').AsString;
  Query2.Close;
  Result := Name;
end;
  • 三次失敗自動退出。
  • 登入成功取得操作員姓名,後續售票記錄自動關聯。

2. 主售票介面 — 只輸入數量,其餘自動

  • 輸入:成人數、兒童數、車輛數 (大/中/小)。
  • 自動:票價啟動時從資料庫讀取、時間取系統、總價自動計算。
  • 防呆:TEdit OnKeyPress 僅允許數字鍵與 Backspace。

3. 統計查詢報表 — QuickReport 元件

  • 內嵌 SQL 靈活篩選:日期區間、操作員、票種、退票狀態。
  • QuickReport 控件 (QRBand、QRDBText、QRExpr) 快速構建分組報表、彙總統計。

4. 門票高速列印 — 直接繪製 Printer.Canvas


procedure PrintTicket(SeqNo, TotalPeople, AdultNum, ChildNum,
  TotalCar, BigCar, MidCar, MiniCar, TotalMoney, PrtDate: String);
begin
  Printer.Canvas.Font.Charset := GB2312_CHARSET;
  Printer.BeginDoc;
  Printer.Canvas.Font.Size := 14;
  // 依票面設計座標精確繪製
  Printer.Canvas.TextOut(X + 2370, Y, SeqNo);      // 流水號
  Printer.Canvas.TextOut(X + 1200, Y + 300, TotalPeople); // 總人數
  // ... 其他欄位 ...
  Printer.EndDoc;
end;
  • 繞過報表引擎,直接用 GDI 繪製,速度極快,符合高峰期連續打印需求。
  • 座標微調即可適應不同票面版型,無需重新設計報表模板。

5. 退票管理 — 解決金額不符

  • 退票時將對應記錄 IsVoid := 0,不刪除資料保留稽核軌跡。
  • 統計查詢自動過濾 IsVoid = 1,確保操作員實收與系統一致。

技術選型心得

欄位說明
SeqNo流水號:操作員標識+隨機碼+起始票號 (如 GK006662)
AdultNum成人票數量
ChildNum兒童/學生票數量
CarNum車輛數 (大/中/小型分欄)
TotalMoney總金額 (自動計算)
SellTime售票時間 (取系統時間)
OperatorID操作員 ID (登入驗證關聯)
IsVoid退票標記:1=有效, 0=退票作廢

部署與維運建議

  • 售票機磁碟寫保護或還原卡,防病毒/誤刪。
  • 每日自動備份 SQL Server 資料庫至異地。
  • 票據格式變更僅需調整 PrintTicket 座標參數,無需重新編譯安裝 (可外置 INI)。
  • 網路中斷時售票機可離線暫存 (本地臨時表),恢復後自動上傳合併。

此系統於秦皇島野生動物園實際上線運行,有效解決高峰期售票擁堵,將平均出票時間從 30 秒壓縮至 5 秒內,管理層獲得即時經營數據,決策效率大幅提升。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
決策點選擇理由
開發語言DelphiRAD 開發快、編譯速度最快、Printer.Canvas 列印高效、BDE/ADO 靈活切換
資料庫SQL Server 6.5C/S 架構、Transact-SQL 高效、支援預存程序、穩定成熟
網路協議Named Pipes / TCP-IP區域網低延遲、SQL Server 原生支援
列印方式Printer.Canvas 直接繪製無報表引擎開銷、毫秒級出票、座標控制精確
操作介面下拉框/選擇框為主操作員電腦水平參差不齊,最小化輸入、防呆優先