长途汽车订票管理系统.doc_第1页
长途汽车订票管理系统.doc_第2页
长途汽车订票管理系统.doc_第3页
长途汽车订票管理系统.doc_第4页
长途汽车订票管理系统.doc_第5页
免费预览已结束,剩余12页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

长途客运汽车订票管理系统一、 课题内容和要求按照软件工程思想,以SQL Server 2000 为后台数据库,以Delphi或VC+等为前端开发工具,设计并实现一个长途客运汽车订票管理系统。系统有两类用户:一位管理员和多个普通用户。系统的主要功能如下:(1) 管理员需要登录认证,管理员在登录界面输入正确的帐号信息后,可以进行客车基本信息的查询,录入,修改和删除。(2) 电影票的基本信息如下:车号、起点、终点、日期、开出时刻、到达时刻、预设座位数、剩余座位数。(3) 普通用户可以查询客车信息,不需要登录可直接进入到查询界面,按起点、终点、日期查询客车信息。(4) 普通用户在查询到合适的客车信息后,开始订票。订票时需输入:姓名、身份证号、客车号、日期。确定订票后,相关信息记录于订票表中,同时,对应客车的剩余座位数减1。(不考虑退票情况)。(5) 普通用户可以在输入身份证号后查询自己的订票信息和对应客车的基本信息。(6) 管理员登录后,可以在查看全部的订票信息和各客车的订票数量。二、 设计思路分析首先理解系统的功能需求,然后进行数据库设计,包括表的划分与建立,表中属性值的定义。其次选择开发环境,主要用了delphi软件。然后对系统的模块划分,确定各个模块实现的功能。接着进行模块的设计和实现,并进行测试。测试完后,进行改错,最后美化界面,完成本次课程。三、 系统设计1.1 数据库逻辑设计结果首先确定正确的属性关系,设计完善正确的数据库,包括各个表中的主键以及外建关系。本次试验建了三张表。其中车次表定义了车号、起点、终点、日期、开出时刻、到达时刻、预设座位数、剩余座位数,车号为主键。订票表定义了姓名、身份证号、客车号、日期,身份证、车号为主键。两张表通过车号这个外键链接。车次信息表:订票信息表:管理员账号信息表:车次表定义了客车基本信息,主键为车号。订票表定义了用户预订客车票的信息,主键为身份证号和车号订票表中的车号同时为车次表的外键1.2 系统功能设计1、管理员用例图2、用户用例图 3、系统功能结构 4、相关流程图四、 系统实现用delphi创建五个form,分别是登录界面,管理员维护与查询界面,订票统计界面,用户订票与查询界面,订票查询界面。各部分源代码及注释如下:(1)登录界面 主要代码如下:implementationuses Unit2,unit3, Unit4, Unit5;$R *.dfmprocedure Tdenglu.RadioButton1Click(Sender: TObject);/选择管理员时的操作begin denglu.Label1.Hide; denglu.Label2.Hide; denglu.Edit1.Hide; denglu.Edit2.Hide;end;procedure Tdenglu.RadioButton2Click(Sender: TObject);/用户直接查询订票begin denglu.Label1.show; denglu.Label2.show; denglu.Edit1.show; denglu.Edit2.show;end;procedure Tdenglu.RadioButton3Click(Sender: TObject);/订票查询begin denglu.Label1.Hide; denglu.Label2.Hide; denglu.Edit1.Hide; denglu.Edit2.Hide;end;procedure Tdenglu.loginClick(Sender: TObject);/判断管理员账号是否正确var username,password:string;beginif Radiobutton1.Checked=true thenmessagebox(login.handle,请选择管理员再登录,警告,mb_ok+mb_iconwarning);if Radiobutton3.Checked=true thenmessagebox(login.handle,请选择管理员再登录,警告,mb_ok+mb_iconwarning);if Radiobutton2.Checked=true thenbegin if edit1.Text= then messagebox(login.handle,请输入用户名,警告,mb_ok+mb_iconwarning) else if edit2.Text= then messagebox(login.handle,请输入密码,警告,mb_ok+mb_iconwarning) else begin username:=edit1.text; password:=edit2.text; with ADOQuery1 do begin close; sql.clear; sql.add(select * from 管理员账号 where username=); sql.add(+username+and password=+password+); open; first; edit1.Text:=; edit2.Text:=; if recordcount=1 then begin Hide; weihu.show; end else messagebox(login.handle,请输入正确的账号密码,警告,mb_ok+mb_iconwarning) end; end; end;end;procedure Tdenglu.BitBtn2Click(Sender: TObject);/关闭界面,退出begincloseend;procedure Tdenglu.BitBtn1Click(Sender: TObject);beginif Radiobutton2.Checked=true then/如果选择用户查询 chaxun.show;/查询界面出现 hide; /主界面隐藏if Radiobutton1.Checked=true then /如果选择管理员chaxun.show; /查询界面出现hide; /主界面隐藏if Radiobutton3.Checked=true then/如果选择订票查询jilu.show; /订票查询界面出现hide; /主界面隐藏end;(2) 管理员维护与查询主界面:主要代码如下:implementationuses Unit1, Unit4;$R *.dfmprocedure Tweihu.FormCreate(Sender: TObject);begin ADOQuery1.Close; ADOQuery1.SQL.clear; ADOQuery1.Active:=false; ADOQuery1.SQL.Add(select * from 车次;); ADOQuery1.Prepared; ADOQuery1.active:=true; edit1.Text:=T1; combobox1.text:=2013; combobox2.text:=1; combobox3.text:=1; combobox2.items.add(1); combobox2.items.add(2); combobox2.items.add(3); combobox3.items.add(1); combobox3.items.add(2); combobox3.items.add(3);end;procedure Tweihu.BitBtn1Click(Sender: TObject);/查询信息beginADOQuery1.close; ADOQuery1.SQL.clear; ADOQuery1.sql.Add(select *); ADOQuery1.sql.Add(from 车次); ADOQuery1.SQL.Add(where 车号=+edit1.Text+ and 日期=+combobox1.text+-+combobox2.text+-+combobox3.text+); ADOQuery1.Prepared; ADOQuery1.Open; ADOQuery1.Active:=true;end;procedure Tweihu.BitBtn2Click(Sender: TObject);/打开统计界面begintongji.show;end;procedure Tweihu.BitBtn3Click(Sender: TObject);/返回登录界面begindenglu.show;closeend;procedure Tweihu.BitBtn4Click(Sender: TObject);/退出系统,关闭隐藏的登录界面begindenglu.close;closeend;procedure Tweihu.FormClose(Sender: TObject; var Action: TCloseAction);begin /界面被关闭时,隐藏的登录界面会出现denglu.show;end;end.(3) 管理员数据统计界面:主要代码如下:implementationuses unit1, Unit5;$R *.dfmprocedure Ttongji.FormCreate(Sender: TObject);/从订票表查询需要的信息显示begin with ADOQuery1 do begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.Active:=false; ADOQuery1.SQL.Add(select 订票.车号,车次.起点,车次.终点,订票.日期,+ 车次.开出时刻,到达时刻,订票.姓名,+ 订票.身份证 from 订票,车次 where 订票.车号=车次.车号); ADOQuery1.Prepared; ADOQuery1.Active:=true; end; with ADOQuery2 do begin ADOQuery2.Close; ADOQuery2.sql.clear; ADOQuery2.Active:=false;ADOQuery2.SQL.Add(select 车号,count(*) from 订票 group by 车号;);/计算同一车次的订票数量 输出显示 ADOQuery2.Prepared; ADOQuery2.Active:=true; end;end;procedure Ttongji.BitBtn1Click(Sender: TObject);/返回维护界面beginweihu.show;tongji.Close;end;procedure Ttongji.BitBtn2Click(Sender: TObject);/关闭所有界面退出beginweihu.close;tongji.Close;denglu.close;end;procedure Ttongji.FormClose(Sender: TObject; var Action: TCloseAction);/当窗体关闭时 隐藏的登录界面显示beginweihu.show;end;procedure Ttongji.BitBtn3Click(Sender: TObject);/刷新信息beginADOQuery1.Close;ADOQuery1.Open;ADOQuery2.Close;ADOQuery2.Open;end;end.(4)、用户查询与订票界面:主要代码如下:implementationuses unit1;$R *.dfmprocedure Tchaxun.FormCreate(Sender: TObject);/窗口打开时显示所有车次信息begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.active:=false; ADOQuery1.SQL.Add(select * from 车次;); ADOQuery1.Prepared; ADOQuery1.Active:=true; end;procedure Tchaxun.BitBtn1Click(Sender: TObject);/通过起点 终点 日期 查询相关信息begin DBGrid1.Refresh; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(select *); ADOQuery1.SQL.Add(from 车次); ADOQuery1.SQL.Add(where 起点=+edit1.text+ and 终点=+edit2.Text+and 日期=+edit3.Text+); ADOQuery1.prepared; ADOQuery1.open; ADOQuery1.active:=true;end;procedure Tchaxun.BitBtn4Click(Sender: TObject);beginchaxun.close;denglu.Closeend;procedure Tchaxun.BitBtn3Click(Sender: TObject);begindenglu.show;close;end;procedure Tchaxun.BitBtn2Click(Sender: TObject); begin with ADOQuery2 do begin if (edit4.Text=) then begin messagebox(handle,请输入车号!,提示信息,mb_iconwarning+mb_ok); edit4.SetFocus; /提示输入车号 exit; end else if (edit5.Text=) then begin messagebox(handle,请输入姓名!,提示信息,mb_iconwarning+mb_ok); edit5.SetFocus; /提示输入姓名 exit; end else if (edit6.text=) then begin messagebox(handle,请输入身份证!,提示信息!,mb_iconwarning+mb_ok); edit5.SetFocus; /提示输入身份证 exit; end else if (edit7.text=) then begin messagebox(handle,请输入日期!,提示信息!,mb_iconwarning+mb_ok); edit7.SetFocus; /提示输入日期 exit; end else begin ADOQuery2.active:=true; ADOQuery2.Insert; ADOQuery2.FieldByName(车号).Value:=trim(edit4.Text); ADOQuery2.FieldByName(姓名).Value:=trim(edit5.Text); ADOQuery2.FieldByName(身份证).Value:=trim(edit6.Text); ADOQuery2.FieldByName(日期).Value:=trim(edit7.Text); ADOQuery2.post; ADOQuery2.execsql; ADOQuery2.close; ADOQuery2.sql.Clear; ADOQuery2.sql.add(select 订票.姓名,订票.身份证,订票.车号,订票.日期,+ 车次.起点,车次.终点,车次.开出时刻,到达时刻); ADOQuery2.sql.Add(from 订票,车次); ADOQuery2.sql.Add(where 订票.车号=车次.车号); ADOQuery2.sql.Add(and 身份证=+edit6.Text+); ADOQuery2.prepared; ADOQuery2.open; end;end; with ADOQuery1 do begin close; sql.clear; sql.Text:=update 车次 set 剩余座位数=剩余座位数-1 where 车号=:a and 日期=:b; parameters.ParamByName(a).value:=trim(edit4.Text); parameters.ParamByName(b).value:=trim(edit7.Text); /计算剩余座位数 execsql; close; sql.Add(select * from 车次); sql.Clear; sql.Text:=(select * from 车次 where 车号=:a and 日期=:b); parameters.ParamByName(a).value:=trim(edit4.Text); parameters.ParamByName(b).value:=trim(edit7.Text); open; end;end;procedure Tchaxun.FormClose(Sender: TObject; var Action: TCloseAction);begindenglu.show;end;end. (5)、订票查询界面:主要代码如下:implementationuses Unit1;$R *.dfmprocedure Tjilu.FormCreate(Sender: TObject);beginADOQuery1.Active:=false;end;procedure Tjilu.BitBtn1Click(Sender: TObject);/根据身份证查询相关信息并显示begin ADOQuery1.Close; ADOQuery1.SQL.clear; ADOQuery1.sql.add(select 订票.车号,车次.起点,车次.终点,+ 订票.日期,车次.开出时刻,到达时刻,订票.姓名,订票.身份证); ADOQuery1.sql.Add(from 订票,车次); ADOQuery1.s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论