Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovaya_rabota_po_VYCh_TEKh_Sleptsova_M_M_ITS...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
639.38 Кб
Скачать

Глава II. Практическая часть Предметная область и задачи, определение объектов базы данных

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

База данных несомненно носит характер фактографической информационной системы и должна выдавать однозначные сведения на поставленные запросы. Конечными пользователями базы данных являются работники деканатов, которые относятся к категории пользователей не искушенных в вопросах ведения, администрирования баз данных и поддержании их в актуальном состоянии. Это накладывает определенные требования на разработку системы управления базой данных, при которой все методы доступа, поиска и большинство функций администрирования скрыты внутри программы и прозрачны при работе что, несомненно, скажется на разработке программного интерфейса. Кроме того, существующая на данный момент в деканатах факультетов база данных по делам студентов, диктует необходимость принимать во внимание вопросы совместимости и конвертирования данных существующей базы данных в формат разрабатываемой в данной дипломной работе.

Объекты базы данных:

  1. Student (id_full name, id groups, date of enrollment, date of deductions, id_student);

  2. Facilty (name, id_organization, short name, id_faculty);

  3. Man (surname, name, patronymic, id_man);

  4. Organization (name, short name, id_function, id_full name, boss,id_organization);

  5. Cathedra (name, id_faculty, id_cathedra, short name);

  6. Function (name,short name, id_function);

  7. User (status, password, login, id_user);

  8. Results (id_student, id_lessons, results);

  9. Results BRC (id_student, test point1, test point2, test point3, boundary section, control, letter, id_sheet);

  10. BRS sheet (id_sheet, id_groups, course, semester, id_lessons, id_operator, tyoe of control);

  11. Assignments (id_lessons, id_operator, id_groups, id_student, points, date of delivery);

  12. Lessons (name, short name, id_lessons, id_cathedra);

  13. Shedule (date of lessons, id_operator, id_subject, id_groups, type of lessons, pair no, id_lessons);

  14. Operator (id_faculty, id_full name, id_cathedra, type of work, id_operator);

  15. Group (name, year set, id_faculty, year of production, course, id_groups);

Код формы «Авторизация»

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

ComboBox1: TComboBox;

Edit1: TEdit;

Edit2: TEdit;

Bevel1: TBevel;

procedure FormCreate(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

procedure Edit2KeyPress(Sender: TObject; var Key: Char);

private

public

o1,P1,M1,p_1,M_1,d1,p2,m2,P_2,M_2,sd1,max_sem,gr1,brs:integer;

o_st,p_st,m_st,c1,sd_st,sd1_st,p2_st,m2_st,ey_st,ol_st,d1_st:string;

end;

var

Form1: TForm1;

implementation

uses Unit3;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

form1.Font.Name:='Times new roman';

form1.Font.Size:=10;

form1.Left:=0;

form1.Top:=0;

Form1.Width := Screen.Width div 4;

Form1.Height := (Screen.Height div 4)-55;

combobox1.Text:='';

combobox1.items.Clear;

combobox1.items.Add('Преподователь');

combobox1.items.Add('Студент');

combobox1.items.Add('Администрация');

end;

procedure TForm1.FormActivate(Sender: TObject);

begin

P1:=DM.IBQuery1.fieldbyname('ID_POST').AsInteger;

M1:=DM.IBQuery1.fieldbyname('ID_Man').AsInteger;

DM.IBQuery1.Close;

DM.IBQuery1.SQL.Clear;

DM.IBQuery1.SQL.Add('select * from organizations where boss=1');

DM.IBQuery1.Active:=true;

if DM.IBQuery1.EOF=false then

begin

o1:=DM.IBQuery1.fieldbyname('ID_ORG').AsInteger;

o_st:=DM.IBQuery1.fieldbyname('Name').AsString;

P_1:=DM.IBQuery1.fieldbyname('ID_POST').AsInteger;

M_1:=DM.IBQuery1.fieldbyname('ID_Man').AsInteger;

DM.IBQuery1.Close;

DM.IBQuery1.SQL.Clear;

DM.IBQuery1.SQL.Add('select * from posts where ID_Post='+quotedstr(inttostr(p1)));

DM.IBQuery1.Active:=true;

if DM.IBQuery1.EOF=false then P_ST:=DM.IBQuery1.fieldbyname('Name').AsString else P_ST:='';

DM.IBQuery1.Close;

DM.IBQuery1.SQL.Clear;

DM.IBQuery1.SQL.Add('select * from mans where ID_Man='+quotedstr(inttostr(m1)));

DM.IBQuery1.Active:=true;

if DM.IBQuery1.EOF=false then M_ST:=DM.IBQuery1.fieldbyname('LastName').AsString+copy(DM.IBQuery1.fieldbyname('Name').AsString,1,1)+'.'+copy(DM.IBQuery1.fieldbyname('Patronymic').AsString,1,1)+'.'else M_ST:='';

end else

Begin

Messagedlg('Вы не имеете права пользования этой программой!', mtERROR,[mbOK],0);

Form1.Close;

end;

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

var gr1:integer;

begin

case ComboBox1.ItemIndex of

0,2:begin

dm.IBQuery1.Close;

dm.IBQuery1.SQL.Clear;

dm.ibquery1.sql.add('select *from users where id_status=2 and login='+quotedstr(edit1.text)+ 'and passwords='+quotedstr(edit2.text));

dm.IBQuery1.Active:=true;

if dm.IBQuery1.eof=false then

begin

c1:=dm.IBQuery1.fieldbyname('id_user').asstring;

dm.IBQuery1.Close;dm.IBQuery1.SQL.Clear;

dm.IBQuery1.SQL.Add('select*from students where id_stud='+quotedstr(c1)+'and reality=1');

dm.IBQuery1.active:=true;

if dm.IBQuery1.eof=true then

begin

messagedlg('вы отсутствуете в базе данных ',mterror,[mbok],0);

form1.Close;

end else

begin

dm.IBQuery2.Close;dm.IBQuery2.SQL.Clear;

dm.IBQuery2.SQL.Add('select*from mans where id_man='+quotedstr(dm.IBQuery1.fieldbyname('id_man').asstring));

dm.IBQuery2.Active:=true;

if dm.IBQuery2.eof=false then

begin

m2_st:=dm.IBQuery2.fieldbyname('lastname').asstring+'_'+dm.ibquery2.fieldbyname('name').asstring+'_'+dm.IBQuery2.FieldByName('patronymic').asstring;

gr1:=dm.ibquery1.fieldbyname('id_group').asinteger;

end;

end;

end;

end;

end;

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

var t1,t2,t3:word;

begin

if CHR(13)=key then

begin

if(Combobox1.ItemIndex>-1)and (Edit1.Text>'') and (Edit2.Text>'') then

begin

DM.IBQuery1.Close;

DM.IBQuery1.SQL.Clear;

DM.IBQuery1.SQL.Add('select * from Users where ID_Status='+quotedstr(inttostr(Combobox1.ItemIndex+1))+'and logins='+quotedstr(Edit1.Text)+'and Passwords='+quotedstr(Edit2.Text));

DM.IBQuery1.Active:=true;

if DM.IBQuery1.EOF=false then

begin

c1:=DM.IBQuery1.fieldbyname('ID_User').AsString;

CASE Combobox1.ItemIndex of 0,2;

Begin

D1:=0; sd1:=0; P2:=0; M2:=0 ;

DM.IBQuery1.Close;

DM.IBQuery1.SQL.Clear;

if Combobox1.ItemIndex=0 then

DM.IBQuery1.SQL.Add('select * from Collaborators where ID. div>0 and ID_Sub>0 and ID_Coll='+quotedstr(c1)) else

DM.IBQuery1.SQL.Add('select * from Collaborators where ID. div>0 and ID_Sub>0 and ID_Coll='+quotedstr(c1)) ;

DM.IBQuery1.Active:=true;

if DM.IBQuery1.EOF=false then

Begin

D1:=DM.IBQuery1.fieldbyname('ID_DIV').AsInteger;

SD1:=DM.IBQuery1.fieldbyname('ID_SubDiv').Asinteger;

P_2:=DM.IBQuery1.fieldbyname('ID_POST').AsInteger;

M_2:=DM.IBQuery1.fieldbyname('ID_Man').AsInteger;

if D1>0 then begin

DM.IBQuery2.Close;

DM.IBQuery2.SQL.Clear;

DM.IBQuery2.SQL.Add('select * from divisions where ID_org='+quotedstr(inttostr(o1))+'and D1='+quotedstr(inttostr(d1)));

DM.IBQuery2.Active:=true;

if DM.IBQuery1.EOF=false then

begin

D1_ST:=DM.IBQuery2.fieldbyname('Name').Asstring;

DM.IBQuery2.Close;

DM.IBQuery2.SQL.Clear;

DM.IBQuery2.SQL.Add('select * from subdivisions where ID_subdiv='+quotedstr(inttostr(sd1)));

DM.IBQuery2.Active:=true;

if DM.IBQuery1.EOF=false then

SD_ST:=DM.IBQuery2.fieldbyname('Name').AsString else sd1_st:='';

DM.IBQuery2.Close;DM.IBQuery2.SQL.Clear;

DM.IBQuery2.SQL.Add('select * from posts where ID_post='+quotedstr(inttostr(p2)));

DM.IBQuery2.Active:=true ;

if DM.IBQuery2.EOF=false then

begin

P2_ST:=DM.IBQuery2.fieldbyname ('Name').AsString;

DM.IBQuery2.Close;DM.IBQuery2.SQL.Clear;

DM.IBQuery2.SQL.Add('select * from man where ID_mans where id_man='+quotedstr(inttostr(m2 )));

DM.IBQuery2.Active:=true ;

if DM.IBQuery2.EOF=false then m2_st:=dm.IBQuery2.fieldbyname('lastname').AsString+'_'+dm.IBQuery2.fieldbyname('name').asstring+'_'+dm.IBQuery2.fieldbyname('Patronymic').AsString

else m2_st:='';

gr1:=DM.IBQuery1.fieldbyname('id_group').asinteger;

brs:=DM.IBQuery1.fieldbyname('id_brs').asinteger;

ey_st:=dm.IBQuery1.fieldbyname('years_s').asstring+'-'+inttostr(dm.IBQuery1.fieldbyname('years_s').asinteger+1);

decodedate(date(),t3,t2,t1);

if date ()>strtodate('01.09.'+inttostr(t3))then max_sem:=(DM.IBQuery1.fieldbyname('course').asinteger-1)*2+1

else max_sem:=DM.IBQuery1.fieldbyname('course').asinteger*2;

end;

end;

end;

end;

end;

end;

end;

end;

end;

end;

end.