当前位置:文档之家› 程序设计实践

程序设计实践


CTraveler::CTraveler( CString strBusID,CString TravelID,CString Name,CTime DateTime,int nSeat,CBusInfo* pBusInf)
{
m_strBusID=strBusID;
//班次号
m_TravelID=TravelID;
+Serialize(inout ar : CArchive)
Travelers1
Travelers2
序列化基类 CObject类
{
CObject::Serialize( ar);
if (ar.IsStoring())
{
ar<<m_strBusID<<m_StartTime<<m_Destination<< m_nSeat
<<m_nSeatSaled<<m_fPrice;
}
else
{
ar>>m_strBusID>>m_StartTime>>m_Destination>>m_nSeat
CWnd类:
图形用户界面对象的基类。
CMainFrame类: 应用程序主窗口类。
CChildFrame类: 应用程序子窗口类。
CView类:
视图类,用于显示和操作文档中的数据。
CTemplateDoc类:文档模版基类。
CMultiTemplateDoc和CSingleTemplateDoc类。
程序设计实践
计算机科学与工程学院 孙学波
第四章 面向对象实用系统分析与设计
MFC程序设计知识小结
Windows程序设计基础
MFC程序框架中的主要类
CObject类: MFC中大多数类的抽象基类,它提供序列化、 运行时信息,诊断和调试支持等。
CWinapp类: 代表应用程序的核心。
CDocument类: 文档类,用于组织用户数据。
CBusInfo
CTraveler
框架类的派生类
4.2 详细设计方案
4.2.1 实体类设计
1 班次类设计;
class CBusInfo : public CObject
CObject类
{
DECLARE_SERIAL(CBusInfo);
序列化定义宏
private:
CString m_strBusID; CTime m_StartTime; CString m_Destination;
+m_NameTr: aCvSetlreinrng
+m_DateTime : CTime
+m_nSeaTt r: ainvteler11
+m_pBusTInrfaov:eCleBru1s2Info *
+CTravel…er() ++C~CTTraravevelTelerr(ari(nv)oeuletro1bnj : CTraveler)
+~CBusInfo()
+Serialize(inout ar : CArchive)
Ticket 1 0..*
CTraveler * TravelerList; Int n;//旅客列表
Traveler01
TraCvTerlaevr0e2ler
++mm__sTtrraBvue…slIIDD
: :
CString CString
班次对象地址,用于 //////班 身 姓表关次 份 名示系号 证号旅(客车与票车)次。之间的
CTime m_DateTime;
//购票日期
int
m_nSeat;
//座位号
CBusInfo *m_pBusInfo;
//班次指针
};
4 旅客类的实现
IMPLEMENT_SERIAL(CTraveler,CObject,1); CTraveler::CTraveler() { }
(2)文档类结构
m_List
CTraveler Traveler01 Traveler02 … Traveler n
CBusInfo 07051601 07051602 …
其他的设计方案?
CTraveler
CBusInfo
+mm__sLtirsBt;usID : +m_StartTime
C: CSTtriimnCgBeusInfo
4.1 项目需求
项目名称:汽车客运公司售票系统 业务需求:
某客运公司每日向10个城市发一个直达班车 (中途不停车)。每天都发售今明后3天的客票。
功能需求:
1 数据存储需求 该系统需要磁盘上存储以下信息: (1)今、明、后3天每个班次的基本信息, 包括:每个班次的班次号、发车时间、终点城市,票价 和座位数量; (2)已发售每个班次的旅客登记表,包括: 身份证号、姓名、座号。
WM_COMMAND消息传递机制
使用消息映射表替代窗口函数, 降低程序设计的难度。
第四章 面向对象实用系统分析与设计
MFC应用程序常用的宏
动态类型识别 DECLARE_DYNAMIC IMPLEMENT_DYNAMIC
动态生成 DECLARE_DYNCREATE IMPLEMENT_DYNCREATE
>>m_Name>>m_nSeat; } }
3 文档类的设计
(1)文档类设计:
使旅 客 异用客票构M表:FC:从即类除旅C库T旅客中ra客与的veC数班lePrt据次r对L外之i象st,间类和对还的C象存关B存u储系s储I一导n班fo个出次对类。对象和旅客类对象。 C象puB共bulis同cI:n存fo储对于象同指一针个,现指性向表该中旅,客但的表班中次 对 存C象储Pt,的rL用是ist 于这m_表些Li示对st; 旅象客的与地班址次。之间的关系。
>>m_nSeatSaled>>m_fPrice;
}
}
读入数据
3 旅客类设计
class CTraveler : public CObject
{
DECLARE_SERIAL(CTraveler);
public:
CTraveler();
CTraveler( CString strBusID,CString TravelID,CString strName,
////班终次点号城班、市次发、类车时数间据成员
int m_nSeat; m_nSeatSaled;
//座位数量、已售数量
float m_fPrice;
//票价
public: CBusInfo();
默认构造函数
CBusInfo(CString strBusID, CTime StartTime,CString Destination,
一ar个<<指m向_sCtrBBusuIsnIfDo<类<m型_对Tr象av的el内ID存<<地m址_D,a将te其Tim数e值 写<入<磁m_盘N文am件e是<<毫m无_n意S义ea的t; 。这个成员的负值是在 } 从文件中读入旅客类数据后再将相应的CBusInfo类 els型e 对象地址付给这个数据成员。 { ar>>m_strBusID>>m_TravelID>>m_DateTime
+m_Destination B: uCsS0t7r0in51g601 +m_nSeat : int Bus07051602 +…m_nSeatSaled …: int +m_nPrice : int Bus0705160s +CBusInfo()
+CBusInfo(inout obj : CBusInfo)
动态生成 (Dynamic Creation)
重载CObject类成员函数 CObject * CreateObject(void)
永久保存 (Persistence)
信息映射 (Message Mapping)
实现成员函数 void Serialize (CArchive & ar)
命令传递 (Command Routing)
CAboutDlg
MFC SDI程序框架
CWinApp 1
CSingleDocTemplate
**
1*
*
CFormView
CDocument CMainFrame
CTicketSalingApp CTicketSalingView CTicketSalingDoc
CBuyTicketDlg
*
1
*
CReturnTicketDlg
支持动态类型识别 支持动态生成 重载Serialize () 方法
支持信息映射 支持动态生成 支持Serialize () 方法
第四章 面向对象实用系统分析与设计
MFC应用程序类型
对话框界面设计、成员变 量、消息映射。
(1) 基于对话框的应用程序
(2) SDI应用程序
文档/视结构、用户界面
资源、文本和图形输出、 序列化文档保存。
序列化实现宏
CBusInfo::CBusInfo( CString strBusID,CTime StartTime,CString
Destination,int nSeat,int nSeatSaled,
float fPrice)
{ //构造函数,用于创建对象。
m_strBusID = strBusID;
第四章 面向对象实用系统分析与设计
MFC程序运行机制
相关主题