Исключение пассажира из вагона
currentMesto – текущее место в вагоне (int)
Цикл
Если (p.vagon=currentVagon) (p.position=currentMesto) то
Добавить пассажира в список unposedList(p)
Удалить пассажира из списка posedList(p)
Кесли
Кцикл
poezd[currentVagon].places[currentMesto] = false;
foreach(Passagear p, posedList)
{
if ((p.vagon == currentVagon) && (p.position == currentMesto))
{
unposedList.append(p);
posedList.removeOne(p);
break;
}
}
poezd[currentVagon].places[currentMesto] = false;
}
Исключение всех пассажиров
Цикл
poezd[p.vagon].places[p.position] = false;
Кцикл
Добавить все элементы списка в unposedList(posedList)
Очистить список(posedList)
foreach(Passagear p, posedList)
poezd[p.vagon].places[p.position] = false;
unposedList.append(posedList);
posedList.clear();
Создание отчета в файл
pushButton_report_clicked()
{
QString filename = QFileDialog::getSaveFileName(
this, tr("Выбор файла отчёта"),
"", tr("Comma Separated Values (*.csv)"));
if (filename.isEmpty())
return;
QList<Passagear> sortedPosedList = posedList;
Sorter sorter;
std::sort(sortedPosedList.begin(), sortedPosedList.end(), sorter);
QFile file(filename);
file.open(QIODevice::WriteOnly);
QTextStream stream(&file);
int index = 0;
for (int vagonIndex = 0; ; vagonIndex++)
{
stream << '\n' << tr("Вагон: ") << vagonIndex+1 << '\n'
//<< tr("Вагон") << ';'
<< tr("Место") << ';'
<< tr("ФИО") << ';'
<< tr("Пол") << ';'
<< tr("Дата рождения") << ';'
<< tr("Лагерь") << ';'
<< tr("Фирма") << ';'
<< tr("Данные") << '\n';
for (int mestoIndex = 0; mestoIndex < 54; mestoIndex++)
{
if (sortedPosedList[index].vagon == vagonIndex
&& sortedPosedList[index].position == mestoIndex)
{
stream //<< vagonIndex + 1 << ';'
<< mestoIndex + 1 << ';'
<< sortedPosedList[index].fio << ';'
<< sortedPosedList[index].sex << ';'
<< sortedPosedList[index].birth.toString("dd.MM.yyyy") << ';'
<< sortedPosedList[index].campName << ';'
<< sortedPosedList[index].firmName << ';'
<< sortedPosedList[index].info << '\n';
index++;
if (index == sortedPosedList.size())
return;
}
else if (poezd[vagonIndex].places[mestoIndex] == true)
{
stream //<< vagonIndex + 1 << ';'
<< mestoIndex + 1 << ';'
<< tr("СОПРОВОЖДАЮЩИЙ") << '\n';
}
}
}
}
Схема взаимодействия таблиц базы данных
Схема взаимодействия пользователя программы с базой
Добавление ребенка в БД |
Удаление ребенка из БД |
Редактирование сведений о детях |
Просмотр сведений о детях |
База данных сведений о детях |
Физическая модель базы данных
kid
Camp
Firm