Автор работы: Пользователь скрыл имя, 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
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual
C++ will insert additional declarations immediately before the previous
line.
#endif //
!defined(AFX_KoddPROSM_H__
Файл кодов 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(
, 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(
{
CDialog::DoDataExchange(
//{{AFX_DATA_MAP(
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(
ON_BN_CLICKED(IDC_
ON_BN_CLICKED(IDC_
ON_BN_CLICKED(IDC_
ON_BN_CLICKED(IDC_
//}}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_
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_
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_
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;
Информация о работе Высокоуровневые методы информатики и программирования