Проектирование хранилища данных для школы

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Проектирование баз данных
  • 51 51 страница
  • 12 + 12 источников
  • Добавлена 09.05.2023
1 496 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
Введение 4
Обзор современного состояния предметной области, к которой относится решаемая задача 5
Анализ предметной области. Обзор актуальной отечественной и зарубежной литературы по теме работы 5
Определение цели и задач проекта 6
Обзор существующих решений 8
Сервис от Google 8
Электронный дневник на базе 3Т:ХроноГраф Журнал 9
ЭлЖУР 12
Выводы к разделу 1 13
2. Планирование проекта 14
2.1 Выбор языка программирования и среды разработки 14
2.2 Определение структуры проекта 21
2.3 Выбор необходимых библиотек и структур 21
JSON файлы 23
2.5 Библиотека графического интерфейса EasyGUI 24
Разработка программной реализации 25
3.1 Разработка базы данных 25
3.1.1 Инфологическая модель БД 26
3.1.2 Даталогическая модель 28
Разработка и описание пользовательского интерфейса 29
3.2.1 Главное меню программы 29
3.2.2 Загрузка базы данных 30
3.2.3 Изменить информацию о школьнике 31
3.2.4 Показать информацию о школьнике 33
3.2.5 Поиск информации о школьниках по возрасту 35
3.2.6 Вывод на экран всей БД 36
3.2.7 Распечатать всю БД 37
3.2.8 Сохранить БД 38
4 РАСЧЕТ ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ 38
4.1 Социальная и техническая эффективность 38
Заключение 41
Список литературы 41
Приложение 1. Исходный код программы 42
Приложение 2. Файл базы данных в формате JSON 50
Фрагмент для ознакомления

Оценка данных показателей приведена в таблице 2.



Таблица 12– Оценка показателей технической эффективности проекта
№ Название показателя Значение показателя Существующая система Разрабатываемая система 1 Снижение времени подготовки аналитических документов 1-1,5 часа 10-15 мин. 2 Снижение трудозатрат 1 час 0,5 часа 3 Повышение качества прогноза 5 7
Таким образом, опираясь на данные, приведенные в таблицах 1, 2, можно сделать вывод о социальной и технической эффективности разработки. Однако, основным показателем качества АИС является ее экономическая эффективность.

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

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




Заключение

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

Список литературы
Бессмертный, И. А. Системы искусственного интеллекта : учеб. пособие для СПО / И. А. Бессмертный. — 2-е изд., испр. и доп. — М. : Издательство Юрайт, 2018. — 130 с.
Гниденко, И. Г. Технология разработки программного обеспечения : учеб. пособие для СПО / И. Г. Гниденко, Ф. Ф. Павлов, Д. Ю. Федоров. — М. : Издательство Юрайт, 2017. — 235 с. 
Гордеев, С. И. Организация баз данных в 2 ч. Часть 2 : учебник для вузов / С. И. Гордеев, В. Н. Волошина. — 2-е изд., испр. и доп. — М. : Издательство Юрайт, 2019. — 501 с. 
Жмудь, В. А. Моделирование замкнутых систем автоматического управления : учеб. пособие для академического бакалавриата / В. А. Жмудь. — 2-е изд., испр. и доп. — М. : Издательство Юрайт, 2019. — 128 с. 
Зыков, С. В. Программирование. Объектно-ориентированный подход : учебник и практикум для академического бакалавриата / С. В. Зыков. — М. : Издательство Юрайт, 2019. — 155 с. 
Иванов, В. М. Интеллектуальные системы : учеб. пособие для СПО / В. М. Иванов ; под науч. ред. А. Н. Сесекина. — М. : Издательство Юрайт, 2019. — 93 с. 
Иванов, В. М. Интеллектуальные системы : учеб. пособие для вузов / В. М. Иванов ; под науч. ред. А. Н. Сесекина. — М. : Издательство Юрайт, 2017. — 91 с. 
Кубенский, А. А. Функциональное программирование : учебник и практикум для академического бакалавриата / А. А. Кубенский. — М. : Издательство Юрайт, 2019. — 348 с. 
https://pythonist.ru
https://pythonworld.ru/
https://pythontutor.ru/
https://ru.code-basics.com/languages/python

Приложение 1. Исходный код программы

#импортируем необходимые библиотеки import json import easygui from easygui import * import os import datetime now = datetime.datetime.now() #получаем текущее время print('Добро пожаловать в базу данных об успеваемости школьников')#выводим служебную инфу в консоль lvl = 0 # начальный уровень БД loaded=False #флаг загрузки БД #это тестовая БД '''BD={'Иванов': ['11А','01.01.2004', [ ['экономика', '05.05.2022' ],#сданные зачеты ['философия', '01.05.2022' ] ], [ ['информатика', '5', '13.05.2022'],#сданные экзамены ['моделирование', '4', '06.05.2022'] ] ], 'Петров': ['10Б','01.01.2005', [ ['экономика', '04.05.2022' ],#сданные зачеты ['философия', '02.05.2022' ] ], [ ['информатика', '4', '13.05.2022'],#сданные экзамены ['моделирование', '3', '06.05.2022'] ] ] }''' def zapros_one(name): #функция запроса информации по ФИО школьника info = BD[name] #получаем информаию из БД по ключу - ФИО школьника out = [] #временный список для хранения полученной информации, пока пустой out.append('Дата рождения - ' + str(info[1]) + '\n') #добавляем дату рождения out.append('Сданные зачеты:' + '\n') #добавляем шапку про сданные зачеты # print(info) for i in info[2]: #цикл где проходимся по всем зачетам out.append('Предмет:' + str(i[0]) + ' , дата: ' + str(i[1]) + '\n') #добавляем инфу про каждый сданный зачет out.append('Сданные экзамены:' + '\n') #добавляем шапку про сданные экзамены for i in info[3]: #цикл где проходимся по всем экзамегам out.append('Предмет:' + str(i[0]) + ' , оценка: ' + str(i[1]) + ' , дата: ' + str(i[2]) +'\n') #добавляем инфу про каждый сданный экзамен return out #возвращаем список информации def zapros_all():#функция запроса информации по всем школьникам out = []#временный список для хранения полученной информации, пока пустой for i in BD:# в цикле проходимся по всем школьникам out.append( "Данные о школьнике " + i + ' из класса ' + BD[i ][0] + '\n') #добавляем инфо про каждого школьника - ФИО и номер класса out=out+zapros_one(i) #добавляем информацию - запрашиваем запрос по каждому школьнику отдельное return out #возвращаем список информации def zapros_age(ag):#функция запроса информации по всем школьникдам достигшим определенного возраста out = []#временный список для хранения полученной информации, пока пустой for i in BD:# в цикле проходимся по всем школьникам if now.year-int(BD[i][1][-4:])>=ag: #если наш школьник достиг указанного возраста - используется текущий год out.append( "Данные о школьнике " + i + ' из класса ' + BD[i][0] + '\n') #добавляем инфо про каждого школьника - ФИО и номер класса out=out+zapros_one(i)#добавляем информацию - запрашиваем запрос по каждому школьнику отдельное return out#возвращаем список информации def zachets(name): #ищем все сданные зачеты конкретного школьника info = BD[name] #получаем информаию из БД по ключу - ФИО школьника out = []#временный список для хранения полученной информации, пока пустой out.append('Сданные зачеты:' + '\n')#добавляем инфу про каждый сданный зачет k=1 #порядковый номер зачета for i in info[2]:#цикл где проходимся по всем зачетам out.append(str(k)+'. Предмет:' + str(i[0]) + ' , дата: ' + str(i[1]) + '\n')#добавляем инфу про каждый сданный зачет k+=1 #увеличиваем порядковый номер return out#возвращаем список информации def exams(name):#ищем все сданные экзамены конкретного школьника info = BD[name]#получаем информаию из БД по ключу - ФИО школьника out = []#временный список для хранения полученной информации, пока пустой out.append('Сданные экзамены:' + '\n')#добавляем инфу про каждый сданный экзамен k=1#порядковый номер экзамена for i in info[3]:#цикл где проходимся по всем экзаменам out.append('Предмет:' + str(i[0]) + ' , оценка: ' + str(i[1]) + ' , дата: ' + str(i[2]) + '\n')#добавляем инфу про каждый сданный экзамен k+=1#увеличиваем порядковый номер return out#возвращаем список информации msg ="Выберите действие с базой данный" win_title = "Главное меню" choices = ["Загрузить БД", "Изменить информацию о школьнике", "Поиск информации по школьнику", "Поиск информации о школьниках по возрасту", 'Вывод на экран всей БД', 'Распечатать всю БД','Сохранить БД'] #варианты выборы действий на главном окне while True: #бесконечный цикл запуска программы if lvl == 0: #если мы на нулевом - стартовом уровне запуска программы choice = choicebox(msg, win_title, choices) # отображаем главную форму if not choice: #если нажали Отмена break #выходим из программы elif choice == "Загрузить БД": #если выбрали этот пункт # загрузить из json fname=fileopenbox('Выберите файл формата JSON') #открываем файл with open(fname, 'r', encoding='utf-8') as fh: # открываем файл на чтение BD = json.load(fh) # загружаем из файла данные в словарь data print('БД успещно загружена') loaded=True #меняем флаг загрузки БД elif choice=='Сохранить БД': #если выбрали этот пункт # сохранить в json with open('BD.json', 'w', encoding='utf-8') as fh: # открываем файл на запись fh.write(json.dumps(BD, ensure_ascii=False)) # преобразовываем словарь data в unicode-строку и записываем в файл print('БД успещно сохранена') elif choice == "Изменить информацию о школьнике": #если выбрали этот пункт lvl=2 #меняем уровень программы elif choice == "Поиск информации по школьнику": #если выбрали этот пункт lvl=1 #меняем уровень программы elif choice == 'Вывод на экран всей БД': #если выбрали этот пункт if not loaded: #если БД не загружена то выводим соответствующее сообщение msgbox('Не загружена БД!') else: z = zapros_all() #запросили инфу по всем школьникам print('Выводим на экран всю БД') msg = "Данные по всей БД" + '\n' title = "Данные о школьниках" textbox(msg, title, z) #вывели инфу по всем школьникам elif choice == 'Распечатать всю БД': if not loaded:#если БД не загружена то выводим соответствующее сообщение msgbox('Не загружена БД!') else: z = zapros_all()#запросили инфу по всем школьникам print('Печатаем всю БД') os.startfile(z, "print") #запустили на печать инфу elif choice == "Поиск информации о школьниках по возрасту": if not loaded:#если БД не загружена то выводим соответствующее сообщение msgbox('Не загружена БД!') else: lvl=3#меняем уровень программы elif lvl==1: #если ищем информацию по одному школьнику if not loaded:#если БД не загружена то выводим соответствующее сообщение msgbox('Не загружена БД!') lvl=0 else: student=enterbox("Введите фамилию, имя и отчество школьника в именительном падеже") #запросили его ФИО if not student: #если не нашли такого школьника lvl=0 #то обратно на главную форму else: z=zapros_one(student) #запросили инфу по школьнику msg = "Данные о школьнике " + student + ' из класса ' + BD[student][0] + '\n' title = "Данные о школьнике" textbox(msg,title,z)#вывели инфу по школьнику lvl = 0# обратно на главную форму elif lvl==2:#если хотим менять информацию по одному школьнику if not loaded:#если БД не загружена то выводим соответствующее сообщение msgbox('Не загружена БД!') lvl=0# обратно на главную форму else: student = enterbox("Введите фамилию, имя и отчество школьника в именительном падеже") #запросили его ФИО if not student: #если нажали Отмена lvl = 0# обратно на главную форму else: possible_choices = ["класс", "Зачеты", "Экзамены",'Назад'] #выводим варианты ответов какую инфу менять result = buttonbox("Что будем менять?", choices=possible_choices) #запросили его ФИО if result=='Назад': lvl=0# обратно на главную форму elif result=='класс': gr_new=enterbox("Введите новую класс для школьника "+student) #запросили его новый номер класса if not gr_new:#если нажали Отмена lvl = 0# обратно на главную форму else: print('класс '+BD[student][0] + ' школьника '+student+' '+' была успешно изменена на '+gr_new) #вывели сообщение в консоль BD[student][0]=gr_new #поменяли инфу в БД lvl = 0# обратно на главную форму elif result == 'Зачеты': possible_choices = ["Добавить", "Удалить", "Редактировать", 'Назад']#выводим варианты ответов какую инфу менять z=zachets(student) #запросили все его зачеты result = buttonbox(z, choices=possible_choices) if result=='Добавить': msg = "Введите информацию про сданный зачет" title = "Новый зачет" fieldNames = ["Предмет", "Дата"] fieldValues = [] # мы должны начать с пустого списка для правильной работы метода. fieldValues = multenterbox(msg, title, fieldNames)#вывели форму заполнения if fieldValues[0]!='' and fieldValues[1]!='': #если он все заполнил BD[student][2].append([fieldValues[0],fieldValues[1]])#поменяли инфу в БД print('Новый зачет добавлен') #вывели сообщение в консоль lvl = 0# обратно на главную форму elif result == 'Удалить': num=integerbox('Введите номер записи которую хотите удалить') #выбор номера записи if num: #если выбрал номер записи BD[student][2].pop(num-1) #удаляем инфу print('Зачет был успешно удален') #вывели сообщение в консоль elif result == 'Экзамены': possible_choices = ["Добавить", "Удалить", "Редактировать", 'Назад'] z=exams(student) #запросили все его экзамены result = buttonbox(z, choices=possible_choices) if result=='Добавить': msg = "Введите информацию про сданный экзамен" title = "Новый зачет" fieldNames = ["Предмет", 'Оценка',"Дата"] fieldValues = [] # мы должны начать с пустого списка для правильной работы метода. fieldValues = multenterbox(msg, title, fieldNames)#вывели форму заполнения if fieldValues[0]!='' and fieldValues[1]!=''and fieldValues[2]!='':#если он все заполнил BD[student][2].append([fieldValues[0],fieldValues[1],fieldValues[2]])#поменяли инфу в БД print('Новый экзамен добавлен')#вывели сообщение в консоль lvl = 0# обратно на главную форму elif result == 'Удалить': num = integerbox('Введите номер записи которую хотите удалить')#выбор номера записи if num: #если выбрал номер записи BD[student][3].pop(num-1)#удаляем инфу print('Экзамен был успешно удален')#вывели сообщение в консоль elif lvl==3: if not loaded:#если БД не загружена то выводим соответствующее сообщение msgbox('Не загружена БД!') lvl=0# обратно на главную форму else: age=integerbox("Введите возраст школьников, которых надо найти") if not age:#если нажали Отмена lvl=0# обратно на главную форму else: z=zapros_age(age) #запросили инфу о школьниках достигших определенного возраста msg = "Данные о школьниках , которым больше или равно "+str(age)+' лет ' + '\n' title = "Данные о школьниках" textbox(msg,title,z) #вывели на экран эту информацию lvl=0# обратно на главную форму

Приложение 2. Файл базы данных в формате JSON
{"Иванов": ["МС", "01.01.1990", [["экономика", "05.05.2022"], ["философия", "01.05.2022"]], [["информатика", "5", "13.05.2022"], ["моделирование", "4", "06.05.2022"]]],
"Петров": ["ОО", "01.01.1998", [["экономика", "04.05.2022"], ["философия", "02.05.2022"]], [["информатика", "4", "13.05.2022"], ["моделирование", "3", "06.05.2022"]]]}

Список литературы
Бессмертный, И. А. Системы искусственного интеллекта : учеб. пособие для СПО / И. А. Бессмертный. — 2-е изд., испр. и доп. — М. : Издательство Юрайт, 2018. — 130 с.
Гниденко, И. Г. Технология разработки программного обеспечения : учеб. пособие для СПО / И. Г. Гниденко, Ф. Ф. Павлов, Д. Ю. Федоров. — М. : Издательство Юрайт, 2017. — 235 с. 
Гордеев, С. И. Организация баз данных в 2 ч. Часть 2 : учебник для вузов / С. И. Гордеев, В. Н. Волошина. — 2-е изд., испр. и доп. — М. : Издательство Юрайт, 2019. — 501 с. 
Жмудь, В. А. Моделирование замкнутых систем автоматического управления : учеб. пособие для академического бакалавриата / В. А. Жмудь. — 2-е изд., испр. и доп. — М. : Издательство Юрайт, 2019. — 128 с. 
Зыков, С. В. Программирование. Объектно-ориентированный подход : учебник и практикум для академического бакалавриата / С. В. Зыков. — М. : Издательство Юрайт, 2019. — 155 с. 
Иванов, В. М. Интеллектуальные системы : учеб. пособие для СПО / В. М. Иванов ; под науч. ред. А. Н. Сесекина. — М. : Издательство Юрайт, 2019. — 93 с. 
Иванов, В. М. Интеллектуальные системы : учеб. пособие для вузов / В. М. Иванов ; под науч. ред. А. Н. Сесекина. — М. : Издательство Юрайт, 2017. — 91 с. 
Кубенский, А. А. Функциональное программирование : учебник и практикум для академического бакалавриата / А. А. Кубенский. — М. : Издательство Юрайт, 2019. — 348 с. 
https://pythonist.ru
https://pythonworld.ru/
https://pythontutor.ru/
https://ru.code-basics.com/languages/python

Вопрос-ответ:

Какие задачи решает проектирование хранилища данных для школы?

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

Каковы основные принципы проектирования хранилища данных для школы?

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

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

Существуют различные решения для хранилища данных в школе. Одним из них является сервис от Google, который предоставляет возможность хранить и обрабатывать данные в облаке. Также есть электронный дневник на базе 3Т ХроноГраф Журнал, который позволяет вести учет информации о студентах, оценках, успеваемости и других данных. Еще одним вариантом является электронный журнал (ЭлЖУР), предназначенный для автоматизации учета и отслеживания данных о студентах и учителях.

Какие преимущества предоставляет сервис от Google для хранилища данных в школе?

Сервис от Google для хранилища данных в школе предоставляет ряд преимуществ. Во-первых, данные хранятся в облаке, что обеспечивает их централизованность и доступность с любого устройства. Во-вторых, сервис обладает высокой масштабируемостью, позволяя сохранять большие объемы данных. В-третьих, Google предоставляет возможности аналитики и создания отчетов, что упрощает анализ данных и получение нужной информации. Кроме того, сервис обеспечивает безопасность данных и защиту от потери информации.

Какие существуют современные подходы к проектированию хранилища данных для школы?

Существуют различные подходы к проектированию хранилища данных для школы. Один из них - использование сервиса от Google. Еще один подход - создание электронного дневника на базе программы 3Т ХроноГраф Журнал. Также существует решение под названием ЭлЖУР. В обзоре представлены различные варианты решений с указанием их особенностей.

Какие задачи решает проект по проектированию хранилища данных для школы?

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

Какие есть существующие решения для проектирования хранилища данных для школы?

Существуют различные решения для проектирования хранилища данных для школы. Одно из них - сервис от Google, который предоставляет удобный интерфейс для работы с данными и интеграцию с другими сервисами Google. Еще одно решение - электронный дневник на базе программы 3Т ХроноГраф Журнал, который предлагает широкие возможности по учету успеваемости и взаимодействию с родителями. Также стоит отметить решение под названием ЭлЖУР, которое предоставляет функционал по управлению электронными журналами.

Какие языки программирования и среды разработки могут быть использованы для проектирования хранилища данных для школы?

Для проектирования хранилища данных для школы можно использовать различные языки программирования и среды разработки. Например, для разработки веб-приложения можно выбрать язык программирования JavaScript и среду разработки Visual Studio Code. Для работы с базой данных можно использовать язык программирования SQL и среду разработки MySQL Workbench. Конкретный выбор языка программирования и среды разработки зависит от требований и предпочтений разработчика.

Какие существуют современные подходы к проектированию хранилища данных для школы?

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

Какие сервисы от Google можно использовать для хранения данных школы?

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