База данных "Кафедра"

Автор работы: Пользователь скрыл имя, 22 Июня 2011 в 07:55, курсовая работа

Описание работы

Исходными данными являются:
данные о студенте (ФИО, группа);
данные о преподавателе (ФИО, должность);
данные о группах (наименование, староста, эдвайзер, год поступления);
сведения о специальностях (наименование, год введения);
данные о дисциплинах (наименования, кредиты, наличие курсовой работы).

Файлы: 1 файл

МУ_СРС_ПБД_рус12.doc

— 655.00 Кб (Скачать файл)
align="justify">    Установим соединение  Query1, DataSource 3, DbGrid (также как и в предыдущем параграфе). Установим для Query1 свойство SQL равным:

select disciplina_p, disciplina_s from Disciplina

Order by disciplina_p;

Обработчики событий для «Внести»:

   procedure TForm1.Button15Click(Sender: TObject);

   begin

      query1.Insert;

      query1.FieldByName('disciplina_p').AsString:=edit8.Text;

      query1.FieldByName('disciplina_s').AsString:=edit9.Text;

      query1.Post;  edit8.Clear;  edit9.Clear;

   end;

Обработчики событий для «Удалить»:

   procedure TForm1.Button16Click(Sender: TObject);

   begin

    query1.Delete;

   end;

Т.к. удаление записи является безвозвратной, то необходимо для query1 записать событие:

   procedure TForm1.Query1BeforeDelete(DataSet: TDataSet);

   begin

    if  not  (MessageDlg('Вы действительно хотите удалить запись ?',

      mtError, [mbYes, mbNo], 0)=mrYes) then

    begin

       Abort;

    end;

     end;

    3.1.4. Формирование системы Specialnost

    Перейдя на страницу Список специальностей расположим на ней Query2, DataSource 4, 1 DbGrid, 2 кнопки Button, 4 текстовых поля Edit, 4 Label. Затем установим для них свойства (см. рисунок 14).

Установим для Query2 свойство SQL равным:

select * from specialnost;

Обработчики событий для «Внести»:

   procedure TForm1.Button20Click(Sender: TObject);

   begin

    query2.Insert;

    query2.FieldByName('shifr_specialnost').AsString:=edit1.Text;

    query2.FieldByName('specialnost_p').AsString:=edit11.Text;

    query2.FieldByName('specialnost_s').AsString:=edit12.Text;

    query2.FieldByName('god_vvedenia').AsString:=edit13.Text;

    query2.Post;

    edit1.Clear;edit11.Clear;

    edit12.Clear;edit13.Clear;

   end;

Рисунок 14 - Страница «Список специальностей» 

Обработчики событий для «Удалить»:

query2.Delete;

Т.к. удаление записи является безвозвратной, то необходимо для query2 записать событие:

   procedure TForm1.Query2BeforeDelete(DataSet: TDataSet);

   begin

    if  not  (MessageDlg(' Вы действительно хотите удалить запись?',

      mtError, [mbYes, mbNo], 0)=mrYes) then

    begin   

    Abort;

    end;

    end; 

    3.1.5. Формирование системы Prepodavatel 

    Перейдя на страницу Список преподавателей расположим на ней Query3, DataSource 5, 1 DbGrid, 2 кнопки Button, 2 текстовых поля Edit, 2 Label. Затем установим для них свойства (см. рисунок 15).

Установим для Query3 свойство SQL равным:

select fio, doljnost from prepodavatel

order by fio;

Обработчики событий для «Вставить»:

   procedure TForm1.Button17Click(Sender: TObject);

   begin

      query3.Insert;

      query3.FieldByName('fio').AsString:=edit10.Text;

      query3.FieldByName('doljnost').AsString:=edit14.Text;

      query3.Post;edit10.Clear;edit14.Clear;

   end; 

Рисунок 15 - Страница «Список преподавателей» 

Обработчики событий для «Удалить»:

Query3.Delete;

Т.к. удаление записи является безвозвратной, то необходимо для query3 записать событие:

   procedure TForm1.Query3BeforeDelete(DataSet: TDataSet);

   begin

      if  not  (MessageDlg(' Вы действительно хотите удалить запись?',

        mtError, [mbYes, mbNo], 0)=mrYes) then

      begin

         Abort;

      end;

     end;

3.2. Автоматизация работы системы Vedomost

    Для  автоматизации работы с таблицей Vedomost разместим на форме 2Query,1DataSource, 1DBgrid, 5Combobox, 1GroupBox, 3Checkbox, 2Button, 5Label. Установим значения компонентов, как на рисунке 16.

Рисунок 16 – Ведомость 

    Соединим  Query1 и Query2 с базой данных. Установим значение DataSource1, DataSource=Query2. Работа формы заключается в том, что мы выбираем при помощи Combobox значения шифра специальности, группы, семестра, дисциплины, преподавателя и нажав кнопку «Вывести» в DBgrid мы увидим выставленные оценки студентов. Здесь мы применяем уже не статический, а динамический SQL, т.е. SQL-код для выборки стоит уже не в свойствах компонента Query, а применяется программно.  

    Для заполнения Combobox необходимыми значениями полей из разных таблиц мы объявляем в переменные: 

sp_shifr: TstringList;//список шифров специальностей из таблицы Specialnost

sp_gr: TstringList;//список групп из таблицы Gruppa

sp_sem: TstringList;//список семестров из таблицы Disciplina

sp_disc: TstringList;//список дисциплин из таблицы Disciplina

sp_prep: TstringList; //список преподавателей из таблицы Prepodavarel 

А для  того, чтобы в Combobox появились значения необходимо написать обработчик события FormCreate для Form2 
 

procedure TForm2.FormCreate(Sender: TObject);

begin

combobox1.Clear;

combobox2.Clear;

combobox3.Clear;

combobox4.Clear;

combobox5.Clear;

//shifr_specialnost

sp_shifr:=TstringList.Create;

query1.Close;

with query1 do

begin

close;

sql.Clear;

sql.Add('select shifr_specialnost');

sql.Add('from specialnost');

sql.Add('order by shifr_specialnost');

open;

while not eof do

begin

combobox1.Items.Add(fields[0].asstring);

sp_shifr.Add(fields[0].asstring);

next;

end;

end;

//gruppa

sp_gr:=TstringList.Create;

query1.Close;

with query1 do

begin

close;

sql.Clear;

sql.Add('select gruppa');

sql.Add('from gruppa');

sql.Add('order by gruppa');

open;

while not eof do

begin

combobox2.Items.Add(fields[0].asstring);

sp_gr.Add(fields[0].asstring);

next;

end;

end;

//semestr

sp_sem:=TstringList.Create;

query1.Close;

with query1 do

begin

close;

sql.Clear;

sql.Add('select semestr');

sql.Add('from disciplina');

sql.Add('group by semestr');

sql.Add('order by semestr');

open;

while not eof do

begin

combobox3.Items.Add(fields[0].asstring);

sp_sem.Add(fields[0].asstring);

next;

end;

end;

//disciplina

sp_disc:=TstringList.Create;

query1.Close;

with query1 do

begin

close;

sql.Clear;

sql.Add('select disciplina_p');

sql.Add('from disciplina');

sql.Add('order by disciplina_p');

open;

while not eof do

begin

combobox4.Items.Add(fields[0].asstring);

sp_disc.Add(fields[0].asstring);

next;

end;

end;

//prepodavatel

sp_prep:=TstringList.Create;

query1.Close;

with query1 do

begin

close;

sql.Clear;

sql.Add('select fio');

sql.Add('from prepodavatel');

sql.Add('order by fio');

open;

while not eof do

begin

combobox5.Items.Add(fields[0].asstring);

sp_prep.Add(fields[0].asstring);

next;

end;

end;

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

procedure TForm2.Button3Click(Sender: TObject);

begin

with query2 do begin

query2.Close;

sql.Clear;

sql.add('select st.fio, v.lc1, v.pr1, v.srs1, v.lc2, v.pr2, v.srs2, v.examen, v.itog');

sql.Add('from vedomost v inner join specialnost s on (v.shifr_specialnost=s.shifr_specialnost)');

sql.Add('inner join student st on (v.kod_student=st.kod_student)');

sql.Add('inner join gruppa g on (st.gruppa=g.gruppa)');

sql.Add('inner join disciplina d on (v.kod_disciplina=d.kod_disciplina)');

sql.Add('inner join prepodavatel p on (v.kod_prepod=p.kod_prepod)');

sql.Add('where 1=1');

sql.Add('and s.shifr_specialnost='''+sp_shifr[combobox1.itemindex]+'''');

Информация о работе База данных "Кафедра"