Разработка Windows-приложения «Электронная касса».

Заказать уникальную курсовую работу
Тип работы: Курсовая работа
Предмет: Информатика
  • 52 52 страницы
  • 10 + 10 источников
  • Добавлена 11.11.2009
1 000 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
Оглавление
Введение
Глава 1. Работа с типизированными файлами
1.1 Использование файловых переменных. Типы файлов
1.2 Операции ввода/вывода
Глава 2. Основные сведения о системе Borland Delphi 7.0
2.1 Объектно-ориентированное программирование
2.2 Создание проекта приложения в Delphi
2.3 Описание компонентов Delphi, использованных при создании приложения
2.3.1 Обработка исключительных ситуаций
2.3.2 Элемент Form
2.3.3 Компонент PageControl
2.3.4 Компонент Label
2.3.5 Компонент BitBtn
2.3.6 Компонент Panel
2.3.7 Компонент Edit
2.3.8 Компонент MaskEdit
2.3.9 Компонент ComboBox
2.3.10 Компонент SpinEdit
2.3.11 Компонент ListView
Глава 3. Windows-приложение «Электронная касса»
3.1 Общая характеристика приложения
3.2 Описание интерфейса приложения
3.3 Инструкция пользователя по работе с приложением
Заключение
Список литературы
Приложения
Приложение 1. Текст программных модулей
Приложение 2. Система тестов

Фрагмент для ознакомления

dfm}

procedure TForm1.FormCreate(Sender: TObject);
var NewColumn: TListColumn;
Year, Month, Day : Word;
Layout: array[0.. KL_NAMELENGTH] of char;
begin
//процедура при открытии формы
Form1.Width:=800; //размеры формы - ширина и высота
Form1.Height:=600;
PageControl1.Align:=AlClient; //на весь экран
LoadKeyBoardLayout(StrCopy(Layout,'00000419'),KLF_ACTIVATE); //на русскую раскладку клавиатуры
DecimalSeparator:='.'; //установка разделителя целой и дробной части чисел
TabSheet1.TabVisible:=False;
TabSheet3.TabVisible:=False;
Panel3.Visible:=False;
Panel4.Visible:=False;
with ListView1 do
begin
NewColumn := Columns.Add;
NewColumn.Width:=120;
NewColumn.Caption := 'Фамилия';

NewColumn := Columns.Add;
NewColumn.Width:=120;
NewColumn.Caption := 'Имя';

NewColumn := Columns.Add;
NewColumn.Width:=120;
NewColumn.Caption := 'Отчество';
end;
ListView1.Align:=AlClient;
with ListView2 do
begin
NewColumn := Columns.Add;
NewColumn.Width:=100;
NewColumn.Caption := 'Валюта';

NewColumn := Columns.Add;
NewColumn.Width:=100;
NewColumn.Caption := 'Коэффициент';

NewColumn := Columns.Add;
NewColumn.Width:=100;
NewColumn.Caption := 'Номинал';

NewColumn := Columns.Add;
NewColumn.Width:=100;
NewColumn.Caption := 'Количество';

end;
ListView2.Align:=AlClient;

with ListView3 do
begin
NewColumn := Columns.Add;
NewColumn.Width:=100;
NewColumn.Caption := 'Валюта';

NewColumn := Columns.Add;
NewColumn.Width:=100;
NewColumn.Caption := 'Номинал';

NewColumn := Columns.Add;
NewColumn.Width:=100;
NewColumn.Caption := 'Количество';

end;
ListView3.Align:=AlClient;

DecodeDate(date, Year, Month, Day);
SpinEdit4.Value:=Year;
SpinEdit6.Value:=Year;
//заполнение выпадающего списка названиями месяцев для получения денег
ComboBox1.Items.Clear;
ComboBox1.Items.Add('январь'); ComboBox1.Items.Add('февраль'); ComboBox1.Items.Add('март');
ComboBox1.Items.Add('апрель'); ComboBox1.Items.Add('март'); ComboBox1.Items.Add('июнь');
ComboBox1.Items.Add('июль'); ComboBox1.Items.Add('август'); ComboBox1.Items.Add('сентябрь');
ComboBox1.Items.Add('октябрь'); ComboBox1.Items.Add('ноябрь'); ComboBox1.Items.Add('декабрь');
//заполнение выпадающего списка названиями месяцев для ведомости зарплат
ComboBox4.Items.Clear;
ComboBox4.Items.Add('январь'); ComboBox4.Items.Add('февраль'); ComboBox4.Items.Add('март');
ComboBox4.Items.Add('апрель'); ComboBox4.Items.Add('март'); ComboBox4.Items.Add('июнь');
ComboBox4.Items.Add('июль'); ComboBox4.Items.Add('август'); ComboBox4.Items.Add('сентябрь');
ComboBox4.Items.Add('октябрь'); ComboBox4.Items.Add('ноябрь'); ComboBox4.Items.Add('декабрь');
//заполним списками имеющихся валют
AssignFile(ManyFile, 'many.rec');
//если есть файл с валютами, то проверяем
if (FileExists('many.rec')) then
begin
Reset(ManyFile);
while not eof(ManyFile) do
begin
Read(ManyFile,Many_Record);
ComboBox2.Items.Add(Many_Record.Valuta);
ComboBox5.Items.Add(Many_Record.Valuta);
end;
CloseFile(ManyFile);
end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var Pass_true : Boolean ; //переменная для определения корректности пароля
begin
//проверить ФИО и пароль
Label22.Caption:='0';
if (FileExists('list.rec')=False) then
begin
Application.MessageBox('Нет файла для проверки корректности имени пользователя и пароля!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
Pass_true:=False;
AssignFile(PersonFile, 'list.rec');
Reset(PersonFile);
while not eof(PersonFile) do
begin
Read(PersonFile,People_Record);
if ((People_Record.Family=trim(Edit1.Text)) and
(People_Record.Name=trim(Edit2.Text)) and
(People_Record.Patronim=trim(Edit3.Text))) then
begin
if (People_Record.Password<>SpinEdit1.Value) then
begin
Application.MessageBox('Пароль неверный!','Сообщение',mb_Ok+mb_ICONINFORMATION);
CloseFile(PersonFile);
exit;
end
else
Pass_true:=True;
end;
end;
if (not Pass_true) then
begin
Application.MessageBox('Такого пользователя нет!','Сообщение',mb_Ok+mb_ICONINFORMATION);
CloseFile(PersonFile);
exit;
end;
Panel1.Enabled:=False;
Panel10.Visible:=True;
CloseFile(PersonFile);

end;

procedure TForm1.BitBtn4Click(Sender: TObject);
var ListItem:TlistItem;
begin
//заполнение ведомости на зарплату
if (trim(Edit5.Text)<>'1') then
begin
Application.MessageBox('Неверный пароль для бухгалтера!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
TabSheet3.TabVisible:=True;
PageControl1.ActivePage:=TabSheet3;
ListView1.Items.Clear;
if (FileExists('list.rec')) then
begin
AssignFile(PersonFile, 'list.rec');
Reset(PersonFile);
while not eof(PersonFile) do
begin
Read(PersonFile,People_Record);
ListItem:=ListView1.Items.Add;
ListItem.Caption:=People_Record.Family;
ListItem.SubItems.Add(People_Record.Name);
ListItem.SubItems.Add(People_Record.Patronim);
end;
CloseFile(PersonFile);
end;//if FileExists
end;

procedure TForm1.BitBtn5Click(Sender: TObject);
begin
//пополнение кассы деньгами
if (trim(Edit4.Text)<>'1') then
begin
Application.MessageBox('Неверный пароль для инкассатора!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
TabSheet1.TabVisible:=True;
PageControl1.ActivePage:=TabSheet1;
View_Kassa;
end;

procedure TForm1.View_Kassa;
var namefile:String;
ListItem:TlistItem;
begin
//просмотр содержимого кассы
ListView3.Items.Clear;
if (not FileExists('kassa.rec')) then exit;
namefile:='kassa.rec';
AssignFile(KassaFile,namefile);
Reset(KassaFile);
while not eof(KassaFile) do
begin
Read(KassaFile,Kassa_Record);
ListItem:=ListView3.Items.Add;
ListItem.Caption:=Kassa_Record.Valuta;
ListItem.SubItems.Add(IntToStr(Kassa_Record.Nominal));
ListItem.SubItems.Add(IntToStr(Kassa_Record.Vcount));
end;
CloseFile(KassaFile);
end;

procedure TForm1.BitBtn6Click(Sender: TObject);
var ListItem:TlistItem;
begin
//проверить, есть или нет такой человек
AssignFile(PersonFile, 'list.rec');
//если есть файл с ФИО и паролями, то проверяем
if (FileExists('list.rec')) then
begin
Reset(PersonFile);
while not eof(PersonFile) do
begin
Read(PersonFile,People_Record);
if ((People_Record.Family=trim(Edit6.Text)) and
(People_Record.Name=trim(Edit7.Text)) and
(People_Record.Patronim=trim(Edit8.Text))) then
begin
Application.MessageBox('Человек с таким ФИО уже внесен в список!','Сообщение',mb_Ok+mb_ICONINFORMATION);
CloseFile(PersonFile);
exit;
end;
end;
end
else
Rewrite(PersonFile);
//добавить нового сотрудника
People_Record.Family:=trim(Edit6.Text);
People_Record.Name:=trim(Edit7.Text);
People_Record.Patronim:=trim(Edit8.Text);
People_Record.Password:=SpinEdit5.Value;
//запись введенных значений в файл
Write(PersonFile,People_Record);
CloseFile(PersonFile);

ListItem:=ListView1.Items.Add;
ListItem.Caption:=People_Record.Family;
ListItem.SubItems.Add(People_Record.Name);
ListItem.SubItems.Add(People_Record.Patronim);
//очистить поля после ввода
Edit6.Text:='';
Edit7.Text:='';
Edit8.Text:='';
SpinEdit5.Value:=1;
Application.MessageBox('Новый сотрудник добавлен!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;

procedure TForm1.BitBtn7Click(Sender: TObject);
var namefile:String; //переменная для имени файла с зарплатой
r : Real;
begin
//процедура для добавления зарплаты
try
r:=StrToFloat(trim(MaskEdit1.Text));
except
Application.MessageBox('Ошибка в сумме денег!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
if (ListView1.SelCount=0) then
begin
Application.MessageBox('Не выбран человек для внесения суммы денег!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;

namefile:=IntToStr(SpinEdit6.Value)+'_'+IntToStr(ComboBox4.ItemIndex+1)+'.rec';
AssignFile(PersonManyFile,namefile);
//если есть файл с начислениями денег за указанный год и месяц, то дозаписываем.
//Если файла нет, то создаем
if (FileExists(namefile)) then
Reset(PersonManyFile)
else
Rewrite(PersonManyFile);
//проверка, чтобы не было повторов при внесении зарплаты

while not eof(PersonManyFile) do
begin
Read(PersonManyFile,People_many_Record);
if ((People_many_Record.Family=ListView1.Selected.Caption) and
(People_many_Record.Name=ListView1.Selected.SubItems[0]) and
(People_many_Record.Patronim=ListView1.Selected.SubItems[1])) then
begin
Application.MessageBox('Зарплата сотрудника за указанный месяц уже имеется!','Повтор',mb_Ok+mb_ICONINFORMATION);
CloseFile(PersonManyFile);
exit;
end;
end;

//добавить новое начисление
People_many_Record.Family:=ListView1.Selected.Caption;
People_many_Record.Name:=ListView1.Selected.SubItems[0];
People_many_Record.Patronim:=ListView1.Selected.SubItems[1];
People_many_Record.Many:=StrToFloat(trim(MaskEdit1.Text));
//запись введенных значений в файл
Write(PersonManyFile,People_many_Record);
CloseFile(PersonManyFile);
//очистить поля после ввода
ComboBox4.ItemIndex:=-1;
MaskEdit1.Text:='';
Application.MessageBox('Зарплата сотрудника внесена!','Сообщение',mb_Ok+mb_ICONINFORMATION);

end;

procedure TForm1.BitBtn8Click(Sender: TObject);
var namefile:String; //переменная для имени файла с зарплатой
begin
//сформировать имя файла с зарплатой
namefile:=IntToStr(SpinEdit4.Value)+'_'+IntToStr(ComboBox1.ItemIndex+1)+'.rec';
if (FileExists(namefile)=False) then
begin
Application.MessageBox('Нет файла за указанный год и месяц!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
Label22.Caption:='0';
AssignFile(PersonManyFile,namefile);
Reset(PersonManyFile);
while not eof(PersonManyFile) do
begin
Read(PersonManyFile,People_many_Record);
if ((People_many_Record.Family)=trim(Edit1.Text)) and
(People_many_Record.Name=trim(Edit2.Text)) and
(People_many_Record.Patronim=trim(Edit3.Text)) then
Label22.Caption:=FloatToStr(People_many_Record.Many);
end;
CloseFile(PersonManyFile);
if (StrToFloat(Label22.Caption)>0) then
begin
Panel3.Visible:=True;
Panel4.Visible:=True;
Panel10.Enabled:=False;
end;
end;

procedure TForm1.BitBtn10Click(Sender: TObject);
var r : Real;
begin
//добавить новую валюту
try
r:=StrToFloat(trim(MaskEdit2.Text));
except
Application.MessageBox('Ошибка в коэффициенте пересчета в рубли!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
if (trim(Edit9.Text)='рубль') then
begin
Application.MessageBox('Вводить валюту "рубль" не нужно!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
//проверить, есть или нет такой валюты
AssignFile(ManyFile, 'many.rec');
//если есть файл с валютами, то проверяем
if (FileExists('many.rec')) then
begin
Reset(ManyFile);
while not eof(ManyFile) do
begin
Read(ManyFile,Many_Record);
if (Many_Record.Valuta=trim(Edit9.Text)) then
begin
Application.MessageBox('Такая валюта уже внесена в список!','Сообщение',mb_Ok+mb_ICONINFORMATION);
CloseFile(ManyFile);
exit;
end;
end;
end
else
begin
Rewrite(ManyFile);
//сразу добавим валюту по умолчанию - рубли
ComboBox2.Items.Add('рубль');
ComboBox5.Items.Add('рубль');
Many_Record.Valuta:='рубль';
Many_Record.Koef:=1;
//запись введенных значений в файл
Write(ManyFile,Many_Record);
end;
//добавить новую валюту
Many_Record.Valuta:=trim(Edit9.Text);
Many_Record.Koef:=StrToFloat(trim(MaskEdit2.Text));
//запись введенных значений в файл
Write(ManyFile,Many_Record);
CloseFile(ManyFile);

ComboBox2.Items.Add(trim(Edit9.Text));
ComboBox5.Items.Add(trim(Edit9.Text));

//очистить поля после ввода
Edit9.Text:='';
Application.MessageBox('Новая валюта добавлена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;


procedure TForm1.BitBtn9Click(Sender: TObject);
var namefile_source,namefile_destination : String;
KFile : file of TKassa; // файл для перезаписи данных после пополнения кассы
name1,name2:array [0..256] of char;
kupur:Boolean;
begin
//процедура для пополнения кассы
if ((SpinEdit7.Value=0) or (SpinEdit8.Value=0)) then
begin
Application.MessageBox('Ошибка в указании достоинства и/или количества купюр!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
if (ComboBox5.ItemIndex=-1) then
begin
Application.MessageBox('Не выбрана валюта!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
//если есть файл с денежными средствами в кассе, то дозаписываем.
//Если файла нет, то создаем
namefile_source:='kassa.rec';
AssignFile(KassaFile,namefile_source);
if (FileExists('kassa.rec')) then
Reset(KassaFile)
else
Rewrite(KassaFile);
//добавить новое поступление
namefile_destination:='kassa.rev';
AssignFile(KFile,namefile_destination);
Rewrite(KFile);
kupur:=False;
while not eof(KassaFile) do
begin
Read(KassaFile,Kassa_Record);
if ((Kassa_Record.Valuta=ComboBox5.Items[ComboBox5.ItemIndex]) and
(Kassa_Record.Nominal=SpinEdit7.Value)) then
begin
Kassa_Record.Vcount:=Kassa_Record.Vcount+SpinEdit8.Value;
kupur:=True; //купюры данного номинала найдены и просто увеличили их количество
end;
Write(KFile,Kassa_Record);
end;
//купюры данного номинала не найдены и добавим запись о них
if (kupur=False) then
begin
Kassa_Record.Valuta:=ComboBox5.Items[ComboBox5.ItemIndex];
Kassa_Record.Nominal:=SpinEdit7.Value;
Kassa_Record.Vcount:=SpinEdit8.Value;
Write(KassaFile,Kassa_Record);
end;

CloseFile(KassaFile);
CloseFile(KFile);
copyfile(StrPCopy(name1,namefile_source),StrPCopy(name2,namefile_destination),False);
DeleteFile(namefile_source);
copyfile(StrPCopy(name1,namefile_destination),StrPCopy(name2,namefile_source),False);
DeleteFile(namefile_destination);
//очистить поля после ввода
ComboBox5.ItemIndex:=-1;
SpinEdit7.Value:=0;
SpinEdit8.Value:=0;
//вызов процедуры для просмотра наличности в кассе
View_Kassa;
Application.MessageBox('Денежные средства внесены!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
var ListItem: TListItem;
koef : real;
i : Integer;
begin
//получатель денег выбирает номиналы банкнот
//проверим, чтобы не было такой валюты и номинала среди выбранных пользователем
for i:=0 to ListView2.Items.Count-1 do
begin
if ((ListView2.Items[i].Caption=ComboBox2.Items[ComboBox2.ItemIndex]) and
(StrToInt(ListView2.Items[i].SubItems[1])=SpinEdit3.Value)) then
begin
Application.MessageBox('Такая валюта указанного номинала уже была выбрана!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
end;
//сначала найдем коэффициент пересчета в рубли
AssignFile(ManyFile, 'many.rec');
Reset(ManyFile);
koef:=0;
while not eof(ManyFile) do
begin
Read(ManyFile,Many_Record);
if (Many_Record.Valuta=ComboBox2.Items[ComboBox2.ItemIndex]) then
koef:=Many_Record.Koef;
end;
CloseFile(ManyFile);
ListItem:=ListView2.Items.Add;
ListItem.Caption:=ComboBox2.Items[ComboBox2.ItemIndex];
ListItem.SubItems.Add(FormatFloat('0.00',koef));
ListItem.SubItems.Add(IntToStr(SpinEdit3.Value));
ListItem.SubItems.Add(IntToStr(SpinEdit9.Value));
ComboBox2.ItemIndex:=-1;
SpinEdit3.Value:=0;
SpinEdit9.Value:=0;
Application.MessageBox('Ваша заявка учтена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var i : Integer;
kupur : Boolean; //переменная для проверки купюры нужного номинала
summa : Real;
namefile_source,namefile_destination : String;
PMFile : file of TPeople_many; // файл для перезаписи данных после выдачи
name1,name2:array [0..256] of char;
KFile : file of TKassa; // файл для перезаписи данных в кассе после выдачи
begin
//проверить количество купюр в кассе (платежеспособность кассы)
AssignFile(KassaFile,'kassa.rec');
Reset(KassaFile);
for i:=0 to ListView2.Items.Count-1 do
begin
//встать на начало файла перед поиском каждой валюты
Seek(KassaFile, 0);
kupur:=False;
while not eof(KassaFile) do
begin
Read(KassaFile,Kassa_Record);
if ((Kassa_Record.Valuta=ListView2.Items[i].Caption) and
(Kassa_Record.Nominal=StrToInt(ListView2.Items[i].SubItems[1]))) then
begin
if (Kassa_Record.Vcount>StrToInt(ListView2.Items[i].SubItems[2])) then
kupur:=True;
end;
end;
if (kupur=False) then break; //выход из цикла, так как недостаточно в кассе купюр нужного номинала
end; //конец цикла for
CloseFile(KassaFile);
if (kupur=False) then
begin
Application.MessageBox('В кассе недостаточно купюр выбранной валюты и номинала!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
//проверить заказанную сумму с суммой зарплаты
summa:=0;
for i:=0 to ListView2.Items.Count-1 do
begin
summa:=summa+StrToFloat(ListView2.Items[i].SubItems[0])*StrToInt(ListView2.Items[i].SubItems[1])*StrToInt(ListView2.Items[i].SubItems[2]);
end;
if (summa>StrToFloat(Label22.Caption)) then
begin
Application.MessageBox('На Вашем счете недостаточно средств для заказанной суммы!','Сообщение',mb_Ok+mb_ICONINFORMATION);
exit;
end;
//если всё нормально, то надо уменьшить сумму на счете и в кассе
//уменьшим сумму на счете пользователя
namefile_source:=IntToStr(SpinEdit4.Value)+'_'+IntToStr(ComboBox1.ItemIndex+1)+'.rec';
AssignFile(PersonManyFile,namefile_source);
Reset(PersonManyFile);
namefile_destination:=IntToStr(SpinEdit4.Value)+'_'+IntToStr(ComboBox1.ItemIndex+1)+'.rev';
AssignFile(PMFile,namefile_destination);
Rewrite(PMFile);

while not eof(PersonManyFile) do
begin
Read(PersonManyFile,People_many_Record);
if ((People_many_Record.Family)=trim(Edit1.Text)) and
(People_many_Record.Name=trim(Edit2.Text)) and
(People_many_Record.Patronim=trim(Edit3.Text)) then
begin
People_many_Record.Many:=People_many_Record.Many-summa;
end;
Write(PMFile,People_many_Record);
end;
CloseFile(PersonManyFile);
CloseFile(PMFile);
copyfile(StrPCopy(name1,namefile_destination),StrPCopy(name2,namefile_source),False);
deleteFile(namefile_destination);
//уменьшим сумму в кассе
namefile_source:='kassa.rec';
AssignFile(KassaFile,namefile_source);
Reset(KassaFile);
namefile_destination:='kassa.rev';
AssignFile(KFile,namefile_destination);
Rewrite(KFile);
for i:=0 to ListView2.Items.Count-1 do
begin
//встать на начало файла перед поиском каждой валюты
Seek(KassaFile, 0);
while not eof(KassaFile) do
begin
Read(KassaFile,Kassa_Record);
if ((Kassa_Record.Valuta=ListView2.Items[i].Caption) and
(Kassa_Record.Nominal=StrToInt(ListView2.Items[i].SubItems[1]))) then
Kassa_Record.Vcount:=Kassa_Record.Vcount-StrToInt(ListView2.Items[i].SubItems[2]);
Write(KFile,Kassa_Record);

end;
end; //конец цикла for
CloseFile(KassaFile);
CloseFile(KFile);
copyfile(StrPCopy(name1,namefile_destination),StrPCopy(name2,namefile_source),False);
DeleteFile(namefile_destination);
ListView2.Items.Clear;
Panel3.Visible:=False;
Panel4.Visible:=False;
Panel10.Visible:=False;
Panel10.Enabled:=True;
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
SpinEdit1.Value:=1;
Panel1.Enabled:=True;
TabSheet1.TabVisible:=False;
Application.MessageBox('Выплата произведена!','Сообщение',mb_Ok+mb_ICONINFORMATION);
end;

procedure TForm1.BitBtn11Click(Sender: TObject);
begin
//возврат в начало
Panel3.Visible:=False;
Panel4.Visible:=False;
Panel10.Visible:=False;
Panel10.Enabled:=True;
//сбросить набранную валюту и номиналы
ListView2.Items.Clear;
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
SpinEdit1.Value:=1;
Panel1.Enabled:=True;
Edit1.SetFocus;
end;
end.

Приложение 2. Система тестов
Для получения денег пользователь должен ввести фамилию, имя, отчество и пароль пользователя. Если такого пользователя нет, то программа выдаст сообщение, показанное на рис. 1.

Рис. 1. Сообщение о некорректном вводе фамилии, имени и/или отчества пользователя
Для получения денег пользователь должен ввести фамилию, имя, отчество и пароль пользователя. Если пользователь ввел неверный пароль, то программа выдаст сообщение, показанное на рис. 2.

Рис. 2. Сообщение о некорректном вводе пароля пользователя
Для получения денег пользователь должен выбрать из выпадающего списка месяц и год. Если получатель денег выбрал неверно указанные параметры, то программа выдаст сообщение, показанное на рис. 3.

Рис. 3. Сообщение о некорректном выборе месяца и года
Если в заявке пользователь указал валюту такого достоинства, которого нет в кассе или недостаточно купюр данного достоинства, то программа выдаст сообщение, показанное на рис. 4.

Рис. 4. Сообщение о неплатежеспособности кассы
Если в заявке пользователь указал сумму, большую, чем у него имеется на счете, то программа выдаст сообщение, показанное на рис. 5.

Рис. 5. Сообщение о недостаточном количестве денежных средств на счете пользователя
Для перехода для ввода ведомостей для зарплаты, бухгалтер должен ввести пароль. Если пароль введен неверно, программа выдаст сообщение, показанное на рис. 6.

Рис. 6. Сообщение бухгалтеру о неверном пароле
Если бухгалтер пытается ввести еще раз одного и того же человека, то программа выдаст сообщение, показанное на рис. 7.

Рис. 7. Сообщение о дублировании информации о получателе денег
Если бухгалтер не указал из списка человека, по которому необходимо ввести денежные начисления, то программа выдаст сообщение, показанное на рис. 8.

Рис. 8. Сообщение бухгалтеру о том, что не выбран сотрудник из списка
Если бухгалтер пытается второй раз ввести данные о зарплате человека за указанный месяц и год, то программа выдаст сообщение, показанное на рис. 9.

Рис. 9. Сообщение бухгалтеру о дублировании начислений
Для перехода для пополнения кассы инкассатор должен ввести пароль. Если пароль введен неверно, программа выдаст сообщение, показанное на рис. 10.

Рис. 10. Сообщение инкассатору о неверном пароле
Если инкассатор пытается второй раз ввести информацию о новой валюте, то программа выдаст сообщение, показанное на рис. 11.

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












2

Список литературы
1.Архангельский, А.Я. Программирование в Delphi 7 / А.Я. Архангельский – Бином-Пресс, 2003. – 1152 с. - ISBN 5-9518-0042-0.
2.Бакнелл, Д. Фундаментальные алгоритмы и структуры данных в Delphi / Д. Бакнелл – СПб.: Питер, 2006. – 560 с. - ISBN 5-469-01495-9, 5-93772-087-3.
3.Бобровский, С.И. Delphi 7. Учебный курс / С.И. Бобровский – СПб.: Питер, 2008. – 736 с.: ил. - ISBN 978-5-8046-0086-1.
4.Дарахвелидзе, П.Г., Марков, Е. П. Программирование в Delphi 7 / П.Г. Дарахвелидзе, Е. П. Марков. – СПб.: БХВ-Петербург, 2003. – 784 с. - ISBN 5-94157-116-Х.
5.Карпов, Б. Delphi: специальный справочник / Б. Карпов – СПб.: Питер, 2002. – 688 с.: ил. - ISBN 5-272-00353-5.
6.Фленов, М.Е. Библия для программиста в среде Delphi / М.Е. Фленов – СПб.: БХВ-Петербург, 2004. – 882 с.: ил. - ISBN 5-94157-456-8.
7.Фленов, М.Е. Программирование в Delphi глазами хакера / М.Е. Фленов – СПб.: БХВ-Петербург, 2005. – 368 с.: ил. - ISBN 5-94157-351-0.
8.Шейкер, Т.Д. Разработка приложений в системе Delphi: учеб. пособие/ Т.Д. Шейкер – Владивосток: Изд-во ДВГТУ, 2006. – 172 с. ISBN 5-7596-0587-9.
9.Шумаков, П.В. Delphi 3 и разработка приложений баз данных / П.В. Шумаков. – М.: Нолидж, 1999. – 704 с.: ил. - ISBN 5-89251-022-0.
10.Шпак, Ю. А. Delphi 7 на примерах / Ю. А. Шпак. – М.: Юниор, 2003. – 344 с. ISBN: 966-7323-28-5.

Вопрос-ответ:

Какие типы файлов используются при разработке Windows приложения "Электронная касса"?

При разработке Windows приложения "Электронная касса" используются типы файлов: файловые переменные и типизированные файлы.

Какие операции ввода-вывода используются при работе с типизированными файлами в разработке Windows приложения "Электронная касса"?

При работе с типизированными файлами в разработке Windows приложения "Электронная касса" используются операции ввода-вывода, такие как: открытие файла, чтение данных из файла, запись данных в файл, закрытие файла.

Что такое объектно-ориентированное программирование, и как оно применяется в системе Borland Delphi 7?

Объектно-ориентированное программирование (ООП) - это подход к разработке программного обеспечения, основанный на представлении программы в виде взаимодействующих объектов. В системе Borland Delphi 7 объектно-ориентированное программирование используется для создания приложений, позволяя разработчикам создавать классы и объекты, которые могут взаимодействовать друг с другом.

Как создать проект приложения в системе Borland Delphi 7?

Для создания проекта приложения в системе Borland Delphi 7 необходимо выбрать пункт "New" в меню "File", затем выбрать "Application", после чего появится пустой проект приложения, в который можно добавлять компоненты, программный код и настраивать его свойства.

Какие компоненты Delphi использованы при создании приложения "Электронная касса"?

При создании приложения "Электронная касса" в Delphi были использованы следующие компоненты: обработка исключительных ситуаций, элемент Form, компонент PageControl, компонент L и другие.

Какие типы файлов можно использовать при разработке Windows приложения Электронная касса?

При разработке Windows приложения Электронная касса можно использовать типы файлов, такие как файловые переменные.

Какие операции ввода-вывода могут быть выполнены при разработке Windows приложения Электронная касса?

При разработке Windows приложения Электронная касса можно выполнять операции ввода-вывода, такие как чтение и запись информации в файлы.

Что такое объектно-ориентированное программирование и как оно применяется в разработке Windows приложения Электронная касса?

Объектно-ориентированное программирование - это подход, при котором программа строится из отдельных объектов, имеющих свои свойства и методы. В разработке Windows приложения Электронная касса объектно-ориентированное программирование применяется для создания модульной и расширяемой структуры приложения.

Как создать проект приложения в среде разработки Borland Delphi 7?

Для создания проекта приложения в среде разработки Borland Delphi 7 необходимо выбрать пункт меню "File" (Файл), затем "New" (Создать) и выбрать тип проекта, например, "VCL Forms Application" (Приложение VCL Forms).

Какие компоненты Delphi использовались при создании приложения Электронная касса?

При создании приложения Электронная касса использовались такие компоненты Delphi, как элемент Form, компонент PageControl и компонент L.

Какие типы файлов используются при работе с типизированными файлами в Windows приложении "Электронная касса"?

При работе с типизированными файлами в приложении "Электронная касса" используются следующие типы файлов: файлы данных, файлы результатов, файлы ошибок и файлы настроек.