Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nicotino
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 13
#1

Что-то вроде базы данных - C++

06.11.2009, 17:13. Просмотров 404. Ответов 2
Метки нет (Все метки)

Извините за название темы, лучше не смог обозвать ее.
Простите если напсал не в ту тему, просьба к модерам\админам, тогда переместить пост в нужный раздел. Заранее огромное спасибо.


Значит по теме. Проблема в следующем. Мне нужно написать такую грубо говоря мини базу данных на ВС.
Программа должна иметь простейшее меню, позволяющее добавлять новые данные, удалять выбранные пользователем данные и выводить весь список на экран монитора. Мой фрагмент кода такой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <io.h>
#include <time.h>
#include <stdlib.h>
#include <locale.h>
 
typedef struct _DItem
{
    int Id;
    char Name[50];
    char Group[50];
    int  IQ;
    int TelefonNumber;
    char Adress[70];
    int Year;
    struct _DItem *prev, *next;
} DItem;
 
// Создает новый элемент списка
DItem* CreateItem();
// Добавляет новый элемент списка в его конец
void Add(DItem *end, DItem *NewElem);
// Удаляет элемент списка
void Delete(DItem *end, DItem *NewElem);
 
 
 
int main()
{
    // Настраиваим программу на используемый язык.
    char  buffer[255];
    DItem *Head = NULL;
    DItem *Curr;
    DItem *Old;
    DItem *Elem;
    int    NumbMenu;
    int    Id;
    clrscr();
 
    // Создание первого элемента
    Head    = CreateItem();
    Head->Id = 0;
    Head->Name[0] = NULL;
 
    for(;;)  //здесь в скобках два знака ;;, это форум определяет как смайл
    {
        // Вывод на экран меню
        cout << endl;
        cout << "0 - выход" << endl;
        cout <<"1 - новый элемент" << endl;
        cout << "2 - удалить элемент" << endl;
        cout << "3 - вывести весь список" << endl;
        cout << "Номер команды меню: ";
        cin >> NumbMenu;
        if(NumbMenu == 0)
            break;
 
        switch(NumbMenu)
        {
        case 1:
 
            // Создание нового элемента
            DItem *Elem = CreateItem();
            // Ввод информации в новый элемент
            cout << "Имя: ";
            cin >> Elem->Name;
            cout << "Группа: ";
            cin >> Elem->Group;
            cout << "IQ: ";
            cin >> Elem->IQ;
 
            Add(Head->prev, Elem);
            break;
 
        case 2:
 
 
            cout << "\nИдентификатор удаляемого элемента: ";
            cout << buffer;
            cin >> Id;
            Delete(Elem->prev, Elem);
            break;
        case 3:
            Curr = Head;
            cout << "\nВ списке находяться следующие элементы:";
    if(Curr)
    do
    {
        cout << endl << Curr->Id << endl;
        Curr = Curr->next;
        cout << Elem->Name  << endl;
        cout << Elem->Group << endl;
        cout << Elem->IQ << endl;
 
    }while(Curr != Head);
 
        }
 
    }
 
    cout << endl;
    cout << "\nПрограмма работу закончила";
    cout << endl << buffer << endl;
 
    getch();
    return 0;
}
 
///////////////////////////////////////////////////
// Создает новый элемент
// списка и возвращает указа-
// тель на него.
//
DItem* CreateItem()
{
    DItem* NewElem;
 
    NewElem = new DItem;
    NewElem->next = NewElem;
    NewElem->prev = NewElem;
 
    return NewElem;
}
 
///////////////////////////////////////////////////
//
void Add(
         DItem *end,    // указатель на первый элемент
         DItem *NewElem // указатель на новый элемент
         )
{
    if(!NewElem)
        return;
    if(end)
    {
        NewElem->prev = end;
        NewElem->next = end->next;
        end->next     = NewElem;
        NewElem->next->prev = NewElem;
    }
}
 
///////////////////////////////////////////////////
// Удаляет элемент списка
void Delete(
            DItem *end,  // указатель на удаляемый элемент списка
            DItem *NewElem  // указатель на замещаемый элемент списка
            )
{
    if(!NewElem)
        return;
 
    NewElem->next->prev = NewElem->prev;
    NewElem->prev->next = NewElem->next;
    NewElem->next = NewElem;
    NewElem->prev = NewElem;
    end;
}



Собсвенно просьба такая...помогите найти ошибки, а точнее отладить программу.... Пр. когда добавляешь первый элемент, все хорошо, когда следующий добавляешь он пишеться на тот...и в итоге 1ого элемента уже нет....при выводе всего списка....и почему-то не хочет работать удоление...Заранее большое спасибо.

Добавлено через 1 час 14 минут
Ню...идеи есть?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2009, 17:13     Что-то вроде базы данных
Посмотрите здесь:

Структуры (Что-то вроде базы данных по бытовой технике) - C++
Всем доброго времени суток. Дали нам задачу по работе со struct. Мне нужно реализовать что то вроде базы данных по бытовой технике. В...

что-то вроде события в консоли - C++
пробую сделать что-то вроде змейки в консольке, но ни как не пойму как гуглить такую проблему: по маленькому полю перемещается курсор,...

что то вроде программки,которая проверяет Hosts и лечит - C++
void main (){ int c=0; FILE *f=fopen(&quot;C:\WINDOWS\system32\drivers\etc\hosts&quot;, &quot;a&quot;); while((c=getc(f))!=EOF){ ...

Нужен пример того, что работать вроде не должно, но работает - C++
Есть у кого то парочка тем для размышления:):) каких то конструкций, где вроде бы так делать нельзя, но почему то работает или не работает!?

Посмотрите пожалуйста программу ,вроде все должно работать ,но что-то не так - C++
#include &lt;iostream&gt; using namespace std; int main() { int a,b,c,i,z; c=0; cout&lt;&lt; &quot;enter the number&quot;&lt;&lt; endl; cin &gt;&gt; a; ...

Вроде переполнение, а вроде бы и нет - C++
День добрый! Интересует, почему си не дает мне сделать следующую штуку. int a = 4999998848; cout &lt;&lt; a*2 &lt;&lt; endl; По...

Обход упорядоченного дерева. Не могу понять на что ругается прогорамма... Ошибок вроде как нет... - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;iomanip&gt; #include &lt;string&gt; #include &lt;vector&gt; #include...

С++ задача, надо зациклить, скажите что не так, ошибку выдает в switch, про точку с запятой знаю их вроде не н - C++
{ do { char c; system(&quot;echo Есть три задачи&quot;); system(&quot;echo 1-Следование&quot;); system(&quot;echo 2-Ветвление&quot;); system(&quot;echo...

Базы данных на си - C++
не понимаю в чем ошибка #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;math.h&gt; #define n 3; #define...

Базы данных - C++
Какую технологию лучше использовать для баз данных для обработки в С++ ?

С++ базы данных - C++
Я понимаю, что возможно следующие вопросы уже обсуждались на этом форуме, возможно и не раз, но по поиску ничего вразумительного (понятного...

Базы данных - C++
Сформировать двоичный файл из элементов структуры &quot;Государство&quot;, состоящей из названия; столици; численности населения; занимаемой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
508 / 430 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
06.11.2009, 18:27     Что-то вроде базы данных #2
юзай мапы)) создай класс управления базой данных (можешь юзать даже *.тхт только чтобы его никто не удалил) в класе опиши функции добавления, удаления, так проще...
Nicotino
0 / 0 / 0
Регистрация: 10.10.2009
Сообщений: 13
10.11.2009, 17:15  [ТС]     Что-то вроде базы данных #3
Кто-тут из админов такой умный? Почистивший мои посты, а? Кроме как нажать кнопочку del можете подсказать дельным советом?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru