моя записка к курсовойx

advertisement
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
БРЯНСКИЙ ГОСУДАРСТВЕННЫЙ
ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра «Информатика и программное обеспечение»
«У Т В Е Р Ж Д А Ю»
Зав. кафедрой «И и ПО», к.т.н., доцент
____________________ Подвесовский А.Г.
«____» _____________ 2012г.
Пояснительная записка
К курсовой работе
Вариант №6
Выполнил студент гр. 11-ПРИ
____________________Козьменкова М.А.
«_____»______________2012 г.
Руководитель
_________ ассистент Подпружников Ю.В.
«_____»______________2012 г.
Брянск 2012
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
БРЯНСКИЙ ГОСУДАРСТВЕННЫЙ
ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра «Информатика и программное обеспечение»
ЗАДАНИЕ
На курсовую работу по дисциплине ПРОГРАММИРОВАНИЕ
Студенту гр. 11-ПрИ
Тема «Каталог. Список учеников»
Содержание работы
Программа должна загружать из файла список учеников,
осуществлять возможность добавления данных нового ученика,
редактирования оценок и фильтрации по баллам.
Рекомендации ________________________________________________
Замечания ___________________________________________________
Дата получения
______________________
Дата сдачи
______________________
Студент
______________________
Руководитель
______________________
Брянск 2012
2
Оглавление
1 Анализ ....................................................................................................... 4
2 Проектирование ....................................................................................... 6
3 Программирование .................................................................................. 7
4 Описание интерфейса программы ......................................................... 9
5 Код программы ...................................................................................... 11
6 Тестирование.......................................................................................... 14
Список используемой литературы ............................................................ 16
3
1 АНАЛИЗ
Техническое задание:
1.НАИМЕНОВАНИЕ И НАЗНАЧЕНИЕ ПРОГРАММЫ
Каталог. Список учеников.
Программа
предназначена
для
наглядного
отображения,
редактирования списка учеников.
Область применения: школы, университеты, институты и т.д.
2.ТРЕБОВАНИЯ К ПРОГРАММЕ
Программа
должна
отвечать
следующим
требованиям:
2.1.1.Возможность менять выбранную оценку в данной таблице(обработка
случая, когда вводится не цифра!).
2.1.2.Выпадающий список по любой из колонок(предмет).
2.1.3.Загрузка данных должна производиться из файла, но без сохранения
изменений.
2.1.4.При запуске программа должна сама загружать данные из файла
автоматически.
2.1.5.Возможность изменения шрифта, цвета фона.
2.1.6.Фильтр:
2.1.6.1.Фильтр (Пример: вывод всех учеников у которых оценка >=4).
2.1.6.2.Фильтр (вывод учеников с наибольшей суммой баллов(3
человека) и при совпадении результатов вывод всех совпадающих
результатов)
2.1.5.Должна быть таблица в которой:
2.1.5.1.Заполнение таблицы должно производиться исполнителем.
2.1.5.2.Ф.И.О.
4
2.1.5.3.Оценки по 3 предметам.
5
2 ПРОЕКТИРОВАНИЕ
В ходе этапа проектирования была определена внутренняя структура
программы.
Основной задачей была реализация считывания списка данных
учеников из файла и осуществление фильтрации этого списка пользователем.
Суть использования метода фильтрации:
1. Считать из выпадающего списка значения для фильтра.
2. Просмотреть вектора данных учеников, удалить из списка лишние.
3. Отобразить пользователю отфильтрованный список.
6
3 ПРОГРАММИРОВАНИЕ
Открываем среду разработки QT Creator, перед нами появляется
стартовая страница, выбираем вкладку Файл -> Новый файл или проект >Проект QT widget -> GUI приложение QT.
После этого, размещаем на форме нужные нам элементы (См. Рис.3.1 )
Рис.3.1. Форма приложения
Понадобится ещё одно диалоговое окно, для настройки типа шрифта и
цвета фона. Для его добавления необходимо нажать правой клавишей мыши
на корневую папку проекта, далее выбрать добавить новый->QT->Класс
формы QT Designer. Выбираем нужный нам шаблон, имя формы и
располагаем на нем нужные элементы, после чего, форма имеет вид (См.
Рис.3.2 )
7
Рис.3.2. Форма настроек шрифта и цвета фона
Понадобится ещё одно диалоговое окно, для редактирования и
добавления учеников. Для добавления диалогового окна необходимо нажать
правой клавишей мыши на корневую папку проекта, далее выбрать добавить
новый->QT->Класс формы QT Designer. Выбираем нужный нам шаблон, имя
формы и располагаем на нем нужные элементы, после чего, форма имеет вид
(См. Рис.3.3 )
Рис.3.3. Форма редактирования и добавления
Подробный разбор всех элементов формы описан в главе «Описание
интерфейса программы».
8
4 ОПИСАНИЕ ИНТЕРФЕЙСА ПРОГРАММЫ
Ниже представлен интерфейс работы программы (См. рис.4.1)
Рис.4.1. Пример работы программы
Интерфейс программы состоит из следующих компонентов:
QComboBox (comboBox) - выпадающий список , который отвечает за
фильтр компонентов. Элементы в QComboBox добавляются автоматически
при чтении файла со списком учеников.
QPushButton (Settings) – кнопка, выполняющая функцию открытия
диалогового окна, в котором пользователь сможет настроить шрифт и цвет
фона.
QPushButton (add) –
кнопка, выполняющая функцию открытия
диалогового окна, с помощью которого пользователь может добавить данные
нового ученика.
9
QPushButton (edit) –
кнопка, выполняющая функцию открытия
диалогового окна, с помощью которого пользователь может изменить данные
ученика.
QLabel
-
2
заголовка,
поясняющие
пользователю
значение
QComboBox.
QListWidget – Элемент интерфейса , в котором выводится список
учеников с оценками, считанный из файла.
10
5 КОД ПРОГРАММЫ
Описание способа загрузки списка учеников из файла:
FILE *f = fopen ("marks.txt","rt");
if (f==NULL) return;
int count;
fscanf (f, "%d", &count);
char Buffer[100];
fgets(Buffer, 100, f);
PeopleCount.clear();
Marks mark;
for (int i=0; i<count; i++)
{
fgets(Buffer, 100, f);
mark.name = QString(Buffer).trimmed();
fgets(Buffer, 100, f);
mark.surname = QString(Buffer).trimmed();
fscanf(f,"%d",&mark.math);
fscanf(f,"%d",&mark.rus);
fscanf(f,"%d",&mark.inform);
fgets(Buffer, 100, f);
PeopleCount.push_back(mark);
fgets(Buffer, 100, f);
}
fclose (f);
Листинг 1. Загрузка списка из файла
Вывод списка на экран:
void MainWindow::ShowList()
{
ui->list->clear();
for (int i=0; i<PeopleCount.size(); i++)
{
ui->list->addItem("Имя: " + PeopleCount[i].name+
"; Фамилия: " + PeopleCount[i].surname +
"; Математка: " + QString::number(PeopleCount[i].math) +
"; Русский: " + QString::number(PeopleCount[i].rus) +
11
"; Информатика: " + QString::number(PeopleCount[i].inform));
}
}
Листинг 2. Вывод списка на экран
Добавление данных:
void MainWindow::on_add_clicked()
{
dobavlenie dlg;
//dlg.SetValue();
if(dlg.exec() && dlg.Dobavlenie().surname!="" && dlg.Dobavlenie().name!=""
&& dlg.Dobavlenie().math && dlg.Dobavlenie().rus && dlg.Dobavlenie().inform)
{
AddItem(dlg.Dobavlenie());
ShowList();
}
}
Листинг 3. Добавление данных
Редактирование данных:
void MainWindow::on_edit_clicked()
{
dobavlenie dlg;
int index=ui->list->currentRow();
if(index==-1)return;
Marks m=PeopleCount[index];
dlg.FillForm(m.name,m.surname,m.math,m.rus,m.inform);
if(dlg.exec()==0) return;
m=dlg.Dobavlenie();
PeopleCount.replace(index,m);
ShowList();
}
Листинг 4. Добавление данных
Код для фильтрации списка:
if(ui->comboBox->currentIndex() == 0)//если выбран "нет"
ui->filtrcomboBox->setEnabled(false);
12
for (int i=0; i<PeopleCount.size(); i++)
{
if(ui->comboBox->currentIndex() !=0)
{
if(ui->comboBox->currentIndex() == 1)
{
if(PeopleCount[i].math < (ui->filtrcomboBox->currentIndex()+1))
continue;
}
if(ui->comboBox->currentIndex() == 2)
{
if(PeopleCount[i].rus < (ui->filtrcomboBox->currentIndex()+1))
continue;
}
if(ui->comboBox->currentIndex() == 3)
{
if(PeopleCount[i].inform < (ui->filtrcomboBox->currentIndex()+1))
continue;
}
}
ui->list->addItem("Имя: " + PeopleCount[i].name+
"; Фамилия: " + PeopleCount[i].surname +
"; Математка: " + QString::number(PeopleCount[i].math) +
"; Русский: " + QString::number(PeopleCount[i].rus) +
"; Информатика: " + QString::number(PeopleCount[i].inform));
}
}
Листинг 5. Фильтр
13
6 ТЕСТИРОВАНИЕ
Результат тестирования программы методом черного ящика:
Таблица 6.1
Тестирование черного ящика
№ теста
1
2
3
4
5
6
Описание теста
Ожидаемый ответ
Некорректное
Список
изменение
данных загружается
файла «marks.txt»
неправильно.
Полученный
ответ
Список
загружается
файла
некорректно.
из
Поочередное
Корректная
Корректная
нажатие клавиш с фильтрация
по фильтрация
по
оценками и баллами баллам выбранного баллам
по предметам.
предмета.
выбранного
Масштабиров предмета.
Масштабиро
ание
окон
под вания
не
Смена шрифта
размер нового типа произошло.
шрифта.
Выход из окна
Ничего
настроек, не выбрав
фон,
нажатием происходит
кнопки ОК.
Выход из окна
Ничего
выбора фона, не
выбрав
фон, происходит
нажатием
кнопки
Cancel.
Выход из окна
Ничего
редактирования
данных
нажатием происходит.
кнопки Cancel.
14
не
Фон
окрашивает
черный цвет
в
Фон
не вызванного
диалогового окна
окрашивается
в
черный.
не
Ничего
происходит.
не
7
Выход из окна
Ничего
добавления данных
ученика
нажатием происходит.
кнопки Cancel.
Ошибки 4 и 5 были исправлены.
15
не
Ничего
происходит.
не
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. Бланшет Жасмин, Саммерфилд Марк. Qt 4: Программирование
GUI на C++ / Пер. с англ. 2-е дополненное издание. - М.: «КудицПресс», 2007г. - 736с.
2. Сергей Бобровский. Технологии C++ Builder, 2007г. – 560с.
3. Юрий Земсков. QT на примерах. – М.: «БХВ-Петербург» , 2008г.
-782с.
16
Download