Автор работы: Пользователь скрыл имя, 03 Сентября 2014 в 19:41, курсовая работа
Целью курсового проекта является закрепление и обобщение знаний, полученных при изучении теоретического курса, приобретение практических навыков по программированию задач на объектно - ориентированном языке Visual C++ в среде разработки Visual Studio 2005 по дисциплине «Технологии и методы программирования».
{
CMy1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: add draw code for native data here
}
// CMy1View printing
void CMy1View::OnFilePrintPreview()
{
#ifndef SHARED_HANDLERS
AFXPrintPreview(this);
#endif
}
BOOL CMy1View::OnPreparePrinting(
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CMy1View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CMy1View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
void CMy1View::OnRButtonUp(UINT /* nFlags */, CPoint point)
{
ClientToScreen(&point);
OnContextMenu(this, point);
}
void CMy1View::OnContextMenu(CWnd* /* pWnd */, CPoint point)
{
#ifndef SHARED_HANDLERS
theApp.GetContextMenuManager()
#endif
}
// CMy1View diagnostics
#ifdef _DEBUG
void CMy1View::AssertValid() const
{
CView::AssertValid();
}
void CMy1View::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CMy1Doc* CMy1View::GetDocument() const // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(
return (CMy1Doc*)m_pDocument;
}
#endif //_DEBUG
// CMy1View message handlers
Файл кодов 1View.h
// 1View.h : interface of the CMy1View class
//
#pragma once
class CMy1View : public CView
{
protected: // create from serialization only
CMy1View();
DECLARE_DYNCREATE(CMy1View)
// Attributes
public:
CMy1Doc* GetDocument() const;
// Operations
public:
// Overrides
public:
virtual void OnDraw(CDC* pDC); // overridden to draw this view
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);
virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);
virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);
// Implementation
public:
virtual ~CMy1View();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
protected:
// Generated message map functions
protected:
afx_msg void OnFilePrintPreview();
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
DECLARE_MESSAGE_MAP()
};
#ifndef _DEBUG // debug version in 1View.cpp
inline CMy1Doc* CMy1View::GetDocument() const
{ return reinterpret_cast<CMy1Doc*>(m_
#endif
Класс CAkt предназначен для создания и ведения файла оперативных данных.
Файл кодов Act.cpp
#include "stdafx.h"
#include "1.h"
#include "Act.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
extern CString ActFile;
CAct::CAct()
{
num = "";
code = "";
count = "";
fact_kol = 0;
}
CAct::~CAct()
{
}
void CAct::Zamena(int nomer)
{
ZapisZap(nomer);
cor_ind(nomer,num);
}
void CAct::Udalenie(int nomer)
{
num = "";
ZapisZap(nomer);
cor_ind(nomer,num);
}
void CAct::Init() //создание индексного массива
{
int pr=0;
int i=0;
CFile file(ActFile, CFile::modeRead|CFile::
CFile::modeNoTruncate);
DWORD nom;
nom = file.GetLength();
nom = nom / 30;
file.Close();
for(i=0;i<int(nom);i++)
{
ChtenieZap(i);
init_ind(i,num);
if (num != "")
{
fact_kol++;
pr = 1;
}
}
init_kol(nom);
return;
}
void CAct::Sozdanie()//запись в файл и коррект. инд. массива
{
int nom;
nom = dob_ind(num);
ZapisZap(nom);
return;
}
void CAct::ChtenieZap(int nomer)
{
CFile file(ActFile, CFile::modeRead | CFile::modeNoTruncate);
char buf[10];
try
{
file.Seek(nomer * 30,CFile::begin);
file.Read(buf,10);
num = CString(buf);
file.Read(buf,10);
code = CString(buf);
file.Read(buf,10);
count = CString(buf);
}
catch (CFileException *e)
{
char pMsg[255];
if(e->GetErrorMessage(pMsg,
AfxMessageBox(pMsg);
}
file.Close();
return;
}
void CAct::ZapisZap(int nomer)
{
CFile file(ActFile, CFile::modeWrite|CFile::
try
{
file.Seek(nomer * 30,CFile::begin);
file.Write(LPCTSTR(num),10);
file.Write(LPCTSTR(code),10);
file.Write(LPCTSTR(count),10);
}
catch (CFileException *e)
{
char pMsg[255];
if(e->GetErrorMessage(pMsg,
AfxMessageBox(pMsg);
}
file.Close();
return;
}
Файл кодов Act.h
#ifndef act_hpp
#define act_hpp
#include "Index.h"
class CAct : public CIndex
{
public:
CString num;
CString code;
CString count;
public:
void ZapisZap(int nomer);
void ChtenieZap(int nomer);
void Sozdanie();
void Init();
void Udalenie(int nomer);
void Zamena(int nomer);
CAct();
virtual ~CAct();
};
#endif
ActAddDlg.cpp
// ActAddDlg.cpp : implementation file
//
#include "stdafx.h"
#include "1.h"
#include "ActAddDlg.h"
#include "afxdialogex.h"
// CActAddDlg dialog
IMPLEMENT_DYNAMIC(CActAddDlg, CDialog)
CActAddDlg::CActAddDlg(CWnd* pParent /*=NULL*/)
: CDialog(CActAddDlg::IDD, pParent)
, m_strCode(_T(""))
, m_strCount(_T(""))
, m_strTabnum(_T(""))
{
}
CActAddDlg::~CActAddDlg()
{
}
void CActAddDlg::DoDataExchange(
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_CODE, m_strCode);
DDX_Text(pDX, IDC_COUNT, m_strCount);
DDX_Text(pDX, IDC_TABNUM, m_strTabnum);
}
BEGIN_MESSAGE_MAP(CActAddDlg, CDialog)
ON_BN_CLICKED(IDOK, &CActAddDlg::OnBnClickedOk)
END_MESSAGE_MAP()
// CActAddDlg message handlers
void CActAddDlg::OnBnClickedOk()
{
if (CheckInput())
{
Input(base);//ввод с клавиатуры в текст. поля диалог. окна
base.Sozdanie();//запись в файл и коррект. инд. массива
ClearForm();//очистка формы документа
}
}
void CActAddDlg::Input(CAct &base)//ввод с клавиатуры
{
UpdateData(TRUE);//заносит в перем. знач. текст. полей
base.num = m_strTabnum;
base.code = m_strCode;
base.count = m_strCount;
}
void CActAddDlg::ClearForm()//
{
m_strTabnum = "";
m_strCode = "";
m_strCount = "";
UpdateData(FALSE);
}
BOOL CActAddDlg::CheckInput()//
{
UpdateData(TRUE);
if(m_strTabnum=="")
{
MessageBox("Введите Таб. номер", "Ошибка ввода",
MB_ICONEXCLAMATION);
return FALSE;
}
if (m_strCode=="")
{
MessageBox("Введите код детали","Ошибка ввода",
MB_ICONEXCLAMATION);
return FALSE;
}
if (m_strCount=="")
{
MessageBox("Введите количество деталей","Ошибка ввода",
MB_ICONEXCLAMATION);
return FALSE;
}
return TRUE;
}
Файл кодов ActAddDlg.h
#pragma once
#include "Act.h"
// CActAddDlg dialog
class CActAddDlg : public CDialog
{
DECLARE_DYNAMIC(CActAddDlg)
public:
CActAddDlg(CWnd* pParent = NULL); // standard constructor
virtual ~CActAddDlg();
CAct base;
BOOL CheckInput();//проверка ввода
void ClearForm();//очистка формы документа
void Input(CAct &base);//ввод данных с клавиатуры
// Dialog Data
enum { IDD = IDD_ACTADDDLG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedOk();
afx_msg void OnBnClickedCancel();
CString m_strCode;
CString m_strCount;
CString m_strTabnum;
};
Файл кодов ActSearchDlg.cpp
// ActSearchDlg.cpp : implementation file
//
#include "stdafx.h"
#include "1.h"
#include "ActSearchDlg.h"
#include "afxdialogex.h"
extern int ActMode;
// CActSearchDlg dialog
IMPLEMENT_DYNAMIC(
CActSearchDlg::CActSearchDlg(
: CDialog(CActSearchDlg::IDD, pParent)
, m_strTabnSearch(_T(""))
, m_strCode(_T(""))
, m_strCount(_T(""))
, m_strTabnum(_T(""))
, m_strTabnsearch(_T(""))
{
}
CActSearchDlg::~CActSearchDlg(
{
}
int ind,nomer;
void CActSearchDlg::DoDataExchange(
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_SEARCH, m_ctrlSearch);
DDX_Text(pDX, IDC_CODE, m_strCode);
DDX_Text(pDX, IDC_COUNT, m_strCount);
DDX_Text(pDX, IDC_TABNUM, m_strTabnum);
DDX_Text(pDX, IDC_TABNSEARCH, m_strTabnsearch);
}
BEGIN_MESSAGE_MAP(
ON_BN_CLICKED(IDC_SEARCH,
&CActSearchDlg::
ON_BN_CLICKED(IDC_NEXT,
&CActSearchDlg::
ON_BN_CLICKED(IDC_EDITDELETE,
&CActSearchDlg::
END_MESSAGE_MAP()
// CActSearchDlg message handlers
void CActSearchDlg::
{
ind = 1;
nomer = 0;
UpdateData(TRUE);
if(m_strTabnsearch == "")
{
MessageBox("Введите Таб. номер-поиск","Ошибка ввода",MB_ICONEXCLAMATION);
return;
}
nomer = base.poisk_ind(m_
if (nomer != -1)
{
base.ChtenieZap(nomer);
m_strTabnum = base.num;
m_strCode = base.code;
m_strCount = base.count;
UpdateData(FALSE);
GetDlgItem(IDC_TABNUM)->
GetDlgItem(IDC_CODE)->
GetDlgItem(IDC_COUNT)->
GetDlgItem(IDC_EDITDELETE)->
}
else
{
MessageBox("Запись не найдена","Ошибка",MB_
ind = 0;
nomer = 0;
//n = 0;
ClearForm();
return;
}
}
void CActSearchDlg::
{
/*ind = base.poisk_ind(m_
if (ind!=-1)
{
base.ChtenieZap(nomer);
Output(base);
ind++;
}
else
{
MessageBox("Запись не найдена","Ошибка",
MB_ICONEXCLAMATION);
ind=0;
ClearForm();
GetDlgItem(IDC_NEXT)->
GetDlgItem(IDC_EDITDELETE)->
return; //блокировка кнопки
} */
}
void CActSearchDlg::
{
if (ActMode == 2)
{
int rez;
rez=MessageBox("Корректировать запись?","Корректировка",MB_
if (rez==IDCANCEL)
return;
Input(base);
if (!CheckInput())
return;
base.Zamena(nomer);
ClearForm();
GetDlgItem(IDC_EDITDELETE)->
ind=0;
nomer=0;
}
if (ActMode==3)
{
int rez;
rez=MessageBox("Удалить запись?","Удаление",MB_
if (rez==IDCANCEL)
return;
base.Udalenie(nomer);
ClearForm();
GetDlgItem(IDC_EDITDELETE)->
ind=0;
nomer=0;
}
}
BOOL CActSearchDlg::OnInitDialog()
{
CDialog::OnInitDialog();
GetDlgItem(IDC_TABNUM)->
GetDlgItem(IDC_CODE)->
GetDlgItem(IDC_COUNT)->
if (ActMode==3)
m_ctrlSearch.SetWindowText("
if (ActMode==1) //строковую константу
GetDlgItem(IDC_EDITDELETE)->
if ((ActMode==2)||(ActMode==3))//
GetDlgItem(IDC_EDITDELETE)->
return TRUE; // return TRUE unless you set the focus to a control
}
void CActSearchDlg::Output(CAct &base)
{
/*base.Init();
ind=0;
nomer=0;
m_strTabn = base.Tabn;
m_strRazrjad=base.Razrjad;
m_strVidrab=base.VidRab;
m_strObjem=base.Objem;
UpdateData(FALSE);*/
}
void CActSearchDlg::Input(CAct &base)
{
UpdateData(TRUE);
base.num = m_strTabnum;
base.code = m_strCode;
base.count = m_strCount;
}
void CActSearchDlg::ClearForm()
{
m_strTabnSearch = "";
m_strTabnum = "";
m_strCode = "";
m_strCount = "";
UpdateData(FALSE);
}
BOOL CActSearchDlg::CheckInput()
{
UpdateData(TRUE);
if(m_strTabnum == "")
{
MessageBox("Введите Таб. номер", "Ошибка ввода",MB_ICONEXCLAMATION);
return FALSE;
}
if (m_strCode == "")
{
MessageBox("Введите код детали","Ошибка ввода",MB_ICONEXCLAMATION);
return FALSE;
}
if (m_strCount == "")
{
MessageBox("Введите количество деталей","Ошибка ввода",MB_ICONEXCLAMATION);
return FALSE;
}
return TRUE;
}
Файл кодов ActSearchDlg.h
#pragma once
#include "afxwin.h"
#include "Act.h"
// CActSearchDlg dialog
class CActSearchDlg : public CDialog
{
DECLARE_DYNAMIC(CActSearchDlg)
public:
CActSearchDlg(CWnd* pParent = NULL); // standard constructor
virtual ~CActSearchDlg();
public:
CAct base;
int ind;
int nomer;
void Output(CAct &base);
void Input(CAct &base);
void ClearForm();
BOOL CheckInput();
// Dialog Data
enum { IDD = IDD_SEARCHACTDLG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedSearch();
afx_msg void OnBnClickedNext();
afx_msg void OnBnClickedEditdelete();
CString m_strTabn;
CString m_strObjem;
CString m_strRazrjad;
CString m_strVidrab;
CString m_strTabnSearch;
CButton m_ctrlSearch;
virtual BOOL OnInitDialog();
CString m_strCode;
CString m_strCount;
CString m_strTabnum;
CString m_strTabnsearch;
};
Файл кодов ActViewDlg.cpp
// ActViewDlg.cpp: файл реализации
//
#include "stdafx.h"
#include "1.h"
#include "ActViewDlg.h"
#include "afxdialogex.h"
// диалоговое окно CActViewDlg
IMPLEMENT_DYNAMIC(CActViewDlg, CDialog)
CActViewDlg::CActViewDlg(CWnd* pParent /*=NULL*/)
: CDialog(CActViewDlg::IDD, pParent)
, m_strCode(_T(""))
, m_strCount(_T(""))
, m_strTabnum(_T(""))
{
}
CActViewDlg::~CActViewDlg()
{
}
void CActViewDlg::DoDataExchange(
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_CODE, m_strCode);
DDX_Text(pDX, IDC_COUNT, m_strCount);
DDX_Text(pDX, IDC_TABNUM, m_strTabnum);
}
BEGIN_MESSAGE_MAP(CActViewDlg, CDialog)
ON_BN_CLICKED(IDC_NACH, &CActViewDlg::OnBnClickedNach)
ON_BN_CLICKED(IDC_PREV, &CActViewDlg::OnBnClickedPrev)
ON_BN_CLICKED(IDC_NEXT, &CActViewDlg::OnBnClickedNext)
ON_BN_CLICKED(IDC_KONEC,
&CActViewDlg::
END_MESSAGE_MAP()
// обработчики сообщений CActViewDlg
void CActViewDlg::OnBnClickedNach()
{
int i=0;
fact_number=1;
do
{
base.ChtenieZap(i);
curr_rec_number=i;
i++;
}
while (base.num=="");
Output(base);
UpdateData(FALSE);
}
void CActViewDlg::OnBnClickedPrev()
{
int prev=curr_rec_number;
int prev_fact=fact_number;
int i=curr_rec_number-1;
do
{
if (i==-1)
{
curr_rec_number=-1;
break;
}
base.ChtenieZap(i);
if (base.num!="")
fact_number--;
curr_rec_number=i;
i--;
}
while (base.num=="");
if ((curr_rec_number==-1) || (fact_number<1))
{
MessageBox("Начало файла", "Ошибка",
MB_ICONEXCLAMATION);
curr_rec_number=prev;
fact_number=prev_fact;
}
else
{
base.ChtenieZap(curr_rec_
Output(base);
UpdateData(FALSE);
}
}
void CActViewDlg::OnBnClickedNext()
{
int prev=curr_rec_number;
int prev_fact=fact_number;
int i=curr_rec_number+1;
do
{
base.ChtenieZap(i);
if (base.num!="")
fact_number++;
curr_rec_number=i;
i++;
}
while (base.num=="");
if (curr_rec_number>=base.kol)
{
MessageBox("Конец файла","Ошибка",
MB_ICONEXCLAMATION);
curr_rec_number=prev;
fact_number=prev_fact;
}
else
{
base.ChtenieZap(curr_rec_
Output(base);
UpdateData(FALSE);
}
}
void CActViewDlg::OnBnClickedKonec(
{
int last_rec_number=-1;
for (int i=0;i<base.kol;i++)
{
base.ChtenieZap(i);
if (base.num!="")
last_rec_number=i;
}
base.ChtenieZap(last_rec_
Output(base);
curr_rec_number=base.kol-1;
fact_number=base.fact_kol;
UpdateData(FALSE);
}
BOOL CActViewDlg::OnInitDialog()
{
base.Init();
curr_rec_number=0;
fact_number=-1;
CDialog::OnInitDialog();
if (base.fact_kol==0)
{
MessageBox("Файл пуст", "Ошибка", MB_ICONEXCLAMATION);
EndDialog(1);
}
else
{
fact_number=1;
int i=0;
do
{
base.ChtenieZap(i);
curr_rec_number=i;
i++;
}
while (base.num=="");
Output(base);
UpdateData(FALSE);
}
return TRUE;
}
void CActViewDlg::Output(CAct &base)//вывод данных
{
m_strTabnum=base.num; //присваивание знач. полей записи
m_strCode=base.code;
m_strCount=base.count;
UpdateData(FALSE);//вывод в текст. поля знач. перем.
}
Файл кодов ActViewDlg.h
#pragma once
#include "Act.h"
// диалоговое окно CActViewDlg
class CActViewDlg : public CDialog
{
DECLARE_DYNAMIC(CActViewDlg)
public:
CActViewDlg(CWnd* pParent = NULL); // стандартный конструктор
virtual ~CActViewDlg();
CAct base;
int ind;
int nomer;
void Input(CAct &base);
void ClearForm();
BOOL CheckInput();
int curr_rec_number;
int fact_number;
void Output(CAct &base);
// Данные диалогового окна
enum { IDD = IDD_ACTVIEWDLG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // поддержка DDX/DDV
DECLARE_MESSAGE_MAP()
public:
CString m_strCode;
CString m_strCount;
CString m_strTabnum;
afx_msg void OnBnClickedNach();
afx_msg void OnBnClickedPrev();
afx_msg void OnBnClickedNext();
afx_msg void OnBnClickedKonec();
virtual BOOL OnInitDialog();
};
Файл кодов Detail.cpp
#include "stdafx.h"
#include "1.h"
#include "Detail.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
extern CString DetailFile;
CDetail::CDetail()
{
fact_kol = 0;
fio = "";
num = "";
code = "";
count = "";
}
CDetail::~CDetail()
{
}
void CDetail::ZapisZap(int nomer)
{
CFile file(DetailFile,
CFile::modeWrite|CFile::
CFile::modeNoTruncate);
try
{
file.Seek(nomer*40,CFile::
file.Write(LPCTSTR(num),10);
file.Write(LPCTSTR(fio),10);
file.Write(LPCTSTR(code),10);
file.Write(LPCTSTR(count),10);
}
catch (CFileException *e)
{
char pMsg[255];
if(e->GetErrorMessage(pMsg,
AfxMessageBox(pMsg);
}
file.Close();
return;
}
void CDetail::ChtenieZap(int nomer)
{
CFile file(DetailFile, CFile::modeRead | CFile::modeNoTruncate);
char buf[10];
try
{
file.Seek(nomer * 40,CFile::begin);
file.Read(buf,10);
num = CString(buf);
file.Read(buf,10);
fio = CString(buf);
file.Read(buf,10);
code = CString(buf);
file.Read(buf,10);
count = CString(buf);
Информация о работе Разработка списка рабочих, имеющих брак при изготовлении деталей