Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Контроль успеваемости студентов, Как лучше реализовать? 
:(
    Опции темы
Romati
Дата 9.5.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.3.2008
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Всем привет!

Задача: С чего начать писать программу?
Цель: Написать программу контроля успеваемости студентов с рейтинговой системой. 
Поток сознания: Запарился просчитывать варианты. Есть несколько идей, но незнаю какую лучше выбрать. 
Думаю сделать так: Создам класс, потом файл с названием факультета (на остальные факультеты думаю сделать заглушки), далее специальность, курс, группа, фио, успеваемость с учётом рейтинга (Тут пока незнаю, как лучше сделать. Или вводить сразу подсчитанные баллы, или разбивать не несколько выборочных предметов. Дело в том, что программу я создаю, для того чтобы показать принцип работы, поэтому я думаю, что сделать несколько предметов специально показа функциональности), потом идут сортировочки, слияния и т.д

Хочу знать, как лучше реализовать эту программу.
  
PM MAIL ICQ   Вверх
Romati
Дата 9.5.2008, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.3.2008
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Помогите решить проблему smile
PM MAIL ICQ   Вверх
bronislav
Дата 9.5.2008, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: 2
Всего: 3



Попробуй использовать БД, а то все в отдельных фалах хранить не есть ТРУ.


--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
Romati
Дата 9.5.2008, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.3.2008
Где: Беларусь, Минск

Репутация: нет
Всего: нет



bronislav, Верю. Но нужно на файлах.
Какие ещё будет советы ? 
PM MAIL ICQ   Вверх
bronislav
Дата 9.5.2008, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: 2
Всего: 3



Цитата(Romati @  9.5.2008,  21:55 Найти цитируемый пост)
Но нужно на файлах.

Ну можеш использовать мультифайловую БД типа DBF.

А если по теме, то:

Ты бы поподробнее описал, что тебе надо.

Я так понял, что еть список студентов, и предметов которые они изучают. Для каждого студента вводятся оценки по каждому предмету (возможно несколько оценок по одному предмету) и потом производится подсчет успеваемости студентов (сребний бал?) и составляется рейтинг?




--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
Romati
Дата 9.5.2008, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.3.2008
Где: Беларусь, Минск

Репутация: нет
Всего: нет



bronislav, Да, что-то типо этого. Я и думаю, как лучше это сделать. Что делать с факультетами, создавать ли по файлу на каждый факультет или как ? 
PM MAIL ICQ   Вверх
bronislav
Дата 9.5.2008, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: 2
Всего: 3



Мне кажется -  надо.

Аргументы за:
Информация по факультетам не зависит друг от друга
Возможноть обновременной обработки информации по нескольким факультетам.

Аргементы против:
Чем больше факультетов - тем больше файлов


--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
Romati
Дата 10.5.2008, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.3.2008
Где: Беларусь, Минск

Репутация: нет
Всего: нет



bronislav, Значит, если я всё понял правильно, то всё должно храниться в одном файле? АААААеееес!
А что в нём создавать, всмысле, что делать с рейтинговой системой ?
PM MAIL ICQ   Вверх
bronislav
Дата 10.5.2008, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: 2
Всего: 3



Цитата(Romati @  10.5.2008,  01:05 Найти цитируемый пост)
то всё должно храниться в одном файле? АААААеееес!


Я бы не хранил все в одном файле - это затрудняет навигацию.

Почитай теорию про БД. Если бы ты использлвал БД, то тебе бы надо было реализовывать только структуру и обработку данных.

А т.к. ты используеш файлы, то тебе еще надо реализовывать загрузку и выгрузку данных из файлов.


--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
Romati
Дата 10.5.2008, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.3.2008
Где: Беларусь, Минск

Репутация: нет
Всего: нет



bronislav, Я ещё студент, и по программе не проходил БД, но сам понятие имею. Поэтому, мне нужно лепить программу из того что есть, из того что проходили по программе. ВОт.
PM MAIL ICQ   Вверх
bronislav
Дата 10.5.2008, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 334
Регистрация: 29.1.2008
Где: Украина::Донецк

Репутация: 2
Всего: 3



Цитата(Romati @  10.5.2008,  18:28 Найти цитируемый пост)
Я ещё студент

Я тоже

Цитата(Romati @  10.5.2008,  18:28 Найти цитируемый пост)
из того что проходили по программе


У нас в Универе нет ограничений на используемые языки или технологии

Да и я говорю, тебе использовать БД.


З.Ы. Это курсовая или по какому-то определенному предмету? 




--------------------
user posted image
иногда проще и быстрей обойти лужу, даже если кажется что она мелкая и путь напрямик короче - ведь она может скрывать открытый люк (с) mes
PM MAIL   Вверх
Romati
Дата 11.5.2008, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.3.2008
Где: Беларусь, Минск

Репутация: нет
Всего: нет



bronislav, Это курсовая по объектно-ориентированному программированию.

UPDATE: Я вот думаю, может тему сменить, взять какой нить тупой учёт газет в киоске или что-то в этом роде smile А то двадцатые числа уже близятся ... smile 

Это сообщение отредактировал(а) Romati - 11.5.2008, 18:50
PM MAIL ICQ   Вверх
rrrFer
Дата 11.5.2008, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 11.5.2008
Где: Красноярск

Репутация: 0
Всего: 1



я бы незадумываясь  стал использовать один двоичный файл
насчет 
Цитата
Возможноть обновременной обработки информации по нескольким факультетам.

как аргумента за много много файлов,- тогда выходит ты расчитываешь что будет запущено несколько экземпляров 
твоей программы, но тогда тебе еще надо будет учесть то что они могут обратиться к файлу одного и того же файкультета одновременно, поэтому ты будешь привинчивать к программе семафоры или мутексы.
Если ты не расчитываешь на одновременную работу нескольких экземпляров то о какой оБновременной обработке может быть речь.
Двацатые числа меня тоже беспокоят...
PM MAIL WWW ICQ   Вверх
Romati
Дата 11.5.2008, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.3.2008
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Вот я как-то в семестре писал прогу, которая ведет учет продажи билетов для транспорта. Прога вполне нормальная, я даже думал её переписать под учёт какой нить ещё другой фигни. Но почему то выбрал сложнее (видимо зря), взял Контроль успеваимости студентов.
Но программный код, я привожу для примера, чтобы вы поняли, что я имею ввиду. В каком стиле и с использованием чего, я собираюсь писать. Вот смотрите ниже код:
Код

#include <iostream.h>
#include <string.h>
#include <fstream.h>
#include <process.h>
#include <iomanip.h>
#include <io.h>
#include <windows.h>
char*rus_text( char *buf);

class stud 
{
    char transport[20];
    int nomer;
    int cena;
    int kolvo;
public:
    void set_nomer(int n){nomer=n;}
    void set_transport(char*t){strcpy(transport,t);}
    void set_cena(int c){cena=c;}
    void set_kolvo(int k){kolvo=k;}
    int get_kolvo(){return kolvo;}
    char*get_transport(){return transport;}
    int get_nomer(){return nomer;}
    int get_cena(){return cena;}
};
void vvod_f(char*n,char*f)
{
    while(1)
    {
        cout<<n;
        cin.getline(f,30); 
        if(cin)return;
    }
}
void cls_pause()
{
    cout<<'\n';
    system("pause"); 
    system("cls");
}
void sozdanie_faila()
{
    system("cls");
    system("pause");
    stud x; 
    char let; 
    int l=sizeof(stud);
    char imya_faila[20]; 
    vvod_f(rus_text("Введите имя для создания файла(город РБ): "),imya_faila);
    fstream out;
    out.open(imya_faila,ios::out|ios::binary);
    int c,n,k;
    char t[20];
    while (1)
    {
        cout<<rus_text("\nВведите тип транспорта: "); cin>>t; x.set_transport(t);
        cout<<rus_text("\nВведите номер маршрута: "); cin>>n; x.set_nomer(n);
        cout<<rus_text("\nВведите цену билета: "); cin>>c; x.set_cena(c);
        cout<<rus_text("\nВведите количество проданных билетов: "); cin>>k; x.set_kolvo(k);
        cin.get();
        out.write((char*)&x,l);
        cout<<rus_text("\nДля продолжения ввода нажмите (y) для выхода нажмите (n): ");
        cin.get(let);
        cin.get();
        if(let=='y'||let=='Y')continue;
        else
        {
            out.close();
            return;
        }
    }
}
void dobavlenie_v_fail()
{
    system("cls");
    stud x; 
    char let; 
    int l=sizeof(stud );
    char imya_faila[20]; 
    vvod_f(rus_text("Введите имя файла в который вы хотите добавить объекты: "),imya_faila);
    fstream out;
    out.open(imya_faila,ios::app|ios::out|ios::binary|ios::nocreate);
    int c,n,k;
    char t[20];
    if(!out) 
    {
        cerr<<rus_text("Такого файла не существует: ")<<imya_faila<<endl;
        return;
    }
    while(1)
    {
        cout<<rus_text("\nВведите тип транспорта: "); cin>>t; x.set_transport(t);
        cout<<rus_text("\nВведите номер маршрута: "); cin>>n; x.set_nomer(n);
        cout<<rus_text("\nВведите цену билета: "); cin>>c; x.set_cena(c);
        cout<<rus_text("\nВведите количество проданных билетов: "); cin>>k; x.set_kolvo(k);
        cin.get();
        out.write((char*)&x,l);
        cout<<rus_text("\nДля продолжения ввода нажмите (y) для выхода нажмите (n): ");
        cin.get(let);
        cin.get();
        if(let=='y'||let=='Y') continue;
        else
        {
            out.close();
            return;
        }
    }
}
void chtenie_s_nachala()
{
    system("cls");     
    stud x;         
    char imya_faila[20];
    vvod_f(rus_text("Введите имя файла который вы хотите открыть: "),imya_faila);
    int len=sizeof(stud); 
    fstream in;
    in.open(imya_faila, ios::in|ios::nocreate);
    if(!in) 
    {
        cerr<<rus_text("Такого файла не существует: ")<<imya_faila<<endl; 
        return;
    }
    while(1)
    {
         in.read((char*)&x,len);
         if(in.eof())
         {
             in.close();
             return;
         }
         cout.setf(ios::right);
         cout<<rus_text("\nТип транспорта: ")<<setw(10)<<x.get_transport()<<endl;
         cout<<rus_text("\nНомер маршрута: ")<<setw(10)<<x.get_nomer()<<endl;
         cout<<rus_text("\nЦена билета: ")<<setw(10)<<x.get_cena()<<endl;
         cout<<rus_text("\nКоличество проданных билетов: ")<<setw(10)<<x.get_kolvo()<<endl;
    }
}
void sort_for_transport()
{
    system("cls");
    stud x1,x2;
    char imya_faila[20];
    vvod_f(rus_text("Введиет имя файла который вы хотите рассортировать по типам транспорта: "),imya_faila);
    int len=sizeof(stud);
    fstream out;
    out.open(imya_faila,ios::in|ios::out|ios::binary|ios::nocreate);
    if(!out)
    {
    cerr<<rus_text("Такого файла не существует: ")<<imya_faila<<endl;
    return;
    }
    out.seekp(0,ios::end);
    long ln = out.tellp();
    int n=ln/len;
    for(int i=0;i<n-1;i++)
        for(int j=i+1;j<n;j++)
        {
            out.seekp(i*len,ios::beg); out.read((char*)&x1,len);
            out.seekp(j*len,ios::beg); out.read((char*)&x2,len);
            if(strcmp(x1.get_transport(),x2.get_transport())>0)
            {
                out.seekp(i*len,ios::beg); out.write((char*)&x2,len);
                out.seekp(j*len,ios::beg); out.write((char*)&x1,len);
            }
        }
        out.close();
}
void sort_for_nomer()
{
    system("cls");
    stud x1,x2;
    char imya_faila[20];
    vvod_f(rus_text("Введите имя файла который вы хотите рассортировать по номерам моршрута: "),imya_faila);
    int len=sizeof(stud);
    fstream out;
    out.open(imya_faila,ios::in|ios::out|ios::binary|ios::nocreate);
    if(!out)
    {
    cerr<<rus_text("Такого файла не существует: ")<<imya_faila<<endl;
    return;
    }
    out.seekp(0,ios::end);
    long ln = out.tellp();
    int n=ln/len;
    for(int i=0;i<n-1;i++)
        for(int j=i+1;j<n;j++)
        {
            out.seekp(i*len,ios::beg); out.read((char*)&x1,len);
            out.seekp(j*len,ios::beg); out.read((char*)&x2,len);
            if(x1.get_nomer()>x2.get_nomer())
            {
                out.seekp(i*len,ios::beg); out.write((char*)&x2,len);
                out.seekp(j*len,ios::beg); out.write((char*)&x1,len);
            }
        }
        out.close();
}
void sort_for_cena()
{
    system("cls");
    stud x1,x2;
    char imya_faila[20];
    vvod_f(rus_text("Введите имя файла который вы хотите рассортировать по ценам билетов: "),imya_faila);
    int len=sizeof(stud);
    fstream out;
    out.open(imya_faila,ios::in|ios::out|ios::binary|ios::nocreate);
    if(!out)
    {
    cerr<<rus_text("Такого файла не существует: ")<<imya_faila<<endl;
    return;
    }
    out.seekp(0,ios::end);
    long ln = out.tellp();
    int n=ln/len;
    for(int i=0;i<n-1;i++)
        for(int j=i+1;j<n;j++)
        {
            out.seekp(i*len,ios::beg); out.read((char*)&x1,len);
            out.seekp(j*len,ios::beg); out.read((char*)&x2,len);
            if(x1.get_cena()>x2.get_cena())
            {
                out.seekp(i*len,ios::beg); out.write((char*)&x2,len);
                out.seekp(j*len,ios::beg); out.write((char*)&x1,len);
            }
        }
        out.close();
}
void sort_for_kolvo()
{
    system("cls");
    stud x1,x2;
    char imya_faila[20];
    vvod_f(rus_text("Введите имя файла который вы хотите рассортировать по количеству проданных билетов: "),imya_faila);
    int len=sizeof(stud);
    fstream out;
    out.open(imya_faila,ios::in|ios::out|ios::binary|ios::nocreate);
    if(!out)
    {
    cerr<<rus_text("Такого файла не существует: ")<<imya_faila<<endl;
    return;
    }
    out.seekp(0,ios::end);
    long ln = out.tellp();
    int n=ln/len;
    for(int i=0;i<n-1;i++)
        for(int j=i+1;j<n;j++)
        {
            out.seekp(i*len,ios::beg); out.read((char*)&x1,len);
            out.seekp(j*len,ios::beg); out.read((char*)&x2,len);
            if(x1.get_kolvo()<x2.get_kolvo())
            {
                out.seekp(i*len,ios::beg); out.write((char*)&x2,len);
                out.seekp(j*len,ios::beg); out.write((char*)&x1,len);
            }
        }
        out.close();
}
void udalenie()
{
    system("cls"); 
    char imya_faila[20];
    char transport[20];
    long p1; 
    int len=sizeof stud;
    stud s;
    fstream in_out;
    vvod_f(rus_text("Введите имя файла из которого вы хотите исключить объекты: "),imya_faila);
    in_out.open(imya_faila,ios::in|ios::out|ios::binary|ios::nocreate);
    if(!in_out)
    {
        cerr<<rus_text("Такого файла не существует: ")<<imya_faila<<endl;
        return;
    }
    cout<<rus_text("\nВведите тип транспорта который вы хотите удалить из файла: ");
    cin.getline(transport,30);
        while(1)
        {
            p1=in_out.tellg();
            in_out.read((char*)&s,len);
            if (in_out.eof())
            {
                in_out.close();
                cout<<rus_text("Такой тип транспорта не найден: ")<<transport<<endl;
            return;
            }
            if(!strcmp(transport,s.get_transport()))
            {
                long p2=in_out.tellg();
                while(1)
                {
                    in_out.read((char*)&s,len);
                    if (in_out.eof())
                    {
                        in_out.seekp(0,ios::end);
                        p1=in_out.tellg();
                        in_out.close();
                        int fd=open(imya_faila,2);
                        chsize(fd,p1-len);
                        close(fd);
                        cout<<rus_text("Удаленный транспорт: ")<<transport<<'\n';
                    return;
                    }
                    in_out.seekp(p1,ios::beg);
                    in_out.write((char*)&s,len);
                    p1=p2;
                    p2=p2+len;in_out.seekp(p2,ios::beg);
                }
            }
        }
}

void sliyanie()
{

    system("cls"); 
    stud x1,x2;
    fstream ln1,ln2,out;
    char imya_faila[20];
    vvod_f(rus_text("Введите имя файла в который мы будем объеденять 2 файла: "),imya_faila);
    int len=sizeof(stud);    
    out.open(imya_faila,ios::out|ios::binary);
    vvod_f(rus_text("Введите имя 1го файла для слияния: "),imya_faila);
    ln1.open(imya_faila,ios::in|ios::binary|ios::nocreate);
    if(!ln1) 
    {
        cerr<<rus_text("Такого файла не существует: ")<<imya_faila<<endl;
        return;
    }

    vvod_f(rus_text("Введите имя 2го файла для слияния: "),imya_faila);
    ln2.open(imya_faila,ios::in|ios::binary|ios::nocreate);
    if(!ln2) 
    {
        cerr<<rus_text("Такого файла не существует: ")<<imya_faila<<endl;
        return;
    }
    ln1.read((char*)&x1,len);
    ln2.read((char*)&x2,len);
    while (!ln1.eof()&!ln2.eof())
    {
        if(strcmp(x1.get_transport(),x2.get_transport())<0){out.write((char*)&x1,len);
                ln1.read((char*)&x1,len);}
        else{out.write((char*)&x2,len);
                ln2.read((char*)&x2,len);}
    }
    while(!ln1.eof()){out.write((char*)&x1,len);
    ln1.read((char*)&x1,len);}
    while(!ln2.eof()){out.write((char*)&x2,len);
    ln2.read((char*)&x2,len);}
    ln1.close();
    ln2.close();
    out.close();
    
}
void main()
{
    system("cls"); int sw;
    while(1)
    {
        cout<<rus_text("-=МЕНЮ=-\n");
        cout<<rus_text("1-Создание файла(город РБ)\n");
        cout<<rus_text("2-Добавление в файл\n");
        cout<<rus_text("3-Чтение с начала файла\n");
        cout<<rus_text("4-Сортировка по виду транспорта\n");
        cout<<rus_text("5-Сортировка по цене билетов\n");
        cout<<rus_text("6-Сортировка номерам маршрутов\n");
        cout<<rus_text("7-Сортировка по количеству проданных билетов\n");
        cout<<rus_text("8-Удаление из файла\n");
        cout<<rus_text("9-Слияние файлов\n");
        cout<<rus_text("10-Выход\n");
        cout<<rus_text("Выберите пункт меню: ");
        cin>>sw;
        if(!cin) {cin.clear();
        cin.ignore(40,'\n');
        }
        cin.get();
        switch(sw)
        {
        case 1:sozdanie_faila();break;
        case 2:dobavlenie_v_fail();break;
        case 3:chtenie_s_nachala();break;
        case 4:sort_for_transport();break;
        case 5:sort_for_cena();break;
        case 6:sort_for_nomer();break;
        case 7:sort_for_kolvo();break;
        case 8:udalenie();break;
        case 9:sliyanie();break;
        case 10:return;
        default:cout<<rus_text("Неправильный выбор - повторите пожалуйста ввод")<<endl;break;
        }
    }
}
char  buf_rus_vivod[256];
char*rus_text( char *buf_vvod)
{
    CharToOem(buf_vvod,    buf_rus_vivod);
    return buf_rus_vivod;
}

PM MAIL ICQ   Вверх
Romati
Дата 13.5.2008, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 23.3.2008
Где: Беларусь, Минск

Репутация: нет
Всего: нет



Up!
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1136 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.