预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共26页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数据结构课程设计实验报告 1:火车票务系统 2:地铁建设问题 学号:200913138008 姓名:张贺 班级:软件工程0901 课程设计日期:2011-09-01至2011-09-10 火车票务系统 火车票务系统需要做什么: 火车票务系统需要进行如下的工作: (1)列车信息录入:输入列车基本信息。 (2)列车信息删除:删除车次信息。(列车线路停运) (3)列车信息修改:删除车次信息。(列车时间、票价等信息有变动) (4)列车信息输出:根据格式对齐输出列车信息。 (5)列车信息查询:可根据车次号、始发站、终点站查询满足条件的列车信息。 (6)列车信息排序:可根据票价对列车信息进行排序并输出。 测试数据对话框(具体数据见操作流程): 输入对话框: 输出对话框: 错误的输入会弹出相应的提示对话框: 存储信息采用文件: 本系统采用文件存储列车信息。使用了MFC封装的CFile类进行文件操作,利用CArchive类进行串行化,为了使用CArchive类,自定义TrainInfo需要支持串行化。存储与读取直接使用CArchive类重载的‘<<’和‘>>’操作符。 列车信息的存储结构 列车记录包含6项: 车次(TrainTrips)、【首字母在Z、T、K、D、G以及空字符当中选其一,然后输入int整型】 始发站(BeginStation)、【CString字符串形式】 终点站(FinalStation)、【CString字符串形式】 发车时间(StartTime)、【int整型,小时范围0-23,分钟范围0-59】 到站时间(ArriveTime)、【int整型,小时范围0-23,分钟范围0-59】 票价(Price)【double浮点型】 此程序中采取的是VisualC++的MFC编程,所以将列车信息抽象为一个CTrainInfo类 classCTrainInfo:publicCObject { DECLARE_SERIAL(CTrainInfo) public: CTrainInfo(); CTrainInfo(CTrainInfo&Train); CTrainInfo(CStringm_strTrainTrips,CStringm_strBeginStation,CStringm_strFinalStation, CStringm_strSetTime,CStringm_strArriveTime,doublem_lfPrice); virtual~CTrainInfo(); virtualvoidSerialize(CArchive&ar); public: //列车车次 CStringm_strTrainTrips; //始发站 CStringm_strBeginStation; //终点站 CStringm_strFinalStation; //出站时间 CStringm_strSetTime; //到站时间 CStringm_strArriveTime; //票价 doublem_lfPrice; }; CTrainInfo支持可串行化步骤: :从CObject类派生; :在类的定义头文件的时候添加DECLARE_SERIAL(CTrainInfo); :在类的实现文件中添加IMPLEMENT_SERIAL(CTrainInfo,CObject,1); :在类中重载父类虚函数Serilize; 代码流程: 初始化主对话框的时候,在OnInitDialog函数中用CFile类打开TrainTicketsData.dat文件; 创建一个CArchive对象; 将信息保存到CObArray类的全局对象m_ObArray中; 关闭CArchive对象; 关闭文件; 插入信息: 1:响应菜单中的WM_LBUTTONDOWN消息; 2:调用CInsertDlg::DoModal()创建对话框; 3:输入信息,用UpdateData()函数将控件中的数据交换到变量中; 4:根据定制的条件校验信息,如果条件不符则返回3,否则向m_ObArray中插入数据; 5:销毁窗口; 删除信息: 1:响应菜单中的WM_LBUTTONDOWN消息; 2:调用CInsertDlg::DoModal()创建对话框; 3:选择车次,用UpdateData()函数将控件中的数据交换到变量中; 4:将m_ObArray中此车次的信息删除; 5:销毁窗口; 修改信息: 1:响应菜单中的WM_LBUTTONDOWN消息; 2:调用CIDeleteDlg::DoModal()创建对话框; 3:输入信息,用UpdateData()函数将控件中的数据交换到变量中