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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++]База данных 
:(
    Опции темы
M0ZY
Дата 14.5.2009, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Уже как 2 недели бъюсь над написанием простенькой базы данных
Формулировка задачи

Создать файл, содержащий сведения о количестве изделий, собранных сборщиками цеха за неделю. Каждая запись содержит поля:
• Фамилия сборщика
• Количество изделий, собранных им ежедневно в течении шестидневной недели, то есть раздельно – в понедельник, вторник и т.д.
Написать программу, выдающую на печать следующую информацию:
• Фамилию сборщика и общее количество деталей, собранное им за неделю
• *Фамилию сборщика, собравшего наибольшее число изделий, и день, когда он достиг наивысшей производительности труда

Программа должна уметь
1.Создавать запись
2.Просматривать записи
3.Добавлять запись
4.Удалять запись
5.Редактировать запись
6.Проблемная часть
(отсортировать файл по *)

Я просто не представляю как реализовать пункты 4,5,6
PM MAIL   Вверх
andrew_121
Дата 14.5.2009, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

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



Уважаемые. Обратите внимание на: http://forum.vingrad.ru/forum/topic-259277...данных-ите.html  smile 
Ваше мнение?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
zim22
Дата 14.5.2009, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



Цитата(M0ZY @  14.5.2009,  21:08 Найти цитируемый пост)
Я просто не представляю как реализовать пункты 4,5,6

Цитата(M0ZY @  14.5.2009,  21:08 Найти цитируемый пост)
4.Удалять запись

я как минимум вижу два варианта решения:
1) в записи хранить поле-флаг, которое будет указывать удалена ли запись или нет. Т.е. физически мы данные не удаляем, просто флажок ставим и при чтении пропускаем её.
2) все записи, которые идут после удаляемой записи сдвинуть на одну позицию вверх.  т.е. в удаляемую запись запишутся данные из записи следующей за ней и т.д.

Цитата(M0ZY @  14.5.2009,  21:08 Найти цитируемый пост)
5.Редактировать запись

сначала позиционируемся в файле на нужное смещение, потом записываем поверх записи новые данные.

Цитата(M0ZY @  14.5.2009,  21:08 Найти цитируемый пост)
6.Проблемная часть(отсортировать файл по *)

скопировать все структуры из файла в массив структур. отсортировать их по нужному полю, записать заново в файл.

Это сообщение отредактировал(а) zim22 - 14.5.2009, 21:32


--------------------
PM MAIL   Вверх
M0ZY
Дата 14.5.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



2 zim22
Спасибо очень помогли с идееё для 6ого пункта

2 andrew_121
Как маленький ребёнок,чес слово
PM MAIL   Вверх
M0ZY
Дата 14.5.2009, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хм... оказывается я что-то да и могу)) smile 

Спасибо zim22 за идею с массивом структуры.

Вот я написал


Код



#include <iostream>
#include <stdlib.h>
#include <fstream>
using namespace std;

bool enter(char filename);
bool display(char filename);
bool delete_record(char filename);
bool edit(char filename);
bool sort(char filename);


struct rabochi
{
    char fio[24];
    int Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;
    int nomer;
    int sr;
}r[100];

int main()
{
        char filename[100];
        char c=0;
        cout << "Enter filename" << endl;
        cin >> filename;
        system("cls");
        while(c!='q')
        {
                cout<<"1 - Enter new."<<endl;
                cout<<"2 - Display."<<endl;
                cout<<"3 - Delete record."<<endl;
                cout<<"4 - Edit Record."<<endl;
                cout<<"5 - Problem part."<<endl;
                cout<<"q - Quit."<<endl;
                cin>>c;
                system("cls");
                switch©
                {
                        case '1':
                            enter(filename);
                            break;
                        case '2':
                            display(filename);
                            break;
                        case '3':
                            delete_record(filename);
                            break;
                        case '4':
                            edit(filename);
                            break;
                        case '5':
                            sort(filename);
                            break;
                        default:
                            break;
            }
        return 0;
        }

bool enter(char filename)
{
char vib='n'
int i=0;

ofstream file;
file.open(filename, ios::app);
        
        if (!file)
        {
            cerr<<"TRY OPEN FILE \""<<filename<<"\" GET ERROR!"<<endl;
            return false;
        }

        do{
        i++;
        r[i].nomer=i;
        cout<<"Enter FIO: "<<endl;
        cin>>r[i].fio;
        cout<<"Enter the amount of detail collected on Monday"<<endl;
        cin>>r[i].Monday;
        cout<<"Enter the amount of detail collected on Tuesday"<<endl;
        cin>>r[i].Tuesday;
        cout<<"Enter the amount of detail collected on Wednesday"<<endl;
        cin>>r[i].Wednesday;
        cout<<"Enter the amount of detail collected on Thursday"<<endl;
        cin>>r[i].Thursday;
        cout<<"Enter the amount of detail collected on Friday"<<endl;
        cin>>r[i].Friday;
        cout<<"Enter the amount of detail collected on Saturday"<<endl;
        cin>>r[i].Saturday;

        file<<r[i].nomer<<" "<<r[i].fio<<" "<<r[i].Monday<<" "<<r[i].Tuesday<<" "<<r[i].Wednesday<<" "<<r[i].Thursday<<" "<<r[i].Friday<<" "<<r[i].Saturday<<endl;
        cout << "What's all(y/n)?" << endl;
        }while(vib == 'y');

        fo.close();
        return true;
}
    
bool display(char filename)
{
        int i=0;

        ifstream file;
        file.open(filename);
        
        if (!file)
        {
            cout<<"TRY OPEN    FILE \""<<filename<<"\"! GET ERROR!"<<endl;
            return false;
        }

        cout <<"============================================================================\n";
        cout <<"|         FIO         |Monday|Tuesday|Wednesday|Thursday|Friday|Saturday    |\n";
        cout <<"============================================================================\n";
        while(!file.eof())
        {    
            i++;
            file>>r[i].fio>>r[i].Monday>>r[i].Tuesday>>r[i].Wednesday>>r[i].Thursday>>r[i].Friday>>r[i].Saturday;
            cout<<"|"<<setw(10)<<
            r[i].fio<<setw(10)<<
            "|"<<setw(4)<<
            r[i].Monday<<setw(4)<<
            "|"<<setw(4)<<
            r[i].Tuesday<<setw(4)<<
            "|"<<setw(4)<<
            r[i].Wednesday<<setw(4)<<
            "|"<<setw(4)<<
            r[i].Thursday<<setw(4)<<
            "|"<<setw(4)<<
            r[i].Friday<<setw(4)<<
            "|"<<setw(4)<<
            r[i].Saturday<<setw(4)<<
            "|\n";
            cout << "=========================================================================\n";
        }
        file.close();
        return true;
}

bool delete_record(char filename)
{
    int i=0;
    char del='n';

    ofstream file;
    file.open(filename, ios::app);
        
        if (!file)
        {
            cerr<<"TRY OPEN FILE \""<<filename<<"\" GET ERROR!"<<endl;
            return false;
        }

        do{
    cout << "Enter number of worker" << endl;
    cin >> i;
    
    file>>r[i].nomer>>r[i].fio>>r[i].Monday>>r[i].Tuesday>>r[i].Wednesday>>r[i].Thursday>>r[i].Friday>>r[i].Saturday;
    
    r[i].nomer="";
    r[i].fio="";
    r[i].Monday="";
    r[i].Tuesday="";
    r[i].Wednesday="";
    r[i].Thursday="";
    r[i].Friday="";
    r[i].Saturday="";

    file<<r[i].nomer<<[i].fio<<r[i].Monday<<r[i].Tuesday<<r[i].Wednesday<<r[i].Thursday<<r[i].Friday<<r[i].Saturday;

    cout << "Record deleted" << endl;
    cout << "What's all?(y/n)" << endl;
    }while(del == 'y')

     file.close();
     return true;
}

bool edit(char filename)
{    int i=0;
    
    ofstream file;
    file.open(filename, ios::app);
        
        if (!file)
        {
            cerr<<"TRY OPEN FILE \""<<filename<<"\" GET ERROR!"<<endl;
            return false;
        }

        do{
    cout << "Enter number of worker" << endl;
    cin >> i;
    
    file>>r[i].nomer>>r[i].fio>>r[i].Monday>>r[i].Tuesday>>r[i].Wednesday>>r[i].Thursday>>r[i].Friday>>r[i].Saturday;
    
    cout>>r[i].nomer>>" ">>r[i].fio>>" ">>r[i].Monday>>" ">>r[i].Tuesday>>" ">>r[i].Wednesday>>" ">>r[i].Thursday>>" ">>r[i].Friday>>" ">>r[i].Saturday;

        cout<<"Enter FIO: "<<endl;
        cin>>r[i].fio;
        cout<<"Enter the amount of detail collected on Monday"<<endl;
        cin>>r[i].Monday;
        cout<<"Enter the amount of detail collected on Tuesday"<<endl;
        cin>>r[i].Tuesday;
        cout<<"Enter the amount of detail collected on Wednesday"<<endl;
        cin>>r[i].Wednesday;
        cout<<"Enter the amount of detail collected on Thursday"<<endl;
        cin>>r[i].Thursday;
        cout<<"Enter the amount of detail collected on Friday"<<endl;
        cin>>r[i].Friday;
        cout<<"Enter the amount of detail collected on Saturday"<<endl;
        cin>>r[i].Saturday;

    file<<r[i].nomer<<[i].fio<<r[i].Monday<<r[i].Tuesday<<r[i].Wednesday<<r[i].Thursday<<r[i].Friday<<r[i].Saturday;

    cout << "Record edited" << endl;
    cout << "What's all?(y/n)" << endl;
    }while(del == 'y')

     file.close();
     return true;
}


bool sort(char filename)
{
    int i=0;
    int max=0;
    
    ofstream file;
    file.open(filename, ios::app);
        
        if (!file)
        {
            cerr<<"TRY OPEN FILE \""<<filename<<"\" GET ERROR!"<<endl;
            return false;
        }

        while(file!=eof){
            i++;

            file>>r[i].nomer>>r[i].fio>>r[i].Monday>>r[i].Tuesday>>r[i].Wednesday>>r[i].Thursday>>r[i].Friday>>r[i].Saturday;
            
            r[i].sr=(r[i].Monday+r[i].Tuesday+r[i].Wednesday+r[i].Thursday+r[i].Friday+r[i].Saturday)/6;
            
            if(r[i].sr > max){
                max=r[i].sr;
            }
            }
            i=0;

        while(file!=eof){
            i++;
            
            file>>r[i].nomer>>r[i].fio>>r[i].sr>>r[i].Monday>>r[i].Tuesday>>r[i].Wednesday>>r[i].Thursday>>r[i].Friday>>r[i].Saturday;

            if (r[i].sr == max)
                exit(1);
        }

        if(r[i].Monday>r[i].Tuesday && r[i].Monday>r[i].Wednesday && r[i].Monday>r[i].Thursday && r[i].Monday>r[i].Friday && r[i].Monday>r[i].Saturday){
            cout << "More details of all made " << r[i].fio << " a day when he reached the highest productivity is Monday"
        }
        if(r[i].Tuesday>r[i].Monday && r[i].Tuesday>r[i].Wednesday && r[i].Tuesday>r[i].Thursday && r[i].Tuesday>r[i].Friday && r[i].Tuesday>r[i].Saturday){
            cout << "More details of all made " << r[i].fio << " a day when he reached the highest productivity is Tuesday"
        }
        if(r[i].Wednesday>r[i].Monday && r[i].Wednesday>Thursday && r[i].Wednesday>r[i].Friday && r[i].Wednesday>r[i].Saturday){
            cout << "More details of all made " << r[i].fio << " a day when he reached the highest productivity is Wednesday"
        }
        if(r[i].Thursday>r[i].Monday && r[i].Thursday>r[i].Wednesday && r[i].Thursday>r[i].Friday && r[i].Thursday>r[i].Saturday){
            cout << "More details of all made " << r[i].fio << " a day when he reached the highest productivity is Thursday"
        }
        if(r[i].Friday>r[i].Monday && r[i].Friday>r[i].Wednesday && r[i].Friday>r[i].Thursday && r[i].Friday>r[i].Saturday){
            cout << "More details of all made " << r[i].fio << " a day when he reached the highest productivity is Friday"
        }
        if(r[i].Saturday>r[i].Monday && r[i].Saturday>r[i].Wednesday && r[i].Saturday>r[i].Thursday && r[i].Saturday>r[i].Friday){
            cout << "More details of all made " << r[i].fio << " and day when he reached the highest productivity is Saturday"
        }

    return true;
}




Но,конечно не без ошибок.
Мой Visual Studio 2009 насчитал их 11.
Я даже не представляю в чём они закючаются.
Помогите ПОЖАУЙСТА отредактировать.


Это сообщение отредактировал(а) M0ZY - 14.5.2009, 23:57
PM MAIL   Вверх
Dmi3ev
Дата 16.5.2009, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

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



 smile 
M0ZY, код просто знакомый до боли... Ты сам писал?


--------------------

PM MAIL   Вверх
zim22
Дата 16.5.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

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



 smile 
M0ZY, когда уже твой покемон вылупится!? я его кормлю, кормлю... smile


--------------------
PM MAIL   Вверх
M0ZY
Дата 16.5.2009, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



2 Dmi3ev

писал сам,но
взял за основу ваш код


2 zim22

покемон выупится нес уровнем,а со временем
у меня на каком-то форуме был
так вылупился,только через 3месяца!!!
(лиса какая-то огненная)
жаль тот форум прикрыли,вместе с тем покемоном =(
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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