Разработка модуля электронного портала "Электронный журнал"

Разработка концептуальной модели базы данных. Реализация алгоритмов и разработка управляющей программы. Разработка структуры системы управления данными. Методика проведения и результаты тестирования. Функционирование разработанного программного модуля.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 08.06.2023
Размер файла 550,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

программный модуль алгоритм программа

Введение

1. Теоретическая часть

1.1 Общие сведения

1.2 Разработка концептуальной модели базы данных

2. Реализация алгоритмов и разработка управляющей программы

2.1 Выбор языка программирования

2.2 Создание базы данных в СУБД MySQL

2.3 Разработка системы управления данными

2.4 Разработка структуры системы управления данными

2.5 Разработка пользовательского интерфейса

2.6 Виды контроля качества, разрабатываемого ПО

2.7 Методика проведения и результаты тестирования

2.8 Анализ функционирования разработанного программного модуля

Заключение

Библиографический список

Приложение A Схема программы

Приложение Б Код программы

Введение

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

Назначение программы - отразить основы работы с базами данных на примере такой предметной области как “Электронный журнал”.

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

1) aнализ предметной области;

2) создание базы данных в СУБД MySQL;

3) разработка системы и структуры управления данными;

4) создание графического интерфейса.

Задачами данной курсовой работы являются: закрепление, углубление и обобщение знаний, полученных в ходе обучения и применение этих знаний к решению практических задач; получение навыков работы со справочной литературой и ГОСТами; развитие навыков для модификации.

1. Теоретическая часть

1.1 Общие сведения

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

C ростом компьютеризации населения и улучшения средств связи, а также благодаря доступности, электронные журналы играют всё более важную роль в жизни общества как средства для получения необходимой информации в структурированном виде. Наличие подписки (subscription, RSS) на новые статьи является дополнительной функцией современных электронных журналов. Другая дополнительная функция некоторых электронных журналов (например, J. USC) -- это наличие интернет-страницы, параллельной статье, на которой читатели обсуждают и делятся мнениями о данной публикации.

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

1) параллельные электронные журналы -- электронные версии традиционных печатных изданий. Печатная и электронная версии -- идентичны;

2) интегрированные электронные журналы -- издаются в двух видах, которые дополняют друг друга;

3) оригинальные электронные журналы -- издаются только в электронном виде.

Сходными по назначению с электронными журналами -- своевременное информирование о новых научных статьях подписчиков-учёных и обеспечение доступа к текстам -- являются архивы электронных препринтов научных статей, например ArXiv.org. Главное различие в том, что в электронных журналах статьи проходят рецензирование, что обычно положительно сказывается на их качестве.

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

1.2 Разработка концептуальной модели базы данных

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

Тема (Theme):

Эта сущность отводится для хранения информации обо всех темах электронного журнала.

Атрибуты: Id - индивидуальный идентификатор сущности, Name - название темы.

Статья (Article):

Эта сущность хранит информацию о всех статьях.

Атрибуты: Id - индивидуальный идентификатор сущности, Text - текст статьи, Date - дата добавления статьи, IsAllow - разрешение на публикацию, Id_Client-вторичный ключ, определяющий связь между сущностями: статья и клиент, Id_Theme-вторичный ключ, определяющий связь между сущностями: тема и статья.

Настройки доступа (AdminSettings):

Эта сущность хранит информацию о настройках доступа каждого клиента.

Атрибуты: Id - индивидуальный идентификатор сущности, AllowThemeAll - доступ к работе с темами, AllowArticleAll - доступ к работе с статьями, Id_Client-вторичный ключ, определяющий связь между сущностями: настройки доступа и клиент.

Клиент (Client):

Эта сущность отводится для хранения информации о зарегистрированных посетителях, пользующихся программой (Рисунок 1).

Атрибуты: Id - индивидуальный идентификатор сущности, Login - имя пользователя, Password - пароль, IsAdmin - значение, указывающее на то является ли пользователь админом.

Рисунок 1 Концептуальная модель базы данных

2. Реализация алгоритмов и разработка управляющей программы

2.1 Выбор языка программирования

Язык программирования C# - это простой и многофункциональный язык. В нем собраны все достоинства разных языков. Быстродействие выполнения приближается к языку Assembler. Язык С# имеет 300 000 библиотек разных функций, которые работают с максимальным быстродействием. Язык C# разрабатывался как основной язык разработки приложений для платформы Microsoft.NET. Технология.NET представляет собой новую платформу, новый API для программирования в Windows, а С# - новый язык, созданный с нуля для работы с этой платформой, а также для извлечения всех выгод из прогресса сред разработки и нашего понимания принципов объектно-ориентированного программирования в течение последних 20 лет. С# и.NET позволяют разработчику легко создавать современные программные продукты.

Особенности С#:

1) полный и хорошо определенный набор основных типов;

2) встроенная поддержка автоматической генерации XML-документации;

3) полный доступ к библиотеке базовых классов.NET;

4) возможность использования С# для написания динамических web страниц ASP.NET.

Была выбрана среда Microsoft Visual Studio. В ней существует использование объектов в области интерфейса, что облегчит работу программиста, то есть Microsoft Visual Studio позволяет визуально создавать интерфейс программы, используя большую библиотеку стандартных классов (компонент). Основным достоинством данной среды, является то, что основные функции по взаимодействию с операционной системой она берет на себя, а обработку сообщений операционной системы она заменяет обработкой событий, что существенно упрощает разработку программного продукта.

2.2 Создание базы данных в СУБД MySQL

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

Атрибуты сущности Article:

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

Text - тип данных Text, не имеет параметров.

Date - тип данных Date, не имеет параметров.

Id_Client - тип данных int с длинной в 10 цифр, имеет установленный параметр Unsign.

Id_Theme- тип данных int с длинной в 10 цифр, имеет установленный параметр Unsign.

IsAllow - тип данных bit с фиксированной длинной в 1 символ, не имеет параметров.

Атрибуты сущности Theme:

Id - тип данных int с длинной в 10 цифр, имеет установленный параметр Unsign и Auto_Increment.

Name - тип данных varchar с длинной в 200 символов, не имеет параметров.

Атрибуты сущности Client:

Id - тип данных int с длинной в 10 цифр, имеет установленный параметр Unsign.

Login - тип данных varchar с длинной в 50 символов, не имеет параметров.

Password - тип данных varchar с длинной в 50 символов, не имеет параметров.

IsAdmin - тип данных bit с фиксированной длинной в 1 символ, не имеет параметров.

Атрибуты сущности AdminSettings:

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

AllowThemeAll - тип данных bit с фиксированной длинной в 1 символ, не имеет параметров.

AllowArticleAll - тип данных bit с фиксированной длинной в 1 символ, не имеет параметров.

Id_Client - тип данных int с длинной в 10 цифр, имеет установленный параметр Unsign.

2.3 Разработка системы управления данными

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

Рисунок 2 Функциональная схема работы программы

2.4 Разработка структуры системы управления данными

Основным классом для взаимодействия с базой данных будет является абстрактный класс «DataBaseModel». В данном классе будут описаны общие методы, которые впоследствии будут использоваться другими адаптерами данных. Примеры таких методов: выполнение запроса к базе данных, метод для поиска строки в таблице по уникальному идентификатору.

В классе «MySQLDataAdapter» определено поле MySqlConnection _sqlConnection, которое инициализирует строку подключения к базе данных в MySQL. А также содержит следующие методы:

1. LoadPages () - метод который обращается к базе данных и возвращает все строки сущности “страница” в виде списка (List<Pages>).

Реализация:

public static List<Page> LoadPages()

{

string q = "select * from `page`;";

List<Dictionary<string, string>> result = DataAdapter.GetQueryResult(q);

List<Page> pages = new List<Page>();

foreach (Dictionary<string, string> g in result)

{

Page page = new Page(Convert.ToInt32(g["Id"]), DataAdapter, Convert.ToString(g["Name"]));

pages.Add(page);

}

return pages;

}

Листинг 1 - метод возврата всех строк сущности “страница”

2. LoadArticles () - метод который обращается к базе данных и возвращает все строки сущности “статья” в виде списка (List<Article>).

Реализация:

public static List<Article> LoadArticles()

{

string q = "select * from `article`;";

List<Dictionary<string, string>> result = DataAdapter.GetQueryResult(q);

List<Article> articles = new List<Article>();

foreach (Dictionary<string, string> g in result)

{

Theme theme = LoadTheme(Convert.ToInt32(g["Id_Theme"]));

Article article = new Article(Convert.ToInt32(g["Id"]), DataAdapter, Convert.ToString(g["Text"]), Convert.ToDateTime(g["Date"]),

theme, Helper.ConvertBitToBool(Convert.ToInt32(g["IsAllow"])), GetClient(Convert.ToInt32(g["Id_Client"])));

articles.Add(article);

}

return articles;

}

Листинг 2 - метод для возврата всех строк сущности “статья”

3. DataBaseModel () - конструктор класса.

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

Метод авторизации клиента:

public static bool Authorization(string login, string password)

{

List<Client> clients = Clients.FindAll(s => s.Login == login && s.Password == password);

if (clients.Count >= 1)

{

return true;

}

return false;

}

Листинг 3 - метод авторизации клиента

Метод регистрации клиента:

public bool Registration()

{

if (DataModel.CheckLoginOnCoincidence(Login) == true)

{

throw new Exception("Такой логин уже существует!");

}

Id = Add();

return true;

}

Листинг 4 - метод регистрации клиента

Необходимо создать модель данных для хранения информации, полученной из базы данных. Для хранения данных были созданы следующие классы (Рисунок 3).

1) Article - описывает сущность “статья”;

2) ConnectionSettings - описывает совокупность настроек при подключении к серверу;

3) Theme - описывает сущность “тема”.

Рисунок 3 Иерархия классов

2.5 Разработка пользовательского интерфейса

Пользовательский интерфейс представляет собой важную часть любой программы. Именно от пользовательского интерфейса зависит восприятие программы. Был разработан следующий вариант пользовательского интерфейса (Рисунок 3, 4, 5, 6).

Рисунок 3 Окно подключения к серверу

Рисунок 4 Окно регистрации и авторизации

Рисунок 5 Административный интерфейс

Рисунок 6 Гостевой интерфейс

2.6 Виды контроля качества, разрабатываемого ПО

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

Основные принципы организации тестирования:

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

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

3) по тем же соображениям организация - разработчик программного обеспечения не должна "единолично его тестировать (должны существовать организации, специализирующиеся на тестировании программных средств);

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

5) необходимо тщательно подбирать тест не только для правильных (предусмотренных) входных данных, но и для неправильных (непредусмотренных);

6) следует сохранять использованные тесты (для повышения эффективности повторного тестирования программы после ее модификации или установки у заказчика);

7) тестирования не должно планироваться исходя из предположения, что в программе не будут обнаружены ошибки (в частности, следует выделять для тестирования достаточные временные и материальные ресурсы);

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

Процесс тестирования состоит из трех этапов:

1. проектирование тестов.

2. исполнение тестов.

3. анализ полученных результатов.

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

«Чёрный ящик» - тестирование функционального поведения программы с точки зрения внешнего мира (текст программы не используется).

«Белый ящик» - тестирование кода на предмет логики работы программы и корректности её работы с точки зрения компилятора того языка, на котором она писалась.

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

2.7 Методика проведения и результаты тестирования

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

При разработке данной программы были допущены следующие синтаксические ошибки:

1) неправильное использование операторов присваивания;

2) неверное преобразование типов данных.

При тестировании были выполнены следующие принципы:

1) тщательность подбора данных для теста программы, не только для правильных (предусмотренных) входных данных, но и для неправильных (непредусмотренных);

2) доскональное изучение результатов тестирования.

2.8 Анализ функционирования разработанного программного модуля

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

Отладка - это комплексный процесс по выявлению и исправлению дефектов в программном обеспечении. Сами же дефекты, обычно, обнаруживается в процессе тестирования ПО:

Отладка состоит из следующих этапов:

1) воспроизведение дефекта (любым из доступных способов);

2) анализ дефекта (поиск причины возникновения дефекта);

3) дизайн исправления дефекта;

4) кодирование исправления дефекта;

5) интеграция исправления в кодовую базу или целевую систему.

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

Некоторые методы отладки ПО, используемые на данный момент в индустрии:

1) запуск программы из-под отладчика;

2) анализ поведения системы;

3) анализ кода без исполнения программы;

4) выполнения программы (или её части) в другой среде;

5) отладка трансляцией кода.

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

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

Для устранения данной ошибки был создан метод CheckLoginOnCoincidence в статическом классе DataModel.

Реализация данного метода:

public static bool CheckLoginOnCoincidence(string login)

{

string q = "select * from `client`;";

List<Dictionary<string, string>> result = DataAdapter.GetQueryResult(q);

foreach (Dictionary<string, string> g in result)

{

if (Convert.ToString(g["Login"]) == login)

{

return true;

}

}

return false;

}

Листинг 5 - метод проверки наличия логина в базе данных

Заключение

Целью данной курсовой работы являлось создание приложения “Электронный журнал”.

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

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

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

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

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

Библиографический список

1. Троелсен Э. Язык программирования C# 2010 и платформа.NET 4. Изд.: Вильямс, 2011. 1392 с.

2. Нейгел К., Ивьен Б., Глинн Д., Уотсон К., Скиннер М. C# 4.0 и платформа.NET 4 для профессионалов. Изд.: Питер, 2011. 1440 с.

3. Павловская Т.А. C#. Программирование на языке высокого уровня. Изд.: Питер, 2009. 432 с.

4. ГОСТ 2.105-95. ЕСКД. Общие требования к текстовым документам. М.: Изд-во стандартов, 2007. 31 с.

5. Буч Г., Рамбо Д., Якобсон И. Введение в UML от создателей языка. Изд.: ДМК Пресс, 2011. 496 с.

6. Петцольд Ч. Программирование для Microsoft Windows на C#. В 2-ч томах. Том 2./Пер. с англ.-М.:Издательско-торговый дом «Русская Редакция», 2002. 624 с.

7. Павловская, Т. А. C#. Программирование на языке высокого уровня. Изд.: Питер, 2009. 432 с.

8. Прайс, Дж.; Гандэрлой, М. Visual C#.NET. Полное руководство. Изд.: КОРОНА принт, 2004. 960 c.

9. Робинсон, С.; Корнес, О.; Глинн, Д. и др. C# для профессионалов. Изд.: Лори, 2005. 396 c.

10. Пышкин Е.В. Основные концепции и механизмы объектно- ориентированного программирования: Учебник для вузов. 2-е изд. Изд.: БХВ-Петербург, 2005. 640 с.

11. ГОСТ Р 7.0.5-2008. Библиографическая ссылка. Общие требования и правила составления. М.: Стандартинформ, 2008. 20 с.

12. ГОСТ 2.105-95. ЕСКД. Общие требования к текстовым документам. М.: Изд-во стандартов, 2007. 31 с.

13. Бен Албахари Б. А C# 7.0. Справочник. Полное описание языка. 7-е издание / Б. А Бен Албахари. O'Reilly Media: O'Reilly Media, 2018. 1089 с.

14. Шарп Д. Microsoft Visual C#. Подробное руководство / Д. Шарп. Санкт-Петербург: ЗАО Издательский дом «Питер»,, 2017. 848 с. ISBN 978-5-496-02372-6.

15. Бармина А. А. Программирование на языке высокого уровня: методические указание к выполнению работ на языке C# / А. А. Бармина, К. В. Вальштейн. Санкт-Петербург: Балт. гос. техн. ун-т., 2021. 100 с.

16. C# / С. Робинсон, О. Корнес, Г. Джей, Б. Харвей. Москва: Лори, 2021. 1002 с. ISBN 978-5-85582-417-9.

17. Александров И.Л. Программирование на C# / И.Л. Александров, И.Л. Тумаков. Казань: Издание 2-ое, исправленное и дополненное, 2017. 112 с.

18. Александров И.Л. Программирование на C# / И.Л. Александров, И.Л. Тумаков. Казань: Издание 2-ое, исправленное и дополненное, 2017. 112 с.

19. Албахари Д. C# 7.0. Карманный справочник / Д. Албахари, Б. Албахари. Москва: Вильямс, 2017. 224 с.

20. Скит Д. С. C# для профессионалов. Тонкости программирования / Д. С. Скит. Санкт-Петербург: Вильямс, 2019. 608 с.

21. Климов А. П. C#. Советы программистам / А. П. Климов, В. И. Чистякова. Санкт-Петербург: БХВ-Петербург, 2018. 544 с.

22. Шилдт Г. C#: полное руководство / Г. Шилдт. Москва: Юрайт, 2018. 1056 с.

23. Фленов М Библия C# / М Фленов. Воронеж: ВНУ, 2022. 464 с.

24. Архангельский А. Программирование в C# / А. Архангельский. Москва: Бином, 2019. 536 с.

25. Дейтел П. Как программировать на Visual C# / П. Дейтел. Москва: Питер, 2016. 316 с.

26. Троелсен Э. Язык программирования C# 7 и платформы.NET и.NET Core / Э. Троелсен, Д. Филипп. Москва: Вильямс, 2018. 1330 с.

27. Мюллер Д. П. C# для чайников / Д. П. Мюллер, Б. Семпф, Ч. Сфер. Москва: Диалектика-Вильямс, 2019. 608 c.

Приложение А Схема программы

Приложение Б Код программы

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ElectronicJournal.Model

{

public class Theme: DataBase

{

public string Name { get; set; }

public Theme(long? id, IDataAdapter dataAdapter, string name): base(id, dataAdapter)

{

Name = name;

}

public Theme(string name)

{

Name = name;

}

public Theme()

{ }

public override long Add()

{

long? id = DataModel.DataAdapter.InsertRow("theme", new Dictionary<string, object>()

{ { "Name", Name } });

DataModel.Themes.Add(new Theme(id, DataModel.DataAdapter, Name));

return (long)id;

}

public override void Remove()

{

DataModel.DataAdapter.DeleteRow("theme", Id.Value);

DataModel.Themes.Remove(this);

}

public override void Update()

{

DataModel.DataAdapter.UpdateRow("theme", Id.Value, new Dictionary<string, object>()

{ { "Name", Name } });

}

}

}

sing System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ElectronicJournal.Model

{

public class Article: DataBase

{

public string Text { get; set; }

public DateTime Date { get; set; }

public Theme Theme { get; set; }

public Client Client { get; set; }

public bool? IsAllow { get; set; }

public Article(long? id, IDataAdapter dataAdapter, string text, DateTime date, Theme section, bool? isAllow, Client client): base(id, dataAdapter)

{

Text = text;

Date = date;

Theme = section;

IsAllow = isAllow;

Client = client;

}

public Article(string name, DateTime date, Theme section, bool? isAllow, Client client)

{

Text = name;

Date = date;

Theme = section;

IsAllow = isAllow;

Client = client;

}

public Article()

{ }

public override long Add()

{

long? id = DataModel.DataAdapter.InsertRow("article", new Dictionary<string, object>()

{ { "Text", Text }, { "Date", Date.ToString("yyyy-MM-dd") }, { "Id_Theme", Theme.Id }, { "IsAllow", Helper.ConvertBoolToBit(IsAllow) }, { "Id_Client", Client.Id } });

DataModel.Articles.Add(new Article(id, DataModel.DataAdapter, Text, Date, Theme, IsAllow, Client));

return (long)id;

}

public override void Remove()

{

DataModel.DataAdapter.DeleteRow("article", Id.Value);

DataModel.Articles.Remove(this);

}

public override void Update()

{

DataModel.DataAdapter.UpdateRow("article", Id.Value, new Dictionary<string, object>()

{ { "Text", Text }, { "Date", Date.ToString("yyyy-MM-dd") }, { "Id_Theme", Theme.Id }, { "IsAllow", Helper.ConvertBoolToBit(IsAllow) }, { "Id_Client", Client.Id } });

}

}

}

sing System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ElectronicJournal.Model

{

public class AdminSettings: DataBase

{

public bool? AllowThemeAll { get; set; }

public bool? AllowArticleAll { get; set; }

public Client Client { get; set; }

public AdminSettings(long? id, IDataAdapter dataAdapter, bool? allowThemeAll, bool? allowArticleAll, Client client): base(id, dataAdapter)

{

AllowThemeAll = allowThemeAll;

AllowArticleAll = allowArticleAll;

Client = client;

}

public AdminSettings(bool? allowThemeAll, bool? allowArticleAll, Client client)

{

AllowThemeAll = allowThemeAll;

AllowArticleAll = allowArticleAll;

Client = client;

}

public AdminSettings()

{ }

public override long Add()

{

long? id = DataModel.DataAdapter.InsertRow("adminsettings", new Dictionary<string, object>()

{ { "AllowThemeAll", Helper.ConvertBoolToBit(AllowThemeAll) }, { "AllowArticleAll", Helper.ConvertBoolToBit(AllowArticleAll) }, { "Id_Client", Client.Id }

});

DataModel.AdminSettings.Add(new AdminSettings(id, DataModel.DataAdapter, AllowThemeAll, AllowArticleAll, Client));

return (long)id;

}

public override void Remove()

{

DataModel.DataAdapter.DeleteRow("adminsettings", Id.Value);

DataModel.AdminSettings.Remove(this);

}

public override void Update()

{

DataModel.DataAdapter.UpdateRow("adminsettings", Id.Value, new Dictionary<string, object>()

{ { "AllowThemeAll", Helper.ConvertBoolToBit(AllowThemeAll) }, { "AllowArticleAll", Helper.ConvertBoolToBit(AllowArticleAll) }, { "Id_Client", Client.Id } });

}

}

}

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ElectronicJournal.Model

{

public class Client: DataBase

{

public string Login { get; set; }

public string Password { get; set; }

public bool? IsAdmin { get; set; }

public Client(long? id, IDataAdapter dataAdapter, string login, string password, bool? isAdmin): base(id, dataAdapter)

{

Login = login;

Password = password;

IsAdmin = isAdmin;

}

public Client(string login, string password, bool? isAdmin)

{

Login = login;

Password = password;

IsAdmin = isAdmin;

}

public Client()

{ }

public override long Add()

{

int isAdmin;

if (IsAdmin == true)

{

isAdmin = 1;

}

else

{

isAdmin = 0;

}

long? id = DataModel.DataAdapter.InsertRow("client", new Dictionary<string, object>()

{ { "Login", Login }, { "Password", Password }, { "IsAdmin", isAdmin } });

DataModel.Clients.Add(new Client(id, DataModel.DataAdapter, Login, Password, IsAdmin));

return (long)id;

}

public override void Remove()

{

DataModel.DataAdapter.DeleteRow("client", Id.Value);

DataModel.Clients.Remove(this);

}

public override void Update()

{

int isAdmin;

if (IsAdmin == true)

{

isAdmin = 1;

}

else

{

isAdmin = 0;

}

DataModel.DataAdapter.UpdateRow("client", Id.Value, new Dictionary<string, object>()

{ { "Login", Login }, { "Password", Password }, { "IsAdmin", isAdmin } });

}

public bool Registration()

{

if (DataModel.CheckLoginOnCoincidence(Login) == true)

{

throw new Exception("Такой логин уже существует!");

}

Id = Add();

return true;

}

}

}

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.