Автор работы: Пользователь скрыл имя, 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
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")
if (!strcmp(m[i]->getclas(),"Z")) num=2;
if (!strcmp(m[i]->getclas(),"PZ")
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")
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")
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]->
{
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;
};
Информация о работе Разработка программного комплекса по обработке заданного множества данных