Разработка программного комплекса по обработке заданного множества данных

Автор работы: Пользователь скрыл имя, 08 Октября 2013 в 11:39, курсовая работа

Описание работы

Курсовая работа содержит описание программного комплекса по обработке заданного множества данных. Множество данных представляет собой массив записей - спортсмены футбольной команды, со следующей информацией о спортсмене: фамилия (string); рост (integer); вес (real); амплуа: вратарь, защитник, полузащитник, нападающий.

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

Введение 3
1 Описание программного комплекса 4
1.1 Главный модуль head. Структура программы 4
1.2 Описание модуля unit1.cpp 5
1.2.1 Описание класса CSportmans 5
1.2.2 Описание классов CSportmansVr, CSportmansZ, CSportmansPZ, CSportmansN 6
1.3 Описание модуля unit2.cpp 7
2 Описание работы программы 12
2.1 Запрос на расчет 12
2.1 Запрос на сортировку 13
2.1 Запрос на поиск 14
Заключение 15
Список использованных источников 16
Приложение А 17
Приложение Б 19

Файлы: 1 файл

Отчет.doc

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

    float ves;

 

    // Имя класса

    char cname[20];

 

  public:

 

    CSportmans(); // Без параметров

    CSportmans(char*, int, float); // С параметрами

    CSportmans(char*); // Копирования

 

    virtual int KOL();

    void print();

    char* getname ();

    int getrost ();

    float getves ();

    char* get ();

    char* getclas();

    void set (char*);

    void setclas (char*);

};

 

int CSportmans::KOL()

{

  return 0;

};

 

 

 

char* CSportmans::getname ()

{

 

  return name;

};

 

 

int CSportmans::getrost ()

{

  return rost;

};

 

float CSportmans::getves ()

{

  return ves;

};

 

char* CSportmans::getclas ()

{

  return cname;

};

 

 

 

void CSportmans::setclas (char* s)

{

  strcpy(cname,s);

};

 

 

CSportmans::CSportmans(void)

{

  ves=0;

  rost=0;

  strcpy(name,"");

  strcpy (cname,"CSportmans");

};

 

 

class CSportmansVr : public CSportmans

{

  public:

 

  CSportmansVr(void) { setclas("Vr"); };

  int KOL(void) { return 1; };

};

 

 

 

class CSportmansZ : public CSportmans

{

  public:

   CSportmansZ(void) { setclas("Z"); };

   int KOL(void) { return 2; };

};

 

 

class CSportmansPZ : public CSportmans

{

  public:

   CSportmansPZ(void) { setclas("PZ"); };

   int KOL(void) { return 4; };

};

 

 

class CSportmansN : public CSportmans

{

  public:

   CSportmansN(void) { setclas("N"); };

   int KOL(void) { return 4; };

};

 

 

CSportmans *m[100];

int c=0;

 

CSportmans::CSportmans(char* fio, int r, float v)

{

  ves=v;

  rost=r;

  strcpy(name,fio);

  strcpy (cname,"CSportmans");

};

 

 

CSportmans::CSportmans(char* s)

{

  strcpy (cname,"CSportmans");

  set (s);

}

 

char* CSportmans::get()

{

  char a[70],s[70];

  int dec,sign;

 

  // Составляем символьную строку  из значений свойств

  strcpy(a,name);

  strcat(a,";");

  ltoa(rost,s,10);

  strcat(a,s);

  strcat(a,";");

  sprintf(s,"%3.2f",ves);

  strcat(a,s);

 

  char* my=a;

  while (*my)

  {

    if (*my=='.') *my=',';

    my++;

  };

 

  return a;

};

 

void CSportmans::print()

{

  cout.width(15);

  cout << name;

  cout.width(15);

  cout << rost;

  cout.width(15);

  cout.precision(2);

  cout << ves << endl;

};

 

void CSportmans::set(char* s)

{

  // Заменяем все запятые на  точки

  char* a=s;

  while (*a)

  {

    if (*a==',') *a='.';

    a++;

  };

 

  a=strstr(s,";");

  a[0]=0;

  strcpy(name,s);

  s=a+1;

 

  a=strstr(s,";");

  a[0]=0;

  rost=atoi(s);

  s=a+1;

 

  ves=atof(s);

};

 

 

 

Главный модуль unit2.cpp

 

 

 

// Предварительное описание

void menu_saw();

void free();

void menu_add();

 

 

void menu_from()

{

  free();

  menu_add();

};

 

 

void menu_saw()

{

  for (int i=0; i<c; i++) m[i]->print();

};

 

void menu_add()

{

  char a[255];

  puts ("ДОБАВИТЬ ИЗ ФАЙЛА: ");

  fflush(stdin);

  gets(a);

 

  FILE* f=fopen(a,"r");

 

  while (!feof(f))

  {

    if (!fgets(a,255,f)) break;

    int len=strlen(a);

    if (!a[0]||(len<5)) break;

    c++;

    int num=(int)(a[len-2]-'0');

    switch (num)

    {

      case 1: m[c-1]=new CSportmansVr; break;

      case 2: m[c-1]=new CSportmansZ; break;

      case 3: m[c-1]=new CSportmansPZ; break;

      case 4: m[c-1]=new CSportmansN; break;

    default:

      c--;

      fclose(f);

      return;

    };

 

    if (!m[c-1])

    {

      cout << "ОШИБКА ПАМЯТИ!" << endl;

      c--;

      fclose(f);

      return;

    };

 

    a[len-3]=0;

    m[c-1]->set(a);

  };

 

  fclose(f);

};

 

void menu_del()

{

    int num;

    cout << "УДАЛИТЬ № - ";

    cin >> num;

    num--;

    for (int i=num; i<c-1; i++) m[i]=m[i+1];

    c--;

};

 

void menu_to()

{

    char a[200];

    puts ("ЗАПИСАТЬ В: ");

    fflush(stdin);

    gets(a);

 

    FILE* f=fopen(a,"w+");

    for (int i=0; i<c; i++)

    {

      strcpy(a,m[i]->get());

      strcat(a,";");

      char s[200];

 

      int num=0;

      if (!strcmp(m[i]->getclas(),"Vr")) num=1;

      if (!strcmp(m[i]->getclas(),"Z")) num=2;

      if (!strcmp(m[i]->getclas(),"PZ")) num=3;

      if (!strcmp(m[i]->getclas(),"N")) num=4;

 

      itoa(num,s,10);

      strcat(a,s);

      fputs(a,f);

      fprintf(f,"\n");

    };

    fclose(f);

};

 

void menu_r1()

{

  cout << "Общее количество  спортсменов - ";

  cout << c << endl;

  cout << "По группам: " << endl;

 

  cout << "Вратари: " << endl;

  for (int i=0; i<c-1; i++)

    if (!strcmp(m[i]->getclas(),"Vr")) m[i]->print();

  cout << endl;

 

  cout << "Защитники: " << endl;

  for (i=0; i<c-1; i++)

    if (!strcmp(m[i]->getclas(),"Z")) m[i]->print();

  cout << endl;

 

  cout << "Полузащитники: " << endl;

  for (i=0; i<c-1; i++)

    if (!strcmp(m[i]->getclas(),"PZ")) m[i]->print();

  cout << endl;

 

  cout << "Нападающие: " << endl;

  for (i=0; i<c-1; i++)

    if (!strcmp(m[i]->getclas(),"N")) m[i]->print();

  cout << endl;

 

};

 

void menu_r2()

{

  CSportmans* l;

  for (int i=0; i<c; i++)

    for (int j=0; j<c; j++)

      if (m[i]->getrost()>m[j]->getrost())

      {

l=m[i];

m[i]=m[j];

m[j]=l;

      };

  menu_saw();

};

 

void menu_r3()

{

  cout << "СПОРТСМЕН С САМОЙ  БОЛЬШОЙ МАССОЙ:" << endl;

  CSportmans* mx=m[0];

 

    for (int i=1; i<c; i++)

      if (m[i]->getves() > mx->getves())

mx=m[i];

 

  mx->print();

};

 

void free()

{

  for (int i=0; i<c; i++) delete m[i];

  c=0;

};


Информация о работе Разработка программного комплекса по обработке заданного множества данных