Отчет по практике


Самая длинная фамилия

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Тверской государственный университет

Факультет прикладной математики и кибернетики

Кафедра информационных технологий

Направление:010300.62 - Фундаментальная информатика и информационные технологии






ОТЧЕТ ПО УЧЕБНО-ВЫЧИСЛИТЕЛЬНОЙ ПРАКТИКЕ

Тема: «Самая длинная фамилия»





Выполнил:студент 16ой группы


Агададашев Агакерим Асланович

Проверил: К. ф.-м.н., доцент


Сорокин Сергей Владимирович






Тверь - 2013


Содержание


Постановка задачи

Условие задачи

Среда разработки

Приложение

Руководство пользователя

Словесный алгоритм

Описание функций

Код программы



Постановка задачи


Условие задачи


Нужно написать программу, работающую со списком группы. Список хранится в текстовом файле, каждый студент описывается одной строчкой следующего формата:

Фамилия Имя Отчество; пол; год рождения

Где: пол - буквы М или Ж, год рождения - число.

Основная задача

Написать программу, которая определяет самую длинную фамилию среди студентов группы.


Среда разработки:


Qt Creator 5.1.



ПРИЛОЖЕНИЕ


Руководство пользователя








Приложение запускается из Qt Creator 5.1, после нажатия на или при нажатии клавиш.


Первоначально на экране появится главное окно (QDialog) (Рис. 1).





) Ввод данных в таблицу осуществляется последовательно. Передвигаться по ячейкам таблицы можно клавишами .





2) После нажатия на кнопку, программа сохраняет данные в файл students_list.txt.





3) Чтобы получить результат (т.е. самая длинная фамилия) достаточно нажать на кнопку, как наша программа, в специальном окне (QMessageBox) выдаст результат(рис. 2).




4) Кнопка открывает файл students_list.txt, считывает ранее сохраненные*2) данные и выводит их в таблице.








5) Выйти из программы можно нажав на или на соответствующую кнопку Exit.


Замечание: Не выполнив пункт (1) не следует выполнять-(2). Выполнив (1)-(2) или (4) - если данные, ранее, уже добавлены, можно выполнить (3). (4) доступен в любом случае.




Рис. 2


Словесный алгоритм


При запуске программы появиться окно, с базовым классом QDialog.

Внутри окна расположены объекты. В нашем случае таблица (TableWidget) и кнопки для сохранения (Save), считывания ранее сохраненных данных(Open) и вывода(Result).

При нажатии на [Exit] приложение выполняет действие - «Закрытие Главного окна» или просто close(), т.е. фактически выходит из приложения.

После ввода данных в таблицу и при нажатии [Save], приложение сохраняет данные в файл.

Кнопка [Open] загружает данные из текстового файла в таблицу, если она заполнена, заменяет (очищает и заполняет).

При нажатии на кнопку [Result] появится модальное окно (QMessageBox) с результатом (Рис. 2, выделена красной рамкой).

Как мы уже знаем, модальное окно блокирует родительское. Для его закрытия необходимо нажать на [OK] или.





Описание функций


Опишем строение главного окна:

students::students(QWidget *parent) :(parent), //Тип окна: QDialog(new Ui::students)

{>setupUi(this);

//Таблица с размерностью 5x5, т.е.:>tableWidget->setRowCount(5); //количество строк равна 5(ячейкам)>tableWidget->setColumnCount(5); //количество столбцов равна

(ячейкам)

//Связка слотов и сигналов для open, save, exit

connect (ui->open, SIGNAL(clicked()), SLOT (Open()));//При

поступлении сигнала от open обращайся к ф-и Open()

connect (ui->save, SIGNAL(clicked()), SLOT (Save()));//При поступлении

сигнала от save обращайся к ф-и Save()

connect (ui->exit, SIGNAL(clicked()), SLOT (close()));//При поступлении

сигнала от exit обращайся к ф-и close()

}

::~students() //...Деструктор

{ui;

}

. . .



Разберем теперь каждую функцию по отдельности:

Для работы с файлами подключаем необходимые библиотеки:


. . .

#include

#include

. . .


Функция сохранения данных(Save):


/***Сохранение данных в файл***/

void students::Save() {file("students list.txt"); //

file.open(QIODevice::WriteOnly); //Открываем файл только для чтения

//последовательно сохраняем:...

QTextStream out (&file); // QTextStream-класс для чтения и записи

out tableWidget->rowCount()

встретится конец строки(int i = 0; i tableWidget->rowCount(); ++i)(int j = 0; jtableWidget->item(i, j)->text()

пока все строки добавляя разделитель" ".close();//Закрываем файл

}


Данная функция использует класс для чтения и записи - QTextStream.

Функция открывает файл и добавляет в него последовательно, сначала слова первой строки а затем, после того как увидел конец строки, переходит к обработке 2 строки и т.д.


Функция считывания данных(Open):


void students::Open() {

QFile file("students list.txt");//(1).open(QIODevice::ReadOnly); //Открываем файл (1) только для

чтения

ok; //задаем логич. переменную ok

QTextStream in (&file); // QTextStream-класс для чтения и записи>tableWidget->setRowCount((in.readLine()).toInt(&ok)); //

программа список длинный фамилия

добавляем, ранее добавленные слова обратно в строку. Определить конец строки и не путать с отдельными словами помогает readline (которая возвращает)


пустое QString):*item;str;(int i = 0; i tableWidget->rowCount(); ++i) {= in.readLine();(int j = 0; jtableWidget->setItem(i, j, item);

}

}.close();

}


Данная функция считывает данные из файла, определяя конец строки и отдельно слова, последовательно добавляет их в ячейки нашей таблицы, начиная от нулевой(0,0). После добавления всей первой строки аналогично поступает со второй и с последующими.


Функция вывода сообщения (Result):


void students::on_result_clicked() //при поступлении сигнала от result,

делай:

{c = -1;longest;

//сравнивает последовательно слова наход-ся в 1 столбце:

for (int i = 0; i tableWidget->rowCount(); ++i)(ui->tableWidget->item(i,0)->text().length() > c) {= ui->tableWidget->item(i,0)->text().length();

//longest - переменная, в котором самое длинное слов:

longest = ui->tableWidget->item(i,0)->text();

}

//Вывод в виде сообщения найденного слова, а точнее значение longest:

QMessageBox::information(this,tr("Результат"),tr("Самая длинная

фамилия - %1").arg(longest));

}


Функция, при получении сигнала от нажатия на result, считывает данные 1 столбца (i,0) каждой строки последовательно сравнивая их, запоминает максимальное по длине слово. А после окончания сравнения, выводит в форме QMessageBox, с заголовком «Результат», фразу «Самая длинная фамилия - » + .



Код программы





students.h( ):

#ifndef STUDENTS_H

#define STUDENTS_H

#include

#include Ui {students;

}QTextEdit;students : public QDialog

{_OBJECT > listBirth; > listGender;:students(QWidget *parent = 0);

~students();slots:Open();Save();Result();doIt();slots:on_result_clicked();


void on_exit_clicked();:::students *ui;

};

#endif // STUDENTS_H




main.cpp( ):

#include "students.h"

#include main(int argc, char *argv[])

{a(argc, argv);w;.show();a.exec();

}




students.cpp( ):

#include "students.h"

#include "ui_students.h"

#include

#include

#include

#include ::students(QWidget *parent) :(parent), //Тип окна: QDialog(new Ui::students)

{>setupUi(this);

//Таблица с размерностью 5x5, т.е.:>tableWidget->setRowCount(5); //количество строк равна 5(ячейкам)>tableWidget->setColumnCount(5); //количество столбцов равна

(ячейкам)

//Связка слотов и сигналов для open, save, exit

connect (ui->open, SIGNAL(clicked()), SLOT (Open()));//При

поступлении сигнала от open обращайся к ф-и Open()

connect (ui->save, SIGNAL(clicked()), SLOT (Save()));//При поступлении

сигнала от save обращайся к ф-и Save()

connect (ui->exit, SIGNAL(clicked()), SLOT (close()));//При поступлении

сигнала от exit обращайся к ф-и close()

}::~students() //...Деструктор

{ui;

}

//Подключаем библиотеки для работы с файлами:

#include

#include

/***Считывание данных из файла***/students::Result() {

}students::Open() {file("students list.txt");//(1).open(QIODevice::ReadOnly); //Открываем файл (1) только для

чтенияok; //задаем логич. переменную ok

QTextStream in (&file);>tableWidget->setRowCount((in.readLine()).toInt(&ok));*item;str;(int i = 0; i tableWidget->rowCount(); ++i) {= in.readLine();(int j = 0; jtableWidget->setItem(i, j, item);

}

}.close();

}

/***Сохранение данных в файл***/

void students::Save() {file("students list.txt"); //(1).open(QIODevice::WriteOnly); //Открываем файл (1) только для

чтения

//последовательно сохраняем:...out (&file);

out tableWidget->rowCount()

встретится конец строки(int i = 0; i tableWidget->rowCount(); ++i)(int j = 0; jtableWidget->item(i, j)->text()

все строки добавляя разделитель" ".close();//Закрываем файл

}

void students::on_result_clicked() //при поступлении сигнала от result,

делай:

{c = -1;longest;

//сравнивает последовательно слова наход-ся в 1 столбце:

for (int i = 0; i tableWidget->rowCount(); ++i)(ui->tableWidget->item(i,0)->text().length() > c) {= ui->tableWidget->item(i,0)->text().length();

//longest - переменная, в котором самое длинное слов:

longest = ui->tableWidget->item(i,0)->text();

}

//Вывод в виде сообщения найденного слова, а точнее значение longest:

QMessageBox::information(this,tr("Результат"),tr("Самая длинная

фамилия - %1").arg(longest));}


Не сдавайте скачаную работу преподавателю!
Данный отчет по практике может быть использован Вами как образец, в соответсвтвии с примером, но с данными своего предприятия, Вы легко сможете написать отчет по своей теме.

Другие материалы:
Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем отчёт по практике самостоятельно:
! Отчет по ознакомительной практике В чем заключается данный вид прохождения практики.
! Отчет по производственной практики Специфика и особенности прохождения практики на производстве.
! Отчет по преддипломной практике Во время прохождения практики студент собирает данные для своей дипломной работы.
! Дневник по практике Вместе с отчетам сдается также дневник прохождения практики с ежедневным отчетом.
! Характеристика с места практики Иногда преподаватели требуеют от подопечных принести лист со словесной характеристикой работы студента, написанный ответственным лицом.

Особенности отчётов по практике:
по экономике Для студентов экономических специальностей.
по праву Для студентов юридических специальностей.
по педагогике и психологии Для студентов педагогических и связанных с психологией специальностей.
по строительству Для студентов специальностей связанных со строительством.
технических отчетов Для студентов технических специальностей.
по информационным технологиям Для студентов ИТ специальностей.
по медицине Для студентов медицинских специальностей.