Загрузка данных
Алина:
from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.oxml.ns import qn
def set_tnr_14(element):
for run in element.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
run._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman')
def format_document(doc):
style = doc.styles['Normal']
style.font.name = 'Times New Roman'
style.font.size = Pt(14)
style._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman')
style.paragraph_format.line_spacing = 1.5
def add_heading_tnr(doc, text, level=1):
p = doc.add_heading(text, level=level)
p.alignment = WD_ALIGN_PARAGRAPH.LEFT
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
run.font.bold = True
run._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman')
return p
def add_table_tnr(doc, data, headers):
table = doc.add_table(rows=1, cols=len(headers))
table.style = 'Table Grid'
hdr_cells = table.rows[0].cells
for i, header in enumerate(headers):
hdr_cells[i].text = header
for run in hdr_cells[i].paragraphs[0].runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
run.font.bold = True
run._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman')
for row_data in data:
row_cells = table.add_row().cells
for i, cell_data in enumerate(row_data):
row_cells[i].text = str(cell_data)
for run in row_cells[i].paragraphs[0].runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
run._element.rPr.rFonts.set(qn('w:eastAsia'), 'Times New Roman')
doc.add_paragraph()
return table
doc = Document()
format_document(doc)
# ТИТУЛЬНЫЙ ЛИСТ
doc.add_paragraph("\n" * 3)
p = doc.add_paragraph('Министерство образования и науки\nДепартамент образования вашего региона\nНазвание вашего колледжа')
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
doc.add_paragraph("\n" * 4)
p = doc.add_paragraph('ПРОЕКТНАЯ РАБОТА\nпо дисциплине «Управление проектами»\n\nна тему:\n«Создание локального сервиса печати и оперативной полиграфии «Копирка-Campus»')
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
run.font.bold = True
doc.add_paragraph("\n" * 4)
p = doc.add_paragraph('Выполнил: студент группы ХХ-ХХ\nИванов И.И.\nПроверил: Петров П.П.')
p.alignment = WD_ALIGN_PARAGRAPH.RIGHT
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
doc.add_paragraph("\n" * 2)
p = doc.add_paragraph('Город, 2026 г.')
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
doc.add_page_break()
# СОДЕРЖАНИЕ
add_heading_tnr(doc, 'СОДЕРЖАНИЕ', level=1)
toc_items = [
"Введение",
"Глава 1. Теоретико-концептуальное обоснование проекта",
" 1.1. Дерево целей и задач",
" 1.2. Анализ заинтересованных сторон",
" 1.3. SWOT-анализ проекта",
"Глава 2. Организационно-управленческий план проекта",
" 2.1. Иерархическая структура работ (ИСР/WBS)",
" 2.2. Календарно-сетевое планирование",
" 2.3. Матрица ответственности (RACI)",
" 2.4. Бюджет проекта (Смета)",
" 2.5. Реестр рисков",
" 2.6. Коммуникационный план",
"Заключение",
"Список использованных источников",
"Приложения"
]
for item in toc_items:
p = doc.add_paragraph(item)
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
doc.add_page_break()
# ВВЕДЕНИЕ
add_heading_tnr(doc, 'ВВЕДЕНИЕ', level=1)
intro_texts = [
"1. Актуальность: В современном учебном процессе студентам и преподавателям постоянно требуется оперативная печать конспектов, курсовых работ и раздаточных материалов. Существующие решения в городе находятся за пределами кампуса, что отнимает время, а библиотечный принтер не справляется с потоком и часто ломается. Создание точки внутри колледжа решит проблему доступности и скорости.",
"2. Цель проекта: Запустить функционирующий сервис оперативной полиграфии «Копирка-Campus» на базе библиотеки колледжа к 01.02.2027 года с окупаемостью в течение 6 месяцев.",
"3. Задачи проекта: 1) Изучить спрос и ценовую политику конкурентов; 2) Согласовать размещение оборудования с администрацией библиотеки; 3) Закупить МФУ и расходные материалы; 4) Нанять и обучить 2-х студентов-операторов; 5) Запустить рекламную кампанию в чатах групп.",
"4. Объект и предмет исследования: Объект — процесс организации сервиса оперативной полиграфии в учебном заведении. Предмет — методы планирования ресурсов, сроков и бюджета данного проекта без использования специализированного ПО.",
"5. Сроки выполнения: Начало проекта — 01.11.2026. Окончание проекта (запуск) — 01.02.2027. Общий срок: 3 месяца."
]
for text in intro_texts:
p = doc.add_paragraph(text)
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
doc.add_page_break()
# ГЛАВА 1
add_heading_tnr(doc, 'ГЛАВА 1. ТЕОРЕТИКО-КОНЦЕПТУАЛЬНОЕ ОБОСНОВАНИЕ ПРОЕКТА', level=1)
add_heading_tnr(doc, '1.1. Дерево целей и задач', level=2)
p = doc.add_paragraph('1. Запустить сервис «Копирка-Campus»\n 1.1. Подготовить документацию\n 1.1.1. Составить бизнес-план и смету\n 1.1.2. Согласовать размещение с администрацией библиотеки\n 1.2. Обеспечить техническую базу\n 1.2.1. Выбрать и закупить МФУ и бумагу\n 1.2.2. Организовать рабочее место оператора\n 1.3. Обеспечить кадровый ресурс\n 1.3.1. Провести отбор студентов-операторов\n 1.3.2. Провести инструктаж по технике безопасности')
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
add_heading_tnr(doc, '1.2. Анализ заинтересованных сторон (Stakeholders)', level=2)
stakeholders_headers = ['Заинтересованная сторона', 'Интересы / Выгоды', 'Возможные риски', 'Стратегия взаимодействия']
stakeholders_data = [
['Студенты', 'Дешевая и быстрая печать рядом с аудиторией', 'Очереди в перерывах', 'Введение системы предзаказа через Telegram'],
['Администрация колледжа', 'Доп. сервис для студентов, имидж инновационности', 'Нарушение пожарной безопасности', 'Регулярные отчеты, строгое соблюдение ТБ'],
['Сотрудники библиотеки', 'Отсутствие лишней нагрузки на их технику', 'Шум, пыль от картриджей', 'Выделение изолированного угла, регулярная уборка']
]
add_table_tnr(doc, stakeholders_data, stakeholders_headers)
add_heading_tnr(doc, '1.3. SWOT-анализ проекта', level=2)
swot_headers = ['Внутренняя среда', 'Внешняя среда']
swot_data = [
['S (Сильные стороны): Низкая аренда (льготная от колледжа), Понимание потребностей целевой аудитории', 'O (Возможности): Партнерство с местной типографией для сложных заказов, Расширение ассортимента (ламинация, переплет)'],
['W (Слабые стороны): Малый стартовый бюджет, Отсутствие опыта управления у студентов', 'T (Угрозы): Поломка оборудования, Падение спроса во время сессии/каникул']
]
add_table_tnr(doc, swot_data, swot_headers)
doc.add_page_break()
# ГЛАВА 2
add_heading_tnr(doc, 'ГЛАВА 2. ОРГАНИЗАЦИОННО-УПРАВЛЕНЧЕСКИЙ ПЛАН ПРОЕКТА', level=1)
add_heading_tnr(doc, '2.1. Иерархическая структура работ (ИСР/WBS)', level=2)
p = doc.add_paragraph('1.0 Инициация проекта\n 1.1 Анализ рынка и конкурентов\n 1.2 Утверждение Устава проекта\n2.0 Планирование\n 2.1 Разработка сметы и поиск финансирования\n 2.2 Составление календарного плана\n3.0 Реализация\n 3.1 Закупка оборудования (МФУ, бумага)\n 3.2 Подготовка рабочего места в библиотеке\n 3.3 Наем и обучение персонала\n4.0 Завершение\n 4.1 Тестовый запуск (1 неделя)\n 4.2 Официальное открытие и реклама')
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
add_heading_tnr(doc, '2.2. Календарно-сетевое планирование (Данные для диаграммы Ганта)', level=2)
p = doc.add_paragraph('Примечание: В MS Word выделите эту таблицу, перейдите в «Вставка» -> «Диаграмма» -> «Линейчатая с накоплением» для визуализации.')
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
gantt_headers = ['№', 'Название задачи', 'Длит. (дн.)', 'Ответственный', 'Начало', 'Окончание']
gantt_data = [
['1', 'Анализ рынка и согласование', '10', 'Руководитель', '01.11.2026', '10.11.2026'],
['2', 'Закупка оборудования', '7', 'Снабженец', '11.11.2026', '17.11.2026'],
['3', 'Подготовка места и установка', '5', 'Техник', '18.11.2026', '22.11.2026'],
['4', 'Набор и обучение персонала', '14', 'HR-менеджер', '23.11.2026', '06.12.2026'],
['5', 'Тестовый запуск и реклама', '10', 'Маркетолог', '07.12.2026', '16.12.2026']
]
add_table_tnr(doc, gantt_data, gantt_headers)
add_heading_tnr(doc, '2.3. Матрица ответственности (RACI)', level=2)
raci_headers = ['Этап работ', 'Руководитель', 'Исполнитель', 'Администрация', 'Бухгалтер']
raci_data = [
['Согласование места', 'A', 'R', 'C', 'I'],
['Закупка оборудования', 'A', 'R', 'I', 'C'],
['Настройка ПО и техники', 'I', 'R', 'I', 'I'],
['Приемка работ и оплата', 'A', 'I', 'C', 'R']
]
add_table_tnr(doc, raci_data, raci_headers)
add_heading_tnr(doc, '2.4. Бюджет проекта (Смета)', level=2)
budget_headers = ['Статья расходов', 'Кол-во', 'Цена за ед. (руб.)', 'Сумма (руб.)']
budget_data = [
['МФУ лазерное цветное', '1', '25000', '25000'],
['Бумага А500 (пачка)', '20', '350', '7000'],
['Картриджи (черный + цвет)', '2', '3000', '6000'],
['Рекламные флаеры (печать)', '500', '5', '2500'],
['Резервный фонд', '1', '5000', '5000'],
['ИТОГО', '', '', '45500']
]
add_table_tnr(doc, budget_data, budget_headers)
add_heading_tnr(doc, '2.5. Реестр рисков', level=2)
risk_headers = ['Риск', 'Вероятность (1-5)', 'Влияние (1-5)', 'Уровень (В×В)', 'Мероприятия по реагированию']
risk_data = [
['Поломка МФУ', '2', '5', '10', 'Договор на гарантийное обслуживание, резервный фонд'],
['Низкий спрос в первый месяц', '3', '3', '9', 'Акция «Первая печать бесплатно», реклама в старостах'],
['Кража расходных материалов', '2', '4', '8', 'Хранение бумаги в закрытом шкафу, инвентаризация раз в неделю']
]
add_table_tnr(doc, risk_data, risk_headers)
add_heading_tnr(doc, '2.6. Коммуникационный план', level=2)
comm_headers = ['Аудитория', 'Информация', 'Канал связи', 'Периодичность']
comm_data = [
['Команда проекта', 'Текущие задачи, проблемы', 'Чат в Telegram', 'Ежедневно'],
['Администрация колледжа', 'Отчет о ходе работ, финансовые итоги', 'Официальный email / Собрание', 'Раз в 2 недели'],
['Студенты (клиенты)', 'Анонсы акций, график работы', 'Посты в VK, чаты групп', 'Раз в неделю']
]
add_table_tnr(doc, comm_data, comm_headers)
doc.add_page_break()
# ЗАКЛЮЧЕНИЕ
add_heading_tnr(doc, 'ЗАКЛЮЧЕНИЕ', level=1)
conclusion_texts = [
"В ходе выполнения проектной работы был детально разработан план запуска сервиса «Копирка-Campus».",
"1. Анализ актуальности подтвердил высокий спрос на услуги оперативной печати внутри кампуса.",
"2. Сформированное дерево целей и WBS позволили декомпозировать проект на управляемые этапы.",
"3. Рассчитанный бюджет в 45 500 рублей является реалистичным и может быть покрыт за счет средств студенческого профсоюза или небольшого гранта.",
"4. Выявленные риски (поломка оборудования, низкий спрос) имеют четкие и недорогие процедуры митигации.",
"Вывод: Проект является технически и экономически целесообразным. При строгом соблюдении календарного плана запуск сервиса к 01.02.2027 года вполне достижим."
]
for text in conclusion_texts:
p = doc.add_paragraph(text)
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
doc.add_page_break()
# СПИСОК ИСТОЧНИКОВ
add_heading_tnr(doc, 'СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ', level=1)
refs = [
"1. ГОСТ Р 54869-2011. Проектный менеджмент. Требования к управлению проектом.",
"2. Мазур И.И., Шапиро В.Д. Управление проектами: учебное пособие. – М.: Омега-Л, 2020.",
"3. Материалы сайта «Студенческие инициативы» (студенческие стартапы в сфере услуг).",
"4. Внутренние правила пользования библиотекой и размещения оборудования колледжа."
]
for ref in refs:
p = doc.add_paragraph(ref)
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
doc.add_page_break()
# ПРИЛОЖЕНИЯ
add_heading_tnr(doc, 'ПРИЛОЖЕНИЯ', level=1)
add_heading_tnr(doc, 'Приложение А. Устав проекта (Project Charter) (фрагмент)', level=2)
p = doc.add_paragraph('Наименование проекта: Копирка-Campus.\nЦель: Обеспечение студентов и преподавателей доступной печатью.\nБюджет: 45 500 руб.\nСрок: 3 месяца.\nКлючевые участники: Руководитель проекта, Техник, Операторы.\nКритерии успеха: Выход на точку безубыточности за 6 месяцев.')
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
doc.add_page_break()
add_heading_tnr(doc, 'Приложение Б. Чек-лист приемки этапа «Закупка оборудования»', level=2)
checklist = [
"[ ] МФУ распаковано и визуально осмотрено.",
"[ ] Установлены картриджи, распечатана тестовая страница.",
"[ ] Оборудование подключено к электросети и сети колледжа.",
"[ ] Гарантийный талон и чек переданы бухгалтеру."
]
for item in checklist:
p = doc.add_paragraph(item)
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
doc.add_page_break()
add_heading_tnr(doc, 'Приложение В. Макет рекламного флаера (текстовое описание)', level=2)
p = doc.add_paragraph('Заголовок: «Печатай выгодно прямо в колледже!»\nОсновной текст: «Копирка-Campus» теперь в библиотеке! Черная печать от 5 руб., цветная от 15 руб. Скидка 10% старостам групп.\nQR-код: (ведет на чат для предзаказа файлов).\nКонтакты: ауд. 105, ежедневно с 9:00 до 16:00.')
for run in p.runs:
run.font.name = 'Times New Roman'
run.font.size = Pt(14)
# Сохранение
file_name = 'Копирка_Campus_Проект.docx'
doc.save(file_name)
print("Готово! Документ сохранен как: " + file_name)