Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit MainMenu;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.Menus,
- Vcl.Imaging.pngimage, Vcl.ExtCtrls, Vcl.ComCtrls;
- type
- TMainForm = class(TForm)
- MainMenu: TMainMenu;
- N1: TMenuItem;
- N2: TMenuItem;
- ViewRecordsButton: TBitBtn;
- ChangeRecordsButton: TBitBtn;
- Logo: TImage;
- ConnectFileButton: TBitBtn;
- CreateProofFileButton: TBitBtn;
- Title: TLabel;
- OpenDialog: TOpenDialog;
- SaveDialog: TSaveDialog;
- procedure N1Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure N2Click(Sender: TObject);
- procedure ViewRecordsButtonClick(Sender: TObject);
- procedure ChangeRecordsButtonClick(Sender: TObject);
- procedure ConnectFileButtonClick(Sender: TObject);
- function CheckFile(FileName: String): Boolean;
- procedure CreateProofFileButtonClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- MainForm: TMainForm;
- Path: String;
- implementation
- {$R *.dfm}
- uses
- CreateFile, ShowRecords, ChangeData;
- procedure TMainForm.ChangeRecordsButtonClick(Sender: TObject);
- begin
- ChangeDataForm.Show;
- ChangeDataForm.N2Click(ChangeRecordsButton);
- end;
- procedure TMainForm.ConnectFileButtonClick(Sender: TObject);
- var
- IsCorrect: Boolean;
- I: Integer;
- begin
- if OpenDialog.Execute then
- begin
- IsCorrect := CheckFile(OpenDialog.FileName);
- if IsCorrect then
- begin
- Path := OpenDialog.FileName;
- ViewRecordsButton.Enabled := True;
- ChangeRecordsButton.Enabled := True;
- end;
- end;
- end;
- procedure TMainForm.CreateProofFileButtonClick(Sender: TObject);
- var
- FileOfRecords: File of Tpatient;
- begin
- if SaveDialog.Execute then
- begin
- AssignFile(FileOfRecords, SaveDialog.FileName);
- Rewrite(FileOfRecords);
- Path := SaveDialog.FileName;
- ViewRecordsButton.Enabled := True;
- ChangeRecordsButton.Enabled := True;
- CloseFile(FileOfRecords);
- end;
- end;
- function TMainForm.CheckFile(FileName: String): Boolean;
- var
- FileOfRecords: file of Tpatient;
- TempArr: array of Tpatient;
- IsCorrect: Boolean;
- I: Integer;
- begin
- IsCorrect := True;
- try
- AssignFile(FileOfRecords, OpenDialog.FileName);
- Reset(FileOfRecords);
- except
- MessageDlg('Ошибка доступа к файлу', mtError, [mbOK], 0);
- IsCorrect := False;
- end;
- if IsCorrect and (FileSize(FileOfRecords) = 0) then
- begin
- MessageDlg('Данный файл не является типизированным!', mtError, [mbOK], 0);
- IsCorrect := False;
- end;
- I := 0;
- SetLength(TempArr, FileSize(FileOfRecords));
- while not EOF(FileOfRecords) and IsCorrect do
- begin
- Read(FileOfRecords, TempArr[I]);
- Inc(I);
- end;
- I := 0;
- while (I < High(TempArr)) and (IsCorrect) do
- begin
- if not CreateFileForm.CheckLine(TempArr[I].Surname) or
- not CreateFileForm.CheckLine(TempArr[I].Diagnosis) or
- not CreateFileForm.CheckLine(TempArr[I].City) or
- not CreateFileForm.CheckAge(TempArr[I].Age) or
- not CreateFileForm.CheckSex(TempArr[I].Sex) then
- begin
- MessageDlg('Некорректные данные в файле!', mtError, [mbOK], 0);
- IsCorrect := False;
- end;
- Inc(I);
- end;
- CloseFile(FileOfRecords);
- CheckFile := IsCorrect;
- end;
- procedure TMainForm.FormCreate(Sender: TObject);
- begin
- Title.Caption := 'Минская городская'+#13#10+' клиника';
- ViewRecordsButton.Caption := 'Просмотреть сведения'+#13#10+'о пациентах';
- Path := 'FileOfRecords.txt';
- if not FileExists(Path) then
- begin
- ViewRecordsButton.Enabled := False;
- ChangeRecordsButton.Enabled := False;
- end;
- end;
- procedure TMainForm.N1Click(Sender: TObject);
- begin
- MessageDlg('Данная программа предоставляет сведения о пациентах клиники' + #13#10 +
- '- фамилия' + #13#10 + '- пол' + #13#10 + '- возраст' + #13#10 + '- диагноз' , mtInformation, [mbOK], 0);
- end;
- procedure TMainForm.N2Click(Sender: TObject);
- begin
- MessageDlg('Данная программа предоставляет сведения о пациентах клиники' + #13#10 +
- '- фамилия' + #13#10 + '- пол' + #13#10 + '- возраст' + #13#10 + '- диагноз' , mtConfirmation, [mbOK], 0);
- end;
- procedure TMainForm.ViewRecordsButtonClick(Sender: TObject);
- begin
- ShowRecordsForm.Show;
- end;
- end.
- unit CreateFile;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.StdCtrls, Vcl.Grids;
- type
- TPatient = packed record
- Surname: string[20];
- Sex: string[1];
- Age: String[3];
- Diagnosis: string[20];
- City: string[20];
- end;
- TCreateFileForm = class(TForm)
- MainMenu: TMainMenu;
- N1: TMenuItem;
- GenderSelection: TComboBox;
- LabelInf1: TLabel;
- LabelInf2: TLabel;
- LabelInf3: TLabel;
- LabelInf4: TLabel;
- EditOfAge: TEdit;
- LabelInf5: TLabel;
- EditOfDiagnosis: TEdit;
- AddButton: TButton;
- LabelInf6: TLabel;
- EditOfCity: TEdit;
- EditOfSurname: TEdit;
- procedure FormCreate(Sender: TObject);
- procedure AddButtonClick(Sender: TObject);
- function CheckLine(Line: string): Boolean;
- procedure OutputToFile(Patient: Tpatient);
- function CheckAge(Line: String): Boolean;
- function CheckSex(Line: String): Boolean;
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- CreateFileForm: TCreateFileForm;
- implementation
- {$R *.dfm}
- uses
- MainMenu, ChangeData;
- const
- COL_OF_SURNAME = 0;
- COL_OF_SEX = 1;
- COL_OF_AGE = 2;
- COL_OF_CITY = 3;
- COL_OF_DIAGNOSIS = 4;
- var
- FileOfRecords: File of TPatient;
- procedure TCreateFileForm.AddButtonClick(Sender: TObject);
- var
- Patient: TPatient;
- IsCorrect: Boolean;
- begin
- IsCorrect := CheckLine(EditOfSurname.Text) and CheckLine(EditOfDiagnosis.Text)
- and CheckLine(EditOfCity.Text) and CheckAge(EditOfAge.Text)
- and CheckSex(GenderSelection.Text);
- if IsCorrect then
- begin
- Patient.Surname := EditOfSurname.Text;
- Patient.Sex := GenderSelection.Text;
- Patient.Age := EditOfAge.Text;
- Patient.Diagnosis := EditOfDiagnosis.Text;
- Patient.City := EditOfCity.Text;
- OutputToFile(Patient);
- ChangeDataForm.N2Click(AddButton);
- end;
- end;
- procedure TCreateFileForm.OutputToFile(Patient: Tpatient);
- var
- IsCorrect: Boolean;
- begin
- IsCorrect := True;
- if FileExists(Path) then
- begin
- try
- AssignFile(FileOfRecords, Path);
- Reset(FileOfRecords);
- Seek(FileOfRecords, FileSize(FileOfRecords));
- except
- IsCorrect := False;
- MessageDlg('Ошибка доступа к файлу!', mtError, [mbOK], 0);
- end;
- if IsCorrect then
- begin
- Write(FileOfRecords, Patient);
- MessageDlg('Пациент занесён в базу', mtCustom, [mbOK], 0);
- EditOfSurname.Clear;
- EditOfAge.Clear;
- EditOfCity.Clear;
- EditOfDiagnosis.Clear;
- GenderSelection.Text := '';
- CloseFile(FileOfRecords);
- end;
- end
- else
- begin
- MessageDlg('Файл с записями не найден! Подключите файл в главном меню в разделе: ' +
- '"Подключить файл с данными"', mtError, [mbOK], 0);
- EditOfSurname.Clear;
- EditOfAge.Clear;
- EditOfCity.Clear;
- EditOfDiagnosis.Clear;
- GenderSelection.Text := '';
- end;
- end;
- function TCreateFileForm.CheckSex(Line: String): Boolean;
- var
- IsCorrect: Boolean;
- begin
- IsCorrect := True;
- if (Length(Line) <> 0) then
- begin
- if ((Line[1] <> 'М') and (Line[1] <> 'Ж')) then
- begin
- MessageDlg('Пол должен быть задан большой буквой русского алфавита (М/Ж)!', mtError, [mbOK], 0);
- IsCorrect := False;
- end;
- end
- else
- begin
- MessageDlg('Все данные о пациенте должны быть заполнены!', mtError, [mbOK], 0);
- IsCorrect := False;
- end;
- CheckSex := IsCorrect;
- end;
- function TCreateFileForm.CheckAge(Line: String): Boolean;
- var
- IsCorrect: Boolean;
- Age: Integer;
- begin
- IsCorrect := True;
- if Length(Line) <> 0 then
- begin
- try
- Age := StrToInt(Line);
- except
- IsCorrect := False;
- MessageDlg('Возраст пациента должен быть задан целым числом!', mtError, [mbOK], 0);
- end;
- if IsCorrect and ((Age < 0) or (Age > 150)) then
- begin
- IsCorrect := False;
- MessageDlg('Возраст пациента должен быть в промежутке от 0 до 150 лет!', mtError, [mbOK], 0);
- end;
- end
- else
- begin
- MessageDlg('Все данные о пациенте должны быть заполнены!', mtError, [mbOK], 0);
- IsCorrect := False;
- end;
- CheckAge := IsCorrect;
- end;
- function TCreateFileForm.CheckLine(Line: string): Boolean;
- const
- CHARACTERS_OF_RUSSIAN_LANGUAGE = ['а'..'я', ' ', '-'];
- var
- IsCorrect: Boolean;
- I: Integer;
- begin
- IsCorrect := True;
- Line := AnsiLowerCase(Line);
- I := 1;
- if (Length(Line) > 0) and (Length(Line) <= 20) then
- begin
- while (IsCorrect) and (I < Length(Line)) do
- begin
- if not (AnsiString(Line)[I] in CHARACTERS_OF_RUSSIAN_LANGUAGE) then
- begin
- IsCorrect := False;
- MessageDlg('Фамилия, диагноз и город пациента должны быть написаны ' +
- 'с помощью символов русского алфавита', mtError, [mbOK], 0);
- end;
- Inc(I);
- end;
- end
- else if Length(Line) = 0 then
- begin
- MessageDlg('Все данные о пациенте должны быть заполнены!', mtError, [mbOK], 0);
- IsCorrect := False;
- end
- else
- begin
- MessageDlg('Фамилия, диагноз и город пациента должны иметь максимум 20 символов!', mtError, [mbOK], 0);
- IsCorrect := False;
- end;
- CheckLine := IsCorrect;
- end;
- procedure TCreateFileForm.FormCreate(Sender: TObject);
- begin
- GenderSelection.Items.Add('М');
- GenderSelection.Items.Add('Ж');
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement