Вы на НеОфициальном сайте факультета ЭиП

На нашем портале ежедневно выкладываются материалы способные помочь студентам. Курсовые, шпаргалки, ответы и еще куча всего что может понадобиться в учебе!
Главная Контакты Карта сайта
 
Где мы?
» » » Программный продукт «Вариатор 1.0»

Реклама


Программный продукт «Вариатор 1.0»

Просмотров: 2549 Автор: admin
Описание.
Программный продукт «Вариатор», версия 1.0, представляет собой приложение для работы с базой данных MS Access «dbvariator.mdb».
База данных «dbvariator.mdb» состоит из 2 таблиц: «variant»; «stroka».
Таблица «variant» состоит из 7 полей:
1. variant – счётчик, ключевое поле;
2. numvar – «Номер варианта» - длинное целое;
3. str1 – «Номер первой строки» - длинное целое;
4. str2 –«Номер второй строки» - длинное целое;
5. str3 –«Номер третьей строки» - длинное целое;
6. str4 –«Номер четвёртой строки» - длинное целое;
7. str5 –«Номер пятой строки» - длинное целое.
Таблица «stroka» состоит из 19 полей:
1. stroka - счётчик, ключевое поле;
2. A - R – «значения строки» - денежный тип.
По команде пользователя (кнопка «Показать строки») генерируется запрос из приложения «Вариатор» с помощью компоненты TADOQuery в базу данных «dbvariator». По выполнению запроса на форме отображаются строки соответствующего варианта со значениями A – R. (Рис. 1)
 
Рис. 1
«Строка 1» и «Строка 2» представляют дефляторы цен для совокупных личных расходов и соответствующего вида потребительских расходов. 
«Строка 3» и «Строка 4» соответствующего варианта представляют соответственно величину потребительских расходов населения США на данный товар и личного располагаемого дохода.
«Строка 5» отображает параметр – относительный индекс цены товара в процентах, т.е. индекс, показывающий, происходило ли изменение цены на товар более или менее быстрыми темпами, чем общий рост цен. Именно такая относительная цена товара, а не его номинальная цена, определяет спрос на этот товар.
Кнопка «Сброс» закрывает запрос, таким образом, очищаются поля со значениями строк.
Кнопка «Экспорт MS Excel» активируется при выполнении запроса «Показать строки» и экспортирует данные со значениями строк в MS Excel.
Кнопка «Добавить вариант» открывает форму добавления нового варианта.(Рис. 2)
 
Рис. 2
На форме представлена таблица с номерами строк и значениями A – R.
Для добавления нового варианта необходимо указать номер варианта и номера соответствующих этому варианту строк после чего нажать кнопку «Добавить». Далее программа проинформирует, что вариант добавлен. 
Для редактирования существующего варианта также необходимо указать его номер и номера строк, нажать кнопку «Добавить», после чего подтвердить редактирование.
 
Программный код.
Форма Вариатор 1.0
procedure TfrmVariator.btnExitClick(Sender: TObject);
begin
frmVariator.Close;
end;

procedure TfrmVariator.FormCreate(Sender: TObject);
var
strNum:String;
begin
ADOQVar.SQL.Clear;
Adoqvar.SQL.Add('Select numvar from variant');
Adoqvar.Open;
lblAll.Caption:=IntToStr(Adoqvar.RecordCount);
while not Adoqvar.eof do begin
  strNum:=Adoqvar.FieldByName('numvar').AsString;
 cmbVariant.Items.Add(strNum);
 Adoqvar.next;
end;
Adoqvar.Close;
adoqStr1.Close;
adoqStr2.Close;
adoqStr3.Close;
adoqStr4.Close;
adoqStr5.Close;
end;


procedure TfrmVariator.btmViewStrClick(Sender: TObject);
var
strVariant, strStr1,strStr2, strStr3,strStr4,strStr5:String;
begin
if cmbVariant.Text<>'' then
  begin
  strVariant:= cmbVariant.Text;
  Adoqvar.SQL.Clear;
  Adoqvar.SQL.Add('Select * from variant where numvar='+strVariant);
  Adoqvar.Open;
  lblVariant.Caption:=StrVariant;
  while not Adoqvar.eof do begin
  strStr1:=Adoqvar.FieldByName('str1').AsString;
  strStr2:=Adoqvar.FieldByName('str2').AsString;
  strStr3:=Adoqvar.FieldByName('str3').AsString;
  strStr4:=Adoqvar.FieldByName('str4').AsString;
  strStr5:=Adoqvar.FieldByName('str5').AsString;
  Adoqvar.next;
  end;
  Adoqvar.Close;
  //вывод первой строки
  adoqStr1.SQL.Clear;
  adoqStr1.SQL.Add('Select * from stroka where stroka='+ strStr1);
  adoqStr1.Open;
  dbtStr1Col1.DataField:='A';
  dbtStr1Col2.DataField:='B';
  dbtStr1Col3.DataField:='C';
  dbtStr1Col4.DataField:='D';
  dbtStr1Col5.DataField:='E';
  dbtStr1Col6.DataField:='F';
  dbtStr1Col7.DataField:='G';
  dbtStr1Col8.DataField:='H';
  dbtStr1Col9.DataField:='I';
  dbtStr1Col10.DataField:='J';
  dbtStr1Col11.DataField:='K';
  dbtStr1Col12.DataField:='L';
  dbtStr1Col13.DataField:='M';
  dbtStr1Col14.DataField:='N';
  dbtStr1Col15.DataField:='O';
  dbtStr1Col16.DataField:='P';
  dbtStr1Col17.DataField:='Q';
  dbtStr1Col18.DataField:='R';
  ArrayStr[1,1]:=StrToFloat(dbtStr1Col1.Caption);
  ArrayStr[1,2]:=StrToFloat(dbtStr1Col2.Caption);
  ArrayStr[1,3]:=StrToFloat(dbtStr1Col3.Caption);
  ArrayStr[1,4]:=StrToFloat(dbtStr1Col4.Caption);
  ArrayStr[1,5]:=StrToFloat(dbtStr1Col5.Caption);
  ArrayStr[1,6]:=StrToFloat(dbtStr1Col6.Caption);
  ArrayStr[1,7]:=StrToFloat(dbtStr1Col7.Caption);
  ArrayStr[1,8]:=StrToFloat(dbtStr1Col8.Caption);
  ArrayStr[1,9]:=StrToFloat(dbtStr1Col9.Caption);
  ArrayStr[1,10]:=StrToFloat(dbtStr1Col10.Caption);
  ArrayStr[1,11]:=StrToFloat(dbtStr1Col11.Caption);
  ArrayStr[1,12]:=StrToFloat(dbtStr1Col12.Caption);
  ArrayStr[1,13]:=StrToFloat(dbtStr1Col13.Caption);
  ArrayStr[1,14]:=StrToFloat(dbtStr1Col14.Caption);
  ArrayStr[1,15]:=StrToFloat(dbtStr1Col15.Caption);
  ArrayStr[1,16]:=StrToFloat(dbtStr1Col16.Caption);
  ArrayStr[1,17]:=StrToFloat(dbtStr1Col17.Caption);
  ArrayStr[1,18]:=StrToFloat(dbtStr1Col18.Caption);

  //вывод второй строки
  adoqStr2.SQL.Clear;
  adoqStr2.SQL.Add('Select * from stroka where stroka='+ strStr2);
  adoqStr2.Open;
  dbtStr2Col1.DataField:='A';
  dbtStr2Col2.DataField:='B';
  dbtStr2Col3.DataField:='C';
  dbtStr2Col4.DataField:='D';
  dbtStr2Col5.DataField:='E';
  dbtStr2Col6.DataField:='F';
  dbtStr2Col7.DataField:='G';
  dbtStr2Col8.DataField:='H';
  dbtStr2Col9.DataField:='I';
  dbtStr2Col10.DataField:='J';
  dbtStr2Col11.DataField:='K';
  dbtStr2Col12.DataField:='L';
  dbtStr2Col13.DataField:='M';
  dbtStr2Col14.DataField:='N';
  dbtStr2Col15.DataField:='O';
  dbtStr2Col16.DataField:='P';
  dbtStr2Col17.DataField:='Q';
  dbtStr2Col18.DataField:='R';
  ArrayStr[2,1]:=StrToFloat(dbtStr2Col1.Caption);
  ArrayStr[2,2]:=StrToFloat(dbtStr2Col2.Caption);
  ArrayStr[2,3]:=StrToFloat(dbtStr2Col3.Caption);
  ArrayStr[2,4]:=StrToFloat(dbtStr2Col4.Caption);
  ArrayStr[2,5]:=StrToFloat(dbtStr2Col5.Caption);
  ArrayStr[2,6]:=StrToFloat(dbtStr2Col6.Caption);
  ArrayStr[2,7]:=StrToFloat(dbtStr2Col7.Caption);
  ArrayStr[2,8]:=StrToFloat(dbtStr2Col8.Caption);
  ArrayStr[2,9]:=StrToFloat(dbtStr2Col9.Caption);
  ArrayStr[2,10]:=StrToFloat(dbtStr2Col10.Caption);
  ArrayStr[2,11]:=StrToFloat(dbtStr2Col11.Caption);
  ArrayStr[2,12]:=StrToFloat(dbtStr2Col12.Caption);
  ArrayStr[2,13]:=StrToFloat(dbtStr2Col13.Caption);
  ArrayStr[2,14]:=StrToFloat(dbtStr2Col14.Caption);
  ArrayStr[2,15]:=StrToFloat(dbtStr2Col15.Caption);
  ArrayStr[2,16]:=StrToFloat(dbtStr2Col16.Caption);
  ArrayStr[2,17]:=StrToFloat(dbtStr2Col17.Caption);
  ArrayStr[2,18]:=StrToFloat(dbtStr2Col18.Caption);

  //вывод третьей строки
  adoqStr3.SQL.Clear;
  adoqStr3.SQL.Add('Select * from stroka where stroka='+ strStr3);
  adoqStr3.Open;
  dbtStr3Col1.DataField:='A';
  dbtStr3Col2.DataField:='B';
  dbtStr3Col3.DataField:='C';
  dbtStr3Col4.DataField:='D';
  dbtStr3Col5.DataField:='E';
  dbtStr3Col6.DataField:='F';
  dbtStr3Col7.DataField:='G';
  dbtStr3Col8.DataField:='H';
  dbtStr3Col9.DataField:='I';
  dbtStr3Col10.DataField:='J';
  dbtStr3Col11.DataField:='K';
  dbtStr3Col12.DataField:='L';
  dbtStr3Col13.DataField:='M';
  dbtStr3Col14.DataField:='N';
  dbtStr3Col15.DataField:='O';
  dbtStr3Col16.DataField:='P';
  dbtStr3Col17.DataField:='Q';
  dbtStr3Col18.DataField:='R';
  ArrayStr[3,1]:=StrToFloat(dbtStr3Col1.Caption);
  ArrayStr[3,2]:=StrToFloat(dbtStr3Col2.Caption);
  ArrayStr[3,3]:=StrToFloat(dbtStr3Col3.Caption);
  ArrayStr[3,4]:=StrToFloat(dbtStr3Col4.Caption);
  ArrayStr[3,5]:=StrToFloat(dbtStr3Col5.Caption);
  ArrayStr[3,6]:=StrToFloat(dbtStr3Col6.Caption);
  ArrayStr[3,7]:=StrToFloat(dbtStr3Col7.Caption);
  ArrayStr[3,8]:=StrToFloat(dbtStr3Col8.Caption);
  ArrayStr[3,9]:=StrToFloat(dbtStr3Col9.Caption);
  ArrayStr[3,10]:=StrToFloat(dbtStr3Col10.Caption);
  ArrayStr[3,11]:=StrToFloat(dbtStr3Col11.Caption);
  ArrayStr[3,12]:=StrToFloat(dbtStr3Col12.Caption);
  ArrayStr[3,13]:=StrToFloat(dbtStr3Col13.Caption);
  ArrayStr[3,14]:=StrToFloat(dbtStr3Col14.Caption);
  ArrayStr[3,15]:=StrToFloat(dbtStr3Col15.Caption);
  ArrayStr[3,16]:=StrToFloat(dbtStr3Col16.Caption);
  ArrayStr[3,17]:=StrToFloat(dbtStr3Col17.Caption);
  ArrayStr[3,18]:=StrToFloat(dbtStr3Col18.Caption);

  //вывод четвёртой строки
  adoqStr4.SQL.Clear;
  adoqStr4.SQL.Add('Select * from stroka where stroka='+ strStr4);
  adoqStr4.Open;
  dbtStr4Col1.DataField:='A';
  dbtStr4Col2.DataField:='B';
  dbtStr4Col3.DataField:='C';
  dbtStr4Col4.DataField:='D';
  dbtStr4Col5.DataField:='E';
  dbtStr4Col6.DataField:='F';
  dbtStr4Col7.DataField:='G';
  dbtStr4Col8.DataField:='H';
  dbtStr4Col9.DataField:='I';
  dbtStr4Col10.DataField:='J';
  dbtStr4Col11.DataField:='K';
  dbtStr4Col12.DataField:='L';
  dbtStr4Col13.DataField:='M';
  dbtStr4Col14.DataField:='N';
  dbtStr4Col15.DataField:='O';
  dbtStr4Col16.DataField:='P';
  dbtStr4Col17.DataField:='Q';
  dbtStr4Col18.DataField:='R';
  ArrayStr[4,1]:=StrToFloat(dbtStr4Col1.Caption);
  ArrayStr[4,2]:=StrToFloat(dbtStr4Col2.Caption);
  ArrayStr[4,3]:=StrToFloat(dbtStr4Col3.Caption);
  ArrayStr[4,4]:=StrToFloat(dbtStr4Col4.Caption);
  ArrayStr[4,5]:=StrToFloat(dbtStr4Col5.Caption);
  ArrayStr[4,6]:=StrToFloat(dbtStr4Col6.Caption);
  ArrayStr[4,7]:=StrToFloat(dbtStr4Col7.Caption);
  ArrayStr[4,8]:=StrToFloat(dbtStr4Col8.Caption);
  ArrayStr[4,9]:=StrToFloat(dbtStr4Col9.Caption);
  ArrayStr[4,10]:=StrToFloat(dbtStr4Col10.Caption);
  ArrayStr[4,11]:=StrToFloat(dbtStr4Col11.Caption);
  ArrayStr[4,12]:=StrToFloat(dbtStr4Col12.Caption);
  ArrayStr[4,13]:=StrToFloat(dbtStr4Col13.Caption);
  ArrayStr[4,14]:=StrToFloat(dbtStr4Col14.Caption);
  ArrayStr[4,15]:=StrToFloat(dbtStr4Col15.Caption);
  ArrayStr[4,16]:=StrToFloat(dbtStr4Col16.Caption);
  ArrayStr[4,17]:=StrToFloat(dbtStr4Col17.Caption);
  ArrayStr[4,18]:=StrToFloat(dbtStr4Col18.Caption);

  //вывод пятой строки
  adoqStr5.SQL.Clear;
  adoqStr5.SQL.Add('Select * from stroka where stroka='+ strStr5);
  adoqStr5.Open;
  dbtStr5Col1.DataField:='A';
  dbtStr5Col2.DataField:='B';
  dbtStr5Col3.DataField:='C';
  dbtStr5Col4.DataField:='D';
  dbtStr5Col5.DataField:='E';
  dbtStr5Col6.DataField:='F';
  dbtStr5Col7.DataField:='G';
  dbtStr5Col8.DataField:='H';
  dbtStr5Col9.DataField:='I';
  dbtStr5Col10.DataField:='J';
  dbtStr5Col11.DataField:='K';
  dbtStr5Col12.DataField:='L';
  dbtStr5Col13.DataField:='M';
  dbtStr5Col14.DataField:='N';
  dbtStr5Col15.DataField:='O';
  dbtStr5Col16.DataField:='P';
  dbtStr5Col17.DataField:='Q';
  dbtStr5Col18.DataField:='R';
  ArrayStr[5,1]:=StrToFloat(dbtStr5Col1.Caption);
  ArrayStr[5,2]:=StrToFloat(dbtStr5Col2.Caption);
  ArrayStr[5,3]:=StrToFloat(dbtStr5Col3.Caption);
  ArrayStr[5,4]:=StrToFloat(dbtStr5Col4.Caption);
  ArrayStr[5,5]:=StrToFloat(dbtStr5Col5.Caption);
  ArrayStr[5,6]:=StrToFloat(dbtStr5Col6.Caption);
  ArrayStr[5,7]:=StrToFloat(dbtStr5Col7.Caption);
  ArrayStr[5,8]:=StrToFloat(dbtStr5Col8.Caption);
  ArrayStr[5,9]:=StrToFloat(dbtStr5Col9.Caption);
  ArrayStr[5,10]:=StrToFloat(dbtStr5Col10.Caption);
  ArrayStr[5,11]:=StrToFloat(dbtStr5Col11.Caption);
  ArrayStr[5,12]:=StrToFloat(dbtStr5Col12.Caption);
  ArrayStr[5,13]:=StrToFloat(dbtStr5Col13.Caption);
  ArrayStr[5,14]:=StrToFloat(dbtStr5Col14.Caption);
  ArrayStr[5,15]:=StrToFloat(dbtStr5Col15.Caption);
  ArrayStr[5,16]:=StrToFloat(dbtStr5Col16.Caption);
  ArrayStr[5,17]:=StrToFloat(dbtStr5Col17.Caption);
  ArrayStr[5,18]:=StrToFloat(dbtStr5Col18.Caption);

  btnExport.Enabled:=true;
  end;
end;

procedure TfrmVariator.btnResetClick(Sender: TObject);
begin
adoqStr1.Close;
adoqStr2.Close;
adoqStr3.Close;
adoqStr4.Close;
adoqStr5.Close;
btnExport.Enabled:=false;
end;

procedure TfrmVariator.btnExportClick(Sender: TObject);
var
  ExcelApp, Workbook, Range, Cell1, Cell2, ArrayData: Variant;
  TemplateFile : String;
  BeginCol, BeginRow, i, j : integer;
  RowCount, ColCount : integer;
  //ArrayData:array[1..5, 1..18] of currency;
 begin
 // Координаты левого верхнего угла области, в которую будем выводить данные
 BeginCol := 1;
 BeginRow := 1;

 // Размеры выводимого массива данных
 RowCount := 5;
 ColCount := 18;

 // Создание Excel
 ExcelApp := CreateOleObject('Excel.Application');

 // Отключаем реакцию Excel на события, чтобы ускорить вывод информации
 ExcelApp.Application.EnableEvents := false;

 // Создаем Книгу (Workbook)
 // Если заполняем шаблон, то Workbook := ExcelApp.WorkBooks.Add('C:\MyTemplate.xls');
 Workbook := ExcelApp.WorkBooks.Add;

 // Создаем Вариантный Массив, который заполним выходными данными
 ArrayData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);

 for I := 1 to RowCount do
  for J := 1 to ColCount do
  ArrayData[I, J] := ArrayStr[i,j];

 // Левая верхняя ячейка области, в которую будем выводить данные
 Cell1 := WorkBook.WorkSheets[1].Cells[BeginRow, BeginCol];
 // Правая нижняя ячейка области, в которую будем выводить данные
 Cell2 := WorkBook.WorkSheets[1].Cells[BeginRow + RowCount - 1, BeginCol +
 ColCount - 1];

 // Область, в которую будем выводить данные
 Range := WorkBook.WorkSheets[1].Range[Cell1, Cell2];

 // А вот и сам вывод данных
 // Намного быстрее поячеечного присвоения
 Range.Value := ArrayData;

 // Делаем Excel видимым
 ExcelApp.Visible := true;

end;


procedure TfrmVariator.btnAddVariantClick(Sender: TObject);
begin
frmAddVariant.ShowModal;
end;
 
Форма «Добавить вариант».
procedure TfrmAddVariant.btnExitClick(Sender: TObject);
begin
frmAddVariant.Close;
end;

procedure TfrmAddVariant.FormCreate(Sender: TObject);
var
strNum:String;
begin
adoqStr.Open;
adoqVar.Open;
lblStr.Caption:=IntToStr(AdoqStr.RecordCount);
lblVariant.Caption:=IntToStr(AdoqVar.RecordCount);
while not AdoqStr.eof do begin
  strNum:=AdoqStr.FieldByName('stroka').AsString;
  cmbStr1.Items.Add(strNum);
  cmbStr2.Items.Add(strNum);
  cmbStr3.Items.Add(strNum);
  cmbStr4.Items.Add(strNum);
  cmbStr5.Items.Add(strNum);
  AdoqStr.next;
end;
end;

procedure TfrmAddVariant.btnAddClick(Sender: TObject);
begin
if (edtVar.Text<>'') and (cmbStr1.Text<>'') and (cmbStr2.Text<>'') and (cmbStr3.Text<>'')
and (cmbStr4.Text<>'') and (cmbStr5.Text<>'') then
begin
intStr1:=cmbStr1.Text;
intStr2:=cmbStr2.Text;
intStr3:=cmbStr3.Text;
intStr4:=cmbStr4.Text;
intStr5:=cmbStr5.Text;
lbl:= edtVar.Text;
adoqVar.Close;
adoqVar.SQL.Clear;

adoqVar.SQL.Add('Select * from variant where numvar=' + lbl);

adoqVar.Open;

if AdoqVar.RecordCount>0 then
  begin
  frmQuest.ShowModal;
  end
else
begin
adoqVar.Close;
adoqVar.SQL.Clear;
adoqVar.SQL.Add('Insert into variant (numvar, str1, str2, str3, str4, str5) Values('+ lbl+','+ intStr1 +','+intStr2+','+intStr3+','+intStr4+','+intStr5+')');
adoqVar.ExecSQL;
ShowMessage('Вариант '+lbl+' добавлен!');
adoqvar.Close;
frmVariator.ADOQVar.Close;
frmVariator.ADOQVar.Open;
frmAddVariant.Close;
end;

end;

end;

Форма «Редактирование».
procedure TfrmQuest.FormCreate(Sender: TObject);
begin
label1.Caption:='Вариант ' + frmaddVariant.lbl+ ' уже добавлен! Применить новые значения?';
end;

procedure TfrmQuest.Button2Click(Sender: TObject);
begin
frmQuest.Close;
end;

procedure TfrmQuest.Button1Click(Sender: TObject);
begin
frmAddVariant.adoqVar.Close;
frmAddVariant.adoqVar.SQL.Clear;
frmAddVariant.adoqVar.SQL.Add('Update variant Set str1='+frmAddVariant.intStr1+',str2='+ frmAddVariant.intStr2+',str3='+frmAddVariant.intStr3+',str4='+frmAddVariant.intStr4+ ',str5='+frmAddVariant.intStr5+ ' where numvar='+frmAddVariant.lbl);
frmAddVariant.adoqVar.ExecSQL;
ShowMessage('Вариант '+frmAddVariant.lbl+' изменён!');
frmAddVariant.adoqvar.Close;
frmVariator.ADOQVar.Close;
frmVariator.ADOQVar.Open;
frmAddVariant.Close;
frmQuest.Close;
end;


Аватар пользователя

AnyK3nt написал:

Комментарий №1 - 6 июня 2009 22:12 Гости
Ой, а что это за шаблон? Он платный?
Аватар пользователя

Sashka2000 написал:

Комментарий №2 - 7 июня 2009 11:36 Гости
Буду частым гостем у вас, спасибо!
Аватар пользователя

StyleGuy написал:

Комментарий №3 - 7 июня 2009 18:59 Гости
Сложновато у вас зарегистрироваться :(

Информация

Комментировать статьи на нашем сайте возможно только в течении 60 дней со дня публикации.

Популярные новости

Статистика сайта



Rambler's Top100



 
Copyright © НеОфициальный сайт факультета ЭиП