Проектирование и создание базы данных для автоматизированной информационной системы "Оплата услуг центра доступа в Интернет"

Автор: Пользователь скрыл имя, 18 Ноября 2011 в 02:31, отчет по практике

Краткое описание

Технология программирования – это система методов, способов и приемов разработки и отладки программ.

Оглавление

Введение ……………………………………………………………………….....3
1 Выбор технологии, языка и среды программирования ………….……….....5
2 Анализ и уточнение требований к программному продукту ………….........9
2.1 Анализ процесса обработки информации и описание структуры данных
для ее хранения ………………………………………………………………......9
2.2 Выбор методов и разработка основных алгоритмов решения задачи ….. 10
3 Разработка функциональной схемы программного продукта ………….......15
4 Проектирование классов предметной области ………………………….…..16
4.1 Построение диаграммы классов ………………………………………....... 16
4.2 Уточнение структуры классов предметной области и разработка
алгоритмов .….……………………………………………………………….......17
5 Выбор стратегии тестирования и разработки тестов ……………………... .18
Заключение …………………………………………………………………...... .22
Список использованных источников ……………………………...…............. .23
Приложение А Техническое задание ………………………………...…….......24
Приложение Б Руководство пользователя ………………………….........…... 27
Приложение В Листинг программы …………………………………...............29

Файлы: 1 файл

Проектирование и создание базы данных.doc

— 624.50 Кб (Скачать)

  Приложение Б

Руководство пользователя 

      Разработанный программный продукт предназначен для анализа и ведения сведений о тарифных планах провайдера. Выдаваемая программным средством информация анализируется работниками отдела и предоставляется руководителю отдела ИТ для принятия окончательного решения по установке определенного тарифа на услуги.

      Для выполнения приложения необходим компьютер на базе процессора Pentium или AMD, объем оперативной памяти 128Mb(256Mb), 100Mb(200Mb) свободного места на жестком диске.

      Работа с программным средством начинается с запуска исполняемого файла (Enterprise.exe). Главное окно программы представлено на рисунке Б.1. 

      

 

      Рисунок Б.1 – Главное окно программы 

      Для просмотра таблицы базы данных, по которой производится корреляционно-регрессионный анализ, необходимо выбрать пункт меню «Редактирование». В результате выполнения команды на экране появится окно, изображенное на рисунке Б.2. 

      Рисунок Б.2 – Окно редактирования таблицы в БД

      Для проведения корреляционно-регрессионного анализа необходимо выбрать пункт  меню «анализ». На экране появится окно, в котором отобразится информация из БД, необходимая для анализа, и кнопка «КРА». После нажатия этой кнопки на экране появятся результаты анализа. Вид окна с результатами анализа представлен на рисунке Б.3. 

 

      Рисунок Б.3 – Окно корреляционно-регрессионного анализа 

Приложение  В

Текст программы 

unit Analys; 

interface 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Grids, Spin, StdCtrls, DB, ADODB, DBGrids; 

const

  Max = 100;

type

  TAnalys = class(TForm)

    Button1: TButton;

    sgX: TStringGrid;

    Label1: TLabel;

    sgA: TStringGrid;

    Label4: TLabel;

    Label6: TLabel;

    sgY: TStringGrid;

    Label7: TLabel;

    sgK: TStringGrid;

    Label8: TLabel;

    Label9: TLabel;

    Label10: TLabel;

    Label11: TLabel;

    Label12: TLabel;

    DBGrid1: TDBGrid;

    DataSource1: TDataSource;

    ADODataSet1: TADODataSet;

    ADODataSet1kol_oborud: TIntegerField;

    ADODataSet1kol_zap: TFloatField;

    ADODataSet1stoimost_Ed: TFloatField;

    ADODataSet1Srok_Sl: TFloatField;

    ADODataSet1kol_otkaz: TIntegerField;

    Label5: TLabel;

    Label3: TLabel;

    Label2: TLabel;

    Edit1: TEdit;

    Label13: TLabel;

    Label14: TLabel;

    procedure FormShow(Sender: TObject);

    procedure Button1Click(Sender: TObject);

//    procedure sgAClick(Sender: TObject); 
 

  end; 

  Algoritm = class // класс "Алгоритм". Абстрактный (не имеет объектов).

    procedure Run; virtual; abstract; // Метод "Выполнить". Абстрактный (не реализован).

  end;  

  Matrix = class // Класс  "Матрица". Хранит данные матрицы  и реализует операции над ними.

    arr : array [1..Max, 1..Max] of real;  // данные матрицы

    Rows, Cols : integer;                  // количество строк и столбцов

    procedure Transpon;                    // транспонирование

    procedure Obratn;                      // нахождение обратной матрицы

    procedure Minus(Var b:Matrix);         // вычитание матрицы        

    procedure Umn(Var b : Matrix);         // умножение на матрицу b

    procedure Print(sg : TStringGrid);     // вывод в StringGrid

    procedure CalcMOAndSko(var mo, sko: array of real); // подсчет

    // математического ожидания и среднеквадратического отклонения по каждому столбцу

    procedure Standartization;  // нахождение стандартизированной  матрицы

    function Submatrix(exi, exj : integer) : Matrix; // нахождение подматрицы

                                   // (вычеркивается строка exi и столбец exj)

    function Determinant : real;           // нахождение определителя

  end; 

  Matricy = class (Algoritm) // класс "Работа с матрицами". Агрегирует в себе две матрицы: X и Y.

   // Наследует  от класса "Алгоритм" абстрактный метод "Выполнить".

    procedure SetValues(ADODataSet1 : TADODataSet); // процедура установки  в матрицах (X,Y) значений,

    // берущихся  из БД с помощью ADO-соединения

   protected // защищенные  для доступа извне члены (видимы  потомкам класса):

    X, Y : Matrix; // исходная таблица факторов (X) и  откликов (Y)

  end; 

  Main = class (Matricy) // Класс "Корреляционно-регрессионный  анализ".

    // Осуществляет  необходимые расчеты. Наследует  поля и методы от класса "Работа  с матрицами".

    procedure Run; override;  // Метод "Выполнить" производит расчеты над исходными

    // матрицами  и выдает результаты на экран.

  end; 

var

  Analys1: TAnalys; 

implementation

{$R *.dfm} 

procedure Matrix.Transpon; // транспонирование матрицы

var

  mas : array [1..Max, 1..Max] of real;

  i, j : integer;

begin

  for i := 1 to Rows do

   for j := 1 to Cols do

    mas[j, i] := arr[i, j]; // индексы i,j меняются местами

  i := Rows;

  Rows := Cols;

  Cols := i;

  for i := 1 to Rows do

   for j := 1 to Cols do

    arr[i, j] := mas[i, j];

end; 

procedure Matrix.Obratn; // Нахождение обратной матрицы

                         // (с помощью присоединенной единичной)

var

  e : array [1..Max, 1..Max] of real;

  c, d : real;

  i, j, k, N : integer;

begin

  N := Rows;

  // Формирование единичной матицы:

  for i := 1 to N do

   for j := 1 to N do

    if i = j then e[i,j] := 1 else e[i,j] := 0;

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

  for i := 1 to N do begin

    c := arr[i, i];

    for j := 1 to N do begin // делим строку на диагональный элемент

      arr[i,j] := arr[i,j] / c;

      e[i,j] := e[i,j] / c;

    end;

    for k := 1 to N do

     if k <> i then begin

       d := arr[k][i];

       for j := 1 to N do begin // вычитаем ее из  остальных строк

         arr[k,j] := arr[k,j]-arr[i,j]*d;

         e[k,j] := e[k,j]-e[i,j]*d;

       end;

     end;

  end;

  for i := 1 to N do

   for j := 1 to N do

    arr[i, j] := e[i, j]; // получили обратную матрицу

end; 

procedure Matrix.Minus(var b:Matrix); // Из хранимой  в объекте матрицы вычитается

                                      // матрица b и результат сохраняется  в объекте.

var

  i, j, k : integer;

  s : real;

  mas : array [1..Max, 1..Max] of real;

begin

for i:=1 to Rows do

for j:=1 to Cols do

  begin

  mas[i,j]:=arr[i,j]-b.arr[i,j];

  end;

for i:=1 to Rows do

for j:=1 to Cols do

  arr[i,j]:=mas[i,j];

end; 

procedure Matrix.Umn(var b: Matrix); // Хранимая в объекте матрица  умножается на

                                  // матрицу b и результат сохраняется в объекте.

var

  i, j, k : integer;

  s : real;

  mas : array [1..Max, 1..Max] of real;

begin

  for i := 1 to Rows do

   for j := 1 to b.Cols do begin

     s := 0; // перемножаем строку первый матрицы на столбец второй

     for k := 1 to Cols do

     s := s + arr[i,k] * b.arr[k,j];

     mas[i, j] := s;

   end;

  Cols := b.Cols;

  for i := 1 to Rows do

   for j := 1 to Cols do

    arr[i, j] := mas[i, j];  

end; 

procedure Matrix.CalcMOAndSko(var mo, sko: array of real);

// Расчет математического  ожидания

// и среднеквадратического  отклонения для каждого столбца  в матрице

var

  i, j : integer;

  s, ss : real;

begin

  for i := 1 to Cols do begin // для каждого столбца

    s := 0; // накапливаем сумму

    for j := 1 to Rows do

     s := s + arr[j, i];

   s := s / Rows; // находим среднее значение

    mo[i-1] := s;  // нашли

    ss := 0; // накапливаем сумму квадратов  разности со средним

    for j := 1 to Rows do

     ss := ss + Sqr(arr[j, i] - s);

    sko[i-1] := Sqrt(ss / Rows); // нашли среднеквадратическое отклонение

  end;

end; 

procedure Matrix.Standartization; // нахождение стандартизированной  матрицы

                                  // (вычитаем МО и делим на  СКО)

var

  mo, sko : array [1..Max] of real;

  i, j : integer;

begin

  CalcMOAndSko(mo, sko);

  for i:=1 to Rows do

   for j:=1 to Cols do begin

     arr[i,j] := arr[i,j] - mo[j];

     if sko[j] > 0.00001 then

      arr[i,j] := arr[i,j] / sko[j];

   end;

end; 

function Matrix.Submatrix(exi, exj : integer): Matrix; // Нахождение подматрицы

// (вычеркивается строка exi и столбец exj)

var

  m : Matrix;

  i, j, ii, jj : integer;

begin

  m := Matrix.Create;

  m.Rows := Rows;

  m.Cols := Cols;

  if exi > 0 then m.Rows := m.Rows - 1;

  if exj > 0 then m.Cols := m.Cols - 1;

  // если аргументы равны 0, то ничего не вычеркиваем, просто копируем матрицу

  ii := 1;

  for i := 1 to Rows do begin

    if i = exi then continue; // вычеркнутая строка

    jj := 1;

    for j := 1 to Cols do begin

      if j = exj then continue; // вычеркнутый столбец

      m.arr[ii, jj] := arr[i, j];

<

Информация о работе Проектирование и создание базы данных для автоматизированной информационной системы "Оплата услуг центра доступа в Интернет"