Автор работы: Пользователь скрыл имя, 13 Января 2014 в 17:48, курсовая работа
Базы данных обслуживаются специальными программами — системами управления базами данных (СУБД), которые делятся на локальные, преимущественно однопользовательские, предназначенные для настольных приложений, и серверные — сетевые (часто удаленные), многопользовательские, функционирующие на выделенных компьютерах — серверах. Главный критерий такой классификации — объем базы данных и средняя нагрузка на СУБД. В работе используется СУБД Firebird 2.5. В данной работе описывается автоматизированная система учета и контроля информации об учениках, преподавателях, специальностях музыкальной школы.
Введение 5
Техническое задание 6
Основание для разработки 6
Назначение разработки 6
Требования к программе 6
Требования к функциональным характеристикам 6
Требования к надежности 6
Требования к составу и параметрам технических средств 7
Требования к информационной и программной совместимости 7
Требования к программной документации 7
Стадии и этапы разработки 7
Порядок контроля и приемки 8
Концептуальное проектирование системы 9
Разработка модели предметной области 9
Анализ предметной области 9
Описание контекстной диаграммы 10
Описание детализирующей диаграммы 11
Создание структур данных 14
Разработка концептуальной модели 15
Логическое проектирование БД 17
Физическое проектирование БД 19
Описание программы 23
Общие сведения 23
Функциональное назначение 23
Описание логической структуры 24
Используемые технические средства 25
Вызов и загрузка 26
Входные данные 26
Выходные данные 27
Программа и методика испытаний 27
Объект испытаний 27
Цель испытаний 27
Требования к программе 27
Требования к программной документации 28
Средства и порядок испытаний 28
Методы испытаний 28
Описание применения 30
Назначение программы 30
Условия применения 30
Описание задачи 30
Входные и выходные данные 30
Заключение 31
end;
with IBQuery3 do
Begin
Sql.Text := 'Select * From Specia';
open;
end;
DBGrid3.DataSource.DataSet.
While not DBGrid3.DataSource.DataSet.Eof do
begin
ComboBox1.Items.Add(DBGrid3.
ComboBox2.Items.Add(DBGrid3.
DBGrid3.DataSource.DataSet.
end;
except
on E: Exception do
begin
Application.MessageBox(PChar(
Halt;
end;
end;
EnabledEdit(false);
EnabledEditSt(false);
EnabledEditSp(false);
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
IBQuery1.Close;
IBQuery2.Close;
IBQuery3.Close;
IBDatabase1.Connected:=False;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
FNew:=True;
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
ComboBox1.ItemIndex := -1;
EnabledEdit(true);
Edit1.SetFocus;
end;
procedure TForm1.Button3Click(Sender: TObject);
var ind:integer;
begin
FNew := False;
with IBQuery1 do
begin
Edit1.Text := FieldByName('Nameprepod').
Edit2.Text := FieldByName('fnameprepod').
Edit3.Text := FieldByName('Otchestvo').
Ind := comboBox1.Items.IndexOf(
ComboBox1.ItemIndex:=ind;
end;
EnabledEdit(true);
Edit1.SetFocus;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Try
With IBQuery4 do
Begin
If FNew Then
sql.Text := 'execute procedure
proc_into_prepod(-1,'''+Edit1.
Edit2.Text+''','''+Edit3.Text+
else
sql.Text := 'execute
procedure proc_into_prepod('+ibquery1.
''','''+Edit3.Text+''','+
Transaction.StartTransaction;
ExecSQL;
Transaction.Commit;
Transaction.Active:=False;
end;
IBQuery1.Close;
IBQuery1.open;
Except
on E: Exception do
begin
if IBQuery4.Active Then IBQuery4.Transaction.Rollback;
Application.MessageBox(PChar(
end;
End;
EnabledEdit(false);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Application.MessageBox('Продол
MB_ICONQUESTION + MB_YESNO) = IDNO then
Exit;
Try
With IBQuery4 do
Begin
sql.Text := 'delete from
prepod where id ='+ibquery1.fieldByName('id').
Transaction.StartTransaction;
ExecSQL;
Transaction.Commit;
Transaction.Active:=False;
end;
IBQuery1.Close;
IBQuery1.open;
Except
on E: Exception do
begin
if IBQuery4.Active Then IBQuery4.Transaction.Rollback;
Application.MessageBox(PChar(
end;
End;
End;
procedure TForm1.Button5Click(Sender: TObject);
begin
EnabledEdit(false);
end;
procedure TForm1.EnabledEdit(const AValue: Boolean);
begin
Edit1.Enabled := AValue;
Edit2.Enabled := AValue;
Edit3.Enabled := AValue;
ComboBox1.Enabled := AValue;
Button1.Enabled := not AValue;
Button2.Enabled := not AValue;
Button3.Enabled := not AValue;
Button4.Enabled := AValue;
Button5.Enabled := AValue;
end;
procedure TForm1.EnabledEditSp(const AValue: Boolean);
begin
SpCode.Enabled := AValue;
SpNamePrepod.Enabled := AValue;
SpSpec.Enabled := AValue;
Button11.Enabled := not AValue;
Button12.Enabled := not AValue;
Button13.Enabled := not AValue;
Button14.Enabled := AValue;
Button15.Enabled := AValue;
end;
procedure TForm1.EnabledEditSt(const AValue: Boolean);
begin
StAdress.Enabled := AValue;
DateTimePicker1.Enabled := AValue;
StFname.Enabled := AValue;
StName.Enabled := AValue;
StParentName.Enabled := AValue;
StPhone.Enabled:=AValue;
StPrepod.Enabled:=AValue;
ComboBox2.Enabled := AValue;
Button6.Enabled := not AValue;
Button7.Enabled := not AValue;
Button8.Enabled := not AValue;
Button9.Enabled := AValue;
Button10.Enabled := AValue;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
FNewSt:=True;
StAdress.Text := '';
DateTimePicker1.Date := 30121899;
StFname.Text := '';
StName.Text := '';
StParentName.Text := '';
StPhone.Text:='';
StPrepod.Text:='';
ComboBox2.ItemIndex := -1;
EnabledEditSt(true);
StName.SetFocus;
end;
procedure TForm1.Button7Click(Sender: TObject);
var ind:integer;
begin
FNewSt := False;
with IBQuery2 do
begin
StAdress.Text := FieldByName('HomeAdress').
DateTimePicker1.Date := FieldByName('Date1').
StFname.Text := FieldByName('FirstName').
StName.Text := FieldByName('Name').AsString;;
StParentName.Text
:= FieldByName('ParentName').
StPhone.Text := FieldByName('PhoneNumber').
StPrepod.Text:= FieldByName('Nameprepod').
Ind := comboBox2.Items.IndexOf(
ComboBox2.ItemIndex:=ind;
end;
EnabledEditSt(true);
StName.SetFocus;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
if Application.MessageBox('Продол
MB_ICONQUESTION + MB_YESNO) = IDNO then
Exit;
Try
With IBQuery5 do
Begin
sql.Text := 'delete from
student where id ='+ibquery2.fieldByName('id').
Transaction.StartTransaction;
ExecSQL;
Transaction.Commit;
Transaction.Active:=False;
end;
IBQuery2.Close;
IBQuery2.open;
Except
on E: Exception do
begin
if IBQuery5.Active Then IBQuery5.Transaction.Rollback;
Application.MessageBox(PChar(
end;
End;
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
Try
With IBQuery5 do
Begin
If FNewSt Then begin
sql.Text := 'execute procedure
proc_into_student(-1,'''+
StFname.Text+''','''+
ShowMessage(sql.Text);
end
else
sql.Text := 'execute procedure proc_into_student('+ibquery2.
StFname.Text+''','''+
StPrepod.Text+''')';
ShowMessage(sql.Text);
Transaction.StartTransaction;
ExecSQL;
Transaction.Commit;
Transaction.Active:=False;
end;
IBQuery2.Close;
IBQuery2.open;
Except
on E: Exception do
begin
if IBQuery5.Active Then IBQuery5.Transaction.Rollback;
Application.MessageBox(PChar(
end;
End;
EnabledEditSt(false);
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
EnabledEditSt(false);
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
FNewSp:=True;
SpCode.Text := '';
SpSpec.Text := '';
SpNamePrepod.Text := '';
EnabledEditSp(true);
SpCode.SetFocus;
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
FNewSp := False;
with IBQuery3 do
begin
SpCode.Text := FieldByName('CODE').AsString;
SpSpec.Text := FieldByName('NaimSpec').
SpNamePrepod.Text
:= FieldByName('NamePrepod').
end;
EnabledEditSp(true);
SpCode.SetFocus;
end;
procedure TForm1.Button13Click(Sender: TObject);
begin
if Application.MessageBox('Продол
MB_ICONQUESTION + MB_YESNO) = IDNO then
Exit;
Try
With IBQuery6 do
Begin
sql.Text := 'delete from
specia where id ='+ibquery3.fieldByName('id').
Transaction.StartTransaction;
ExecSQL;
Transaction.Commit;
Transaction.Active:=False;
end;
IBQuery3.Close;
IBQuery3.open;
Except
on E: Exception do
begin
if IBQuery6.Active Then IBQuery6.Transaction.Rollback;
Application.MessageBox(PChar(
end;
End;
end;
procedure TForm1.Button14Click(Sender: TObject);
begin
Try
With IBQuery6 do
Begin
If FNewSp Then begin
sql.Text := 'execute procedure
proc_into_specia(-1,'+SpCode.
SpSpec.Text+''','''+
ShowMessage(sql.Text);
end
else
sql.Text := 'execute
procedure proc_into_specia('+ibquery3.
SpSpec.Text+''','''+
//ShowMessage(sql.Text);
Transaction.StartTransaction;
ExecSQL;
Transaction.Commit;
Transaction.Active:=False;
end;
IBQuery3.Close;
IBQuery3.open;
Except
on E: Exception do
begin
if IBQuery6.Active Then IBQuery6.Transaction.Rollback;
Application.MessageBox(PChar(
end;
End;
EnabledEditSp(false);
end;
procedure TForm1.Button15Click(Sender: TObject);
begin
EnabledEditSp(false);
end;
procedure TForm1.Button16Click(Sender: TObject);
begin
Close();
end;
end.
Приложение Б
(обязательное)
Рисунок Б.1 – Главное окно программы.
Рисунок Б.2 – Вкладка «Специальности»
Рисунок Б.3 – Заполнение полей ввода данных
Рисунок Б.4 – Результат добавления новой записи
Рисунок Б.5 – Владка «Преподаватели»
Рисунок Б.6 – редактирование записи таблицы
Рисунок Б.7 – сохранение изменений
Рисунок Б.8 – вкладка «Студенты»
Рисунок Б.9 – подтверждение удаления записи
Рисунок Б.10 – Таблица студенты
после удаления записи
Приложение В
(рекомендуемое)
SQL – скрипт
/*****************************
/*** Generated by IBExpert 2011.04.25 08.06.2013 2:01:54 ***/
/*****************************
SET SQL DIALECT 3;
SET NAMES WIN1251;
CONNECT 'HOME57:C:\BD\MusicSchool.fdb' USER 'SYSDBA' PASSWORD 'masterkey';
/*****************************
/***
/*****************************
CREATE DOMAIN VARCHAR2 AS
DATE;
/*****************************
/***
/*****************************
CREATE GENERATOR GEN_PREPOD_ID;
SET GENERATOR GEN_PREPOD_ID TO 4;
CREATE GENERATOR GEN_SPECIA_ID;
SET GENERATOR GEN_SPECIA_ID TO 5;
CREATE GENERATOR GEN_STUDENT_ID;
SET GENERATOR GEN_STUDENT_ID TO 3;
SET TERM ^ ;
/*****************************
/***
Stored Procedures
/*****************************
CREATE PROCEDURE PROC_INTO_PREPOD (
FIN_ID INTEGER,
FIN_NAMEPREPOD VARCHAR(20),
FIN_FNAMEPREPOD VARCHAR(30),
FIN_OTCESTVO VARCHAR(40),
FIN_SPEC SMALLINT)
AS
BEGIN
EXIT;
END^
CREATE PROCEDURE PROC_INTO_SPECIA (
FIN_ID INTEGER NOT NULL,
FIN_CODE SMALLINT NOT NULL,
FIN_NAIMSPEC VARCHAR(100),
FIN_NAMEPREPOD VARCHAR(40))
AS
BEGIN
EXIT;
END^
CREATE PROCEDURE PROC_INTO_STUDENT (
FIN_ID INTEGER,
FIN_NAME VARCHAR(30),
FIN_FIRSTNAME VARCHAR(20),
FIN_PARENTNAME VARCHAR(40),
FIN_SPEC SMALLINT,
FIN_DATE1 DATE,
FIN_HOMEADRESS VARCHAR(60),
FIN_PHONENUMBER VARCHAR(10),
FIN_NAMEPREPOD VARCHAR(30))
AS
BEGIN
EXIT;
END^
SET TERM ; ^
/*****************************
/***
/*****************************
CREATE TABLE PREPOD (
ID INTEGER NOT NULL,
NAMEPREPOD CHAR(30) NOT NULL,
FNAMEPREPOD CHAR(20),
OTCHESTVO CHAR(40),
SPECIALNOST SMALLINT NOT NULL
);
CREATE TABLE SPECIA (
ID INTEGER NOT NULL,
CODE SMALLINT NOT NULL,
NAIMSPEC CHAR(100),
NAMEPREPOD CHAR(40)
);
CREATE TABLE STUDENT (
ID INTEGER NOT NULL,
NAME CHAR(30),
FIRSTNAME CHAR(20),
PARENTNAME CHAR(40),
SPECIALNOST SMALLINT,
DATE1 VARCHAR2,
HOMEADRESS CHAR(60),
PHONENUMBER CHAR(10),
NAMEPREPOD CHAR(30)
);
INSERT INTO SPECIA (ID, CODE, NAIMSPEC, NAMEPREPOD)
VALUES (1, 101, 'nak
INSERT INTO SPECIA (ID, CODE, NAIMSPEC, NAMEPREPOD) VALUES (5, 32, '12
COMMIT WORK;
INSERT INTO PREPOD (ID, NAMEPREPOD, FNAMEPREPOD, OTCHESTVO, SPECIALNOST) VALUES (4, '12312
', '12312
', '123
COMMIT WORK;
INSERT INTO STUDENT (ID, NAME, FIRSTNAME, PARENTNAME,
SPECIALNOST, DATE1, HOMEADRESS, PHONENUMBER, NAMEPREPOD) VALUES (3, '121
', '121
', '12 1
COMMIT WORK;
/*****************************
/***
Unique Constraints
/*****************************
ALTER TABLE SPECIA ADD CONSTRAINT UNQ1_SPECIA UNIQUE (CODE);
/*****************************
/***
/*****************************
ALTER TABLE PREPOD ADD CONSTRAINT PK_PREPOD_PRIMAR_K PRIMARY KEY (ID);
ALTER TABLE SPECIA ADD CONSTRAINT PK_SPECIA_PRIMAR_K PRIMARY KEY (ID);
ALTER TABLE STUDENT ADD CONSTRAINT PK_STUDEN_PRIMAR_K PRIMARY KEY (ID);
/*****************************
/***
/*****************************
ALTER TABLE PREPOD ADD CONSTRAINT FK_STUDENT_1 FOREIGN KEY (SPECIALNOST) REFERENCES SPECIA (CODE);
ALTER TABLE STUDENT ADD CONSTRAINT FK_STUDENT_2 FOREIGN KEY (SPECIALNOST) REFERENCES SPECIA (CODE);
/*****************************
/***
Информация о работе Разработка приложения для базы данных «Музыкальная школа»