Розробка блогу

Архітектура програмного забезпечення. Інтернет-журнал подій, інтернет-щоденник, онлайн-щоденник. Відмінності блогу від традиційного щоденника. Процес ідентифікації користувача. Логічне представлення даних. Керівництво, призначене для користувачів сайту.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 26.06.2012
Размер файла 2,8 M

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

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

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

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

Міністерство освіти та науки України

Житомирський державний технологічний університет

ФІКТ

кафедра ПЗОТ

група ПІ-39

Пояснювальна записка

На тему курсової роботи «Розробка блогу»

Виконали: Тунік О. О.

Кравчук О. М.

Перевірив:

Кондратовець С. Л.

Житомир

2012

Зміст

Суть та принципи проведеної роботи

Логічне представлення даних

1) Діаграма станів

2) Діаграма діяльності

Структура програми

Керівництво користувачу\програмісту

Код програми4

Висновок

Список використаної літератури

Суть проведеної роботи

Блог (англ. blog, від web log - інтернет-журнал подій, інтернет-щоденник, онлайн-щоденник) - веб-сайт, основний зміст якого - записи (пости), що регулярно додаються і містять текст, зображення або мультимедіа. Для блогів характерні недовгі записи, відсортовані у зворотному хронологічному порядку (останній запис зверху). Відмінності блогу від традиційного щоденника обумовлюються середовищем: блоги зазвичай публічні і передбачають сторонніх читачів, які можуть вступити в публічну полеміку з автором (у коментарях до запису або своїх блогах).

Першим блогом вважається сторінка Тіма Бернерса-Лі, де він, починаючи з 1992р., публікував новини. В даний час особливість блогів полягає не тільки в структурі записів, а й у простоті додавання нових записів. Користувач просто звертається до веб-серверу, проходить процес ідентифікації користувача, після чого він додає новий запис до своєї колекції. Сервер надає інформацію як послідовність повідомлень, поміщаючи зверху найсвіжіші повідомлення. Структура колекції нагадує звичну послідовну структуру щоденника чи журналу. В даному випадку адміністратор блогу має доступ до всіх сторінок, а також створювати, додавати, редагувати, шукати, видалять пости без реєстрації. В свою чергу інші читачі блогу мають можливість переглядати та коментувати пости адміністратора та здійснювати пошук за тегами.

Логічне представлення даних

1) Діаграма станів

1) 2) Діаграма діяльності

Admin User

... Comment

click

edit

Структура програми

Дана програма розроблялася на основі asp.net-технології для написання веб-продукту, реалізована у Visual Studio 2010, база даних - MS SQL. Для оформлення блогу, а саме для його розмітки було використано мову HTML, дизайн розроблено за допомогою графічного редактора Photoshop.

Програма містить такі файли:

- About.aspx, About.aspx.cs

- Default.aspx, Default.aspx.cs

- New Post.aspx, New Post.aspx.cs

- Posts.aspx, Posts.aspx.cs

- Post.aspx, Post.aspx.cs

- Style.css

Керівництво користувачу\програмісту

сайт блог інтернет журнал

Керівництво призначене для користувачів, адміністраторів і редакторів сайту на базі блогу «Т&K". У керівництві описані основні дії з управління контентом, загальні моменти з управління зовнішнім виглядом.

Всі операції в даному керівництві будуть виконуватися на прикладі локальної версії блогу Т&K".

В основі управління блогом «Т&K" лежить принцип поділу рівнів прав доступу користувачів до ресурсів сайту. Тобто кожен відвідувач сайту відноситься до однієї або декількох груп користувачів сайту, кожна з яких володіє певним набором прав.

В системі за задумом існує дві обов'язкові групи користувачів: «Усі користувачі» та «Адміністратори». До групи «Всі користувачі» відносяться всі відвідувачі сайту як зареєстровані, так і незареєстровані. За замовчуванням, члени групи «Всі користувачі» мають право на перегляд тільки публічних сторінок сайту.

До групи «Адміністратори» відносяться адміністратори сайту (один або декілька).Користувачі цієї групи мають повний доступ до управління сайтом і всіма іншими користувачами сайту.

Кожен зареєстрований користувач сайту має унікальні ідентифікаційні дані: логін і пароль. Після авторизації в системі (введення логіна і пароля в спеціальну форму авторизації) користувач отримує доступ до ресурсів сайту відповідно до рівня прав його групи.

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

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

Рис. 1.1 Форма авторизації в публічному розділі блогу

Панель адміністратора:

Набір команд на «Адміністративній панелі» залежить від вмісту робочої області сторінки, а також рівня прав доступу поточного користувача. Для користувачів, які не мають права доступу до управління сайтом, наприклад, для групи «Всі користувачі», адміністративна панель відображатися не буде. Ми будемо розглядати повнофункціональний склад панелі, доступний користувачеві з правами адміністратора.
Адміністративна і користувацька панель підтримує такі режими роботи системи(у вигляді меню):

Ш Режим Перегляд(Posts) служить для перегляду усіх постів блогу, а також дозволяє виконувати типові операції по блогу.

Ш Режим Редагування(Edit) містить розширений набір дій і операцій по редагуванню поста(назва, автор, зміст. мітки). Режим призначений для використання адміністраторами блогу,недоступний для групи «всі користувачі».

Ш Режим Створення(New Post) також відноситься до одного з режимів роботи адміністраторської частини. Режим призначений для розробників.

Це режими роботи публічного розділу сайту і режими управління (адміністраторів).

New Post

В режимі New Post доступні такі дії:

· Створення сторінки(посту)

Рис.1.2 Створення посту

· Збереження даних

Рис. 1.3 Кнопка створення(збереження даних)

· Валідація(неможливість створення посту з відсутніми заповненими полями)

Рис. 1.3 Валідація

Edit Post

Режим Редагування створений спеціально для зміни змісту постів (ідентичний сторінці «Створення посту»,але відмінність полягає у тому, що редагуючи, текстові поля для редагування надаються вже заповненими).Режим для адміністраторів блогу.

Наприклад, змінити контент посту можна як з режиму «Перегляд усіх постів», так і з «Перегляд » конкретного посту.

Рис. 2.1 Перехід для редагування посту адміністраторами блогу

Режим редагування також дозволяє:

· Редагування даних обраного посту

Рис. 2.2 Управление доступом

· Видалення даного посту:

Post

Дана сторінка створена для перегляду обраного користувачем посту, перегляд більшої кількості інформації про даний об'єкт, коментування посту.

· Перегляд сторінки можливий у випадку

ь double click на заголовок посту

ь

Рис. 3.1 Перегляд обраного посту

· Коментування посту

Ш Можливість видалення коментарів

Ш Редагування

Ш Сортування

Рис. 3.2 Коментування посту

Posts

Дозволяє здійснювати перегляд усіх можливих постів, доступний як для зареєстрованих, так і незареєстрованих користувачів. Містить інформацію про автора посту, дату створення, мітки, деякі пункти навігації.

· Відображення усіх постів на сторінці

Рис.4.1 Відображення усіх постів

· Скорочення посту для відображення на головній сторінці усіх постів адміністраторами сайту за допомогою правила <!-preview-->

· Можливість перегляду міток відповідно до зацікавлень користувача

· Paging

Рис. 1.3 Paging

Додаткова панель навігації по блогу:

Рис. 1.3 «Хмара навігації»

Зворотній зв'язок та підписка на rss-новини

Відображення головної сторінки блогу вцілому:

Короткий опис можливостей блогу(підсумок):

Публікація постів

Адміністратор може додати на сайт текст з будь-якого комп'ютера, підключеного до інтернету. Тексти можна публікувати і з портативних пристроїв (IPad і подібних).Ось список основних можливостей:

- можливість тимчасово відключити статтю;

- додавання фотоальбомів до статті;

- можливість відключити коментарі для статті;

- напівавтоматичний "друкар" - правка спец.символов.

Дизайн сайту

можна міняти через панель управління:

колір шрифтів;

колір фону сайту і блоків;

положення меню розділів;

колір заголовків;

вмикати / вимикати блоки пошуку, форми і т.д.

змінювати картинку фону;

робити тло сайту нерухомим;

управляти слайдером і слайдами;

налаштовувати кількості анотацій, меню і т.д.

Резервне копіювання і перенесення сайту

Швидкість роботи сайту

сайт може кешувати всі сторінки;

картинки альбомів можуть завантажуватися поступово (LazyLoad)

верстка дозволяє завантажувати блоки сторінок паралельно;

непотрібні блоки і скрипти можна відключати;

Додаткові функції

відключаються кнопки соціальних мереж;

можливість плавного прокрутки до якорів;

визначення портативних пристроїв;

статистика швидкості завантаження сторінок;

збір адрес пошти потенційних передплатників;

автоматична відправка листа при підписці;

пошук по сайту.

Система сповіщень

Движок може відправляти листи адміністратору. Листи можуть відправлятися:

при введенні невірного пароля;

при додаванні коментаря.

Необхідні умови для використання даного програмного продукту:

ASP.NET-сайт - це динамічний сайт, створений на сучасній технологічній платформі від фірми Microsoft - ASP.NET із застосуванням сучасної мови програмування - C # (Сі шарп). В ASP.NET-сайтах в якості сховища даних використовується база даних MS SQL

ASP.NET-сайт має ще одну велику перевагу: ASP.NET код сайту і дизайн сайту можуть бути розділені, що робить код найбільш структурованим і читабельним. Це дозволяє при необхідності вести розробку дизайну та програмного коду паралельно, прискорюючи час розробки, роблячи при цьому створення ASP сайту набагато більш технологічні.

· Microsoft .NET Framework 2.0 або старше

· Microsoft Internet Information Services (IIS) або вбудований веб-сервер для Visual Studio/Visual Web Developer 2005/2008/2010

· Microsoft SQL Server 2005, 2008, 2008 R2 (включаючи безкоштовну версію SQL Server Express Edition)

· Firefox 1.0.5+

· Chrome

· Mozilla 1.7.1+

· ASP.NET 2.0 (або старше) і підтримка Microsoft SQL Server 2005/2008

Код програми

NewPost.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" ValidateRequest="false"

AutoEventWireup="true" CodeBehind="NewPost.aspx.cs" Inherits="Blog.NewPost" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<div class="new-post gradient">

<div class="field-edit">

<asp:Label for="txttitle" ID="lblTitle" CssClass="labels" Text="Заголовок" runat="server"></asp:Label>

<asp:TextBox ID="txtTitle" MaxLength="256" runat="server" CssClass="txtTitle"></asp:TextBox>

<asp:RequiredFieldValidator runat="server" ID="valTitle" ControlToValidate="txtTitle"

Display="Dynamic" ErrorMessage="Required Field" CssClass="ValidatorField"></asp:RequiredFieldValidator>

<asp:RegularExpressionValidator ID="regTitle" runat="server" ErrorMessage="Incorrect character"

ControlToValidate="txtTitle" ValidationExpression="^.{0,256}$" CssClass="RegExpression" />

</div>

<div class="field-edit" id="panel">

<input type="button" id="bold" style="height: 21px; width: 21px; font-weight: bold;"

value="B" onclick="fontEdit('bold')" />

<input type="button" id="italic" style="height: 21px; width: 21px; font-style: italic;"

value="I" onclick="fontEdit('italic')" />

<input type="button" id="underline" style="height: 21px; width: 21px; text-decoration: underline;"

value="U" onclick="fontEdit('underline')" />

<input type="button" style="height: 21px; width: 21px;" value="L" onclick="fontEdit('justifyleft')"

title="align left" />

<input type="button" style="height: 21px; width: 21px;" value="C" onclick="fontEdit('justifycenter')"

title="center" />

<input type="button" style="height: 21px; width: 21px;" value="R" onclick="fontEdit('justifyright')"

title="align right" />

</div>

<div class="field-edit">

<asp:Label for="txtContent" ID="lblContent" CssClass="labels" Text="Пост" runat="server"></asp:Label>

<asp:TextBox ID="txtContent" TextMode="MultiLine" BorderStyle="Solid" CssClass="txtContent"

runat="server"></asp:TextBox>

<asp:RequiredFieldValidator runat="server" ID="valContent" ControlToValidate="txtContent"

Display="Dynamic" ErrorMessage="Required Field" CssClass="ValidatorField"></asp:RequiredFieldValidator>

</div>

<div class="field-edit">

<asp:Label for="txtAuthor" ID="lblAuthor" CssClass="labels" Text="Автор" runat="server"></asp:Label>

<asp:TextBox ID="txtAuthor" MaxLength="256" CssClass="txtAuthor" runat="server"></asp:TextBox>

<asp:RequiredFieldValidator runat="server" ID="valAuthor" ControlToValidate="txtAuthor"

Display="Dynamic" ErrorMessage="Required Field" CssClass="ValidatorField"></asp:RequiredFieldValidator>

<asp:RegularExpressionValidator ID="regAuthor" runat="server" ErrorMessage="Incorrect character"

ControlToValidate="txtAuthor" ValidationExpression="^.{0,100}$" CssClass="RegExpression" />

</div>

<div class="field-edit">

<asp:Label for="txtTags" ID="lblTags" CssClass="labels" Text="Метки" runat="server"></asp:Label>

<asp:TextBox ID="txtTags" MaxLength="256" CssClass="txtTags" runat="server"></asp:TextBox>

<asp:RequiredFieldValidator runat="server" ID="valTags" ControlToValidate="txtTags"

Display="Dynamic" ErrorMessage="Required Field" CssClass="ValidatorField"></asp:RequiredFieldValidator>

<asp:RegularExpressionValidator ID="regTags" runat="server" ErrorMessage="Incorrect character"

ControlToValidate="txtTags" ValidationExpression="^.{0,256}$" CssClass="RegExpression" />

</div>

<asp:Button ID="btnCreate" Text="Create" runat="server" CssClass="btnStyle" OnClick="btnCreate_Click" />

</div>

</asp:Content>

NewPost.aspx.cs

namespace Blog

{

public partial class NewPost : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void btnCreate_Click(object sender, EventArgs e)

{

if (!Page.IsValid)

return;

using (BlogDataDataContext context = new BlogDataDataContext())

{

Post post = new Post();

post.Title = txtTitle.Text;

post.Content = txtContent.Text;

post.Author = txtAuthor.Text;

post.Date = DateTime.Now;

post.Tags = txtTags.Text;

context.Posts.InsertOnSubmit(post);

context.SubmitChanges();

}

Response.Redirect("~/Posts.aspx");

}

}

}

Posts.aspx.cs

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<asp:Repeater runat="server" ID="rptPosts">

<ItemTemplate>

<div class="posts gradient">

<h1 class="title">

<a href="/Post.aspx?id=<%#Eval("Id")%>">

<%#Eval("Title")%></a>

</h1>

<img src="../Styles/line.png" alt="line" class="line" />

<div class="field-post">

<span class="author">

<%#Eval("Author")%></span>

<img src="../Styles/divorce.gif" alt="divorce" class="line" /><span class="tags"><a

href="Posts.aspx?tag=<%#Eval("Tags")%>">

<%#Eval("Tags")%></a><img src="../Styles/divorce.gif" alt="divorce" class="line" /></span>

<span class="date">

<%#Eval("Date")%></span></div>

<div class="contentPost">

<p>

<%#GetPreview((string)Eval("Content"))%>

</p>

</div>

<div class="navigation">

<div class="line-labels italic">

<a href="/Post.aspx?id=<%#Eval("Id")%>"><span class="buttons">Continue reading...</a>

</span> <a href="/EditPage.aspx?id=<%#Eval("Id")%>"><span class="buttons">Edit</a></span>

<a href="Posts.aspx"></a>

</div>

</div>

</div>

</ItemTemplate>

</asp:Repeater>

<a runat="server" id="linkPrevPage">&#8592; Назад</a> <a runat="server" id="linkNextPage">

Вперёд &#8594;</a>

</asp:Content>

Post.aspx.cs

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">

</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<div class="post gradient">

<h1 class="title">

<asp:Label ID="lbltitle" CssClass="title" runat="server"></asp:Label></h1>

<div class="post-line"><asp:Label ID="lblAuthor" CssClass="author" runat="server"></asp:Label>

<asp:Label ID="lblTags" CssClass="tags" runat="server"></asp:Label>

<asp:Label ID="lblDate" CssClass="date" runat="server"></asp:Label></div>

<p><asp:Label ID="lblContent" CssClass="contentPost" runat="server"></asp:Label></p>

<span class="buttons"><asp:LinkButton ID="lbtnDelete" runat="server" OnClick="lbtnDelete_Click">Delete</asp:LinkButton></span>

<span class="buttons"><a id="lbtnEdit" runat="server">Edit</a></span>

<div id="disqus_thread">

</div>

<script type="text/javascript">

var disqus_developer = 1;

/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */

var disqus_shortname = 'blogoksanatunik'; // required: replace example with your forum shortname

/* * * DON'T EDIT BELOW THIS LINE * * */

(function () {

var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;

dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';

(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);

})();

</script>

<noscript>

Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments

powered by Disqus.</a></noscript>

<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">

Disqus</span></a>

</div>

<div id="fb-root">

</div>

</asp:Content>

Posts.aspx.cs

namespace Blog

{

public partial class Posts : System.Web.UI.Page

{

private int postCount = 5;

//number of the page

//Posts.aspx?page=4

protected int CurrentPage

{

get

{

int page = 0;

if (Request["page"] != null)

{

if (int.TryParse(Request["page"], out page))

return page;

}

return 0;

}

}

protected string CurrentTag

{

get

{

if (Request["tag"] != null)

return Request["tag"];

return null;

}

}

protected bool HasPreviousPage

{

get

{

return CurrentPage != 0;

}

}

protected bool HasNextPage

{

get

{

return CurrentPage < GetPageCount() - 1;

}

}

protected void Page_Load(object sender, EventArgs e)

{

BindPosts();

linkPrevPage.Visible = HasPreviousPage;

var param = "";

if (CurrentTag != null)

param = "tag=" + CurrentTag + "&";

linkPrevPage.HRef = "/posts.aspx?" + param + "page=" + (CurrentPage - 1);

linkNextPage.Visible = HasNextPage;

linkNextPage.HRef = "/posts.aspx?" + param + "page=" + (CurrentPage + 1);

}

private void BindPosts()

{

using (BlogDataDataContext context = new BlogDataDataContext())

{

IEnumerable<Post> posts = null;

if (CurrentTag != null)

posts = context.Posts.Where(p => p.Tags.Contains(CurrentTag));

else

posts = context.Posts;

rptPosts.DataSource = posts.Skip(CurrentPage * postCount).Take(postCount).OrderByDescending(d => d.Date).ToList();

rptPosts.DataBind();

}

}

private int GetPageCount()

{

using (BlogDataDataContext context = new BlogDataDataContext())

{

int count = 0;

if (CurrentTag != null)

count = context.Posts.Where(p => p.Tags.Contains(CurrentTag)).Count();

else

count = context.Posts.Count();

if (count % postCount != 0)

return count / postCount + 1;

return count / postCount;

}

}

protected string GetPreview(string str)

{

//Read more(Preview)

var index = str.IndexOf("<!--preview-->");

if (index == -1)

return str;

return str.Substring(0, index);

}

Висновок

Виконуючи дану курсову роботу, було практично закріплено вивчений курс архітектури програмного забезпечення. Було здобуто корисні навички у користуванні такими програмними продуктами як HTML, Visual Studio, SQL, Photoshop. Якість програмного продукту досягається завдяки простій і гнучкій архітектурі і гарантується процесом розробки. Саме тому було засвоєно основні критерії якості при побудові ПО:

- зачеплення (ступінь зв'язків між окремими модулями);

- примітивність;

- повнота;

- достатність;

- зв'язність (ступінь взаємодії між елементами модуля).

Список використаної літератури

1. Дино Эспозито «Microsoft ASP.NET 2.0. Базовый курс».

2. Патриция Пелланд, Пскаль Паре и Кен Хайнс «Переход к Microsoft Visual Studio 2010».

3. Бикнер К. «Экономичный Web-дизайн».

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


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

  • Основні підходи до проектування баз даних. Опис сайту Інтернет-магазину, характеристика його підсистем для обробки анкет і запитів користувачів. Розробка концептуальної, інфологічної, даталогічної, фізичної моделей даних. Побудова ER-моделі в CASE-засоби.

    курсовая работа [2,3 M], добавлен 01.02.2013

  • Основи використання інформаційних технологій у галузі освіти. Створення електронного щоденника мовою програмування. Вибір середовища розробки. Установка, налаштування та проектування шаблону програми. Наповнення сайту інформацією та створення бази даних.

    магистерская работа [3,9 M], добавлен 25.02.2014

  • Інтернет-магазин як веб-сайт, що рекламує товар, приймає замовлення на покупку. Процес створення програмного продукта від викладення вимог до написання коду, відладки та тестування. Потреби адміністраторів інтернет-магазину. Мова програмування сайту.

    курсовая работа [1,0 M], добавлен 25.11.2010

  • Поняття "скрипт" в Інтернет-технологіях. Сфера застосування скриптів. Список подій, доступних в кожному окремому браузері. Виведення координат точки. Читання з клавіатури. Розробка сайту "Armin Van Buuren – A State Of Trance". Використання об’єкту Event.

    курсовая работа [2,8 M], добавлен 11.09.2012

  • Розробка сайту інтернет-магазину комп’ютерної техніки. Структура об’єктів і зв’язків предметної області: головна, таблиці менеджерів, складу, інформація про товар, сторінки користувачів, покупців. Створення резервної копії бази даних, рhp програма.

    курсовая работа [3,4 M], добавлен 06.08.2013

  • Сутність інформаційного обслуговування користувачів. Створення веб-сайту та віртуальної виставки інформаційної установи, за допомогою яких відбувається обслуговування в мережі Інтернет. Порівняльний аналіз віртуальних довідкових служб двох бібліотек.

    дипломная работа [73,6 K], добавлен 23.11.2011

  • Обґрунтування потреби, поняття, класифікація, проектування та етапи розробки веб-сайту. Вибір програмних засобів, розробка інтерфейса і бази даних. Динамічна мова розмітки гіпертекстових документів DHTML. Розміщення категорій товарів в on-line магазині.

    дипломная работа [1,5 M], добавлен 04.08.2009

  • Етапи розробки проекту. Вимоги до апаратного і програмного забезпечення, до користувача. Специфікація та структура даних, які мають бути розміщеними в системі. Вигляд інтерфейсу системи програмного забезпечення. Розробка бази даних косметичного салону.

    дипломная работа [1,8 M], добавлен 21.02.2015

  • Розробка системи, призначеної для автоматизації процесу реєстрації користувачів (студентів-першокурсників) в базі даних Active Directory. Інформаційне, програмне та технічне забезпечення проекту. Керівництво користувача та системного програміста.

    курсовая работа [603,6 K], добавлен 19.11.2013

  • Загальні відомості про протоколи: Інтернету, управління передачею, користувача. Функції та структури, які беруть участь у реалізації алгоритму передачі даних. Виклик та завантаження, розробка структури програми. Вхідні та вихідні данні з сервера.

    курсовая работа [1,5 M], добавлен 01.12.2010

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