VC++火车票课设MFC要点.docx
- 文档编号:3744924
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:36
- 大小:230.27KB
VC++火车票课设MFC要点.docx
《VC++火车票课设MFC要点.docx》由会员分享,可在线阅读,更多相关《VC++火车票课设MFC要点.docx(36页珍藏版)》请在冰点文库上搜索。
VC++火车票课设MFC要点
火车票订票系统
1.课程设计目的
在如今这个信息时代,人们的出行以及旅游等都选择铁路旅行方式,铁路火车订票系统必须能处理现在大量的售票数据信息,列车的到达时间以及离站时间,因此采用计算机软件来处理火车票售票,订票信息也是必不可少的,火车票订票系统处理信息的准确性和及时性是系统的必要性能,当今火车票可谓一票难求,所以系统的实时性要求也至关重要。
该火车票订票管系统的功能主要是根据不同旅客的要求提供不同的查询订票方式,实现火车票订票的信息化和智能化管理,从而减少了车站售票人员的工作量。
通过该火车票订票管理系统,火车站管理人员可以实现对火车票信息的输入、订票、查询、修改等操作,在后台采用了MicrosoftOfficeAccess2003数据库对售票的信息进行存储和管理,从而也满足了对数据安全性的考虑,该系统也拥有基本了火车票订票系统所需的基本功能。
2.功能描述
该火车票订票系统实现了预定火车票的功能和火车票维护两个功能:
(1)预订火车票
在预订火车票功能模块中包括了根据车次查询订票和根据车站查询订票的功能,在这个功能模块中用户能根据自己的需要进行根据车次查询订票和根据车站查询订票等功能。
(2)火车票维护
在火车票维护功能模块中可以实现对火车票的票数,列车的车次,列车的始发车站和到达车站,始发车站的发车时间到达终点站的时间,途中经历几天到达终点站,起点站和终点站之间的里程和硬座的票价,软座的票价,硬卧和软卧的票价的浏览。
在火车票维护中还可以进行火车票信息的添加,修改,删除等功能。
在添加火车票功能中,用户可以添加列车的基本信息,其中包括列车车次,列车始发车站和到达车站,始发车站的发车时间到达终点站的时间,途中经历几天到达终点站,起点站和终点站之间的里程和硬座的票价,软座的票价,硬卧以及软卧的票价,然后单击确定按钮即可向数据库中添加火车票信息;对火车票的添加和删除对话框中选中要删除的火车票信息既可删除该火车票的信息,方便快捷;在修改功能对话框中也可以实现对列车的车次,列车的始发
车站和到达车站,始发车站的发车时间到达终点站的时间,途中经历几天到达终点站,起点站和终点站之间的里程和硬座的票价,软座的票价,硬卧和软卧的票价的修改,实现了火车票信息的智能化管理。
3方案论证
3.1总体设计
3.1.1功能框图
火车票订票系统功能框图:
图1.火车票订票系统功能框图
3.2详细设计
3.2.1数据库设计
在该火车票订票系统中采用了MicrosoftOfficeAccess2003数据库,进行对火车票售票的信息进行存储和管理,方便简单但是却满足了对数据的保存和安全的需求。
(1)Access数据库的创建
首先打开MicrosoftOfficeAccess2003数据库,单击文件菜单中的新建选项,创建一个空数据库文件并且选择将该数据库将要保存的位置,单击创建后该数据库就创建好了,然后在弹出的对话框中选择使用设计器创建表,为该表的每一个字段输入一个名称并且选择每个字段的属性,在将所需的字段输入完成后,单击右上角的关闭按钮,此时系统会弹出一个对话框,提示用户对刚刚编辑的数据库文件进行保存,并且选择数据库文件保存的位置,此时系统又会弹出一个对话框,提示用户输入刚才所建立的数据库的名称,然后在单击确定按钮,一个空白的数据库就建立好了。
(2)添加数据库信息
创建两个表分别为Station表和TrianNo,向数据库中的两个表添加火车票的信息可以通过火车票订票系统中的火车票维护进行添加,也可以在数据库中直接添加所需的信息。
数据库如图2和图3所示:
图2.数据库Station表
图3.数据库TrainNo表
(3)创建ODBC数据源
①Windows中的ODBC组件是出现在系统的“控制面板”管理工具中,如图所示。
双击ODBC图标,进入ODBC数据源管理器。
运行ODBC组件,进入ODBC数据源管理器。
②单击“添加”按钮,弹出有一驱动程序列表的“创建新数据源”对话框,在该对话框中选择MicrosoftAccessDriver。
③单击“完成”按钮,进入指定驱动程序的安装对话框,数据源名称设为“学生信息管理系统”,单击“选择”按钮将本实验中的数据库。
④单击“确定”按钮,刚才创建的用户数据源被添加在“ODBC数据源管理器”的“用户数据源”列表中。
3.2.2程序主界面设计
(1)程序框架设计:
启动Visualc++6.0,新建一个MFC.exe程序。
②打开Visualc++6.0后在菜单栏中单击文件菜单,在文件菜单中选择“新建“选项,弹出一个新建对话框,在新建对话框中选择工程选项卡,在工程选项卡中选择MFCAppWizard,在工程名称中填入TrainTicket,在存储栏中选择刚刚所创建的MFC文件所需要存放的位置即D:
\VC++\课程设计\。
单击确定按钮后又弹出一个MFC应用程序向导的创建向导,选择创建一个单文档,然后单击下一步,在向导的第2步对话框中加入数据库的支持,选中“数据库查看使用文件支持”项,单击数据项按钮,弹出数据项对话框,从中选择ODBC的数据源“DatabaseExampleForVC++”.保留其他默认选项,单击[OK]按钮,弹出“SelectDatabaseTables”对话框,从中选择要使用的表TrainTickets。
单击[OK]按钮,又回到了向导的第2步对话框。
单击“完成“按钮。
。
最后,单击“完成”按钮,完成程序框架设计。
(2)菜单设计
在刚刚生成的单文档中ResourceView菜单中选择Menu选项,单击Menu的IDR_MAINFRAME,在弹出的单文档中删除初始的单文档带有的菜单选项,然后像菜单中添加预定火车票和火车票维护两个菜单,然后在预定火车票的子菜单中添加根据车次和根据车站订票两个子菜单,在火车票维护的菜单下添加添加\删除子菜单和关于子菜单,然后在主界面中添加一个静态文本框,右键单击静态文本框的属性,在标题栏中输入“火车票订票系统”,接着火车票订票系统的主界面的菜单设计就完成了。
该系统的主界面图4所示:
图4.火车票订票系统主界面
主界面的初始化代码如下:
voidCTrainTicketDlg:
:
OnPaint()
{if(IsIconic())
{
CPaintDCdc(this);//devicecontextforpainting
SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0);
intcxIcon=GetSystemMetrics(SM_CXICON);
intcyIcon=GetSystemMetrics(SM_CYICON);
CRectrect;
GetClientRect(&rect);
intx=(rect.Width()-cxIcon+1)/2;
inty=(rect.Height()-cyIcon+1)/2
dc.DrawIcon(x,y,m_hIcon);
}
else
{
CDialog:
:
OnPaint();
}
}
3.2.3车次查询订票设计
在根据车次查询订票界面中可以根据查询列车的车次进行订票,在该界面中添加了一个静态文本框和两个GroupBox以及一个列表控件,在两个GroupBox控件中添加了十个静态文本框和十个编辑框,静态文本框用以显示火车票的各种信息,编辑框用以显示和接收用户的输入信息,三个按钮控件分别为查询,返回和确认订票。
各个控件的属性如表1所示:
表1.车次查询订票界面控件属性表
控件ID号
变量名
类型
IDC_EDIT_TRAIN_NO
m_Trian_No
CSting
IDC_EDIT_TRAINNO
m_TrianNo
CSting
IDC_EDIT_TIME
m_Time
CSting
IDC_LIST1
m_List1
CListCtrl
IDC_EDIT_TERMINUS
m_Terminus
CSting
IDC_EDIT_TRAIN_NO
m_Trian_No
CSting
IDC_EDIT_STARTSTATION
m_StartStation
CSting
IDC_EDIT_TYPE
m_Type
CSting
IDC_EDIT_HARDSEAT
m_HardSeat
float
IDC_EDIT_SOFTSEAT
m_SoftSeat
float
IDC_EDIT_SOFTSLEEPER
m_SoftSleeper
float
IDC_EDIT_HARDSLEEPER
m_HardSleeper
float
在根据车次订票中,调用CTrainNoQueryDlg:
:
OnInitDialog()函数,对对话框进行初始化,然后然后在列表框中添加车次,站次,站名,到达时间,开车时间,运行时间,天数,里程,硬座,软座,硬卧和软卧等信息,然后在数据库中读出这些信息在相应的控件之中显示。
当订票者查询到所需的车次时,单击对话框中的确认订票按钮,即可成功订此次列车车票,当订票成功后系统会弹出一个消息框提示用户“恭喜您,您已经订票成功”。
根据车次预定火车票的功能代码如下:
BOOLCTrainNoQueryDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//TODO:
Addextrainitializationhere
m_List1.InsertColumn(0,"车次",LVCFMT_LEFT,50,0);
m_List1.InsertColumn(1,"站次",LVCFMT_LEFT,40,1);
m_List1.InsertColumn(2,"站名",LVCFMT_LEFT,80,2);
m_List1.InsertColumn(3,"到达时间",LVCFMT_LEFT,70,3);
m_List1.InsertColumn(4,"开车时间",LVCFMT_LEFT,70,4);
m_List1.InsertColumn(5,"运行时间",LVCFMT_LEFT,70,5);
m_List1.InsertColumn(6,"天数",LVCFMT_LEFT,40,6);
m_List1.InsertColumn(7,"里程",LVCFMT_LEFT,40,7);
m_List1.InsertColumn(8,"硬座",LVCFMT_LEFT,65,8);
m_List1.InsertColumn(9,"软座",LVCFMT_LEFT,65,9);
m_List1.InsertColumn(10,"硬卧",LVCFMT_LEFT,65,10);
m_List1.InsertColumn(11,"软卧",LVCFMT_LEFT,65,11);
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
}
voidCTrainNoQueryDlg:
:
OnButton1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
MessageBox("恭喜您,您已经订票成功!
!
",NULL,MB_OKCANCEL);
}
3.2.4车站查询订票
在根据车站查询订票界面中可以根据查询列车所途径的车站进行订票,在该界面中添加了一个静态文本框以及一个列表控件,静态文本框用以显示火车所途径的车站信息,编辑框用以显示和接收用户的输入信息,列表框用以显示列车的各个信息,提供给用户参考,在根据车站订票功能中,调用BOOLCStationQueryDlg:
:
OnInitDialog()函数,对对话框进行初始化,然后然后在列表框中添加车次,类型,始发站,始发时间,查询站,开车时间,终点站,全程运行,里程等信息,然后在数据库中读出这些信息在相应的控件之中显示。
当订票者查询到所需的车站时,单击对话框中的确认订票按钮,即可成功订此次列车车票,当订票成功后系统会弹出一个消息框提示用户“恭喜您,您已经订票成功!
!
”。
根据车站订票的控件属性如表2所示:
表2.车站查询订票界面控件属性表
控件ID号
变量名
类型
IDC_EDIT_STATION_NAME
m_StationName
CString
IDC_LIST1
m_List1
CListCtrl
根据车站预定火车票的功能代码如下:
BOOLCStationQueryDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//TODO:
Addextrainitializationhere
m_List1.InsertColumn(0,"车次",LVCFMT_LEFT,50,0);
m_List1.InsertColumn(1,"类型",LVCFMT_LEFT,70,1);
m_List1.InsertColumn(2,"始发站",LVCFMT_LEFT,80,2);
m_List1.InsertColumn(3,"始发时间",LVCFMT_LEFT,70,3);
m_List1.InsertColumn(4,"到站时间",LVCFMT_LEFT,70,4);
m_List1.InsertColumn(5,"查询站",LVCFMT_LEFT,80,5);
m_List1.InsertColumn(6,"开车时间",LVCFMT_LEFT,70,6);
m_List1.InsertColumn(7,"终点站",LVCFMT_LEFT,80,7);
m_List1.InsertColumn(8,"全程运行",LVCFMT_LEFT,70,8);
m_List1.InsertColumn(9,"里程",LVCFMT_LEFT,50,9);
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
}
voidCStationQueryDlg:
:
OnButton1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
MessageBox("恭喜您,您已经订票成功!
!
");
}
3.2.5添加/删除火车票
在添加/删除火车票信息功能框中提供了添加,修改和删除火车票信息,其中包括车次,始发站,发车时间,终点站,到站时间,第几天到达,里程,类型,硬座每千米的价格,软座每千米的价格,硬卧每千米的价格,软卧每千米的价格。
在该功能中调用voidCAddStationDlg:
:
OnButtonMake()函数,在函数体中进行if()条件判断,如果m_StationName为空,即弹出提示消息框,站名不能为空;反之if()条件站名不为空则执行添加操作;火车票的修改操作与添加操作类是,选择要修改的火车票信息,然后单击对话框中的修改按钮,弹出修改火车票的对话框即可对火车票信息进行修改,修改完成后单击确定按钮就完成了火车票信息的修改。
删除火车票信息只需选择将要进行删除的火车票,单击删除按钮即可完成对火车票的删除操作。
在添加,修改和删除对话框中的各个控件的属性如表3所示:
表3.添加/删除火车票界面控件属性表
控件ID号
变量名
类型
IDC_COMBO_END_H
m_EndTime_h
CComboBox
IDC_EDIT_HARDSEAT
m_HardSeat
float
IDC_EDIT_HARDSLEEPER
m_HardSleeper
float
IDC_EDIT_SOFTSLEEPER
m_SoftSleeper
float
IDC_EDIT_SOFTSEAT
m_SoftSeat
float
IDC_EDIT_TRAIN_NO
m_Trian_No
CSting
IDC_EDIT_TYPE
m_Type
CSting
IDC_EDIT_TOTAL_MILEAGE
m_Total_mileage
int
IDC_EDIT_TERMINUS
m_Terminus
CSting
其中实现添加/删除火车票信息的主要代码如下:
voidCAddStationDlg:
:
OnButtonMake()
{//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(TRUE);
if(m_StationName.IsEmpty())
{MessageBox("站名必须填写!
","警告!
",MB_OK);
((CEdit*)GetDlgItem(IDC_EDIT_STATION_NAME))->SetFocus();
return;}
if(m_AdoConn.ExecuteSQL((_bstr_t)sqlStr))
{
MessageBox("添加成功!
",NULL,MB_OKCANCEL);
}
else
{
MessageBox("添加失败!
","警告!
",MB_OKCANCEL);
}
CDialog:
:
OnOK();
}
4.运行结果与分析
(1)车次查询订票
在根据车次查询订票界面中,用户只需要在查询的编辑框中输入需要查询的车次,然后单击查询按钮即可完成通过车次对火车票信息进行查询,然后单击确认订票完成火车票预定。
车次查询订票如图5所示:
图5.车次查询订票
(2)车站查询订票
在根据车站查询订票界面中,用户只需要在查询的编辑框中输入需要查询的车站,然后单击查询按钮即可完成对途径该站的火车的火车票信息进行详细查询,在查询的火车票信息中选择适当的火车,然后单击确认订票完成火车票预定。
车站查询订票如图6所示:
图6.车站查询订票
(3)添加火车票
在主菜单中单击火车票维护,在弹出的子菜单中选择添加/删除即可进行火车票的添加和删除操作,在其中还可以对火车票信息进行修改,修改火车票信息只需单击修改按钮,在弹出的对话框中对选择的火车票信息进行修改,修改完成后单击确定按钮,火车票信息即修改成功。
添加火车票信息如7所示:
图7.添加火车票信息
(4)修改火车票信息如图8所示:
图8.修改火车票信息
(5)删除火车票信息如图9所示:
图9.删除火车票信息
5.设计体会
在为期两周的VC++程序课程设计的时间里,学到了很多东西。
虽然在课程设计的过程中,遇到了许多的困难,特别是在解决程序功能时候总是感到很迷茫,课设中问题总是不断的出现,通过不断与同学之间的交流,慢慢的将问题解决,但是通过自己不断的查阅这学期学习的VisualC++实用教程以及经过向同学和老师请教过程中,找到了解决功能实现的方法,虽然在其中遇到了失败,但是只要坚持不懈,总会解决面临的问题。
通过这次设计火车票订票系统,对VisualC++编程有了稍微进一步的了解;通过这次的课程设计,明白了任何事要学会不仅要知其然,而且要知其所以然,做到严谨认真的态度,这样才能更好完成课程设计。
做事情首先要懂得实践,学会把书本上的理论用于实践,只有在实践中才能找到更多隐藏的没有被发现的问题。
这次通过课程设计锻炼了实践能力,在以后遇到更大的难题时,会显得更加的从容,更加的有自信,这样才能有更好的发展。
在以后的工作学习中,一定要相互学习,不耻下问,方能达到事半功倍的效果。
俗话说:
纸上得来终觉浅,绝知此事要躬行。
6.参考文献
[1]孙鑫,VC++深入详解[M],电子工业出版社出版2006.05
[2]揣锦华,面向对象程序设计与VC++,西安电子科技大学出版社2005.02
[3]贾振华,VC++程序设计项目实践,清华大学出版社2010.03
[4]林锦贤,林少丹,VC++程序设计基础,人民交通出版社,2009.09
[5]管西京,深入体验VC++项目开发,清华大学出版社,2011.07
附录:
voidCAddStationDlg:
:
OnButtonMake()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(TRUE);
if(m_StationName.IsEmpty())
{
MessageBox("站名必须填写!
","警告!
",MB_OK);
((CEdit*)GetDlgItem(IDC_EDIT_STATION_NAME))->SetFocus();
return;
}
CStringsqlStr;
sqlStr.Format("insertintoStation(TrainID,StationName,ArriveTime,LeaveTime,StationNum,Mileage,\
DayNum)values(%d,'%s','%0.2d:
%0.2d:
00','%0.2d:
%0.2d:
00',%d,%d,%d)",
m_ldAccTrainID,m_StationName.GetBuffer(0),m_Arrive_h.GetCurSel(),m_Arrive_s.GetCurSel(),
m_Leave_h.GetCurSel(),m_Leave_s.GetCurSel(),
m_StationNum,m_Mileage,m_DayNum);
if(m_AdoConn.ExecuteSQL((_bstr_t)sqlStr))
{
MessageBox("添加成功!
",NULL,MB_OKCANCEL);
}
else
{
MessageBox("添加失败!
","警告!
",MB_OKCANCEL);
}
CDialog:
:
OnOK();
}
BOOLCAddStationDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//TODO:
Addextrainitializationhere
m_TrainNo=m_sAccTrainNo;
m_Type=m_sAccTrainType;
m_Arrive_h.SetCurSel(0);
m_Arrive_s.SetCurSel(0);
m_Leave_h.SetCurSel(0);
m_Leave_s.SetCurSel(0);
UpdateData(FALSE);
retu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC+火车票课设 MFC要点 VC 火车票 MFC 要点