Файл: Отчет по преддипломной практике огу 09. 03. 02. 7223. 223 П руководитель от кафедры.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 366

Скачиваний: 11

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Приложение А
(обязательное)



Листинг программного кода
Form.cs
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;
namespace Tests

{

public partial class Form1 : Form

{

User user = new User();

public Form1()

{

InitializeComponent();

AuthForm auth = new AuthForm(user);

auth.ShowDialog();

toolStripStatusLabel1.Text = string.Format("{0} {1} ({2})", user.Name, user.SurName, user.UserRole);

FillTable();

}
private void FillTable()

{

dataGridView1.DataSource = null;

SqlConnection connect = new SqlConnection(Properties.Settings.Default.connectionString);

//SqlDataAdapter adapter = new SqlDataAdapter(string.Format("SELECT About,Result,DateTesting FROM resulttest inner join tests on resulttest.idTest=tests.idTests inner join users on resulttest.idUser = users.idUsers where idUsers={0}", user.ID), connect);

if (toolStripStatusLabel1.Text == string.Format("admin admin (admin)"))

//Вывод для админа

{ SqlDataAdapter adapter = new SqlDataAdapter(string.Format("SELECT Name,About,Result,DateTesting FROM resulttest inner join tests on resulttest.idTest=tests.idTests inner join users on resulttest.idUser = users.idUsers"), connect);

DataTable table = new DataTable();

adapter.Fill(table);
dataGridView1.DataSource = table.DefaultView;

}

else

//Вывод для пользователя

{ SqlDataAdapter adapter = new SqlDataAdapter(string.Format("SELECT About,Result,DateTesting FROM resulttest inner join tests on resulttest.idTest=tests.idTests inner join users on resulttest.idUser = users.idUsers where idUsers={0}", user.ID), connect);

DataTable table = new DataTable();

adapter.Fill(table);
dataGridView1.DataSource = table.DefaultView;

}

//DataTable table = new DataTable();

// adapter.Fill(table);
// dataGridView1.DataSource = table.DefaultView;

// dataGridView1.Columns["idUsers"].Visible = false;

}
private void создатьТестToolStripMenuItem_Click(object sender, EventArgs e)

{

CreateTest createTest = new CreateTest(user);

createTest.ShowDialog();

}
private void пройтиТестToolStripMenuItem_Click(object sender, EventArgs e)

{

SelectTest selectTest = new SelectTest(user);

selectTest.ShowDialog();

FillTable();

}
private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

Close();

}

}

}
AuthForm.cs
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;
namespace Tests

{

public partial class AuthForm : Form

{

User user;

public AuthForm(User _user)

{

InitializeComponent();

this.user = _user;

}
private void button1_Click(object sender, EventArgs e)

{

Environment.Exit(0);

}
private void button2_Click(object sender, EventArgs e)

{

if (!string.IsNullOrWhiteSpace(textBox1.Text) && !string.IsNullOrWhiteSpace(textBox2.Text))

{

SqlConnection connect = new SqlConnection(Properties.Settings.Default.connectionString);

SqlDataAdapter adapter = new SqlDataAdapter(string.Format("select Name,SurName,Login,Role,idUsers from Users where Login = '{0}' and Password = '{1}'",textBox1.Text,textBox2.Text), connect);

DataTable table = new DataTable();

adapter.Fill(table);

if(table.Rows.Count!=0)

{

user.ID = int.Parse(table.Rows[0]["idUsers"].ToString());

user.Name = table.Rows[0]["Name"].ToString();

user.SurName = table.Rows[0]["SurName"].ToString();

user.Login = table.Rows[0]["Login"].ToString();

user.UserRole = (Role)int.Parse(table.Rows[0]["Role"].ToString());

Close();

}

else

MessageBox.Show("Логин или пароль неверны!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

else

MessageBox.Show("Поля логин и пароль не могут быть пустыми!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);

}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

{

Registration reg = new Registration();

reg.ShowDialog();

}

}

}
TestingForm.cs
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;
namespace Tests

{

public partial class TestingForm : Form

{

List listQuest = new List();

Test test;

User user;

double point = 0;

public TestingForm(Test _test,User _user)

{

InitializeComponent();

test = _test;

user = _user;

GetFullTest();

GetQuest();

}
private void WriteResult()

{

SqlConnection connect = new SqlConnection(Properties.Settings.Default.connectionString);

SqlCommand command = new SqlCommand(string.Format("insert into resulttest(idUser,idTest,DateTesting,Result) values({0},{1},'{2}','{3}')",user.ID,test.Index, DateTime.Now.ToString("HH:mm:ss dd:MM:yyyy"),(100.0 * point / dictionary.Count).ToString("#.##")), connect);

connect.Open();

command.ExecuteNonQuery();

connect.Close();

}

private void GetFullTest()

{

string command = "SELECT * FROM testwithquestions inner join tests ON testwithquestions.idTest=tests.idTests inner join questions on testwithquestions.idQuestion = questions.idQuestions where tests.idTests = " + test.Index.ToString();

SqlConnection connect = new SqlConnection(Properties.Settings.Default.connectionString);

SqlDataAdapter adapter = new SqlDataAdapter(string.Format("{0}",command), connect);

DataTable table = new DataTable();

adapter.Fill(table);
for (int i = 0; i < table.Rows.Count; i++)

{

listQuest.Add(new Questions

{

CategoryObj = (CategoryQuest)int.Parse(table.Rows[i]["Type"].ToString()),

Index = int.Parse(table.Rows[i]["idQuestions"].ToString()),

Value1 = table.Rows[i]["Value1"].ToString(),

Value2 = table.Rows[i]["Value2"].ToString()

});

}

}

int index = -1;

double hod = 0;

Dictionary dictionary = new Dictionary();

class ObjQuest

{

public CategoryQuest _Category { get; set; }

public object MyClass { get; set; }

}

private void GetQuest()

{

for (int i = 0; i < listQuest.Count; i++)

{

switch ((int)listQuest[i].CategoryObj)

{

//case 0: dictionary.Add(i, new ObjQuest { _Category = CategoryQuest.Category_1, MyClass = TaskWithOpenAnswer(listQuest[i]) }); break;

case 1: dictionary.Add(i, new ObjQuest { _Category =CategoryQuest.Category_2, MyClass =TaskWithSelectedValue(listQuest[i])}); break;

// case 2: dictionary.Add(i, new ObjQuest { _Category =CategoryQuest.Category_3,MyClass = OrderingSequence(listQuest[i])}); break;

// case 3: dictionary.Add(i, new ObjQuest { _Category = CategoryQuest.Category_4, MyClass = RelevantIdentified(listQuest[i]) }); break;

}

}
SetQuest();

}
private void SetQuest()

{

index++;

hod = (100.0 * point / dictionary.Count); // сравнение результата

if (index == dictionary.Count)

{

WriteResult();

if ((hod >= 0) && (hod < 15))

MessageBox.Show(string.Format("Тестируемый: {0} {1} \nРезультат: {2} \nВаше оборудование впорядке!", user.Name, user.SurName, (100.0 * point / dictionary.Count).ToString("#.##")), "Результат!", MessageBoxButtons.OK, MessageBoxIcon.Information);
if ((hod >= 15) && (hod < 60))

MessageBox.Show(string.Format("Тестируемый: {0} {1} \nРезультат: {2} \nВашему оборудованию рекомендован ремонт!", user.Name, user.SurName, (100.0 * point / dictionary.Count).ToString("#.##")), "Результат!", MessageBoxButtons.OK, MessageBoxIcon.Information);
if (hod >= 60)

MessageBox.Show(string.Format("Тестируемый: {0} {1} \nРезультат: {2} \nВашему оборудованию рекомендована замена!", user.Name, user.SurName, (100.0 * point / dictionary.Count).ToString("#.##")), "Результат!", MessageBoxButtons.OK, MessageBoxIcon.Information);
Close();

}

else

{

label5.Text = string.Format("Вопрос: {0}\\{1}", index + 1, dictionary.Count);

Random r = new Random();

switch ((int)dictionary[index]._Category)

{

case 0:

WithOpenAnswer quest_WithOpenAnswer = (WithOpenAnswer)dictionary[index].MyClass;

textBox2.Text = quest_WithOpenAnswer.Question;

panel3.BringToFront();

break;

case 1:

WithSelectedValue quest_WithSelectedValue = (WithSelectedValue)dictionary[index].MyClass;

checkedListBox1.Items.Clear();

textBox1.Text = quest_WithSelectedValue.Questions;

for (int i = 0; i < quest_WithSelectedValue._Quest.Count; i++)

{

checkedListBox1.Items.Add(quest_WithSelectedValue._Quest[i].Answer);

}

panel2.BringToFront();

break;

case 2:

Sequence quest_Sequence = (Sequence)dictionary[index].MyClass;

Column2.Items.Clear();

dataGridView1.Rows.Clear();

var resultMix = quest_Sequence.OrdSeq.OrderBy(x => r.Next()).ToArray();

Column2.Items.AddRange(resultMix);
for (int i = 0; i < quest_Sequence.OrdSeq.Length; i++)

{

dataGridView1.Rows.Add((i + 1).ToString());

}
panel4.BringToFront();

break;
case 3:

dataGridView2.Rows.Clear();

RelevantId quest_RelevantId = (RelevantId)dictionary[index].MyClass;

Column3.Items.Clear();

Column4.Items.Clear();

var resultMix2 = quest_RelevantId.Listfirst.OrderBy(x => r.Next()).ToArray();

var resultMix3 = quest_RelevantId.ListSecond.OrderBy(x => r.Next()).ToArray();

dataGridView2.Rows.Add();

dataGridView2.Rows.AddCopies(0, resultMix2.Length - 1);

Column3.Items.AddRange(resultMix2);

Column4.Items.AddRange(resultMix3);

panel5.BringToFront();

break;

}

}

}

/*

///

/// Задание с открытым ответом

///


private WithOpenAnswer TaskWithOpenAnswer(Questions quest)

{

return new WithOpenAnswer

{

ID = quest.Index,

Answer = quest.Value2,

Question = quest.Value1

};

}*/

///

/// Задание с выбором ответа

///


private WithSelectedValue TaskWithSelectedValue(Questions quest)

{

var array = quest.Value2.Split(new char[] {'\n','\r'}, StringSplitOptions.RemoveEmptyEntries);

var listt = new List<_Value>();
for (int i = 0; i < array.Length; i++)

{

if (array[i][0] == '+')

listt.Add(new _Value { Answer = array[i].Remove(0, 1), Valid = true });

else

listt.Add(new _Value { Answer = array[i].Remove(0, 1), Valid = false });

}

return new WithSelectedValue

{

ID = quest.Index,

Questions = quest.Value1,

_Quest = listt

};

}

/*

///

/// Задание на упорядочивание последовательности

///


private Sequence OrderingSequence(Questions quest)

{

var array = quest.Value1.Split(new char[] { '\n', '\r' },StringSplitOptions.RemoveEmptyEntries).ToArray();

return new Sequence

{

OrdSeq = array

};

}


///

/// Задание на установление соответствия

///


///

private RelevantId RelevantIdentified(Questions quest)

{

List list1 = new List();

List list2 = new List();

var array1 = quest.Value1.Split(new char[] { '\n', '\r' },StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < array1.Length; i++)

{

var a = array1[i].Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);

list1.Add(a[0]);

list2.Add(a[1]);

}
return new RelevantId

{

ID = quest.Index,

Listfirst = list1,

ListSecond = list2

};

}*/

private void button4_Click(object sender, EventArgs e)

{

// Задание на установление соответствия

var _cl = ((RelevantId)dictionary[index].MyClass);
for (int i = 0; i < dataGridView2.Rows.Count; i++)

{

if (dataGridView2.Rows[i].Cells[0].Value != null && dataGridView2.Rows[i].Cells[1].Value != null)

{

var first = dataGridView2.Rows[i].Cells[0].Value.ToString();

var second = dataGridView2.Rows[i].Cells[1].Value.ToString();
var res = _cl.Listfirst.IndexOf(first);

if (!(_cl.ListSecond[res] == second))

break;

if (i == dataGridView2.Rows.Count - 1)

point++;

}

else

break;

}
CheckPoint();

SetQuest();

}
private void button3_Click(object sender, EventArgs e)

{//Задание на упорядочивание последовательности
var _cl = ((Sequence)dictionary[index].MyClass);

for (int i = 0; i < dataGridView1.Rows.Count; i++)

{

if (!(dataGridView1.Rows[i].Cells[1].Value == _cl.OrdSeq[i]))

break;

if (i == dataGridView1.Rows.Count - 1)

point++;

}

CheckPoint();

SetQuest();

}

private void button1_Click(object sender, EventArgs e)

{//Задание с выбором ответа

var _cl = ((WithSelectedValue)dictionary[index].MyClass);
for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++)

{

if (!_cl._Quest.Find(x => x.Answer == checkedListBox1.Items[checkedListBox1.CheckedIndices[i]]).Valid)

{

break;

}

if(i==checkedListBox1.CheckedItems.Count-1)

point++;
}
CheckPoint();

SetQuest();

}
private void button2_Click(object sender, EventArgs e)

{// Задание с открытым ответом

if (textBox3.Text.ToLower() == ((WithOpenAnswer)dictionary[index].MyClass).Answer.ToLower())

point++;
CheckPoint();

SetQuest();

}

private void CheckPoint()

{

label6.Text = string.Format("Ваш результат: {0} %", (100.0 * point / dictionary.Count).ToString("#.##"));

}

}

class WithOpenAnswer

{

public int ID { get; set; }

public string Question { get; set; }

public string Answer { get; set; }

}

class WithSelectedValue

{

public int ID { get; set; }

public string Questions { get; set; }

public List<_Value> _Quest { get; set; }
}

class _Value

{

public string Answer { get; set; }

public bool Valid { get; set; }

}

class Sequence

{

public string[] OrdSeq { get; set; }

}

class RelevantId

{

public int ID { get; set; }

public List Listfirst { get; set; }

public List ListSecond { get; set; }

}

}
Select.cs
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;
namespace Tests

{

public partial class SelectTest : Form

{

User user;

List testsList = new List();

public SelectTest(User _user)

{

InitializeComponent();

user = _user;

GetTests();

}

private void GetTests()

{

testsList.Clear();

SqlConnection connect = new SqlConnection(Properties.Settings.Default.connectionString);

SqlDataAdapter adapter = new SqlDataAdapter("SELECT idTests,About,Name,SurName FROM tests, users where users.idUsers = tests.idUser", connect);

DataTable table = new DataTable();

adapter.Fill(table);

for (int i = 0; i < table.Rows.Count; i++)

{

testsList.Add(new Test

{

About = table.Rows[i]["About"].ToString(),

Name = table.Rows[i]["Name"].ToString(),

SurName = table.Rows[i]["SurName"].ToString(),

Index = int.Parse(table.Rows[i]["idTests"].ToString())

});

}

AddTestsInListView();

}
private void AddTestsInListView()

{

listBox1.Items.Clear();

for (int i = 0; i < testsList.Count; i++)

{

listBox1.Items.Add(string.Format("{0} (Автор: {1} {2})",testsList[i].About,testsList[i].Name,testsList[i].SurName));

}

}

private void button1_Click(object sender, EventArgs e)

{

Close();

}
private void button3_Click(object sender, EventArgs e)

{

CreateTest createTest = new CreateTest(user);

createTest.ShowDialog();
GetTests();

}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)

{

button2.Enabled = true;

}
private void button2_Click(object sender, EventArgs e)

{

TestingForm formTest = new TestingForm(testsList[listBox1.SelectedIndex],user);

formTest.ShowDialog();

Close();

}

}

}
Registration.cs
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;
namespace Tests

{

public partial class Registration : Form

{

public Registration()

{

InitializeComponent();

}
private void button1_Click(object sender, EventArgs e)

{

Close();

}
private void button2_Click(object sender, EventArgs e)

{

SqlConnection connect = new SqlConnection(Properties.Settings.Default.connectionString);

SqlCommand command = new SqlCommand(string.Format("insert into users(Name,SurName,Login,Password,Role) values('{0}','{1}','{2}','{3}',1)",textBox2.Text,textBox1.Text,textBox3.Text,textBox4.Text), connect);

try

{

connect.Open();

command.ExecuteNonQuery();

connect.Close();

MessageBox.Show("Регистрация прошла успешно!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

catch {

MessageBox.Show("При регистрации возникла ошибка!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);

}

Close();

}

}

}
CreateTest.cs
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;
namespace Tests

{

public partial class CreateTest : Form

{

List list = new List();

User user;

public CreateTest(User _user)

{

InitializeComponent();

this.user = _user;
if (user.UserRole == Role.user)

button3.Enabled = false;

ReadQuestions();

}

private void ReadQuestions()

{

checkedListBox1.Items.Clear();

list.Clear();

SqlConnection connect = new SqlConnection(Properties.Settings.Default.connectionString);

SqlDataAdapter adapter = new SqlDataAdapter("select * from questions", connect);

DataTable table = new DataTable();

adapter.Fill(table);
for (int i = 0; i < table.Rows.Count; i++)

{

list.Add(

new Questions

{

CategoryObj = (CategoryQuest)int.Parse(table.Rows[i]["Type"].ToString()),

Index = int.Parse(table.Rows[i]["idQuestions"].ToString()),

Value1 = table.Rows[i]["Value1"].ToString(),

Value2 = table.Rows[i]["Value1"].ToString()

});

}

list.OrderBy(x => x.CategoryObj);
foreach (var item in list)

{

checkedListBox1.Items.Add(string.Format("({0}) {1}",item.CategoryObj,item.Value1));

}
}
private void button3_Click(object sender, EventArgs e)

{

AddTests addQuestions = new AddTests();

addQuestions.ShowDialog();
ReadQuestions();

}
private void button2_Click(object sender, EventArgs e)

{

try

{

SqlConnection connect = new SqlConnection(Properties.Settings.Default.connectionString);

SqlCommand command = new SqlCommand(string.Format("insert into tests(About,idUser) values('{0}',{1}); SELECT CAST(scope_identity() AS int)", textBox1.Text, user.ID), connect);

connect.Open();

var idTest = (int)command.ExecuteScalar();

connect.Close();

List values = new List();
for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++)

{

values.Add(string.Format("({0},{1})", list[checkedListBox1.CheckedIndices[i]].Index, idTest));

}
var result = string.Join(",", values);
command = new SqlCommand(string.Format("insert into testwithquestions(idQuestion,idTest) values {0}", result), connect);

connect.Open();

command.ExecuteNonQuery();

connect.Close();

MessageBox.Show("Создание прошло успешно!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Information);

Close();

}

catch

{

MessageBox.Show("При создании возникла ошибка!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Error);

}
}

}

}
AddTest.cs
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlClient;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;
namespace Tests

{

public partial class AddTests : Form

{

public AddTests()

{

InitializeComponent();

}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

//Задание с открытым ответом!

//Задание с выбором ответа!

//Задание на упорядочивание последовательности!

//Задание на устоновление соответствия!

switch(comboBox1.SelectedIndex)

{

case 0: panelType1.BringToFront(); break;

case 1: panelType2.BringToFront(); break;

case 2: panelType3.BringToFront(); break;

case 3: panelType4.BringToFront(); break;

default: break;

}

}
int index = 1;

private void AddInListView()

{

ListViewItem listViewItem1 = new ListViewItem(new string[] { index.ToString(), comboBox1.Text, DateTime.Now.ToLongTimeString() });

listView1.Items.Add(listViewItem1);

index++;

}
private bool WriteDataInDB(string commandText)

{

SqlConnection connect = new SqlConnection(Properties.Settings.Default.connectionString);

SqlCommand command = new SqlCommand(commandText, connect);

try

{

connect.Open();

command.ExecuteNonQuery();

connect.Close();

return true;

}

catch {

return false;

}

}
private void button4_Click(object sender, EventArgs e)

{

//Задание на установление соответствия!

var result = WriteDataInDB(string.Format("insert into questions(Type,Value1) values({0},'{1}')",comboBox1.SelectedIndex,textBox5.Text));

if(result)

AddInListView();

}
private void button3_Click(object sender, EventArgs e)

{

//Задание на упорядочивание последовательности!

var result = WriteDataInDB(string.Format("insert into questions(Type,Value1) values({0},'{1}')", comboBox1.SelectedIndex, textBox6.Text));
if (result)

AddInListView();

}
private void button1_Click(object sender, EventArgs e)

{

// Задание с открытым ответом!

var result = WriteDataInDB(string.Format("insert into questions(Type,Value1,Value2) values({0},'{1}','{2}')", comboBox1.SelectedIndex, textBox1.Text,textBox2.Text));
if (result)

AddInListView();

}
private void button2_Click(object sender, EventArgs e)

{

//Задание с выбором ответа!

var result = WriteDataInDB(string.Format("insert into questions(Type,Value1,Value2) values({0},'{1}','{2}')", comboBox1.SelectedIndex, textBox4.Text, textBox3.Text));
if (result)

AddInListView();

}
private void button5_Click(object sender, EventArgs e)

{

Close();

}

}

}


Дневник по преддипломной практике
Вид, тип практики преддипломная

Обучающийся Чернышов Владимир Константинович

(Фамилия, Имя, Отчество)

Курс 4

Факультет (филиал, институт) Институт математики и информационных технологий

Форма обучения очная

Направление подготовки (специальность) 09.03.02 Информационные системы и технологии

Место прохождения практики ООО «Уральский центр систем безопасности»

(наименование профильной организации)

Срок прохождения практики: с 10.04.2023 по 20.05.2023


Дата (период)

Содержание выполненных работ

10.04

Вводный инструктаж по технике безопасности на рабочем месте

Ознакомление с историей развития, структурой и задачами предприятия ООО «УЦСБ»

11.04-14.04

Анализ предметной области

17.04-21.04

Исследование моделей информационных процессов информационной системы

24.04 - 12.05

Проектирование базы данных

Разработка приложения

15.05 - 18.05

Завершение разработки документации, разработки руководства

19.05

Оформление отчета, разработка презентации


Руководитель практики от организации А. В. Манжосов

подпись, печать

Отзывы руководителя практики

от предприятия (организации) о работе студента
За время прохождения преддипломной практики В. К. Чернышов проявил грамотность, а также способность собирать и анализировать информацию, умение использовать полученные знания для решения практических задач.

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

За время работы практикант ознакомился с деятельностью организации и выполнил указанные в индивидуальном задании виды работ в полном объеме и в срок.

Ко всем заданиям относился ответственно, качественно выполнял поставленные задачи.

Оценка за практику ____________.

Руководитель практики от организации А. В. Манжосов

подпись, печать