Разработка списка рабочих, имеющих брак при изготовлении деталей

Автор работы: Пользователь скрыл имя, 03 Сентября 2014 в 19:41, курсовая работа

Краткое описание

Целью курсового проекта является закрепление и обобщение знаний, полученных при изучении теоретического курса, приобретение практических навыков по программированию задач на объектно - ориентированном языке Visual C++ в среде разработки Visual Studio 2005 по дисциплине «Технологии и методы программирования».

Прикрепленные файлы: 1 файл

MINOBRNAUKI_ROSSII.docx

— 79.74 Кб (Скачать документ)

{

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(CPrintInfo* pInfo)

{

// 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()->ShowPopupMenu(IDR_POPUP_EDIT, point.x, point.y, this, TRUE);

#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(RUNTIME_CLASS(CMy1Doc)));

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_pDocument); }

#endif

 

Класс CAkt

Класс 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::modeCreate|

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,255))

AfxMessageBox(pMsg);

}

file.Close();

return;

}

void CAct::ZapisZap(int nomer)

{

CFile file(ActFile, CFile::modeWrite|CFile::modeCreate| CFile::modeNoTruncate);

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,255))

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(CDataExchange* pDX)

{

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, CDialog)

CActSearchDlg::CActSearchDlg(CWnd* pParent /*=NULL*/)

: 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(CDataExchange* pDX)

{

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(CActSearchDlg, CDialog)

ON_BN_CLICKED(IDC_SEARCH, &CActSearchDlg::OnBnClickedSearch)

ON_BN_CLICKED(IDC_NEXT, &CActSearchDlg::OnBnClickedNext)

ON_BN_CLICKED(IDC_EDITDELETE, &CActSearchDlg::OnBnClickedEditdelete)

END_MESSAGE_MAP()

// CActSearchDlg message handlers

void CActSearchDlg::OnBnClickedSearch()

{

ind = 1;

nomer = 0;

UpdateData(TRUE);

if(m_strTabnsearch == "")

{

MessageBox("Введите Таб. номер-поиск","Ошибка ввода",MB_ICONEXCLAMATION);

return;

}

nomer = base.poisk_ind(m_strTabnsearch, ind, nomer);

if (nomer != -1)

{

base.ChtenieZap(nomer);

m_strTabnum = base.num;

m_strCode = base.code;

m_strCount = base.count;

UpdateData(FALSE);

GetDlgItem(IDC_TABNUM)->EnableWindow(TRUE);//доступн.

GetDlgItem(IDC_CODE)->EnableWindow(TRUE);//управл.

GetDlgItem(IDC_COUNT)->EnableWindow(TRUE);

GetDlgItem(IDC_EDITDELETE)->EnableWindow(TRUE);

}

else

{

MessageBox("Запись не найдена","Ошибка",MB_ICONEXCLAMATION);

ind = 0;

nomer = 0;

//n = 0;

ClearForm();

return;

}

}

void CActSearchDlg::OnBnClickedNext()

{

/*ind = base.poisk_ind(m_strTabnSearch,ind,nomer);

if (ind!=-1)

{

base.ChtenieZap(nomer);

Output(base);

ind++;

}

else

{

MessageBox("Запись не найдена","Ошибка",

MB_ICONEXCLAMATION);

ind=0;

ClearForm();

GetDlgItem(IDC_NEXT)->EnableWindow(FALSE);

GetDlgItem(IDC_EDITDELETE)->EnableWindow(FALSE);

return; //блокировка кнопки

} */

}

 

 

void CActSearchDlg::OnBnClickedEditdelete()

{

if (ActMode == 2)

{

int rez;

rez=MessageBox("Корректировать запись?","Корректировка",MB_OKCANCEL | MB_ICONQUESTION);

if (rez==IDCANCEL)

return;

Input(base);

if (!CheckInput())

return;

base.Zamena(nomer);

ClearForm();

GetDlgItem(IDC_EDITDELETE)->EnableWindow(FALSE);

ind=0;

nomer=0;

}

if (ActMode==3)

{

int rez;

rez=MessageBox("Удалить запись?","Удаление",MB_OKCANCEL | MB_ICONQUESTION);

if (rez==IDCANCEL)

return;

base.Udalenie(nomer);

ClearForm();

GetDlgItem(IDC_EDITDELETE)->EnableWindow(FALSE);

ind=0;

nomer=0;

}

}

BOOL CActSearchDlg::OnInitDialog()

{

CDialog::OnInitDialog();

GetDlgItem(IDC_TABNUM)->EnableWindow(FALSE);//блокир.

GetDlgItem(IDC_CODE)->EnableWindow(FALSE);//управл.

GetDlgItem(IDC_COUNT)->EnableWindow(FALSE);

if (ActMode==3)

m_ctrlSearch.SetWindowText("Удаление");//присваив. кнопке

if (ActMode==1) //строковую константу

GetDlgItem(IDC_EDITDELETE)->ShowWindow(FALSE);

if ((ActMode==2)||(ActMode==3))//Show-отображ. окна

GetDlgItem(IDC_EDITDELETE)->EnableWindow(FALSE);

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(CDataExchange* pDX)

{

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::OnBnClickedKonec)

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_number);

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_number);

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_number);

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::modeCreate|

CFile::modeNoTruncate);

try

{

file.Seek(nomer*40,CFile::begin);

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,255))

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);

Информация о работе Разработка списка рабочих, имеющих брак при изготовлении деталей