«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
(НИУ «БелГУ»)
Институт инженерных технологий и естественных наук
Кафедра прикладной информатики и информационных технологий
Отчет по лабораторной работе №4
Тема работы: Графический интерфейс с использованием списков, комбинированных полей. Решение задач, использующих изучаемые элементы графического интерфейса, массивы и структуры данных.
студента очного отделения
3 курса 07001504 группы
Марко С. Тангуила
Проверил:
Старший преподаватель
Зайцева Наталья Олеговна
БЕЛГОРОД, 2018
Цель работы
Научиться пользоваться списками и комбинированными полями, а также использовать структуры и массивы языка VC++. Получить практические навыки по использованию различных элементов графического интерфейса и операторов языка VC++.
Создание MFC приложения
В гараже имеется 4 различных автомобиля (ВАЗ, Газель, ГАЗ-66, Мерседес), каждый автомобиль имеет свой расход топлива на 100 км пути, а также свою стоимость топлива.
На рисунке 1 предоставлен результат создания MFC приложения с помощью Microsoft Visual Studio.
Рисунок 1 – MFC диалоговое приложение.
На рисунках 2-5 предоставлены результаты работы кнопок.
Рисунок 2 – Добавление записей.
Рисунок 3 – Удаление записей.
Рисунок 4 – Параметры для всех.
Рисунок 5 – Оптимальный вариант.
struct Garage
{
float Litres;
float Price;
float Way;
int Tonnage;
int Weight;
};
Garage car[10];
float Result1;
int NumCars;
BOOL Claba41Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
Garage.AddString(L"ВАЗ");
Garage.AddString(L"Газель");
Garage.AddString(L"ГАЗ-66");
Garage.AddString(L"Мерседес");
NumCars = 4;
Garage.SetCurSel(0);
Result.SetCurSel(0);
Lit = car[0].Litres;
Price = car[0].Price;
ras = car[0].Way;
gruz= car[0].Tonnage;
ves_gruz = car[0].Weight;
kol = 2;
UpdateData(0);
Result1 = (ras / 100)*Lit*Price*kol;
CString s;
s.Format(L"%0.2f",Result1);
Result.AddString(s);
Result.AddString(L"?");
Result.AddString(L"?");
Result.AddString(L"?");
void Claba41Dlg::OnLbnSelchangeList2()
{
int x = Garage.GetCurSel();
Lit = car[x].Litres;
Price = car[x].Price;
ras = car[x].Way;
gruz = car[x].Tonnage;
ves_gruz = car[x].Weight;
float z;
if (gruz 0)
{
kol = int(ves_gruz / gruz);
z = float(ves_gruz) / float(gruz);
if (kol
}
else kol = 1;
Result1 = (ras / 100)*Lit*Price*kol;
CString s;
s.Format(L"%0.2f", Result1);
Result.DeleteString(x);
Result.InsertString(x, s);
Result.SetCurSel(x);
UpdateData(0);
}
void Claba41Dlg::OnBnClickedButton1()
{
UpdateData(1);
if (Add != "" && NumCars
{
Garage.AddString(Add);
car[NumCars].Litres=Lit;
car[NumCars].Price = Price;
car[NumCars].Way = ras;
car[NumCars].Tonnage = gruz;
car[NumCars].Weight = ves_gruz;
float z;
if (gruz 0)
{
kol= int(ves_gruz / gruz);
z = float(ves_gruz) / float(gruz);
if (kol
}
else kol = 1;
Result1 = (ras / 100)*Lit*Price*kol;
CString s;
s.Format(L"%0.2f", Result1);
Result.AddString(s);
Garage.SetCurSel(NumCars);
Result.SetCurSel(NumCars);
NumCars++;
}
}
void Claba41Dlg::OnBnClickedButton2()
{
int x = Garage.GetCurSel();
for (int i = 0; i = car[i];
if (NumCars 0) NumCars--;
for (int i = 0; i
if (i = Mas[i];
else car[i] = Mas[i + 1];
Garage.DeleteString(x);
Result.DeleteString(x);
if (NumCars 0)
{
Garage.SetCurSel(NumCars - 1);
Result.SetCurSel(NumCars - 1);
Claba41Dlg::OnLbnSelchangeList2();
};
}
void Claba41Dlg::OnBnClickedOk()
{
int x =Garage.GetCurSel();
UpdateData(1);
car[x].Litres = Lit;
car[x].Price = Price; car[x].Tonnage = gruz;
if (Ways == 0) car[x].Way = ras; else
for (int i = 0; i if (Weights == 0) car[x].Weight = ves_gruz;
else
for (int i = 0; i
for (int i = 0; i
{
Garage.SetCurSel(i);
Claba41Dlg::OnLbnSelchangeList2();
UpdateData(0);
}
Garage.SetCurSel(x);
Claba41Dlg::OnLbnSelchangeList2();
}
void Claba41Dlg::OnBnClickedButton3()
{
for (int i = 0; i
{
Garage.SetCurSel(i);
//Claba41Dlg::OnLbnSelchangeList2();
UpdateData(0);
}
if (NumCars 0)
{
CString st;
CString st2;
Result.GetText(0, st);
Result1 = _wtof(st);
int j = 0;
float n;
for (int i = 0; i
{
Result.GetText(i, st);
n = _wtof(st);
if (n
{
Result1 = n;
j = i;
}
}
st2.Format(L"%0.2f", Result1);
Garage.GetText(j, st);
st =L"Оптимальный вариант - автомобиль " + st +"=" + st2;
AfxMessageBox(st);