Компьютерные системы

Автор работы: Пользователь скрыл имя, 21 Мая 2013 в 08:11, курсовая работа

Краткое описание

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

Содержание

Введение…………………………………………………………………………3
1 Интерфейсы компьютерных систем…………………………………………4
1.1 Эволюция пользовательских интерфейсов……………………………….4
1.2 Актуальность интерфейсов....……………………………………………....5
1.3 Понятие интерфейса пользователя………………………………………...6
1.4 Виды интерфейсов……………………………...…………………………...8
2 Разработка пользовательского интерфейса «Языковая школа»……..…...10
2.1 Подключение базы данных к проекту Delphi………….....……………10
2.2 Интерфейсное управление данными..……………..……………………11
2.3 Диалоги загрузки графических файлов…………….…………………..12
2.4 Главное и контекстное меню...……………………..……………………..14
2.5 Создание сортировки.……………………………..……………………….19
2.5 Создание фильтрации для записей таблицы…………….……………….21
2.7 Поиск и работа с записями набора данных……………..………………25
Заключение…………………………………………………………………...…29
Список использованной литературы...………………...…

Вложенные файлы: 1 файл

курсовая по ИКС.doc

— 1.52 Мб (Скачать файл)

if Application.MessageBox(PChar('Вы желаете сохранить изменения  в справочнике?'), 'Внимание!', MB_YESNOCANCEL +MB_ICONQUESTION) = id_YES then

DataM.UchenikiTable.Post; //если изменения есть, сохраняем

if DBGrid1.DataSource = DataM.PrepodaSource then

if DataM.PrepodaTable.Modified then

if Application.MessageBox(PChar('Вы желаете сохранить изменения в справочнике?'), 'Внимание!', MB_YESNOCANCEL +  MB_ICONQUESTION) = id_YES then

DataM.PrepodaTable.Post;

end;

 

Для элемента главного меню CancelEdit_Item программный код следующий:

procedure TForm1.CancelEdit_ItemClick(Sender: TObject);

begin

if DBGrid1.DataSource = DataM.UchenikiSource then

if DataM.UchenikiTable.Modified then

DataM.UchenikiTable.Cancel; //отменяем изменения, если они  есть

if DBGrid1.DataSource = DataM.PrepodaSource then

if DataM.PrepodaTable.Modified then

DataM.PrepodaTable.Cancel;

end;

 

Для пункта Del_Item обработчик выглядит таким образом:

procedure TForm1.Del_ItemClick(Sender: TObject);

begin

if DBGrid1.DataSource = DataM.UchenikiSource then

begin

//создаем сообщение

if Application.MessageBox(PChar('Вы действительно хотите удалить запись "'+ DataM.UchenikiTableFamiliya.AsString + ' '+ DataM.UchenikiTableImya.AsString + ' ' +DataM.UchenikiTableOtchestvo.AsString + '"?'),

'Внимание!', MB_YESNOCANCEL + MB_ICONQUESTION) = id_YES then

begin

DataM.UchenikiTable.Delete; //удаляем запись

end;

end;

if DBGrid1.DataSource = DataM.PrepodaSource then

begin

//создаем сообщение

if Application.MessageBox(PChar('Вы  действительно хотите удалить  запись "'+ DataM.PrepodaTableFamiliya_P.AsString + ' '+ DataM.PrepodaTableImya_P.AsString + ' ' +DataM.PrepodaTableOtchestvo_P.AsString + '"?'),

'Внимание!', MB_YESNOCANCEL + MB_ICONQUESTION) = id_YES then

begin

DataM.PrepodaTable.Delete; //удаляем запись

end;

end;

 

Для создания контекстного меню поместим на форму компонент PopupMenu1. Его проектирование во многом схоже с проектированием MainMenu, потому что производится также с помощью специального конструктора.

 

 

 

 

 

 

 

Рисунок 8 –  Создание контекстного меню

Когда макет PopupMenu1 готов, можно указывать его в одноименном свойстве какого-либо из имеющихся визуальных компонентов, например DBGrid1.

Далее двойным  щелчком по каждому из пунктов  меню «Правка» в режиме конструктора вызовем обработчик события OnClick, в котором требуется только прописать вызов соответствующей процедуры главного меню, никаких новых операторов включать не понадобится.

procedure TMainForm.AddPop_ItemClick(Sender: TObject);

begin

Add_ItemClick(Sender);

end;

 

procedure TMainForm.EditPop_ItemClick(Sender: TObject);

begin

Edit_ItemClick(Sender);

end;

 

procedure TMainForm.DelPop_ItemClick(Sender: TObject);

begin

Del_ItemClick(Sender);

end;

 

procedure TMainForm.DelFotoPop_ItemClick(Sender: TObject);

begin

DelFotoBtnClick(Sender);

end;

 

procedure TMainForm.LoadFotoPop_ItemClick(Sender: TObject);

begin

LoadFotoBtnClick(Sender);

end;

 

2.5 Сортировка

 

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

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

В главном меню проекта  создадим новый пункт со значением  «Сортировка» в свойстве Caption и Sort_Menu в свойстве Name, имеющий в свою очередь 6 подпунктов со следующими заголовками (свойство Caption):

  • По фамилии (Name – SortBySur_Item);
  • По имени (Name – SortByName_Item);
  • По отчеству (Name – SortByPat_Item);
  • По названию (Name – SortOrgsByNaz_Item);
  • По типу (Name – SortOrgsByType_Item);
  • По телефону (Name – SortByTel_Item);

 


 

 

 

 

 

 

 

 

Рисунок  9 – Создание меню «Сортировка»

В обработчиках события OnClick каждого из перечисленных пунктов меню «Сортировка» напишем:

procedure TForm1.SortBySur_ItemClick(Sender: TObject);

begin

if DBGrid1.DataSource = DataM.UchenikiSource then

    DataM.UchenikiTable.Sort := 'Familiya ASC';

  if DBGrid1.DataSource = DataM.PrepodaSource then

    DataM.PrepodaTable.Sort := 'Familiya_P ASC';

 

end;

procedure TForm1.SortByName_ItemClick(Sender: TObject);

begin

if DBGrid1.DataSource = DataM.UchenikiSource then

    DataM.UchenikiTable.Sort := 'Imya ASC';

  if DBGrid1.DataSource = DataM.PrepodaSource then

    DataM.PrepodaTable.Sort := 'Imya_P ASC';

end;

 

procedure TForm1.SortByPat_ItemClick(Sender: TObject);

begin

if DBGrid1.DataSource = DataM.UchenikiSource then

    DataM.UchenikiTable.Sort := 'Otchestvo ASC';

  if DBGrid1.DataSource = DataM.PrepodaSource then

    DataM.PrepodaTable.Sort := 'Otchestvo_P ASC';

end;

 

procedure TForm1.SortOrgsByNaz_ItemClick(Sender: TObject);

begin

if DBGrid1.DataSource = DataM.UchenikiSource then

    DataM.UchenikiTable.Sort := 'Predmet ASC';

  if DBGrid1.DataSource = DataM.PrepodaSource then

    DataM.PrepodaTable.Sort := 'Predmet ASC';

end;

 

procedure TForm1.SortByKlass_ItemClick(Sender: TObject);

begin

if DBGrid1.DataSource = DataM.UchenikiSource then

    DataM.UchenikiTable.Sort := 'Klass ASC';

end;

 

2.6 Фильтрация записей таблицы

 

Фильтрация  – это задание ограничений  для записей, отбираемых в набор  данных. По умолчанию фильтрация записей  не ведется, и набор данных, например ADOTable, содержит все записи связанной с ним таблицы БД.

Фильтрация  похожа на SQL-запросы, но является менее  мощным средством. По сравнению с SQL-запросами  фильтрация менее эффективна, так  как ограничивает количество записей, видимых в наборе.

Поместим на главную форму компонент Panel1 под именем FilterPanel, в свойстве Align которого выберем значение alTop и False в свойстве Visible. К FilterPanel добавим две новые панели TGroupBox. Для первой из них в свойстве Name укажем значение FilterAllBox, а для второй – FilterOrgsBox. Заголовки панелей оставим одинаковыми, т.е. в свойстве Caption у каждого компонента пропишем «Фильтр».

Вызов непосредственно  функции фильтра будем производить  через главное меню, поэтому создадим в нем новый пункт со следующими свойствами: Caption – «Фильтр», Name – Filter_Menu, Hint – «Фильтр». В обработчик события OnClick вставим указанный ниже код:

procedure TMainForm.Filter_MenuClick(Sender: TObject);

begin

    FilterPanel.Visible := true;

    if DBGrid1.DataSource = DataM.UchenikiSource then

    begin

      FilterAllBox.Visible := true;

      FilterOrgsBox.Visible := false;     

      FilterBySur.SetFocus;

    end; 

  if DBGrid1.DataSource = DataM.PrepodaSource then

    begin     

      FilterOrgsBox.Visible := true;

      FilterAllBox.Visible := false;

      FilterByNaz.SetFocus;

    end;

end;

 

Рассмотрим  обработчик события OnClick кнопки FilterAllBtn:

procedure TForm1.FilterPrepodaBtnClick(Sender: TObject);

var Familiya_P, Imya_P, Otchestvo_P, Predmet : string;

begin

//включаем свойство Filter таблицы AllBooks

  DataM.PrepodaTable.Filtered := true;

  //присваиваем переменным  значения, введенные в поля Edit

  Familiya_P := FilterByFamiliya_P.Text;

  Imya_P := FilterByImya_P.Text;

  Otchestvo_P := FilterByOtchestvo_P.Text;

  Predmet := FilterByPredmet.Text;

  //если все поля Edit не пусты, то

  if (Length(FilterByFamiliya_P.Text)<>0)and(Length(FilterByImya_P.Text)<>0)

    and(Length(FilterByOtchestvo_P.Text)<>0)and(Length(FilterByPredmet.Text)<>0)then

    //фильтруем по всем полям в DBGrid

    DataM.PrepodaTable.Filter := 'Familiya_P='+QuotedStr(Familiya_P)+

    'and Imya_P='+QuotedStr(Imya_P)+'and Otchestvo_P='+QuotedStr(Otchestvo_P)+

    'and Predmet='+QuotedStr(Predmet);

  //если пусто поле FilterByTel, то

  if (Length(FilterByFamiliya_P.Text)<>0)and(Length(FilterByImya_P.Text)<>0)

    and(Length(FilterByOtchestvo_P.Text)<>0)and(Length(FilterByPredmet.Text)=0)then

    //фильтруем по всем полям в DBGrid

    DataM.PrepodaTable.Filter := 'Familiya_P='+QuotedStr(Familiya_P)+

    'and Imya_P='+QuotedStr(Imya_P)+'and Otchestvo_P='+QuotedStr(Otchestvo_P);

 

if (Length(FilterByFamiliya_P.Text)<>0)and(Length(FilterByImya_P.Text)=0)

    and(Length(FilterByOtchestvo_P.Text)=0)and(Length(FilterByPredmet.Text)=0)then

    //фильтруем по всем полям в DBGrid

    DataM.PrepodaTable.Filter := 'Familiya_P='+QuotedStr(Familiya_P);

 

    if (Length(FilterByFamiliya_P.Text)<>0)and(Length(FilterByImya_P.Text)=0)

    and(Length(FilterByOtchestvo_P.Text)=0)and(Length(FilterByPredmet.Text)=0)then

    //фильтруем по всем полям в DBGrid

    DataM.PrepodaTable.Filter := 'Familiya_P='+QuotedStr(Familiya_P);

 

    if (Length(FilterByFamiliya_P.Text)=0)and(Length(FilterByImya_P.Text)<>0)

    and(Length(FilterByOtchestvo_P.Text)=0)and(Length(FilterByPredmet.Text)=0)then

    //фильтруем по всем полям в DBGrid

    DataM.PrepodaTable.Filter := 'Imya_P='+QuotedStr(Imya_P);

 

    if (Length(FilterByFamiliya_P.Text)=0)and(Length(FilterByImya_P.Text)=0)

    and(Length(FilterByOtchestvo_P.Text)<>0)and(Length(FilterByPredmet.Text)=0)then

    //фильтруем по всем полям в DBGrid

    DataM.PrepodaTable.Filter := 'Otchestvo_P='+QuotedStr(Otchestvo_P);

end;

 

Перейдем к  обработке события OnClick кнопки FilterAllCancel:

procedure TForm1.FilterPrepodaCancelClick(Sender: TObject);

begin

//очищаем поля  ввода параметров фильтра

  FilterByFamiliya_P.Text := '';

  FilterByImya_P.Text := '';

  FilterByOtchestvo_P.Text := '';

  FilterByPredmet.Text := '';

  //устанавливаем фокус ввода в поле фильтра "По фамилии"

  FilterByFamiliya_P.SetFocus;

  //делаем  недоступными кнопки панели фильтра

  FilterPrepodaBtn.Enabled := true;

  FilterPrepodaCancel.Enabled := true;

  //отменяем фильтр и возвращаем исходное содержание таблицы

  DataM.PrepodaTable.Filtered := true;

end;

 

Спроектируем панель FilterOrgsBox подобным описанному образом и в обработчике события OnClick кнопки FilterOrgsBtn напишем:

procedure TForm1.FilterUchenikiBtnClick(Sender: TObject);

var Familiya, Imya, Otchestvo, Telefon : string;

begin

    //включаем  свойство Filter таблицы AllBooks

  DataM.UchenikiTable.Filtered := true;

  //присваиваем  переменным значения, введенные  в поля Edit

  Familiya := FilterByFamiliya.Text;

  Imya := FilterByImya.Text;

  Otchestvo := FilterByOtchestvo.Text;

  Telefon := FilterByTelefon.Text;

  //если все поля Edit не пусты, то

  if (Length(FilterByFamiliya.Text)<>0)and(Length(FilterByImya.Text)<>0)

    and(Length(FilterByOtchestvo.Text)<>0)and(Length(FilterByTelefon.Text)<>0)then

    //фильтруем по всем полям в DBGrid

    DataM.UchenikiTable.Filter := 'Familiya='+QuotedStr(Familiya)+

    'and Imya='+QuotedStr(Imya)+'Otchestvo='+QuotedStr(Otchestvo)+

    'and Telefon='+QuotedStr(Telefon);

  //если пусто  поле FilterByTel, то

  if (Length(FilterByFamiliya.Text)<>0)and(Length(FilterByImya.Text)<>0)

    and(Length(FilterByOtchestvo.Text)<>0)and(Length(FilterByTelefon.Text)=0)then

    //фильтруем по всем полям в DBGrid

    DataM.UchenikiTable.Filter := 'Familiya='+QuotedStr(Familiya)+

    'and Imya='+QuotedStr(Imya)+'Otchestvo='+QuotedStr(Otchestvo);

 

  if (Length(FilterByFamiliya.Text)<>0)and(Length(FilterByImya.Text)<>0)

    and(Length(FilterByOtchestvo.Text)=0)and(Length(FilterByTelefon.Text)=0)then

    //фильтруем по всем полям в DBGrid

    DataM.UchenikiTable.Filter := 'Familiya='+QuotedStr(Familiya)+

    'and Imya='+QuotedStr(Imya);

 

  if (Length(FilterByFamiliya.Text)<>0)and(Length(FilterByImya.Text)=0)

    and(Length(FilterByOtchestvo.Text)=0)and(Length(FilterByTelefon.Text)=0)then

    //фильтруем по всем полям в DBGrid

    DataM.UchenikiTable.Filter := 'Familiya='+QuotedStr(Familiya);

 

   if (Length(FilterByFamiliya.Text)=0)and(Length(FilterByImya.Text)<>0)

    and(Length(FilterByOtchestvo.Text)=0)and(Length(FilterByTelefon.Text)=0)then

    //фильтруем по всем полям в DBGrid

    DataM.UchenikiTable.Filter := 'Imya='+QuotedStr(Imya);

 

     if (Length(FilterByFamiliya.Text)=0)and(Length(FilterByImya.Text)=0)

    and(Length(FilterByOtchestvo.Text)<>0)and(Length(FilterByTelefon.Text)=0)then

    //фильтруем по всем полям в DBGrid

    DataM.UchenikiTable.Filter := 'Otchestvo='+QuotedStr(Otchestvo);

 

     if (Length(FilterByFamiliya.Text)=0)and(Length(FilterByImya.Text)=0)

    and(Length(FilterByOtchestvo.Text)=0)and(Length(FilterByTelefon.Text)<>0)then

    //фильтруем по всем полям в DBGrid

    DataM.UchenikiTable.Filter := 'Telefon='+QuotedStr(Telefon);

 

end;

 

Отмена фильтра  для таблицы UchenikiBooks реализуется посредством следующего кода:

procedure TForm1.FilterUchenikiCancelClick(Sender: TObject);

begin

//очищаем поля  ввода параметров фильтра

  FilterByFamiliya.Text := '';

  FilterByImya.Text := '';

  FilterByOtchestvo.Text := '';

  FilterByTelefon.Text := '';

  //устанавливаем фокус ввода в поле фильтра "По фамилии"

  FilterByFamiliya.SetFocus;

  //делаем  недоступными кнопки панели фильтра

  FilterUchenikiBtn.Enabled := true;

  FilterUchenikiCancel.Enabled := true;

  //отменяем фильтр и возвращаем исходное содержание таблицы

  DataM.UchenikiTable.Filtered := true;

  DataM.UchenikiTable.Filter := 'Predmet='+QuotedStr(TableKind);

 

end;

 

2.7 Поиск и работа с записями набора данных

 

Откроем наш  проект и первым делом создадим новую  форму FindAllForm с заголовком «Поиск». Сохраним ее модуль под именем FindAllUnit.

Свойству формы BorderStyle присвоим значение bsDialog, а свойству Position – poMainFormCenter. Размеры формы лучше задать небольшими, чтобы она не перекрывала обзор основной формы. Например, в свойстве Height указать значение 207, а в Width – 400. На форму поместим компонент Panel1 со следующими параметрами: BevelInner – bvSpace, BevelOuter – bvLowered, Color – clWhite, Height – 120, Width – 370, Left и Top – 11. На панели разместим LabeledEdit1 со значением «Найти:» в свойстве EditLabel - Caption и четыре TRadioButton:

  • RadioButton1.Caption – «в поле “Фамилия”»;
  • RadioButton2.Caption – « в поле “Имя”»;
  • RadioButton3.Caption – « в поле “Отчество”»;
  • RadioButton4.Caption – « в поле “Домашний телефон”»;

 

 


 

 

 

 

 

Рисунок 10 – Окно «Поиск»

Для кнопки «Отмена» обработчик выглядит так:

procedure TFindAllForm.CancelBtnClick(Sender: TObject);

begin

  Close;

end;

Приступим к  программированию основной кнопки данного  окна «Найти далее». В обработчик события OnClick запишем нижеприведенный код и рассмотрим его построчно:

procedure TFindAllForm.FindNextUchenikiBtnClick(Sender: TObject);

Информация о работе Компьютерные системы