Новости

Разработка программы для работы с базой данных типизированных файлов (файлов записей)

Работа добавлена:






Разработка программы для работы с базой данных типизированных файлов (файлов записей) на http://mirrorref.ru

Министерство образования и науки Украины

Сумской государственный университет

Кафедра информационных технологий

Проектирования

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе

по дисциплине

«Основы программирования  и алгоритмические языки»

Выполнил:                                                                      студентгруппы ИТ-82

Вариант:                                                                          № 4

Проверил:                                                                        Ващенко С.М.

2010

Содержание

  1. Введение………………………………………………………………....
  2. Постановка задачи……………………………………………………....
  3. Описание программы и подпрограмм пользователя……………….....
  4. Тексты программ и модулей…………………………………………...
  5. Руководство пользователя…………………………………………......
  6. Контрольный пример…………………………………………………..
  7. Заключение……………………………………………………………...
  8. Литература………………………………………………………………

Введение

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

В настоящее время существует достаточно большое количество программных систем, позволяющих создавать и использовать локальные и удаленные базы данных.

В состав Delphi входят компоненты, позволяющие создавать программы работы с файлами данных, созданными различными системами: от dBASE до Infomix и Oracle. Delphi также позволяет программисту, используя утилиту Borland Database Desktop, создавать файлы баз данных в различных форматах.

База данных — это набор однородной, как правило, упорядоченной по некоторому критерию, информации. База данных может быть представлена в "бумажном" или в компьютерном виде.

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

Компьютерная база данных представляет собой файл (или набор связанных файлов), содержащий информацию.

База данных состоит из записей. Каждая запись содержит информацию об одном экземпляре

На бумаге базу данных удобно представить в виде таблицы. Каждая строка таблицы соответствует записи, а ячейка таблицы — полю. При этом заголовок столбца таблицы — это имя поля, а номер строки таблицы — номер записи.

Информацию компьютерных баз данных обычно выводят на экран в виде таблиц. Поэтому в литературе довольно часто вместо словосочетания "файл данных" используется словосочетание "таблица данных" или просто "таблица".

Постановка задачи

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

В программе реализовать редактирование записей – возможность изменения, добавления. Исходные данные должны вводиться с проверкой на область допустимых значений. Все действия пользователя должны контролироваться и снабжаться осмысленным сообщениями. Реализовать в соответствии со своим вариантом запрос и вывод содержимого базы данных по определенным ключам. Предусмотреть вывод всей базы данных на экран. Вся обработка базы данных должна происходить путем выбора соответствующего пункта из меню.

Описание программ и подпрограмм пользователя

UNIT_1

procedure N3Click(Sender: TObject);   - заполнить таблицу

   procedure N6Click(Sender: TObject);   - добавить

   procedure N7Click(Sender: TObject);   - изменить

   procedure N5Click(Sender: TObject);   - выход

   procedure Button1Click(Sender: TObject);   - запрос 1

   procedure Button2Click(Sender: TObject);   - запрос 2

   procedure WordClick(Sender: TObject);    - отчет word

   procedure N8Click(Sender: TObject);    - удалить строку

   procedure N9Click(Sender: TObject);   - об авторе

   procedure mniExcel1Click(Sender: TObject);   - отчет excel

   UNIT_2

procedure Button1Click(Sender: TObject);   - добавить строку

   procedure Button3Click(Sender: TObject);   - изменить строку

Текстыпрограммимодулей

unit Unit1;

interface

uses

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

 Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, Menus, OleServer,comobj, WordXP, ExcelXP,

 jpeg, ExtCtrls;

type

 TForm1 = class(TForm)

   Label1: TLabel;

   Edit1: TEdit;

   Button1: TButton;

   Button2: TButton;

   MainMenu1: TMainMenu;

   N1: TMenuItem;

   N3: TMenuItem;

   N5: TMenuItem;

   Word: TMenuItem;

   N2: TMenuItem;

   N6: TMenuItem;

   N7: TMenuItem;

   N8: TMenuItem;

   N9: TMenuItem;

   DataSource1: TDataSource;

   dbgrd1: TDBGrid;

   ADOTable1: TADOTable;

   mniExcel1: TMenuItem;

   DataSource2: TDataSource;

   dbgrd2: TDBGrid;

   qry1: TADOQuery;

   procedure N3Click(Sender: TObject);  //заполнить таблицу

   procedure N6Click(Sender: TObject);  //добавить

   procedure N7Click(Sender: TObject);  //изменить

   procedure N5Click(Sender: TObject);  //выход

   procedure Button1Click(Sender: TObject);  //запрос 1

   procedure Button2Click(Sender: TObject);  //запрос 2

   procedure WordClick(Sender: TObject);   //отчет word

   procedure N8Click(Sender: TObject);   //удалить строку

   procedure N9Click(Sender: TObject);  //об авторе

   procedure mniExcel1Click(Sender: TObject);  //отчет excel

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

 W,  XL, XArr: Variant;

implementation

uses Unit2, Unit3;

{$R *.dfm}

procedure TForm1.N3Click(Sender: TObject);

begin

 ADOTable1.Active:=false;

 ADOTable1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+getcurrentdir+'/db1.mdb'+';Persist Security Info=False';

 qry1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+getcurrentdir+'/db1.mdb'+';Persist Security Info=False';

  ADOTable1.Active:=true;

  Edit1.Enabled:=True;

  Button1.Enabled:=True;

  Button2.Enabled:=True;

  N1.Enabled:=True;

  N2.Enabled:=True;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

if form1.ADOTable1.active=true then form2.show

else showmessage('Откройте базу данных');

with form2 do

 begin

  button1.visible:=true;

  button3.visible:=false;

 end;

end;

procedure TForm1.N7Click(Sender: TObject);

begin

if form1.ADOTable1.active=true then form2.show

 else showmessage('Откройте базу данных');

 with form2 do

  begin

   if adotable1.active=true then

   begin

    edit1.text:=adotable1.Fieldvalues['firma'];

    edit2.text:=floattostrf(adotable1.Fieldvalues['stoim'],fffixed,6,2);

    edit3.text:=floattostrf(adotable1.Fieldvalues['kol'],fffixed,6,2);

    edit4.text:=adotable1.Fieldvalues['naim_tov'];

    edit5.text:=adotable1.Fieldvalues['strana'];

    edit6.text:=floattostrf(adotable1.Fieldvalues['den'],fffixed,6,2);

    edit7.text:=floattostrf(adotable1.Fieldvalues['mec'],fffixed,6,2);

    edit8.text:=floattostrf(adotable1.Fieldvalues['god'],fffixed,6,2);

    button1.visible:=false;

    button3.visible:=true;

   end;

  end;

end;

procedure TForm1.N5Click(Sender: TObject);

begin

close;

end;

procedure TForm1.Button1Click(Sender: TObject);

var ffield, fvalue: string;

opts : TLocateOptions;

poisk:string;

begin

if Edit1.Text='' then

 ShowMessage('введите ключ для поиска')

else

 begin

 poisk:=Edit1.Text;

 ffield := 'naim_tov';

fvalue := Edit1.Text;

opts := [loCaseInsensitive];

if not AdoTable1.Locate(ffield, fvalue, opts) then

ShowMessage(fvalue + ' _не найден в столбце_ ' + ffield)

else begin

 qry1.SQL.Clear;

 qry1.SQL.Add('Select *');

 qry1.SQL.Add('from baze');

 qry1.SQL.Add('where naim_tov="'+edit1.text+'"');

 qry1.Open;

 Word.Enabled:=True;

 mniExcel1.Enabled:=True;

 end;

 end;

 end;

procedure TForm1.Button2Click(Sender: TObject);

var a:string;

   b:real;

begin

if adotable1.active=true then

begin

 adotable1.first;

 b:=adotable1.Fieldvalues['stoim'];

 a:=adotable1.Fieldvalues['naim_tov'];

 while not adotable1.Eof do

  begin

   if b > adotable1.Fieldvalues['stoim'] then

    begin

     b:=adotable1.Fieldvalues['stoim'];

     a:=adotable1.Fieldvalues['naim_tov'];

    end;

   adotable1.next;

  end;

 adotable1.first;

 showmessage(a+' имеет минимальную стоимость = '+floattostrf(b,fffixed,6,2));

end

else showmessage('Откройте базу данных');

end;

procedure TForm1.WordClick(Sender: TObject);

var qwer:range;

f:variant;

autofitbehavior,defaulttablebehavior:olevariant;

cc:integer;

i,j:integer;

begin

W:=createoleobject('Word.application');

W.visible:=true;

w.documents.add;

f:=w.activedocument.range(0,0);

cc:=form1.qry1.FieldCount;

w.activedocument.tables.add(f ,1,cc);

w.activedocument.tables.item(1).cell(1,i).range.text:='sad';

form1.qry1.MoveBy(0);

for i:=1 to cc do begin

w.activedocument.tables.item(1).cell(1,i).range.text:=form1.qry1.Fields[i-1].FieldName;

end;

form1.qry1.MoveBy(0);

for i:=1 to form1.qry1.RecordCount do begin

w.activedocument.tables.item(1).rows.add;

for j:=1 to cc do begin

w.activedocument.tables.item(1).cell(i+1,j).range.text:=form1.qry1.FieldList.Fields[j-1].AsString;

end;

form1.qry1.MoveBy(1);

end;

end;

procedure TForm1.N8Click(Sender: TObject);

begin

if form1.ADOTable1.active=true then

begin

ADOTable1.Delete;

end

else showmessage('Откройте базу данных');

end;

procedure TForm1.N9Click(Sender: TObject);

begin

Form3.show;

end;

procedure TForm1.mniExcel1Click(Sender: TObject);

var

i: Integer;

j: Integer;

begin

XArr:=VarArrayCreate([1,qry1.FieldCount],varVariant);

XL:=CreateOLEObject('Excel.Application');

XL.WorkBooks.add;

XL.visible:=true;

j := 1;

ADOTable1.First;

while not qry1.Eof do

 begin

  i:=1;

  while i<=qry1.FieldCount do

   begin

    XArr[i] := qry1.Fields[i-1].Value;

    i := i+1;

   end;

  XL.Range['A'+IntToStr(j),

  CHR(64+qry1.FieldCount)+IntToStr(j)].Value := XArr;

  qry1.Next;

  j:=j+1;

 end;

XL.Range['A1',CHR(64+qry1.FieldCount)+IntToStr(j)].select;

XL.Selection.Font.Name:='Arial cur';

XL.Selection.Font.Size:=10;

XL.selection.Columns.AutoFit;

XL.Range['A1','A1'].select;

end;

end.

unit Unit2;

interface

uses

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

 Dialogs, StdCtrls;

type

 TForm2 = class(TForm)

   Label1: TLabel;

   Edit1: TEdit;

   Label2: TLabel;

   Edit2: TEdit;

   Label3: TLabel;

   Edit3: TEdit;

   Button1: TButton;

   Button3: TButton;

   Label4: TLabel;

   Edit4: TEdit;

   Label5: TLabel;

   Edit5: TEdit;

   Label6: TLabel;

   Edit6: TEdit;

   Label7: TLabel;

   Edit7: TEdit;

   Label8: TLabel;

   Edit8: TEdit;

   procedure Button1Click(Sender: TObject);   //добавить строку

   procedure Button3Click(Sender: TObject);   //изменить строку

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

   with Form1.ADOTAble1 do

     begin

      Append;

      Edit;

      try

      Fieldvalues['firma']:=edit1.text;

      Fieldvalues['stoim']:=strtofloat(edit2.text);

      Fieldvalues['kol']:=strtofloat(edit3.text);

      Fieldvalues['naim_tov']:=edit4.text;

      Fieldvalues['strana']:=edit5.text;

      Fieldvalues['den']:=edit6.text;

      Fieldvalues['mec']:=strtofloat(edit7.text);

      Fieldvalues['god']:=strtofloat(edit8.text);

      except

           on econverterror do showmessage('Введите правильные значения');

      end;

      post;

     end;

end;

procedure TForm2.Button3Click(Sender: TObject);

begin

with Form1.ADOTAble1 do

     begin

      Edit;

      try

      Fieldvalues['firma']:=edit1.text;

      Fieldvalues['stoim']:=strtofloat(edit2.text);

      Fieldvalues['kol']:=strtofloat(edit3.text);

      Fieldvalues['naim_tov']:=edit4.text;

      Fieldvalues['strana']:=edit5.text;

      Fieldvalues['den']:=edit6.text;

      Fieldvalues['mec']:=strtofloat(edit7.text);

      Fieldvalues['god']:=strtofloat(edit8.text);

      except

           on econverterror do showmessage('Введите правильные значения');

      end;

      post;

     end;

end;

end.

unit Unit3;

interface

uses

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

 Dialogs, StdCtrls;

type

 TForm3 = class(TForm)

   Label1: TLabel;

   Label3: TLabel;

   Label4: TLabel;

   Label2: TLabel;

   Label5: TLabel;

 private

   { Private declarations }

 public

   { Public declarations }

 end;