Розробка портальної системи
Зміст
Вступ
. Технічне завдання
. Вибір платформи та
інструментальних засобів розробки
.1 Обґрунтування
вибору операційної системи Windows
.2 Обґрунтування
вибору мови програмування C# та платформи .NET
.3 Обґрунтування
вибору серверної технології ASP.NET
. Вимоги до
апаратного та програмного забезпечення
.1 Вимоги до
апаратного забезпечення
.2 Вимоги до
програмного забезпечення
. Короткий аналіз
аналогічних розробок
. Керівництво
програмісту
.1 Короткий опис
особливостей технології ASP.NET
.2 Опис взаємодії
програмного коду з базою даних
.3 Структура бази
даних
.4. Система
адміністрування порталу
.4.1 Модуль «Новини»
.4.2 Модуль
«Користувачі/відвідувачі порталу»
.4.3 Модуль
«Голосування»
.4.4 Модуль
«Сторінки»
.4.5 Модуль для
обмеження доступу
.5 Клієнтська частина
. Керівництво
користувачу
.1 Клієнтська частина
.2 Система
адміністрування
.2.1 Модуль «Новини»
.2.2 Модуль
«Користувачі/відвідувачі порталу»
.2.3 Модуль
«Голосування»
.2.4 Модуль
«Сторінки»
Висновки
Список літератури
Вступ
Існує чимало способів створення веб-сайтів в мережі Інтернет.
Проте не всі вони можуть бути застосовані користувачами ПК, які не мають знань
щодо HTML, php, mysql та всього іншого, що необхідно для створення повноцінного
динамічного веб-порталу.
Зараз з'явилася безліч безкоштовних хостингів, де можна
розмістити власну веб-сторінку. Але для того, щоби ваш веб-сайт виглядав
професійно, потрібно щось більше, ніж п’ять - десять статичних веб-сторінок.
Рано чи пізно в більшості мешканців Мережі з'являється
бажання створити в Інтернеті власний “живий куточок”. Це може бути що завгодно,
починаючи від невеликої особистої сторінки до фан-сайта улюбленої групи.
Результат залежить від спрямованості сайту та навичок автора. Найпростіший
варіант - створення сайту на основі статичного HTML. Фактично, це набір окремо
підготовлених сторінок з наскрізними посиланнями один на одну. Інструменти для
створення таких сторінок є на будь-якому комп'ютері. Процес не потребує від
творця навіть базового знання тегів HTML. Наприклад, сторінка створюється в MS
Word, і при збереженні файлу обирається варіант Web-сторінка. Таким чином
звичайний текстовий документ, разом із розміткою та картинками, буде
перетворений у файл із розширенням htm (або html). Залишається тільки назвати
першу сторінку index.htm і розмістити матеріали в Інтернет. Однак у цієї
простоти є інша сторона. Оскільки кожна сторінка - це завершений документ, для
внесення будь-яких змін потрібно повністю переробляти сторінки сайту. Якщо
планується дуже часто оновлювати таку сторінку, статичний HTML буде приносити
багато проблем. У таких випадках замість нього використовують спеціальний
програмний движок. Саме розробкою такого сайту ми з вами займемося.
Движок - це програма, що виконується на сервері та призначена
для управління веб-сайтом. Вона створюється задля полегшення роботи з підтримки
сайту та надання відвідувачам додаткових можливостей, наприклад, форум, новини,
блоки опитувань тощо. Розглянемо звичайну ситуацію по розміщенню нової статті
на веб-сайті. Власнику сайту на динамічній портальній системі потрібно тільки
лише зайти в панель управління, ввести текст готової статті у віконце та нажати
кнопку «Розмістити». Погодьтесь, це набагато зручніше, ніж займатися переробкою
сторінок.
Движок можна написати самому, але для цього треба знати спеціальну
мову web-програмування. Це вимагає зусиль і часу, а сайт хочеться створити
прямо зараз! Немає проблем. Для цих цілей існують готові движки. Вони бувають
платні та безкоштовні. Платні коштують від $500 і початківцям не по кишені.
Безкоштовних движків зараз досить багато, і навряд чи варто
зупинятися на кожному з них. Відзначимо тільки найбільш популярні: Mambo,
Joomla, PHP-Nuke, Drupal тощо. Слід відмітити, що серед названих вище движків
Mambo та Joomla досить схожі між собою, це цілком зрозуміло, оскільки, остання
є більш сучасною модифікацією популярної системи управління контентом Mambo.
1.
Технічне завдання
Розробити портальну систему, яка б була корисною багатьом
власникам Інтернет-ресурсів і яку б можна було використовувати для оперативного
управління змістом веб-порталу.
1. Спроектувати структуру модулів системи.
2. Вибрати методи та формати зберігання даних.
. Спроектувати структуру бази даних.
. Реалізувати такі модулі: стрічка новин, електронні
голосування, користувачі порталу, сторінки сайту.
. Розробити модулі для читання інформації з бази даних
та коректного їх відображення на сторінках порталу.
. Реалізувати систему адміністрування веб-порталу.
a. Розробити і реалізувати шаблон сторінки.
b. Написати програмні модулі для додавання, редагування
та видалення даних для кожного модуля.. Надати можливість управління
обліковими записами користувачів порталу та організувати розділення доступу.
7. Організувати зручний інтерфейс.
2.
Вибір платформи та інструментальних засобів розробки
.1
Обґрунтування вибору операційної системи Windows
В якості цільової операційної системи (ОС) обрано сімейство
ОС Microsoft Windows. Даний вибір обумовлено тим, що сьогодні в світі близько
80% персональних комп’ютерів працює під керуваннях тих або інших версій MS
Windows. Така популярність пояснюється зручністю інтерфейсу користувача,
підтримкою різноманітних сучасних технологій, більшості апаратних засобів ПК -
як внутрішніх, так і периферійних, а також багатьма іншими властивостями ОС
сімейства MS Windows.
.2
Обґрунтування вибору мови програмування C# та платформи .NET
Для розробки програмного продукту було обрано мову
програмування Microsoft Visual C#, відповідно, платформу .NET, інтегроване
середовище розробки Microsoft Visual Studio 2005.
Вибір платформи .NET зумовлений рядом переваг:
- вся платформа .NET ґрунтується на єдиній
об’єктно-орієнтованій моделі;
- в склад платформи .NET входить
«збиральник сміття», який звільняє ресурси, що захищає програми від втрат
пам’яті і від необхідності звільняти ресурси;
- будь-яка програма, розроблена з
допомогою .NET є автономною, в тому смислі, що не залежить від інших програм та
від ОС;
- встановлення програми може бути
проведене звичайним копіюванням файлів;
- використання безпечних типів даних,
що підвищує надійність програми та сумісність;
- програма взаємодіє з єдиною моделлю
обробки помилок;
- програми, написані на різних мовах
можуть легко взаємодіяти;
- абсолютно всі помилки оброблюються
механізмом виключних ситуацій, що дозволяє запобігти неоднозначностям, які виникали
інколи при програмуванні під Win32;
- зручний спосіб повторного
використання коду;
- можливість використання C# для
написання динамічних web-сторінок ASP.NET.
- вбудована підтримка автоматичної
генерації XML-документації.
Проте є і деякі недоліки, які не впливають на досягнення
поставлених вимог та остаточного результату:
- швидкість виконання коду менша приблизно на 5%,
порівняно з мовою програмування C++;
- необхідна наявність бібліотеки
FrameWork.
Мова програмування C# найбільше відповідає С# платформі, у
порівнянні з іншими мовами програмування, які входять до складу Visual Studio
2005 (Visual J#, Visual C++, Visual Basic), саме тому її використано для
розробки програмного продукту.
.3
Обґрунтування вибору серверної технології ASP .NET
ASP.NET - це технологія створення веб-додатків і веб-сервісів
від компанії Майкрософт. Вона є складовою частиною платформи Microsoft .NET і
розвитком більш старої технології Microsoft ASP. На даний момент останньою
версією цієї технології є ASP.NET 2.0.повністю перебудувала ASP.NET, порівняно
з технологією ASP, ґрунтуючись на Common Language Runtime (CLR), що є основою
всіх додатків Microsoft .NET. Програмісти можуть писати код для ASP.NET,
використовуючи різні мови програмування, що підтримуються в .NET Framework,
Visual Basic.NET, JScript .NET або C#, а також «відкриті» мови, наприклад, Perl
і Python..NET має перевагу у швидкості в порівнянні з іншими технологіями,
заснованими на скриптах, тому що:
- код на стороні веб-сервера звичайно компілюється в
одну або декілька DLL;
- більшість помилок знаходиться ще на
стадії розробки;
- передбачена можливість обробки
помилок часу виконання, з використанням блоків try..catch;
- користувальницькі елементи керування
(controls) дозволяють виділяти часто використовувані шаблони, такі як меню
сайту;
- розширюваний набір елементів
керування й бібліотек класів дозволяє швидше розробляти додатки;
- ASP.NET опирається на багатомовні
можливості .NET, що дозволяє писати код сторінок на VB.NET, C#, J# і т.д.;
- можливість кешування всієї сторінки
або її частини для збільшення продуктивності;
- можливість поділу візуальної частини
й бізнес-логіки по різних файлах («code behind»).
3.
Вимоги до апаратного та програмного забезпечення
.1
Вимоги до апаратного забезпечення
Мінімальна конфігурація комп’ютера, яка необхідна для роботи
програмного продукту програм буде залежати головним чином від вибору
операційної системи. В системі Windows 2000 для роботи буде достатньою така
конфігурація:
. Процесор: 600 МГц
. Оперативна пам’ять: 128 МБ
. Вільне місце на жорсткому диску: 50 МБ
. Відеосистема: 800 X 600, 256 кольорів
Наведена конфігурація є достатньою для запуску програми.
Розробка портальної системи здійснювалась на комп’ютері з
такою конфігурацією: процесор - Intel Pentium 4 D 3,6 ГГц, оперативна пам'ять -
2 ГБ.
.2
Вимоги до програмного забезпечення
Для встановлення та запуску портальної системи необхідно
встановити такі сервіси та програми:
. ОС Windows 2000/Me/XP/2003.
. Internet Information Services 5
. Платформу .NET 2.0.50727 або новішу
. ASP .NET 2
. SQL Server 2000
4.
Короткий аналіз аналогічних розробок
5. Керівництво програмісту
.1
Короткий опис особливостей технології ASP.NET
Оскільки розроблена «Універсальна портальна система» надає
користувачам можливість написання власних модулів, то необхідно відмітити
основні особливості технології ASP.NET, які в обов’язковому порядку необхідно
знати розробнику модулів портальної системи.
1. ASP.NET інтегрована з .NET Framework
Середовище .NET містить велику колекцію функціональних частин
із загальною кількістю - більше 7000 типів (термін .NET для класів, структур,
інтерфейсів та інших основних складових частин програмування).
Кожний з тисячі класів в .NET Framework згруповано в логічний
ієрархічний контейнер під назвою простір імен. Різні простори імен надають
різні властивості. В сукупності простори імен .NET надають функції практично
для кожного аспекту розподіленої розробки. Такий широкий набір інструментів
будемо називати бібліотекою класів.
Спосіб використання класів в .NET Framework в ASP.NET нічим
не відрізняється від способу їх використання в будь-якому іншому типі додатку
.NET (включаючи автономний Windows-додаток, Windows-службу, утиліти командного
рядка тощо).
2. ASP.NET компілюється, а не інтерпретується
Додатки ASP.NET завжди компілюються - фактично неможливо
виконати програмний код без його попередньої компіляції.
Додатки ASP.NET проходять дві стадії компіляції На першому
етапі написаний код C# компілюється в код проміжної мови MSIL (Microsoft
Intermediate Language). Цей перший крок є фундаментальною причиною незалежності
.NET від мов. По суті, усі мови .NET компілюються у фактично ідентичний код
MSIL. Даний етап компіляції автоматично здійснюється при першому запиті
сторінки. Також компіляцію можливо виконати завчасно (даний процес відомий під
назвою «попередня компіляція»). Скомпільований файл з кодом MSIL є збіркою.
Рис 1. Компіляція в рамках Web-сторінки ASP.NET
Другий етап компіляції наступає безпосередньо перед фактичним
виконанням сторінки. На цьому етапі код MSIL компілюється низькорівневий
власний машинний код. Даний етап є відомим як оперативна компіляція «точно до
потрібного моменту» (Just-In-Time - JIT) і він проходить однаково для всіх
додатків .NET (включаючи, наприклад, додатки Windows). На рис. 1. показано
описаний двохетапний процес компіляції.
Компіляція .NET поділяється на два етапи з метою надання розробникам
зручних умов та мобільності. Перед створенням низькорівневого машинного коду
компілятору необхідно знати, в якій операційній системі і на якому базовому
обладнанні буде функціонувати додаток (наприклад, 32- або 64-розрядна ОС
Windows).
Додатки .NET не потрібно компілювати кожного разу при запиті
Web-сторінки. Замість цього код MSIL створюється один раз і повторно
генерується тільки при зміні вихідного коду. Подібним чином файли власного
машинного коду кешуються в системному каталозі зі шляхом::\[WinDir]\Microsoft
.NET\FrameWork\[Version]\Temporary ASP.NET Files
3. ASP.NET підтримує кілька мов програмування
Технологія ASP.NET дозволяє використовувати не тільки мову C#, а й інші
мови програмування, що не впливає на кінцевий результат розробки програмного
продукту, оскільки код компілюється в MSIL.
Усі мови програмування .NET мають загальні типи даних та доступ до
загальних бібліотек класів, тобто усі мови .NET володіють загальною
інфраструктурою, яка формалізована у CLS (Common Language Specification -
загальна специфікація мови).визначає загальні властивості, якими повинні
володіти усі об’єкти для зв’язування один з одним в однорідному середовищі. Для
забезпечення даного зв’язку CLR (Common Language Runtime - загальномовне
виконуюче середовище) вимагає від усіх об’єктів відповідності певному набору
правил.
4. ASP.NET функціонує всередині виконуючого середовища
CLR
Все середовище .NET Framework - тобто всі простори імен, додатки і
класи - називаються кодом, що управляється.
.NET Framework складається з двох частин: загальномовного середовища
виконання (common language runtime, CLR) та бібліотеки класів Framework Class
Library (FCL).
Система CLR керує виконанням .NET-програм. Це здійснюється таким чином.
В результаті компіляції C#-програми створюється не код виконання операційної
системи, а, файл, який містить спеціальний псевдокод, якій називається
проміжною мовою Microsoft (Microsoft Intermediate Language - MSIL). MSIL
визначає набір інструкцій, які не залежать від типу процесора.
Код проміжної мови MSIL перетворюється у код виконання операційної
системи за допомогою JIT-компіляції. JIT - це скорочення від виразу “just in
time”, що означає виконання точно до потрібного моменту часу. Даний процес
здійснюється таким чином. При виконанні .NET-програми CLR-система активізує
JIT-компілятор, який перетворює MSIL-код у код виконання операційної системи.
Рис. 2а. Структура .NET Framework
Рис. 2б. Структура CLR
5. ASP.NET є об’єктно-орієнтованим.NET є повністю об’єктно-орієнтованим
середовищем. Програмний код не тільки має доступ до усіх об’єктів в .NET
Framework, але й дозволяє на практиці використовувати практично усі терміни
об’єктно-орієнтованого програмування.
Один з кращих прикладів об’єктно-орієнтованого мислення в ASP.NET можна
знайти в серверних елементах управління. Серверні елементи управління
представляють собою інкапсуляцію в мініатюрі. Розробникам можуть програмно
маніпулювати об’єктами управління з використанням коду для налагодження їх
зовнішнього вигляду, представлення даних для відображення і навіть реакції на
події. Низькорівневі подробиці HTML скриті «за сценою». Замість того щоб
примушувати розробника писати «сирий» HTML вручну, об’єкти управління
перетворюються в HTML по завершены візуалізації сторінки.
5.2
Опис взаємодії програмного коду з базою даних
.NET Framework включає свою власну технологію доступу до
даних - ADO.NET. ADO.NET складається з класів, які дозволяють додаткам .NET підключатися
до джерел даних (в більшості випадків - реляційним базам даних), виконувати
команди і керувати автономними даними.
Постачальники даних (data provider) - це набір класів
ADO.NET, які дозволяють отримувати доступ до визначеної бази даних, виконувати
команди SQL та отримувати дані.
При розробці портальної системи використовувалися такі
класи-постачальники даних:
· SqlConnection. Цей клас використовується для
встановлення з’єднання з джерелами даних.
· SqlCommand. Цей класс
використовується для виконання команд SQL.
· SqlDataReader. Цей клас представляє
доступ для читання до даних, які отримано за допомогою запиту.
Приклад програмного коду:
public static Int64 GetLastNewsID()
{connectionString = "Data
Source=localhost;Initial=cms;Integrated Security=True;Pooling=False";con =
new SqlConnection(connectionString);sql = "SELECT
IDENT_CURRENT('News')";cmd = new SqlCommand(sql, con);.Open();reader =
cmd.ExecuteReader();.Read();id
=Convert.ToInt64((string)reader[0].ToString());.Close();id;
}
.3
Структура бази даних
Рис. 3. Структура бази даних
Основна частина інформації зберігається у базі даних. В
якості серверу баз даних було обрано MSSQL, оскільки в технології ASP.NET
наявні вбудовані класи та бібліотеки для роботи з Microsoft SQL Server.
.4
Система адміністрування порталу
.4.1
Модуль «Новини»
Модуль «Новини» складається з таких програмних файлів:
· NewsAll.aspx, NewsAll.cs - виводить список усіх новин
з можливістю вибору року та місяці, у даному модулі реалізовано, також,
видалення новини.
· NewsAdd.aspx, NewsAdd.cs - форма і
програмний код, який здійснює додавання новини на портал, закачування файлів
ілюстрацій тощо.
· NewsEdit.aspx, NewsEdit.cs - форма і
програмний код, що здійснює оновлення тексту та прикріплених ілюстрацій до
новини.
Рис 4. Процес додавання новини
Всі новини зберігаються у таблиці «News». Вона складається з
таких полів:
. news_id - ID-номер новини;
. news_title - заголовок новини;
. news_date - дата та час події;
. news_text - текст новини;
Для зберігання ілюстрацій створено таблицю «Pictures».
вона має таку структуру:
. picture_id - ID-номер ілюстрації;
. picture_caption - підпис до ілюстрації;
. picture_filename - шлях до файлу, який містить графічну
ілюстрацію (на сервері);
Для зв’язування двох таблиць створено
таблицю-посередник «News_Pictures» з такими полями:
. np_id - унікальний номер запису в таблиці;
2. picture_id - ID-номер ілюстрації з таблиці Pictures.
. news_id - ID-номер новини з таблиці News.
Для додавання новини використовується такий запит:
INSERT INTO [news] ([news_title], [news_text], [news_date])
VALUES
(@news_title, @news_text, @news_date)
Для оновлення даних створено запит, який виглядає
наступним чином:
UPDATE [news] SET [news_title] = @news_title, [news_text] =
@news_text, [news_date] = @news_date WHERE [news_id] =
@news_id
Для вибірки ілюстрацій, які пов’язані з новиною
виконується такий запит:
SELECT pictures.*, pictures.picture_id AS Expr1 FROM news
RIGHT
OUTER JOIN news_pictures ON news.news_id =
news_pictures.news_id
RIGHT OUTER JOIN pictures ON news_pictures.picture_id =
pictures.picture_idnews.news_id = @news_id
У процесі роботи виникла необхідність визначення ID-номеру
останнього доданого запису, доданого у базу даних. Для цього було написано
програмний код:
string connectionString = "Data Source=localhost;Initial
Catalog=cms;Integrated Security=True;Pooling=False";con
= new SqlConnection(connectionString);.Open();cmd = new SqlCommand(sqlString,
con);.ExecuteNonQuery();sql = "SELECT @@IDENTITY";= new
SqlCommand(sql, con);reader = cmd.ExecuteReader();.Read();id = Convert.ToInt64((string)reader[0].ToString());.Close();id;
Для організації зручного введення дат було використано
стандартний компонент .NET Framework, який має назву «Calendar». Заповнення
випадаючих списків здійснюєть за допомогою наступного програмного коду:(NewsDay.Items.Count
> 0);.Items.Clear();.Items.Clear();.Items.Clear();(int i = 1; i < 32;
i++).Items.Add(new ListItem(i.ToString(), i.ToString()));.Items.Add(new
ListItem("січня", "1"));.Items.Add(new
ListItem("лютого", "2"));.Items.Add(new ListItem("березня",
"3"));.Items.Add(new ListItem("квітня",
"4"));.Items.Add(new ListItem("травня",
"5"));.Items.Add(new ListItem("червня",
"6"));.Items.Add(new ListItem("липня", "7"));.Items.Add(new
ListItem("серпня", "8"));.Items.Add(new
ListItem("вересня", "9"));.Items.Add(new
ListItem("жовтня", "10"));.Items.Add(new
ListItem("листопада", "11"));.Items.Add(new
ListItem("грудня", "12"));(int i = DateTime.Now.Year - 3; i
<= DateTime.Now.Year + 3; i++).Items.Add(new ListItem(i.ToString(),
i.ToString()));.SelectedIndex = DateTime.Now.Day - 1;.SelectedIndex =
DateTime.Now.Month - 1;.SelectedIndex = 3;.Text =
DateTime.Now.Hour.ToString();.Text = DateTime.Now.Minute.ToString();
Зчитування вибраної дати з календаря:.SelectedIndex =
Calendar1.SelectedDate.Day - 1;.SelectedIndex = Calendar1.SelectedDate.Month -
1;.SelectedIndex = Calendar1.SelectedDate.Year -
DateTime.Now.Year + 3 ;
.4.2
Модуль «Користувачі/відвідувачі порталу»
Модуль складається з таких програмних файлів:
· AdminsAll.aspx, AdminsAll.cs - виводить список усіх
користувачів та адміністраторів з можливістю переходу до редагування та
видалення.
· AdminsAdd.aspx, AdminsAdd.cs - форма
і програмний код, який здійснює додавання нового користувача/адміністратора.
· AdminsEdit.aspx, AdminsEdit.cs -
форма і програмний код, що здійснює оновлення інформації по обліковому запису
користувача/адміністратора.
Всі дані даного модуля зберігаються у таблиці «Users».
. user_id - ID-номер користувача;
. user_login - login користувача;
. user_password - пароль;
. user_name - прізвище та ім’я;
. user_occupation - посада, соціальний статус тощо;
. user_city - місто;
. user_email - адреса електронної пошти користувача;
. user_homepage - адреса домашньої сторінки;
. user_icq - номер ICQ;
. user_date - дата останнього доступу;
. user_comment - коментар адміністратора;
. user_access - рівень доступу користувача;
Основні скрипти, які виконують базові операції:
. Додавання користувача/адміністратора:
INSERT INTO [users] ([user_login], [user_password],
[user_name],
[user_occupation], [user_email], [user_homepage], [user_icq],
[user_phone],
[user_comment], [user_access], [user_city]) VALUES
(@user_login,
@user_password, @user_name, @user_occupation, @user_email,
@user_homepage, @user_icq, @user_phone, @user_comment,
@user_access, @user_city)
2. Оновлення профілю користувача/адміністратора:
UPDATE [users] SET [user_login] = @user_login,
[user_password] =
@user_password, [user_name] = @user_name, [user_occupation] =
@user_occupation, [user_email] = @user_email, [user_homepage]
=
@user_homepage, [user_icq] = @user_icq, [user_phone] =
@user_phone,
[user_comment] = @user_comment, [user_access] = @user_access,
[user_city] = @user_city WHERE [user_id] = @user_id
3. Видалення профілю користувача/адміністратора:
DELETE FROM [users] WHERE [user_id] = @user_id
5.4.3
Модуль «Голосування»
Модуль складається з таких програмних файлів:
· PollAll.aspx, PollAll.cs - виводить список усіх
голосувань з можливістю переходу до редагування та видалення. В даному скрипті
здійснюється очищення таблиці з ІР-адресами користувачів.
· PollAdd.aspx, PollAdd.cs - форма і
програмний код, який здійснює додавання нового голосування.
· PollEdit.aspx, PollEdit.cs - форма і
програмний код, що здійснює редагування та оновлення параметрів голосування.
Інформація зберігається у таблиці «Polls». Ця таблиця має
такі поля:
. poll_id - ID-номер голосування
. poll_text - текст запитання опитування
. poll_count - кількість варіантів відповідей.
. poll_answers - варіанти відповідей, представлені у вигляді
XML.
. poll_results - результати опитування у вигляді XML.
Варіанти відповідей записуються у вигляді XML таким чином:
<text>Варіант відповіді 1</text>
<text>Варіант відповіді 2</text>
…
</answers>
Результати записуються у такому вигляді:
<results>
<value>10</value>
<value>20</value>
…
</results>
Для того, щоб заборонити користувачам здійснювати
багаторазове голосування в рамках одного опитування було створено таблицю
PollIp. Таблиця складається з троьох полів, які мають наступний зміст:
. ip_id - ID-номер запису у таблиці.
2. poll_id - ID-номер голосування, з яким пов'язаний
запис.
. ip_address - ІР-адреса користувача, якому заборонено
повторне голосування.
Основні скрипти, які виконують базові операції:
. Додавання нового голосування:
INSERT INTO [Polls] ([poll_text], [poll_count],
[poll_answers],
[poll_results]) VALUES (@poll_text, @poll_count,
@poll_answers,
@poll_results)
2. Оновлення параметрів голосування:
UPDATE [Polls] SET [poll_text] = @poll_text, [poll_count] =
@poll_count,
[poll_answers] = @poll_answers, [poll_results] =
@poll_results WHERE
[poll_id] = @poll_id
3. Видалення голосування:
DELETE FROM [Polls] WHERE [poll_id] = @poll_id
4. Для очищення бази таблиці з ІР-адресами написано такий
програмний код на C#:
string connectionString = "Data Source=localhost;Initial
Catalog=cms;Integrated
Security=True;Pooling=False";sqlString = "DELETE FROM [pollIp] WHERE
poll_id='" +
GridView1.Rows[e.NewSelectedIndex].Cells[2].Text +
"'";con = new SqlConnection(connectionString);.Open();cmd = new
SqlCommand(sqlString, con);.ExecuteNonQuery();
5.4.4
Модуль «Сторінки»
Модуль складається з таких програмних файлів:
· PagesAll.aspx, PagesAll.cs - виводить список усіх
сторінок з вказуванням дати останньої модифікації та дати створення сторінки.
Даний скрипт здійснює видалення вибраних записів та перенаправлення на скрипти
модифікації та додавання сторінок.
· PagesAdd.aspx, PagesAdd.cs - скрипти,
які здійснюють обробку форми і внесення введеної у неї інформації в базу даних.
· PagesEdit.aspx, PagesEdit.cs - форма
і програмний код, що здійснює редагування та оновлення сторінок.
Інформація зберігається у таблиці «Pages». Ця таблиця має
такі поля:
. page_id - ID-номер сторінки;
. page_title - заголовок сторінки;
. page_html - текст сторінки у форматі html;
. page_creation_date - дата створення сторінки;
. page_modification_date - дата внесення останніх змін на
сторінку.
Основні скрипти, які виконують базові операції:
. Додавання нового сторінки:
INSERT INTO [pages] ([page_title], [page_html],
[page_creation_date],
[page_modification_date]) VALUES (@page_title, @page_html,
@page_creation_date, @page_modification_date)
2. Оновлення даних сторінки:
UPDATE [pages] SET [page_title] = @page_title, [page_html] =
@page_html, [page_creation_date] = @page_creation_date,
[page_modification_date] = @page_modification_date WHERE
[page_id] =
@page_id
3. Видалення сторінки:
DELETE FROM [Pages] WHERE [page_id] = @page_id
портальний модуль користувач сайт
5.5
Діаграма прецедентів
5.6
Клієнтська частина
Клієнтська частина складається з таких програмних файлів:
· Login.aspx, Login.cs - аутентифікаційна форма,
перевірка правильності введеного логіну та паролю, встановлення змінних сесії.
· Logout.aspx, Logout.cs - завершення
сеансу, знищення змінних сесії.
· UserRegister.aspx, UserRegister.cs -
анкета для реєстрації нового користувача на порталі, скрипт, що додає запис у
базу даних і здійснює пере направлення на сторінку Login.aspx.
· NewsList.asxp, NewsList.cs - список
новин з можливістю вибору року та місяця;
· NewsViews.asxp, NewsView.cs -
сторінка для перегляду новини;
· PagesList.aspx, PagesList.cs -
виводить список усіх сторінок порталу.
· PagesView.aspx, PagesView.cs -
програмний код, який забезпечує перегляд вибраної сторінки;
· PollList.aspx, PollList.cs - список
голосувань.
· PollRun.aspx, PollRun.cs - реалізація
голосування, перевірка ІР-адреси користувача, врахування голосу користувача;
Усі наведені скрипти мають аналоги у системі адміністрування,
тому їх опис не наводиться. Скрипт PollRun не має аналогу у системі
адміністрування, тому приведено його програмний код.
void UserAnswerAdd()
{rb;sep =
“//”;(Function.IsExistUserIP(Request.UserHostAddress,
Convert.ToInt32(Request.Cookies["ItemIndex"].Value)))
{.Text = "Ви не можете повторно голосувати!!!";;
}(int i = 0; i < Variants.Count; i++)
{= (RadioButton)FormView1.FindControl
("RadioButton" + (i + 1).ToString());(rb.Visible
&& rb.Checked)
((Label)FormView1.FindControl
("ResultsLabel")).Text.Split(sep,.None);[i] =
(Convert.ToInt32([i]) + 1).ToString();
((Label)FormView1.FindControl("ResultsLabel")).=
String.Join("//", results);.ExecuteUpdateSQL("UPDATE Polls
SET_results = '" + String.Join("//", results)
+ "' WHERE poll_id = "
+.Cookies["ItemIndex"].Value);
}
}.Text = "Ваш голос
враховано.";.AddUserIP(Request.UserHostAddress,.ToInt32(Request.Cookies["ItemIndex"].Value));.Redirect("PollRun.aspx");
static Int64 ExecuteInsertSQL(string sqlString)
{connectionString = "Data Source=localhost;Initial=cms;Integrated
Security=True;Pooling=False";con = new
SqlConnection(connectionString);.Open();cmd = new SqlCommand(sqlString,
con);.ExecuteNonQuery();sql = "SELECT @@IDENTITY";= new
SqlCommand(sql, con);reader = cmd.ExecuteReader();.Read();id =
Convert.ToInt64((string)reader[0].ToString());.Close();id;
}
static void AddUserIP(string ip, Int64 poll_id)
{("INSERT INTO PollIp (poll_id, ip_address)('" +
poll_id.ToString() + "','" + ip + "')");
}
static bool IsExistUserIP(string ip, Int64 poll_id)
{connectionString = "Data
Source=localhost;Initial=cms;Integrated Security=True;Pooling=False";con =
new SqlConnection(connectionString);sql = "SELECT * FROM PollIp WHERE
(poll_id = '" +_id.ToString() + "') AND (ip_address = '" + ip +
')";cmd = new SqlCommand(sql, con);.Open();reader =
cmd.ExecuteReader();.Read();(reader.HasRows);
}
6.
Керівництво користувачу
Портал складається складається з двох частин - клієнтської
частини та системи адміністрування.
.1
Клієнтська частина
Клієнтська частина порталу доступна усім відвідувачам
порталу. Усі сторінки порталу мають однакову структуру. Верхня, ліва та права
частини є незмінними (стаціонарними), а центральна частина використовується для
відображення вибраної користувачем інформації. Проте зовнішній вигляд системи
може бути іншим. Це залежить від налаштувань, які здійснює адміністратор
порталу (за допомогою внесення змін у файл MasterPage.master).
В рамках даної випускної роботи було реалізовано модулі
«Новини», «Реєстрація користувачів», «Голосування» та «Сторінки».
Для перегляду новин можна використовувати два шляхи. Перший
полягає у виборі посилання «Новини» з головного меню порталу. Другий шлях -
натиснути на посилання «Всі новини» у правій колонці сторінки.
Рис. 5. Список новин
Після виконання тієї або іншої послідовності дій буде
здійснено перехід до сторінки, де користувач зможе вибрати необхідний рік та
місяць. При цьому список новин буде автоматично фільтрувати новини за вибраними
параметрами.
Для перегляду новини достатньо натиснути на посилання
«Перейти», яке розташоване у рядку з потрібною новиною.
Рис. 6. Режим перегляду новини
Кожен користувач порталу має змогу зареєструватися і залишати
повідомлення у книзі відгуків. Для цього необхідно вибрати з головного меню
пункт «Зареєструватися» і заповнити відповідну анкету.
Рис. 7. Анкета для реєстрації нового користувача
Після заповнення анкети буде здійснено перехід до сторінки з
аутентифікаційною формою, де необхідно вказати логін та пароль користувача.
Перейти до цієї ж форми можна за допомогою посилання «Увійти», яке знаходиться
у верхній правій частині сторінки.
Рис. 8. Форма для аутентифікації
На порталі передбачена можливість розміщення сторінок.
Сторінки додавати має право виключно адміністратор порталу, а переглядати їх
може кожен користувач.
Для переходу до списку усіх сторінок, які розміщені на
порталі слід вибрати пункт «Сторінки» з головного меню.
Рис. 9. Список сторінок
Перехід до перегляду сторінки здійснюється досить просто,
потрібно лише натиснути на посилання «Перейти».
Рис. 10. Перегляд сторінки
Портал має модуль, який забезпечує проведення голосувань. Для
переходу до списку усіх наявних на порталі голосувань слід вибрати у головному
меню посилання «Опитування».
Рис. 11. Список голосувань
Вибравши тему голосування будемо мати сторінку, на якій
розміщено запитання та список альтернатив. Користувач має змогу голосувати лише
один раз по кожному голосуванню. Якщо спробувати проголосувати повторно, то на
сторінці з’явиться відповідне повідомлення.
Рис. 12. Голосування
.2
Система адміністрування
Вхід в систему адміністрування дозволений лише користувачам порталу,
які мають права адміністратора. Для переходу на сторінку аутентифікації слід
перейти за адресою <#"588231.files/image016.gif">
Рис. 13. Аутентифікаційна форма
Після успішної аутентифікації буде здійснено вхід у систему управління
контентом порталу. У лівій частині сторінки цієї системи розміщується головне
меню, яке призначене для доступу до усіх реалізованих операцій.
Рис. 14. Зовнішній вигляд системи управління контентом
Для завершення роботи із системою в обов’язковому порядку необхідно
скористатися посиланням «Вихід», щоб закрити поточну сесію.
.2.1
Модуль «Новини»
Для додавання новини слід виконати такі дії:
. У лівій панелі навігації вибрати пункт «Додати новину».
Після цього з’явиться сторінка, на якій розміщено форму, яка призначена для
введення необхідної інформації (рис. 15).
Рис. 15. Сторінка, на якій здійснюється додавання новини
. Ввести заголовок новини. Заголовок новини передбачає
речення із 5 - 10 слів.
3. Ввести текст новини. При цьому дозволяється
використовувати теги мови HTML для форматування тексту.
. Відкоригувати дату та час події. При цьому можна
скористатися кнопкою «Календар». Натискання на неї відображає календар, який
дозволяє спростити процес вибору дати. Достатньо клацнути на відповідній даті,
щоб вона була автоматично встановлена у полі «дата події».
Рис. 16. Календар, який використовується для вибору дати
події
5. У разі, якщо передбачається розміщення фотоілюстрацій до
новини, то необхідно заповнити рядки введення адресами файлів, які зберігаються
на локальній машині. Для спрощення даної процедури краще скористатися кнопкою
«Обзор», яка запустить діалог вибору файлу.
6. Якщо усі форми та поля заповнено, для збереження
новини обов’язково натиснути на кнопку «Додати новину», інакше введені дані
буде втрачено.
Для внесення змін у новину слід виконати такі дії:
. У лівій панелі навігації вибрати пункт «Редагувати
новини». Після цього з’явиться сторінка, яка містить таблицю зі списком новин
поточного року та місяця (рис. 17).
Рис. 17. Вибірка новин за вибраний рік та місяць
У верхній частині сторінки розміщені посилання для вибору
року та місяця, які визначають дату додавання новини. При натисканні будь-яке з
цих посилань сторінку буде автоматично перевантажено і зроблено відповідну
вибірку новин.
. Усі новини дозволяється сортувати за будь-яким полем. Для
цього слід натиснути на відповідний заголовок колонки. Наприклад, для того, щоб
відсортувати новини в алфавітному порядку за заголовком слід натиснути на слово
«Заголовок». Якщо натиснути другий раз на те ж саме посилання, то порядок
сортування змінить на обернений до алфавітного.
3. Якщо підвести курсор миші до слова «(текст)», то
буде відображено повний текст новини. Дана можливість передбачена для
зручності, точніше, для того, щоб не натискати кожного разу на посилання
«Редаг.» у разі необхідності перегляду тексту новини.
. Коли новину, яку необхідно відкоригувати буде знайдено,
то для переходу до сторінки редагування, потрібно буде натиснути на посилання
«Редаг.». З’явиться нова сторінка, яка міститиме елементи, які заповнені
введеними при додаванні новини даними. Всі дані можна змінювати, можна
користуватися календарем, як і при додаванні новин та ін.
5. Якщо новина містить фотографії, то у частині форми з
назвою «фотоілюстрації» буде відображено таблицю, у якій перераховано список
прикріплених до новини файлів. При цьому передбачена можливість видалення та
перегляду ілюстрацій. Для цього призначені відповідні посилання. У разі
необхідності додавання нових фотографії можна використовувати п’ять рядків введення,
які розташовані у нижній частині форми.
Рис. 19. Сторінка, на якій здійснюється редагування новини
. Якщо новина містить фотографії, то у частині форми з
назвою «фотоілюстрації» буде відображено таблицю, у якій перераховано список
прикріплених до новини файлів. При цьому передбачена можливість видалення та
перегляду ілюстрацій. Для цього призначені відповідні посилання.
7. Коли коригування буде завершене, то потрібно
зберегти зміни, скориставшись посиланням «Зберегти».
Для видалення новини слід виконати такі дії:
. У лівій панелі навігації вибрати пункт «Редагувати
новини». Після цього з’явиться сторінка, яка містить таблицю зі списком новин
поточного року та місяця (рис. 17).
2. Вибрати необхідну новину і натиснути на посилання
«Видалити».
.2.2
Модуль «Користувачі/відвідувачі порталу»
Усі відвідувачі сайту, для того, щоб додати повідомлення до
розділів «Книга відгуків» та «Форум», повинні попередньо зареєструватися на
сайті.
Для того, щоб зареєструватися користувач заповнює
online-анкету.
В режимі адміністратора передбачена можливість додавання
нових користувачів та адміністраторів.
Для додавання нового облікового запису необхідно виконати
таку послідовність дій:
. У лівій панелі навігації вибрати посилання «Користувачі
порталу».
2. У верхній частині сторінки, над списком користувачів
натиснути на посилання «Додати нового користувача».
. Заповнити форму, яку зображено на рис. 20.
Рис. 20. Сторінка, на якій здійснюється додавання облікового
запису користувача або адміністратора
. Вибрати рівень доступу (один з двох - адміністратор або
користувач).
5. Натиснути на посилання «Додати обліковий запис».
Для редагування профілю користувача слід виконати такі
дії:
. У панелі навігації вибрати посилання «Користувачі
порталу». На екрані відобразиться список усіх користувачів з вказуванням
основної інформації (логіна,
прізвища, посади, рівня доступу та коментаря).
2. Список користувачів відображається посторінково, по
10 користувачів на сторінці. Для переходу між сторінками можна використовувати
посилання 1, 2 і т.д, які розміщені знизу від списку. Передбачено, також,
можливість сортування користувачів за будь-яким полем.
Рис. 21. Сторінка, на якій здійснюється редагування новини
. Знайти потрібного користувача у списку, після чого
натиснути на посиланні «Редаг.».
4. З’явиться форма, у якій можна змінити дані, які було
введено при реєстрації користувача. Тепер можна вносити будь-які зміни.
. Зміна рівня доступу здійснюється досить просто,
достатньо лише змінити поточне вибране значення у полі «Доступ».
Рис. 22. Сторінка, на якій здійснюється редагування профілю
користувача
6. Для збереження змін потрібно натиснути на послання
«Зберегти».
.2.3
Модуль «Голосування»
Створення нового голосування на порталі:
. В панелі навігації вибрати пункт «Голосування».
2. На екрані з’явиться список усіх наявних на поточний
момент голосувань.
.
Рис. 23. Сторінка з посиланням на додавання голосувань
. Необхідно вибрати посилання «Додати нове голосування»
5. У вікні веб-браузера з’явиться бланк, у якому
необхідно сформулювати текст запитання, ввести варіанти відповідей. Мінімально
можлива кількість варіантів відповідей - 2. Поля відповідей слід заповнювати
послідовно. Якщо залишити деяке поле не заповненим, то в подальшому при
голосуванні воно не буде враховуватися.
. Натиснути на посилання «Додати».
Рис. 24. Форма для нового голосування
Зміна параметрів існуючого голосування, видалення голосувань:
. В панелі навігації вибрати пункт «Голосування».
2. На екрані з’явиться список усіх наявних на поточний
момент голосувань.
Рис. 25. Список голосувань
. В панелі навігації вибрати пункт «Голосування».
4. Для видалення голосування потрібно натиснути на
посилання «Видал.».
. Якщо існує потреба обнулити лічильник користувачів у
певному голосуванні (очищення бази даних ІР-адрес) потрібно натиснути на
посилання «Очист. ІР адр.».
. Для переходу до коригування тексту або варіантів
відповідей голосування потрібно натиснути на посилання «Редаг.». Після
натискання на екрані з’явиться форма, у якій записані усі дані, які було
вказано при додаванні голосування. При цьому буде відображено додатковий
стовпець, у якому розміщено рядки введення, за допомогою яких можна змінити
поточні значення кількості вибраних відповідей.
.2.4
Модуль «Сторінки»
Створення нової сторінки на порталі:
. В панелі навігації вибрати пункт «Сторінки».
2. На екрані з’явиться список усіх сторінок на порталі,
які наявні до у поточний момент.
Рис. 26. Список наявних сторінок
. Необхідно вибрати посилання «Додати нову сторінку».
4. У вікні веб-браузера з’явиться бланк, у якому
необхідно ввести заголовок сторінки і вставити у поле «текст-сторінки» html-код
сторінки, який підготовлено зовнішнім html-редактором. Коли всі дані буде
введено, то слід підтвердити додавання шляхом натискання на посилання «Додати
сторінку»
Рис. 27. Додавання нової сторінки
Редагування та видалення сторінок:
. В панелі навігації вибрати пункт «Сторінки».
2. На екрані з’явиться список усіх сторінок на порталі,
які наявні до у поточний момент. Біля кожної сторінки розміщено два послання -
«редаг.» та «видал.», які дозволяють виконувати відповідні дії. Для зміни
заголовку сторінки достатньо просто внести необхідні зміни у поле «заголовок
сторінки». Якщо необхідно внести корективи в текст сторінки, то потрібно
скопіювати текст у зовнішній html-редактор (наприклад, NVU), зробити за його
допомогою корективи, і скопіювати результат у поле «текст сторінки».
Рис. 28. Редагування сторінки
Внесення змін можливе також і без сторонніх html-редакторів.
Але при цьому необхідно вручну редагувати html-теги.
. Вибрати посилання «Зберегти зміни».
Висновки
При виконанні даної випускної роботи були виконані всі вимоги
технічного завдання.
В рамках даного проекту було реалізовано портальну систему
(CMS). Було спроектовано та створено базу даних MSSQL, у якій зберігається
інформація розробленого порталу.
Система адміністрування захищена парольним доступом, тому
система є стійкою до стороннього втручання у цілісність даних
При виконанні даної роботи використовувалися такі системи
візуального редагування веб-сторінок, як Macromedia DreamWeaver 8.0, Microsoft
FrontPage.
Значна увага була приділена створенню інтерфейсу програми.
Для цього використовувалися сучасні програми:
· Adobe Photoshop CS2.
· Ulead PhotoImpact 10.
У подальшому планується доповнення системи новими модулями та
вдосконалення існуючих.
Список
літератури
1. Ахо
А., Хопкрофт Э., Ульман Дж. «Структуры данных и алгоритмы». - М.: Издательский
дом «Вильямс», 2000. - 384 стр.
2. Буч
Г., Якобсон А., Рамбо Дж. «UML. Классика Computer Science». - СПб.: Питер,
2006. - 736 стр.
. Шилдт
Г. «Полный справочник по C#.: Пер. с англ.» - М.: Издательский дом «Вильямс»,
2004. - 752 стр.
. Глушков
С.В., Коваль А.В., Черепнин С.А. Программирование на Visual C++ 6.0. - Харьков:
Фолио, 2002. - 726 с.
. Прата
Стивен. Язык программирования С. Лекции и упражнения. Учебник: Пер. с англ. -
СПб.: ООО «ДиаСофтЮП», 2002. - 896 с.
. Фейсон
Т. Объектно-ориентированное программирование на Borland C++ 4.5. - К.:
«Диалектика», 1996. - 544 с.
. Рихтер
Дж. Программирование на платформе Microsoft .NET Framework. Мастер-класс./Пер.
с англ. - 3-е изд». - М.: Издательско-торговый дом «Русская Редакция», СПб.:
Питер, 2005. - 512 стр.
. Гурман
Д. «JavaScript. Библия пользователя», М. : «Діалектика», 2002, -958 с.
. Троелсен
Э. C# и платформа .NET. Библиотека программиста - СПб.: Питер, 2005. - 796 стр.
. Дэвид
Сеппа. Microsoft ADO .NET - М.: Издательско-торговый дом «Русская редакция»,
2003. - 640 стр.: ил.