![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Схема потоков данных новой системы
Блок-схема для новой системы
Предназначен преимущества 1. Быстрая скорость работы. По сравнению с нынешней системой, новая система компьютеризирована, и поэтому он стал быстрее, чтобы вычислить количество углеводов, жиров и белков. Таким образом, новая система позволит повысить эффективность работы диетолога и сохранить свое время. 2. Снижение количества ошибок. С новыми правилами проверки, новая программа может предоставить информацию без каких-либо ошибок. Кроме того, автоматическая система, вероятно, имеет меньше ошибок при расчетах. 3. Портативный и безопасный хранение данных и простой процесс поиска данных. Существующая система основана на бумажных носителях, так что данные, хранящиеся на нем могут быть повреждены, и это занимает много места в комнате медицинского персонала. Кроме того, он является очень сложным для поиска определенной информации, когда клиент собирается создать десять дней отчет. Принимая во внимание, что новая система обеспечивает безопасность хранения данных (может делать резервные версии), и это портативный, чтобы держать его с помощью флэш-накопитель и легко найти необходимые данные. 4. Упрощенная работа. Вся операция с продолжающимся информация и анализ данных становятся проще и теперь процедура с много листов бумаги заменяется простой работы с компьютерной системой, так что процедура создания отчетов больше не сложный процесс. Пределы объема решения Несмотря на то, что новая система может решить многие проблемы в исходной, есть еще некоторые ограничения и недостатки его использования. • Программа не может работать с продуктами, которые не имеют статические значения жиров, белков и т.д. • Программа не может вычислить суммарное количество белков, жиров и т.д. в конкретном еды. Это может сделать это только для разделенных продуктов • Если данные из программы сохраняется его можно прочитать только с помощью этой программы, другие программы, такие как MS не может сделать это надлежащим образом. Программа, предположительно, составляют менее 5 мегабайт как база данных для программы упрощенного и теперь насчитывает всего несколько килобайт. Но некоторые фотографии, включены в программу, чтобы сделать удобный интерфейс, поэтому она нуждается в память. Развитие Системный дизайн
Листинг программы Это является основной формой которой пользователь отвечает в первую очередь, когда программа запускается. Основная форма обеспечивает такую возможность, как 'Open' значений для каждого типа еды, а затем, при необходимости, изменить что-то. После этого, можно «спасти» эти изменения. Наконец, когда конкретные значения загружаются, форма может предложить клиенту перейти к следующему форме. Этот скриншот демонстрирует процесс, который происходит при нажатии на кнопку "ОТКРЫТЬ". Аналогичным образом, данные могут быть сохранены. Here is the example of the saved file: Вторая форма ввода данных формы. Здесь пользователь вводит количество конкретного продукта провели. Клиенты вводит значения на 10 дней, а затем, нажав кнопку "Вычислить среднее значение 'она могла вычислить среднее значение для количества продуктов. После вычисляется среднее значение, то пользователь может нажать кнопку "Подсчитать", который будет показывать третью форму.
Последняя форма показывает все расчетные количества белков, жиров, углеводов и калорий. Затем пользователь может закрыть программу, нажав кнопку "Закрыть".
Programming unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, Buttons, ExtCtrls, jpeg, ComCtrls; type TMainForm = class(TForm) LoadDialog: TOpenDialog; SaveDialog: TSaveDialog; Welcome: TLabel; Load: TButton; Save: TButton; InputTable: TStringGrid; GoNextForm: TBitBtn; Timer: TTimer; Close: TButton; Calendar: TMonthCalendar; NisLogo: TImage; Instruction1: TLabel; Instruction2: TLabel; procedure LoadClick(Sender: TObject); procedure SaveClick(Sender: TObject); procedure strngrd1KeyНажмите на кнопку(Sender: TObject; var Key: Char); procedure GoNextFormClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TimerTimer(Sender: TObject); procedure CloseClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var MainForm: TMainForm;
implementation uses Unit2, Unit3; {$R *.dfm} procedure LoadStringGrid(StringGrid: TStringGrid; const FileName: TFileName); var f: TextFile; iTmp, i, k: Integer; strTemp: string; begin AssignFile(f, FileName); Reset(f); with inputtable do begin // Get number of columns Readln(f, iTmp); ColCount := iTmp; // Get number of rows Readln(f, iTmp); RowCount := iTmp; // loop through cells & fill in values for i := 0 to ColCount - 1 do for k := 0 to RowCount - 1 do begin Readln(f, strTemp); Cells[i, k] := strTemp; end; end; CloseFile(f); end; { This code enables to open the specific values for each product into stringgrid component}
procedure SaveStringGrid(strngrd1: TStringGrid; const FileName: TFileName); var f: TextFile; i, k: Integer; begin AssignFile(f, FileName); Rewrite(f); with inputtable do begin // Write number of Columns/Rows Writeln(f, ColCount); Writeln(f, RowCount); // loop through cells for i := 0 to ColCount - 1 do for k := 0 to RowCount - 1 do Writeln(F, Cells[i, k]); end; CloseFile(F); end; {Saves the changes for specific values of each product}
procedure TMainForm.LoadClick(Sender: TObject); begin if OpenDialog.Execute then begin LoadStringGrid(inputtable, OpenDialog.FileName); Caption := ExtractFileName(Opendialog.FileName); end else Exit; end; {Opens the dialog during which a specific file could be loaded into stringgrid}
procedure TMainForm.SaveClick(Sender: TObject); begin Savedialog.Title := Сохранить таблицу как...'; if not savedialog.Execute then Exit else begin savedialog.Title := Сохранить таблицу как...'; SaveStringGrid(inputtable, savedialog.FileName); end; end;{Saves changed values in specific file}
procedure TMainForm.strngrd1KeyНажмите на кнопку(Sender: TObject; var Key: Char); begin if (key='-')and(pos('-',inputtable.Cells[inputtable.Col,inputtable.Row])<>0) then key:=#0; if (key=',')and(pos(',',inputtable.Cells[inputtable.Col,inputtable.Row])<>0) then key:=#0; case Key of '0'..'9', #13,#08, ',','-': ; else Key := Chr(0); end;
if key = #13 then with inputtable do if col < colcount - 1 then col := col + 1 else if row < rowcount - 1 then begin row := row + 1; col := 1; end else begin row := 1; col := 1;
end; end; {If some cells are empty, then this code fills it with 0s in order the program to function normally without errors}
procedure TMainForm.GoNextFormClick(Sender: TObject); begin Mainform.visible:=false; begin InputForm.Show; end; end; {Shows the next form and makes current form invisible}
procedure TMainForm.FormCreate(Sender: TObject); begin InputTable.Cells[1,0]:='Белки'; InputTable.Cells[2,0]:='Жиры'; InputTable.Cells[3,0]:='Углеводы'; InputTable.Cells[4,0]:='Каллории'; InputTable.Cells[0,0]:='Продукты'; InputTable.Cells[0,1]:='Мясо'; InputTable.Cells[0,2]:='Сливочное масло; InputTable.Cells[0,3]:='Растительное масло'; InputTable.Cells[0,4]:='Молоко'; InputTable.Cells[0,5]:='Кефир'; InputTable.Cells[0,6]:='Сметана'; InputTable.Cells[0,7]:='Творог'; InputTable.Cells[0,8]:='Сыр'; InputTable.Cells[0,9]:='Яйца'; InputTable.Cells[0,10]:='Мука'; InputTable.Cells[0,11]:='Гречка'; InputTable.Cells[0,12]:='Манная крупа'; InputTable.Cells[0,13]:='Рис'; InputTable.Cells[0,14]:='Пшено'; InputTable.Cells[0,15]:='Лапша'; InputTable.Cells[0,16]:='Перловка'; InputTable.Cells[0,17]:='Геркулес'; end; {Fills the fixed cells in the table with the names of each product
procedure TMainForm.TimerTimer(Sender: TObject); begin welcome.left:=welcome.Left+1; if welcome.Left > mainform.width then welcome.Left := welcome.Left-(mainform.width+welcome.Width); end; {The caption is moving}
procedure TMainForm.CloseClick(Sender: TObject); begin MainForm.Close; end; {Closes the form} end.
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls; type TOutputForm = class(TForm) OutputTable: TStringGrid; CloseBtn: TButton; Instruction4: TLabel; Save: TButton; procedure FormCreate(Sender: TObject); procedure CloseBtnClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var OutputForm: TOutputForm; implementation uses Unit1;
{$R *.dfm} procedure TOutputForm.FormCreate(Sender: TObject); begin OutputTable.Cells[1,0]:='Белки'; OutputTable.Cells[2,0]:='Жиры'; OutputTable.Cells[3,0]:='Углеводы'; OutputTable.Cells[4,0]:='Каллории'; OutputTable.Cells[0,0]:='Продукты'; OutputTable.Cells[0,1]:='Мясо'; OutputTable.Cells[0,2]:='Сливочное масло; OutputTable.Cells[0,3]:='Растительное масло'; OutputTable.Cells[0,4]:='Молоко'; OutputTable.Cells[0,5]:='Кефир'; OutputTable.Cells[0,6]:='Сметана'; OutputTable.Cells[0,7]:='Творог'; OutputTable.Cells[0,8]:='Сыр'; OutputTable.Cells[0,9]:='Яйца'; OutputTable.Cells[0,10]:='Мука'; OutputTable.Cells[0,11]:='Гречка'; OutputTable.Cells[0,12]:='Манная крупа'; OutputTable.Cells[0,13]:='Рис'; OutputTable.Cells[0,14]:='Пшено'; OutputTable.Cells[0,15]:='Лапша'; OutputTable.Cells[0,16]:='Перловка'; OutputTable.Cells[0,17]:='Геркулес'; end; {Fills the fixed cells in the srtinggrid with the names of each product}
procedure TOutputForm.CloseBtnClick(Sender: TObject); begin OutputForm.Close; end; {Closes the form} end. unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, Grids; type TInputForm = class(TForm) InputTable1: TStringGrid; AverageCalc: TBitBtn; CalculateAll: TBitBtn; Instruction3: TLabel; procedure AverageCalcClick(Sender: TObject); procedure CalculateAllClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var InputForm: TInputForm; implementation uses Unit2, Unit1; {$R *.dfm}
procedure TInputForm.AverageCalcClick(Sender: TObject); var s:real; i,j: integer; begin
For j:=1 to inputtable1.rowcount do begin s:=0; for i:=1 to inputtable1.colCount do begin If inputtable1.Cells[i,j]='' then inputtable1.Cells[i,j]:='0'; s:=s+strtofloat(inputtable1.Cells[i,j]); end; inputtable1.Cells[11,j]:=Floattostr(s/10) ;
end; end; {Calculates the mean values and fills empty cells with 0s}
procedure TInputForm.CalculateAllClick(Sender: TObject); var i:integer; s,d,s1,d1,s2,d2,s3,d3: real; begin
for i:= 1 to outputform.outputtable.rowcount do begin If mainform.inputtable.cells[1,i]='' then mainform.inputtable.cells[1,i]:='0' ; If inputForm.InputTable1.cells[11,i]='' then inputForm.InputTable1[11,i]:='0'; s:=strtofloat( mainform.inputtable.cells[1,i]); d:=strtofloat(inputform.inputtable1.cells[11,i]); Outputform.outputtable.cells[1,i]:= FloatToStr(( s*d )/100);
If Mainform.inputtable.cells[2,i]='' then Mainform.inputtable.cells[2,i]:='0' ; If Inputform.inputtable1.cells[11,i]='' then Inputform.inputtable1.cells[11,i]:='0'; s1:=strtofloat( Mainform.inputtable.cells[2,i]); d1:=strtofloat(Inputform.inputtable1.cells[11,i]); Outputform.outputtable.cells[2,i]:= FloatToStr(( s1*d1 )/100);
If Mainform.inputtable.cells[3,i]='' then Mainform.inputtable.cells[3,i]:='0' ; If Inputform.inputtable1.cells[11,i]='' then Inputform.inputtable1.cells[11,i]:='0'; s2:=strtofloat( Mainform.inputtable.cells[3,i]); d2:=strtofloat(Inputform.inputtable1.cells[11,i]); Outputform.Outputtable.cells[3,i]:= FloatToStr(( s2*d2 )/100);
If mainform.inputtable.cells[4,i]='' then mainform.inputtable.cells[4,i]:='0' ; If inputform.inputtable1.cells[11,i]='' then inputform.inputtable1.cells[11,i]:='0'; s3:=strtofloat( mainform.inputtable.cells[4,i]); d3:=strtofloat(inputform.inputtable1.cells[11,i]); Outputform.outputtable.cells[4,i]:= FloatToStr(( s3*d3 )/100); InputForm.Close; Outputform.show; end; end; {Calculates the values for each of the elements such as proteins, fats etc.}
procedure TInputForm.FormCreate(Sender: TObject); begin Inputtable1.Cells[1,0]:='День 1'; Inputtable1.Cells[2,0]:='День2'; Inputtable1.Cells[3,0]:='День 3'; Inputtable1.Cells[4,0]:='День 4'; Inputtable1.Cells[5,0]:=' День 5'; Inputtable1.Cells[6,0]:=' День 6'; Inputtable1.Cells[7,0]:=' День 7'; Inputtable1.Cells[8,0]:=' День 8'; Inputtable1.Cells[9,0]:=' День 9'; Inputtable1.Cells[10,0]:=' День 10'; Inputtable1.Cells[11,0]:='Среднее'; InputTable.Cells[1,0]:='Белки'; InputTable.Cells[2,0]:='Жиры'; InputTable.Cells[3,0]:='Углеводы'; InputTable.Cells[4,0]:='Каллории'; InputTable.Cells[0,0]:='Продукты'; InputTable.Cells[0,1]:='Мясо'; InputTable.Cells[0,2]:='Сливочное масло; InputTable.Cells[0,3]:='Растительное масло'; InputTable.Cells[0,4]:='Молоко'; InputTable.Cells[0,5]:='Кефир'; InputTable.Cells[0,6]:='Сметана'; InputTable.Cells[0,7]:='Творог'; InputTable.Cells[0,8]:='Сыр'; InputTable.Cells[0,9]:='Яйца'; InputTable.Cells[0,10]:='Мука'; InputTable.Cells[0,11]:='Гречка'; InputTable.Cells[0,12]:='Манная крупа'; InputTable.Cells[0,13]:='Рис'; InputTable.Cells[0,14]:='Пшено'; InputTable.Cells[0,15]:='Лапша'; InputTable.Cells[0,16]:='Перловка'; InputTable.Cells[0,17]:='Геркулес'; end; {Fills the tables’s fixed cells with specific denominations} end.
Тестирование Стратегия тестирования Моя программа для расчета количества углеводов, жиров, белков и калорий для детского сада в Назарбаев Интеллектуальной школе, могут страдать от ошибок, а также многих других программ в мире. Я буду использовать различные стратегии тестирования, чтобы проверить работу моей программы. Я вводил нормальные и аномальные значения, чтобы проверить свою систему. Надеюсь после тестирования я могу уменьшить количество ошибок практически до нуля План тестирования
![]() |