Автор работы: Пользователь скрыл имя, 22 Июня 2011 в 07:55, курсовая работа
Исходными данными являются:
данные о студенте (ФИО, группа);
данные о преподавателе (ФИО, должность);
данные о группах (наименование, староста, эдвайзер, год поступления);
сведения о специальностях (наименование, год введения);
данные о дисциплинах (наименования, кредиты, наличие курсовой работы).
select disciplina_p, disciplina_s from Disciplina
Order by disciplina_p;
Обработчики событий для «Внести»:
procedure TForm1.Button15Click(Sender: TObject);
begin
query1.Insert;
query1.FieldByName('
query1.FieldByName('
query1.Post; edit8.Clear; edit9.Clear;
end;
Обработчики событий для «Удалить»:
procedure TForm1.Button16Click(Sender: TObject);
begin
query1.Delete;
end;
Т.к. удаление записи является безвозвратной, то необходимо для query1 записать событие:
procedure
TForm1.Query1BeforeDelete(
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_
query2.FieldByName('
query2.FieldByName('
query2.FieldByName('god_
query2.Post;
edit1.Clear;edit11.Clear;
edit12.Clear;edit13.Clear;
end;
Рисунок
14 - Страница «Список специальностей»
Обработчики событий для «Удалить»:
query2.Delete;
Т.к. удаление записи является безвозвратной, то необходимо для query2 записать событие:
procedure
TForm1.Query2BeforeDelete(
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'
query3.FieldByName('
query3.Post;edit10.
end;
Рисунок
15 - Страница «Список преподавателей»
Обработчики событий для «Удалить»:
Query3.Delete;
Т.к. удаление записи является безвозвратной, то необходимо для query3 записать событие:
procedure
TForm1.Query3BeforeDelete(
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].
sp_shifr.Add(fields[0].
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].
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].
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].
sp_disc.Add(fields[0].
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].
sp_prep.Add(fields[0].
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_
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_
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_