Отчет по MFC (1024409)
Текст из файла
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
«Московский государственный университет приборостроения и информатики»
Кафедра ИТ-6 «Управление и моделирование систем»
Отчет по контрольной работе на Microsoft Visual Studio с использованием MFC приложений
подготовил: Васильев О.М.
студент 2 курса ИТ-6 группы
Проверил: Мерсов А. А.
Москва 2011г.
Поставленная задача
Разработка приложения на Microsoft visual studio с использованием MFC приложений. Разработать базу данных домашних животных с возможностью добавления, редактирования и удаления записей.
Скриншот программы
Листинг программы
ФАЙЛ ZooBazaDlp.cpp
#include "stdafx.h"
#include "ZooBaza.h"
#include "ZooBazaDlg.h"
///////////////
//
// CAboutDlg
//
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX);
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
///////////////
//
// CZooBazaDlg
//
CZooBazaDlg::CZooBazaDlg(CWnd* pParent /*=NULL*/)
: CDialog(CZooBazaDlg::IDD, pParent)
{
//m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
CZooBazaDlg::~CZooBazaDlg()
{
if(f.m_pStream)
f.Close();
}
void CZooBazaDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_TableList);
}
BEGIN_MESSAGE_MAP(CZooBazaDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_WM_LBUTTONDBLCLK()
ON_NOTIFY(NM_DBLCLK, IDC_LIST1, &CZooBazaDlg::OnNMDblclkList)
ON_BN_CLICKED(IDC_BUTTON_NEW, &CZooBazaDlg::OnBnClickedButtonNew)
ON_BN_CLICKED(IDC_BUTTON_EDIT, &CZooBazaDlg::OnBnClickedButtonEdit)
ON_BN_CLICKED(IDC_BUTTON_DELETE, &CZooBazaDlg::OnBnClickedButtonDelete)
ON_BN_CLICKED(IDC_BUTTON_MOVE_UP, &CZooBazaDlg::OnBnClickedButtonMoveUp)
ON_BN_CLICKED(IDC_BUTTON_MOVE_DOWN, &CZooBazaDlg::OnBnClickedButtonMoveDown)
END_MESSAGE_MAP()
BOOL CZooBazaDlg::OnInitDialog()
{
CDialog::OnInitDialog();
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
HICON icon;
CButton *btn;
m_TableList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_TableList.InsertColumn(0, _T("Вид"), 0, 180);
m_TableList.InsertColumn(1, _T("Дата рождения"), 0, 100);
m_TableList.InsertColumn(2, _T("Склад"), 0, 150);
m_TableList.InsertColumn(3, _T("Количество"), 0, 120);
f.LoadTableFromFile(c_FileName, &m_TableList);
return TRUE;
}
void CZooBazaDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
void CZooBazaDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this);
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
HCURSOR CZooBazaDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CZooBazaDlg::OnNMDblclkList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
*pResult = 0;
if (pNMItemActivate->iItem == -1)
return;
CEditDialog EditDialog(pNMItemActivate->iItem, &m_TableList);
if(EditDialog.DoModal()==IDOK)
f.SaveTableIntoFile(c_FileName, &m_TableList);
}
void CZooBazaDlg::OnBnClickedButtonNew()
{
CEditDialog EditDialog(-1, &m_TableList);
if(EditDialog.DoModal()==IDOK){
f.SaveTableIntoFile(c_FileName, &m_TableList);
int nItem = m_TableList.GetItemCount()-1;
m_TableList.SetItemState(nItem, LVIS_SELECTED, LVIS_SELECTED);
m_TableList.EnsureVisible(nItem, TRUE);
}
}
void CZooBazaDlg::OnBnClickedButtonEdit()
{
int nItem = m_TableList.GetSelectionMark();
if(nItem==-1)
return;
CEditDialog EditDialog(nItem, &m_TableList);
if(EditDialog.DoModal()==IDOK)
f.SaveTableIntoFile(c_FileName, &m_TableList);
}
void CZooBazaDlg::OnBnClickedButtonDelete()
{
int nItem = m_TableList.GetSelectionMark();
if(nItem==-1)
return;
CString msg;
msg.Format(_T("Будет удален \"%s\". Продолжить?"), m_TableList.GetItemText(nItem,0));
if (MessageBox(msg, "Внимание",MB_YESNO|MB_ICONQUESTION)== IDNO)
return;
m_TableList.DeleteItem(nItem);
f.SaveTableIntoFile(c_FileName, &m_TableList);
}
void CZooBazaDlg::OnBnClickedButtonMoveUp()
{
int nItem = m_TableList.GetSelectionMark();
if(nItem==-1 || nItem == 0)
return;
SDataRow DataRow1, DataRow2;
DataRow1.GetFromListCtrl(&m_TableList, nItem);
DataRow2.GetFromListCtrl(&m_TableList, nItem-1);
DataRow2.SetIntoListCtrl(&m_TableList, nItem);
DataRow1.SetIntoListCtrl(&m_TableList, nItem-1);
m_TableList.SetSelectionMark(nItem-1);
m_TableList.SetItemState(nItem-1, LVIS_SELECTED, LVIS_SELECTED);
m_TableList.EnsureVisible(nItem-1, TRUE);
f.SaveTableIntoFile(c_FileName, &m_TableList);
}
void CZooBazaDlg::OnBnClickedButtonMoveDown()
{
int nItem = m_TableList.GetSelectionMark();
if(nItem==-1 || nItem == m_TableList.GetItemCount()-1)
return;
SDataRow DataRow1, DataRow2;
DataRow1.GetFromListCtrl(&m_TableList, nItem);
DataRow2.GetFromListCtrl(&m_TableList, nItem+1);
DataRow2.SetIntoListCtrl(&m_TableList, nItem);
DataRow1.SetIntoListCtrl(&m_TableList, nItem+1);
m_TableList.SetSelectionMark(nItem+1);
m_TableList.SetItemState(nItem+1, LVIS_SELECTED, LVIS_SELECTED);
m_TableList.EnsureVisible(nItem+1, TRUE);
f.SaveTableIntoFile(c_FileName, &m_TableList);
}
///////////////
//
// CEditDialog
//
CEditDialog::CEditDialog(int _nItem, CListCtrl* _m_TableList)
: CDialog(CEditDialog::IDD, NULL), nItem(_nItem), m_TableList(_m_TableList)
{
}
CEditDialog::~CEditDialog()
{
}
void CEditDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CEditDialog, CDialog)
END_MESSAGE_MAP()
BOOL CEditDialog::OnInitDialog()
{
CDialog::OnInitDialog();
if(nItem != -1)
{
SetWindowText(m_TableList->GetItemText(nItem, 0));
CEdit *EditCtrl;
EditCtrl = (CEdit*)GetDlgItem(IDC_TYPE);
EditCtrl->SetWindowText(m_TableList->GetItemText(nItem, 0));
EditCtrl = (CEdit*)GetDlgItem(IDC_SKLAD);
EditCtrl->SetWindowText(m_TableList->GetItemText(nItem, 2));
EditCtrl = (CEdit*)GetDlgItem(IDC_COUNT);
EditCtrl->SetWindowText(m_TableList->GetItemText(nItem, 3));
CDateTimeCtrl *BirthDay = (CDateTimeCtrl*)GetDlgItem(IDC_BIRTHDAY);
BirthDay->SetTime(CEditDialog::CTimeFormStr(m_TableList->GetItemText(nItem, 1)));
}
else
{
SetWindowText(_T("Новый элемент"));
}
return TRUE;
}
CTime* CEditDialog::CTimeFormStr(CString srcString)
{
int Year = atoi(srcString.Mid(6,4));
int Month = atoi(srcString.Mid(3,2));
int Day = atoi(srcString.Mid(0,2));
return new CTime(Year, Month, Day, 0, 0, 0);
}
void CEditDialog::OnOK()
{
if (nItem == -1)
{
nItem = m_TableList->GetItemCount();
m_TableList->InsertItem(nItem, _T(""));
}
CString str;
CEdit *EditCtrl;
EditCtrl = (CEdit*)GetDlgItem(IDC_TYPE);
EditCtrl->GetWindowText(str);
m_TableList->SetItemText(nItem, 0, str);
EditCtrl = (CEdit*)GetDlgItem(IDC_SKLAD);
EditCtrl->GetWindowText(str);
m_TableList->SetItemText(nItem, 2, str);
EditCtrl = (CEdit*)GetDlgItem(IDC_COUNT);
EditCtrl->GetWindowText(str);
m_TableList->SetItemText(nItem, 3, str);
CTime Date;
CDateTimeCtrl *BirthDay = (CDateTimeCtrl*)GetDlgItem(IDC_BIRTHDAY);
BirthDay->GetTime(Date);
m_TableList->SetItemText(nItem, 1, Date.Format(_T("%d.%m.%Y")));
CDialog::OnOK();
}
Файл ZooBaza.cpp
#include "stdafx.h"
#include "ZooBaza.h"
#include "ZooBazaDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
BEGIN_MESSAGE_MAP(CZooBazaApp, CWinAppEx)
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()
CZooBazaApp::CZooBazaApp()
{
}
CZooBazaApp theApp;
BOOL CZooBazaApp::InitInstance()
{
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinAppEx::InitInstance();
AfxEnableControlContainer();
SetRegistryKey(_T("ZooBaza"));
CZooBazaDlg dlg;
m_pMainWnd = &dlg;
dlg.DoModal();
return FALSE;
}
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.















