车票查询预订系统实习报告.docx
- 文档编号:13150540
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:21
- 大小:228.69KB
车票查询预订系统实习报告.docx
《车票查询预订系统实习报告.docx》由会员分享,可在线阅读,更多相关《车票查询预订系统实习报告.docx(21页珍藏版)》请在冰点文库上搜索。
车票查询预订系统实习报告
软件开发综合技能训练
汽车票预订系统设计
专业
软件工程
学生姓名
罗剑
班级
B计算机074
学号
0710604414
指导教师
张静林
完成日期
2011.1.6
信息学院
1课题综述
1.1课题来源
本次软件实习将用C#制作一个车票查询预订系统,具有一般系统的数据处理功能,如数据录入、增加、修改、删除等。
1.2程序所实现的功能
本系统通过C#Winforms技术完成的功能如下:
(1)可以实现车票信息的增加、删除。
(2)可以实现车票的基本信息的浏览。
(3)可以实现车票的预订及预订信息的删除、修改(4)管理员登录密码的修改
1.3软硬件运行环境及开发工具
本次软件设计的运行环境:
WindowsXP操作系统,MicrosoftVisualStudio2005以上编译环境。
开发工具为C#和Access。
C#概述:
MicrosoftVisualC#2005(读作C#)是一种编程语言,它是为生成在.NETFramework上运行的多种应用程序而设计的。
C#简单、功能强大、类型安全,而且是面向对象的。
C#凭借它的许多创新,在保持C样式语言的表示形式和优美的同时,实现了应用程序的快速开发。
VisualStudio支持VisualC#,这是通过功能齐全的代码编辑器、项目模板、设计器、代码向导、功能强大且易于使用的调试器以及其他工具实现的。
通过.NETFramework类库,可以访问多种操作系统服务和其他有用的精心设计的类,这些类可显著加快开发周期。
2系统分析
2.1系统需求分析
(1)前台部分
1.前台营业:
用户通过此对车票进行购买,该功能可以查看到车票的车次、售价、车票的类型;
2.预定车票:
其功能和前台营业功能基本类似,它是通过对时间的设置来进行车票的预定;
3.退回车票:
客户购买了车票后发生了不可避免的问题,这里就可以对购买的车票进行退订或是退购,这里也是通过对时间的设定来进行退回车票;
4.汽车票信息查询:
该功能包括售票信息查询、订票信息查询、运营计划查询;
5.售票信息查询:
以列表的形式将已经购买的车票信息进行汇总,并在该页中显示出来;
6.订票信息查询:
该功能和售票信息查询功能相同,也是以列表的形式将预定的车票信息进行汇总,并在该页中显示出来;
7.运营计划查询:
该功能是以列表的形式将停运和正在运营的车次分开显示出来,从而可以对车辆进行有效的调度;
8.营业统计:
该功能包括日售票统计、月售票统计、季度售票统计;
9.日售票统计:
这里将一天的销售情况进行统计并在此显示出来;
10.月售票统计:
和日售票统计相似,将每月的销售情况进行统计并在此显示出来;
11.线路查询:
以列表的形式把将要查询的起始城市的里程显示出来;
12.管理员登录:
当管理员要对车票的信息进行管理时,管理员可以通过此登录到后台对车票等信息进行添加、删除、修改等操作;
(2)后台部分
1.运营设置:
该功能包括基础参数设置、车票设置、车次设置、调度设置、车票价格线路设置;
2.基础参数设置:
该功能包括卖票时间设置、订票时间设置、退票时间设置;
3.车次设置:
这里包括了对车次的增加、修改、删除的操作;
4.调度设置:
对停运和正在运营的车次进行调度;
5.线路设置:
线路设置中包括的增加线路,就是增加起始城市之间里程的信息。
2.2功能模块图
该系统的功能模块图如下图所示:
修改登录密码
图2-1模块图
数据信息
软件结构图
2.3数据库需求分析
数据库的设计通常是以一个已经存在的数据库管理系统为基础的,常用的数据库管理系统有MYSQL,SQLServer,Oracle等。
我采用了SQLserver2005数据库管理系统。
数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作出现错误。
数据的输入来源是手工输入,在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。
所以系统数据一致性:
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
一致性是指当事务完成时,必须使所有数据都具有一致的状态。
在关系型数据库中,所有的规则必须应用到事务的修改上,以便维护所有数据的完整性。
3系统设计
3.1数据库设计
创建一个“图书出版管理系统”数据库,含有三个数据表:
“出版图书基本信息”、“图书分类”、“图书出售信息”。
具体格式如下表:
表3-1 “Book”数据表结构
字段名称
字段类型
字段大小
索引
必须填写
name
文本
50
无
否
phone
文本
20
无
否
shenfen
文本
50
无
无
trainnum
文本
50
有(有重复)
无
neednum
数字
长整型
有(有重复)
无
hard
是/否
是/否
无
无
soft
是/否
是/否
无
无
booktime
日期/时间
日期/时间
无
无
ID
自动编号
自动编号
有(有重复)
无
表3-2“entry”数据表的结构
字段名称
字段类型
字段大小
索引
必须填写
adminnum
文本
50
有(无重复)
否
admincode
文本
50
有(无重复)
否
表3-3“Ticket”数据表的结构
字段名称
字段类型
字段大小
索引
必须填写
ID
自动编号
长整型
有(有重复)
trainnum
文本
50
有(有重复)
否
date
文本
50
无
否
startpos
文本
50
无
否
starttime
destination
reachtime
hardleft
hardcost
Softleft
softcost
日期/时间
文本
文本
数字
货币
数字
货币
50
50
长整型
长整型
无
无
无
无
无
无
无
否
否
否
否
否
否
3.2车票查询信息处理对话框的设计
车票查询信息对话框的界面如下图所示:
图3-1车票查询信息对话框
标签控件的属性如表3-4所示。
表3-4 标签对象的基本属性
ID
标题内容
Textbox3
火车发车日期
Textbox1
火车发车地
Textbox2
火车目的地
Radiobottom1
软铺
Radiobottom2
硬座
Datagridview1
显示查询信息
图3-2车票预订信息对话框
表3-6编辑框对象的基本属性
Textbox1
预订火车发车日期
Textbox2
火车出发地
Textbox3
火车目的地
Textbox4
火车车次
Textbox5
预订者联系电话
Textbox6
E_mail
Textbox7
真实姓名
Textbox8
身份证
Combobox1
预订车票类型
Radiobottom1
软铺
Radiobottom2
硬座
图3-3车票后台管理信息对话框
表3-7编辑框对象的基本属性
Datagridview1
显示预订信息
Bottom1
删除预订信息
Bottom2
关闭
Toolstrip1
功能对话框按钮
Toolstripbottom1
打开添加车次信息对话框
Toolstripbottom2
打开修改车次信息对话框
Toolstripbottom3
打开修改管理员密码对话框
图3-4车票后台管理信息对话框
表3-8编辑框对象的基本属性
Textbox1
预订火车发车日期
Textbox2
火车车次
Textbox3
火车发车地
Textbox4
火车软铺票价
Textbox5
火车目的地
Textbox6
火车硬座票价
Textbox7
软铺数量
Textbox8
发车时间
Textbox9
硬座数量
Textbox10
到站时间
Bottom1
确定提交
图3-5车票后台管理信息对话框
表3-9编辑框对象的基本属性
Datagridview1
显示车票信息
Bottom1
提交修改信息
Bottom2
删除所选择的记录
Bottom3
关闭
图3-6车票后台管理信息对话框
表3-9编辑框对象的基本属性
textbox1
输入登录帐号
textbox1
输入原登录密码
textbox1
输入新登录密码
textbox1
再次输入新登录密码
Bottom1
确定提交修改信息
Bottom2
关闭对话框
4代码编写
4.1具体代码
“查询车票记录”命令按钮的过程代码代码:
privatevoidcheck_Click(objectsender,EventArgse)
{
if(textBox3.Text==string.Empty)
{
MessageBox.Show(this,"请输入日期时间!
","PhoenixInformation:
",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
return;
}
if(textBox1.Text==string.Empty)
{
MessageBox.Show(this,"请输入发车地点!
","PhoenixInformation:
",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
return;
}
if(textBox2.Text==string.Empty)
{
MessageBox.Show(this,"请输入目的点!
","PhoenixInformation:
",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
return;
}
if(radioButton1.Checked==false&&radioButton2.Checked==false)
{
MessageBox.Show(this,"请选择车票类型!
","PhoenixInformation:
",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
return;
}
if(i>0)
{
this.dataGridView1.Columns[7].Visible=true;
this.dataGridView1.Columns[8].Visible=true;
this.dataGridView1.Columns[9].Visible=true;
this.dataGridView1.Columns[10].Visible=true;
}
i++;
Stringconnstring=@"provider=Microsoft.Jet.OLEDB.4.0;DataSource=db1.mdb";
OleDbConnectionconn=newOleDbConnection(connstring);
conn.Open();
Stringcommstring="select*fromTicketwheredate='"+this.textBox3.Text+"'andstartpos='"+this.textBox1.Text+"'anddestination='"+this.textBox2.Text+"'";
OleDbCommandcommd=newOleDbCommand(commstring,conn);
OleDbDataAdaptermyadap=newOleDbDataAdapter();
myadap.SelectCommand=commd;
DataSetmyset=newDataSet();
myadap.Fill(myset,"Ticket");
this.dataGridView1.DataSource=myset.Tables["Ticket"];
conn.Close();
if(this.radioButton1.Checked==false)//显示选择的车票类型及价格
{
this.dataGridView1.Columns[9].Visible=false;
this.dataGridView1.Columns[10].Visible=false;
}
else
{
this.dataGridView1.Columns[7].Visible=false;
this.dataGridView1.Columns[8].Visible=false;
}
}
“预定车票”命令按钮的过程代码如下所示:
privatevoidbookdata_insert()
{
intticketnumber=Convert.ToInt32(this.label6.Text);
stringdatastring=@"provider=Microsoft.Jet.OLEDB.4.0;DataSource=db1.mdb";
Stringdatastring1="insertintoBook(booktime,name,phone,shenfen,trainnum,neednum,hard,soft)values('"+this.label1.Text+"','"+this.label9.Text+"','"+this.label7.Text+"','"+this.label19.Text+"','"+this.label2.Text+"','"+this.label6.Text+"','-1','0')";
Stringdatastring2="insertintoBook(booktime,name,phone,shenfen,trainnum,neednum,hard,soft)values('"+this.label1.Text+"','"+this.label9.Text+"','"+this.label7.Text+"','"+this.label19.Text+"','"+this.label2.Text+"','"+this.label6.Text+"','0','-1')";
OleDbConnectiondata_insert=newOleDbConnection(datastring);
data_insert.Open();
OleDbCommandinsertcomm=newOleDbCommand();
insertcomm.Connection=data_insert;
if(type==false)
insertcomm.CommandText=datastring1;
else
insertcomm.CommandText=datastring2;
insertcomm.ExecuteNonQuery();
Stringdatastring3="updateTicketsethardleft=hardleft-'"+boBox1.Text+"'wheretrainnum='"+chuandi.textBox5.Text+"'";
Stringdatastring4="updateTicketsetsoftleft=softleft-'"+boBox1.Text+"'wheretrainnum='"+chuandi.textBox5.Text+"'";
OleDbCommandupdatecomm=newOleDbCommand();
updatecomm.Connection=data_insert;
if(type==false)
updatecomm.CommandText=datastring3;
else
updatecomm.CommandText=datastring4;
updatecomm.ExecuteNonQuery();
data_insert.Close();
}
“修改车票记录”命令按钮的过程代码如下所示:
privatevoidbutton1_Click(objectsender,EventArgse)
{
stringstr=this.dataGridView1.CurrentRow.Cells["Column1"].Value.ToString();
Stringconnstring=@"provider=Microsoft.Jet.OLEDB.4.0;DataSource=db1.mdb";
OleDbConnectionconn=newOleDbConnection(connstring);
conn.Open();
Stringcommstring="updateTicketsettrainnum='"+this.dataGridView1.CurrentRow.Cells["Column2"].Value+"',[date]='"+this.dataGridView1.CurrentRow.Cells["Column3"].Value+"',startpos='"+this.dataGridView1.CurrentRow.Cells["Column4"].Value+"',starttime='"+this.dataGridView1.CurrentRow.Cells["Column5"].Value+"',destination='"+this.dataGridView1.CurrentRow.Cells["Column6"].Value+"',reachtime='"+this.dataGridView1.CurrentRow.Cells["Column7"].Value+"',hardleft='"+this.dataGridView1.CurrentRow.Cells["Column8"].Value+"',hardcost='"+this.dataGridView1.CurrentRow.Cells["Column9"].Value+"',softleft='"+this.dataGridView1.CurrentRow.Cells["Column10"].Value+"',softcost='"+this.dataGridView1.CurrentRow.Cells["Column11"].Value+"'whereID="+str;
OleDbCommandcommd=newOleDbCommand(commstring,conn);
commd.ExecuteNonQuery();
conn.Close();
dataconn();
MessageBox.Show("修改成功!
");
}
“删除预订记录”按钮的过程代码如下所示:
privatevoidbutton2_Click(objectsender,EventArgse)
{
stringstr=this.dataGridView1.CurrentRow.Cells["Column1"].Value.ToString();
MessageBox.Show(this,"确定删除该条预订信息?
","PhoenixInformation:
",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
Stringconnstring=@"provider=Microsoft.Jet.OLEDB.4.0;DataSource=db1.mdb";
OleDbConnectionconn=newOleDbConnection(connstring);
conn.Open();
Stringcommstring="deletefromBookwhereID="+str;
OleDbCommandcommd=newOleDbCommand(commstring,conn);
commd.ExecuteNonQuery();
conn.Close();
preseant_data();
5程序调试
5.1上机过程中出现的问题和解决方案
(1)在编写修改车票信息的代码中,通过对datagridview1中的数据操作,从而修改数据库中的记录时,程序出现“标准表达式对应数据类型有误”,通过网上搜索和自己反复修改,最后程序正确。
(2)对于不同窗体间的数据传输时所运用的不同方法进行尝试,出现错误后,查阅书籍解决。
5.2程序的扩展方案
(1)程序界面过于单调,可以通过更改背景颜色或添加背景图片进行解决。
(2)添加服务器与客户端相连模块。
(3)增加输入格式检测,放置输入不同数据类型。
6程序运行界面
在打开“图书出版管理系统.exe”后,将出现下图所示界面:
图6-2车票信息查询
图6-3车票预定界面
当点击“确定并提交预订信息”选择框时,弹出“确认信息对”话框:
图6-4预订确认信息对话框
图6-5后台管理界面
7小结
通过这次的综合训练让我有了很大的进步,当然进步是建立在发现了很大的不足的前提下。
下面就是我总结出来的不足与对自己的要求。
首先,是对软件工程的认知的不足,这也是很重要的一点。
以前一直认为学好C语言才是最根本的,其他的一些高级语言只要进过变通,就肯定能学好。
但是现在彻底的醒悟,软件工程其实是很重要的一门高级语言,一定要认真的学习,否则对于学软件工程的学生来说是很大的损失,因为软件工程在软件和网络中的应用是很广泛的。
这点不足已经认识到,下面就是该怎么做去挽救这点不足。
在接下来的两个月的暑假里,将是把软件工程这门语言再认认真真的学习一遍的最好时机,我已做好准备。
然后,是对这次综合训练的认识。
综合训练是非常能提高一个人对软件工程这门语言的运用技能的机会,但是我没能很好地把握这次机会。
虽然把项目的代码认真的输入了,运行后也没有错误。
但
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 车票 查询 预订 系统 实习 报告