Учет успеваемости студентов
Анализ предметной области. Разработка программы ведения учета успеваемости студентов, Минимальные системные требования. Алгоритм работы меню программы, Ввод, добавление, редактирование и удаление информации. Отладка и тестирование программного средства.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 10.01.2020 |
Размер файла | 1,6 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
федеральное государственное бюджетное образовательное учреждение высшего образования
«КАМЧАТСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Факультет информационных технологий
Кафедра «Информационные системы»
Курсовая работа
Дисциплина: Информатика и программирование
Тема: Учет успеваемости студентов
Выполнил: студент гр.17-ПИб
Кукушкин Е.С.
Принял: доцент кафедры ИС
Чебанюк С.В.
Петропавловск-Камчатский 2019
Задание на курсовую работу (проект)
Дисциплина: Информатика и программирование
Тема: Учет успеваемости студентов
Исполнитель: 17-ПИб, Кукушкин Евгений Сергеевич
Руководитель: Доцент кафедры ИС, Чебанюк Светлана Витальевна
Краткое содержание курсовой работы (проекта) Данная курсовая работа содержит в себе информацию и описание программы, а так же саму программу учета успеваемости студентов.
Исходные данные к курсовой работе (проекту) ГОСТ 19.701-90, ГОСТ 2.105, ГОСТ 7.32-2001, ГОСТ 19_003-80, Методические указания по курсовой работе, Айвор Хортон - Visual C++ 2010. Полный курс, Т. А. Павловская. - CC++. Программирование на языке высокого уровня
Руководитель Чебанюк С.В.
Исполнитель Кукушкин Е.С.
Дата выдачи задания «___» ___________ 201_ г.
ВВЕДЕНИЕ
На сегодняшний день информационные технологии являются неотъемлемой частью в любой сфере деятельности человека. Именно по этому, создание и внедрение приложений в повседневную жизнь является крайне актуальной проблемой современного общества. Приложения помогают решать огромное количество задач разного типа и сложности, благодаря чему работа человека значительно ускоряется и выполняется точнее и эффективнее. Без программ не обходится не одна современная фото или видеотехника, микроволновые печи и кондиционеры и другая бытовая техника.
В данной курсовой работе будет рассматриваться разработка программы ведения учета успеваемости студентов, которое поможет пользователям упрощать обработку данных о успеваемости студентов.
1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ
алгоритм редактирование удаление информация
Область применения информационных технологий растет по мере развития общества и технического прогресса как в России, так и во всем мире в целом. Новые технологии в области информационных технологий непрерывно внедряются во все сферы деятельности человека, начиная от быта и учебы, заканчивая разработкой новых областей применения данных технологий. На сегодняшний день, информатика одна из самых молодых наук, которая применяется информационными технологиями и изучает вопросы, связанные с поиском, сбором, хранением и использованием информации в различных сферах деятельности.
Информационные технологии активно применяются в учебном процессе, как способ более эффективного обучения будущих специалистов, не только в области IT, но и для подготовки будущих пилотов, инженеров, экономистов, врачей, дизайнеров и других. К примеру, в медицине, реализация информационных технологий хорошо применяется в применении виртуальной реальности при работе хирурга и его обучении.
В современном мире без информационных технологий не может обходиться не одно общество или предприятие и учреждение. В школах они применяются при построении баз данных учета успеваемости школьников, в средних профессиональных и высших учебных заведениях, более активно применяются информационные технологии при ведении учета успеваемости студентов, в банках данных хранятся научные работы. В предприятиях информационные технологии используются как в базах данных со сведениями о произведенных, хранящихся на складах и реализованных товарах, так и для ведения бухгалтерского учета.
Развитие информационных технологий облегчает работу бухгалтеров и фотографов, инженеров и видеографов, писателей, библиотекарей и других специалистов в различных областях. Таким образом, необходимость информационных технологий не подвергается сомнению и активно финансируется всеми предприятиями, государственными и муниципальными структурами.
Больше половины современного рынка занимают информационные технологии, как в России, так и за рубежом. Большинство, уже больше половины операций расчета, таких как покупка ценных бумаг, продажа или покупка акций, общение, дистанционное обучение в учебных заведениях и онлайн-тренинги, просмотр и многие другие действия происходят через интернет, который относится к информационным технологиям.
В XXI веке образованный человек, это не просто специалист, который имеет диплом, но еще и человек, который хорошо умеет обращаться с информационными технологиями, работающий с основными средствами обработки информации и имеющий базовые знания в таких программах, как Microsoft office word, excel, PowerPoint.
Информационные технологии в сфере предоставления услуг населению также играют немаловажную роль. Современные компании, которые занимаются предоставлением каких-либо услуг используют приложения, помогающие им хранить информацию о своих клиентах, значительно ускоряя процесс работы. Активно в предприятиях и онлайн-сервисах применяются нейросети, которые, в свою очередь, не смотря на сложность разработки и, порой, дороговизну, помогают автоматически подбирать пользователю интересующую его информацию в поисковых сервисах. Руководствуясь необходимым набором функций, современные компании создают приложения для клиентов, максимально точно подстраивающиеся под их запросы. Такие приложения очень полезны, ведь они исключают риск получения недостоверной информации, а также значительно сокращают время поиска необходимых данных. Приложение учета успеваемости студентов необходимо было разработать, чтобы упростить процесс обработки информации для преподавателей любых, высших и средних учебных заведений.
Не стоит упускать из виду тот факт, что информационные технологии активно внедряются и в высших учебных заведениях. Данные информационные системы и базы данных становятся незаменимым инструментом в обеспечении успешного и стабильного развития университета, снижая нагрузку с персонала учебного заведения, забирая на себя большую часть работы с документами и их хранения. Именно это и обусловило проведение теоретического анализа использования информационных производителей в высших учебных заведениях.
Для выполнения данной задачи приемлемо использовать среду разработки Microsoft Visual C++. Среда Microsoft Visual C++ поддерживает две отдельные, но тесно связанные между собой версии языка С++, а именно: исходную версию языка С++, представляющую собой стандарт ISO/IEC, а так же новую версию С++ под названием С++/CLI, которая была разработана компанией Microsoft и теперь утверждена в стандарте ECMA. Эти две версии языка С++ дополняют друг друга и играют совершенно разные роли. Версия ISO.ANSI C++ предназначена для написания высокопроизводительных приложений, способных функционировать на компьютере «родным» образом, в то время как версия С++/CLI была специально разработана для напиания приложений, ориентированных на Windows Forms[1]. Microsoft Visual C++ (далее - MSVC) - интегрированная среда разработки, предназначенная для создания прикладного программного обеспечения на языке C++ для операционных систем Windows, Android, Windows Mobile, MacOC, IOS и Lunix. Благодаря своей простоте и оптимальности, язык С++ очень популярен среди преподавателей, готовящих будущих программистов, передовых компаний, занимающихся разработкой программного обеспечения для указанных ранее операционных систем.
Язык С++ создан в 1979 году Бьёрном Страуструпом (Bjarne Straustrup) как расширение широко популярного языка программирования С. Первоначальное название нового языка "С с классами" впоследствии было изменено на укоренившееся "С++". Обогатив широко используемый программистами язык С конструкциями, позволяющими реализовать принципы объектно-ориентированного подхода при разработке программ, создатель не решился существенно изменить полюбившийся язык С, оставив используемые типы, операторы, указатели и др.[2]
Приложение будет предоставлять следующие функции:
1. Ввод и вывод фамилий студентов, даты рождения, номера их зачетных книжек и их оценок.
2. Дополнение и изменение данных в таблице.
2. РАЗРАБОТКА АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ
Алгоритм -- это процедура, которая принимает любой из возможных входных экземпляров и преобразует его в соответствии с требованиями, указанными в условии задачи. [9]
Алгоритмы строятся для решения тех или иных технических задач (computational problems). Формулировка описывает, каким требованиям должно удовлетворять решение задачи, а алгоритм, решающий, решающий эту задачу, находит объект, этим требованиям удовлетворяющий. [4]
2.1 ВИДЫ АЛГОРИТМОВ
Линейный алгоритм ? список команд (указаний), выполняемых последовательно друг за другом.
Рис. 1. Блок - схема «Линейный алгоритм»
Разветвленный алгоритм - алгоритм, содержащий хотя бы одну проверку условия, в результате которой обеспечивается переход на один из возможных вариантов решения
Рис. 2. Блок - схема «Разветвленный алгоритм»
Циклический алгоритм - алгоритм, предусматривающий многократное повторение одной и той же последовательности действий. Количество повторений обусловливается исходными данными или условием задачи
Рис. 3. Блок - схема «Циклический алгоритм»
2.2 БЛОК-СХЕМА ПРОГРАММЫ
Для построения блок-схемы программы, необходимо ссылаться на международные стандарты (ГОСТы).
Согласно ГОСТ 19.701-90 под схемой понимается графическое представление определения, анализа или метода решения задачи. С помощью схем можно отобразить как статические, так и динамические аспекты системы. Символы, приведенные в государственном стандарте, могут использоваться в следующих типах схем:
· Схемы данных - определяют последовательность обработки данных и их носители;
· Схемы программ - отображают последовательность операций в программе (по сути, это и есть блок-схемы алгоритмов в традиционном понимании);
· Схемы работы системы - отображают управление операциями и потоки данных в системе;
· Схемы взаимодействия программ - отображают путь активации программ (модулей) и их взаимодействие с соответствующими данными;
· Схемы ресурсов системы - отображают конфигурацию блоков данных и обрабатывающих блоков. [2]
Для выполнения поставленной задачи, в программном коде присутствуют классы.
При определении класса создается новый тип данных, который можно использовать подобно встроенному типу данных С++. Однако, в отличие от встроенных типов, классы содержат как данные, так и функции (функции, содержащиеся в стандартных библиотеках, описаны отдельно от эпределений типов). Класс позволяет инкапсулировать все функции и данные, необходимые для упраиления частными компонентами программы (например, окном на экране; рисунком, построенным с помощью графической программы [6]
Класс в языке С++ - это определяемый пользователем тип данных.[7]
В интерфейсе программы нет необходимости, так как принцип её работы крайне прост и понятен любому пользователю. Работа программы состоит всего из пяти основных шагов:
1. Создается файл списка студентов.
2. Файл читается программой и выводится на экран в виде таблицы.
3. Далее, идет работа пользователя с файлом, которая заключается в изменении, добавлении или удалении студентов в таблицу и далее, соответственно, в файл.
4. Завершив заполнение данных пользователем, программа обрабатывает полученную информацию.
5. После того, как пользователь дал приложению команду «Сохранить и выйти», программа сохраняет изменения и записывает их в файл, после чего закрывается.
Рис. 4. Блок-схема работы программы
При запуске исходного кода, программа подключает библиотеки работы с файлами. Программа создает и открывает текстовый файл формата .txt и с этого момента начинает запись данных в этот файл.
Рис. 5. Блок-схема подпроцесса Student.h
На рисунке 5 изображена блок-схема работы подпроцесса «Student.h». Как видно на данном рисунке, данный подпроцесс представляет собой линейный алгоритм, который состоит из классов. Классы в данном приложении необходимы для более корректного выполнения цели курсовой работы.
Рис. 6. Блок-схема подпроцесса «Обработка запросов пользователя через меню».
На рисунке 6 изображена блок-схема подпроцесса «Обработка запросов пользователя через меню». По своей сущности, это и есть блок-схема работы главного меню программы. Алгоритм работы меню программы, изображенный на рисунке 6, построен в виде блок-схемы в соответствии с требованиями ГОСТ 19.701-90, хотя на деле, работа меню осуществлена благодаря оператору switch программный код вышел не слишком громоздким.
3. СОЗДАНИЕ ПРОГРАММЫ
Составление кода в среде разработки MS Visual studio 2015 несет в себе цель составить максимально простую и понятную для пользователя программу. Редактирование кода данной программы несет в себе следующие задачи:
1. Быть максимально простой и понятной пользователю
2. Программа должна уметь записывать и сохранять информацию, вводимую пользователем.
3. Программа, используя заранее описанные команды, должна выводить информацию о конкретном объекте (студенте) на экран.
4. Программа, по заранее описанной команде, должна выводить на экран информацию об оценках за конкретный предмет (дисциплину).
Для упрощения разработки меню в программе, актуально применять оператор «switch», чтобы не заваливать программный код большим количеством операторов «if».
Оператор «switch» (переключатель) предназначен для разветвления процесса вычислений па несколько направлений. [8]
Рис. 7. Структурная схема оператора «switch».
4. ОТЛАДКА И ТЕСТИРОВАНИЕ ПРОГРАММЫ
Одним из основных методов оценки качества программного обеспечения является тестирование.
Тестирование программного средства (ПС) - это процесс выполнения программ на некотором наборе данных, для которого заранее известен результат применения или известны правила поведения этих программ. Указанный набор данных называется тестовым или просто тестом. Тестирование программ является одной из составных частей более общего понятия - «отладка программ». Под отладкой понимается процесс, позволяющий получить программу, функционирующую с?требующимися характеристиками в?заданной области изменения входных данных. [3]
Огромную роль в программировании играет процесс отладки программ.
Отладка -- это процесс определения и устранения причин ошибок. Этим она отличается от тестирования, направленного на обнаружение ошибок. В некоторых проектах отладка занимает до 50% общего времени разработки. Многие программисты считают отладку самым трудным аспектом программирования. [5]
. Программные ошибки, как правило, делятся на три вида:
· Синтаксическая ошибка. Неправильное употребление синтаксических конструкций, например, употребление оператора цикла for без скобок.
· Семантическая ошибка. Нарушение семантики той или иной конструкции, например передача функции параметров, не соответствующих ее аргументам.
· Логическая ошибка. Нарушение логики программы, приводящее к неверному результату. Это наиболее трудный для «отлова» тип ошибки, особенно в языке С++, поскольку, подобного рода ошибки, как правило, кроются в алгоритмах и требуют тщательного анализа и всестороннего тестирования.
Обнаружение большинства синтаксических ошибок автоматизировано в основных системах программирования. Поиск же семантических ошибок гораздо менее формализован; часть их проявляется при исполнении программы в нарушениях процесса автоматических вычислений и индицируется либо выдачей диагностических сообщений рабочей программы, либо отсутствием печати результатов из-за зацикливания одной и той же части программы, либо появлением непредусмотренной формы или содержания печати результатов.
Во время запуска второй и третьей команды меню и последующим вводом номера студента, программа удаляла или изменяла предыдущего по списку студента, что возникало по незначительным ошибкам программного кода внутри циклов «for». Данные ошибки были устранены.
5. ПРОГРАММАНАЯ ДОКУМЕНТАЦИЯ
5.1 ФУНКЦИОНАЛЬНОЕ ОПИСАНИЕ
Данная программа предназначена для работы с данными об успеваемости студентов в деканатах, либо личном пользовании преподавателей и старост. Она позволяет добавлять, редактировать, удалять и сортировать данные в таблицах.
Минимальные системные требования:
Процессор: Intel Celeron CPU 1007 @ 1.5 ГГц.
Операционная система: Windows XP и выше.
Оперативная память: 1 Мб
Пространство на жестком диске: 2 Мб
5.2 ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ
1. Запуск программы:
Сначала нужно запустить файл приложения (AStudProgress - C++.exe), который находится в папке Debug каталогa программы:
Рис. 8. Каталог программы
2. Главное меню
Главное меню программы состоит из сразу выведенной таблицы, под которой расположены 4 команды: «1. Добавить студента», «2.Изменить студента», «3.Удалить студента», «4.Сохранить и выйти».
Рис. 9. Главное меню программы
Команда 1. «Добавить студента» - добавляет вниз таблицы пустую строку с нулевыми значениями.
Команда 2. «Изменить студента» - позволяет редактировать данные студента.
Команда 3. «Удалить студента» - Удаляет указанного пользователем студента
Команда 4. «Сохранить и выйти» - Сохраняет внесенные пользователем изменения и закрывает приложение.
3. Работа с программой.
Для добавления пустой записи в таблицу, пользователю необходимо набрать команду, соответствующую номеру пункта меню - «1.Добавить студента», то есть, ввести «1» и нажать клавишу «Enter», данный алгоритм повторять, пока в таблице не будет необходимое количество строк:
Рис. 10. Добавление пустой строки в таблицу
На рисунке 10 изображен начальный экран запущенного приложения, в выделенной части изображения запрос приложения «Выберите пункт меню». В данном случае, условным пользователем вводится команда «1», которая соответствует пункту меню «1. Добавить студента».
Рис. 11. Заполнено необходимое количество строк
Чтобы отредактировать строку, необходимо ввести «2» и нажать «Enter», после чего приложение запросит ввести порядковый номер строки студента, после чего запросит ввести новую фамилию и инициалы. В приложение поддерживает ввод кириллицы, поэтому, фамилии допускается вводить на русском языке. Однако, вместо пробела между фамилией и инициалами, необходимо вводить нижнее подчеркивание («_»), поскольку программа переносит инициалы в столбец даты рождения и нарушается и нарушается алгоритм ввода данных в таблицу. Данное нарушение работы программы не создает ошибок работы программы и «вылетов», все ранее внесенные изменения сохраняются. Далее, по такому же принципу редактируется дата рождения, номер зачетной книжки, название группы и 5 экзаменов.
Рис. 12. Переход в режим редактирования
На рисунке 12 также, как на предыдущих рисунках, изображен начальный экран приложения. В данном случае условный пользователь уже несколько раз добавил новую строку таблицы. В запечатленный момент пользователем выбирается второй пункт меню «2. Изменить студента».
Рис. 13. Выбор редактируемой строки списка
На рисунке 13 уже выбран пункт меню «2. Изменить студента». Условный пользователь в соответствии с запросом программы «Выберите порядковый номер студента», вводит 5 порядковый номер студента, то есть, делает выбор в пользу изменения 5 строки таблицы. По завершению ввода необходимо нажать клавишу «Enter»
Рис. 14. Редактирование фамилии
На рисунке 14 пользователь редактирует выбранную на рисунке 13 пятую строку таблицы. В данном примере, пользователь решил ввести в 5 строке фамилию «Соколов_Г.И.», используя между фамилией и инициалами нижнее подчеркивание, чтобы не происходило сбоев в дальнейшем вводе строк. По завершению ввода необходимо нажать клавишу «enter»
Рис. 15. Ввод даты рождения
На рисунке 15 пользователь вводить дату рождения условно указанного студента Соколова. Приложение допускает правильный ввод даты рождения, с разделение числа месяца от номера месяца и номера месяца от года точками.
Рис. 16. Ввод номера зачетной книжки
После нажатия клавиши «Enter» после введенного на рисунке 15, выводится запрос приложения «Введите новый номер зачетки для», фамилия студента, после которого и вводится номер зачетной книжки студента. В данном случае, на рисунке 16 условный номер зачетной книжки Соколова «176512». Набрав в строке соответствующий номер зачетной книжки вносимого с таблицу студента, необходимо так же нажать клавишу «Enter».
Рис. 17. Ввод группы, в которой учится студент
На рисунке 17 продемонстрирован пример ввода названия, либо номера группы, в которой обучается условный студент. Как показано на данном рисунке, строка группы студента поддерживает как числовые, так и символьные указания наименования группы.
Рис. 18. Заполнение оценок за экзамены
После ввода оценки как на рисунке 18 за последний экзамен, приложение очистит экран вывода и заново его заполнит измененной таблицей. Для ввода каждой новой оценки за условный экзамен «1», «2», ..., «5», также требуется указать оценку и нажат клавишу «Enter», после чего изменения вступят в силу.
Рис. 19. Изменена таблица
На рисунке 19 изображена измененная строка таблицы, которая полностью заполнена и по примеру ее изменения можно продолжать вносить необходимые пользователю правки в таблицу.
Рис. 20. Запуск режима удаления строк таблицы
Чтобы удалить ставшую не нужной строку списка, необходимо в режиме выбора пункта меню, ввести «3», таким образом выбрав пункт «3. Удалить студента» и нажать клавишу «Enter», далее - выбрать строку, от которой пользователю необходимо избавиться.
Рис. 21. Удаление ранее добавленного студента.
На рисунке 21 изображен ввод номера необходимого пункта для удаления строки, выделенной в рамку на этом и следующем рисунке 22. В данном случае, это строка номер 5.
Рис. 22. Удаление завершено
Во время удаления строки, программа удаляет всю строку полностью, после чего счетчик автоматически пересчитывает новый список и выводит его в виде новой нумерованной по строкам таблицы как на рисунке 22.
Рис. 23. Тестовый файл с записанными данными
Для проверки результата работы приложения, либо в случае не запуска программы, необходимо открыть файл «Student.txt», в котором хранится информация о внесенных пользователем изменениях. Данный файл хранится в папке, где находится данное приложение. В данном случае, папка с приложением, и, соответственно, с файлом, расположены в папке «Debug», как на рисунке 23.
Рис. 24. Текстовый файл с данными
На рисунке 24 изображен корректно записанный файл со внесенными пользователем изменениями в таблицу.
Запись данных ведется в текстовый файл «Student.txt», который открыт при помощи приложения «блокнот». Содержимое данного файла изображено на рисунке 24.
Записанные данные читаются программой, обрабатываются и выводятся на экран в виде таблицы, как указано в рисунках 9-20.
4. Изменение содержания данных в файле без открытия программы, на случай, если приложение выдает ошибку в открытии файла.
Сначала необходимо открыть текстовый файл «Student.txt», показанный на рисунке 23, используя стандартное приложение «Блокнот», «Notepade» или другое приложения для чтения текстовых файлов.
Далее, чтобы исправить ошибку в текстовом файле, необходимо найти неправильно заполненные строки. Если строка выглядит не как указано на рисунке 23, то эта строка заполнена неправильно и из-за неё приложение не может открыть файл.
Рис. 25. Неправильно заполненная строка текстового файла
На рисунке 25 выделена некорректно заполненная строка.
В каждой строке должно быть заполнено подряд 9 запятых, между которыми должны быть записаны:
Фамилия, дата рождения, номер зачетной книжки (только целым числом), Название или номер группы, оценка за 1 экзамен, оценка за 2 экзамен, оценка за 3 экзамен, оценка за 4 экзамен, оценка за 5 экзамен, именно в данном порядке. При этом, в конце строки также должна стоять запятая, после запятых НЕ должно стоять пробелов.
Рис. 26. Исправлена ошибка в заполнении файла
На рисунке 26 была исправлена ошибка в первой строке, которая была выделена на рисунке 25. Ошибка заключалась в том, что отсутствовала графа «Фамилия», что привело бы к неправильному чтению файла и нарушению логики приложения.
Однако, если заполненные данные не имеют ценности для пользователя, но при запуске приложения есть ошибка и оно не просто не запускается, гораздо проще просто удалить текстовый файл «Students.txt». Тогда, программа создаст новый пустой файл и пользователь сможет заново его заполнить.
ЗАКЛЮЧЕНИЕ
В результате выполненной курсовой работы было создано приложение «Accounting student`s progress - С++» или «AStudProgress-C++» и комплект документации к нему. Программа реализовывалась в соответствии с техническим заданием.
Приложение выполняет следующие действия:
Ввод, редактирование и удаление информации об основной информации о студентах:
· Фамилия и инициалы
· Дата рождения
· Номер зачетной книжки
· В какой группе обучается
· Результат аттестации
Данное приложение помогает пользователю получать достоверную информацию о студентах внутри небольших групп, а также в удобной форме добавлять, редактировать и удалять данные.
Таким образом, все поставленные задачи были выполнены, цель курсовой работы достигнута.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Айвор Хортон - Visual C++ 2010. Полный курс. - Компьютерное издательство «Диалектика», 2011. -- 1216 с.
2. Медведев В.И. - Особенности объектно-ориентированного программирования на C++/CLI, C# и Java. 2-е издание испр. и доп. - РИЦ «Школа», Казань, 2010 - 444с.
3. Соловьев С. В., Цой Р. И., Гринкруг Л. С.- Технология разработки прикладного программного обеспечения. - Академия Естествознания, 2011
4. Кормен Т., Лейзер Ч. - Алгоритмы. Построение и анализ. - 3-е издание. - Вильямс, 2018.
5. С. Макконелл. - Совершенный код. Мастер-класс / Пер. с англ. -- М.: Издательство «Русская редакция», 2010. -- 896 стр.
6. Visual C++.NET. Классика программирования. - М: Научная книга, Букинист, 2010. -- 768 с.
7. Бьерн Страуструп. - Язык программирования С++. Специальное издание. Пер. с англ. -- М.: Издательство Бином, 2011. -- 1136 стр.
8. Т. А. Павловская. - CC++. Программирование на языке высокого уровня. СПб. Питер, 2003. --461 с
9. Стивен С. Скиена. - Алгоритмы. Руководство по разработке. -- 2-е изд.: Пер. с англ. -- СПб: БХВ-Петербург. 2011. -- 720 с.
ПРИЛОЖЕНИЕ
ЛИСТИНГ ПРОГРАММЫ
Модуль 1.
//main.cpp
#include <iostream>
#include <string.h>
#include <clocale>
#include "Student.h"
#include <fstream>
#include <queue>
#include <windows.h>
using namespace std;
enum NENU //Создаем меню пользователя
{
ADD_STUDENT = 0,
CHANGE_STUDENT = 1,
REMOVE_STUDENT = 2,
SAVE_AND_EXIT = 3,
};
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int numberStudents = 1;
int selectedStudent = 1;
Student* student;
student = Student::importFile(numberStudents);
int numberLink = 4;
while (numberLink != 3)
{
system("cls");
Student::getHat();
for (int i = 1; i < numberStudents; i++)
student[i].getStudent(i);
cout << "1. Добавить студента\n2. Изменить студента\n3. Удалить студента\n4. Сохранить и выйти (default)\n";
cout << "Выберите пункт меню: ";
cin >> numberLink;
numberLink--;
Student* tmp;
int selectedStudent;
switch (numberLink)
{
case ADD_STUDENT:
tmp = Student::addListStudent(student, numberStudents);
student = new Student[numberStudents];
student = tmp;
break;
case CHANGE_STUDENT:
cout << "Введите порядковый номер студента:";
cin >> selectedStudent;
//selectedStudent--;
student[selectedStudent].changeStudent();
break;
case REMOVE_STUDENT:
cout << "Введите порядковый номер студента: ";
cin >> selectedStudent;
student = Student::removeListStudent(student, numberStudents, selectedStudent);
break;
case SAVE_AND_EXIT:
default:
if (Student::exportFile(student, numberStudents))
{
cout << "Работа программы завершена" << endl;
system("pause");
return 1;
}
}
}
}
Модуль 2.
//Student.h
#include <string>
using namespace std;
class Student
{
private:
string fullName;
string dateBrith;
int numberMarkers;
string group;
int exam[5];
public:
Student();
Student(string fullName, string dateBrith, int numberMarkers, string group,
const int assessment1, int assessment2, int assessment3, int assessment4, int assessment5);
Student(Student & Student);
~Student();
static void getHat();
void getStudent(int number);
void addStudent();
void changeStudent();
void changeStudent(string fullName, string dateBrith, int numberMarkers, string group,
const int assessment1, int assessment2, int assessment3, int assessment4, int assessment5);
void createArbitraryStudent();
static Student* importFile(int& numberStudents);
static bool exportFile(Student* student, int& numberStudents);
static Student* addListStudent(Student* oldListStudent, int& numberStudents);
static Student* removeListStudent(Student* oldListStudent, int& numberStudents, const int &selectedStudent);
};
Модуль 3.
//Student.cpp
#include <iostream>
#include <fstream>
#include <vector>
#include "Student.h"
using namespace std;
Student::Student()
{
this->fullName = "-";
this->dateBrith = "-";
this->numberMarkers = 0;
this->group = "-";
this->exam[0] = 0;
this->exam[1] = 0;
this->exam[2] = 0;
this->exam[3] = 0;
this->exam[4] = 0;
}
Student::Student(string fullName, string dateBrith, int numberMarkers, string group,const int assessment1, int assessment2, int assessment3, int assessment4, int assessment5)
{
this->fullName = fullName;
this->dateBrith = dateBrith;
this->numberMarkers = numberMarkers;
this->group = group;
this->exam[0] = assessment1;
this->exam[1] = assessment2;
this->exam[2] = assessment3;
this->exam[3] = assessment4;
this->exam[4] = assessment5;
}
Student::Student(Student& student)
{
this->fullName = student.fullName;
this->dateBrith = student.dateBrith;
this->numberMarkers = student.numberMarkers;
this->group = student.group;
this->exam[0] = student.exam[0];
this->exam[1] = student.exam[1];
this->exam[2] = student.exam[2];
this->exam[3] = student.exam[3];
this->exam[4] = student.exam[4];
}
Student::~Student()
{
this->fullName = "-";
this->dateBrith = "-";
this->numberMarkers = 0;
this->group = "-";
this->exam[0] = 0;
this->exam[1] = 0;
this->exam[2] = 0;
this->exam[3] = 0;
this->exam[4] = 0;
}
void Student::changeStudent()
{
cout << "Введите новое ФИО для " << fullName << ": ";
cin >> fullName;
cout << "Введите новую дату рождения для " << fullName << ": ";
cin >> dateBrith;
cout << "Введите новый номер зачетки для " << fullName << ": ";
cin >> numberMarkers;
cout << "Введите новую группу для " << fullName << ": ";
cin >> group;
cout << "Введите новую оценку за 1 экзамен для " << fullName << ": ";
cin >> exam[0];
cout << "Введите новую оценку за 2 экзамен для " << fullName << ": ";
cin >> exam[1];
cout << "Введите новую оценку за 3 экзамен для " << fullName << ": ";
cin >> exam[2];
cout << "Введите новую оценку за 4 экзамен для " << fullName << ": ";
cin >> exam[3];
cout << "Введите новую оценку за 5 экзамен для " << fullName << ": ";
cin >> exam[4];
system("cls");
}
void Student::changeStudent(string fullName, string dateBrith, int numberMarkers, string group,
const int assessment1, int assessment2, int assessment3, int assessment4, int assessment5)
{
this->fullName = fullName;
this->dateBrith = dateBrith;
this->numberMarkers = numberMarkers;
this->group = group;
this->exam[0] = assessment1;
this->exam[1] = assessment2;
this->exam[2] = assessment3;
this->exam[3] = assessment4;
this->exam[4] = assessment5;
}
void Student::getHat()
{
printf(" # %-20s%-15s%-10s%-7s%-10s%-10s%-10s%-10s%-10s\n", "ФИО", "Дата рождения", "№ зачетки", "группа", "экзамен 1", "экзамен 2", "экзамен 3", "экзамен 4", "экзамен 5");
}
void Student::getStudent(int number)
{
printf("%-5i%-20s%-15s%-10i%-7s%-10i%-10i%-10i%-10i%-10i\n", number, fullName.c_str(), dateBrith.c_str(), numberMarkers, group.c_str(), exam[0], exam[1], exam[2], exam[3], exam[4]);
}
void Student::addStudent()
{
cout << "Введите новое ФИО для " << fullName << ": ";
cin >> fullName;
cout << "Введите новую дату рождения для " << fullName << ": ";
cin >> dateBrith;
cout << "Введите новый номер зачетки для " << fullName << ": ";
cin >> numberMarkers;
cout << "Введите новую группу для " << fullName << ": ";
cin >> group;
cout << "Введите новую оценку за 1 экзамен для " << fullName << ": ";
cin >> exam[0];
cout << "Введите новую оценку за 2 экзамен для " << fullName << ": ";
cin >> exam[1];
cout << "Введите новую оценку за 3 экзамен для " << fullName << ": ";
cin >> exam[2];
cout << "Введите новую оценку за 4 экзамен для " << fullName << ": ";
cin >> exam[3];
cout << "Введите новую оценку за 5 экзамен для " << fullName << ": ";
cin >> exam[4];
system("cls");
}
void Student::createArbitraryStudent()
{
fullName = "random";
dateBrith = 2 + rand() % 5;
numberMarkers = 0 + rand() % 1000;
group = 0 + rand() % 5;
exam[0] = 0 + rand() % 5;
exam[1] = 0 + rand() % 5;
exam[2] = 0 + rand() % 5;
exam[3] = 0 + rand() % 5;
exam[4] = 0 + rand() % 5;
}
Student* Student::importFile(int& numberStudents)
{
ifstream file("Students.txt");
char fullName[80];
string dateBrith;
string str;
int numberMarkers;
string group;
int exam[5];
while (getline(file, str))
numberStudents++;
Student* student = new Student[numberStudents];
file.clear();
file.seekg(0);
int currentLine = 0;
while (getline(file, str))
{
vector<string> arr;
string delim(",");
size_t prev = 0;
size_t next;
size_t delta = delim.length();
while ((next = str.find(delim, prev)) != string::npos)
{
string tmp = str.substr(prev, next - prev);
arr.push_back(str.substr(prev, next - prev));
prev = next + delta;
}
for (int i = 0; i < numberStudents; i++)
student[currentLine].changeStudent(arr[0], arr[1], stoi(arr[2]), arr[3], stoi(arr[4]),
stoi(arr[5]), stoi(arr[6]), stoi(arr[7]), stoi(arr[8]));
currentLine++;
}
file.close();
return student;
}
bool Student::exportFile(Student* student, int &numberStudents)
{
ofstream file;
file.open("Students.txt");
file.close();
file.open("Students.txt", ios::in);
if (file) {
string tmp;
for (int i = 0; i < numberStudents; i++)
{
tmp += student[i].fullName + ",";
tmp += student[i].dateBrith + ",";
tmp += to_string(student[i].numberMarkers) + ",";
tmp += student[i].group + ",";
tmp += to_string(student[i].exam[0]) + ",";
tmp += to_string(student[i].exam[1]) + ",";
tmp += to_string(student[i].exam[2]) + ",";
tmp += to_string(student[i].exam[3]) + ",";
tmp += to_string(student[i].exam[4]) + ", \n";
}
file << tmp;
file.close();
return 1;
}
return 0;
}
Student* Student::addListStudent(Student* oldListStudent, int& numberStudents)
{
numberStudents++;
Student* newListStudents = new Student[numberStudents];
for (int i = 0; i < numberStudents - 1; i++)
newListStudents[i] = oldListStudent[i];
Student newStudent;
newListStudents[numberStudents - 1] = newStudent;
return newListStudents;
}
Student* Student::removeListStudent(Student* oldListStudent, int& numberStudents, const int &selectedStudent)
{
Student* newListStudents = new Student[numberStudents - 1];
int count = 0;
for (int i = 0; i < numberStudents; i++)
if (i != selectedStudent)
newListStudents[count++] = oldListStudent[i];
numberStudents--;
return newListStudents;
}
Размещено на Allbest.ru
...Подобные документы
- Разработка системы учета успеваемости студентов на основе рейтинговой системы - подсистема "Кафедра"
Проектировка и создание системы, направленной на упразднение трудной и рутинной работы преподавателей, за счет централизованного хранения данных об успеваемости студентов и удобного доступа к ним. Средства реализации и тестирование программного средства.
курсовая работа [1,3 M], добавлен 28.08.2012 Разработка программного модуля "Учет успеваемости студентов". Характеристика используемой ПЭВМ, ОС и языка программирования. Технологический процесс машинной реализации задачи. Алгоритм и текст программы меню. Составление инструкции для пользователей.
курсовая работа [1,6 M], добавлен 14.01.2013Комбинированный тип данных для хранения входных данных о студентах и информация, содержащаяся в полях. Пример структуры входных и выходных данных. Алгоритм работы и программный код программы по успеваемости студентов, описание используемых функций.
курсовая работа [135,9 K], добавлен 28.12.2012Проблема повышения оперативности учета и контроля посещаемости и успеваемости студентов ЮТИ ТПУ. Разработка информационной системы, требования к ней. Информационное обеспечение задачи, автоматизация предметной области. Описание интерфейса системы.
дипломная работа [2,6 M], добавлен 17.07.2012Формирование требований к системе учета успеваемости студентов на основе рейтинговой системы. Концептуальное и логическое проектирование структуры информационного обеспечения. Реализация информационного обеспечения и тестирование программного средства.
курсовая работа [3,1 M], добавлен 28.08.2012Система учета успеваемости студентов Байкальского государственного университета экономики и права. Действующая Информационная система, организация и требования к подсистеме учета успеваемости БГУЭП. Конструирование подсистемы, построение модели функций.
дипломная работа [2,2 M], добавлен 20.11.2010Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.
курсовая работа [2,7 M], добавлен 21.02.2011База данных по всем занимающимся студентам, электронный журнал посещаемости и успеваемости, средства подсчета статистики и подготовки документов. Ввод из журнала оценок и посещаемости студентов, составление ведомостей. Формирование табеля успеваемости.
курсовая работа [1,7 M], добавлен 11.05.2012Возможности создания баз данных средствами программного продукта SQL. Изучение предметной области и разработка проекта базы данных по учету студентов "Журнал классного руководителя". Задачи реализации программного средства, его тестирование и отладка.
курсовая работа [3,7 M], добавлен 07.12.2012Требования к пользовательским интерфейсам, к аппаратным, программным и коммуникационным интерфейсам, к пользователям продукта. Проектирование структуры приложения для самоконтроля успеваемости студентов. Программные средства эксплуатации приложения.
курсовая работа [561,9 K], добавлен 28.08.2019Анализ предметной области и постановка задачи. Технологии построения распределенных приложений. Сервер Zope, php. dыбор технологии. Постановка задачи и проект программы. Выбор технологии проектирования. Разработка моделей, спецификации и кодирование.
курсовая работа [1,7 M], добавлен 05.08.2005Методика разработки объектно-ориентированной модели информационной подсистемы необходимой для учета успеваемости студентов факультета, которая спроектирована с помощью программного продукта Rational Rose 2003 и унифицированного языка моделирования UML.
курсовая работа [183,9 K], добавлен 25.06.2011Разработка программного обеспечения для работы с информацией и ее обработкой на языке программирования Delphi. Описание алгоритмов процедуры работы со стеком - добавление, удаление элементов, редактирование записи. Инструкция по использованию программы.
курсовая работа [2,9 M], добавлен 06.02.2013Выбор типа программного обеспечения, к которому относится оцениваемый программный продукт. Выбор весовых коэффициентов и базовых значений. Восстановление программы после системного сбоя. Схема базы данных "Учет посещаемости студентов" в MS Access.
контрольная работа [52,8 K], добавлен 22.12.2011Характеристика высшего учебного заведения "МФПА", структура подразделений учебной части. Анализ диаграммы дерева узлов, стадии проектирования информационной системы учета успеваемости студентов. Основные особенности построения модели "Как должно быть".
курсовая работа [3,1 M], добавлен 12.04.2012Разработка объектно-ориентированной модели подсистемы "StudentCount" для деканата ВУЗа (автоматизация учета студентов и их успеваемости). Для решения данной задачи использовалось CASE–средство Rational Rose, сгенерирован программный код для языка С++.
курсовая работа [2,4 M], добавлен 28.06.2011Определение необходимых модулей программы, структуры файла базы данных. Описание разработки программы, отладка и тестирование. Разработка приложения Organizer.exe, меню и руководство пользователя. Алгоритм обработки событий главного меню (расписания).
курсовая работа [901,8 K], добавлен 11.02.2014Разработка информационной системы анализа успеваемости студентов. Особенности режима просмотра объектов с помощью редактора Visual Basic for Application. Виды диалоговых окон и основных элементов управления. Формирование диаграммы успеваемости группы.
курсовая работа [1,3 M], добавлен 28.11.2008Написание программы для работы с клиентами средствами языка Delphi, которая предусматривает ввод, редактирование и удаление информации. Разработка алгоритма решения задачи, описание переменных, вспомогательных процедур, входных и выходных данных.
курсовая работа [355,7 K], добавлен 21.09.2010Проектирование модуля программы 1С: "Поступление и выбытие удобрений", позволяющего вносить данные о клиентах, складах, контролировать поставки удобрений. Анализ предметной области и построение функциональной модели программы, ее отладка и тестирование.
курсовая работа [1,6 M], добавлен 24.02.2015