Разработка интернет-магазина для ООО "Компас"

Анализ объектно-ориентированной технологии программирования на примере языка Java. Методы, инструменты разработки web-приложений. Применение их при создании Интернет-магазина для ООО "Компас". Разработка апплета для его страницы в виде стрелочных часов.

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

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

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

- secondsNeedleColor - цвет секундной стрелки.

Цвета задаются в 16-тиричной системе счисления, а цветовая схема - ARGB (alpha, red, green, blue).

При этом FF соответствует максимально насыщенному цвету (или нулевой прозрачности), а 00 - отсутствию данной составляющей в цвете (или 100% прозрачности).

Так же для настройки часов, можно использовать несколько параметров:

- FFFFFFFF - не прозрачный белый цвет;

- 7F000000 - черный цвет (~50% прозрачность);

- 7F0000FF - синий цвет (~50% прозрачность);

- 7F00FF00 - зеленый цвет (~50% прозрачность).

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

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

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

ЗАКЛЮЧЕНИЕ

Апплеты были первоначальным практическим применением Java. За первые два года существования Java были написаны тысячи очень интересных и красивых апплетов, ожививших WWW. Масса апплетов разбросана по Internet, хорошие примеры апплетов собраны в JDK в каталоге demo\applets.

В JDK вошел целый пакет java.applet, в который фирма SUN собиралась заносить классы, развивающие и улучшающие апплеты.

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

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

Фирма SUN больше не развивает пакет java.applet. В нем так и остался один класс и три интерфейса. В библиотеку Swing вошел класс JApplet, расширяющий класс Applet. В нем есть дополнительные возможности, например, можно установить систему меню. Он способен использовать все классы библиотеки Swing. Но большинство браузеров еще не имеют Swing в своем составе, поэтому приходится загружать классы Swing с сервера или включать их в jar-архив вместе с классами апплета.

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

- получены знания по теоретическим концепциям объектно - ориентированной методологии и технологии программирования;

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

- получены практические навыки разработки консольных приложений, апплетов на языке Java - 2 в среде jdk1.4.1 или Netbeans.

Результатом исследования деятельности ООО «Компас», проводимого в рамках настоящей курсовой работы, является создание Интернет - магазина для ООО «Компас».

Были решены основные задачи исследования:

- выполнен системный анализ предметной области и деятельности объекта автоматизации;

- построена модель «AS - IS» по результатам обследования объекта автоматизации;

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

- описан разработанный Интернет-магазин для ООО « Компас»;

- описаны алгоритмы разработки и работы Интернет-магазина;

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ

объектный программирование интернет магазин

1. Ахромов Я.В. Технологии web - дизайна и flash - технологии. - Р-н/Д.: Феникс, 2004

2. Благодатских В.А. Стандартизация разработки программных средств. - М.: Финансы и статистика, 2005

3. Вайк Ален и др. JavaScript. Справочник. Пер. с англ. - СПб.: ООО «М.: ДиаСофтЮП, 2002

4. Венц К., Хаузер Т. Как создать свой сайт: Самоучитель/ Пер. с нем. - М.: НТ Пресс, 2006

5. Гамма Э. Приемы объектно-ориентированного проектирования. Паттерны проектирования. / Гамма Э., Хелм Р., Джонсон Р., Влиссидес ДЖ. - СПб.: Питер, 2012

6. Зельдман Д. Web - дизайн по стандарту: пер. с англ. - М.: НТ Пресс, 2005

7. Лещев Д. Создание интерактивного web - сайта: учебный курс. - СПб.: Питер, 2003

8. Ноблес Р., Керри - Лэй Г. Эффективный web - сайт: учебное пособие. - М.: ТРИУМФ, 2004

9. Орлов С.А. Технологии разработки программного обеспечения: Учебник для вузов. - 3-е изд., СПб.: Питер, 2004

10. Хабибуллин И.Ш. Самоучитель java 2. - СПб.: БХВ - Петербург, 2005

11. Хорев П.Б. Технологии объектно-ориентированного программирования: Учебное пособие для вузов. - М.: Академия, 2004

12. Эккель Б. Философия Java. Библиотека программиста. - СПб.: Питер, 2003

ПРИЛОЖЕНИЯ

Приложение 1

// реализация класса CircleClock

package clock;

/*

* CircleClock.java

*

* Created on sen2013/

*/

import java.awt.*;

import java.awt.image.*;

import java.awt.geom.*;

import java.util.Calendar;

public class CircleClock extends java.applet.Applet implements Runnable {

/**

private static final long serialVersionUID = 1L;

private Needle hNeedle, mNeedle, sNeedle;

private ClockDial dial;

private int w, h;

private BufferedImage bi;

private Graphics2D big;

private boolean stop = false;

private Thread timer = null;

private Color dialColor = Color.YELLOW;

private Color hairLineColor = Color.GREEN;

private Color hoursColor = Color.BLACK;

private Color minutesColor = Color.BLUE;

private Color secondsColor = Color.RED;

/** Этот метод будет вызван после загрузки апплета */

public void init() {

try {

ПРИЛОЖЕНИЕ 1 (продолжение)

//Создаем объекты и устанавливаем начальные значения.

Dimension dim = getSize();

w = dim.width;

h = dim.height;

//устанавливаем цвета стрелок и циферблата

setColors();

//Создаем стрелки

int radius = 0;

if(w < h)

radius = w/2;

else

radius = h/2;

mNeedle = new Needle(radius, radius/5); //минутная стрелка

hNeedle = new Needle(2d/3d*radius, radius/4); //часовая стрелка

sNeedle = new Needle(radius, radius/10); //секундная стрелка

//создаем циферблат

dial = new ClockDial(radius*2, dialColor, hairLineColor);

//Создаем изображение и получаем его объект Graphics2D.

//Рисовать будем только на нем, а экран выводим уже

//готовый рисунок (т.н. двойная буферезация).

bi = (BufferedImage)createImage(w, h);

big = bi.createGraphics();

big.setRenderingHint(RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

//Создаем поток, который будет периодически вызывать метод update.

timer = new Thread(this);

timer.start(); }

catch(Exception error) {

System.out.println(error.getMessage());

ПРИЛОЖЕНИЕ 1 (продолжение)

}

}

/** Этот метод выполняет перерисовку окна апплета */

public void update(Graphics g) {

try {

//Получаем указатель на объект Graphics2D

Graphics2D g2 = (Graphics2D)g;

grawClock();

//Рисуем готовое изображение на экране

g2.drawImage(bi, 0, 0, this);

big.setTransform(new AffineTransform());

}

catch(Exception error) {

System.out.println(error.getMessage());

}

}

private void grawClock() {

//Узнаем текущее время

Calendar curTime = Calendar.getInstance();

curTime.setTimeInMillis(System.currentTimeMillis());

double hour = curTime.get(Calendar.HOUR_OF_DAY);

double min = curTime.get(Calendar.MINUTE);

double sec = curTime.get(Calendar.SECOND);

//Очищаем рисунок

big.setBackground(Color.WHITE);

big.clearRect(0, 0, w, h);

//Рисуем циферблат

Point luCorner = new Point(0, 0);

if(w > h)

ПРИЛОЖЕНИЕ 1 (продолжение)

{

luCorner.x = (w - h)/2;

luCorner.y = 0;

}

else

{

luCorner.x = 0;

luCorner.y = (h - w)/2;

}

big.drawImage(dial.getClockDial(), null, luCorner.x, luCorner.y);

//Рисуем стрелки

big.setColor(hoursColor);

AffineTransform hat = new AffineTransform();

hat.translate(w/2 - hNeedle.getRotationCenter().x,

h/2 - hNeedle.getRotationCenter().y);

/*Рассчитываем угол поворота часовой стелки. Каждый час на

12-ти часовом циферблате соответствует 30-ти градусам, а 1

минута - 0.5 градуса. Затем результат переводим в радианы. */

if(hour >= 12)

hour -= 12;

double theta = (-90 + (30*hour + 0.5*min))*Math.PI/180;

hat.rotate(theta, hNeedle.getRotationCenter().x,

hNeedle.getRotationCenter().y);

big.setTransform(hat);

big.fill(hNeedle.getNeedle());

big.setColor(minutesColor);

AffineTransform mat = new AffineTransform();

mat.translate(w/2 - mNeedle.getRotationCenter().x,

h/2 - mNeedle.getRotationCenter().y);

ПРИЛОЖЕНИЕ 1 (продолжение)

/*Рассчитываем угол поворота минутной стелки. Каждая минута на

12-ти часовом циферблате соответствует 6-ти градусам, а 1

секунда - 0.1 градуса. Затем результат переводим в радианы. */

theta = (-90 + (6*min + 0.1*sec))*Math.PI/180;

mat.rotate(theta, mNeedle.getRotationCenter().x,

mNeedle.getRotationCenter().y);

big.setTransform(mat);

big.fill(mNeedle.getNeedle());

big.setColor(secondsColor);

AffineTransform sat = new AffineTransform();

sat.translate(w/2 - sNeedle.getRotationCenter().x,

h/2 - sNeedle.getRotationCenter().y);

/*Рассчитываем угол поворота сеундной стелки. Каждая секунда на

12-ти часовом циферблате соответствует 6-ти градусам.

Затем результат переводим в радианы. */

theta = (-90 + (6*sec))*Math.PI/180;

sat.rotate(theta, sNeedle.getRotationCenter().x,

sNeedle.getRotationCenter().y);

big.setTransform(sat);

big.fill(sNeedle.getNeedle()); }

//Этот метод читает параметры апплета, и устанавливает

//цвета стрелок и циферблата.

private void setColors() {

try {

/* Вообще-то, для задания цвета нужно число типа int, т.е. 4 байта,

но int - это число со знаком (от "-2^31" до "2:31 - 1"), а нам

нужно число с диапазоном от "0" до "2^32", т.е. те же 4 байта,

но без знака. Для этого мы сначала создаем число типа Long, а

затем, с помощью метода intValue() получаем тип int. */

ПРИЛОЖЕНИЕ 1 (продолжение)

Long dc = new Long(Long.parseLong(getParameter("dialColor"), 16));

Long hlc = new Long(Long.parseLong(getParameter("hairLineColor"), 16));

Long hnc = new Long(Long.parseLong(getParameter("hoursNeedleColor"), 16));

Long mnc = new Long(Long.parseLong (getParameter ("minutesNeedleColor"), 16));

Long snc = new Long(Long.parseLong(getParameter ("secondsNeedleColor"), 16));

dialColor = new Color(dc.intValue(), true);

hairLineColor = new Color(hlc.intValue(), true);

hoursColor = new Color(hnc.intValue(), true);

minutesColor = new Color(mnc.intValue(), true);

secondsColor = new Color(snc.intValue(), true);

}

catch(Exception error) {

System.out.println(error.getMessage());

}

}

//Этот метод выполняется в отдельном потоке (timer).

//Он вызывает перерисовку окна апплета каждую секунду.

public void run() {

while(!stop) {

try {

repaint();

Thread.currentThread().sleep(1000);

}

catch(Exception err) {}

}

}

//Этот метод выполняется если пользователь покинул страницу

//с апплетом. Он останавливает поток (timer) и, соответственно,

//перерисовку окна апплета.

public void stop() {

super.stop();

stop = true;

}

//Этот метод выполняется когда пользователь попадает на страницу

//с апплетом. Он запускает парралельный поток (timer).

public void start() {

super.start();

stop = false;

if(timer == null) {

timer = new Thread(this);

timer.start();

} }

//Этот метод выполняется при закрытии страницы с апплетом.

public void destroy() {

super.destroy();

stop = true;

//Ждем пока парралельный поток (timer) завершит работу.

Thread.currentThread().yield();

}

public String[][] getParameterInfo() {

String[][] retValue = {

{"dialColor", "hex", "alfa, red, green, blue (4 bytes, from 00 to FF)"},

{"hairLineColor", "hex", "alfa, red, green, blue (4 bytes, from 00 to FF)"},

{"hoursNeedleColor", "hex", "alfa, red, green, blue (4 bytes, from 00 to FF)"},

{"minutesNeedleColor", "hex", "alfa, red, green, blue (4 bytes, from 00 to FF)"},

{"secondsNeedleColor", "hex", "alfa, red, green, blue (4 bytes, from 00 to FF)"}

};

return retValue;

}

public String getAppletInfo() {

String retValue;

retValue = "Circle Clock";

return retValue;

}

}

// реализация класса ClockDial

package clock;

/*

* ClockDial.java

*

* Created on май 2009 г.

*/

import java.awt.*;

import java.awt.geom.*;

import java.awt.image.*;

/**

*

* @author Бочкарева Мария

*/

public class ClockDial {

private double diam;

private BufferedImage dial;

private Color dialColor;

private Color hairLineColor;

/** Создает экземпляры <code>ClockDial</code>. При создании

* необходимо указать диаметр циферблата.

*

* @param diam диаметр циферблата.

*

* @param dialColor цвет циферблата.

*

* @param hairLineColor цвет черточек на циферблате.

*

* @exception IncorrectParametersException - если диаметр меньше

* или равен нулю.

*/

public ClockDial(double diam, Color dialColor, Color hairLineColor)

throws IncorrectParametersException {

//проверяем диаметр

if(diam <= 0)

throw new IncorrectParametersException();

this.diam = diam;

this.dialColor = dialColor;

this.hairLineColor = hairLineColor;

//создаем рисунок

dial = new BufferedImage((int)diam, (int)diam,

BufferedImage.TYPE_INT_ARGB);

//создаем черточку на циферблате

Rectangle2D.Double r = new Rectangle2D.Double(-diam/40, -diam/60, diam/20, diam/30);

AffineTransform at = new AffineTransform();

//смещаем начало координат в центр циферблата

at.translate(diam/2, diam/2);

//сохраняем текущее преобразование

AffineTransform prev = (AffineTransform)at.clone();

//получаем графический контекст

Graphics2D g2 = dial.createGraphics();

//закрашиваем все заданным цветом

g2.setBackground(dialColor);

g2.clearRect(0, 0, (int)diam, (int)diam);

//устанавливаем цвет черточек

g2.setColor(hairLineColor);

//рисуем 12 штрихов

for(int i = 0; i < 12; i++)

{

//смещаем центр координат к краю циферблата (туда,

//где должен быть расположен штрих)

at.translate(-(diam/2 - r.width), 0);

//поворачиваем штрих относительно центра циферблата

at.rotate(Math.toRadians(30*i), diam/2 - r.width, 0);

//устанавливаем текущее преобразование

g2.setTransform(at);

//рисуем штрих

g2.fill(r);

//восстанавливаем начальное преобразование

at.setTransform(prev);

}

}

/**

* Возвращает изображение циферблата.

*

* @return BufferedImage рисунок, содержащий изображение циферблата

*/

public BufferedImage getClockDial() {

return dial;

}

}

// реализация класса IncorrectParametersException

package clock;

/*

* IncorrectParameters.java

*

* Created on май 2009 г.

* */

/**

*

* @author Бочкарева Мария

*/

public class IncorrectParametersException extends java.lang.Exception {

/**

*

*/

private static final long serialVersionUID = 1L;

/**

* Creates a new instance of <code>IncorrectParameters</code> without detail message.

*/

public IncorrectParametersException() {

this("IncorrectParameters");

}

/**

* Constructs an instance of <code>IncorrectParameters</code> with the specified detail message.

* @param msg the detail message.

*/

public IncorrectParametersException(String msg) {

super(msg);

}

}

// реализация класса Needle

package clock;

/*

* Needle.java

* Created on май 2009 г.

*/

import java.awt.*;

import java.awt.geom.*;

/**

* Этот класс предназначен для создания стрелки часов

* @author Бочкарева Мария

*/

public class Needle {

private GeneralPath shape;

private double length, width;

/** Создает экземпляры класса <code>Needle</code>.

* При создании необходимо указать длину и ширину стрелки.

* Длина должна быть больше ширины.

* @param length длина стрелки

* @param width длина стрелки

* @exception IncorrectParametersException - если длина меньше или

* равна нулю, если ширина меньше или равна нулю, если длина

* меньше или равна ширине.

*/

public Needle(double length, double width)

throws IncorrectParametersException {

//проверяем параметры

if(length <= 0 || width <=0 || length <= width)

throw new IncorrectParametersException();

this.length = length;

this.width = width;

//создаем графический объект

shape = new GeneralPath();

shape.moveTo(0f, (float)width/2);

shape.lineTo((float)width/2, 0);

shape.lineTo((float)length, (float)width/2);

shape.lineTo((float)width/2, (float)width);

shape.closePath();

}

/**

* Возвращает стрелку в виде объекта типа <code>Shape</code>.

* @return Shape - фигура, содержащая изображение стрелки

*/

public Shape getNeedle() {

return shape;

} /**

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


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

  • Факторы, влияющие на пропускную способность в беспроводных сетях. Использование скриптового языка программирования PHP для разработки базы данных интернет-магазина, его основные преимущества. Современные методы и средства тестирования web-приложений.

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

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

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

  • Описание программного обеспечения для разработки Интернет-магазина. Установка программы WYSIWYG Web Builder v3.2.0. Создание структурного макета Интернет-магазина. Проектирование главной страницы с перечнем товарных наименований (на примере TV.html).

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

  • Разработка интернет-магазина мужской и женской одежды и аксессуаров. Требования к техническим характеристикам сайта (трафик, надежность, безопасность). Выбор методов сопровождения интернет-магазина. Подключение интернет-магазина к платежным системам.

    отчет по практике [2,9 M], добавлен 01.05.2015

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

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

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

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

  • Проектирование книжного интернет-магазина для реализации книжной продукции через Интернет. Анализ и обоснование выбора языков программирования и средств разработки сайта. Затраты внедрение сайта, его программное обеспечение, тестирование и отладка.

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

  • Основные преимущества торговли в интернете. Современные тенденции развития языков программирования. Особенности и возможности языка PHP, основные области применения. Проектирование БД с помощью SQLServer. Разработка структуры интернет–магазина футболок.

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

  • Анализ сравнения интернет-магазина и электронного магазина. Проектирование структуры web-сайта. Обработка заказа. Основное понятие языка php. Средства безопасности системного уровня приложения. Разработка структуры базы данных и структуры web-сайта.

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

  • Обоснование выбора языка программирования для создания интернет магазина. Построение виртуальных страниц. Определение затрат на создание Web-сайта. Расчет трудоемкости создания программного продукта. Использование HTML как языка разметки гипертекста.

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

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