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

 
 

Федеральное агентство по образованию 

Государственное образовательное учреждение высшего 

профессионального образования

Санкт-Петербургский  государственный

инженерно-экономический  университет 

Кафедра вычислительных систем и программирования 
 
 
 
 
 

Курсовая работа по дисциплине

ВЫСОКОУРОВНЕВЫЕ МЕТОДЫ

ИНФОРМАТИКИ И  ПРОГРАММИРОВАНИЯ 
 
 
 

Специальность  230201 - Информационные системы и технологии 
 
 
 

Выполнил:

                                                                                                                                        группа 3671

Проверил:

проф. Павлов Ф.Ф. 
 
 
 
 
 
 
 
 
 
 
 
 

г. Санкт-Петербург

2009

Содержание: 

Условия и постановка задачи……..………….………………………………………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) Наименование и краткая характеристика  программы

      Разработать систему учета и отчетности выполнения комлектовочных деталей. Учет выполнения работы изделием фиксируется в исходном документе «Изделия». План выпуска содержатся в исходном документе «План». Отчет о всех выполненных выпусках изделий в целом за месяц определяется в результирующем документе «Ведомость».

      2) Требования к функциональным  характеристикам

      Система должна обеспечить выполнение следующих  функций:

    • для исходных документов («Изделия», «План») – ввод, просмотр, поиск, замена, удаление информации (хранение в базе данных);
    • для результирующего документа - только расчет «Ведомости».

      Исходные  данные: для документа «Изделия» - код детали, код изделия, наименование, кол-во деталей; для документа «План» - код изделия, кол-во, наименование.

      Результатные  данные: для документа «Ведомости» - Код детали, код изделия, наименование, кол-во деталей, кол-во изделий, комплектовочная сводка.

      3) Требования к техническим средствам  (минимальная конфигурация): компьютеры  – IBM PC, тип процессора – Pentium, объем оперативной памяти 32 Мб, операционная система семейства Win32.

      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::modeCreate |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::begin);

    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,255))//сообщение об исключении

    AfxMessageBox(pMsg); //глоб. функция вывода сообщения

  }

  file.Close();

  return;

}

void CKodd::ZapisZap(int nomer) //запись записи в файл

{

  CFile file(KoddFile, CFile::modeWrite|CFile::modeCreate|

CFile:: modeNoTruncate);

  try

  {

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

    file.Write(LPCTSTR(NumKodd),10);  //указатель строки

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

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

  CFile::modeNoTruncate);

  try

  {

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

    file.Write(LPCTSTR(Kod),5);

    file.Write(LPCTSTR(Kolvo),10);

      file.Write(LPCTSTR(Naim2),10);

  }

  catch (CFileException *e)

  {

    char pMsg[255];

    if(e->GetErrorMessage(pMsg,255))

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

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

    AfxMessageBox(pMsg);

  }

  file.Close();

  return;

}

void CKolvo::Sozdanie()

{

  int nom;

  nom=dob_ind(Kod);

  ZapisZap(nom);

  return;

}

void CKolvo::Init()