汽车客运售票系统-C++课程设计.doc
《汽车客运售票系统-C++课程设计.doc》由会员分享,可在线阅读,更多相关《汽车客运售票系统-C++课程设计.doc(136页珍藏版)》请在冰豆网上搜索。
起止日期:
2010-12-25至2010-1-9
安徽工业大学
程序设计实习实验报告
题目:
汽车客运售票系统
第四组小组成员
李中文089094256
信息管理与信息系统081班
注明:
本系统由本人独自完成
起止日期:
2010-12-25至2010-1-9
C++课程设计选题
题目二:
汽车客运公司售票系统
[要求]设某客运公司每日向10个城市发一个直达班车(中途不停留下客)。
每天都发售今、明、后三天的车票。
该系统在磁盘上存贮以下信息:
1.今、明、后三天每个班次的基本信息,包括:
每个班次的班次号、发车时间、终点城市,座位数量;2.今、明、后三天每个班次的旅客登记表,表项有:
姓名、身份证号、座号。
系统功能要求如下:
1.创建存贮一天(开始时创建今、明、后三天的,以后每天创建后天的)每个班次的基本信息的存贮系统;
2.创建每个班次的旅客登记表(每次售该班次的客票时创建);
3.办理售票,即在旅客登记表中添加旅客信息(座位号不能重);
4.办理退票,即在旅客登记表中删除旅客信息;
5.可查询当前指定班次的余票数和座位号;
6.输出指定班次的旅客登记表(发车前交驾驶员用)。
[提示]
1.MFC应用:
创建一个班次信息类,包含每个班次的班次号、发车时间、终点城市,座位数量、已售数量,应派生自CObject类,并实现序列化操作;在文档类中添加存储班次类的链表或数组(可用MFC的集合类或直接定义班次数组),在文档类Serialize函数中实现序列化;通过菜单打开对话框,在对话框中创建班次信息、售票、退票,并更新文档数据;每当班次信息发生变化(有新班次增加或售票或退票),输出一次当前班次信息(用多个对话框);实现班次查询功能,视图类显示查询结果;班次信息可保存到文件并可读出。
2.控制台应用:
创建班次信息类,类似提示1;定义存储班次信息的链表或数组,每当有新班次增加或售票或退票情况发生,添加或删除相应对象。
目录
一、 项目规划与需求分析 3
1、开发背景 3
2、可行性分析 3
3、需求规格说明书 4
1、引言 4
2、项目概述 5
3.功能需求 7
4、数据库设计 8
5、软件属性需求 9
二、系统设计 9
1、系统概要设计 10
1.1、处理流程 10
1.2、系统功能设计 10
1.3、接口设计 10
1.4、数据结构设计 10
2、系统详细设计 10
2.1、系统界面设计 10
2.2、数据库详细设计 20
三、系统实施 20
1、开发工具 20
2、后台数据库 21
3、程序代码 21
四、系统运行与维护 98
1、系统运行环境 98
2、系统维护 98
五、总结报告 98
一、项目规划与需求分析
1、开发背景
随着社会的高速发展,人们出行频繁,社会交通发达,我们需要客运公司提供高效的运作方式,以满足现代社会的需求。
针对汽车客运售票环节,我们决定优化售票系统,简化客户购票流程,提高客运公司运作效率。
2、可行性分析
简而言之,资金可行,企业发展需要,IT行业发展迅速且具有非常好的技术,所以可以实施开发汽车客运售票系统。
、
3、需求规格说明书
1、引言
1.1、编写目的
为开发人员、维护人员、用户之间提供共同的协议而创立基础,对企业管理软件功能的实现作使命描述。
本说明书的预期读者为本软件使用者、业务或需求分析人员、测试人员、用户文档编写者、项目管理人员。
编写《汽车客运售票系统设计说明书》是为了便于开发,系统实施人员可以随时查阅。
1.2、项目背景
工程的名称:
汽车客运售票系统
工程产品的名称:
汽车客运售票系统
系统开发人员:
李中文安徽工业大学管理科学与工程学院信息管理与信息系统081班
在项目开发中查阅了大量资料、文献,并参考了一些类似的数据库管理系统的开发经验和技巧。
项目名称
汽车客运售票系统
软件版本号
V1.0版本
任务提出者
李中文
项目负责人
李中文
系统分析员
李中文
系统设计员
李中文
程序员(项目实施)
李中文
时间
任务
负责人
参与人
12.27-12.29
需求分析
李中文
李中文
12.29-1.1
概要设计
李中文
李中文
01.02-01.04
详细设计
李中文
李中文
01.04-01.08
编写代码
李中文
李中文
01.08-01.09
项目总结
李中文
李中文
1.3、术语
需求:
用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。
需求分析:
包括提炼,分析和仔细审查已收集到的需求,以确保所有的风险承担者都明其含义并找出其中的错误,遗憾或其它不足的地方。
模块的独立性:
是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。
1.4、假定与约束
a.本项目的开发经费约为三万元;
b.开发人员1人;
c.开发期限:
一个月左右。
1.5、参考资料
资料名称
作者
出版单位
管理信息系统
江雨燕,周传华
南京大学出版社
VisualC++开发技术大全
刘瑞宁,梁水,宋坤
中国人民邮电大学出版社
VisualC++数据库编程技术与实例
沈伟,徐慧
中国人民邮电大学出版社
《实用软件工程基础》
陈明
清华大学出版社,2002
《UML基础及Visio建模》
刘晓华
电子工业出版社,2004
网站
百度、必应、谷歌、MSDN、CSDN
2、项目概述
2.1待开发软件的一般描述
XXXXXX客运公司需要一个高效的客运售票系统来提高公司的运作效率。
2.2待开发软件的功能
本系统是关于汽车客运售票管理的系统,主要功能如下:
<1>用户管理,包括新增用户,用户注册,修改用户密码,用户信息更新,删除用户等功能。
<2>班次管理,包括新增班次,修改班次功能。
<3>售票管理,包括售票和退票功能。
<4>信息查询,包括班次查询,余票查询和旅客登记查询。
<5>打印功能,包括打印旅客登记表、班次信息等,打印设置等功能。
<6>关于本系统,包括系统操作流程指导,系统作者信息。
2.3系统特征
方便实用,操作简单,功能齐全,效率高,性能稳定。
2.4用户特征
一般员工均可快速学会使用本系统。
2.5运行环境
软件配置:
客户端操作系统WindowsXP/
服务器端操作系统WindowsServer2003/WindowsServer2008/Linux
数据库Access/(真正系统实施时不用Access数据库,用MicrosoftSQLServer或Oracle或MySQL等,这里只是课程设计,所以选择了简单的数据库Access)
硬件环境:
客服端CPU主频1.6GHZ以上内存512MB以上盘5G以上
彩色打印机
服务器端一般的服务器即可,当然配置越高越好。
网络配置:
局域网(本系统可以采用局域网,也可以使用互联网Internet)
3.功能需求
4、数据库设计
数据库表
职工表Users
字段名称
字段类型
字段长度
字段说明
可否为空
PK/FK
UNO
varchar
10
工号
N
PK
UNNAME
varchar
10
姓名
N
Passwords
varchar
20
密码
N
Power
varchar
10
权限
Note
varchar
100
备注
注册表Users_Temp
字段名称
字段类型
字段长度
字段说明
可否为空
PK/FK
UNO
varchar
10
工号
N
PK
UNNAME
varchar
10
姓名
N
Passwords
varchar
20
密码
N
Power
varchar
10
权限
Note
varchar
100
备注
班次信息Information
字段名称
字段类型
字段长度
字段说明
可否为空
PK/FK
ID
varchar
10
班次编号
N
PK
BCDATE
date
日期
N
PK
City
varchar
20
直达城市
N
Price
float
票价
N
BCDatetime
datetimt
发车时间
N
SUM
int
座位数
N
NUM
int
剩余票数
N
Note
varchar
100
备注
N
旅客登记表Passengers
字段名称
字段类型
字段长度
字段说明
可否为空
PK/FK
PNAME
varchar
10
姓名
N
PID
varchar
19
身份证号
N
PK
ID
varchar
10
班次编号
N
PK
BCDATE
date
日期
N
PK
PNUM
int
座位号
N
座位Site
字段名称
字段类型
字段长度
字段说明
可否为空
PK/FK
ID
varchar
10
班次编号
N
FK
BCDATE
date
日期
N
FK
PNUM
int
座位号
N
FK
State
bool
是否售出
N
5、软件属性需求
安全保密性:
登陆模块会提供一个身份认证来确定使用人的身份。
管理员帐号登陆后可进行管理员的相关操作;查询模块将保证任何人的使用权,但不给其修改信息的权利;异常处理模块将会保证即使出异常也会保存现有信息,提高数据库安全性。
二、系统设计
在系统分析这一章里,主要是针对前一章已经详尽描述的系统的逻辑结构模型的基础上科学合理的进行物理模型的设计。
主要工作有系统的功能设计、数据库设计等。
1、系统概要设计
1.1、处理流程
1.2、系统功能设计
请参照第一节的功能设计图
1.3、接口设计
A_用户接口:
登录系统B_硬件接口:
本系统可采用分布式处理的方式,多台服务器并行C_软件接口:
安装OSMicrosoftWindowsXP的客户机服务器安装数据库MicrosoftAccess2003/2007数据库
1.4、数据结构设计
2、系统详细设计
2.1、系统界面设计
1、登陆界面
关于登录出错提示信息界面
2、系统主界面
3、菜单功能
4、添加用户界面
5、删除用户界面
6、删除提示界面
7、更新用户信息界面
8、审核用户注册界面
9、添加班次界面
10、修改删除班次界面
11、售票界面
12、乘客退票界面
13、班次查询界面
14、旅客登记表查询
15、余票查询
16、关于本系统作者
17、用户注册界面
2.2、数据库详细设计
请参照第一节中需求分析部分的数据库表的设计。
三、系统实施
在这章节里主要是根据项目开发,按照目标系统的物理模型,在选定的系统开发环境和开发支持的基础上进行系统的具体实施。
包括开发平台选择,程序设计,系统设计,系统构造和单元测试、项目管理、人员培训、数据准备与录入、系统转转换和评价等,确定软件度量,经过多次循环反复和螺旋渐进,直到最终实现系统的既定目标,完成系统程序的编程。
由于本系统开发时间仓促我能力有限,在具体的实施过程中可能存在很多不足之处,望阅读者见谅并指出我们的错误,不甚感激。
1、开发工具
本系统采用软件MicrosoftVisualC++6.0作为前端开发工具。
2、后台数据库
MicroSoftAccess2003是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。
它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为,用户还可以按需要给对象扩展方法和属性。
通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。
同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。
Access基于Windows操作系统的集成环境,该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。
Access支持ODBC(开发数据库互连,OpenDataBaseConnectivity),利用Access强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。
Access还可以将程序应用于网络,并与网络上的动态数据相联接。
利用数据库访问页对象生成HTML文件,轻松构建Internet/Intranet的应用。
软件开发平台的选择基于MicroSoftVisualC++和MicroSoftAccess2003对运行环境的要求,并根据目前中小型企业计算机硬件设备的实际情况,选择WindowsXP作为系统开发、测试和运行的平台。
3、程序代码
1、资源文件
MicrosoftVisualC++6.0File视图
2、具体代码如下:
1ABOUTMEDlg.cpp
//ABOUTMEDlg.cpp:
implementationfile
//
#include"stdafx.h"
#include"汽车客运售票系统.h"
#include"ABOUTMEDlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
CABOUTMEDlg:
:
CABOUTMEDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CABOUTMEDlg:
:
IDD,pParent)
{
//{{AFX_DATA_INIT(CABOUTMEDlg)
//NOTE:
theClassWizardwilladdmemberinitializationhere
//}}AFX_DATA_INIT
}
voidCABOUTMEDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CABOUTMEDlg,CDialog)
END_MESSAGE_MAP()
2、ADDBANCIDlg.cpp
//ADDBANCIDlg.cpp:
implementationfile
//
#include"stdafx.h"
#include"汽车客运售票系统.h"
#include"ADDBANCIDlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
//CADDBANCIDlgdialog
CADDBANCIDlg:
:
CADDBANCIDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CADDBANCIDlg:
:
IDD,pParent)
{
//{{AFX_DATA_INIT(CADDBANCIDlg)
m_1=_T("");m_2=_T("");m_3=_T("");m_5=_T("");m_4=_T("");m_6=_T("");m_7=_T("");//}}AFX_DATA_INIT
}
voidCADDBANCIDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CADDBANCIDlg)
DDX_Control(pDX,IDC_LIST1,m_Grid);
DDX_Text(pDX,IDC_EDIT1,m_1);
DDX_Text(pDX,IDC_EDIT2,m_2);
DDX_Text(pDX,IDC_EDIT3,m_3);
DDX_Text(pDX,IDC_EDIT5,m_5);
DDX_Text(pDX,IDC_EDIT4,m_4);
DDX_Text(pDX,IDC_EDIT6,m_6);
DDX_Text(pDX,IDC_EDIT7,m_7);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CADDBANCIDlg,CDialog)
//{{AFX_MSG_MAP(CADDBANCIDlg)
ON_NOTIFY(NM_CLICK,IDC_LIST1,OnClickList1)
ON_BN_CLICKED(IDC_BUTTON1,OnButton1)
ON_BN_CLICKED(IDC_BUTTON2,OnButton2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CADDBANCIDlgmessagehandlers
BOOLCADDBANCIDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
m_Grid.SetExtendedStyle(LVS_EX_FLATSB
|LVS_EX_FULLROWSELECT
|LVS_EX_HEADERDRAGDROP
|LVS_EX_ONECLICKACTIVATE
|LVS_EX_GRIDLINES);
m_Grid.InsertColumn(0,"班次编号",LVCFMT_LEFT,110,0);
m_Grid.InsertColumn(1,"日期",LVCFMT_LEFT,110,1);
m_Grid.InsertColumn(2,"直达城市",LVCFMT_LEFT,110,2);
m_Grid.InsertColumn(3,"票价",LVCFMT_LEFT,110,3);
m_Grid.InsertColumn(4,"发车时间",LVCFMT_LEFT,200,4);
m_Grid.InsertColumn(5,"座位总数",LVCFMT_LEFT,110,5);
m_Grid.InsertColumn(6,"剩余票数",LVCFMT_LEFT,110,6);
// m_Grid.InsertColumn(7,"备注信息",LVCFMT_LEFT,200,7);
AddToGrid();returnTRUE;
}
voidCADDBANCIDlg:
:
OnInitADOConn()
{
try
{
m_pConnection.CreateInstance("ADODB.Connection");
CStringstrConnect="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=DB.mdb;PersistSecurityInfo=False;";
m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);
}
catch(_com_errore)
{AfxMessageBox(e.Description());}
}
voidCADDBANCIDlg:
:
ExitConnect()
{
if(m_pRecordset!
=NULL)
m_pRecordset->Close();
m_pConnection->Close();
}
voidCADDBANCIDlg:
:
AddToGrid()
{ OnInitADOConn();
_bstr_tbstrSQL="select*fromToCityorderbyIDdesc";
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,
adLockOptimistic,adCmdText);
while(!
m_pRecordset->adoEOF)
{
m_Grid.InsertItem(0,"");
m_Grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("ID"));m_Grid.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("BCDATE"));m_Grid.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("City"));m_Grid.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect("Price"));m_Grid.SetItemText(0,4,(char*)(_bstr_t)m_pRecordset->GetCollect("BCDatetime"));m_Grid.SetItemText(0,5,(char*)(_bstr_t)m_pRecordset->GetCollect("SUM"));m_Grid.SetItemText(0,6,(char*)(_bstr_t)m_pRecordset->GetCollect("