Разработка систем классов для обеспечения работы школы на языке программирования Visual C++
Требования к разрабатываемой системе. Описание объектно-ориентированного подхода. Описание объектов систем школы, учет классов и учеников, их свойств и методов. Результаты тестирования программного продукта и генерация отчетов по успеваемости учеников.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 20.05.2020 |
Размер файла | 558,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Разработка систем классов для обеспечения работы школы на языке программирования Visual C++
Оглавление
Введение
1. Разработка систем классов для обеспечения работы школы
1.1 Постановка задачи: режим учета классов и учеников в них, регистрация нового ученика, учета посещаемости занятий и оценок учащихся
1.2 Требования к разрабатываемой системе
1.3 Описание объектно-ориентированного подхода
1.4 Описание школы
2. Практическая часть
2.1 Описание объектов систем школы, учет классов и учеников, их свойств и методов
2.2 Результаты тестирования программного продукта и генерация отчетов по успеваемости учеников
2.3Тестирование системы
Заключение
Список использованных источников
Приложение
Введение
система тестирование программный продукт
Visual C++ представляет собой объектно-ориентированный низкоуровневый язык программирования, отвечающий стандартам ANSI и Международной организации стандартов (International Standards Organization - ISO). Объектная ориентированность C++ обозначает, что язык поддерживает стиль программирования, упрощающий кодирование крупномасштабных программ и обеспечивающий их расширяемость. Низкоуровневый язык, C++ может генерировать весьма эффективные высокоскоростные програм. Сертификация ANSI и ISO обеспечила переносимость C++: написанные на нем програм совмести с большинством современных сред программирования. Также C++ является следующим поколением языка программирования C - результатом добавления новых веяний академической компьютерной сли к старому доброму C. На C++ можно делать все то же, что и на C, и таким же образом. Но это нечто большее, чем просто C, существуют дополнительные возможности C++ весьма значи и требуют некоторых разшлений, но и привычки, однако результат того заслуживает.
Объектно-ориентированное программирование (ООП) - подход к программированию, при котором основными концепциями являются понятия объектов и классов.
Целью является разработка систе автоматизации учета учащихся.
Актуальность выбранной те обусловлена необходимостью повышения эффективности работы школы, посредством уменьшения времени, необходимого для заполнения всей учетной и учебной документации, используемой гимназией в процессе ее работы.
Система автоматизации предназначена для ведения учета контингента учащихся гимназии и получения отчетных документов, необходих для работы администрации школы.
1. Разработка систе классов для обеспечения работы школы
1.1 Постановка задачи: режим учета классов и учеников в них, регистрация нового ученика, учета посещаемости занятий и оценок учащихся
В современных условиях для повышения эффективности управления необходимо улучшение работы с документами. Организация работы с документами оказывает влияние на качество работы, организацию труда работников. Улучшение и повышение уровня организации и эффективности труда во многом зависит от того, насколько рационально поставлен в учреждении поток документооборота.
Вопросы управления потоками документов актуальны для любого учреждения образования. Особо внимание стоит обратить, когда привычные бумажные документы заменяются электронными.
Основу информационной среды любого учреждения составляют документы, созданные как «традиционным» рукописным, машинописным, типографическим способом, так и полученные с использованием компьютерных технологий. В правильной организации документооборота заложена основа сохранности и эффективного использования документной информации в будущем.
Главное назначение автоматизированной систе школы -это создание электронного дубликата дневника ученика для контроля его успеваемости со стороны родителей. Основной проблемой для внедрения данной систе является «человеческий фактор». Перенос оценок из журнала выполняется учителем. Журнал успеваемости класса ведется в «бумажной» форма, то своевременный и корректный перенос данных в систему не гарантирован.
В настоящее время наличие успешно действующей систе автоматизации документооборота говорит о благополучии учреждения. Автоматизированная система предоставляет возможность производить оперативный и эффективный обмен информацией между всеми участками учебно-воспитательного процесса, позволяет сократить время, требуемое на подготовку конкретных задач, исключить возможных появлений ошибок подготовки отчётной документации.
Внедрение автоматизированной систе обеспечит удобство в работе, рациональную организацию производства и снижение психологических нагрузок. Также снизятся физиологические нагрузки, так как с внедрением соответствующего программного обеспечения время, затраченное на эту же работу, существенно уменьшится. Это основательно повлияет на работоспособность работника, так как приведёт к уменьшению количества обрабатываемой информации, а также появится дополнительное время для анализа этой информации.
Внедрение автоматизированной систе учреждения образования, является сложным процессом. Тем не менее, некоторые пробле, возникающие при внедрении систе, формализованы и имеют эффективные методологии решения, достаточно хорошо изучены. Заблаговременное изучение этих проблем и подготовка к ним существенно затрудняют процесс внедрения и повышают эффективность дальнейшего использования систе.
Автоматизирование систе для учреждений среднего образования представлены и разработками кампании ИНИС-СОФН. Все продукту кампании - коммерческие разработки, основаны на закрытых технологиях, требуют внедрения и сопровождения.
Основой разрабатываемой систе учета являются открытые, некоммерческие технологии и программные средства. Система предоставит возможность работы по локальной (глобальной сети), и отвечает требованиям безопасности при доступе к данным. В системе используется простой, интуитивно понятный интерфейс.
Система автоматизации учета учащихся гимназии предназначена для хранения и анализа первичных данных учащихся и учителей.
Первичными сведениями являются: информация об ученике и его родителях, успеваемости (годовые оценки по предметам), занятости во внеклассном обучении (секции, кружки), и достижения ученика (участие в олимпиадах, соревнованиях, выставках).
Для учителей собираются персональные данные, сведения по учебной нагрузке (предметы, классы), категория и достижения учеников (олимпиады, соревнования).
Система даёт возможность доступа нескольких пользователей по локальной (глобальной) сети с использованием обычного браузера.
1.2 Требования к разрабатываемой системе
Важнейшими требованиями систе является открытость платфор, расширяемость и удобство использования.
Открытость платфор подразумевает использование свободного программного обеспечения (с открытым исходным кодом) и открытых технологий.
Система предназначена для ввода, хранения и вывода информации об учащихся. Нужно предусмотреть возможность дополнения базы данных и простой реализации этого расширения в программной части комплекса.
Автоматизированная система учета учащихся должна иметь соответствующий, интуитивно понятный интерфейс пользователя.
Требование к системе:
авторизация пользователя по паролю и логину;
функция добавления данных в таблицы;
функция редактирования данных в таблице;
поиск по категориям;
сортировка данных по полям в режиме поиска;
подготовка отчета по результатам поиска;
функция печати отчета.
Разрабатываемая система должна отвечать требованиям безопасности при доступе к данным:
пароли доступа хранятся в базе данных в зашифрованном виде;
после выхода из систе удаляются все данные пользователя из браузера.
1.3 Описание объектно-ориентированного подхода
Разработка интерфейса программного продукта
Пользовательский интерфейс - это система средств для взаимодействия пользователя с компьютером, основанная на представлении всех доступных пользователю системных объектов и функций в виде графических компонентов экрана. При этом, в отличие от интерфейса командной строки, пользователь имеет произвольный доступ (с помощью клавиатуры или указательного устройства ввода) ко всем видим экранным объектам, а на экране реализуется модель мира в соответствии с некоторой метафорой и осуществляется прямое манипулирование.
Постановка задачи: режим учета классов и учеников в них, регистрация нового ученика, учета посещаемости занятий и оценок учащихся
1. Описать класс с именем COLLABORATE (сотрудник), содержащий следующие члены-данные открытого типа (можно закрытого типа - более сложный вариант):
? фамилия сотрудника;
? год рождения;
? класс
2. Описать класс с именем FIRM (школа), содержащий следующие члены-данные закрытого типа:
? количество сотрудников;
? указатель на массив сотрудников.
3. Класс FIRM должен содержать следующие члены-функции:
? конструктор без параметров;
? конструктор с параметрами;
? конструктор копирования;
? деструктор, выводящий сообщение о своей работе;
? функцию ввода данных в объект класса с клавиатуры (можно из файла);
? функцию вывода данных из объекта класса на дисплей;
? функцию добавления сотрудника в массив;
? функцию удаления сотрудника из массива;
? функцию подсчета количество женщин пенсионного возраста (возраст ? 55 лет);
? функцию подсчета количество мужчин пенсионного возраста (возраст ? 60 лет);
? функцию, формирующую массив сотрудников в зависимости от пола;
? другие функции, если они необходи.
1.4 Описание школы
Возглавляет учреждение образования директор. Вопросами управления учебным процессом занимаются пять заместителей директора (по учебной работе - 3, один из них курирует начальную школу; по воспитательной работе - 1; по методической работе - 1). Заместитель директора по АХЧ занимается вопросами по хозяйственной части. Учебные занятия проводят 85 педагогов. В учреждении также работают педагог-организатор, библиотекарь, воспитатели, технический персонал, социально-педагогическая служба, в которую входят социальный педагог и педагог-психолог. Иерархия управления учреждением представлена на рисунке 1.
Рисунок 1 Иерархия управления гимназией
В гимназии 29 учебных кабинета, комплексная мастерская, кабинет ритмики и танца, библиотека, конференц-зал, актовый зал, столовая с двумя обеденными залами, спортивный зал с двумя спортивными игровыми площадками, бассейн с двумя чашами, медпункт.
В учреждении образования имеется два компьютерных класса. Рабочие места в кабинетах информатики оснащены современными техническими средствами, IBM совместими персональными компьютерами с соответствующими периферийными устройствами и оборудованием. В одном кабинете информатики имеется интерактивная доска Smart Board и мультимедийный проектор.
2. Практическая часть
2.1 Описание объектов систе школы, учет классов и учеников, их свойств и методов
Разработка программного кода систе
Microsoft Visual C++ Express Edition имеет встроенный редактор исходного программного кода с полной поддержкой технологии IntelliSense, а так же возможностью простого рефакторинга (комплексной замены названий сущностей языка в определенном проекте) кода. Встроенный в Microsoft Visual C++ Express Edition отладчик предусматривает работу и как отладчик уровня исходного кода, и как отладчик машинного Assembler уровня кода. Другие встраиваее в Visual C++ стандартные инструменты содержат простой и удобный редактор форм для упрощения процесса создания графического интерфейса (оболочки) приложения, web-редактор, а так же дизайнер классов и дизайнер схе БД. Так же Visual Studio разрешает пользователю создавать и подключать разные дополнения (именуее плагинами) для расширения функционала почти на любом уровне, включая добавление поддержки различных систем контроля версий исходного программного кода.
Все программные продукты Microsoft входящие в состав пакета Visual Studio и распространяющиеся отдельно в версиях Express Edition являются бесплатными, использовать их разрешается только в ознакомительных целях. В этих целях программа будет работать 30 дней, в течении которых или после чего необходимо зарегистрироваться и получить лицензионный ключ для неограниченного по времени использования програм Microsoft Visual C++ Express Edition.
Классы С++
Классы в программировании состоят из свойств и методов. Свойства -- это любые данные, которыми можно характеризовать объект класса. В нашем случае, объектом класса является студент, а его свойствами -- имя, фамилия, оценки и средний балл.
У каждого студента есть имя -- name и фамилия last_name. Также, у него есть промежуточные оценки за весь семестр. Эти оценки будем записывать в целочисленный массив из пяти элементов. После того, как все пять оценок будут проставлены, определим средний балл успеваемости студента за весь семестр -- свойство average_ball.
Методы -- это функции, которые могут выполнять какие-либо действия над данными (свойствами) класса. Добавим в наш класс функцию calculate_average_ball(), которая будет определять средний балл успеваемости ученика.
Методы класса -- это его функции.
Свойства класса -- его переменные.
class Students {
public:
// Функция, считающая средний балл
void calculate_average_ball()
{
int sum = 0; // Сумма всех оценок
for (int i = 0; i < 5; ++i) {
sum += scores[i];
}
// считаем среднее арифметическое
average_ball = sum / 5.0;
}
// Имя студента
std::string name;
// Фамилия
std::string last_name;
// Пять промежуточных оценок студента
int scores[5];
private:
// Итоговая оценка за семестр
float average_ball;
};
Функция calculate_average_ball() просто делит сумму всех промежуточных оценок на их количество.
Модификаторы доступа public и private
Все свойства и методы классов имеют права доступа. По умолчанию, все содержимое класса является доступным для чтения и записи только для него самого. Для того, чтобы разрешить доступ к данным класса извне, используют модификатор доступа public. Все функции и переменные, которые находятся после модификатора public, становятся доступными из всех частей програм.
Закрытые данные класса размещаются после модификатора доступа private. Если отсутствует модификатор public, то все функции и переменные, по умолчанию являются закрытыми (как в первом примере).
Обычно, приватными делают все свойства класса, а публичными -- его методы. Все действия с закрытыми свойствами класса реализуются через его методы. Рассмотрим следующий код.
class Students {
public:
// Установка среднего балла
void set_average_ball(float ball)
{
average_ball = ball;
}
// Получение среднего балла
float get_average_ball()
{
return average_ball;
}
std::string name;
std::string last_name;
int scores[5];
private:
float average_ball;
};
Работать с этими данными можно только посредством методов этого класса. В примере выше, используем функцию get_average_ball() для получения средней оценки студента, и set_average_ball() для выставления этой оценки.
Функция set_average_ball() принимает средний балл в качестве параметра и присваивает его значение закрытой переменной average_ball. Функция get_average_ball() просто возвращает значение этой переменной.
Программа учета успеваемости студентов
Создадим программу, которая будет заниматься учетом успеваемости студентов в группе. Создайте заголовочный файл students.h, в котором будет находиться класс Students.
/* students.h */
#include <string>
class Students {
public:
// Установка имени студента
void set_name(std::string student_name)
{
name = student_name;
}
// Получение имени студента
std::string get_name()
{
return name;
}
// Установка фамилии студента
void set_last_name(std::string student_last_name)
{
last_name = student_last_name;
}
// Получение фамилии студента
std::string get_last_name()
{
return last_name;
}
// Установка промежуточных оценок
void set_scores(int student_scores[])
{
for (int i = 0; i < 5; ++i) {
scores[i] = student_scores[i];
}
}
// Установка среднего балла
void set_average_ball(float ball)
{
average_ball = ball;
}
// Получение среднего балла
float get_average_ball()
{
return average_ball;
}
private:
// Промежуточные оценки
int scores[5];
// Средний балл
float average_ball;
// Имя
std::string name;
// Фамилия
std::string last_name;
};
добавили в наш класс новые методы, а также сделали приватными все его свойства. Функция set_name() сохраняет имя студента в переменной name, а get_name() возвращает значение этой переменной. Принцип работы функций set_last_name() и get_last_name() аналогичен.
Функция set_scores() принимает массив с промежуточными оценками и сохраняет их в приватную переменную int scores[5].
Теперь создайте файл main.cpp со следующим содержим.
/* main.cpp */
#include <iostream>
#include "students.h"
int main()
{
// Создание объекта класса Student
Students student;
std::string name;
std::string last_name;
// Ввод имени с клавиатуры
std::cout << "Name: ";
getline(std::cin, name);
// Ввод фамилии
std::cout << "Last name: ";
getline(std::cin, last_name);
// Сохранение имени и фамилии в объект класса Students
student.set_name(name);
student.set_last_name(last_name);
// Оценки
int scores[5];
// Сумма всех оценок
int sum = 0;
// Ввод промежуточных оценок
for (int i = 0; i < 5; ++i) {
std::cout << "Score " << i+1 << ": ";
std::cin >> scores[i];
// суммирование
sum += scores[i];
}
// Сохраняем промежуточные оценки в объект класса Student
student.set_scores(scores);
// Считаем средний балл
float average_ball = sum / 5.0;
// Сохраняем средний балл в объект класса Students
student.set_average_ball(average_ball);
// Выводим данные по студенту
std::cout << "Average ball for " << student.get_name() << " "
<< student.get_last_name() << " is "
<< student.get_average_ball() << std::endl;
return 0;
}
В самом начале програм создается объект класса Students. Дело в том, что сам класс является только описанием его объекта. Класс Students является описанием любого из студентов, у которого есть имя, фамилия и возможность получения оценок.
Объект класса Students характеризует конкретного студента. Если захотим выставить оценки всем ученикам в группе, то будем создавать новый объект для каждого из них. Использование классов очень хорошо подходит для описания объектов реального мира.
После создания объекта student, вводим с клавиатуры фамилию, имя и промежуточные оценки для конкретного ученика. Пускай это будет Вася Пупкин, у которого есть пять оценок за семестр -- две тройки, две четверки и одна пятерка.
Введенные данные передаем set-функциям, которые присваивают их закрытым переменным класса. После того, как были введены промежуточные оценки, высчитываем средний балл на основе этих оценок, а затем сохраняем это значение в закрытом свойстве average_ball, с помощью функции set_average_ball().
Скомпилируйте и запустите программу.
Отделение данных от логики
Вынесем реализацию всех методов класса в отдельный файл students.cpp.
/* students.cpp */
#include <string>
#include "students.h"
// Установка имени студента
void Students::set_name(std::string student_name)
{
Students::name = student_name;
}
// Получение имени студента
std::string Students::get_name()
{
return Students::name;
}
// Установка фамилии студента
void Students::set_last_name(std::string student_last_name)
{
Students::last_name = student_last_name;
}
// Получение фамилии студента
std::string Students::get_last_name()
{
return Students::last_name;
}
// Установка промежуточных оценок
void Students::set_scores(int scores[])
{
for (int i = 0; i < 5; ++i) {
Students::scores[i] = scores[i];
}
}
// Установка среднего балла
void Students::set_average_ball(float ball)
{
Students::average_ball = ball;
}
// Получение среднего балла
float Students::get_average_ball()
{
return Students::average_ball;
}
А в заголовочном файле students.h оставим только прототипы этих методов.
/* students.h */
#pragma once /* Защита от двойного подключения заголовочного файла */
#include <string>
class Students {
public:
// Установка имени студента
void set_name(std::string);
// Получение имени студента
std::string get_name();
// Установка фамилии студента
void set_last_name(std::string);
// Получение фамилии студента
std::string get_last_name();
// Установка промежуточных оценок
void set_scores(int []);
// Установка среднего балла
void set_average_ball(float);
// Получение среднего балла
float get_average_ball();
private:
// Промежуточные оценки
int scores[5];
// Средний балл
float average_ball;
// Имя
std::string name;
// Фамилия
std::string last_name;
};
Такой подход называется абстракцией данных -- одного из фундаментальных принципов объектно-ориентированного программирования. К примеру, если кто-то другой захочет использовать наш класс в своем коде, ему не обязательно знать, как именно высчитывается средний балл. Он просто будет использовать функцию calculate_average_ball() из второго примера, не вникая в алгоритм ее работы.
Над крупными проектами обычно работает несколько программистов. Каждый из них занимается написанием определенной части продукта. В таких масштабах кода, одному человеку практически нереально запомнить, как работает каждая из внутренних функций проекта. В нашей программе, используем оператор потокового вывода cout, не задуваясь о том, как он реализован на низком уровне. Кроме того, отделение данных от логики является хорошим тоном программирования.
В начале обучения говорили о пространствах имен (namespaces). Каждый класс в C++ использует свое пространство имен. Это сделано для того, чтобы избежать конфликтов при именовании переменных и функций. В файле students.cpp используем оператор принадлежности:: перед именем каждой функции. Это делается для того, чтобы указать компилятору, что эти функции принадлежат классу Students.
Создание объекта через указатель
При создании объекта, лучше не копировать память для него, а выделять ее в в куче с помощью указателя. И освобождать ее после того, как закончили работу с объектом. Реализуем это в нашей программе, немного изменив содержимое файла main.cpp.
/* main.cpp */
#include <iostream>
#include "students.h"
int main()
{
// Выделение памяти для объекта Students
Students *student = new Students;
std::string name;
std::string last_name;
// Ввод имени с клавиатуры
std::cout << "Name: ";
getline(std::cin, name);
// Ввод фамилии
std::cout << "Last name: ";
getline(std::cin, last_name);
// Сохранение имени и фамилии в объект класса Students
student->set_name(name);
student->set_last_name(last_name);
// Оценки
int scores[5];
// Сумма всех оценок
int sum = 0;
// Ввод промежуточных оценок
for (int i = 0; i < 5; ++i) {
std::cout << "Score " << i+1 << ": ";
std::cin >> scores[i];
// суммирование
sum += scores[i];
}
// Сохраняем промежуточные оценки в объект класса Student
student->set_scores(scores);
// Считаем средний балл
float average_ball = sum / 5.0;
// Сохраняем средний балл в объект класса Students
student->set_average_ball(average_ball);
// Выводим данные по студенту
std::cout << "Average ball for " << student->get_name() << " "
<< student->get_last_name() << " is "
<< student->get_average_ball() << std::endl;
// Удаление объекта student из памяти
delete student;
return 0;
}
При создании статического объекта, для доступа к его методам и свойствам, используют операция прямого обращения -- «.» (символ точки). Если же память для объекта выделяется посредством указателя, то для доступа к его методам и свойствам используется оператор косвенного обращения -- «->».
Конструктор и деструктор класса
Конструктор класса -- это специальная функция, которая автоматически вызывается сразу после создания объекта этого класса. Он не имеет типа возвращаемого значения и должен называться также, как класс, в котором он находится. По умолчанию, заполним двойками массив с промежуточными оценками студента.
class Students {
public:
// Конструктор класса Students
Students(int default_score)
{
for (int i = 0; i < 5; ++i) {
scores[i] = default_score;
}
}
private:
int scores[5];
};
int main()
{
// Передаем двойку в конструктор
Students *student = new Students(2);
return 0;
}
Деструктор класса вызывается при уничтожении объекта. Имя деструктора аналогично имени конструктора, только в начале ставится знак тильды ~. Деструктор не имеет входных параметров.
#include <iostream>
class Students {
public:
// Деструктор
~Students()
{
std::cout << "Memory has been cleaned. Good bye." << std::endl;
}
};
int main()
{
Students *student = new Students;
// Уничтожение объекта
delete student;
return 0;
}
2.2 Результаты тестирования программного продукта и генерация отчетов по успеваемости учеников
Модульное тестирование - тестируется отдельный модуль, в отрыве от остальной систе. Сай распространенный случай применения - тестирования модуля самим разработчиком, проверка того, что отдельные модули, классы, методы делают действительно то, что от них ожидается. Различные среды разработки широко поддерживают средства модульного тестирования - например, популярная свободно распространяемая библиотека для Visual Studio NUnit, JUnit для Java и т.д. Созданные разработчиком модульные тесты часто включаются в пакет регрессионных тестов и таким образом, могут запускаться многократно.
Разработка пользовательского интерфейса
Для начала пользователю предлагается ввести логин и пароль для входа в систему, как показано на рисунке 2.
Рисунок 2 Меню входа в систему
Если логин и/или пароль введены неверно, то выдается сообщение об ошибке и предложение повторить ввод ещё раз (рисунок 3).
Рисунок 3 Ошибка ввода логина и/или пароля
В зависимости от логина выбирается версия систе. Существует 2 варианта: для администратора (логин: admin) и пользователей. Отличие заключается в наличии меню «Администрирование» для администратора (рисунок 4, 5).
Рисунок 4 Интерфейс модуля администрирования
Рисунок 5 Вариант систе для обычного пользователя
В меню «Редактирование» данные представлены по категориям (рисунок 6):
Ученики;
Учителя;
Справочники (Классы, Предметы, Клубы, Уровни, Результаты).
Категории «Ученики и «Учителя» имеют свои подкатегории, «Справочники» заполняются по мере необходимости.
Рисунок 6 Общий вид меню редактирования
Для примера работы меню «Редактирование» выберем справочник «Предметы». В интерфейсе отображается список предметов и действий, которые можно выполнить (добавить, удалить предмет, редактировать), как показано на рисунке 7.
Рисунок 7 Меню редактирование словарь предмета
Процесс добавления записи происходит в несколько этапов. Для начала выбираем категорию (например, «Ученики»). Среди учеников выбираем запись, которую планируем редактировать. Все записи в колонках отсортированы по алфавиту слева сверху вниз и слева направо. Отмечаем конкретного ученика при помощи метки в левой колонке (checkbox), как показано на рисунке 7. Выбираем подкатегорию для ученика (в нашем случае - «Секции»).
Рисунок 8 Редактирование конкретного ученика
На вкладке редактирования «Секции» для конкретного ученика видим записи связанные с учеником и его участием в секциях и кружках (по годам). можем добавить, удалить или редактировать записи, отметив данные о секции в таблице (рисунок 9).
Рисунок 9 Редактирование данных по секциям, в которых занят ученик
Для примера добавим новую секцию для ученика (рисунок 10). Нам предлагается выбрать учебный год, когда ученик занимался в секции и название секции из списка. Доступно сохранение и отмена операции добавления записи.
Рисунок 10 Добавление новой информации по занятиям в секции
В меню поиск представлены следующие категории:
Ученики
Учителя
Секции
Олимпиады
Соревнования
При переходе в категорию нам доступна форма поиска. Результаты поиска выдаются в виде таблицы, отсортированной по колонкам сверху вниз и слева направо.
Результаты поиска можно распечатать или перейти к новому поиску.
Общий вид фор поиска по категории «Учитель» представлен на рисунке 11.
Рисунок 11 Форма поиска по категории «Учитель»
Выход из систе осуществляется по нажатию кнопки меню «Выход». Система запрашивает подтверждение: Выйти из систе?. Если получен положительный ответ (Да), то осуществляется выход из систе и переход на страницу входа. Если получен отрицательный ответ (Нет), то система возвращается в главное окно приложение (с активной кнопкой «Выход»), как изображено на рисунке 12.
Рисунок 12 Диалог подтверждения выхода из систе
Принцип работы приложения
Так как система автоматизации учета является типовой задачей, то проектирование систе велось в фрейворке CodeIngres с применением концепции MVC, что позволило минимизировать время разработки и упростило её реализацию.
Авторизация.
На сервере проверяется наличие переменных сессии если они есть или есть cookie для данного пользователя, то авторизация считается успешной. Иначе пользователя перенаправляют на страницу логина, где он вводит пароль, имя пользователя и после подтверждения на сервер отправляется запрос подтверждения данных, если данные имеются в базе пользователю отсылаются cookie об успешной авторизации и перенаправляют на главную страницу систе управления.
2.3 Тестирование систе
Тестирование систе необходимо для проверки ошибок в коде и взаимодействии модулей систе между собой. На этапе проектирования была выбрана концепция MVC (Model-View-Controller), при которой модификация одного из компонентов оказывает минимальное влияние на другие. Это позволило упростить и сократить этап тестирования кода.
Функциональное тестирование проводилось путем проверки корректности заполнения базы данных и отклика приложения на действия пользователя.
Система была протестирована по следующим пунктам:
1. Вход в систему:
корректный ввод логина и пароля;
ситуация ввода логина и/или пароля c ошибкой.
2. Раздел администрирования:
переход в раздел администрирования из разных частей приложения (через главное меню);
корректность отображения данных о пользователях систе (в режиме admin);
добавление нового пользователя, назначение логина и пароля, проверка входа в систему с этими данными;
удаление нового пользователя, отказа в доступе при входе систему удаленного пользователя;
смена пароля у пользователя (в режиме администратора), если пользователь забыл свой пароль. Проверка корректности смены пароля при входе в систему.
3. Раздел редактирования базы данных:
доступность функций раздела редактирования для разных пользователей (admin, guest);
связь полей форм интерфейса с данными в базе;
добавление данных в базу, в том числе и связанных данных;
удаление данных из базы, в том числе удаление всех связанных данных (например, удаление сведений об ученике).
проверена корректность данных после редактирования.
4. Раздел поиска:
доступность функций раздела поиска для разных пользователей (admin, guest);
корректность результатов поиска по полям с использованием фильтров;
тестирование функций печати по результатам поиска.
5. Выход из систе:
проверена корректность работы фор (диалога) на подтверждение выхода из систе: Выйти из систе? (Да/Нет);
протестирована корректность выхода из систе, удаление сессии пользователя после согласия покинуть систему (удаление cookie).
Взаимодействие пользователя с системой осуществляется посредством браузера. Так как выбор браузера остается за пользователем, а у каждого браузера своя специфика в отображении некоторых элементов HTML-кода, потребовалось визуальное тестирование отображения элементов интерфейса.
Тестирование проводилось в браузерах:
Internet Explorer (версии 6 и 7);
Mozilla Firefox (версии 11 и 13);
Google Chrome (версии 35);
Opera (версии 12).
Во всех браузерах интерфейс отображается корректно.
Программный комплекс позволяет запустить систему учета, как на персональном компьютере (эмуляция веб-сервера), так и в локальной (глобальной) сети в режиме клиент-сервер.
Для тестирования работы систе на персональном компьютере применялся набор веб-разработчика Denwer 3 для ОС Windows.
В состав пакета входят следующие дистрибутивы:
Веб-сервер Apache 2.2.22 (SSL, SSI, mod_rewrite, mod_php);
PHP 5.3.13 с поддержкой GD, MySQL, SQLite;
СУБД MySQL 5.5 с поддержкой транзакций;
phpMyAdmin 3.5 - система управления MySQL через Web-интерфейс.
С указанной конфигурацией Denwer система корректно работала и в локальной сети гимназии.
Все выявленные на этапе тестирования ошибки были устранены.
Заключение
Разработанная система автоматизации учета учащихся школы предназначена для хранения и анализа первичных данных учащихся.
Система содержит основную информацию об учащихся (фамилия, имя, отчество, дата рождения, домашний адрес, информацию о родителях и т.д.), а также достижения в различных областях учебно-воспитательного процесса (участие в конкурсах, спортивных соревнованиях, их результативность и т.д.).
Она обеспечивает возможность удаления, добавления и редактирования записей как основных, так и подчиненных таблиц данных. Так же предоставляет возможность просмотра полных данных по каждой таблице и по всей базе данных в целом, поддерживать полноту информации.
Работа систе заключается в обслуживании двух встречных потоков новой информации: ввода новой информации и выдачи текущей информации по конкретному запросу. Эти требования обеспечиваются наличием стандартных процедур поиска информации и тем, что данные систе расположены в определенном порядке.
Удобный, интуитивно понятный интерфейс автоматизированной систе, с одной стороны, позволяет легко ориентироваться в программе, требуя от пользователя лишь небольшого количества специальных навыков работы с электронно-вычислительными машинами, с другой стороны, предоставляет пользователю оперативную информацию обо всех интересующих его данных, учитывая права доступа данного пользователя к той или иной информации, хранящийся в базе данных учащихся гимназии.
Достоинство созданной систе - открытость платфор, переносимость и расширяемость. Это позволяет добавлять к системе новые функции или совершенствовать уже имеющиеся.
При подготовке дипломной работы особое внимание уделялось изучению современных технологий проектирования и реализации. В качестве основы для систе была выбрана архитектура клиент-сервер, где сервер реализован на базе технологии WAMP (Windows-Apache-MySQL-PHP), а клиентом выступает обычный браузер. Для упрощения создания программной части систе использовалась концепция MVC (Model-View-Controller). Проектирование систе выполнялось средствами фреймворка CodeIngres.
В результате выполнения курсовой работы была разработана информационная система, позволяющая автоматизировать процесс составления расписании занятий.
Данная информационная система предназначена для обеспечения организации учебной работы в образовательном заведении, включает в себя два окна. Первое окно позволяет открыть главное меню. Второе окно позволяет записать предмет и преподавателей для составления расписания.
В результате применения данной информационной систе будет сокращено время составления расписания занятий, ускорен процесс поиска предмета, повышено качество работы учебного заведения, сокращена трудоемкость диспетчера и завуча.
Список использованных источников
Базы данных: Учебник для высших учебных заведений / Под ред. Проф. А.Д. Хомоненко. 4-е изд. СПб.: Корона Принт, 2004. 736.
Бейли, Л. Изучаем PHP и MySQL / Л. Бейли, М. Моррисон. Эсмо, 2010. 800 с.
Гольцман, В. MySQL 5.0. Библиотека программиста / В. Гольцман. Питер, 2010. 370 с.
Дейт К.Дж. Введение в систе баз данных / Introduction to Database Systems. 8-е изд. М.: Вильямс, 2005. 1328 с.
Колисниченко, Д.Н. PHP 5/6 и MySQL 6. Разработка Web-приложений / Д.Н. Колисниченко. БХВ-Петербург, 2011. 528 с.
Комолова, Н. HTML: самоучитель / Н. Комолова, Е. Яковлева. СПб.: Питер, 2011. 288 с.
Кузнецов, М.В. MySQL на примерах / М.В. Кузнецов, И.В. Симдянов. СПб.: БХВ-Петербург, 2007. 592 с.
Кузнецов, М.В. PHP 5 на примерах / М.В. Кузнецов, И.В. Симдянов, С.В. Голышев. СПб.: БХВ-Петербург, 2006. 576 с.
Прохоренок, Н.А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера / Н.А. Прохоренок. СПб.: БХВ-Петербург, 2010. 912 с.
Ташков, П. А. Веб-мастеринг. HTML, CSS, JavaScript, PHP, CMS, AJAX, раскрутка / П.А. Ташков. СПб.: Питер, 2010. 512 с.
Харрис, Э. PHP/MySQL для начинающих / Э. Харрис. М.: Кудиц-Образ, 2005. 384 с.
CodeIgniter User Guide Version 2.1.3 [Электронный ресурс] - Режим доступа: http://cidocs.ru/213e/overview/at_a_glance.html. Дата доступа: 30.04.2014.
История и традиции ГУО «Гомельская Ирининская гимназия» [Электронный ресурс] / Сайт ГУО «Гомельская Ирининская гимназия». Гомель, 2014. Режим доступа: http://www.iringimnaz.gomel.by. Дата доступа: 27.04.2014.
Описание ШГИС [Электронный ресурс] / Сайт «Школьная Городская Информационная Система». Гомель, 2013. Режим доступа: dnevnik.iptv.by. Дата доступа: 02.05.2014.
Компания «ИНИС-СОФТ». Продукты [Электронный ресурс] / Сайт Компании «ИНИС-СОФТ». Минск, 2014. Режим доступа: www.inissoft.by/products.shtml. Дата доступа: 02.05.2014.
Приложение
Исходный программный код информационной систе
Программный код Фор 1:
#pragma once
namespace kyrsovaya {
using namespace System;namespace System: ComponentModel;namespace System: Collections;namespace System: Windows: Forms;namespace System: Data;namespace System: Drawing;
/// <summary>
/// Сводка для Form1
/// </summary>ref class Form1: public System: Windows: Forms: Form
{:(void)
{();
//
//TODO: добавьте код конструктора
//
}
protected:
/// <summary>
/// Освободить все используее ресурсы.
/// </summary>
~Form1 ()
{(components)
{components;
}
}: System: Windows: Forms: Button^ button1;:: System: Windows: Forms: Button^ button2;: System: Windows: Forms: Button^ button3;: System: Windows: Forms: Button^ button4;: System: Windows: Forms: Button^ button5;: System: Windows: Forms: PictureBox^ pictureBox1;: System: Windows: Forms: Button^ button6;
private:
/// <summary>
/// Требуется переменная конструктора.
/// </summary>
System: ComponentModel: Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>InitializeComponent(void)
{: ComponentModel: ComponentResourceManager^ resources = (gcnew System: ComponentModel: ComponentResourceManager (Form1:typeid));>button1 = (gcnew System: Windows: Forms: Button());>button2 = (gcnew System: Windows: Forms: Button());>button3 = (gcnew System: Windows: Forms: Button());>button4 = (gcnew System: Windows: Forms: Button());>button5 = (gcnew System: Windows: Forms: Button());>pictureBox1 = (gcnew System: Windows: Forms: PictureBox());>button6 = (gcnew System: Windows: Forms: Button());
(cli:safe_cast<System: ComponentModel:ISupportInitialize^ >(this->pictureBox1))->BeginInit();>SuspendLayout();
//
// button1
// >button1->Location = System: Drawing: Point (12, 12);>button1->Name = L «button1»;>button1->Size = System: Drawing: Size (100, 30);>button1->TabIndex = 0;>button1->Text = L «Расписание»;>button1->UseVisualStyleBackColor = true;
//
// button2
// >button2->Location = System: Drawing: Point (12, 58);>button2->Name = L «button2»;>button2->Size = System: Drawing: Size (100, 31);>button2->TabIndex = 1;>button2->Text = L «Преподователи»;>button2->UseVisualStyleBackColor = true;
//
// button3
// >button3->Location = System: Drawing: Point (12, 105);>button3->Name = L «button3»;>button3->Size = System: Drawing: Size (100, 32);>button3->TabIndex = 2;>button3->Text = L «Аудиотории»;>button3->UseVisualStyleBackColor = true;
//
// button4
// >button4->Location = System: Drawing: Point (12, 152);>button4->Name = L «button4»;>button4->Size = System: Drawing: Size (100, 30);>button4->TabIndex = 3;>button4->Text = L «Студенты»;>button4->UseVisualStyleBackColor = true;>button4->Click += gcnew System: EventHandler (this, &Form1:button4_Click);
//
// button5
// >button5->Location = System: Drawing: Point (12, 244);>button5->Name = L «button5»;>button5->Size = System: Drawing: Size (100, 31);>button5->TabIndex = 4;>button5->Text = L «Выйти»;>button5->UseVisualStyleBackColor = true;
//
// pictureBox1
// >pictureBox1->Image = (cli:safe_cast<System: Drawing: Image^ >(resources->GetObject (L «pictureBox1. Image»)));>pictureBox1->InitialImage = (cli:safe_cast<System: Drawing: Image^ >(resources->GetObject (L «pictureBox1. InitialImage»)));>pictureBox1->Location = System: Drawing: Point (247, 86);>pictureBox1->Name = L «pictureBox1»;>pictureBox1->Size = System: Drawing: Size (352, 375);>pictureBox1->TabIndex = 5;>pictureBox1->TabStop = false;>pictureBox1->Click += gcnew System: EventHandler (this, &Form1:pictureBox1_Click);
//
// button6
// >button6->Location = System: Drawing: Point (12, 198);>button6->Name = L «button6»;>button6->Size = System: Drawing: Size (100, 27);>button6->TabIndex = 6;>button6->Text = L «О программе»;>button6->UseVisualStyleBackColor = true;
//
// Form1
// >AutoScaleDimensions = System: Drawing: SizeF (6, 13);>AutoScaleMode = System: Windows: Forms: AutoScaleMode: Font;>ClientSize = System: Drawing: Size (597, 460);>Controls->Add (this->button6);>Controls->Add (this->pictureBox1);>Controls->Add (this->button5);>Controls->Add (this->button4);>Controls->Add (this->button3);>Controls->Add (this->button2);>Controls->Add (this->button1);
this->Name = L «Form1»;>Text = L «Учет составления расписании занятии»;
this->Load += gcnew System: EventHandler (this, &Form1: Form1_Load);
(cli:safe_cast<System: ComponentModel:ISupportInitialize^ >(this->pictureBox1))->EndInit();>ResumeLayout(false);
}
#pragma endregion: System: Void button4_Click (System: Object^ sender, System: EventArgs^ e) {
}: System: Void pictureBox1_Click (System: Object^ sender, System: EventArgs^ e) {
}: System: Void Form1_Load (System: Object^ sender, System: EventArgs^ e) {
}
};
}
Программный код Фор 2:
#pragma once
kyrsovaya {
namespace System;namespace System: ComponentModel;namespace System: Collections;namespace System: Windows: Forms;namespace System: Data;namespace System: Drawing;
/// <summary>
/// Сводка для raspisanie
/// </summary>ref class raspisanie: public System: Windows: Forms: Form
{:(void)
{();
//
//TODO: добавьте код конструктора
//
}
:
/// <summary>
/// Освободить все используее ресурсы.
/// </summary>
~raspisanie()
{(components)
{components;
}
}: System: Windows: Forms: RichTextBox^ richTextBox1;:: System: Windows: Forms: Label^ label1;: System: Windows: Forms: RichTextBox^ richTextBox2;: System: Windows: Forms: Label^ label2;
private:
/// <summary>
/// Требуется переменная конструктора.
/// </summary>
System: ComponentModel: Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>InitializeComponent(void)
{>richTextBox1 = (gcnew System: Windows: Forms: RichTextBox());>label1 = (gcnew System: Windows: Forms: Label());>richTextBox2 = (gcnew System: Windows: Forms: RichTextBox());>label2 = (gcnew System: Windows: Forms: Label());>SuspendLayout();
//
// richTextBox1
// >richTextBox1->Location = System: Drawing: Point (9, 64);>richTextBox1->Name = L «richTextBox1»;>richTextBox1->Size = System: Drawing: Size (364, 467);>richTextBox1->TabIndex = 0;>richTextBox1->Text = L»»;
//
// label1
// >label1->AutoSize = true;>label1->Location = System: Drawing: Point (12, 36);>label1->Name = L «label1»;>label1->Size = System: Drawing: Size (86, 13);>label1->TabIndex = 1;>label1->Text = L «Преподователь»;
//
// richTextBox2
// >richTextBox2->Location = System: Drawing: Point (405, 65);>richTextBox2->Name = L «richTextBox2»;>richTextBox2->Size = System: Drawing: Size (368, 465);>richTextBox2->TabIndex = 2;>richTextBox2->Text = L»»;
//
// label2
// >label2->AutoSize = true;>label2->Location = System: Drawing: Point (402, 36);>label2->Name = L «label2»;>label2->Size = System: Drawing: Size (60, 13);>label2->TabIndex = 3;>label2->Text = L «Предметы»;
//
// raspisanie
// >AutoScaleDimensions = System: Drawing: SizeF (6, 13);>AutoScaleMode = System: Windows: Forms: AutoScaleMode: Font;>ClientSize = System: Drawing: Size (783, 577);>Controls->Add (this->label2);>Controls->Add (this->richTextBox2);>Controls->Add (this->label1);>Controls->Add (this->richTextBox1);>Name = L «raspisanie»;>Text = L «Расписание занятии»;>Load += gcnew System: EventHandler (this, &raspisanie:raspisanie_Load);>ResumeLayout(false);>PerformLayout();
}
#pragma endregion: System: Void raspisanie_Load (System: Object^ sender, System: EventArgs^ e) {
}
};
}
Размещено на Allbest.ru
...Подобные документы
Особенности реализации главных элементов разрабатываемой программы (цифровые элементы) с помощью объектно-ориентированного подхода. Применение принципа инкапсуляции для защиты данных. Конструирование классов, описание и тестирование программного продукта.
курсовая работа [2,3 M], добавлен 10.05.2015Оптимизация работы административного отдела художественной школы путем автоматизации учета оплаты за обучение и учета успеваемости учеников. Создание запросов, макросов и отчетов. Описание даталогической модели на SQL. Проведение нормализации таблиц.
дипломная работа [2,8 M], добавлен 19.09.2014Изучение объектно-ориентированного языка программирования Java, его функциональные возможности. Создание программного кода. Описание классов и методов, использованных в программе. Руководство пользователя, запуск сервера и клиентского приложения.
курсовая работа [1,8 M], добавлен 16.09.2015Приемы практического использования объектно-ориентированного подхода в создании законченного программного продукта. Разработка кроссплатформенной компьютерной игры "Морской бой". Принципы "хорошего стиля программирования C++/Qt". Описание классов игры.
курсовая работа [2,7 M], добавлен 12.08.2014Общая характеристика объектно-ориентированного подхода в программировании, его основные свойства и принципы. Разработка программы для автоматизация деятельности кафе на основе объектно-ориентированного подхода, проектирования и реализации схемы данных.
курсовая работа [1,2 M], добавлен 22.01.2012Исследование принципов объектно-ориентированного программирования на базе языка программирования С++. Разработка программного комплекса для ведения учёта памятников города. Описание процессов сортировки, поиска, формирования статистики по памятникам.
курсовая работа [782,4 K], добавлен 26.05.2014Исследование объектно-ориентированного подхода к проектированию программного обеспечения будильника. Модель программного обеспечения. Взаимодействие между пользователями и системой. Диаграммы и генерация программного кода при помощи средств Rational Rose.
курсовая работа [355,8 K], добавлен 26.09.2014Особенности объектно-ориентированного проектирования. Основные понятия объектно-ориентированного подхода. Основы языка UML, варианты его использования. Диаграммы классов и взаимодействия. Разработка диаграммы прецедентов (вариантов использования).
курсовая работа [1,1 M], добавлен 13.05.2014Изучение базовых понятий объектно-ориентированного программирования. Исследование принципов работы с классами и объектами. Построение системы классов для описания плоских геометрических фигур. Анализ методов создания объектов, перемещения на плоскости.
лабораторная работа [212,0 K], добавлен 10.03.2013Изучение принципов объектно-ориентированного программирования, в котором основными концепциями являются понятия классов и объектов. Свойства этого вида программирования: инкапсуляция, полиморфизм, наследование. Описание класса. Конструкторы и деструкторы.
презентация [74,8 K], добавлен 14.10.2013Анализ объектно-ориентированного программирования, имитирующего способы выполнения предметов. Основные принципы объектно-ориентированного программирования: инкапсуляция, наследование, полиморфизм. Понятие классов, полей, методов, сообщений, событий.
контрольная работа [51,7 K], добавлен 22.01.2013Анализ предметной области "Конкурс поэтов" на основе объектно-ориентированного подхода. Разработка оконного приложения и описание информационной модели предметной области. Описание разработанных процедур С++ и результатов тестирования приложения.
курсовая работа [355,9 K], добавлен 18.06.2013Описание структуры бинарного дерева поиска на языке C# среды Visual Studio. Требования к интерфейсу пользователя, структуре данных и программным средствам. Компоненты программных средств, результаты тестирования, диаграммы вариантов использования классов.
курсовая работа [968,2 K], добавлен 26.01.2013Понятие технологии разработки программного обеспечения и модели жизненного цикла. Сущность объектно-ориентированного подхода. Строительные блоки, общие механизмы языка моделирования UML, диаграммы классов, состояний, взаимодействий и компонентов.
курсовая работа [262,5 K], добавлен 10.07.2014Краткая характеристика предметной области. Создание диаграммы прецедентов, последовательности, сотрудничества, классов, размещения, компонентов. Добавление деталей к описаниям операций и определение атрибутов КЛАССОВ. Генерация программного кода C++.
курсовая работа [185,0 K], добавлен 29.06.2011Характеристика объектно-ориентированного, процедурного, функционального программирования. Выбор языка программирования для создания программного обеспечения для управления справочником "Спортсмены". Алгоритм работы приложения, пользовательский интерфейс.
курсовая работа [1,6 M], добавлен 23.02.2016Разработка программного продукта на языке Delphi 7.0. Матричный метод решения однородных и неоднородных систем линейных уравнений. Разработка интерфейса. Тестирование и описание объектов программы. Описание процесса вычисления определителей матриц.
курсовая работа [366,1 K], добавлен 04.02.2015Понятие объектно-ориентированного программирования, общая характеристика языков высокого уровня. Разработка программного обеспечения для реализации компьютерной игры "пинбол" с помощью императивного программирования в среде Microsoft Visual Basic.
курсовая работа [428,9 K], добавлен 19.09.2012Характеристика основных принципов объектно-ориентированного программирования. Этапы разработки программы на языке C++, реализующей игру "Морской бой". Выбор языка программирования. Характеристика необходимых классов, наследований, виртуальных методов.
курсовая работа [657,6 K], добавлен 17.06.2012Разработка Windows-приложений с использованием библиотеки MFC. Базовый набор классов, написанных на языке С++ и предназначенных для упрощения процесса программирования под Windows. Фундаментальные идеи объектно-ориентированного программирования.
курсовая работа [348,1 K], добавлен 02.07.2011