Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 Курс / Практика / metodichka_u_praktika.doc
Скачиваний:
10
Добавлен:
30.05.2020
Размер:
2 Мб
Скачать
☆

Void cLab_04 1Dlg::OnDel()

{

Garage Mas[10]; //Объявить масив для тимчасового зберігання даних int x = m lbGarage.GetCurSel(); //Получить поз. курсора в списку for (int i = 0; i < NumCars; i++) Mas[i]= car[i]; if (NumCars > 0) NumCars--; //Уменьшить к-ть автомобілів

for (i = 0; i < NumCars; i++) //Удалить соотв. запис з if (i < x) car[i]= Mas[i]; //массива даних else car[i]= Mas[i + 1]; m_lbGarage.DeleteString(x); //Удалить соотв.

m_lbResult.DeleteString(x); //строки із списків

if (NumCars > 0) //Если в списку залишилися рядки

{

m_lbGarage.SetCurSel(NumCars - 1); //Установить курсор на m_lbResult.SetCurSel(NumCars - 1); //последнюю рядок CLab_04_1Dlg::OnGarage(); //Обновить дані на екрані

};

}

Додамо два прапорці: ВСТАНОВИТИ ВАГУ ВАНТАЖУ ДЛЯ ВСІХ (m_cbWeight) і ВСТАНОВИТИ ВІДСТАНЬ ДЛЯ ВСІХ (m_cbWay). Якщо який-небудь з цих прапорців встановлений, то при записі даних відповідно вага вантажу або відстань будуть встановлена однаковими для всіх автомобілів. Додамо обробник для кнопки ЗАПАМ'ЯТАТИ:

void CLab 04 1Dlg::OnSave()

{

int x = m lbGarage.GetCurSel(); //Получить поз. курсора в сп. UpdateData(1); //Получить дані

car[x].Litres = m_edLitres; car[x].Price = m_edPrice; car[x].Tonnage = m_edTonnage;

if (m cbWay == 0) car[x].Way = m_edWay; else

for (int i = 0; i < NumCars; i++) car[i].Way = m_edWay; if (m_cbWeight == 0) car[x].Weight = m_edWeight; else

for (int i = 0; i < NumCars; i++) car[i].Weight = m edWeight; for (int i = 0; i < NumCars; i++)

{

m_lbGarage.SetCurSel(i); //Установить поз. курсора в сп.

CLab 04 1Dlg::OnGarage(); //Обновить списки і выч. кол. поїздок UpdateData(0); //Обновить дані

}

m_lbGarage.SetCurSel(x); //Вернуться до поточної поз. курсора CLab_04_1Dlg::OnGarage(); //Обновить списки і выч. кол. поїздок

}

Тут ми записуємо дані в масиви, потім заново проводимо всі обчислення і оновлюємо екран.

Додамо кнопку ОПТИМАЛЬНИЙ ВАРІАНТ. У обробнику буде код:

Void cLab 04 1Dlg::OnOptimum()

{

for (int i = 0; i < NumCars; i++)

{

m_lbGarage.SetCurSel(i); //Установить поз. курсора в сп.

CLab 04 1Dlg::OnGarage(); //Обновить списки і выч. кол. поїздок UpdateData(0); //Обновить дані

}

if (NumCars > 0)

{

CString st;

m_lbResult.GetText(0, st); //Получить перший елемент списку Result = atof(st); //и перетворити його в число

int j = 0; float n;

for (i = 1; i < NumCars; i++) //Найти найменшу вартість {

m_lbResult.GetText(i, st); //Получить елемент списку n = atof(st); //и перетворити його в число

if ( n < Result) //Если він менше отриманого раніше

{

Result = n; j = i;

}

}

m_lbGarage.GetText(j, st); //Получить авт-ль, соотв. наим. стоїмо. st = "Оптимальний варіант - автомобіль " + st;

AfxMessageBox(st); //Вывести повідомлення

}

}

Тут ми знаходимо найменше значення в списку вартостей поїздок і виводимо повідомлення з назвою автомобіля, який відповідає найменшій вартості. Результат на малюнку:

Робота № 5

Робота з файлами в VC++. Використання файлів для зберігання даних.

Мета роботи:

Вивчити прийоми роботи з файлами і способи створення файлів. Отримати практичні навики по використанню файлів для зберігання інформації.

  1. Створіть застосування за допомогою MFС AppWizard (exe), з діалоговим вікном як головне. Використовувати вирішену в лабораторній роботі № 4 завдання, додавши в неї можливість запису внесених до структури даних у файл на диску і можливість в подальшому записати дані з файлу в структуру

  2. Удосконалити отриману в першому пункті програму, додавши режим вибору файлу в стандартному діалозі Windows

  3. Удосконалити отриману програму додавши до кнопок ОК і Cancel Програмний код що нагадує про можливість збереження даних на диску

Підемо тим же дорогою, що і лабораторній роботі № 4, тобто виконаємо всі завдання в одній програмі. Спершу додамо в структуру ще два елементи: