📄 buyticket.pas
字号:
unit BuyTicket;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TBuyTicketFrm = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Edit3: TEdit;
Edit4: TEdit;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit5: TEdit;
Timer1: TTimer;
Label6: TLabel;
Edit6: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure Timer1Timer(Sender: TObject);
procedure Edit6KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
BuyTicketFrm: TBuyTicketFrm;
opel,midd:string;
implementation
uses Login;
{$R *.dfm}
procedure TBuyTicketFrm.Timer1Timer(Sender: TObject);
begin
opel:=datetostr(date());
midd:=timetostr(now);
opel:=opel+' '+midd;
end;
procedure TBuyTicketFrm.Button1Click(Sender: TObject);
var maxn,day,s,d,id,room,seat:string;
begin
with LoginFrm.ADOQuery1 do
begin
close;
sql.clear;
sql.Add('select * from 售票员 where sailorid=');
sql.Add(''''+LoginFrm.Edit1.Text+'''');
open;
first;
if recordcount=0 then
showmessage('您没有权限售票!')
else
if edit1.text='' then
showmessage('请输入身份证号码!')
else
if edit2.text='' then
showmessage('请确认身份证号码')
else
if edit3.text='' then
showmessage('请输入车次名称!')
else
if edit4.text='' then
showmessage('请输入起点!')
else
if edit5.text='' then
showmessage('请输入终点!')
else
if edit6.text='' then
showmessage('请输入时间(月-日)!')
else
if edit1.text<>edit2.Text then
showmessage('两次身份证号码不一致,重新输入!')
else
begin
close;
sql.clear;
sql.add('select * from 车次 where trainnum='+''''+edit3.text+''''+'and traindate='+''''+Edit6.Text+'''');
open;
first;
if recordcount=0 then
begin
showmessage('对不起,不存在此趟列车!请重新选择车次号!');
edit1.Text:='';
edit2.text:='';
edit3.text:='';
edit4.text:='';
edit5.text:='';
end
else
if strtodate(edit6.Text)<date()then
showmessage('您不能购买此车票,该趟列车已过期')
else
begin
close;
sql.clear;
sql.Add('select * from 车次 as s1, 车次 as s2 where s1.passnum<s2.passnum and s1.trainnum=s2.trainnum and s1.passed='+''''+Edit4.Text+''''+'and s2.passed='+''''+Edit5.Text+''''+'and s1.traindate='+''''+Edit6.Text+''''+'and s2.traindate='+''''+Edit6.Text+'''');
open;
first;
if recordcount=0 then
begin
showmessage('对不起,没有符合条件的查询结果!请重新查询!');
edit1.setfocus;
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
end
else
begin
close;
sql.clear;
sql.add('select * from 车次 where trainnum='+''''+edit3.text+''''+'and traindate='+''''+Edit6.Text+'''');
open;
first;
maxn:=fieldbyname('maxnum').asstring;
maxn:=floattostr(strtofloat(maxn)-1);
if strtofloat(maxn)<0 then
showmessage('该趟列车车票已售完')
else
begin
room:=floattostr((strtoint(maxn)+1 )div 130);
seat:=floattostr((strtoint(maxn)+1 )mod 130);
room:=room+'车厢'+seat+'座';
showmessage(room);
close;
sql.clear;
sql.add('select * from 车次 where trainnum='+''''+edit3.text+''''+'and passed='+''''+Edit4.Text+''''+'and traindate='+''''+Edit6.Text+'''');
open;
first;
s:=fieldbyname('price').asstring;
close;
close;
sql.clear;
sql.add('select * from 车票 ');
open;
first;
id:=floattostr(recordcount+1);
close;
sql.clear;
sql.add('select * from 车次 where trainnum='+''''+edit3.text+''''+'and passed='+''''+Edit5.Text+''''+'and traindate='+''''+Edit6.Text+'''');
open;
first;
d:=fieldbyname('price').asstring;
d:=floattostr(strtofloat(d)-strtofloat(s));
close;
sql.clear;
sql.add('insert into 车票 (dest,seatnum,arrivetime,ticketid,source,price,sailorid,date) values('+''''+Edit5.text+''''+','+''''+room+''''+','+''''+day+''''+','+''''+id+''''+','+''''+edit4.text+''''+','+''''+d+''''+','+''''+LoginFrm.Edit1.text+''''+','+''''+edit6.Text+''''+')');
execsql;
close;
room:=d+'元';
showmessage(room);
sql.clear;
sql.Add('update 车次 set maxnum='+''''+maxn+''''+' where trainnum='+''''+edit3.text+''''+'and traindate='+''''+Edit6.Text+'''');
execsql;
close;
sql.clear;
sql.add('insert into 乘客 (buytime,passengerid,source,ticketid,dest,trainnum,time) values('+''''+opel+''''+','+''''+edit1.text+''''+','+''''+edit4.text+''''+','+''''+id+''''+','+''''+edit5.text+''''+','+''''+edit3.text+''''+','+''''+edit6.Text+''''+')');
execsql;
showmessage('购票成功!');
edit1.Text:='';
edit2.text:='';
edit3.text:='';
edit4.text:='';
edit5.text:='';
end;
end;
end;
end;
end;
end;
procedure TBuyTicketFrm.Button2Click(Sender: TObject);
begin
edit1.Text:='';
edit2.text:='';
edit3.text:='';
edit4.text:='';
edit5.text:='';
BuyTicketFrm.Hide;
end;
procedure TBuyTicketFrm.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9','X']) then
begin
showmessage('请输入正确身份证号码');
key:=#0;
end
end;
procedure TBuyTicketFrm.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9','x']) then
begin
showmessage('请输入正确身份证号码');
key:=#0;
end
end;
procedure TBuyTicketFrm.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9','-']) then
begin
showmessage('请输入正确的格式,如6-16');
key:=#0;
end
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -