Разработка информационной системы тайм менеджмента студента

0

ДИПЛОМНАЯ РАБОТА

Разработка информационной системы тайм менеджмента студента

Аннотация

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

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

 

Содержание

 

Введение 6

1 Анализ существующих методов планирования времени 8

1.1 Принцип Парето 10

1.2 Метод Альпы 11

1.3 АВС - анализ 12

2 Современные системы тайм-менеджмента 13

2.1 Общие требования к разработке систем 13

2.2 Сравнительный анализ существующих систем тайм-менеджмента 14

2.3 Система тайм-менеджмента студента 17

3 Разработка информационной системы тайм-менеджмента студента 20

3.1 Разработка базы данных 20

3.2 Организация пользовательского интерфейса 27

3.3 Алгоритм работы информационной системы 37

3.4 Тестирование системы тайм-менеджмента 44

Заключение 49

Список использованных источников 50

Приложение А ER – диаграмма базы данных 51

Приложение В Объектно-реляционная модель 52

Приложение С Программный код системы 53

  

Введение

 

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

Данный способ организации рабочего времени принято называть тайм менеджментом (с англ. Time Management)  – «правильное» управление делами. Разработка основ теории тайм менеджмента претерпела множество вариаций. На сегодняшний момент существует большое количество систем организации рабочего времени, которым следуют множество ведущих компаний мира. Однако количество современных приложений управления делами достаточно мало и не все обладают уникальным способом планирования, интерфейсом и интеллектуализацией.

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

В связи  с этим целью выпускной квалификационной работы является разработка информационной системы тайм менеджмента студента.

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

Для достижения цели были сформулированы и решены следующие задачи:

  • проанализировать существующие системы тайм-менеджмента
  • разработать проект системы тайм-менеджмента
  • разработать базу данных
  • разработать пользовательский интерфейс
  • произвести реализацию системы
  • протестировать программный продукт
  1. Анализ существующих методов планирования времени

 

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

Во многих книгах ему даётся следующие определения:

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

Но очень трудно построить свою работу так, чтобы получить в результате максимальную пользу. Тайм-менеджмент - это не составление списка неотложных дел, это умение грамотно распределить время и нагрузку. Известно, что на составление плана тратится около восьми минут, и при этом экономится час времени. При планировании нужно учесть следующее:

  • план нужно составлять на бумаге или в виде электронного документа (а не в голове!) и периодически с ним сверяться;
  • оптимальный отдых - десять минут после каждого часа работы;
  • полезно и удобно использовать ежедневник.

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

Стивен Кови, автор бестселлера "First Things First" ("Главное внимание главным вещам") охарактеризовал развитие тайм менеджмента как науки после второй мировой войны, разделив на четыре этапа или поколения:

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

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

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

Успешный тайм-менеджмент означает применение на практике неких методов планирования времени. Известно достаточно много теоретических разработок в этой сфере. Мы приведем здесь три из них:

 

  • принцип Парето
  • метод Альпы
  • ABC-анализ

 

1.1 Принцип Парето

 

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

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

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

  

1.2. Метод Альпы

 

Для планирования личного времени эффективно применяется метод Альпы. С его помощью можно, потратив всего несколько минут, оптимально распланировать все дела. Вкратце он состоит в следующем:

  • Зафиксировать все дела и сроки. Все дела, которые необходимо осуществить за день, нужно записать в ежедневник, блокнот, на листок бумаги или в электронный документ. Кроме того, необходимо указать сроки, в которые они должны быть выполнены. Очень важно подойти к этому заданию ответственно, так как вписать в готовый план неожиданно придуманные дела вряд ли удастся.
  • Определить, сколько времени потребуется на выполнение каждого этапа работы. Теперь предстоит определить, сколько времени потребуется на выполнение каждого дела. Не нужно забывать и про такие дела как отдых, обеденный перерыв, чашка кофе, поскольку они также требуют временных затрат.
  • Учесть буферное время. Как бы тщательно мы не рассчитывали время, необходимое на выполнение дела, его все равно уйдет несколько больше. Поэтому желательно распланировать дела только на шестьдесят процентов рабочего времени, остальные сорок процентов станут буфером. Примерно половина оставшегося времени уйдет на устранение непредвиденных помех, а вторая половина - на спонтанные действия, рабочее общение.
  • Расставить приоритеты. Это самая важная часть плана. Нужно определить приоритет каждого дела (например, оценить по пятибалльной системе). Вполне возможно, что все дела, намеченные на день, в план просто не поместятся. Значит, туда должны входить только самые срочные и важные задания. Остальные придется пересмотреть (чтобы выполнение их занимало меньше времени), делегировать или отложить.
  • Проконтролировать в итоге. В конце рабочего дня нужно снова вернуться к плану, чтобы просмотреть, насколько удачно он был составлен. Также нужно обратить внимание на дела, которые не были выполнены.

1.3. ABC-анализ

 

Бывает, что время тратится вовсе не на те дела, которые являются наиболее значимыми. ABC-анализ позволяет избавиться от этого недостатка.

Суть его в расстановке приоритетов:

  • Дела "А". Это наиболее важные дела, которые можно выполнить только самостоятельно. Обычно они являются наиболее трудоемкими. В рабочий план нужно включать только одно или два дела из этой группы, с тем, чтобы по времени выполнение их заняло три часа.
  • Дела "В." Это важные дела. Выполнение этих задач должно занимать около часа.
  • Дела "С". Это наименее важные задачи, которые, однако, занимают много времени. В рабочем расписании на них должно быть предусмотрено не более сорока пяти минут. От остальных дел из этой группы нужно избавляться.

Выводы по первой главе

В результате анализа существующих популярных методов тайм-менеджмента для информационной системы тайм-менеджмента был выбран АВС – метод, который

  • позволяет ранжировать дела по степени важности;
  • планировать необходимое время для реализации дела.

 

  1. Современные системы тайм менеджмента

2.1 Общие требования к разработке систем

 

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

Для начала разберёмся, почему следует выбрать для себя какую-то систему. По сути, человек физически не может продуктивно работать, если он держит в голове все, что ему нужно сделать, все планы, отчеты и т.д.

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

Посему, хорошая система тайм-менеджмента должна включать в себя:

  1. Место для охватывания всей информации о работе;
  2. Календарь для встреч;
  3. Место для заметок;
  4. Место для контактов;
  5. Объединение в одно целое задачи, цели и мечты;
  6. Четкое описание системы, чтоб было понятно, как это все работает.

Существует множество книг, которые пытаются претендовать на звание систем тайм-менеджмента, но на самом деле являются лишь идеями или советами на теме. Мы поговорим именно о системе, а не о ежедневнике и планировщике.

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

 

2.2 Сравнительный анализ систем тайм-менеджмента

 

Для экономии нашего времени мы приведём четыре из самых популярных систем в современном мире:

  • Система «GTD» Дэвида Аллена;
  • «Franklin Time Management» Стивена Кови;
  • «Time Power» Брайана Трейси;
  • «Time Management from the Inside Out» Джулии Моргенстерн.

Система GTD Дэвида Алена

Данная книга (Getting Things Done) и система очень популярна сейчас в мире. Основная идея заключается в том, чтобы с помощью контроля и организации мы можем сконцентрироваться именно на тех вещах, которые должны быть выполнены в определенное отведенное для этого время. Здесь широко применяется пошаговый метод.

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

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

Система Стивена Кови

Эта система основана на книге Стивена Кови «The Seven Habits of Highly Effective People» («Семь навыков высокоэффективных людей»)

 Управление временем по методу Франклина, в отличие от метода Дэвида Аллена, имеет подход, который называется «сверху вниз». То есть, основное внимание уделяется большим целям, а не мелким заданиям. С ее помощью мы четко сможем определить для себя цели и роли в своей жизни. И именно это мы часто используем для планирования своей жизни, года, недели или дня.

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

Еще один аспект этой системы тайм-менеджмента – матрица с четырьмя секторами:

  • Важный и срочный;
  • Важный, но не срочный,
  • Неважный, но срочный;
  • Неважный и несрочный.

Кови говорит о том, что большинство людей уделяет основное внимание первому, третьему и четвёртому секторам. А эта система основное упор делает на второй сектор.

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

TimePower Брайана Трейси

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

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

Эта система хороша для тех, кто ищет практические советы для того, как преодолеть прокрастинацию (в переводе с англ.  "procrastination" означает откладывание со дня на день, промедление; с латинского "crastinus" завтрашний, а "procrastino" переводится, как откладывать, отсрочивать, затягивать), как избежать тех занятий, которые воруют наше ценное рабочее время и т.д.

Time Managament from the Inside Out Джулии Моргенстерн

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

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

Он подходит тем, кто нуждается в простом, но эффективном подходе к планированию времени. Он легко применим на практике, и в то же время  содержит не так много правил для использования.

 

2.3 Система тайм-менеджмента студента

 

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

Проведя анализ всех популярных методик планирования и современных систем управления дел, мы для реализации нашего приложения воспользуемся АВС-методом  и теоритическими основами системы Дэвида Алена.

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

Выбранный тип системы GTD наиболее подходит для организации плана рабочего времени студента. Это обуславливается следующими аспектами:

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

Благодаря системе Дэвида Алена мы эти проблемы сможем устранить, исключив также потери рабочего времени и учтив необходимое время на отдых и сон.

Вследствие этого анализа, мы должны прийти к искомому результату работы, то есть разработать приложение тайм-менеджмента для студента, способное помочь спланировать дела на конкретный отрезок времени.

Но для начала разберём, какие действия может выполнять пользователь и какие должна выполнять функции информационная система.

На рисунке, представленном ниже, показана диаграмма вариантов использования, где указаны все действия, которые может совершить студент:

Рисунок 1 – Диаграмма вариантов использования

Теперь рассмотрим, функции системы:

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

Выводы по второй главе

  • сформулированы требования, предъявляемые системе тайм-менеджмента;
  • проведён сравнительный анализ систем тайм-менеджмента;
  • выбрана система GTD Дэвида Алена;
  • подготовлен проект информационной системы тайм-менеджмента студента;
  • разработана функциональная модель системы;
  • приведена диаграмма вариантов использования.

 

  1. Разработка информационной системы тайм-менеджмента студента

3.1 Разработка БД

 

Перед тем, как приступить к работе, нужно разработать наш план  в виде этапов проектирования:

  • Создание БД
  • Создание пользовательского интерфейса
  • Написание программного кода
  • Реализация алгоритма организации
  • Тестирование

Как известно, все данные необходимо хранить в определённом хранилище, к которому можно обратиться для извлечения, редактирования или удаления необходимых записей. Таким хранилищем данных у нас будет являться база данных.

База данных (БД) — именованная совокупность данных, отражающая состояние объектов и их отношений в рассматриваемой предметной области. БД предоставляет надёжный способ хранения, передачи и редактирования информации. Для создания, ведения и совместного использования БД многими пользователями существует специальная совокупность языковых и программных средств называемых системой управления базами данных (СУБД).

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

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

Для хранения нашей информации о делах и мероприятиях мы выбрали следующую СУБД – это MySQL Server 5 версии. Эта система управления БД относится к клиент-серверным СУБД  и также является СУ реляционными БД. Клиент-серверная СУБД располагается на сервере вместе с БД и осуществляет доступ к БД непосредственно, в монопольном режиме. Все клиентские запросы на обработку данных обрабатываются клиент-серверной СУБД централизованно. Обладает определёнными достоинствами по удобству обеспечения таких важных характеристик как высокая надёжность, высокая доступность и высокая безопасность. Именно объединение реляционных баз данных и клиент-серверных технологий позволяет современному предприятию успешно управлять собственными данными, оставаясь конкурентоспособным на рынке товаров и услуг.

Для работы с реляционными данными воспользуемся специальным стандартным структурированным языком запросов – SQL (Structured Query Language). SQL нельзя в полной мере отнести к традиционным языкам программирования, он не содержит традиционные операторы, управляющие ходом выполнения программы, операторы описания типов и многое другое, он содержит только набор стандартных операторов доступа к данным, хранящимся в базе данных. В отличие от реляционной алгебры, где были представлены только операции запросов к БД, SQL является полным языком, в нем присутствуют не только операции запросов, но и операторы, соответствующие Data Definition Language (DDL) — языку описания данных. Кроме того, язык содержит операторы, предназначенные для управления (администрирования) БД.

Для более простой работы, нежели написание многотонного кода, используя язык запроса, была выбрана специальная удобная и многофункциональная программа – SQL  Manager for MySQL 2010. С её помощью мы смогли спроектировать и реализовать модель данных, которая послужила основой для создания хранилища наших будущих записей.

Рисунок 2 – Фрагмент  ER-диаграммы

Рассмотрит поподробнее все присутствующие таблицы в БД:

  • аудитория
  • предмет
  • список названий мероприятий
  • тип мероприятий
  • преподаватель
  • предмет
  • мероприятие
  • номер мероприятия
  • день недели
  • тип недели
  • список студентов
  • пол
  • факультеты
  • группы
  • список дел
  • тип дела
  • приоритеты
  • план один
  • план два

При любой разработке БД следует произвести нормализацию.  Нормализация — это формальный аппарат ограничений на фор­мирование таблиц (отношений), который позволяет устранить дублирование, обеспечивает непротиворечивость хранимых дан­ных и уменьшает трудозатраты на ведение (ввод, корректировку) базы данных.

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

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

Таблица студенты включает в себя поле для ввода фамилии, имени отчество, поле даты рождения, поле возраста, которое вычисляется в программе на основе полученного значения о дате рождения, поля для логина и пароля, поле для пути к изображению, а также поле с указанием пола студента, значение которого ссылается на таблицу пол.

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

Третья, которая хранит записи дел, имеет поле для ввода названия с поля, ссылающиеся на внешние ключи таблиц приоритет и тип дела, остальные – это дата сдачи, время работы.

Но наша БД не может напрямую контактировать с основным пространством информационной системы.

Для разработки пользовательского интерфейса была выбрана программа по разработке программного обеспечения Microsoft Visual Studio 2010. Она является мощной средой разработки, обеспечивающая высокое качество кода на протяжении всего цикла разработки ПО, от проектирования до внедрения.

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

Платформа  .NET реализует объектно-ориентированный подход к программированию, т.е. объекты в программе будут представлять собой объекты или сущности реального мира. В качестве примера можно рассмотреть организацию работы преподавателей в университете, где у каждого есть своё расписание, свой факультет, своя кафедра и т.д. Сначала будет создан класс «Человек», а затем только реализован объект преподаватель в виде класса «Преподаватель», который унаследует  поля родительского класса «Человек», то есть, к примеру, инициалы, пол, дата рождения. Дочерний класс может также иметь и свои уникальные поля такие,  как название кафедры, название факультета.

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

Одним из решений и выходов из данной ситуации является использование  объектно-реляционного отображения ORM (с англ. Object-relational mapping) — технология программирования, которая связывает базы данных с концепциями объектно-ориентированных языков программирования, создавая «виртуальную объектную базу данных». Эта технология избавляет программиста от написания большого количества кода, часто однообразного и подверженного ошибкам, тем самым значительно повышая скорость разработки. Кроме того, большинство современных реализаций ORM позволяют программисту при необходимости самому жёстко задать код SQL-запросов, который будет использоваться при тех или иных действиях (сохранение в базу данных, загрузка, поиск и т. д.) с постоянным объектом.

Для работы с данными необходим язык запросов, как это было сказано выше, но каждый раз задавать SQL-запросы увеличивает объём кода. Для лучшей работы с объектами, ORM моделью, а также с самой БД был выбран интегрированный язык запросов LINQ.  Language-Integrated Query представляет собой набор функций Visual Studio 2010, расширяющих мощные возможности запроса в синтаксисе языка C# и Visual Basic. LINQ представляет стандартные шаблоны для создания запросов и обновления данных; технология может быть расширена для поддержки потенциально любого типа хранилища данных. Visual Studio 2010 включает сборки поставщиков LINQ, позволяющие использовать LINQ с коллекциями платформы .NET Framework, базами данных SQL Server, наборами данных ADO.NET и XML-документами. LINQ состоит из расширений языка, поддерживающий формирование запросов данных способом, безопасным по типам. Запрашиваемые данные могут быть представлены в форме XML (запросы LINQ к XML), баз данных (ADO.NET с поддержкой LINQ, куда входят LINQ к SQL, LINQ к наборам данных и LINQ к экземплярам), объектов (LINQ к объектам) и т.д.

Рисунок 3 – Фрагмент объектно-реляционной модели

 

 

3.2 Организация пользовательского интерфейса

 

Фундаментом для разработки пользовательского интерфейса станут формы и элементы управления Visual Studio. Они позволят нам создать все необходимые текстовые поля для ввода данных и таблицы для просмотра наших данных.

Первая форма станет главной в нашей программе. Здесь разместим две таблицы для отображения построенного системой плана дел и место для отображения изображения студента. Далее прикрепим поля для ввода текста. Они необходимы для отображения текущего дела и для их поиска в таблицах. Чтобы мы могли осуществить подтверждение планирования заданий, поиск, сортировку нам нужно установить такие управляющие компоненты, как кнопки, нажав которые мы приложение произведёт соответствующую операцию. Также нам следует разместить на форме меню для быстрого перехода между окнами. Каждая система тайм-менеджмента требует наличие календаря. В правом верхнем углу главной формы установим его, чтобы студент мог следить с помощью календаря за текущим временем и днём, текущей неделей и месяцем. Теперь основная форма нашей программы готова (см. рисунок ниже).

Рисунок 4 – Главное окно системы управления делами студента

Следующим окном, которое нам необходимо спроектировать является окно авторизации, которое будет первым появляться перед студентом. Пока студент не авторизуется – он не может войти в основное окно приложения.

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

Рисунок 5 – Окно авторизации приложения

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

Рисунок 6 – Окно регистрации нового пользователя

Как показано выше на рисунке в окне имеются поля для заполнения анкеты студента: инициалы, дата рождения, факультет, группа, логин, пароль - и соответствующие текстовые подсказки. Например, если студент неверно ввёл логин и пароль текст закрашивается красным цветом.

Рисунок 7 – Пример заполнения логина студента в окне регистрации

Как только пользователь выполнил верное заполнение полей логина и пароля, он можно выбрать фотографию. По кнопке, расположенной в нижнем  правом углу, студент переходит в новое окно, где он может найти и просмотреть фотографии (см. рисунок 8).

Рисунок 8 – Окно выбора изображения

Главным элементом в окне выбора картинке здесь является элемент «pictureBox». Он позволяет выводить на экран изображения. С помощью настроек, предоставляемых студией, мы настроили вывод картинки по масштабу с размерами элемента управления и сохранения пропорций оригинала.  Чтобы студент мог выбрать искомое фото, для него размещено в левой части окна элемент, который выводит список всех имеющихся фотографий в папке. Директорией по умолчанию является папка «Мои Рисунки». Для выбора фотографий, хранящихся в других каталогах, установлена кнопка «Обзор», щёлкнув по которой студент сможет перейти в другое место, где располагается искомое изображение. После того, как выбор сделан, студент может активировать кнопку и вернуться в окно регистрации. На форме студенту необходимо щёлкнуть левой кнопкой мыши по пустому месту, где должно располагаться его фото – фотография отобразится в видовом окне.

Рисунок 9 – Заполненная анкета нового студента в окне регистрации

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

Рисунок 10 – Подтверждение присутствия студента в списке

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

Рисунок 11 – Окно добавления мероприятия

В новом окне, как показано на рисунке 11, только поля для заполнения данных, меню и кнопка добавления мероприятия. Здесь же для удобства использования добавлены объекты выбора дня недели, типа и номера пары. Для нового мероприятия необходимо ввести аббревиатуру предмета, полное название предмета, затем указать номер аудитории, где будет проходить мероприятие. После этого, студент должен выбрать номер пары, день недели, верхнюю или нижнею неделю. На основе номера пары система вычислит время начала занятия и время, когда оно закончится. Если все пункты будут учтены, то результатом станет следующий вид окна:

 

Рисунок 12 – Мероприятие добавлено в список

Как только добавлены все необходимые мероприятия, можно переходить к добавлению нового дела.

Рисунок 13 – Окно добавления нового дела

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

Рисунок 14 – Выбор искомого мероприятия с помощью выделения

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

Рисунок 15 – Вывод времени работы и типа приоритета

Рисунок 16 – Окно просмотра анкеты зарегистрировавшегося студента

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

Рисунок 17 – Окно просмотра зарегистрировавшихся пользователей

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

В этом окне установлена таблица для вывода списка, три области для поиска человека. Также в нижнем правом углу располагается область для отображения фотографии студента.

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

Рисунок 18 – Результат поиска зарегистрированного пользователя

Если студенту необходимо просмотреть список в определённой последовательности по какому-либо критерию, то он может обратиться ко второй области окна, где приведены следующие элементы: поля выбора столбцов, при помощи которых производится сортировка массива, и также кнопка вызова этой операции. 

Рисунок 19 – Сортировка списка студентов по половому признаку

На рисунке 19 и 20 приведены иллюстрации, показывающие пример сортировки коллекции данных по половому признаку и по названию факультета.

Рисунок 20 – Сортировки списка студентов  по названию факультету

 

3.3 Алгоритм работы информационной системы

 

На данный момент мы уже, практически, имеем готовый продукт. Нам осталось написать последние строки кода в нашем приложении, провести тестирование и подвести итоги работы.

Но для начала разберём основные части программного года, отвечающего за манипулирование данными и их безопасности.

Для шифрования текстовой информации воспользуемся следующим пространством имён:

using System.Security.Cryptography;

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

MD5 (англ. Message Digest 5) — 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института в 1991 году. Хеш содержит 128 бит (16 байт) и обычно представляется как последовательность из 32 символов. Например, никнейм «Free_mind» в MD5 будет выглядеть следующим образом — «5643636EA2B13D052BAF6A2E48B2B8E1». Использовать его нужно так:

static string GetHashString(string s)//функция для шифрования строки по MD5

{

   //переводим строку в байт-массив

   byte[] bytes = Encoding.Unicode.GetBytes(s);

 

   //создаём объект для получения средств шифрования

   MD5CryptoServiceProvider CSP = new MD5CryptoServiceProvider();

 

   //вычисляем хеш-представление в байтах

   byte[] byteHash = CSP.ComputeHash(bytes);

 

   string hash = string.Empty;

 

   //формируем одну цельную строку из массива

   foreach (byte b in byteHash)

   {

       hash += string.Format("{0:x2}", b);

   }

 

   return hash;

}

Теперь мы сможем воспользоваться выше упомянутой функцией:

public static bool find_lp(string login, string password)

{

   var query_student = from student in ClassHotEnt.ht.students

                       select student;//выборка по таблице «студенты»

 

   bool b_lp = false;//логическая переменная

   foreach (var strd in query_student)

   {

      //если в БД существует введённый логин и пароль

      if (strd.login_student == GetHashString(login)//предварительно зашифровывая

          && strd.password_student == GetHashString(password))//предварительно зашифровывая

         {

            b_lp = true;

            GlobalCorrectClass.path_image = strd.foto_student;//добавляем в глобальный класс путь для картинки

         }

    }

    return b_lp;//возврат

}

Эта же функция при обращении к ней с указанием необходимых параметров выдаст значение в виде логического утверждения «ложь» или «истина». Теперь произведём окончательную проверку:

public void find_lp_for_text(string login, string password)

{

   if (find_lp(login, password) == true)//если существует пароль и логин

   {

       label3.ForeColor = Color.Green;

       label3.Text = "Нажмите кнопку <<Авторизоваться>>";

        pictureBox1.ImageLocation = GlobalCorrectClass.path_image;//

        button1.Enabled = true;//кнопка АВТОРИЗАЦИЯ становится активной

        button2.Enabled = false;//кнопка РЕГИСТРАЦИЯ становится неактивной               

   }

   else//если не существует

   {

        label3.ForeColor = Color.Red;

        label3.Text = "Вы ввели неверный пароль или логин!";

   }

        }

 

В окне авторизации функция вызывается при вводе текстовых данных.

Следующим кодом будет обработка события вызова окна регистрации пользователя системы:

//функция вызывается при загрузке формы

private void anketa_Load(object sender, EventArgs e)

{

   var querysex = from qsx in ClassHotEnt.ht.sex//выборка данных по таблице ПОЛ

                  select qsx;

   sexBindingSource.DataSource = querysex;//добавляем в источник данных SEX полученную выборку

 

   var queryfaculty = from faclt in ClassHotEnt.ht.faculty//выборка данных по таблице ФАКУЛЬТЕТЫ

                      select faclt;

   facultyBindingSource.DataSource = queryfaculty;//добавляем в источник данных FACULTY полученную выборку

 

   foreach (var fgh in queryfaculty)

   {

        //добляем каждую имеющуся в БД запись в коллекцию

        textBoxFaculty.AutoCompleteCustomSource.Add(fgh.faculty_name);

   }

 

   var querygroups = from groups_f in ClassHotEnt.ht.group_facultets//выборка данных по таблице ГРУППЫ

                     select groups_f;

   group_facultetsBindingSource.DataSource = querygroups;//добавляем в источник данных GROUP_FACULTETS полученную выборку

           

   foreach (var grt in querygroups)

   {

      //добляем каждую имеющуся в БД запись в коллекцию

      textBoxGroups.AutoCompleteCustomSource.Add(grt.name_group_fac);

   }

}

 

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

Алгоритм выбора фотографии достаточно прост:

double mh, mw; //Коэффициенты масштабирования

pictureBox1.Visible = false;

pictureBox1.Left = pbX; //Положение по Х

pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize; //Авторазмер

pictureBox1.Image = new Bitmap(aPath + "/" + listBox1.SelectedItem.ToString());

           

path_im = aPath + "/" + listBox1.SelectedItem.ToString();//запоминаем путь

 

if ((pictureBox1.Image.Width > pbw) || (pictureBox1.Image.Height < pbh))

{

   pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; //Растянуть картинку

   mh = (double)pbh / (double)pictureBox1.Image.Height; //Размер объекта / размер кртинки

   mw = (double)pbw / (double)pictureBox1.Image.Width;

   if (mh < mw)

   {

       pictureBox1.Width = Convert.ToInt16(pictureBox1.Image.Width * mh);

       pictureBox1.Height = pbh;

   }

   else

   {

       pictureBox1.Height = Convert.ToInt16(pictureBox1.Image.Width * mh);

       pictureBox1.Width = pbw;

   }

}

pictureBox1.Left = pbX + (pbw - pictureBox1.Width) / 2;

pictureBox1.Top = pbY + (pbh - pictureBox1.Height) / 2;

pictureBox1.Visible = true;

Где переменные размера элемента управление и начальный путь к изображениям описывается отдельно в текстовом кодовом пространстве формы:

// запомнить размер и положение pictureBox1

pbh = pictureBox1.Height;

pbw = pictureBox1.Width;

pbX = pictureBox1.Location.X;

pbY = pictureBox1.Location.Y;

 

// элементы listBox сортируются в алфавитном порядке

listBox1.Sorted = true;

 

DirectoryInfo di; // каталог

di = new DirectoryInfo(Environment.GetFolderPath

         (Environment.SpecialFolder.MyPictures));// получить имя каталога "Мои рисунки"

aPath = di.FullName;

label1.Text = aPath;

 

// сформировать список иллюстраций

FillListBox(aPath);

Пример кода добавления мероприятий и дела приведены в конце дипломной работы в разделе приложения.

Следующий мы рассмотрим алгоритм вывода названий в основных таблицах вместо значений внешних ключей:

public void GRID_insert(List<int> column_fac, List<int> column_gr, List<int> column_sx, students[] sg)

{

  int t = 0;

  for (int j = 0; j < sg.Length; j++)

  {

    dataGridView1.Rows[t].Cells[0].Value = sg[j].fio_students;

    dataGridView1.Rows[t].Cells[4].Value = sg[j].dateBurn;

    dataGridView1.Rows[t].Cells[5].Value = sg[j].age_student;

    for (int i = 0; i < column_fac.Count; i++)

    {

      if (column_fac[i] == sg[j].faculty_names)

      {

         dataGridView1.Rows[t].Cells[1].Value = sg[j].faculty.faculty_name;

      }

    }

 

    for (int i = 0; i < column_gr.Count; i++)

    {

      if (column_gr[i] == sg[j].groups_students)

      {

      dataGridView1.Rows[t].Cells[2].Value = g[j].group_facultets.name_group_fac;

      }

    }

    for (int i = 0; i < column_sx.Count; i++)

    {

       if (column_sx[i] == sg[j].sex_studnts)

       {

          dataGridView1.Rows[t].Cells[3].Value = sg[j].sex.name_sex;

       }

    }

    t++;

    }

}

 

Параметрами функции служат списки, содержащие значения ключей связанных таблиц с таблицей «студенты»  и массив типа «класс-студенты».

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

Заметим, что при вызове функции мы произведённую выборку с основным источником БД, предварительно разбив её на массив, добавляем как параметр.

students[] s_massiv = queryliststudent.ToArray();

GRID_insert(FAC, fgr, fsx, s_massiv);

 

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

var queryfindstudent = from findst in ClassHotEnt.ht.students

                       where findst.fio_students == textBoxNameStudent.Text

                       select findst;//поиск студента

           

dataGridView1.Rows.Clear();//очищаем таблицу в форме

GRID_insert(FAC, fgr, fsx, queryfindstudent.ToArray());//произодим добавление на основе выборки

 

foreach (var fs in queryfindstudent)

{

   //проверяем через перебор элементов имеется ли студент в списке

   if (fs.fio_students == textBoxNameStudent.Text)

   {

      //если есть, то выводим хранщееся в записи фотографию

      pictureBox1.ImageLocation = fs.foto_student;

   }

}

 

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

if (radioButton1.Checked == true)//сортировать по инициалам

{

    var querysortname = from sname in ClassHotEnt.ht.students

                        orderby sname.fio_students ascending

                        select sname;             

              

    GRID_insert(FAC, fgr, fsx, querysortname.ToArray());

}

if (radioButton2.Checked == true)//сортировать по половому признаку

{

    var querysortsex = from ssex in ClassHotEnt.ht.students

                            orderby ssex.sex.name_sex ascending

                            select ssex;               

              

    GRID_insert(FAC, fgr, fsx, querysortsex.ToArray());

}

if (radioButton3.Checked == true)//сортировать по возрастному критерию

{

    var querysortage = from sage in ClassHotEnt.ht.students

                            orderby sage.age_student ascending

                            select sage;                              

    GRID_insert(FAC, fgr, fsx, querysortage.ToArray());

}

if (radioButton4.Checked == true)//сортировать студентов по факультетам

{

    var querysortfacultet = from sfacultet in ClassHotEnt.ht.students

                            orderby sfacultet.faculty.faculty_name ascending

                            select sfacultet;              

               

    GRID_insert(FAC, fgr, fsx, querysortfacultet.ToArray());

}

if (radioButton5.Checked == true)//сортировать студентов по группам

{

    var querysortgroup = from sgroup in ClassHotEnt.ht.students

                              orderby sgroup.group_facultets.name_group_fac 

    ascending

                              select sgroup;               

               

    GRID_insert(FAC, fgr, fsx, querysortgroup.ToArray());

}

 

 

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

Queue<int> queueHigh = new Queue<int>();//Очередь с высоким приоритетом

Queue<int> queueMedium = new Queue<int>();//Очередь со средним приоритетом

Queue<int> queueLow = new Queue<int>();//Очередь с низким приоритетом

 

public void Enqueue(int element, int prioritet)

{

   switch (prioritet)

   {

      case 1: queueHigh.Enqueue(element); break;

      case 2: queueMedium.Enqueue(element); break;

      case 3: queueLow.Enqueue(element); break;

      default: throw new ArgumentOutOfRangeException

               (element.ToString(), "Неверный приоритет");

    }

}

 

 

//извлечение Т из очереди с наивысшим приоритетом

public int Dequeue()

{

   Queue<int> queueTop = TopQueue(); //просматриваем очередь с наивысшим приоритетом

 

   if (queueTop != null && queueTop.Count > 0) //очередь не пуста

   {

      return queueTop.Dequeue(); //возвращаем первый элемент

   }

   //если все очереди пусты, возвращаем null

 

   return default(int);

}

 

//непустая очередь с наивысшим приоритетом

private Queue<int> TopQueue()

{

  if (queueHigh.Count > 0) { return queueHigh; } //очередь с высоким приоритетом пуста

  if (queueMedium.Count > 0) { return queueMedium; }//очередь со средним приоритетом пуста

  if (queueLow.Count > 0) { return queueLow; }//очередь с низким приоритетом пуста

  return queueLow; //??? все очереди пусты

}

 

Далее следует перейти ко второму этапу алгоритму планирования – заключительной части. Используя вычисленные значения об интервалах промежутков времени,  а также имея входные данные о делах, которые нужно спланировать, мы реализуем напишем следующий код:

 

plan plan2 = new plan();

//если максимальное рабочее время не меньше часа, то производим организацию дел

if ((GlobalCorrectClass.t_max_work_2 < TimeSpan.Parse("01:00")) == false)

{

    do

    {

        for (int i = 0; i < sgh.Length - 1; i++)

        {

            if (sgh[i][0] == Dequeue().ToString())

            {              

               plan2.name_delo = sgh[i][1];//название

               plan2.type_delo = Convert.ToInt32(sgh[i][2]);//тип

               plan2.priority_delo = Convert.ToInt32(sgh[i][3]);//приоритет

               plan2.time_work = TimeSpan.Parse(sgh[i][4]);//время работы

               plan2.pair_delo = Convert.ToInt32(sgh[i][5]);//мероприятие

               plan2.date_finish = Convert.ToDateTime(sgh[i][6] + " " + sgh[i][7]);//дата сдачи

               //добавление рабочего времени для выполнения дел

               t_work_2 += plan2.time_work;

               ClassHotEnt.ht.plan.AddObject(plan2);//добавление объекта

               ClassHotEnt.ht.SaveChanges();//сохранение изменений

             }

        }

    }//пока рабочее время не станет равным максимальному рабочему времени плана2

    while (t_work_2 < GlobalCorrectClass.t_max_work_2);

}

 

Все алгоритмы пилотного проекта реализованы. Теперь необходимо протестировать информационную систему тайм-менеджмента студента.

 

3.4 Тестирование системы тайм-менеджмента

 

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

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

Покажем тестирование методом «чёрного ящика»  в виде таблицы последовательных шагов работы информационной системы:

 

 

 

Таблица 1 – Тестирование информационной системы

Вид тестирования

Реакция на правильный ввод

Реакция на ошибки

1

Ввод логина и пароля

Активация кнопки «авторизоваться»

Текстовое замечание на неверный ввод логина и пароля

2

Заполнение анкеты. Выбор факультета и группы

Отображение имеющегося списка данных

Сохранение в БД нового факультета или группы

3

Ввод нового логина и пароля

Выделение зелёным цветом текст

Выделение красным цветом текст

4

Выбор фотографии

Отображение искомого изображения

При отображении фотографии в высоком расширении сжимается картинка

5

Регистрация пользователя

Сохранение в БД

Ошибка добавления при повторном вводе нового студента

6

Авторизация нового пользователя

Вывод фотографии, сообщение подтверждения пользователя,  кнопка авторизации становится активной

Вывод сообщения о неверном вводе логина или пароля

7

Переход в главное окно

Вывод фотографии студента и его инициалов, пустые таблицы планов

Выдача сообщения ошибки в неправильной авторизации студента

8

Переход в окно добавления мероприятия

Вывод формы

Отсутствует

9

Ввод данных

Вывод строки синим цветом о происходящем процессе

Сохранение новых записей

 

Продолжение таблицы 1

Вид тестирования

Реакция на правильный ввод

Реакция на ошибки

10

Добавление мероприятия

Вывод сообщения об успешном добавлении

Сообщение:  мероприятие уже имеется в БД

11

Переход в окно добавления дела

Вывод заполненной таблицы мероприятий

Вывод формы с пустой таблицей

12

Ввод данных

Выпадающий список типов заданий, выделение искомого мероприятия в таблице

Ошибка: поля не заполнены

13

Добавление дела

Вывод вычисленных значений времени работы задания и типа приоритета

Ошибка в добавлении неверных данных

14

Возврат на главную форму системы

Разрешение организации

плана дел становятся доступным пользователю

Отказ в выполнении операции организации плана

15

Планирование дел

Занесение в таблице дел, вывод времени на форму и текущего дела в текстовые поля в правой части окна. Активация функций сортировки и удаления текущего дела из списка

Вывод пустых таблиц вследствие отсутствия  добавленных дел, отвечающего за сохранения дел

16

Удаление выполненного дела

Удаление из таблицы текущего задания и восстановление организации

Сообщение о неверном указании дела

17

Просмотр анкеты активного студента

Вывод данных пользователя, блокирование регистрации

Отсутствует

18

Просмотр списка зарегистрированных студентов

Заполненная таблица массивом зарегистрированных пользователей

Пустая таблица, если пользователь не зарегистрирован

19

Поиск студента

Вывод одной записи, соответствующей искомому человеку

Ошибка из-за не корректного ввода текста

20

Сортировка по критериям

Сортировка массива по соответствующим критериям

Отсутствует

Выводы по третьей главы

В результате проектирования было:

  • рассмотрены средства разработки приложения;
  • выбрана система управления базами данных;
  • реализована логическая и физическая модель данных;
  • спроектирована объектно-реляционная модель;
  • разработан пользовательский интерфейс системы тайм-менеджмента студента;
  • спроектирован и реализован алгоритм работы программы;
  • проведён анализ работы алгоритмы;
  • выполнено тестирование методом «чёрного ящика».

 

Заключение

На основе проведенённого анализи абыл выбран метод такой то для оценки времнеи р

Навоснове такого то алгоритма была разработана система тай мнеедмжемнта

 

Список используемых источников

 

1 Петцолд Ч. Программирование для Microsoft Windows на C#. 2 тома. Пер. с англ. – М.: Издательско-торговый дом «Русская Редакция», 2002. – 576 стр.

2 Купцевич, Ю. Е.  Альманах программиста, том 4. Безопасность в Microsoft .NET — М.: Издательско-торговый дом «Русская Редакция», 2004. – 304 стр.

3 Джозеф С. LINQ: язык интегрированных запросов в C# 2008 для профессионалов. Пер. с англ. – М.: ООО «И.Д. Вильямс», 2008. – 560 стр.

4 Албахари, Дж. LINQ. Карманный справочник: Пер. с англ. / Дж. Албахари, Б. Албахари. – СПб.: БХВ-Петербург, 2009. – 240 стр.

5 Троелсен, Э. С# и платформа .NET. Библиотека программиста. – СПб.: Петербург, 2004. – 796 стр.

6 Стефан, Р. С# 2005 для «Чайников». Пер. с англ. / Дэвис, Стефан Рэнди, Сфер, Чак. – М.: ООО «И.Д. Вильямс», 2008. – 576 стр.

7 Постолит, А. В. Visual Studio .NET: разработка приложений баз данных. – СПБ.: БХС-Петербург, 2003. – 544 стр.

8 Гамильтон, Б. ADO.NET Сборник рецептов. Для профессионалов. –СПб.: Петербург, 2005. – 576 стр.

9 Сидорова, Н. А. Тайм-менеджмент. / Н. А. Сидорова, Е. Б. Анисинкова. – М.: Издательско-торговая корпорация «Дашков и К0», 2008. – 220 стр.

10 Лимончелли Т. Тайм-менеджмент для системных администраторов. – Пер. с англ. – СПб: Символ-Плюс, 2007. – 240 стр.

11 Сеппа Д. Microsoft ADO.NET. Пер. с англ. – М.: Издательско-торговый дом «Русская Редакция», 2003. – 640 стр.

12 Кузнецов, М. В. Самоучитель MySQL 5 / М. В. Кузнецов, И. В. Симдянов. – СПб.:БХВ-Петербург, 2007. – 560 стр.

 

Приложение А

 

Рисунок 21 – ER-диаграмма базы данных

 

Приложение Б

 

Рисунок 22 – Объектно-реляционная модель данных

 

Приложение В

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Security.Cryptography;

 

static string GetHashString(string s)//функция для шифрования строки по MD5

{

   //переводим строку в байт-массив

   byte[] bytes = Encoding.Unicode.GetBytes(s);

 

   //создаём объект для получения средств шифрования

   MD5CryptoServiceProvider CSP = new MD5CryptoServiceProvider();

 

 *****************ОЗНАКОМИТЕЛЬНАЯ ЧАСТЬ******************

  

 par.types_pair = typespairBindingSource.Current as types_pair;//добавляем тип мероприятия

 par.day_week = dayweekBindingSource.Current as day_week;//добавляем день недели

 par.number_pair_table = numberpairtableBindingSource.Current as

                    number_pair_table;//добавляем номер пары

 

 if (radioButton1.Checked == true) { par.week = 1; }//верхняя неделя

 if (radioButton2.Checked == true) { par.week = 2; }//нижняя неделя

 

 string[] startTimeS = {"08:00","09:40","11:20","13:00","14:40","16:20",

                                          "18:00","19:00","20:35"};//массив времени начала меропориятий

 string[] startTimeF = { "09:30", "11:10", "12:50", "14:30", "16:10", "17:50",

                                          "19:30", "20:25", "22:00"};//массив времени окончания мероприятий

 textBoxTimeS.Text = startTimeS[Convert.ToInt32(comboBoxNumberPair.Text) - 1];//выводим в текстовое поле время начала по номеру пары

 textBoxTimeF.Text = startTimeF[Convert.ToInt32(comboBoxNumberPair.Text) - 1];//выводим в текстовое поле время окончания по номеру пары

 

 par.beginning_time = TimeSpan.Parse(textBoxTimeS.Text);//добавляем из текстового поля время начала мероприятия

 par.finish_time = TimeSpan.Parse(textBoxTimeF.Text);//добавляем из текстового поля время окончания мероприятия

 

 ClassHotEnt.ht.pair.AddObject(par);//добавляем новое мероприятие

 ClassHotEnt.ht.SaveChanges();//сохраняем изменения

 

 label10.Text = "Мероприятие добавлено  в список";//изменяем текстовый указатель

 label10.ForeColor = Color.Green;//выделяем текстовый указатель

 

 Скачать: diplomnaya-na-pechat.rar

Категория: Дипломные работы / Дипломные работы по компьютерам

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.