Высокоуровневые методы информатики и программирования
Федеральное
агентство по образованию
Государственное образовательное учреждение высшего
профессионального образования
Санкт-Петербургский государственный
инженерно-экономический
университет
Кафедра
вычислительных систем и программирования
Курсовая работа по дисциплине
ВЫСОКОУРОВНЕВЫЕ МЕТОДЫ
ИНФОРМАТИКИ
И ПРОГРАММИРОВАНИЯ
Специальность
230201 - Информационные системы и технологии
Выполнил:
Проверил:
проф. Павлов
Ф.Ф.
г. Санкт-Петербург
2009
Содержание:
Условия и постановка
задачи……..………….………………………………………
Распечатки листингов основных файлов:
Класс
CIndex……………………………………………………....
Класс
CKodd…………………………………………………………………
Класс
CKodd…………………………………………………………………
Класс
CFilesDlg………………………………………………………
Класс
CKoddDobDlg…………………………………………….…
Класс
CKoddProsm…………………………………………….……
Класс
CKoddPoisk…………………………………………….……
Класс
CKolvoDobDlg………………………………………………
Класс
CKolvoProsm…………………………………………………
Класс
CKolvoPoisk………………………………….……………
Класс
CVedomDlg………………………………………………………
Контрольный пример…………………………………………..………………
Условия
задачи
Имеется
полная применяемость деталей в
изделиях: код изделия, код детали,
наименование, количество деталей в
одном изделии. Имеется план выпуска
изделий: код изделия, наименование,
количество. Рассчитать комплектовочную
ведомость на изделие, задаваемое по запросу.
Постановка
задачи
Постановка задачи заключается в разработке технического задания, содержащего следующие разделы:
1)
Наименование и краткая
Разработать систему учета и отчетности выполнения комлектовочных деталей. Учет выполнения работы изделием фиксируется в исходном документе «Изделия». План выпуска содержатся в исходном документе «План». Отчет о всех выполненных выпусках изделий в целом за месяц определяется в результирующем документе «Ведомость».
2) Требования к функциональным характеристикам
Система должна обеспечить выполнение следующих функций:
- для исходных документов («Изделия», «План») – ввод, просмотр, поиск, замена, удаление информации (хранение в базе данных);
- для результирующего документа - только расчет «Ведомости».
Исходные данные: для документа «Изделия» - код детали, код изделия, наименование, кол-во деталей; для документа «План» - код изделия, кол-во, наименование.
Результатные данные: для документа «Ведомости» - Код детали, код изделия, наименование, кол-во деталей, кол-во изделий, комплектовочная сводка.
3)
Требования к техническим
4) Технологические требования:
- архитектура - однопользовательская, класс – программная система;
- пользовательский интерфейс – это интерфейс-меню и интерфейс со свободной навигацией (диалоговые окна с кнопочным меню и компонентами ввода/вывода);
- метод программирования – объектно-ориентированный; язык программирования – Visual C++ 8;
- среда программирования – Visual C++ платформы Visual Studio .NET 2005.
Класс
CIndex
Файл заголовков Index.h
#ifndef index_h
#define index_h
#include <string.h>
const int max_mass=1000;
class Cindex //определение базового класса
{
public:
int kol; //общее кличество записей файла
int fact_kol; //количество заполненных записей
private:
struct tip_index
{
CString kluch;
int nomer;
} index[max_mass];
public:
Cindex();
~Cindex();
int razm_zap;
void init_ind(int,CString);
void init_kol(int);
int dob_ind(CString);
int poisk_ind(CString,int,int&);
void cor_ind(int,CString);
};
#endif
Файл кодов Index.cpp
#include "stdafx.h"
#include "Kurs.h"
#include "Index.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
Cindex::Cindex()
{
}
Cindex::~Cindex()
{
}
void Cindex::init_ind(int i,CString kl)
{
index[i].kluch=kl;
index[i].nomer=i;
return;
}
void Cindex::init_kol(int k)
{
kol=k;
}
int Cindex::dob_ind(CString kl)
{
int nom;
for (int i=0;i<kol;i++)
if (index[i].kluch=="")
{
index[i].kluch=kl;
return(index[i].nomer);
}
index[kol].kluch=kl;
index[kol].nomer=kol;
nom=kol;
kol++;
return(nom);
}
int Cindex::poisk_ind(CString kl,int i,int& nomer)
{
while (i<kol)
{
if (index[i].kluch!="")
{
if (kl==index[i].kluch)
{
nomer=index[i].nomer;
return(i);
}
}
i++;
}
return(-1);
}
void Cindex::cor_ind(int i,CString kl)
{
index[i].kluch=kl;
return;
}
Класс
CKodd
Файл заголовков Kodd.h
#ifndef Kodd_h
#define Kodd_h
#include "Index.h"
class CKodd : public Cindex
{
public:
CString NumKodd; //10 байтов
CString Kod; //10 байтов
CString Naim; //10 байтов
CString Kolvod; //10 байтов
public:
void ZapisZap(int nomer);//запись записи в файл
void ChtenieZap(int nomer);//чтение записи из файла
void Sozdanie();//добавление новой записи
void Init(); //создание индексного массива
void Udalenie(int nomer);//удаление записи
void Zamena(int nomer);//замена записи
CKodd();
virtual ~CKodd();
};
#endif
Файл кодов Kodd.cpp
#include "stdafx.h"
#include "Kurs.h"
#include "Kodd.h"
extern CString KoddFile; //объявл. переменной имени файла
CKodd::CKodd()
{
NumKodd="";
Kod="";
Naim="";
Kolvod="";
fact_kol=0;
}
CKodd::~CKodd()
{
}
void CKodd::Zamena(int nomer)
{
ZapisZap(nomer);
cor_ind(nomer,NumKodd);
}
void CKodd::Udalenie(int nomer)
{
NumKodd="";
ZapisZap(nomer);
cor_ind(nomer,NumKodd);
}
void CKodd::Init() //создание индексного массива
{
int pr=0; //признак пустого файла
int i=0; //открытие на чтение или создание нового файла
CFile file(KoddFile, CFile::modeRead|CFile::
modeNoTruncate);//если файл сущ.,его содержимое не усекается
DWORD nom; //32-битовое целое без знака
nom=file.GetLength(); //получение длины файла
nom=nom/40; //nom-количество записей, 35-размер записи
file.Close();
for(i=0;i<int(nom);i++)
{
ChtenieZap(i); //чтение записи
init_ind(i,NumKodd); //корректировка элемента индексного массива
if (NumKodd!="")
{
fact_kol++;
pr=1; //признак не пустого файла
}
}
init_kol(nom);
return;
}
void CKodd::Sozdanie()//запись в файл и коррект. индексного масси-ва
{
int nom;
nom=dob_ind(NumKodd);//поиск в инд. массиве номера пустой записи
ZapisZap(nom); //запись записи в файл
return;
}
void CKodd::ChtenieZap(int nomer)//чтение записи из файла
{ //открытие на чтение
CFile file(KoddFile, CFile::modeRead | CFile::modeNoTruncate);
char buf[10]; //если файл сущ.,его содержимое не усекается
try //обработка исключений
{
file.Seek(nomer*40,CFile::
file.Read(buf,10);
NumKodd=CString(buf);
file.Read(buf,10);
Kod=CString(buf);
file.Read(buf,10);
Naim=CString(buf);
file.Read(buf,10);
Kolvod=CString(buf);
}
catch (CFileException *e) //обработка ошибок работы с файлом
{
char pMsg[255];
if(e->GetErrorMessage(pMsg,
AfxMessageBox(pMsg); //глоб. функция вывода сообщения
}
file.Close();
return;
}
void CKodd::ZapisZap(int nomer) //запись записи в файл
{
CFile file(KoddFile, CFile::modeWrite|CFile::
CFile:: modeNoTruncate);
try
{
file.Seek(nomer*40,CFile::
file.Write(LPCTSTR(NumKodd),
file.Write(LPCTSTR(Kod),10);
file.Write(LPCTSTR(Naim),10);
file.Write(LPCTSTR(Kolvod),10)
}
catch (CFileException *e)
{
char pMsg[255];
if(e->GetErrorMessage(pMsg,
AfxMessageBox(pMsg);
}
file.Close();
return;
}
Класс
CKolvo
Файл заголовков Kolvo.h
//Файл Kolvo.h
#ifndef Kolvo_h
#define Kolvo_h
#include "Index.h"
class CKolvo : public Cindex
{
public:
CString Kod; //5 байтов
CString Kolvo; //10 байтов
CString Naim2; //10 байтов
public:
void Udalenie(int nomer);
void Zamena(int nomer);
void Init();
void Sozdanie();
void ChtenieZap(int nomer);
void ZapisZap(int nomer);
CKolvo();
virtual ~CKolvo();
};
#endif
Файл кодов Kolvo.cpp
//Файл Kolvo.cpp
#include "stdafx.h"
#include "Kurs.h"
#include "Kolvo.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
extern CString KolvoFile;
CKolvo::CKolvo()
{
Kod="";
Kolvo="";
Naim2="";
fact_kol=0;
}
CKolvo::~CKolvo()
{
}
void CKolvo::ZapisZap(int nomer)
{
CFile file(KolvoFile, CFile::modeWrite|CFile::
CFile::modeNoTruncate);
try
{
file.Seek(nomer*25,CFile::
file.Write(LPCTSTR(Kod),5);
file.Write(LPCTSTR(Kolvo),10);
file.Write(LPCTSTR(
}
catch (CFileException *e)
{
char pMsg[255];
if(e->GetErrorMessage(pMsg,
AfxMessageBox(pMsg);
}
file.Close();
return;
}
void CKolvo::ChtenieZap(int nomer)
{
CFile file(KolvoFile, CFile::modeRead | CFile::modeNoTruncate);
char buf[10];
try
{
file.Seek(nomer*25,CFile::
file.Read(buf,5);
Kod=CString(buf);
file.Read(buf,10);
Kolvo=CString(buf);
file.Read(buf,10);
Naim2=CString(buf);
}
catch (CFileException *e)
{
char pMsg[255];
if(e->GetErrorMessage(pMsg,
AfxMessageBox(pMsg);
}
file.Close();
return;
}
void CKolvo::Sozdanie()
{
int nom;
nom=dob_ind(Kod);
ZapisZap(nom);
return;
}
void CKolvo::Init()

- Высокоуровневые методы информатики и программирования
- Высокоуровневые методы программирования
- Высокоуровневые языки программирования
- Высокоуровневые языки программирования
- Высокочестотный генератор с внешним возбуждением
- Высокоэластическое состояние полимеров
- Высокоэффективная жидкостная хроматография
- Высокопрочный гипс
- Высокотемпературная конверсия метана
- Высокотемпературная сверхпроводимость
- Высокотемпературные Сверхпроводники
- Высокоточное оружие
- Высокоточные приборы
- Высокоуровневые методы информатики и програмирования