Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Main;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, ComCtrls, StdCtrls, ActnList, Model;
- type
- TfMain = class(TForm)
- gbData: TGroupBox;
- Label1: TLabel;
- teSurename: TEdit;
- Label2: TLabel;
- Label3: TLabel;
- teFirstname: TEdit;
- tePatronymic: TEdit;
- Label4: TLabel;
- Label5: TLabel;
- Label6: TLabel;
- teGroup: TEdit;
- Label7: TLabel;
- cbFormOfStudy: TComboBox;
- Label8: TLabel;
- Label9: TLabel;
- teRatings: TEdit;
- teAverageScore: TEdit;
- btnAddStudent: TButton;
- btnChangeStudent: TButton;
- btnDeleteStudent: TButton;
- lvStudents: TListView;
- ActionList1: TActionList;
- actAddStudent: TAction;
- actChangeStudent: TAction;
- actDeleteStudent: TAction;
- GroupBox1: TGroupBox;
- btnFindStud: TButton;
- GroupBox2: TGroupBox;
- rbPay: TRadioButton;
- rbNoPay: TRadioButton;
- actFindStudent: TAction;
- actGetBestStud: TAction;
- btnGetBestStud: TButton;
- btnShowAllStud: TButton;
- GroupBox3: TGroupBox;
- rbNotPay2: TRadioButton;
- rbPay2: TRadioButton;
- btnVoz: TButton;
- actiGetInAverScore: TAction;
- GroupBox4: TGroupBox;
- btnSortSurname: TButton;
- actSortSurname: TAction;
- teFaculty: TEdit;
- teSpecialty: TEdit;
- procedure FormCreate(Sender: TObject);
- procedure actAddStudentExecute(Sender: TObject);
- procedure actDeleteStudentExecute(Sender: TObject);
- procedure actChangeStudentExecute(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure actFindStudentExecute(Sender: TObject);
- procedure actGetBestStudExecute(Sender: TObject);
- procedure btnShowAllStudClick(Sender: TObject);
- procedure FormClick(Sender: TObject);
- procedure lvStudentsChange(Sender: TObject; Item: TListItem;
- Change: TItemChange);
- procedure actiGetInAverScoreExecute(Sender: TObject);
- procedure actSortSurnameExecute(Sender: TObject);
- private
- procedure ListChanged(const StudList: TStudentsList);
- procedure FocusListView(Index: Integer);
- public
- { Public declarations }
- end;
- var
- fMain: TfMain;
- StudList : TStudentsList;
- implementation
- {$R *.dfm}
- procedure TfMain.FormCreate(Sender: TObject);
- begin
- StudList := GetDataFromFile(ExtractFilePath(ParamStr(0)) +
- 'Config/Students.dat');
- ListChanged(StudList);
- end;
- procedure TfMain.actAddStudentExecute(Sender: TObject);
- begin
- if (teSurename.Text <> '') and (teFirstname.Text <> '')
- and (tePatronymic.Text <> '') and (teFaculty.Text <> '')
- and (teSpecialty.Text <> '') and (teGroup.Text <> '')
- and (teRatings.Text <> '') then
- begin
- AddStudent(StudList, teSurename.Text, teFirstname.Text,
- tePatronymic.Text, teFaculty.Text, teSpecialty.Text,
- teGroup.Text, cbFormOfStudy.Text, teRatings.Text);
- teSurename.Text := '';
- teFirstname.Text := '';
- tePatronymic.Text := '';
- teFaculty.Text := '';
- teSpecialty.Text := '';
- teGroup.Text := '';
- teRatings.Text := '';
- teAverageScore.Text := '';
- ListChanged(StudList);
- FocusListView(StudList.Len);
- end
- else
- MessageDlg('Введены некорректные данные!', mtError, mbOKCancel, 0);
- end;
- procedure TfMain.ListChanged(const StudList: TStudentsList);
- var
- Item: TListItem;
- I: Integer;
- begin
- lvStudents.Items.BeginUpdate;
- lvStudents.Items.Clear;
- for I := 1 to StudList.Len do
- begin
- Item := lvStudents.Items.Add;
- Item.Caption := StudList.Data[I].Surname;
- Item.SubItems.Add(StudList.Data[I].Firstname);
- Item.SubItems.Add(StudList.Data[I].Patronymic);
- Item.SubItems.Add(StudList.Data[I].Faculty);
- Item.SubItems.Add(StudList.Data[I].Specialty);
- Item.SubItems.Add(StudList.Data[I].Group);
- Item.SubItems.Add(StudList.Data[I].FormOfStudy);
- Item.SubItems.Add(StudList.Data[I].Ratings);
- Item.SubItems.Add(StudList.Data[I].AverageScore);
- end;
- lvStudents.Items.EndUpdate;
- end;
- procedure TfMain.FocusListView(Index: Integer);
- begin
- lvStudents.ItemIndex := Index-1;
- lvStudents.SetFocus;
- end;
- procedure TfMain.actDeleteStudentExecute(Sender: TObject);
- var
- Index: Word;
- begin
- if lvStudents.Selected <> nil then
- begin
- Index := lvStudents.ItemIndex;
- DeleteStudent(StudList, Index);
- FocusListView(-1);
- ListChanged(StudList);
- end
- else
- ShowMessage('Error');
- teSurename.Text := '';
- teFirstname.Text := '';
- tePatronymic.Text := '';
- teFaculty.Text := '';
- teSpecialty.Text := '';
- teGroup.Text := '';
- cbFormOfStudy.Text := '';
- teRatings.Text := '';
- teAverageScore.Text := '';
- end;
- procedure TfMain.actChangeStudentExecute(Sender: TObject);
- var
- Index : Word;
- begin
- if lvStudents.Selected <> nil then
- begin
- Index := lvStudents.ItemIndex;
- ChangeStudent(StudList, Index, teSurename.Text,
- teFirstname.Text, tePatronymic.Text, teFaculty.Text,
- teSpecialty.Text, teGroup.Text, cbFormOfStudy.Text,
- teRatings.Text);
- FocusListView(-1);
- ListChanged(StudList);
- end
- else
- ShowMessage('Error');
- end;
- procedure TfMain.FormDestroy(Sender: TObject);
- begin
- WriteDataToFile(StudList, ExtractFilePath(ParamStr(0)) +
- 'Config/Students.dat');
- end;
- procedure TfMain.actFindStudentExecute(Sender: TObject);
- var
- Index : Integer;
- begin
- ListChanged(StudList);
- if (teSurename.Text <> '') and (teFirstname.Text <> '')
- and (tePatronymic.Text <> '') and (teGroup.Text <> '') then
- begin
- Index := FindStudent(StudList, teSurename.Text, teFirstname.Text,
- tePatronymic.Text, teGroup.Text);
- if Index <> -1 then
- begin
- lvStudents.ItemIndex := Index-1;
- lvStudents.SetFocus;
- end
- else
- ShowMessage('Студент не найден!');
- end
- else
- ShowMessage('Error');
- end;
- procedure TfMain.actGetBestStudExecute(Sender: TObject);
- var
- BestStudList : TStudentsList;
- begin
- BestStudList := GetBestStudents(StudList, rbPay.Checked);
- ListChanged(BestStudList);
- end;
- procedure TfMain.btnShowAllStudClick(Sender: TObject);
- begin
- ListChanged(StudList);
- end;
- procedure TfMain.FormClick(Sender: TObject);
- begin
- FocusListView(0);
- teSurename.Text := '';
- teFirstname.Text := '';
- tePatronymic.Text := '';
- teFaculty.Text := '';
- teSpecialty.Text := '';
- teGroup.Text := '';
- cbFormOfStudy.Text := '';
- teRatings.Text := '';
- teAverageScore.Text := '';
- end;
- procedure TfMain.lvStudentsChange(Sender: TObject; Item: TListItem;
- Change: TItemChange);
- var
- Index : Integer;
- begin
- Index := lvStudents.ItemIndex;
- if Index >= 0 then
- begin
- teSurename.Text := StudList.Data[Index+1].Surname;
- teFirstname.Text := StudList.Data[Index+1].Firstname;
- tePatronymic.Text := StudList.Data[Index+1].Patronymic;
- teFaculty.Text := StudList.Data[Index+1].Faculty;
- teSpecialty.Text := StudList.Data[Index+1].Specialty;
- teGroup.Text := StudList.Data[Index+1].Group;
- cbFormOfStudy.Text := StudList.Data[Index+1].FormOfStudy;
- teRatings.Text := StudList.Data[Index+1].Ratings;
- teAverageScore.Text := StudList.Data[Index+1].AverageScore;
- end;
- end;
- procedure TfMain.actiGetInAverScoreExecute(Sender: TObject);
- var
- SortedSList : TStudentsList;
- begin
- SortedSList := SortRatings(StudList, rbPay2.Checked);
- ListChanged(SortedSList);
- end;
- procedure TfMain.actSortSurnameExecute(Sender: TObject);
- var
- SortSurnameList : TStudentsList;
- begin
- SortSurnameList := SortSurname(StudList, teGroup.Text);
- ListChanged(SortSurnameList);
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement