Главная страница

Отчёт по учебной практике. Руководство пользователя руководство программиста


Скачать 334.29 Kb.
НазваниеРуководство пользователя руководство программиста
АнкорОтчёт по учебной практике
Дата16.09.2022
Размер334.29 Kb.
Формат файлаdocx
Имя файлаPravilny_Otchet_Krauter_Is18.docx
ТипРуководство пользователя
#680484

Содержание

Индивидуальное задание………………………………………………………………3

Введение ………………………………………………………………………………..4

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

Руководство программиста …………………………………………………………..14

Заключение …………………………………………………………………………....16

Список используемой литературы …………………………………………………..17

Приложение листинг программы ……………………………………………………18

Индивидуальное задание

Разработать электронное учебное пособие по дисциплине «Химия». Для разработки электронного пособия был выбран объектно-ориентированный язык программирования C, платформа для разработки интерфейса Windows Presentation Foundation(WPF), поскольку она поддерживает множество общих программных конструкций элементов языка, обладает достаточной удобным интерфейсом, простотой программирования, наглядностью.

Для создания электронного учебного пособия необходимо выполнение следующих требований:

1) наличие программного обеспечения, которое будет в состоянии грамотно использовать в работе;

2) при выборе аппаратных средств для разработки и реализации программного продукта следует также учесть, что важную роль будет играть фактор быстродействия работы ЭВМ, поскольку именно от него зависит время разработки программного продукта;

3) предметная область по данной дисциплине;

4) анализ объема графической и текстовой информации, количества разделов;

5) наличие различных тестов, кроссвордов для более интересного обучающего процесса.

Введение

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

В учебном процессе активно используются различного рода программы (тестирующие, эмуляция, обучающие) по различным дисциплинам и в разных специальностях.

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

Почти каждым преподавателем ведется активный процесс по созданию электронных учебных пособий в самых разнообразных формах и их внедрения в учебный процесс.

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

Данная тема актуальна, потому что существует огромное количество средств, которыми может пользоваться преподаватель в своей работе, благодаря электронному практикуму преподаватель сможет систематизировать и упростить проведение лабораторных работ и учебных практик.

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

При запуске информационной системы открывается главная страница приложения, показанная на рисунке 1.



Рисунок 1 Главное меню приложения

На данной странице расположена 1 кнопка: «Войти» - предназначена для входа в систему.

Для входа в систему необходимо ввести Фамилию И.О. и пароль и нажать на кнопку «Войти». На рисунке 3, 4 и 5 показано диалоговое окна, которое можно встретить при авторизации.



Рисунок 3 Диалоговое окно при авторизации

При авторизации откроется меню, изображенное на рисунке 12.


Рисунок 12 Личный кабинет студента

На данной форме расположено 6 кнопок:

  1. «Лекции»;

  2. «Практические»;

  3. «Тесты»;

  4. «Кроссворд»;

  5. «Глоссарий»;

  6. «Выйти».

При нажатии на кнопку «Кроссворд» откроется форма, изображенная на рисунке 13.



Рисунок 13 «Кроссворд»

После заполнения кроссворда необходимо нажать на кнопку «Результат» и тогда программа начнет проверку и выдаст результат студенту и преподавателю.

При нажатии на кнопку «Мои курсы» откроется форма, изображенная на рисунке 14.



Рисунок 14 Мои курсы

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

При нажатии на кнопку «Тесты» откроется форма, изображенная на рисунке 15.



Рисунок 15 Выбор теста

На данной форме можно проходить тесты, составленные преподавателем. Чтобы начать тестирование необходимо из раскрывающегося списка выбрать тест и нажать на кнопку «Пройти тест». В нижнем списке отображаются результаты студента за тест. На рисунке 16 представлен форма тестирования.



Рисунок 16 Форма тестирования

Когда тестирование подойдет к концу, то студент увидит диалоговое окно, изображенное на рисунке 17.



Рисунок 17 Результаты тестирования

Руководство программиста

Для разработки электронного пособия была выбран язык программирования C#, а интерфейс программирования приложения Windows Presentation Foundation(WPF), обладающий удобным и простым графическим интерфейсом, наличием развитых встроенных средств разработки.

При разработке электронного пособия был использован компьютер со следующими характеристиками:

  1. процессор: Pentium, N3700, 1.6 ГГц

  2. оперативная память: 8 Гб;

  3. видеокарта: Intel HD Graphics.

  4. компьютерная мышь;

  5. клавиатура.

Инструментальное программное обеспечение:

1) Visual Studio 2019;

2) Microsoft Word 2019;

Минимальные системные требования для корректного функционирования информационной системы:

1) процессор с тактовой частотой не менее 1.5 Ггц;

2) жёсткий диск не менее 200 Гб;

3) объём оперативной памяти не менее 16 Гб;

4) компьютерная мышь;

5) клавиатура;

6) монитор с разрешением экрана не менее.

Структура файлов:

1) Form1 – форма с главным меню приложения, на данной странице происходит авторизация пользователя;

2) Кабинет Студента – форма личного кабинета студента;

3) Личный Кабинет – форма личного кабинета преподавателя;

4) AddMater – форма для добавления лекций;

5) FormHome – форма для учета студентов;

6) FormTest – форма для создания новых тестов и вопросов для тестирования;

7) Kros – форма для прохождения кроссворда;

8) ReadMat – форма, на которой студенты могут просматривать добавленные лекции;

9) Result – форма для просмотра результатов за кроссворд;

10) Выбор Теста – форма выбора теста для тестирования;

11) Прохождение Теста – форма, на которой осуществляется тестирование;

12) Результаты Тестирования – форма для просмотра результатов тестирования;

13) Web – форма с встроенным браузером в приложение;

14) Database1.mdf – база данных;

15) Session – класс для хранения данных об авторизованном пользователе и для хранения конфигураций для подключения;

16) Test – класс необходимый для инициализации тестирования.

Заключение

Во время выполнения учебной практики было разработано электронное пособие по дисциплине «Химия», включающее в себя лекции, практические работы, тесты, кроссворд и глоссарий.

В результате выполнения учебной практики были решены следующие задачи:

1. Изучить особенности электронных учебных пособий, ознакомиться с требованиями, которые к ним предъявляют.

2. Проанализировать литературу и электронные источники по эксплуатации объектов сетевой инфраструктуры.

3. Создать электронное учебное пособие по дисциплине «Химия»: подобрать материал, разработать задания для входного и итогового контроля обучающихся.

Таким образом, все поставленные задачи решены. Цель достигнута.


Список используемой литературы

1) Справочник по DrExplain, URL: https://www.drexplain.ru/ [Дата обращения: 27.05.2021]

2) Полное руководство по языку программирования С# 9.0 и платформе .NET 5, URL: https://metanit.com/sharp/tutorial/ [Дата обращения: 23.05.2021]

3) Руководство по программированию в Windows Forms URL: https://metanit.com/sharp/windowsforms/ [Дата обращения: 22.05.2021]

4) Руководство по пользовательскому интерфейсу Visual Studio, URL: https://habr.com/ru/company/pvs-studio/blog/192486/ [Дата обращения 21.05.2021]

5) Кузнецов, С. Д. Основы баз данных / С.Д. Кузнецов. - М.: Бином. Лаборатория знаний, Интернет-университет информационных технологий, 2017. - 488 c.

6) Голицына, О.Л. Информационные системы: Учебное пособие / О.Л. Голицына, Н.В. Максимов, И.И. Попов. - М.: Форум, 2016. - 352 c.

7) Белоногов, Г.Г. Автоматизация процессов накопления, поиска и обобщения информации / Г.Г. Белоногов, А.П. Новоселов. - М.: Наука, 2017. - 256 c.

Приложение Листинг программы

Form1 Метод «Авторизация».

private async void button2_Click(object sender, EventArgs e) // метод button2_Click Для авторизации в программе

{

// два слэшка - это комментарий в коде
/* многострочное

комментирование */
sqlConnection = new SqlConnection(session.bdd);// подключение к базе данных session.bdd переменная bdd класса session, которая хранит строку для подключения.
await sqlConnection.OpenAsync(); //открытие подключения асинхронным методом
SqlDataReader sqlReader = null;

SqlCommand command = new SqlCommand("SELECT * FROM [users] ", sqlConnection); // запрос в БД, запрос: выбрать все записи из таблицы [users]
try // блок try,catch,finaly необоходимо для обработки исключений

{

sqlReader = await command.ExecuteReaderAsync(); //выполнить запрос

// логика авторизации в цикле перебираются все записи из базы данных если текстовое окно совпадет с логином из БД И ЕСЛИ совпадет с паролем , то тогда нужно авторизовать пользователя

while (await sqlReader.ReadAsync()) //цикл (пока есть записи в таблице)

{

// условие для авторизации , если выполняется условие ,то в класс session записать данные пользователя

if (textBox2.Text == Convert.ToString(sqlReader["login"]) && textBox1.Text == Convert.ToString(sqlReader["pass"]))

{

string rol;//объявление переменной

session.login = Convert.ToString(sqlReader["login"]);

session.fam = Convert.ToString(sqlReader["fam"]);

session.name = Convert.ToString(sqlReader["name"]);

session.nametwo = Convert.ToString(sqlReader["nametwo"]);

session.pass = Convert.ToString(sqlReader["pass"]);
session.idUser = Convert.ToInt16(sqlReader["id_user"]);

session.status = Convert.ToInt16(sqlReader["status"]);
// проверка роли пользователя. если код статуса равен 1 ,то это "Преподаватель" ,иначе это студент

if (Convert.ToInt16(sqlReader["status"]) == 1)

{

rol = "Преподователь";

// диалоговое окно

MessageBox.Show($"Добро пожаловать {rol} " + sqlReader["name"]);
session.rol = rol;

// Открытие формы личного кабинета преподвателя

Form ЛичныйКабинет = new ЛичныйКабинет();

ЛичныйКабинет.Show();

this.Hide();
}

else //иначе

{

rol = "Студент";

session.rol = rol;

MessageBox.Show($"Добро пожаловать {rol} " + sqlReader["name"]);

// Открытие формы личного кабинета студента

Form КабинетСтудента = new КабинетСтудента();

КабинетСтудента.Show();

this.Hide();

}

return;

}

else

{
}

}

// диалоговое окно

MessageBox.Show("Неверно введен логин или пароль");

}

// блок catch который сработает в случае если произойдет исключение в блоке try

catch (Exception ex)

{

MessageBox.Show(ex.Message.ToString(), ex.Source.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);

}

finally // независимо от выполнения блока try или catch выполнить блок finally

{

// если подключение открыто ,то его закрывает

if (sqlReader != null)

{

sqlReader.Close();

}

}
}

FormTest Конструктор тестов.

private void FormTest_Load(object sender, EventArgs e) //метод срабатывает когда загружается форма

{

box(); //вызов метода box

}
async void box() //метод box

{

listBox2.Items.Clear(); //очищает содержимое ЛистБокса с тестами

sqlConnection = new SqlConnection(session.bdd);

await sqlConnection.OpenAsync();

SqlDataReader sqlReader = null;

SqlCommand command = new SqlCommand("SELECT * FROM [Test] ", sqlConnection); // запрос в БД, выбрать все из таблицы Тесты

sqlReader = await command.ExecuteReaderAsync();

int i = 0;

int[] nums = new int [40]; //массив

while (await sqlReader.ReadAsync()) //перебор всех записей из БД

{

// добавляет название тестов в ЛистБокс2

listBox2.Items.Add(sqlReader["testname"]);

nums[i] = (int)sqlReader["id_test"]; // массив который записывает в себя id Тестов

i++;

}

Test.nums = nums;

sqlReader.Close(); // закрыть подключение

}

private async void button1_Click(object sender, EventArgs e) // Кнопка удалить вопрос

{

int ind; ind = listBox1.SelectedIndex;// извлекается номер строки, нумерация начинается с 0
sqlConnection = new SqlConnection(session.bdd);

await sqlConnection.OpenAsync();
SqlDataReader sqlReader = null;
SqlCommand command = new SqlCommand("DELETE FROM [quest] WHERE [id_q]=@a", sqlConnection);// запрос на удаление записи
try

{

command.Parameters.AddWithValue("a", Test.numq[ind]);// параметр с id

sqlReader = await command.ExecuteReaderAsync(); //выполнить запрос

}

catch

{

MessageBox.Show("Вы должны выделить вопрос");

}

finally

{

lb2();// после удаления вопроса сработает метод, который обновит ЛистБокс с вопросами

if (sqlReader != null)

{

sqlReader.Close();

}

}
}
private async void button2_Click(object sender, EventArgs e)// кнопка "Добавить вопрос"

{

int ind; ind = listBox2.SelectedIndex;
// добавить вопрос

SqlCommand command = new SqlCommand("INSERT INTO [quest] (id_test,quest,ans1,ans2,ans3,ans4,ans) VALUES(@test,@quest,@ans1,@ans2,@ans3,@ans4,@ans)", sqlConnection);

try

{

command.Parameters.AddWithValue("test", Test.nums[ind]); //параметр который определит в какой именно тест добавить вопрос

command.Parameters.AddWithValue("quest", textBox1.Text);

command.Parameters.AddWithValue("ans1", textBox5.Text);

command.Parameters.AddWithValue("ans2", textBox2.Text);

command.Parameters.AddWithValue("ans3", textBox4.Text);

command.Parameters.AddWithValue("ans4", textBox3.Text);

command.Parameters.AddWithValue("ans", comboBox2.Text);

await command.ExecuteNonQueryAsync();

}

catch

{

MessageBox.Show("Возникла ошибка");

}

listBox2.SelectedIndex = ind;

lb2(); //метод который обновит содержимое ЛистБокса

}

private async void button3_Click(object sender, EventArgs e)

{// Добавить тест

SqlCommand command = new SqlCommand("INSERT INTO [Test] (testname) VALUES(@val)",sqlConnection);

command.Parameters.AddWithValue("val", textBox7.Text);
try

{

await command.ExecuteNonQueryAsync();

MessageBox.Show("Запись успешно добавлена!");

}

catch

{

MessageBox.Show("Возникла ошибка");

}
box();
}

//заполнение вопросами

async void lb2() // метод обновляющий содержимое ЛистБокса с вопросами

{

int ind; ind = listBox2.SelectedIndex;// значение выделенного теста

listBox1.Items.Clear();

sqlConnection = new SqlConnection(session.bdd);

await sqlConnection.OpenAsync();
SqlDataReader sqlReader = null;
SqlCommand command = new SqlCommand("SELECT * FROM [quest] WHERE [id_test]=@a", sqlConnection);

// запрос который вернет записи вопросов выделенного теста

try

{

command.Parameters.AddWithValue("a", Test.nums[ind]);

}

catch

{ }

int i = 0; int j = 0;

int[] nums = new int[100];

try

{

sqlReader = await command.ExecuteReaderAsync();

// listBox1.Items.Add("Код Фамилия Имя Отчество Логин");

while (await sqlReader.ReadAsync())//заполнение листбокса

{

i++;//Инкремент, i++ ; i=i+1 эти две записи эквивалентны ;

listBox1.Items.Add($"ВОПРОС:{i}" + " " + Convert.ToString(sqlReader["quest"])

+ " ВАРИАНТЫ ОТВЕТОВ: 1) " + Convert.ToString(sqlReader["ans1"]) + " ; 2) " + Convert.ToString(sqlReader["ans2"]) + " ; 3) " +

Convert.ToString(sqlReader["ans3"] + " ; 4) " + Convert.ToString(sqlReader["ans4"]) + "; Номер правильного ответа: " + sqlReader["ans"]));

nums[j] = (int)sqlReader["id_q"];// массив в который заносятся id вопроса

j++;

}

Test.numq = nums;
}
catch (Exception ex)

{

MessageBox.Show(ex.Message.ToString(), ex.Source.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);

}

finally

{

if (sqlReader != null)

{

sqlReader.Close();

}

}

}

AddMater Форма курсы для добавления лекций.

private async void button2_Click(object sender, EventArgs e) //кнопка добавить лекцию

{

sqlConnection = new SqlConnection(session.bdd);

await sqlConnection.OpenAsync();

SqlCommand command = new SqlCommand("INSERT INTO [Mater] ([file],name) VALUES(@file,@name)", sqlConnection);

// запрос на добавление записи

try

{ // в БД записывается лишь название файла и наименование темы ,а сам файл хранится в отдельном месте

command.Parameters.AddWithValue("file", textBox1.Text);

command.Parameters.AddWithValue("name", textBox2.Text);

await command.ExecuteNonQueryAsync();
MessageBox.Show("Тема успешно добавлена!");

load(); //обновляет содержимое лекций

}

catch (Exception ex)

{

MessageBox.Show("Возникла ошибка " + ex);

}

}

private void AddMater_Load(object sender, EventArgs e) //метод срабатывающий при загрузки формы

{

load(); // вызов метода load

webBrowser1.Url = new Uri(session.www); //инициализация элемента webBrowser

}

async void load() //метод load, который загружает в ЛистБокс Лекции для студентов

{

listBox1.Items.Clear();

sqlConnection = new SqlConnection(session.bdd);

await sqlConnection.OpenAsync();

SqlDataReader sqlReader = null;

SqlCommand command = new SqlCommand("SELECT * FROM [Mater] ", sqlConnection); //запрос на добавленные лекции

int i = 0;

try

{

sqlReader = await command.ExecuteReaderAsync();

while (await sqlReader.ReadAsync())

{

id[i] = Convert.ToInt32(sqlReader["id"]);
listBox1.Items.Add(Convert.ToString(sqlReader["file"]) + " " + Convert.ToString(sqlReader["name"])

);

i++;

}
}

Форма прохождение теста

private async void ПрохождениеТеста_Load(object sender, EventArgs e) // метод который срабатывает при загрузке формы

{

label2.Text = Test.name; // загружает название теста

Test.i = 0;

int i = 0;

sqlConnection = new SqlConnection(session.bdd);

await sqlConnection.OpenAsync();

SqlDataReader sqlReader = null;

// запрос который считает количество вопросов в тесте

SqlCommand command = new SqlCommand("SELECT Count(*) as Count FROM [quest] WHERE [id_test]=@a", sqlConnection);

command.Parameters.AddWithValue("a", Test.test);

object count = await command.ExecuteScalarAsync();//получаем кол-во вопросов

Test.kolvo = Convert.ToInt32(count); // записываем значение и объявляем массивы

string[] qt = new string[Convert.ToInt32(count)];//массив вопросов, длинной количеством вопросов

string[] ans1 = new string[Convert.ToInt32(count)]; //массив вариантов 1-4

string[] ans2 = new string[Convert.ToInt32(count)]; //массив вариантов 1-4

string[] ans3 = new string[Convert.ToInt32(count)]; //массив вариантов 1-4

string[] ans4 = new string[Convert.ToInt32(count)]; //массив вариантов 1-4

int[] ans = new int[Convert.ToInt32(count)]; //массив правильных вариантов

SqlCommand select = new SqlCommand("SELECT * FROM [quest] WHERE [id_test]=@a", sqlConnection);

// в зависомости от выбранного теста выбираются соответствующие вопросы

select.Parameters.AddWithValue("a", Test.test);

sqlReader = await select.ExecuteReaderAsync();

while (await sqlReader.ReadAsync())

{

// происходит запись вопросов в массив данных

qt[i] = Convert.ToString(sqlReader["quest"]);

ans1[i] = Convert.ToString(sqlReader["ans1"]);

ans2[i] = Convert.ToString(sqlReader["ans2"]);

ans3[i] = Convert.ToString(sqlReader["ans3"]);

ans4[i] = Convert.ToString(sqlReader["ans4"]);

ans[i] = Convert.ToInt32(sqlReader["ans"]);

i++;

}

Test.qt = qt;

Test.ans = ans;

Test.ans1 = ans1;

Test.ans2 = ans2;

Test.ans3 = ans3;

Test.ans4 = ans4;

wopros(); //вызов метода для загрузки вопросов

sqlReader.Close();}

async void wopros() // метод загрузки вопросов

{ /* теперь когда данные с вопросами были загруженны в массивы можно приступать непосредственно

к тестированию */

try

{

// загружает варианты ответов

radioButton1.Text = Test.ans1[Test.i]; // вариант ответа 1

radioButton2.Text = Test.ans2[Test.i]; // вариант ответа 2

radioButton3.Text = Test.ans3[Test.i]; // вариант ответа 3

radioButton4.Text = Test.ans4[Test.i]; // вариант ответа 4

Test.a = Test.ans[Test.i]; // хранение правильного варианта ответа

string str;

str = Test.qt[Test.i];

Test.i++; // счетчик вопросов

label1.Text = $"Вопрос №{Test.i} {str}";// вопрос

}

catch

{/* когда вопросы закончатся ,то программа попытается загрузить вопрос, которой нет

в программе и тогда сработает исключение, таким образом происходит завершение тестирования */

SqlCommand command = new SqlCommand("INSERT INTO [Testing] (id_users,id_test,allbal,error)" +

" VALUES (@id_user,@id_test,@allbal,@error)",sqlConnection);

// запрос в бд , который загрузит результаты тестирования

MessageBox.Show($"Тестирование завершено! У вас {Test.bal} балов из {Test.kolvo}") ;

// диалоговое окно с результатами

command.Parameters.AddWithValue("id_user", session.idUser);

command.Parameters.AddWithValue("id_test", Test.name );

command.Parameters.AddWithValue("allbal", Test.kolvo);

command.Parameters.AddWithValue("error", Test.bal);

try

{

await command.ExecuteNonQueryAsync();

}

catch

{

MessageBox.Show("Возникла ошибка");

}

// откроется форма для выбора теста

Form ВыборТеста = new ВыборТеста();

ВыборТеста.Show();

this.Hide();

private void button1_Click(object sender, EventArgs e) //кнопка "Дальше"

{// здесь происходит обработка правильного ответа ,в случае если ответ

// дан верно , то засчитает бал

if (radioButton1.Checked == true)

{

if (Test.a == 1)

{

Test.bal = Test.bal + 1;

}

}

if (radioButton2.Checked == true)

{

if (Test.a == 2)

{

Test.bal = Test.bal + 1;

}

}

if (radioButton3.Checked == true)

{

if (Test.a == 3)

{

Test.bal = Test.bal + 1;

}

}

if (radioButton4.Checked == true)

{

if (Test.a == 4)

{

Test.bal = Test.bal + 1;

}

}

wopros(); //вызов метода для загрузки следующего вопроса

}




написать администратору сайта