Отчет по практикеПрограммированиеГод: 2025МТИ: Московский технологический институт
👁 19💼 0

Готовый отчет: ревью и модуль учёта документов C#

Загружена: 17.02.2026 04:57

Ревью и практическая реализация модуля учёта документов для учреждения культуры. Описаны анализ требований, обратное проектирование алгоритмов, реализация на C# (WPF) с базой SQLite и тестирование. Полезно для внедрения и адаптации в органах документооборота.

Содержание

Структура отчета:

Введение
1. Характеристика базы практики, роль и место подразделения, в котором работал практикант в общей структуре организации, объем выполняемых подразделением работ и услуг в общем объеме операций и т.д.
2. Основная часть 
Выполняется в соответствии с индивидуальным планом работы по соответствующему профессиональному модулю.
3. Заключение
Выводы и предложения. Необходимо разработать конкретные предложения по усовершенствованию организации работы базы практики в рамках соответствующего профессионального модуля, что, по сути, становится итогом пройденной практики. При этом сравниваются результаты теоретического обучения с наблюдениями и выводами по работе в конкретной организации.
4. Приложения
Документальное подтверждение отдельных разделов, положений отчета (заполненные формы отчетности, документы, схемы, графики и прочее).
5. Литература
Законодательная база, №№ инструкций, приказов, распоряжений, учебные пособия, учебники и другая литература.

Введение

1. Характеристика базы практики, роль и место подразделения, в котором работал практикант в общей структуре организации, объем выполняемых подразделением работ и услуг в общем объеме операций и т.д.
Производственная практика по профессиональному модулю ПМ.02 «Ревьюирование программных модулей» пройдена на базе Государственного бюджетного учреждения города Москвы «Объединение культурных и досуговых центров Северо-Восточного административного округа» (ГБУ г. Москвы «ОКЦ СВАО», ИНН 7715628325). Учреждение осуществляет деятельность в сфере культуры и досуга, организует культурно-массовые и просветительские мероприятия, обеспечивает работу библиотечных и архивных направлений, а также ведёт организационно-административную и финансово-хозяйственную деятельность.
Цель практики — закрепление и развитие профессиональных компетенций, связанных с анализом и оценкой качества программных решений, ревьюированием программных модулей, применением инструментов контроля качества кода и оформлением результатов в виде отчетной документации. В ходе практики решались задачи по изучению особенностей деятельности организации и её ИТ-обеспечения, освоению подходов к анализу и улучшению программных модулей, а также применению методов оценивания качества программного кода и его структуры.
Практика была направлена на формирование практических навыков работы с инструментами разработки и анализа программного обеспечения, включая изучение репозитория проекта, анализ потоков данных, обратное проектирование алгоритмов, проверку целостности программного кода и оценку метрик качества в среде разработки. Результатом прохождения практики стало обобщение полученного опыта, подготовка выводов и рекомендаций, а также оформление отчета в соответствии с установленными требованиями.
Описание предприятия и его ИТ-обеспечения
Государственное бюджетное учреждение города Москвы «Объединение культурных и досуговых центров Северо-Восточного административного округа» (ГБУ г. Москвы «ОКЦ СВАО») осуществляет деятельность в сфере культуры и досуга населения. Основными направлениями работы учреждения являются организация и проведение культурно-массовых, образовательных и досуговых мероприятий, обеспечение деятельности библиотек и архивов, а также ведение административно-хозяйственной и организационной работы.
Учреждение зарегистрировано 14 декабря 2006 года и осуществляет свою деятельность на территории Северо-Восточного административного округа города Москвы. Руководство деятельностью организации осуществляет директор, который координирует работу всех структурных подразделений и несет ответственность за выполнение возложенных на учреждение функций.
Рисунок 1.1 – Схема движения документов в ГБУ г. Москвы «ОКЦ СВАО»
Организационная структура ГБУ г. Москвы «ОКЦ СВАО» включает несколько функциональных подразделений, тесно взаимодействующих между собой. Все подразделения подчиняются директору учреждения. В общем виде структура организации включает следующие основные подразделения:
администрация учреждения;
бухгалтерия;
кадровая служба;
подразделения культурно-досуговой деятельности;
библиотечные и архивные подразделения;
подразделение информационно-технического сопровождения.
Рисунок 1.2 – Структура подразделений ГБУ г. Москвы «ОКЦ СВАО»
Административные и учетные функции в учреждении выполняются бухгалтерией и кадровой службой. В обязанности сотрудников данных подразделений входит:
обработка входящей, исходящей и внутренней документации;
ведение кадрового учета сотрудников;
расчет и начисление заработной платы;
учет рабочего времени, отпусков и больничных;
ведение бухгалтерского и налогового учета;
формирование отчетности для контролирующих органов;
контроль движения материальных и финансовых ресурсов учреждения.
Подразделения культурно-досуговой деятельности занимаются организацией и проведением мероприятий, работой с посетителями, подготовкой программ, а также взаимодействием с внешними организациями и учреждениями культуры.
Библиотечные и архивные подразделения обеспечивают хранение, учет и выдачу фондов, ведение каталогов, обработку запросов пользователей и подготовку отчетной информации в установленном порядке.
Рисунок 1.3 – Организационная структура учреждения
Информационно-техническое сопровождение деятельности ГБУ г. Москвы «ОКЦ СВАО» обеспечивает функционирование информационных систем и технических средств учреждения. В задачи данного направления входят:
поддержка работоспособности персональных компьютеров и периферийных устройств;
установка и обновление программного обеспечения;
обеспечение доступа сотрудников к сети Интернет и электронной почте;
сопровождение офисных и специализированных программных средств;
контроль корректной работы информационных ресурсов и соблюдения требований информационной безопасности.
Все рабочие места сотрудников учреждения оснащены необходимыми техническими средствами в зависимости от выполняемых функций. В большинстве подразделений используются персональные компьютеры, многофункциональные устройства (принтеры, сканеры), средства связи и доступ к локальной сети и сети Интернет.
Рисунок 1.4 – Схематическое представление рабочих мест сотрудников административных подразделений
На рабочих местах установлено стандартное офисное программное обеспечение, включая текстовые редакторы, табличные процессоры, средства работы с электронной почтой и веб-браузеры. Используемое программное обеспечение позволяет обеспечивать выполнение повседневных задач, связанных с документооборотом, учетом, подготовкой отчетности и обменом информацией между подразделениями.
Рисунок 1.5 – Схематическое представление ИТ-обеспечения рабочих мест
Таким образом, ИТ-обеспечение ГБУ г. Москвы «ОКЦ СВАО» играет важную роль в организации деятельности учреждения, обеспечивая поддержку управленческих, учетных и культурно-досуговых процессов, а также создавая условия для эффективной работы сотрудников.

Заключение

Выводы и предложения. Необходимо разработать конкретные предложения по усовершенствованию организации работы базы практики в рамках соответствующего профессионального модуля, что, по сути, становится итогом пройденной практики. При этом сравниваются результаты теоретического обучения с наблюдениями и выводами по работе в конкретной организации.
4. Приложения
Документальное подтверждение отдельных разделов, положений отчета (заполненные формы отчетности, документы, схемы, графики и прочее).
5. Литература
Законодательная база, №№ инструкций, приказов, распоряжений, учебные пособия, учебники и другая литература.
В ходе прохождения производственной практики по профессиональному модулю ПМ.02 «Ревьюирование программных модулей» на базе ГБУ г. Москвы «ОКЦ СВАО» было выполнено индивидуальное задание и достигнуты поставленные цели. В процессе работы:
выполнен анализ деятельности учреждения и особенностей его документооборота;
изучено ИТ-обеспечение организации и уровень технического оснащения рабочих мест сотрудников;
выполнен анализ предметной области и определены ключевые требования к программному модулю учёта документов;
обоснованы выбор технологий и средств разработки (C#, WPF, SQLite, Microsoft Visual Studio 2022) для создания прикладного программного решения;
разработан программный модуль учёта документов, реализующий ввод, сохранение, поиск и отображение данных, а также работу со справочником типов документов;
выполнено обратное проектирование основных алгоритмов и подготовлены блок-схемы процессов обработки данных;
проведено ревьюирование программного кода с точки зрения корректности логики, структурированности, читаемости и возможности дальнейшего сопровождения;
использованы инструментальные средства отладки Visual Studio (точки останова, пошаговое выполнение, окна контроля переменных и исключений) для проверки корректности работы приложения;
проведено тестирование программного модуля по сценариям, включая проверку добавления документов, поиска, обработки некорректного ввода и работы справочника типов;
по результатам проверки подтверждена работоспособность приложения и соответствие базовым требованиям к настольным информационным системам административного назначения.
Разработанный программный модуль может быть использован в качестве элемента информационного обеспечения документооборота и учёта в ГБУ г. Москвы «ОКЦ СВАО». В качестве рекомендации предлагается рассмотреть возможность внедрения приложения в практическую деятельность учреждения для повышения оперативности обработки документов, повышения качества контроля данных и снижения вероятности ошибок при ручном ведении учёта.
Список используемых источников
Основная литература:
Троелсен, Э. Pro C# 10 with .NET 6: Modern Cross-Platform Development. — 11th ed. — Berkeley : Apress, 2022. — 1440 p. — ISBN 978-1-4842-7871-3.
Мак-Дональд, М. WPF: Профессиональное программирование на C# (Windows Presentation Foundation). — Москва : Вильямс, 2019. — 1024 с. — ISBN 978-5-8459-2029-7.
Microsoft. Windows Presentation Foundation (WPF) documentation. — Текст : электронный. — URL: https://learn.microsoft.com/dotnet/desktop/wpf/
Microsoft. Visual Studio documentation (Debugging and diagnostics). — Текст : электронный. — URL: https://learn.microsoft.com/visualstudio/debugger/
SQLite Consortium. SQLite Documentation. — Текст : электронный. — URL: https://www.sqlite.org/docs.html
Дополнительная литература:
Haack, J. SQLite for .NET Developers: Build Highly Responsive Data-Driven Apps. — Birmingham : Packt Publishing, 2020. — 292 p. — ISBN 978-1-83898-989-9.
Fowler, M. Refactoring: Improving the Design of Existing Code. — 2nd ed. — Boston : Addison-Wesley, 2018. — 448 p. — ISBN 978-0-13-475759-9.
Документация организации: сведения о ГБУ г. Москвы «ОКЦ СВАО» (ИНН 7715628325) из открытых источников (карточка организации). — Текст : электронный // Rusprofile.ru.
Программный код приложения
using Microsoft.Data.Sqlite;
using OKC.DocFlow.App.Models;
namespace OKC.DocFlow.App.Db;
public sealed class Database
{
private readonly string _dbPath;
public Database(string dbPath)
{
_dbPath = dbPath;
}
private SqliteConnection Open()
{
var cs = new SqliteConnectionStringBuilder
{
DataSource = _dbPath,
Mode = SqliteOpenMode.ReadWriteCreate
}.ToString();
var conn = new SqliteConnection(cs);
conn.Open();
return conn;
}
public void EnsureCreated()
{
using var conn = Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = @"
PRAGMA foreign_keys = ON;
CREATE TABLE IF NOT EXISTS DocTypes(
Id INTEGER PRIMARY KEY AUTOINCREMENT,
Name TEXT NOT NULL UNIQUE
);
CREATE TABLE IF NOT EXISTS Documents(
Id INTEGER PRIMARY KEY AUTOINCREMENT,
RegNumber TEXT NOT NULL,
Title TEXT NOT NULL,
Correspondent TEXT NOT NULL,
DocDate TEXT NOT NULL,
DocTypeId INTEGER NOT NULL,
Notes TEXT,
FOREIGN KEY(DocTypeId) REFERENCES DocTypes(Id) ON DELETE RESTRICT
);
";
cmd.ExecuteNonQuery();
// Seed минимум для удобства (если пусто)
using var seed = conn.CreateCommand();
seed.CommandText = "SELECT COUNT(*) FROM DocTypes;";
var count = Convert.ToInt64(seed.ExecuteScalar() ?? 0);
if (count == 0)
{
using var ins = conn.CreateCommand();
ins.CommandText = @"
INSERT INTO DocTypes(Name) VALUES
('Входящий'),
('Исходящий'),
('Внутренний'),
('Приказ'),
('Договор');
";
ins.ExecuteNonQuery();
}
}
public List<DocTypeModel> GetDocTypes()
{
using var conn = Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = "SELECT Id, Name FROM DocTypes ORDER BY Name;";
using var reader = cmd.ExecuteReader();
var list = new List<DocTypeModel>();
while (reader.Read())
{
list.Add(new DocTypeModel
{
Id = reader.GetInt64(0),
Name = reader.GetString(1)
});
}
return list;
}
public long AddDocType(string name)
{
using var conn = Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = "INSERT INTO DocTypes(Name) VALUES ($name); SELECT last_insert_rowid();";
cmd.Parameters.AddWithValue("$name", name.Trim());
return Convert.ToInt64(cmd.ExecuteScalar() ?? 0);
}
public void UpdateDocType(long id, string name)
{
using var conn = Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = "UPDATE DocTypes SET Name=$name WHERE Id=$id;";
cmd.Parameters.AddWithValue("$name", name.Trim());
cmd.Parameters.AddWithValue("$id", id);
cmd.ExecuteNonQuery();
}
public void DeleteDocType(long id)
{
using var conn = Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = "DELETE FROM DocTypes WHERE Id=$id;";
cmd.Parameters.AddWithValue("$id", id);
cmd.ExecuteNonQuery();
}
public List<DocumentModel> GetDocuments(string? search = null)
{
using var conn = Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = @"
SELECT d.Id, d.RegNumber, d.Title, d.Correspondent, d.DocDate, d.DocTypeId, t.Name, IFNULL(d.Notes,'')
FROM Documents d
JOIN DocTypes t ON t.Id = d.DocTypeId
WHERE ($q IS NULL OR $q = '' OR
d.RegNumber LIKE '%' || $q || '%' OR
d.Title LIKE '%' || $q || '%' OR
d.Correspondent LIKE '%' || $q || '%')
ORDER BY d.DocDate DESC, d.Id DESC;
";
cmd.Parameters.AddWithValue("$q", search ?? "");
using var reader = cmd.ExecuteReader();
var list = new List<DocumentModel>();
while (reader.Read())
{
list.Add(new DocumentModel
{
Id = reader.GetInt64(0),
RegNumber = reader.GetString(1),
Title = reader.GetString(2),
Correspondent = reader.GetString(3),
DocDate = DateTime.Parse(reader.GetString(4)),
DocTypeId = reader.GetInt64(5),
DocTypeName = reader.GetString(6),
Notes = reader.GetString(7)
});
}
return list;
}
public long AddDocument(DocumentModel doc)
{
using var conn = Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = @"
INSERT INTO Documents(RegNumber, Title, Correspondent, DocDate, DocTypeId, Notes)
VALUES ($reg, $title, $corr, $date, $typeId, $notes);
SELECT last_insert_rowid();
";
cmd.Parameters.AddWithValue("$reg", doc.RegNumber.Trim());
cmd.Parameters.AddWithValue("$title", doc.Title.Trim());
cmd.Parameters.AddWithValue("$corr", doc.Correspondent.Trim());
cmd.Parameters.AddWithValue("$date", doc.DocDate.ToString("yyyy-MM-dd"));
cmd.Parameters.AddWithValue("$typeId", doc.DocTypeId);
cmd.Parameters.AddWithValue("$notes", (doc.Notes ?? "").Trim());
return Convert.ToInt64(cmd.ExecuteScalar() ?? 0);
}
public void UpdateDocument(DocumentModel doc)
{
using var conn = Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = @"
UPDATE Documents
SET RegNumber=$reg,
Title=$title,
Correspondent=$corr,
DocDate=$date,
DocTypeId=$typeId,
Notes=$notes
WHERE Id=$id;
";
cmd.Parameters.AddWithValue("$reg", doc.RegNumber.Trim());
cmd.Parameters.AddWithValue("$title", doc.Title.Trim());
cmd.Parameters.AddWithValue("$corr", doc.Correspondent.Trim());
cmd.Parameters.AddWithValue("$date", doc.DocDate.ToString("yyyy-MM-dd"));
cmd.Parameters.AddWithValue("$typeId", doc.DocTypeId);
cmd.Parameters.AddWithValue("$notes", (doc.Notes ?? "").Trim());
cmd.Parameters.AddWithValue("$id", doc.Id);
cmd.ExecuteNonQuery();
}
public void DeleteDocument(long id)
{
using var conn = Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = "DELETE FROM Documents WHERE Id=$id;";
cmd.Parameters.AddWithValue("$id", id);
cmd.ExecuteNonQuery();
}
}
public class DocTypeModel
{
public long Id { get; set; }
public string Name { get; set; } = "";
public override string ToString() => Name;
}
public class DocumentModel
{
public long Id { get; set; }
public string RegNumber { get; set; } = "";
public string Title { get; set; } = "";
public string Correspondent { get; set; } = "";
public DateTime DocDate { get; set; } = DateTime.Today;
public long DocTypeId { get; set; }
public string DocTypeName { get; set; } = "";
public string Notes { get; set; } = "";
}
public static class Guard
{
public static bool IsBlank(string? s) => string.IsNullOrWhiteSpace(s);
}

Подробное описание

📘 О чем эта работа

Отчет описывает прохождение производственной практики по ревьюированию программных модулей и разработку прикладного модуля учёта документов для ГБУ г. Москвы «ОКЦ СВАО». Объект — процессы документооборота учреждения, предмет — программный модуль ввода/хранения/поиска документов. Проведён анализ требований, обратное проектирование алгоритмов и реализован модуль на C# с интерфейсом WPF и базой данных SQLite.

📚 Что внутри

В отчете подробно раскрыты этапы работы и конкретные результаты:

  • Анализ организационной структуры и особенностей документооборота ГБУ «ОКЦ СВАО», схема движения документов и описание рабочих мест.
  • Обратное проектирование и блок‑схемы (Microsoft Visio 2013) процессов ввода, проверки и сохранения данных: блок‑схемы ввода, проверки доступности элементов, обработки и вызова функций.
  • Реализация модуля: исходный код класса Database (C#) с использованием SQLite, описание таблиц DocTypes и Documents и их полей, автоматическая инициализация и seed ('Входящий','Исходящий','Внутренний','Приказ','Договор').
  • Перечень реализованных методов: GetDocTypes, AddDocType, UpdateDocType, DeleteDocType, GetDocuments, AddDocument, UpdateDocument, DeleteDocument; формат хранения дат 'yyyy-MM-dd'.
  • Отладка в Visual Studio 2022: использование точек останова, шагов 'Step Into/Over', окна 'Локальные', 'Вывод' и обработка исключений.
  • Тестирование по сценариям: добавление документа, поиск по RegNumber/Title/Correspondent, обработка некорректного ввода, нагрузочное тестирование с 50+ записями, проверка производительности и потребления памяти.
  • Выводы и рекомендации по внедрению: предложено рассмотреть серверную БД, авторизацию, логирование и модульные тесты для устойчивости при многопользовательской нагрузке.

📊 Для кого подходит

Отчет полезен студентам и преподавателям ИТ‑ и прикладных направлений (программирование, прикладная информатика), инженерам техподдержки и разработчикам desktop‑приложений, которым требуется готовый пример модуля учёта документов на C# (WPF) с SQLite и набором тест‑сценариев.

✨ Особенности

Работа ценна конкретикой: вложен реальный код класса доступа к данным и схемы БД, описаны сценарии тестирования и использованные отладочные приёмы. Приложены блок‑схемы процессов, реализован удобный интерфейс вкладок 'Документы' и 'Справочник типов', предусмотрены проверки обязательных полей и защита от некорректного ввода.

❓ Частые вопросы

Подойдет ли для моего ВУЗа?
Структура отчета соответствует требованиям производственной практики: введение, характеристика базы практики, аналитическая и проектная части, тестирование, заключение и приложения.

Можно адаптировать?
Да. Исходный код и схема БД легко модифицируются: добавление полей, переход на серверную СУБД (MS SQL/Postgres), интеграция авторизации и логирования выполняются без полной переработки архитектуры.