Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

06.11.2009, 17:13. Просмотров 411. Ответов 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 минут
Ню...идеи есть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2009, 17:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что-то вроде базы данных (C++):

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

Использование псевдопеременных: bd (3,5) = s, где bd - база данных, s - элемент базы данных, тогда с 3 по 5 элементы базы данных заменить на элемент s. - C++
всем доброго времени суток! есть у меня класс bd, массив элементов этого класса table, а вот сам метод: int copyTable(int a, int b) {...

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

OpenGL что не так в коде? вроде все нормально - C++
Собственно вот код, я сижу под убунтой 9.10 и он ругаеться пишет #include&lt;GL/glut.h&gt; int N = 3; int n = 0; int x; int y; ...

что то вроде программки,которая проверяет 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++
Есть у кого то парочка тем для размышления:):) каких то конструкций, где вроде бы так делать нельзя, но почему то работает или не работает!?

2
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
06.11.2009, 18:27 #2
юзай мапы)) создай класс управления базой данных (можешь юзать даже *.тхт только чтобы его никто не удалил) в класе опиши функции добавления, удаления, так проще...
0
Nicotino
1 / 1 / 0
Регистрация: 10.10.2009
Сообщений: 13
10.11.2009, 17:15  [ТС] #3
Кто-тут из админов такой умный? Почистивший мои посты, а? Кроме как нажать кнопочку del можете подсказать дельным советом?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2009, 17:15
Привет! Вот еще темы с ответами:

Посмотрите пожалуйста программу ,вроде все должно работать ,но что-то не так - 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; ...

Программа для отправки сообщений smtp с произвольного сервера (что-то вроде MDA) - C++
Нашёл в интернете, немного дороботал пример отправки сообщений через smtp. Ничего толкового не получилось, программа способна, так...

Вроде переполнение, а вроде бы и нет - 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...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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