Жарков В.А. - Visual C++ 2005, DirectX 9.0c и Microsoft Agent в компьютерной графике, мультимедиа и играх (Листинги книги) - 2005
.pdfГлава 65. Установка веб-компонентов Windows для веб-программирования на ос-
нове ASP.NET
Веб-программирование заключается в создании коммуникации между клиентами и серверами в изолированной локальной (например, корпоративной) и глобальной (Интернет) сети. Под словом “клиенты” понимаются установленные на компьютеры программные продукты (например, платформа Visual Studio) пользователей, которые при помощи браузера, например, Internet Explorer и веб-службы получают какуюлибо информацию с сервера. Под словом “серверы” понимаются программные продукты, установленные на компьютеры провайдеров (предоставляющие услуги хостинга), которые размещают у себя приложения в виде сайтов и при помощи вебслужбы посылают информацию с сайтов на браузер пользователя по его запросу.
Веб-приложение и веб-службу мы должны разрабатывать на базе известного программного продукта корпорации Microsoft, который называется Internet Information Services (IIS) - Информационные службы Интернета. Эти службы IIS поставляются в комплекте со всеми операционными системами Windows 98/2000/XP/Server 2003, однако перед работой их нужно запустить в режим Started (Работает); по умолчанию службы находятся в режиме Stopped (Отключено), о чем мы расскажем в следующем параграфе.
12. Открываем панель командной строки (по схеме: Start (Пуск), Programs (Все программы), Visual Studio, Visual Studio .NET Tools, Visual Studio .NET Command Prompt) и в этой панели Visual Studio Command Prompt в командной строке над ми-
гающим курсором записываем следующую команду для инсталляции ASP.NET (Active Server Pages .NET), рис. 65.7:
aspnet_regiis –i (или команду aspnet_regiis /i)
и нажимаем клавишу Enter. Появляется строка:
Start installing ASP.NET (1.1.4322.0)
а через некоторое время – строка об окончании инсталляции (рис. 65.7):
Finished installing ASP.NET (1.1.4322.0)
Далее уже можно разрабатывать проекты веб-приложений и веб-служб по методике, описанной в наших предыдущих книгах [7-9]. Методику разработки вебслужбы на базе новой платформы Visual Studio 2005 мы рассмотрим в следующей главе.
Глава 66. Методика разработки вебслужбы
Листинг 66.1. Автоматически сгенерированный код.
// WebService1Class.h #pragma once
using namespace System; using namespace System::Web;
using namespace System::Web::Services; namespace WebService1
{
///WARNING: If you change the name of this class,
///you will need to change the
///'Resource File Name' property
///for the managed resource compiler tool
///associated with all .resx files
///this class depends on. Otherwise,
///the designers will not be able
///to interact properly with localized
///resources associated with this form.
public ref class WebService1Class :
public System::Web::Services::WebService
{
public:
WebService1Class()
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
void Dispose(Boolean disposing)
{
if (disposing && components)
{
components->Dispose();
}
__super::Dispose(disposing);
}
private:
/// <summary>
292Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C++ 2005
///Required designer variable.
/// </summary> System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
///<summary>
///Required method for Designer support -
///do not modify
///the contents of this method
///with the code editor.
///</summary>
void InitializeComponent()
{
}
#pragma endregion
//WEB SERVICE EXAMPLE
//The HelloWorld() example service returns
//the string "Hello, World!".
//To test this web service, ensure
//that the .asmx file in the deployment path is
//set as your Debug HTTP URL,
//in project properties.
//and press F5.
public:
[System::Web::Services::WebMethod] String ^HelloWorld();
// TODO: Add the methods of your Web Service here
};
}
На листинге 66.1 в коде примера: public:
[System::Web::Services::WebMethod] String ^HelloWorld();
показан синтаксис добавления любого нашего метода.
Видно, что в объявлении метода записан тэг [System::Web:: Services:: WebMethod], который позволяет клиенту использовать этот метод. Мы можем записать любой наш метод и без этого тэга, но тогда этот метод не будет доступен клиенту.
Часть XII. Создание баз данных и интеграция с другими СУБД
Глава 67. Создание баз и наборов данных
Листинг 67.1. Объявление и создание экземпляра набора данных.
private: System::Void button1_Click( System::Object^ sender, System::EventArgs^ e)
{
DataSet^ ds1 = gcnew DataSet();
}
Листинг 67.2. Код для выполнения анимации.
//Объявляем булеву переменную myHeight со значением false: bool static myHeight = false;
private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)
{
//Программируем анимацию: if (myHeight == false)
{
//Изменяем высоту форме до 500: this->Height = 500;
//Изменяем значение myHeight на противоположное: myHeight = true;
}
else
{
//Изменяем высоту форме до 490: this->Height = 490;
//Изменяем значение myHeight на противоположное: myHeight = false;
}
}
Глава 68. Разработка баз данных при помощи шаблонов на основе SQL Server 2005
В Visual Studio 2005 существует несколько вариантов разработки баз данных с использованием специальных шаблонов. В качестве первого примера рассмотрим шаблон SQL Server Class Library, основанный на использовании библиотеки специ-
альных классов. В VS щелкаем New Project (или File, New, Project), в панели New Project (рис. 68.1) в окне Project Types выбираем Visual C++, в окне Templates выде-
ляем шаблон SQL Server Class Library, в окне Name записываем имя проекта SQLServerClassLibrary1, в окне Location оставляем по умолчанию (или выбираем новый) путь к папке, в которой будет расположен проект, щелкаем OK.
Часть XIII. Приложения Visual C++ для использования на практике, например, в промышленности
Глава 69. Алгоритмы для расчета площади, объема и массы изделий и заготовок
Напомним, что перед нами стоит задача: разработать методологию создания вычислительной системы из различных приложений комплекса Visual C++ с использованием элементов компьютерной графики. Если в предыдущих главах мы разрабатывали приложения для математических вычислений и построения графиков функций, то с этой главы начнем разрабатывать приложения для решения практических проблем в науке и технике (например, в промышленности, строительстве, сельском хозяйстве и т.д.). Одной из самых распространенных таких проблем является определение площади поверхности, объема и массы любого изделия (вещи, продукта, детали), которое или уже изготавливается, или планируется изготавливать (выпускать). Расчет площади поверхности, объема и массы необходимо выполнять абсолютно для всех изделий (как вновь спроектированных, так и существующих, но, например, модернизированных изделий); такой расчет является самостоятельной (часто сложной) инженерной задачей, которая обычно решается приближенно с заданной точностью. Для решения этой задачи будем использовать объектноориентированную философию, которая (как уже отмечалось) включает три основных понятия: объектно-ориентированный анализ; объектно-ориентированное проектирование и объектно-ориентированное программирование ООП (Object Oriented Programming, OOP). С целью реализации принципов объектно-ориентированной философии сначала необходимо разработать класс объектов-изделий.
В этой главе перед нами стоит задача: разработать методику расчета массы заданного по чертежу изделия (детали). Поэтому для нас важным становится следующий (за технологическим признаком) признак классификации, а именно: геометрическая форма изделий. Существует много классификаций изделий по геометрической форме. Для примера выбранную (заранее по технологическому признаку) номенклатуру изделий мы разделим по геометрической форме на следующие классы объектов-изделий:
1.Класс объектов-изделий типа стакана.
2.Класс объектов-изделий типа втулки.
3.Класс объектов-изделий типа оси и так далее.
Глава 70. Консольное приложение для расчета массы изделий
Листинг 70.1. Проект Part3. Файл Part3.cpp.
//This is the main project file for VC++ application project
//generated using an Application Wizard.
#include "stdafx.h"
using namespace System;
//Мы начинаем записывать код: double d, H, s;
double pi = Math::PI;
double rho = 7850; //kg/(m*m*m) - for steel (для стали). double A, V, m, D;
double Area1() //Площадь круга:
{
double A1, Rn; Rn = H;
A1 = pi*(d-2*Rn)*(d-2*Rn)/4; return A1; //mm*mm
}
double Area2() //Площадь тора:
{
double A2, Rn; Rn = H;
A2 = pi*(Rn-s/2)*(2*(Rn-s/2)+pi*(d-2*Rn)/2); return A2; //mm*mm
}
double Area() //Площадь поверхности детали:
{
double A1, A2;
A1 = Area1(); A2 = Area2(); A = A1+A2; return A; //mm*mm
}
double Volume() //Объем детали:
{
A = Area(); V = A*s; return V; //mm*mm*mm
}
double mass() //Масса детали:
{
Console::Write("Part diameter, mm, d ="); d = Convert::ToDouble(Console::ReadLine());
Глава 70. Консольное приложение для расчета массы изделий |
297 |
|
Console::Write("Part heigth, mm, H ="); |
|
|
H = Convert::ToDouble(Console::ReadLine()); |
|
|
Console::Write("Part thickness, mm, s ="); |
|
|
s = Convert::ToDouble(Console::ReadLine()); |
|
|
A = Area(); |
//mm*mm |
|
V = Volume(); |
//mm*mm*mm |
|
m = V*rho*1.0e-9; //kg Console::WriteLine("");//Пробельная строка. //Вывод площади:
Console::Write("Part area, mm*mm, A ="); Console::WriteLine(A);
//Вывод объема:
Console::Write("Part volume, mm*mm*mm, V ="); Console::WriteLine(V);
//Вывод массы:
Console::Write("Part mass for steel,kg, m ="); Console::WriteLine(m);
return m;
}
double DBlank() //Диаметр плоской заготовки:
{
A = Area(); D = Math::Sqrt(4*A/pi); //Вывод диаметра заготовки: Console::Write("Blank diameter, mm, D ="); Console::WriteLine(D);
Console::WriteLine("");//Пробельная строка. return D;
}
//Мы закончили написание кода.
int _tmain()
{
// TODO: Please replace the sample code below //with your own.
//Мы комментируем бывшую здесь нижнюю строку: //Console::WriteLine(L"Hello World");
//Мы начинаем записывать код: //Рассчитать площадь: Area();
//Рассчитать объем: Volume();
//Рассчитать массу детали: mass();
//Рассчитать размеры заготовки: DBlank();
298 Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C++ 2005
//Мы закончили написание кода.
}
Глава 71. Вычисление массы изделий при помощи формы
Листинг 71.1. Методы для расчета параметров детали.
//Объявляем переменные: double d, H, Rn, s; double A, V, m, D; double rho;
double static pi = Math::PI; //Метод для расчета площади круга: double Area1()
{
double A1 = pi*(d-2*Rn)*(d-2*Rn)/4; return A1; //mm*mm
}
//Площадь нижнего тора: double Area2()
{
double A2 = pi*(Rn-s/2)*(2*(Rn-s/2)+pi*(d-2*Rn)/2); return A2; //mm*mm
}
//Площадь цилиндра: double Area3()
{
double A3 = pi*(d-s)*(H-Rn); return A3; //mm*mm
}
//Площадь всей поверхности детали: double Area()
{
double A = 0, A1, A2, A3;
A1 = Area1(); A2 = Area2(); A3 = Area3(); A = A1+A2+A3;
return A;
}
//Объем детали: double Volume()
{
A=Area(); V=A*s; return V;
}
//Масса детали: double mass()