Файл: Отчет по преддипломной практике огу 09. 03. 02. 7223. 223 П руководитель от кафедры.docx
Добавлен: 09.11.2023
Просмотров: 367
Скачиваний: 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
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
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
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
public List
}
}
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
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
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
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 | Оформление отчета, разработка презентации |
Руководитель практики от организации А. В. Манжосов
подпись, печать
Отзывы руководителя практики
от предприятия (организации) о работе студента
За время прохождения преддипломной практики В. К. Чернышов проявил грамотность, а также способность собирать и анализировать информацию, умение использовать полученные знания для решения практических задач.
Успешно применял полученные в университете теоретические знания в области информационных технологий, закрепляя и развивая их в процессе преддипломной практики.
За время работы практикант ознакомился с деятельностью организации и выполнил указанные в индивидуальном задании виды работ в полном объеме и в срок.
Ко всем заданиям относился ответственно, качественно выполнял поставленные задачи.
Оценка за практику ____________.
Руководитель практики от организации А. В. Манжосов
подпись, печать