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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простейшая база данных 
:(
    Опции темы
suse
Дата 9.3.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А как на основе данной программы сделать простейшую базу данных?
Код

#include <stdio.h>
struct Node
 {
     int d;
     Node *p;
 };
int main()
{
    Node *pv=new Node;
    pv->d=1;
    pv->p=0;
    Node  *pbeg=pv;
     Node  *pend=pv;
     for(int i=2; i<6; i++)
    {            
          Node *pv=new Node;
        
        pv->d=i;        
        pend->p=pv;
        pend=pv;        
    }
     pend->p = 0;
     while(pbeg)
        {
            pv=pbeg;
            printf ("%d\n",pbeg->d);
            pbeg=pbeg->p;
            delete pv;
       }
return 0;
}

Ну например в текстовом файле записаны Имя Фамилия и Должность. Требуется прочитать этот 
текстовой файл строчка за строчкой, создать копии всех записей и дописать их в файл.
Должно получиться что то вроде:
Иванов Иван полковник
Петров Петр майор
Константинов Константин сержант
------------------------------------
Иванов Иван полковник
Петров Петр майор
Константинов Константин сержант 
PM MAIL   Вверх
Anikmar
Дата 9.3.2009, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Эта программа умеет делать только односвязные списки. 
Расширяйте структуру Node - для хранения информации об одной записи БД, затем добавляйте методы чтения/записи в файл.

Сперва сделайте структуру хранения данных - чтобы было где хранить фамилию, имя, отчество, звание.

Если хотите еще и немного нормализацию поизучать - звания можно в отдельный списочек занести, но думаю в рамках текущей задачи это не нужно.


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


Эксперт
***


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

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



suse, может быть полезным...
http://forum.vingrad.ru/forum/topic-250268.html


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

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


трололомен
****


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

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



suse, предупреждаю сразу - со своей поделкой замучаешься. Используй готовые решения.
PM MAIL   Вверх
zim22
Дата 10.3.2009, 10:23 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(mrbrooks @  10.3.2009,  10:13 Найти цитируемый пост)
со своей поделкой замучаешься

зато поумнеет


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


трололомен
****


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

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



Цитата(zim22 @  10.3.2009,  10:23 Найти цитируемый пост)
зато поумнеет 

возможно. главное, что бы следующим шагом не было написание gta5.
PM MAIL   Вверх
Dmi3ev
Дата 10.3.2009, 10:34 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

возможно. главное, что бы следующим шагом не было написание gta5. 

я тоже считаю, что шестую надо писать, над пятой уже работают  smile 


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

PM MAIL   Вверх
Anikmar
Дата 10.3.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



 smile 
Вот так и рождаются баяны. Автор темы очень удивится, что ему столько ответов и ни одного по делу  smile 


Цитата(mrbrooks @  10.3.2009,  10:26 Найти цитируемый пост)
Цитата(zim22 @  10.3.2009,  10:23 )
зато поумнеет 


возможно. главное, что бы следующим шагом не было написание gta5. 


Думаю умнеть надо на других задачах. Написание своей "СУБД" в таком виде много знаний не прибавит. Лучше изучать какую-нибудь локальную простую СУБД и можно написать что-нибудь полезное для себя.
PM MAIL ICQ   Вверх
zim22
Дата 10.3.2009, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



я думаю автор не там тему запостил. ему в центр помощи.


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


Эксперт
***


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

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



Anikmar, я же дал ему ссылку почти на то, что ему надо, вот код на основе ссылочки:
Код

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

struct militarian
{
    char name[24];
    char surname[27];
    char rank[24];
};

bool my_enter(char *fn)
{
        militarian m;
        cout<<"Enter name: "<<endl;
        cin>>m.name;
        cout<<"Enter surname: "<<endl;
        cin>>m.surname;
        cout<<"Enter rank: "<<endl;
        cin>>m.rank;

        ofstream fo;
        fo.open(fn, ios::app);
        if (!fo)
        {
            cout<<"TRY OPEN FILE \""<<fn<<"\" GET ERROR!"<<endl;
            return false;
        }
        fo<<m.name<<" "<<m.surname<<" "<<m.rank<<endl;
        fo.close();
        return true;
}

bool my_print(char *fn)
{
        ifstream fi;
        fi.open(fn);
        
        if (!fi)
        {
            cout<<"TRY OPEN    FILE \""<<fn<<"\"! GET ERROR!"<<endl;
            return false;
        }
        militarian m;
        printf("===============================================================================\n");
        printf("|          Name          |          Surname          |          Rank          |\n");
        printf("===============================================================================\n");
        while(!fi.eof())
        {
            fi>>m.name>>m.surname>>m.rank;
            printf("|");
            printf("%24s", m.name);
            printf("|");
            printf("%27s", m.surname);
            printf("|");
            printf("%24s", m.rank);
            printf("|\n");
            printf("-------------------------------------------------------------------------------\n");
        }
        fi.close();
        return true;
}
bool my_x2(char *fn)//можно делать проще, но для демонстрации сделал с вектором
{
        ifstream fi;
        fi.open(fn);
        vector<militarian> mv;
        if (!fi)
        {
            cout<<"TRY OPEN FILE \""<<fn<<"\" GET ERROR!"<<endl;
            return false;
        }

        militarian m;
        while (!fi.eof())
        {
            fi>>m.name>>m.surname>>m.rank;
            mv.push_back(m);            
        }
        fi.close();

        ofstream fo;
        fo.open(fn, ios::app);
        if (!fo)
        {
            cout<<"TRY OPEN FILE \""<<fn<<"\" GET ERROR!"<<endl;
            return false;
        }
        for (int i=0; i<mv.size(); i++)
            fo<<mv[i].name<<" "<<mv[i].surname<<" "<<mv[i].surname<<endl;
        fo.close();
        return true;
}


int _tmain()
{
        char filename[]="D:\\MYBD.txt";
        char c=0;
        while(c!='q')
        {
                cout<<"1 - Enter new."<<endl;
                cout<<"2 - Print all."<<endl;
                cout<<"3 - Delete all."<<endl;
                cout<<"4 - X 2."<<endl;
                cout<<"q - Quit."<<endl;
                cin>>c;
                switch(c)
                {
                        case '1':
                            my_enter(filename);
                            break;
                        case '2':
                            my_print(filename);
                            break;
                        case '3':
                            remove(filename);
                            break;
                        case '4':
                            my_x2(filename);
                            break;
                }
        }


    return 0;
}



Это сообщение отредактировал(а) Dmi3ev - 10.3.2009, 13:12


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

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


Кодофей
****


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

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



Существует простая БД - GDBM
Или вот моя БД на основе бинарного дерева.


Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  btreedb.zip 12,54 Kb


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


Эксперт
****


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

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



Цитата
 Dmi3ev:
 Anikmar, я же дал ему ссылку почти на то, что ему надо, вот код на основе ссылочки:


Ваше сообщение я не имел в виду как бесполезное, извините.   smile 
PM MAIL ICQ   Вверх
mrbrooks
Дата 10.3.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


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

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



Полезность - не полезность - главное намекнуть автору, что бы ерундой не занимался.
PM MAIL   Вверх
Dmi3ev
Дата 10.3.2009, 13:40 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

Ваше сообщение я не имел в виду как бесполезное, извините.

да я про то, что раз автору сказали как делать, можно и пофлудить чуть-чуть))) несмертельно)))


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

PM MAIL   Вверх
suse
Дата 10.3.2009, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо! Посижу подумаю...
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

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

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

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

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


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

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


 




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


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

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