Разработка базы данных "Абитуриент – студент"
Разработка системы управления базами данных для учета абитуриентов и студентов, требования к ее функционалу. Выбор средств реализации и его обоснование. Используемые языки программирования. Разработка структуры БД, работа с таблицами. Реализация алгоритма
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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