ex101Doc.cpp
资源名称:VC6.0.rar [点击查看]
上传用户:qdhmjx
上传日期:2022-07-11
资源大小:2226k
文件大小:3k
源码类别:
书籍源码
开发平台:
Visual C++
- // ex101Doc.cpp : implementation of the CEx101Doc class
- //
- #include "stdafx.h"
- #include "ex101.h"
- #include "ex101Doc.h"
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CEx101Doc
- IMPLEMENT_DYNCREATE(CEx101Doc, CDocument)
- BEGIN_MESSAGE_MAP(CEx101Doc, CDocument)
- //{{AFX_MSG_MAP(CEx101Doc)
- ON_COMMAND(ID_CREATE_TEXT, OnCreateText)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CEx101Doc construction/destruction
- CEx101Doc::CEx101Doc()
- {
- m_nYear=2005;
- m_nTotalProduct=0;
- for(int i=0;i<12;i++)
- {
- m_Month[i].nProduct=0;
- m_Month[i].sNote[0]=NULL;
- }
- }
- CEx101Doc::~CEx101Doc()
- {
- }
- BOOL CEx101Doc::OnNewDocument()
- {
- if (!CDocument::OnNewDocument())
- return FALSE;
- // TODO: add reinitialization code here
- // (SDI documents will reuse this document)
- return TRUE;
- }
- /////////////////////////////////////////////////////////////////////////////
- // CEx101Doc serialization
- void CEx101Doc::Serialize(CArchive& ar)
- {
- if (ar.IsStoring()) //判断是否存储
- {
- //实现存储写的代码
- ar<<m_nYear; //写入年份
- ar<<m_nTotalProduct; //写入年总产值
- for(int i=0;i<12;i++) //循环写入各月信息
- {
- ar<<m_Month[i].nProduct;//这个月的产值
- ar.Write(m_Month[i].sNote,50);//这个月备注
- }
- }
- else
- {
- //实现读出的代码
- ar>>m_nYear; //读出年份
- ar>>m_nTotalProduct;//读出总产值
- int nTemp=0;
- for(int i=0;i<12;i++) //读出各月信息
- {
- ar>>m_Month[i].nProduct;//这个月的产值
- if(m_Month[i].nProduct<0)//纠正负值
- m_Month[i].nProduct=-m_Month[i].nProduct;
- nTemp+=m_Month[i].nProduct;//临时统计各月总产值
- ar.Read(m_Month[i].sNote,50);//读出该月的备注信息
- m_Month[i].sNote[49]=NULL;//确保字符串结束符存在
- }
- //进行检查工作
- if(nTemp!=m_nTotalProduct)//各月累计和总产值不符
- {
- AfxMessageBox("该报表文件中总产值与各月总和不符,
- n将总产值置为各月总和");
- m_nTotalProduct=nTemp;
- }
- }
- }
- /////////////////////////////////////////////////////////////////////////////
- // CEx101Doc diagnostics
- #ifdef _DEBUG
- void CEx101Doc::AssertValid() const
- {
- CDocument::AssertValid();
- }
- void CEx101Doc::Dump(CDumpContext& dc) const
- {
- CDocument::Dump(dc);
- }
- #endif //_DEBUG
- /////////////////////////////////////////////////////////////////////////////
- // CEx101Doc commands
- void CEx101Doc::OnCreateText()
- {
- CString str;
- CString filename=GetPathName();//获取该文档当前的hjm名
- if(filename.IsEmpty()) //如果空
- filename=GetTitle()+".txt";//从标题获得
- else
- filename=filename.Left(filename.GetLength()-3)+"txt";
- CStdioFile file;
- //用CStdioFile创建一个txt文件,注意使用的文件操作标志
- if(file.Open(filename,CFile::modeCreate|CFile::modeWrite|CFile::typeText)==0)
- {
- str="创建文件"+filename+"失败!";
- AfxMessageBox(str);//创建失败
- return;
- }
- //写文本文件内容
- str.Format("%d年产值报告nn",m_nYear);
- file.WriteString(str);
- str.Format("总产值:%d元nn",m_nTotalProduct);
- file.WriteString(str);
- str.Format("月份: 产值: 单位(元) 备注:n");
- file.WriteString(str);
- for(int i=0;i<12;i++)
- {
- str.Format("%4d %13d %sn",i+1,m_Month[i].nProduct,m_Month[i].sNote);
- file.WriteString(str);
- }
- //文件写完了,再做一些辅助工作
- file.SetLength(file.GetPosition());
- file.Close();
- str="notepad "+filename;
- WinExec(str,SW_SHOW);//用记事本打开
- }