Управление разработкой информационной системы. Электронный журнал успеваемости.
Заказать уникальную курсовую работу- 52 52 страницы
- 12 + 12 источников
- Добавлена 14.07.2022
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
1. Обзор современного состояния предметной области, к которой относится решаемая задача 5
1.1 Анализ предметной области. Обзор актуальной отечественной и зарубежной литературы по теме работы 5
1.2 Определение цели и задач проекта 6
1.3 Обзор существующих решений 8
Сервис от Google 8
Электронный дневник на базе 3Т:ХроноГраф Журнал 9
ЭлЖУР 12
1.4 Выводы к разделу 1 14
2. Планирование проекта 14
2.1 Выбор языка программирования и среды разработки 14
2.2 Определение структуры проекта 22
2.3 Выбор необходимых библиотек и структур 22
2.4 JSON файлы 25
2.5 Библиотека графического интерфейса EasyGUI 26
3. Разработка программной реализации 27
3.1 Разработка базы данных 27
3.1.1 Инфологическая модель БД 28
3.1.2 Даталогическая модель 30
3.2 Разработка и описание пользовательского интерфейса 31
3.2.1 Главное меню программы 31
3.2.2 Загрузка базы данных 32
3.2.3 Изменить информацию о школьнике 33
3.2.4 Показать информацию о школьнике 35
3.2.5 Поиск информации о школьниках по возрасту 37
3.2.6 Вывод на экран всей БД 38
3.2.7 Распечатать всю БД 39
3.2.8 Сохранить БД 40
4 РАСЧЕТ ЭКОНОМИЧЕСКОЙ ЭФФЕКТИВНОСТИ 40
4.1 Социальная и техническая эффективность 40
Заключение 43
Список литературы 43
Приложение 1. Исходный код программы 44
Приложение 2. Файл базы данных в формате JSON 52
Оценка данных показателей приведена в таблице 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 jsonimport easyguifrom easygui import *import osimport datetimenow = 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. Гниденко, И. Г. Технология разработки программного обеспечения : учеб. пособие для СПО / И. Г. Гниденко, Ф. Ф. Павлов, Д. Ю. Федоров. — М. : Издательство Юрайт, 2017. — 235 с.
3. Гордеев, С. И. Организация баз данных в 2 ч. Часть 2 : учебник для вузов / С. И. Гордеев, В. Н. Волошина. — 2-е изд., испр. и доп. — М. : Издательство Юрайт, 2019. — 501 с.
4. Жмудь, В. А. Моделирование замкнутых систем автоматического управления : учеб. пособие для академического бакалавриата / В. А. Жмудь. — 2-е изд., испр. и доп. — М. : Издательство Юрайт, 2019. — 128 с.
5. Зыков, С. В. Программирование. Объектно-ориентированный подход : учебник и практикум для академического бакалавриата / С. В. Зыков. — М. : Издательство Юрайт, 2019. — 155 с.
6. Иванов, В. М. Интеллектуальные системы : учеб. пособие для СПО / В. М. Иванов ; под науч. ред. А. Н. Сесекина. — М. : Издательство Юрайт, 2019. — 93 с.
7. Иванов, В. М. Интеллектуальные системы : учеб. пособие для вузов / В. М. Иванов ; под науч. ред. А. Н. Сесекина. — М. : Издательство Юрайт, 2017. — 91 с.
8. Кубенский, А. А. Функциональное программирование : учебник и практикум для академического бакалавриата / А. А. Кубенский. — М. : Издательство Юрайт, 2019. — 348 с.
9. https://pythonist.ru
10. https://pythonworld.ru/
11. https://pythontutor.ru/
12. https://ru.code-basics.com/languages/python
Вопрос-ответ:
Какие задачи решает информационная система Электронный журнал успеваемости?
Информационная система Электронный журнал успеваемости решает задачи автоматизации учета успеваемости учеников, обеспечения доступа родителей и учителей к актуальным данным об успеваемости, а также генерации отчетов и статистики по успеваемости.
Какие основные цели и задачи стоят перед проектом?
Основная цель проекта разработки информационной системы Электронный журнал успеваемости - облегчить учет, мониторинг и анализ успеваемости учеников для родителей и учителей. Задачи проекта включают выбор языка программирования, анализ предметной области, обзор существующих решений, планирование проекта и т.д.
Какие существующие решения были проанализированы в рамках исследования?
В рамках исследования были проанализированы следующие существующие решения: сервис от Google, Электронный дневник на базе 1С:Школа, ХроноГраф Журнал и ЭлЖУР. Каждое из этих решений имеет свои особенности и достоинства, которые были учтены при разработке информационной системы Электронный журнал успеваемости.
Какой язык программирования был выбран для проекта?
Для проекта разработки информационной системы Электронный журнал успеваемости был выбран язык программирования Python. Выбор языка обусловлен его широким функционалом, поддержкой большого количества библиотек и фреймворков, а также удобством разработки и поддержки проекта.
Какие выводы можно сделать по сравнению различных существующих решений?
По сравнению различных существующих решений можно сделать следующие выводы: сервис от Google предоставляет удобный интерфейс и интеграцию с другими сервисами Google, Электронный дневник на базе 1С:Школа обладает расширенными возможностями по автоматизации школьных процессов, ХроноГраф Журнал предоставляет удобный доступ к актуальным данным успеваемости, а ЭлЖУР обладает простым и интуитивным интерфейсом. Выбор решения зависит от конкретных требований и потребностей пользователей.
Какие задачи решает информационная система Электронный журнал успеваемости?
Информационная система Электронный журнал успеваемости предназначена для автоматизации процесса ведения журнала успеваемости школьников. Она позволяет записывать и отслеживать оценки, прогулы, посещаемость учеников, а также осуществлять взаимодействие между учителями, учениками и их родителями.
Какие сервисы уже существуют на рынке для ведения электронного журнала успеваемости?
На рынке уже существуют различные сервисы для ведения электронного журнала успеваемости. Одним из таких сервисов является сервис от Google, который предоставляет возможность создания и ведения электронного журнала в облаке. Также существуют другие решения, например, электронный дневник на базе 1С ХроноГраф Журнал или ЭлЖУР.
Какой язык программирования был выбран для реализации проекта?
Для реализации проекта был выбран язык программирования, который наиболее подходит для разработки информационной системы Электронный журнал успеваемости. Конкретный выбор языка зависит от ряда факторов, таких как требования к системе, опыт разработчиков, доступность необходимых ресурсов и т. д. Оптимальный выбор языка программирования поможет обеспечить эффективную и качественную разработку системы.
Какие выводы можно сделать по обзору существующих решений в области электронных журналов успеваемости?
По обзору существующих решений в области электронных журналов успеваемости можно сделать следующие выводы: на рынке уже есть несколько сервисов, которые позволяют вести электронный журнал; каждый из этих сервисов имеет свои особенности и преимущества; выбор конкретного сервиса зависит от индивидуальных потребностей и требований пользователей.