Разработка интернет-магазина для ООО "Компас"
Анализ объектно-ориентированной технологии программирования на примере языка 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