Автор работы: Пользователь скрыл имя, 12 Октября 2012 в 14:04, реферат
Разработать информационную подсистему контроля бюджета семьи.
Информация, обрабатываемая в системе, должна храниться в текстовом или типизированном файлах.
Задание на разработку программного комплекса. 2
Функциональная схема приложения 3
Спецификация программного комплекса. 5
Название задачи. 5
Описание задачи. 5
Управление режимами работы программы. 5
Входные данные. 6
Выходные данные 6
Структурная диаграмма программного комплекса. 7
Блок схема главного модуля 8
Данные для тестирования программного модуля и программного комплекса в целом. 9
Инструкция пользователя. 10
Список используемых источников. 17
Приложение 1 18
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='
begin
sm:=vtData.Fields[0].AsString;
sy:=vtData.Fields[1].AsString;
sum:=sum+ABS(vtData.Fields[2].
rc1:=1;//ставим в начало второй счетчик записей
while rc1<=vtData.RecordCount+1 do//до конца таблици ищем
begin
vtData.RecNo:=rc1;//начиная с первой записи
if (vtData.Fields[0].AsString=sm)
(vtData.Fields[1].AsString=sy)
(vtData.Fields[3].AsString='
begin
sum:=sum/vtData.Fields[2].
vtData2.Append;//вносим
vtData2.Fields[0].AsString:=
vtData2.Fields[1].AsString:=
vtData2.Fields[2].AsFloat:=
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='
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].
while rc3<=vtData.RecordCount do//до конца таблицуи
begin
vtData.RecNo:=rc3;
if(vtData.Fields[1].AsString=
(vtData.Fields[3].AsString='
sum:=sum+vtData.Fields[2].
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=
begin//если найденная строка подходит по году и типу суммы
sum:=sum+ABS(vtData.Fields[2].
end;
inc(rc4);
end;
sum:=sum/sum1;//находим отношение
vtData2.Append;//добавляем запись во вторую таблицу
vtData2.Fields[1].AsString:=
vtData2.Fields[2].AsFloat:=
vtData2.Fields[3].AsString:=
end;
end.