火车订票系统.docx

上传人:b****4 文档编号:24633327 上传时间:2023-05-29 格式:DOCX 页数:21 大小:193.84KB
下载 相关 举报
火车订票系统.docx_第1页
第1页 / 共21页
火车订票系统.docx_第2页
第2页 / 共21页
火车订票系统.docx_第3页
第3页 / 共21页
火车订票系统.docx_第4页
第4页 / 共21页
火车订票系统.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

火车订票系统.docx

《火车订票系统.docx》由会员分享,可在线阅读,更多相关《火车订票系统.docx(21页珍藏版)》请在冰豆网上搜索。

火车订票系统.docx

火车订票系统

实习报告

 

题目火车订票系统

 

姓名:

学号:

班级:

1班

实验实习中心制

年月日

填写说明

一、字号说明:

标题类请用四号字,宋体;正文用小四号、宋体,行间距为1.5倍;

二、填写实习报告时,请先写明实习报告的题目,再填写正文;正文必须与实习过程相结合,提出自己的合理化建议,内容不得少于3000字;

三、实习报告评语、成绩(请指导老师结合学生实习日志撰写情况)由指导老师填写;

四、此模板是所有学生统一的格式,请同学们填写时,不要改变格式;

五、打印前,请同学们认真检查实习报告,不要存在错别字;

六、实习报告由各指导老师的小组长负责统一打印,学生只要按照指导教师的要求,发电子版给老师即可。

 

实习报告评语

 

实习报告成绩:

优良中及格不及格

指导老师签字:

年月日

实习报告(基本情况、实习过程及内容、收获体会)

一、设计内容

火车订票系统的设计与实现

二、设计目的

计算机应用于火车站售票的日常管理为火车站售票的现代化带来了从未有过的动力和机遇,为火车站票务管理领域的飞速发展提供了无限潜力。

采用计算机管理信息系统已成为火车站票务管理科学化和现代化的重要标志,给火车站票务带来了明显的经济效益和社会效益。

计算机已经成为人们生活不可却小的一部分。

火车订票系统是一件比较负责但又非常重要的事情,它是涉及国家铁路运输的正常工作、国民经济的发展和人民生活水平及质量的大事情。

加深对数据库原理、数据库设计理论学习的理解,增强动手能力,掌握数据库设计的基本方法和设计步骤,为毕业设计和将来参加实际项目做准备

三、设计过程

(一)需求分析

针对火车订票系统的设计目标,以及自己亲身订票经历和对订票系统的调查,确定了该系统的基本事务需求如下:

1.允许注册新的管理员用户

2.允许管理员根据客户需求根据始发站和终点站对车票进行查询

3.允许管理员根据客户需求根据火车的车次对车票进行查询

4.可以实现订票功能,并为客户提供取票时的密码

数据项条目

管理员帐号

管理员密码

车次

始发站

目的站

发车时间

到站时间

票数余额

票价

Administrator(管理员表)(管理员帐号管理员密码)

Train(车次始发站目的站发车时间到站时间票价票数余额)

简易数据流图如下

数据流程图说明

管理员输入管理员账号和密码登陆,或者注册新的管理员帐号

登陆之后之后可以根据用户需求输入车次查询查票信息,也可以根据用户需求输入车站内容查询车票信息,此外还可以点击查询显示管理员的信息

查询到乘客所需求的车票后,可以订票并修改数据库中票数余额的信息,并且为用户提供一个取票时的提取码

(二)概念结构设计

数据库中总共设计了两个实体

Adminstrator是管理员train是车票信息

各个实体具体的属性描述的E-R图如下:

系统的总体的E-R图

 

(三)逻辑结构设计

根据第一步中收集到的信息资料以及画出的数据流条目表,我们可以初步分析出系统应该包含2个实体,并且根据前面的分析,可以得到各个实体应该基本具备的各自属性,列表如下:

管理员{管理员帐号、密码}

火车{车次、始发站、目的站、发车时间、到站时间、票数余额、票价}

《1》管理员这一实体中,在描述管理员的属性中管理员账号、密码都是被分解到原子级的属性,不存在能够被分解,或是传递依赖的问题。

管理员{管理员帐号(数字notnull)、密码(数字notnull)}

《2》在火车的实体中,这一实体中,在描述火车的的属性中车次、始发站、目的站、发车时间、到站时间、票价、票数余额都是被分解到原子级的属性,不存在能够被分解,或是传递依赖的问题。

火车{车次(文本,notnull)、始发站(文本,notnull)、目的站(文本,notnull)、发车时间(时间日期,notnull)、到站时间(时间日期,notnull)、票数余额(数字,notnull)、票价(数字,notnull)}

完整性处理

1、实体完整性

它要求能够标识标中的任一行,不能存在二义性。

这种完整

性是通过定义一个主键来保证的,主键包含一列或一些列的组合,对于每一行他们的值是唯一的。

设置规则如下:

第一:

所有主键不能取NULL;

第二:

所有的修改都不能导致主键为空。

《1》对于管理员来讲,能够唯一描述管理员的属性就是管理员账号,所以管理员账号作主键。

《2》对于火车来说,能为一描述火车属性的是车次,所以车次是主键。

2、参照完整性

该完整性表明,某个外键的取值必须在和它取得联系的主键的取值范围内(允许取值范围),或者是NULL值。

外键是表中的列或列的组合,用于建立一个父表和另一个子表的链接。

这些对应列,必须有相同的数据类型和长度。

3、域完整性

表中的每一列都可以定义一个对于该列的取值范围,限制可以输入某列的数值,就是执行域完整性。

4、业务完整性

也称为应用的完整性,可以基于自己的业务范围来限制输入数据库的数据。

(四)数据库物理设计

模块

OptionExplicit

PublicconAsNewADODB.Connection

PublicrsAsNewADODB.Recordset

Publicrs1AsNewADODB.Recordset

PublicstrIDAsString

'PublicxAsInteger

'入口函数

Submain()

Loadlogin

login.Show(vbModal)

EndSub

'连接数据库函数

PublicFunctionConnectionDB()AsBoolean

OnErrorGoToConnectionError

Ifcon.State=adStateClosedThen

con.ConnectionTimeout=10

con.CommandTimeout=10

con.CursorLocation=adUseClient

con.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\train.mdb;PersistSecurityInfo=False"

con.Open

EndIf

ConnectionDB=True

'MsgBox"数据库连接成功!

",vbInformation+vbOKOnly,"提示"

ExitFunction

ConnectionError:

ConnectionDB=False

'因为MsgBox是个Function(函数),不是Sub(过程)。

'Function是有返回值的。

所以如果用C语言的形式,加上左右括号调用,需要前面加显示的调用Call;

'或者采有VB的调用方式,不用括号,也不需要Call了

CallMsgBox("数据库连接失败!

",vbExclamation+vbOKOnly,"提示")

'UnloadfrmLogin

EndFunction

登陆界面

OptionExplicit

 

PrivateSubCommand1_Click()

DimbValidatePwdAsBoolean

bValidatePwd=Me.ValidatePwd(Me.Text1,Me.Text2)

IfbValidatePwd=TrueThen

LoadForm1

UnloadMe

Form1.Show'显示出来。

只是加载到内存中还不够,必须要显示出来。

显示调用Show

Else

MsgBox"用户名或密码错误!

",vbExclamation+vbOKOnly,"提示"

EndIf

EndSub

PrivateSubCommand2_Click()

DimiChoiceAsInteger

iChoice=MsgBox("您确定要退出吗?

",vbOKCancel+vbQuestion+vbDefaultButton2,"退出")

IfiChoice=1Then

UnloadMe

EndIf

EndSub

 

PublicFunctionValidatePwd(strUserIDAsString,strPwdAsString)AsBoolean

DimbConnectionAsBoolean

bConnection=traindata.ConnectionDB

IfbConnection=TrueThen

Calltraindata.rs.Open("select管理员账号,密码fromadminstrator",traindata.con,adOpenDynamic,adLockBatchOptimistic,-1)

Else

EndIf

DimiAsInteger

Ifrs.EOF=FalseThen

Fori=1Tors.RecordCount

IfTrim(strUserID)=Trim(rs.Fields(0))And_

Trim(strPwd)=Trim(rs.Fields

(1))Then

ValidatePwd=True

strID=strUserID

ExitFor

Else

ValidatePwd=False

EndIf

rs.MoveNext

Nexti

EndIf

rs.Close

Setrs=Nothing

EndFunction

PrivateSubCommand3_Click()

LoadForm3

UnloadMe

Form3.Show

EndSub

PrivateSubLabel1_Click()

EndSub

订票界面

OptionExplicit

PrivateSubCommand6_Click()

LoadForm4

UnloadMe

Form4.Show

EndSub

PrivateSubForm_Load()

Me.StatusBar1.Panels

(1).Text="当前用户ID:

"+traindata.strID

'me.StatusBar1.Panels

(2).Text=""

EndSub

 

PrivateSubCommand1_Click()

DimstrSqlAsString

Me.Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\train.mdb;PersistSecurityInfo=False"

Me.Adodc1.Visible=False

'strSql="select*fromtrainwhere1=1"

'If(Me.Text1.Text<>"")Then'&(Me.Text2.Text<>""))Then

'strSql=strSql&"and始发站=Me.Text1.Text"&"and终点站=Me.Text2.Text&"'"'判断没写完

'strSql=strSql&"and始发站like'"&Me.Text1.Text&"%'"&"终点站like'"&Me.Text2.Text&"%'"

'strSql=strSql&"andsNamelike'"&Me.txtSName.Text&"%'"

'If(Me.Text3.Text<>"")&(Me.Text1.Text<>"")&(Me.Text2.Text<>"")Then

IfMe.Text3.Text<>""Then

'strSql="select*fromtrainWhere车次in('"+Text3+"')"and终点站in('"+Text2+"')"and始发站in('"+Text1+"')"

strSql="select*fromtrainWhere车次in('"+Text3+"')"

Else

strSql="select*fromtrainWhere始发站in('"+Text1+"')and终点站in('"+Text2+"')"

'groupby车次havingcount(*)>=2)and站点in('"+Text1+"','"+Text2+"')orderby编号asc"

EndIf

Me.Adodc1.CommandType=adCmdText

Me.Adodc1.RecordSource=strSql

Me.Adodc1.Refresh

SetMe.DataGrid1.DataSource=Me.Adodc1

IfMe.Adodc1.Recordset.RecordCount=0Then

MsgBox"没有所搜索区间的列车"

EndIf

EndSub

PrivateSubCommand2_Click()

DimstrSql1AsString

Me.Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\train.mdb;PersistSecurityInfo=False"

Me.Adodc1.Visible=False

strSql1="select*fromtrain"

Me.Adodc1.CommandType=adCmdText

Me.Adodc1.RecordSource=strSql1

Me.Adodc1.Refresh

SetMe.DataGrid1.DataSource=Me.Adodc1

EndSub

PrivateSubCommand3_Click()

UnloadMe

EndSub

PrivateSubCommand4_Click()

Loadlogin

UnloadForm1

login.Show

EndSub

PrivateSubCommand5_Click()

LoadForm2

UnloadMe

Form2.Show

EndSub

 

PrivateSub订票_Click()

DimaAsLong

Randomize

a=Rnd(1000000)*432444

Me.Adodc1.Recordset.Fields(6).Value=Me.Adodc1.Recordset.Fields(6).Value-1

Me.Adodc1.Recordset.Update

SetMe.DataGrid1.DataSource=Me.Adodc1

MsgBox"订票成功,请通过"&a&"提取码去代售点取票"

EndSub

PrivateSubCommand1_Click()

LoadForm1

UnloadMe

Form1.Show

EndSub

 

PrivateSubCommand2_Click()

DimstrChoiceAsString

IfMe.Adodc1.Recordset.Fields(0)=traindata.strIDThen

MsgBox("当前加载的用户不能删除!

")

ExitSub

EndIf

strChoice=MsgBox("您确定要删除该用户吗?

",vbExclamation+vbOKCancel+vbDefaultButton2,"提示")

IfstrChoice="1"Then

Me.Adodc1.Recordset.Delete

MsgBox("删除成功")

EndIf

Me.Adodc1.Recordset.Update

Me.Adodc1.Refresh

SetMe.DataGrid1.DataSource=Me.Adodc1

EndSub

 

PrivateSubForm_Load()

DimstrSql1AsString

Me.Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\train.mdb;PersistSecurityInfo=False"

Me.Adodc1.Visible=False

strSql1="select*fromadminstrator"

Me.Adodc1.CommandType=adCmdText

Me.Adodc1.RecordSource=strSql1

Me.Adodc1.Refresh

SetMe.DataGrid1.DataSource=Me.Adodc1

EndSub

 

注册用户界面

PrivateSubCommand1_Click()

Loadlogin

UnloadMe

login.Show

EndSub

PrivateSubForm_Load()

DimstrSql1AsString

Me.Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&App.Path&"\train.mdb;PersistSecurityInfo=False"

EndSub

PrivateSubCommand2_Click()

DimbValidatePwdAsBoolean

Me.Command2.Enabled=False

Me.Text1.Locked=False

Me.Text2.Locked=False

bValidatePwd=Me.CheckDataFields()

Me.Adodc1.CommandType=adCmdText'文本方式连接

strSql1="select*fromadminstrator"

Me.Adodc1.RecordSource=strSql1

Me.Adodc1.Refresh

Me.Adodc1.Recordset.AddNew

IfbValidatePwd=TrueThen

Me.Adodc1.Recordset.Fields(0).Value=Trim(Me.Text1.Text)

Me.Adodc1.Recordset.Fields

(1).Value=Trim(Me.Text2.Text)

Me.Adodc1.Recordset.Update

MsgBox"创建成功"

Else

MsgBox"输入有误!

",vbExclamation+vbOKOnly,"提示"

EndIf

Me.Command2.Enabled=True

EndSub

PublicFunctionCheckDataFields()AsBoolean

DimxAsString

DimbConnectionAsBoolean

bConnection=traindata.ConnectionDB

Calltraindata.rs1.Open("select管理员账号fromadminstratorwhere管理员账号='"&Me.Text1.Text&"'",traindata.con,adOpenDynamic,adLockBatchOptimistic,-1)

Ifrs1.EOF=FalseThen

MsgBox"管理员账号已存在"

CheckDataFields=False

rs1.Close

ExitFunction

EndIf

IfTrim(Me.Text1.Text)=""Then

MsgBox"管理员账号不能为空!

",vbExclamation+vbOKOnly,"提示信息:

"

CheckDataFields=False

rs1.Close

ExitFunction

EndIf

IfTrim(Me.Text2.Text)=""Then

MsgBox"管理员密码不能为空!

",vbExclamation+vbOKOnly,"提示信息:

"

CheckDataFields=False

rs1.Close

ExitFunction

EndIf

CheckDataFields=True

rs1.Close

EndFunction

 

(五)系统的实现

(要求抓图,并加以文字说明)

用户登录

显示全部车票信息

按车站检索所车票

按车次检索车票

订票

创建新管理员

显示管理员信息

 

(六)实习总结

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1