Высокоуровневые методы информатики и программирования

Автор работы: Пользователь скрыл имя, 24 Декабря 2010 в 15:49, курсовая работа

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

Имеется полная применяемость деталей в изделиях: код изделия, код детали, наименование, количество деталей в одном изделии. Имеется план выпуска изделий: код изделия, наименование, количество. Рассчитать комплектовочную ведомость на изделие, задаваемое по запросу.

Содержание работы

Условия и постановка задачи……..………….………………………………………3
Распечатки листингов основных файлов:
Класс CIndex…………………………………………………….......…………..4
Класс CKodd………………………………………………………………………5
Класс CKodd…………………………………………………………………….8
Класс CFilesDlg……………………………………………………….….……10
Класс CKoddDobDlg…………………………………………….………………12
Класс CKoddProsm…………………………………………….………………...15
Класс CKoddPoisk…………………………………………….……...………….19
Класс CKolvoDobDlg…………………………………………………………...24
Класс CKolvoProsm…………………………………………………………….26
Класс CKolvoPoisk………………………………….…………………………..30
Класс CVedomDlg……………………………………………………………...34
Контрольный пример…………………………………………..……………………38

Содержимое работы - 1 файл

!КУРСАЧ.doc

— 271.50 Кб (Скачать файл)

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line. 

#endif // !defined(AFX_KoddPROSM_H__38BA11D1_50D3_46D4_AA02_59FD724F58B2__INCLUDED_) 
 

Файл кодов KoddProsm.cpp

// KoddProsm.cpp : implementation file

// 

#include "stdafx.h"

#include "Kurs.h"

#include "KoddProsm.h" 
 
 

/////////////////////////////////////////////////////////////////////////////

// CKoddProsm dialog

IMPLEMENT_DYNAMIC(CKoddProsm, CDialog) 

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

      : CDialog(CKoddProsm::IDD, pParent)

      //{{AFX_DATA_INIT(CKoddProsm)

, m_strNumKodd(_T(""))

,   m_strKolvod(_T(""))

,   m_strKod(_T(""))

,   m_strNaim(_T(""))

,   m_strNumber(_T(""))

{

  base.Init(); //вызов Init в конструкторе класса CKoddProsm

  curr_rec_number=0; //ирициализ. текущего номера записи и

  fact_number=-1; //инициализ. фактич. номера не пустой записи

}   //в конструкторе класса CAktProsm 

      //}}AFX_DATA_INIT 

CKoddProsm::~CKoddProsm()

{ 

} 

void CKoddProsm::DoDataExchange(CDataExchange* pDX)

{

      CDialog::DoDataExchange(pDX);

      //{{AFX_DATA_MAP(CCehProsm)

      DDX_Text(pDX, IDC_NUMKodd, m_strNumKodd);

      DDX_Text(pDX, IDC_Kolvod, m_strKolvod);

      DDX_Text(pDX, IDC_KOD, m_strKod);

      DDX_Text(pDX, IDC_Naim, m_strNaim);

      DDX_Text(pDX, IDC_STATIC_NUMBER, m_strNumber);

      //}}AFX_DATA_MAP

} 
 

BEGIN_MESSAGE_MAP(CKoddProsm, CDialog)

      //{{AFX_MSG_MAP(CCehProsm)

      ON_BN_CLICKED(IDC_KoddPROSM_NACH, OnKoddprosmNach)

      ON_BN_CLICKED(IDC_KoddPROSM_PRED, OnKoddprosmPred)

      ON_BN_CLICKED(IDC_KoddPROSM_SLED, OnKoddprosmSled)

      ON_BN_CLICKED(IDC_KoddPROSM_KONEC, OnKoddprosmKonec)

      //}}AFX_MSG_MAP

      ON_BN_CLICKED(IDOK, &CKoddProsm::OnBnClickedOk)

END_MESSAGE_MAP() 

/////////////////////////////////////////////////////////////////////////////

// CKoddProsm message handlers 

void CKoddProsm::OnKoddprosmNach()

{

      // TODO: Add your control notification handler code here

  int i=0;

  fact_number=1; //инициализ. фактич. номера не пустой записи

  do //цикл нахождения начальной не пустой записи

  {

    base.ChtenieZap(i);

    curr_rec_number=i;

    i++;

  }

  while (base.NumKodd=="");

  Output(base); // вывод начальной записи в текст. поля

  CString rec_number;

  rec_number.Format("Запись 1 из %d",base.fact_kol); // преобраз.

  m_strNumber=rec_number; //fact_kol из целого (d) в текст

  UpdateData(FALSE); //значение m_strNumber - в текст. поле 

} 

void CKoddProsm::OnKoddprosmPred()

{

      // TODO: Add your control notification handler code here

        int prev=curr_rec_number; //значения текущих переменных

  int prev_fact=fact_number; //запоминаются в локальных перем.

  int i=curr_rec_number-1; //i-текущий номер предыдущей записи

  do //цикл нахождения предыдущей не пустой записи

  {

    if (i==-1)

    {

      curr_rec_number=-1;

      break;

    }

    base.ChtenieZap(i);

    if (base.NumKodd!="")

      fact_number--;

    curr_rec_number=i;

    i--;

  }

  while (base.NumKodd=="");

  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); //вывод предыдущей записи в текст. поля

    CString rec_number;

    rec_number.Format("Запись %d из %d", fact_number, //преоб-раз.

    base.fact_kol); //fact_number и fact_kol из целых (d) в тексты

    m_strNumber=rec_number;

    UpdateData(FALSE); //значение m_strNumber - в текст. поле

  } 

} 

void CKoddProsm::OnKoddprosmSled()

{

      // TODO: Add your control notification handler code here

        int prev=curr_rec_number; //значения текущих переменных

  int prev_fact=fact_number; //запоминаются в локальных перем.

  int i=curr_rec_number+1; //i - текущий номер следующей записи

  do //цикл нахождения следующей не пустой записи

  {

    base.ChtenieZap(i);

    if (base.NumKodd!="")

      fact_number++;

    curr_rec_number=i;

    i++;

  }

  while (base.NumKodd=="");

  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); //вывод следующей записи в текст. поля

    CString rec_number;

  rec_number.Format("Запись %d из %d",fact_number, //преоб-раз.

    base.fact_kol); //fact_number и fact_kol из целых (d) в тексты

  m_strNumber=rec_number;

    UpdateData(FALSE); //значение m_strNumber - в текст. поле

  } 

} 

void CKoddProsm::OnKoddprosmKonec()

{

      // TODO: Add your control notification handler code here

        int last_rec_number=-1; //номер последней записи

  for (int i=0;i<base.kol;i++) //цикл чтения всех записей кроме

  {  //последней, т.е. нахождение последней записи

    base.ChtenieZap(i);

    if (base.NumKodd!="")

      last_rec_number=i;

  }

  base.ChtenieZap(last_rec_number);

  Output(base); //вывод последней записи в текст. поля

  CString rec_number;

  rec_number.Format("Запись %d из %d", base.fact_kol, //преоб-раз.

  base.fact_kol); //fact_kol и fact_kol из целых (d) в тексты

  m_strNumber=rec_number;

  curr_rec_number=base.kol-1;

  fact_number=base.fact_kol;

  UpdateData(FALSE); //значение m_strNumber - в текст. поле 

} 

void CKoddProsm::OnOK()

{

      // TODO: Add extra validation here 

      CDialog::OnOK();

} 

BOOL CKoddProsm::OnInitDialog()

{

      CDialog::OnInitDialog(); 

      // TODO: Add extra initialization here

          if (base.fact_kol==0)

  {

    MessageBox("Файл пуст",

"Ошибка",MB_ICONEXCLAMATION);

    EndDialog(1);

  }

  else

  {

    fact_number=1;

    int i=0;

Информация о работе Высокоуровневые методы информатики и программирования