Высокоуровневые методы программирования

Автор работы: Пользователь скрыл имя, 12 Октября 2012 в 14:04, реферат

Описание работы

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

Содержание работы

Задание на разработку программного комплекса. 2
Функциональная схема приложения 3
Спецификация программного комплекса. 5
Название задачи. 5
Описание задачи. 5
Управление режимами работы программы. 5
Входные данные. 6
Выходные данные 6
Структурная диаграмма программного комплекса. 7
Блок схема главного модуля 8
Данные для тестирования программного модуля и программного комплекса в целом. 9
Инструкция пользователя. 10
Список используемых источников. 17
Приложение 1 18

Файлы: 1 файл

контрольная.docx

— 205.88 Кб (Скачать файл)

    mmSDiag: TMenuItem;

    cxGrid1DBChartView3DataGroup2: TcxGridDBChartDataGroup;

    vtData: TVirtualTable;

    vtData2: TVirtualTable;

    procedure bMainClick(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure mmCDiagClick(Sender: TObject);

    procedure mmTableClick(Sender: TObject);

    procedure mmGrafClick(Sender: TObject);

    procedure mmSDiagClick(Sender: TObject);

    procedure Summing;

    procedure Adding;

    procedure mmExitClick(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  fMain: TfMain;

  rc, rc1: integer; //переменные содержат номер строки

  sy, sm, sty: string;  //значение года, месяца тип дохода/расхода

  sum, sum1: real;       //сумма по данному типу доходов/расходов

  bis:boolean;     //наличие данных по году во второй таблице

 

 

implementation

 

{$R *.dfm}

 

procedure TfMain.bMainClick(Sender: TObject);//При нажатии на кнопку

begin

vtData.SaveToFile('Data.xml');//сохранение данных в файл на жестком диске

end;

 

procedure TfMain.FormCreate(Sender: TObject);

begin

vtData.LoadFromFile('Data.xml');//при запуске загружаем данные с диска

cxGrid1Level1.Visible:=true;//видим уровень таблици

cxGrid1Level2.Visible:=false;// уровни диаграмм

cxGrid1Level3.Visible:=false;//скрыты

cxGrid1Level4.Visible:=false;//в начале работы

end;

 

procedure TfMain.mmCDiagClick(Sender: TObject);//выбор круговой диаграммы

begin

cxGrid1Level1.Visible:=false;//делаем видимой

cxGrid1Level2.Visible:=true;//круговую диаграмму

cxGrid1Level3.Visible:=false;//скрываем уровень

cxGrid1Level4.Visible:=false;//таблици

end;

 

procedure TfMain.mmExitClick(Sender: TObject);

begin

close();

end;

 

procedure TfMain.mmGrafClick(Sender: TObject);//при выборе графика

begin

vtData2.Clear;//очищаем временную таблицу

rc:=1;//переходим к первой записи

sum:=0;//обнуляем переменную для суммы

while rc<=vtData.RecordCount+1 do//цикл до конца таблици

begin

  vtData.RecNo:=rc;//переход к следующей записи

  if vtData.Fields[3].AsString='Комун.Расходы' then//ищем поля содержащие

    begin                                   //данные по комунальным расходам

    sm:=vtData.Fields[0].AsString;//считываем данные о годе

    sy:=vtData.Fields[1].AsString;//и месяце найденной записи

    sum:=sum+ABS(vtData.Fields[2].AsFloat);//записываем сумму расходов в переменную

    rc1:=1;//ставим в начало второй счетчик записей

    while rc1<=vtData.RecordCount+1 do//до конца таблици ищем

    begin

    vtData.RecNo:=rc1;//начиная с первой записи

    if (vtData.Fields[0].AsString=sm)and//данные о доходе

       (vtData.Fields[1].AsString=sy)and//за месяц и год

       (vtData.Fields[3].AsString='Доход') then//в котором найдены комунальные расходы

        begin

        sum:=sum/vtData.Fields[2].AsFloat*100;//ищем процентное соотношение дохода и расхода

        vtData2.Append;//вносим

        vtData2.Fields[0].AsString:=sm;//соответствующие

        vtData2.Fields[1].AsString:=sy;//данные

        vtData2.Fields[2].AsFloat:=sum;//во временную таблицу

        end;

      inc(rc1);//переходим к следующей строке

      end;

      sum:=0;//обнуляем сумму за месяц

    end;

  inc(rc);//ищем далее

end;

cxGrid1Level4.Visible:=false;//переключаемся

cxGrid1Level3.Visible:=true;//на уровень

cxGrid1Level2.Visible:=false;//с граффиком

cxGrid1Level1.Visible:=false;//другие уровни не видны

end;

 

procedure TfMain.mmSDiagClick(Sender: TObject);//при выборе столбиковой диаграммы

begin

vtData2.Clear;//очищаем временную таблицу

summing;//вызов процедуры для заполнения данных

cxGrid1Level1.Visible:=false;//видимый уровень

cxGrid1Level2.Visible:=false;//со столбиковой диаграммой

cxGrid1Level3.Visible:=false;//остальные уровни

cxGrid1Level4.Visible:=true;//не видны

end;

 

procedure TfMain.mmTableClick(Sender: TObject);

begin

cxGrid1Level1.Visible:=true;//виден уровень

cxGrid1Level2.Visible:=false;//в котором отображаются

cxGrid1Level3.Visible:=false;//данные из таблици

cxGrid1Level4.Visible:=false;///остальные уровни не видны

end;

 

procedure TfMain.Summing;

var

rc2, rc3:integer;//счетчики записей

begin

  rc2:=1;//счетчик устанавливается в начальное значение

  sum:=0;

  while rc2<=vtData.RecordCount+1 do//перебор записей до конца таблици

  begin

  vtData.RecNo:=rc2;//переход к следующей записи

  bis:=False;//иначально считается что во временной таблице данных нет

    if vtData.Fields[3].AsString='Доход' then//как только найден доход

      begin

        rc3:=1;//второй счетчик в начальном положении

        sy:=vtData.Fields[1].AsString;//считываем год за который найден доход

        while rc3<=vtData2.RecordCount+1 do//до конца таблици ищем

        begin

          vtData2.RecNo:=rc3;

          if vtData2.Fields[1].AsString=sy then//есть ли во временной таблице данные

          bis:=true;//за заданный год. Если находим переменная становится истинна

          inc(rc3);//переход к следующей записи

        end;

        if bis=false then//если даненых за год нет, начинаем их собирать

        begin

          rc3:=rc2+1;//начиная с последней обнаруженной записи по доходу

          sum:=sum+vtData.Fields[2].AsFloat;//складываем суммы доходов

          while rc3<=vtData.RecordCount do//до конца таблицуи

          begin

            vtData.RecNo:=rc3;

            if(vtData.Fields[1].AsString=sy)and//если запись соответствует году

            (vtData.Fields[3].AsString='Доход') then//и типу доходы

             sum:=sum+vtData.Fields[2].AsFloat;//

          inc(rc3);

          end;

          sum1:=sum;//записываем сумму доходов в другую переменную

          sty:='Комун.Расходы';//задаем тип расходов для поиска

          Adding;//находим данные и добавляем в таблицу

          sty:='Промтов.Расходы';//для каждого типа

          Adding;//с помощью отдельной процедуры

          sty:='Продукт. Расходы';//

          Adding;//

          sty:='Душевные Расходы';//

          Adding;//

          sty:='Прочие Расходы';//

          Adding;//

        end;

     end;

  inc(rc2);

  end;

end;

 

procedure TfMain.Adding;

var

rc4: integer;//счетчик записей

begin

  rc4:=1;//ставим в начало

  sum:=0;//обнуляем сумму

  while rc4<=vtData.RecordCount+1 do//ищем до конца таблици

  begin

    vtData.RecNo:=rc4;

    if((vtData.Fields[1].AsString=sy)and (vtData.Fields[3].AsString=sty)) then

    begin//если найденная строка подходит по году и типу суммы

      sum:=sum+ABS(vtData.Fields[2].AsFloat);//добавляем по модулю её в переменную

    end;

  inc(rc4);

  end;

  sum:=sum/sum1;//находим отношение

  vtData2.Append;//добавляем запись во вторую таблицу

  vtData2.Fields[1].AsString:=sy;//вставляем соответствующие параметры

  vtData2.Fields[2].AsFloat:=sum;//в соответствующие

  vtData2.Fields[3].AsString:=sty;//столбци таблици

end;

 

end.


Информация о работе Высокоуровневые методы программирования