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

Обновлении записи в связанном списке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Карточная игра http://www.cyberforum.ru/cpp-beginners/thread398251.html
Здравствуйте! Есть карточная игра, нужно сделать программу для игры на компьютере и далее, чтобы можно было играть в интернете в нее онлайн с живыми людьми. сколько будет стоить? Для жителей...
C++ Переведите с Паскаля Всем привет! Нарыл в инете прогу на Паскале (прога определяет день недели по дате). Нужно перевести ее на С++ program denned; ... http://www.cyberforum.ru/cpp-beginners/thread398243.html
Как нарисовать на С++ 3D пистолет... C++
Нарисовать на С++ 3D пистолет, который можно вращать(проверка на трехмерность), и за компанию , чтоб стрелял. Как это написать на Visual C++? Да, это снова я =)
Можно ли как-то инициализировать массив? C++
Можно ли как-то инициализировать массив ar? class digit { int a, b; public: digit (int a_, int b_) { a=a_; b=b_; }
C++ Ошибки в программе http://www.cyberforum.ru/cpp-beginners/thread398228.html
Всем здравствуйте!!! Не так давно начала изучать С++ и вот делая очередную практическую наткнулась на ошибки и незнаю как исправить. Задание расписанно очень подробно, поэтому прикрепляю файл с...
C++ Чтение сложной строки из файла с помощью fwscanf Здравствуйте. Используя функцию fwscanf(inFileData, L"%20s", str); , обнаружил, что считывание происходит до первой запятой, а хотелось-бы перекачивать в str всю строку целиком. (Текст вводился в... подробнее

Показать сообщение отдельно
Konkin
0 / 0 / 0
Регистрация: 03.12.2010
Сообщений: 30

Обновлении записи в связанном списке - C++

04.12.2011, 11:13. Просмотров 312. Ответов 0
Метки (Все метки)

Здравствуйте. Пишу код для GUI приложения. По заданию я обязан сделать функцию, которая бы изменяла запись в базе данных, возвращалась позиция записи в соответствии с порядком сортировки. Так же любой перебор элементов обязан делать только итераторами. Обязан использовать контейнер QLinkedList. Аргументы функции указаны в коде с комментариями.

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
/** Изменить запись в базе данных
    \param [in] id -  идентификатор  редактируемой  записи
    \param [in] name - название редактируемого поля
    \param [in] value - новое значение редактируемого поля (в текстовом формате)
    \return - новая  позиция записи в соответствии с порядком сортировки
*/
int FootballDataBase::update(unsigned int id, const QString & name, const QString & value)
{
    class Football record; // Времянка
    bool isFind=false; // Флаг о нахождении нужной записи по id
 
    QLinkedList<Football>::iterator iter; // Созадние константного STL-итератора
    iter=recordsInBase.begin(); // Ставим его в начало
 
    // Пока есть следующая запись и не найдена нужная запись
    while(iter!=recordsInBase.end() && !isFind)
    {
        if((*iter).id==id) // Если id записи равен входному
        {
            record=(*iter); // Переписываем эту запись во времянку
            isFind=true; // Ставим флаг, что нашли
        }
        else
        {
            iter++;
        }
    }
    
    remove(id); // Удаляем входную запись по данному id
 
    if(name=="footballerFIO") // Если имя редатируемого поля footballerFIO
    {
        record.anketa.footballerFIO=value; // Обновляем эту ФИО
    }
    else if(name=="dateOfBirth") // Если имя редатируемого поля dateOfBirth
    {
        QDate modValue=QDate::fromString(value); // Переводим из строки в QDate
        record.anketa.dateOfBirth=modValue; // Обновляем дату
    }
    else if(name=="Nation") // Если имя редатируемого поля Nation
    {
        int IntValue=value.toInt(0,10); // Переводим в целое число
        switch (IntValue) // Выбираем нужный параметр из перечисления
        {
            case 0: record.anketa.Nation=record.anketa.Russia; break;
            case 1: record.anketa.Nation=record.anketa.Ukraine; break;
            case 2: record.anketa.Nation=record.anketa.Poland; break;
            case 3: record.anketa.Nation=record.anketa.Bulgaria; break;
            case 4: record.anketa.Nation=record.anketa.Brazil; break;
        }
    }
 
    int position=insertFootballer(record); // Вставим футболиста не нарушая порядок сортировки
    return position;
}
Структура класса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Football
{
public:
    struct
    {
        QString footballerFIO; // ФИО футболиста
        QDate dateOfBirth;  // Дата рождения футболиста
        enum  // Национальность
        {
            Russia=0,
            Ukraine=1,
            Poland=2,
            Bulgaria=3,
            Brazil=4
        }Nation;
    }anketa;    
 
    int SummaContract; // Зарплата
 
    unsigned int id;    // Идентификатор
};
Код внутренних функций приводить не буду, не в них суть. Вкратце поясню код. Ищу запись в связанном списке по id, копирую её во времянку, саму запись удаляю, по названию редактируемого поля нахожу что нужно заменить при апдейте, сохраняю отредактированную запись в контейнер (это делается внутри функции insertFootballer).

Собственно вопрос. Можно ли как то обойтись без удаления и вставки записи заново в нужное место? Хотелось бы просто обновить нужное поле записи и переместить каким нибудь хитрым способ запись на нужную позицию в соответствии с сортировкой. Подскажите как это реализовать?

Заранее спасибо.

Добавлено через 1 час 20 минут
Никто не знает?

Добавлено через 9 часов 42 минуты
HELP
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru