Разработка базы данных "Абитуриент – студент"

Разработка системы управления базами данных для учета абитуриентов и студентов, требования к ее функционалу. Выбор средств реализации и его обоснование. Используемые языки программирования. Разработка структуры БД, работа с таблицами. Реализация алгоритма

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 08.03.2012
Размер файла 2,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Поля таблицы:

ID - первичный ключ таблицы

FACULT_ID - ссылка на факультет

SPEC_ID - ссылка на специальность

PAY_FORM_ID - ссылка на форму оплаты

EDUCATION_FORM_ID - ссылка на форму образования

DIPLOM_ID - ссылка на диплом (если не null значит дипломник)

ACADEM_ID - ссылка на академ. отпуск

EXPELED_ID - ссылка на приказ об отчислении

IS_STUD - статус (0-абитуриент, 1-студент)

Таблица STU_STUD_PERS_DATA

Таблица, содержащая личные данные о студенте.

Поля таблицы:

ID - первичный ключ

STUD_ID - внешний ключ на таблицу «STU_STUDENT»

SEX - пол

SURNAME - фамилия

NAME - имя

SECOND_NAME - отчество

BIRTHDAY - дата рождения

NATIONALITY - национальность

PHONE - контактный телефон

REGION_ID - ссылка на классификатор регионов

POST_CODE - почтовый индекс

BIRTHDAY_PLACE - место рождения

REG_ADDR - адрес регистрации

LIVING_ADDR - адрес проживания

PASS_SERIES - серия паспорта

PASS_NO - номер паспорта

PASS_ISSUED - кем выдан паспорт

LIVING_STATE - признак живет ли в сельской местности (0-нет, 1-да)

Таблица STU_STUD_STATE

Таблица, содержащая данные о поступлении абитуриента (номер приказа о зачислении, шифр, год поступления)

Поля таблицы:

ID - первичный ключ

STUDENT_ID - внешний ключ на таблицу «STU_STUDENT»

START_SEM - семестр поступления

START_YEAR - год поступления

CODE - шифр

GROUP_NO - номер группы

CONTRACT_NUM - номер приказа о зачислении

Таблица STU_STUD_COURSE

Таблица, содержащая данные о текущем курсе студента

Поля таблицы:

ID - первичный ключ

STUD_ID - внешний ключ на таблицу «STU_STUDENT»

ORDER_ID - внешний ключ на таблицу «STU_ORDER»

CUR_COURSE - текущий курс

Таблица STU_STUD_EDU_DATA

Таблица, содержащая данные об образовании студента

Поля таблицы:

ID - первичный ключ

ABIT_ID - внешний ключ на таблицу «STU_STUD_PERS_DATA»

EDU_TYPE - имеющееся образование

SCHOOL_NAME - номер оконченного учебного заведения

DATE_END - дата окончания учебного заведения

DOC_TYPE - тип документа

IS_COPY - статус документа (копия или подлинник)

DOC_SERIES - серия документа

DOC_NUM - номер документа

IS_MEDAL - статус (медалист)

IS_OLYMP - статус (участник / победитель олимпиад)

IS_HIGHSCHOOL - статус (второе высшее)

NOEXAM_DOC - документ о допуске без экзаменов

Таблица STU_ORDER

Таблица, содержащая данные приказов о зачислении

Поля таблицы:

ID - первичный ключ

STAT - статус приказа (0-не подписан, 1-подписан)

DATE_COMMIT - дата утверждения

SPEC_ID - внешний ключ на специальность

ORDER_NO - номер приказа

ORDER_DATE - приказ от числа

ORD_COURSE - курс

Таблица STU_KL_SPECIALIZATION

Классификатор специальностей, содержит привязку к факультету, название и код специальности.

Поля таблицы:

ID - первичный ключ

FACULT_ID - внешний ключ на таблицу «STU_KL_FACULTY»

NAME - название специальности

CODE - код специальности

Таблица STU_KL_FACULTY

Классификатор факультетов

Поля таблицы:

ID - первичный ключ

NAME - название факультета

Таблица STU_KL_REGION

Классификатор регионов

Поля таблицы:

ID - первичный ключ

NAME - название региона

Таблица STU_KL_PAY_FORM

Классификатор форм оплаты обучения

Поля таблицы:

ID - первичный ключ

DESCRIPTION - описание формы оплаты

Таблица STU_KL_ED_FORM

Классификатор форм обучения

Поля таблицы:

ID - первичный ключ

DESCRIPTION - описание формы обучения

Таблица STU_KL_EGE_DISCIPLINE

Классификатор дисциплин по ЕГЭ

Поля таблицы:

ID - первичный ключ

NAME - название дисциплины

Таблица STU_EGE_DATA

Таблица привязки дисциплин ЕГЭ к факультетам

Поля таблицы:

ID - первичный ключ

FACULT_ID - внешний ключ на таблицу «STU_KL_FACULTY»

DISCIPLINE_ID - внешний ключ на таблицу «STU_KL_EGE_DISCIPLINE»

Таблица STU_EGE_STUD_DATA

Таблица, содержащая данные о результатах ЕГЭ студентов

Поля таблицы:

ID - первичный ключ

STUD_ID - внешний ключ на таблицу «STU_STUDENT»

EGE_ID - внешний ключ на таблицу «STU_EGE_DATA»

MARK - оценка

SERTIFICATE - сертификат о сдаче

Таблица STU_EXPEL_DATA

Таблица, содержащая данные об отчислении студента

Поля таблицы:

ID - первичный ключ

STUDENT_ID - внешний ключ на таблицу «STU_STUDENT»

ORDERNO - номер приказа об отчислении

REASON - причина

DATE - дата приказа

Таблица STU_DIPLOM_DATA

Таблица, содержащая данные о дипломниках

Поля таблицы:

ID - первичный ключ

STUDENT_ID - внешний ключ на таблицу «STU_STUDENT»

ORDERNO - номер приказа

DATE - дата приказа

TOPIC - тема диплома

MARK - оценка

Таблица STU_ACAD_DATA

Таблица, содержащая данные об академических отпусках

Поля таблицы:

ID - первичный ключ

STUD_ID - внешний ключ на таблицу «STU_STUDENT»

ORDERNO - номер приказа

REASON - причина академического отпуска

DATE - дата приказа

Таблица STU_ADDITIONAL_DATA

Таблица, содержащая дополнительные сведения о студентах

Поля таблицы:

ID - первичный ключ

STUD_ID - внешний ключ на таблицу «STU_STUDENT»

SENIORITY - опыт работы

WORK_PLACE - место работы

FACILITY - льготы

FAC_DOC - документ, подтверждающий льготы

NEED_HOSTEL - общежитие (0-не нуждается, 1-нуждается)

LANUAGE - знание иностранного языка

Таблица STU_USER

Таблица, содержащая пользователей, их пароли и уровни доступа

Поля таблицы:

ID - первичный ключ

USERNAME - имя пользователя

PWD - пароль

ACCESS_LEVEL - уровень доступа

FACULT_ID - внешний ключ на классификатор факультетов (служит для привязки пользователя к факультету)

Схема данных БД

Схема данных БД приведена на рис. 4.1

Схема данных БД

4. Разработка программы

Разработка алгоритма программы

Блок-схема программы

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Реализация алгоритма программы

Разработка главного окна программы

Согласно регламенту разработки приложений, в главном окне содержится меню доступа к основным функциям программы.

Разработка главного модуля данных

В модуле данных находятся компоненты подключения к БД (рис 5.2.2). Модуль данных предоставляет подключение к БД всем элементам программы. Так же в нем описан класс FormList, который позволяет правильно работать приложению с несколькими окнами одновременно.

type

TFormList = class(TComponent)

public

Forms: TStringList;

constructor Create (aOwner: TComponent); override;

destructor Destroy; override;

procedure AddForm (HWND: integer);

procedure FreeAll();

procedure CloseForm (HWND: integer);

procedure MinimizeAll();

procedure MaximizeAll();

end;

constructor TFormList. Create (aOwner: TComponent);

begin

inherited;

Forms:= TStringList. Create;

end;

destructor TFormList.destroy;

begin

Forms. Destroy;

inherited;

end;

procedure TFormList. AddForm (HWND: integer);

var NewBtn: TToolButton;

begin

Forms. Add (inttostr(HWND));

TForm (FindControl(HWND)).Show;

NewBtn:= TToolButton. Create(frmMain);

with NewBtn do

begin

Hint:= TForm (FindControl(HWND)).Caption;

Caption:= TForm (FindControl(HWND)).Caption;

Name:= TForm (FindControl(HWND)).Name;

ImageIndex:= 4;

AutoSize:= true;

onClick:= dm_main.acShowFormExecute;

end;

end;

procedure TFormList. FreeAll();

var i: integer;

begin

for i:= Forms. Count - 1 downto 0 do

if TForm (FindControl(strtoint (Forms. Strings[i]))) <> nil then

TForm (FindControl(strtoint (Forms. Strings[i]))).Close;

Forms. Clear;

end;

procedure TFormList. CloseForm (HWND: integer);

var i: integer;

begin

if Assigned (Main.frmMain. FindComponent (TForm(FindControl(HWND)).Name)) then

Main.frmMain. FindComponent (TForm(FindControl(HWND)).Name).Destroy;

for i:= 0 to Forms. Count - 1 do

begin

if TForm (FindControl(strtoint (Forms. Strings[i]))).Name = TForm (FindControl(HWND)).Name then

begin

if assigned (FindControl(HWND)) then

Forms. Delete(i);

Exit;

end;

end;

end;

Разработка окна входа в систему

Окно выхода в систему позволяет проводить авторизацию пользователей (рис 4), а так же настройку соединения с БД (рис 5.2.3).

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

procedure TfrmAliasManager.sbTestClick (Sender: TObject);

begin

dm_Main.pFIBMainDB. Connected:= False;

edMasterkey2Exit(edMasterkey2);

if CheckAlias and (Application. MessageBox (PChar(STR_SETALIASDEF),

PChar (STR_ATTENTION), mb_YesNo + mb_IconQuestion) = idYes) then

begin

Screen. Cursor:= -11;

sbSave. Click;

DataBaseName:= IBTest. DatabaseName;

dm_Main.pFIBMainDB. DatabaseName:= IBTest. DatabaseName;

dm_Main.pFIBMainDB.DBParams. Clear;

dm_Main.pFIBMainDB.DBParams. Add ('user_name=SYSDBA');

dm_Main.pFIBMainDB.DBParams. Add ('password=' +

Setup. ReadString ('DB_INI', 'BDPass', 'masterkey'));

Setup. WriteString ('DB_INI', 'BDPath', dm_Main.pFIBMainDB. DatabaseName);

Setup. WriteString ('DB_INI', 'BDAlias', edtAlias. Text);

Setup. WriteString ('RepPath', 'RepPath', AnsiReplaceText (extractFilePath(Application. ExeName), 'output\', 'rep\order.fr3'));

{RegData. WriteString ('BDAlias', edtAlias. Text);

RegData. WriteString ('BDPath', dm_Main.pFIBMainDB. DatabaseName);

RegData. WriteString ('RepPath', AnsiReplaceText (extractFilePath(Application. ExeName), 'output\', 'rep\order.fr3'));}

Screen. Cursor:= 0;

Close;

dm_Main.pFIBMainDB. Connected:=true;

frmAccess.pnlLoad. Caption:=edtAlias. Text;

end;

end;

procedure TfrmAliasManager. FormCreate (Sender: TObject);

var

i: Integer;

begin

Setup:= TIniFile. Create (ExtractFilePath(Application. ExeName) + 'Abit.ini');

ListPath:= TStringList. Create;

twAlias. Items. Clear;

RootNd:= twAlias. Items. Add (nil, STR_NAMEROOT);

Setup. ReadSectionValues ('ABALIAS', ListPath);

for i:= 0 to ListPath. Count - 1 do

AddNd (Copy(ListPath. Strings[i], 1, pos ('=', ListPath. Strings[i]) - 1));

RootNd. Expand(True);

twAlias. Select(RootNd);

end;

Окно входа реализует проверку пароля поля пользователя. Если пароль верный - программа назначает пользователю группу (из БД) и разрешает вход в систему.

procedure TfrmAccess.btnEnterClick (Sender: TObject);

begin

qryLogin. ParamByName('USR').AsString:= dxDBGrid. DataSource. DataSet.fieldbyname('username').AsString;

qryLogin. ExecQuery;

if qryLogin. RecordCount = 0 then

begin

MessageBox (Application.handle, 'Пользователь с данным именем не найден!', 'Ошибка', mb_IconStop);

Exit;

end

else begin

if qryLogin. FieldByName('pwd').AsString <> Pass. Text then

begin

MessageBox (Application.handle, 'Неверный пароль!', 'Ошибка', mb_IconStop);

Exit;

end;

IsLogin:= true;

frmAccess. Close;

end

end;

procedure TfrmAccess. FormClose (Sender: TObject; var Action: TCloseAction);

begin

if not IsLogin then

Application. Terminate

else

begin

if assigned(frmMain) then frmMain. AccessLevel:=frmAccess.qryLogin.fieldbyname ('ACCESS_LEVEL').AsInteger;

case qryLogin.fieldbyname ('ACCESS_LEVEL').AsInteger of

0:

begin

UserGroup:= 'Администратор';

dm_Main.nKlass. Visible:= true;

dm_Main.nAddAbit. Visible:= true;

dm_Main.nToStud. Visible:= true;

end;

1:

begin

UserGroup:= 'Пользователь';

dm_Main.nKlass. Visible:= false;

dm_Main.nOptions. Visible:= false;

dm_Main.nAddAbit. Visible:= true;

dm_Main.nToStud. Visible:= true;

end;

2:

begin

UserGroup:= 'Гость';

dm_Main.nKlass. Visible:= false;

dm_Main.nOptions. Visible:= false;

dm_Main.nAddAbit. Visible:= false;

dm_Main.nToStud. Visible:= false;

end;

end;

end;

end;

Разработка окна добавления абитуриентов

В окне добавления абитуриентов (рис 5.2.5) предлагается заполнить несколько форм, после чего программа добавляет данные в базу данных, а пользователю предлагается напечатать справки абитуриенту.

procedure TfrmAddAbit.btnNextClick (Sender: TObject);

begin

case PageControl. ActivePageIndex of

0: begin

if (Trim (edName. Text) = «) or (Trim (edSurname. Text) = «) or (Trim (edSecName. Text) = «)

or (edBirthDate. Text = '. ') or (Trim (edPassIssued. Text) = «) or

(Trim (edPassNo. Text) = «) or (Trim (edPassSer. Text) = «) then

begin

MessageBox (Application.handle, 'Не заполнены обязательные поля!', 'Ошибка', MB_ICONSTOP);

Exit;

end;

FIBdsStuPers. Insert;

PageControl. ActivePageIndex:= 1;

btnPrev. Enabled:= true;

end;

1: begin

FIBdsEdu. Insert;

PageControl. ActivePageIndex:= 2;

end;

2: begin

if (lcbFacult. Text = «) or (lcbSpec. Text = «) then

begin

MessageBox (Application.handle, 'Не заполнены обязательные поля!', 'Ошибка', MB_ICONSTOP);

Exit;

end;

FIBdsAddEdData. Insert;

FIBdsStuPers. Edit;

FIBdsStuPers. UpdateRecord;

FIBdsStuPers. Post;

PageControl. ActivePageIndex:= 3;

end;

3: begin

PageControl. ActivePageIndex:= 4;

btnSave. Enabled:= true;

btnNext. Enabled:= false;

end;

end;

Разработка реестра приказов

Реестр приказов (рис 5.2.6) позволяет подготовить приказ о зачислении на подпись ректору. В нем имеется возможность создания, редактирования и удаления приказов, а так же возможность распечатать приказ.

procedure TfrmToAbit.aiAddOrderExecute (Sender: TObject);

begin

try

pFIBdsInsertOrd. Open;

pFIBdsInsertOrd. InsertRecord([0, 0, null, dsSelAbits. FieldByName ('spec_id').asinteger, '01.05.2009' {deOrderDate. Date}, fCourseNumber]);

pFIBdsInsertOrd. Close;

dm_Main.pFIBtrWrite. CommitRetaining;

pFIBdsInsertOrd. Open;

except

MessageBox (Application.handle, 'Произошла ошибка! Данные не были сохранены!', 'Ошибка', mb_IconStop);

dm_Main.pFIBtrWrite. Rollback;

dm_Main.pFIBtrWrite. StartTransaction;

end;

end;

procedure TfrmToAbit.aiAddPersonExecute (Sender: TObject);

begin

if dsSelAbits. RecordCount = 0 then Exit;

Ed.frmEd:= Ed. TfrmEd. Create(Application);

with frmEd do

begin

EdStyle:= edOrder;

le2. Visible:= false;

le1. Visible:= false;

end;

if ed.frmEd. ShowModal = mrOk then begin

try

pFIBdsSendToAbit. Active:= true;

pFIBdsSendToAbit. Insert;

pFIBdsInsertCourse. Open;

pFIBdsInsertCourse. InsertRecord([0, grdAbits. DataSource. DataSet.fieldbyname('id').AsInteger, grdOrdersDBTableView1. DataController. DataSet. FieldByName('id').AsInteger, fCourseNumber]);

pFIBdsInsertCourse. Close;

if grdOrdersDBTableView1. DataController. DataSource. DataSet. FieldByName ('ord_course').AsInteger <> 1 then

begin

qryUpdateSTU_STATE. ParamByName('ord').AsInteger:= grdOrdersDBTableView1. DataController. DataSource. DataSet.fieldbyname('id').AsInteger;

qryUpdateSTU_STATE. ParamByName('id').AsInteger:= grdAbits. DataSource. DataSet.fieldbyname('id').AsInteger;

qryUpdateSTU_STATE. ExecQuery;

end;

dm_Main.pFIBtrWrite. CommitRetaining;

pFIBDataSetDetail. ReopenLocate('id');

except

MessageBox (Application.handle, 'Произошла ошибка! Данные не были сохранены!', 'Ошибка', mb_IconStop);

dm_Main.pFIBtrWrite. Rollback;

dm_Main.pFIBtrWrite. StartTransaction;

exit;

end;

dsSelAbits. Close;

dsSelAbits. Open;

end;

end;

procedure TfrmToAbit.aiReportOrderExecute (Sender: TObject);

var

RegData: TIniFile;

path: string;

begin

RegData:= TIniFile. Create (ExtractFilePath(Application. ExeName) + 'Abit.ini');

try

path:= RegData. ReadString ('RepPath', 'RepPath', «) + 'Order.fr3';

DMRep.DMR.frxReportMain. Report. LoadFromFile(path);

DMRep.DMR.frxReportMain. Report. Variables['ORD']:= grdOrdersDBTableView1. DataController. DataSource. DataSet.fieldbyname('ID').AsVariant;

DMRep.DMR.frxReportMain. Report. PrepareReport();

DMRep.DMR.frxReportMain. ShowReport();

finally

RegData. Free;

end;

end;

Разработка системы поиска

Система поиска (рис 5.2.7) позволяет найти студента как по полному имени, фамилии или отчеству, так и по их части. К примеру: если ввести «Иванов»,

То система выдаст студентов с фамилией Иванов, а если ввести «Ив», то система покажет всех студентов, у которых в имени фамилии или отчестве встречается «ив». Система не чувствительна к регистру. Так же в системе есть возможность фильтровать записи и выбирать интересующие пользователя колонки. Если пользователь зашел под учетной записью администратора, то он может удалять и редактировать записи.

SQL запрос:

select pay.id as pay_id, s.id, s.is_stud, pay.description as pay_form, f.name as facult, e.description as ed_form, spec.name as specialization,

spec.id as spec_id, pers.name, pers.surname, pers.second_name, pers.pass_series, pers.pass_no, pers.sex

from STU_STUDENT s left join stu_kl_faculty f on (s.facult_id = f.id)

left join stu_kl_ed_form e on (s.education_form_id = e.id)

left join stu_kl_specialization spec on (s.spec_id = spec.id)

left join stu_kl_pay_form pay on (s.pay_form_id = pay.id)

left join stu_stud_pers_data pers on (pers.stud_id = s.id)

- left join stu_stud_state state on (state.student_id=s.id)

where

s.facult_id =:fc and

(upper (pers.surname) like (' % '||upper(:srch)||' % ')

or

upper (pers.name) like (' % '||upper(:srch)||' % ')

or

upper (pers.second_name) like (' % '||upper(:srch)||' % '))

Реализация поиска и фильтрования:

procedure TfrmSearch.aiFindPersonExecute (Sender: TObject);

begin

frmFindPerson:= TfrmFindPerson. Create(Application);

if frmFindPerson. ShowModal = mrOk then

begin

dsSearch. DataSet:= pFIBdsSearch;

pFIBdsSearch. Active:= false;

pFIBdsSearch. ParamByName('srch').AsVariant:= frmFindPerson.lbSeachString. Text;

pFIBdsSearch. Active:= true;

if frmFindPerson.cbSex. Checked then grdResultSex. Visible:= true

else grdResultSex. Visible:= false;

if frmFindPerson.cbPassNo. Checked then

grdResultPASS_NO. Visible:= true

else

grdResultPASS_NO. Visible:= false;

if frmFindPerson.cbPassSer. Checked then

grdResultPASS_SERIES. Visible:= true

else

grdResultPASS_SERIES. Visible:= false;

if frmFindPerson.cbPay. Checked then

grdResultPAY_FORM. Visible:= true

else

grdResultPAY_FORM. Visible:= false;

if frmFindPerson.cbEdu. Checked then

grdResultED_FORM. Visible:= true

else

grdResultED_FORM. Visible:= false;

if frmFindPerson.cbFac. Checked then

grdResultFACULT. Visible:= true

else

grdResultFACULT. Visible:= false;

if frmFindPerson.cbSpec. Checked then

grdResultSPECIALIZATION. Visible:= true

else

grdResultSPECIALIZATION. Visible:= false;

if frmFindPerson.rbFilterAll. Checked then

pFIBdsSearch. Filtered:= false;

if frmFindPerson.rbFilterStud. Checked then

begin

pFIBdsSearch. Filter:= 'is_Stud = 1';

pFIBdsSearch. Filtered:= true;

end;

if frmFindPerson.rbFilterAbit. Checked then

begin

pFIBdsSearch. Filter:= 'is_Stud = 0';

pFIBdsSearch. Filtered:= true;

end;

end;

end;

Разработка реестра факультетов и специальностей.

Реестр факультетов (рис 5.2.8) разработан для редактирования факультетов и специальностей в БД. Связь факультетов и специальностей реализована технологией master-detail.

procedure TfrmklFacults.aiAddFacultExecute (Sender: TObject);

begin

Ed.frmEd:= Ed. TfrmEd. Create(Application);

try

with frmEd do

begin

EdStyle:= edFac;

lbCode. Visible:= false;

meCode. Visible:= false;

frmEd. Caption:= 'Добавление факультета';

le2. Visible:= false;

le1. EditLabel. Caption:= 'Введите факультет:';

end;

if ed.frmEd. ShowModal = mrOk then

begin

ibdsFacults. Insert;

ibdsFacults. FieldByName('NAME').AsString:= frmEd.le1. Text;

ibdsFacults. Post;

dm_Main.pFIBtrWrite. CommitRetaining;

ibdsFacults. Locate ('NAME', frmEd.le1. Text, [loCaseInsensitive]);

tlbDeleteSpec. Enabled:= not ibdsSpec. IsEmpty;

tlbDeleteFacult. Enabled:= not ibdsFacults. IsEmpty;

end;

finally

Ed.frmEd. Free;

end;

end;

procedure TfrmklFacults.aiAddSpecExecute (Sender: TObject);

begin

Ed.frmEd:= Ed. TfrmEd. Create(Application);

try

with frmEd do

begin

EdStyle:= edSpec;

lbCode. Visible:= false;

meCode. Visible:= false;

frmEd. Caption:= 'Добавление специальности';

le2. EditLabel. Caption:= 'Введите специальность:';

le1. EditLabel. Caption:= 'Введите код специальности:';

end;

if ed.frmEd. ShowModal = mrOk then

begin

ibdsSpec. Insert;

ibdsSpec. FieldByName('NAME').AsString:= frmEd.le2. Text;

ibdsSpec. FieldByName('CODE').AsString:= frmEd.le1. Text;

ibdsSpec. FieldByName ('FACULT_ID').AsInteger:= ibdsFacults.fieldbyname('ID').asInteger;

ibdsSpec. Post;

dm_Main.pFIBtrWrite. CommitRetaining;

ibdsSpec. ReopenLocate('ID');

tlbDeleteSpec. Enabled:= not ibdsSpec. IsEmpty;

end;

finally

Ed.frmEd. Free;

end;

end;

Разработка системы управления пользователями.

В управлении пользователями (рис 5.2.9) возможны удаление, добавление и редактирование пользователей. При добавлении пользователя ему назначается пароль, а так же осуществляется привязка к факультету и указание группы, к которой он относится.

procedure TfrmUsers.aiAddUserExecute (Sender: TObject);

var

ID: Integer;

frmNewUser: TfrmNewUser;

begin

frmNewUser:= NewUser. TfrmNewUser. Create(Application);

try

frmNewUser.gbCtrls. Caption:= 'Добавление пользователя';

frmNewUser. Caption:= 'Добавление пользователя';

if frmNewUser. ShowModal = mrOK then

begin

pFIBdsAddUsers. Active:= true;

pFIBdsAddUsers. Insert;

ID:= pFIBdsAddUsers. FieldByName('ID').AsInteger;

pFIBdsAddUsers. FieldByName('USERNAME').AsString:= frmNewUser.edUserName. Text;

pFIBdsAddUsers. FieldByName('PWD').AsString:= frmNewUser.edPwd. Text;

pFIBdsAddUsers. FieldByName ('ACCESS_LEVEL').AsInteger:= frmNewUser.cbUserGroup. ItemIndex;

pFIBdsAddUsers. FieldByName ('FACULT_ID').AsInteger:= frmNewUser.lcbFaculty. ListSource. DataSet.fieldbyname('id').AsInteger;

pFIBdsAddUsers. Post;

dm_Main.pFIBtrWrite. CommitRetaining;

pFIBdsUsers. Close;

pFIBdsUsers. Open;

pFIBdsUsers. Locate ('ID', ID, []);

end;

finally

frmNewUser. Free;

end;

end;

procedure TfrmUsers.aiEditUserExecute (Sender: TObject);

var

frmNewUser: TfrmNewUser;

begin

frmNewUser:= NewUser. TfrmNewUser. Create(Application);

frmNewUser.gbCtrls. Caption:= 'Редактирование пользователя';

frmNewUser. Caption:= 'Редактирование пользователя';

try

pFIBdsAddUsers. Open;

frmNewUser.edUserName. Text:= pFIBdsUsers. FieldByName('USERNAME').AsString;

frmNewUser.edPwd. Text:= pFIBdsUsers. FieldByName('PWD').AsString;

frmNewUser.cbUserGroup. ItemIndex:= pFIBdsUsers. FieldByName ('ACCESS_LEVEL').AsInteger;

pFIBdsFacult. Locate ('ID', pFIBdsUsers. FieldByName('ID1').AsInteger, []);

if frmNewUser. ShowModal = mrOk then

begin

pFIBdsAddUsers. Edit;

pFIBdsAddUsers. FieldByName('USERNAME').AsString:= frmNewUser.edUserName. Text;

pFIBdsAddUsers. FieldByName('PWD').AsString:= frmNewUser.edPwd. Text;

pFIBdsAddUsers. FieldByName ('ACCESS_LEVEL').AsInteger:= frmNewUser.cbUserGroup. ItemIndex;

pFIBdsAddUsers. FieldByName ('FACULT_ID').AsInteger:= frmNewUser.lcbFaculty. ListSource. DataSet.fieldbyname('id').AsInteger;

pFIBdsAddUsers. FieldByName('ID').AsInteger:= grdUsers. DataSource. DataSet.fieldbyname('id').AsInteger;

pFIBdsAddUsers. UpdateRecord;

pFIBdsAddUsers. Post;

dm_Main.pFIBtrWrite. CommitRetaining;

pFIBdsUsers. Refresh;

end;

finally

frmNewUser. Free;

end. база данные таблица алгоритм

Размещено на Allbest.ru


Подобные документы

  • Объектно-ориентированные языки программирования. Среда разработки приложений Delphi и ее элементы. Разработка программного приложения. Описание работы системы "Абитуриент", являющейся хранилищем данных об абитуриентах, поступающих в учебное заведение.

    курсовая работа [1,8 M], добавлен 09.11.2011

  • Главные составные части среды программирования. Требование к надежности, к составу и параметрам технических средств. Табличные базы данных. Выбор и обоснование выбора системы управления базами данных. Высокопроизводительный компилятор в машинный код.

    курсовая работа [793,5 K], добавлен 31.01.2016

  • Описание структуры обучающего блока. Проектирование его алгоритма и лингвистического и информационного обеспечения. Организация его взаимодействия с базой данных. Разработка графического интерфейса. Программная реализация основных функций приложения.

    дипломная работа [2,1 M], добавлен 20.12.2015

  • Реализация базы данных для автоматизированной системы, обслуживающей процесс учета ремонта и техобслуживания автотранспорта. Основные функции отдела реализации теплоснабжающей организации. Обоснование выбора SQL. Создание таблиц базы данных, триггеры.

    курсовая работа [233,9 K], добавлен 30.11.2008

  • Системы управления базами данных. Состав СУБД. Языки программирования. Проектирование базы данных на СУБД MySQL. Работа с XAMPP Control Panel. База данных " Детский сад". Вывод данных из таблицы "Ребенок", "Группы", "Классы" и "Направление занятий".

    курсовая работа [1,9 M], добавлен 13.12.2016

  • Выполнение операций, хранения, редактирования, систематизации данных. Рассмотрение подсистем разрабатываемой системы управления базами данных продуктового магазина. Разработка алгоритма функционирования системы и приложения для работы с базой данных.

    курсовая работа [399,1 K], добавлен 26.08.2019

  • Классификация систем управления базами данных. Выбор операционной системы, языка программирования, среды разработки (IDE) и дополнительных компонент. Разработка интерфейса и функций программы по управлению складом, её тестирование и исходный код файлов.

    курсовая работа [487,3 K], добавлен 25.12.2015

  • Разработка базы данных в ErWIn. Сущности, логическая и физическая структуры базы данных "Работа деканата в вузе". Разработка и проверка хранимой процедуры. Создание пользовательской функции по формированию текстовой строки и триггеров к таблице "Студент".

    контрольная работа [3,2 M], добавлен 30.11.2015

  • Трудности проведения работы по учету научно-исследовательских работ студентов. Создание базы данных, принцип системы автоматизированного учета. Интерфейс для просмотра таблиц базы данных полностью и их редактирования. Тестирование программного средства.

    курсовая работа [2,6 M], добавлен 28.08.2012

  • Особенности разработки инфологической модели и создание структуры реляционной базы данных. Основы проектирования базы данных. Разработка таблиц, форм, запросов для вывода информации о соответствующей модели. Работа с базами данных и их объектами.

    курсовая работа [981,4 K], добавлен 05.11.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.