
- •Глава I. Теоретическая часть 4
- •Глава II. Практическая часть 18
- •Введение
- •Глава I. Теоретическая часть
- •Организация учебного процесса при балльно-рейтинговой системе
- •Рейтинговое оценивание знаний студентов
- •Автоматизация информационных процессов
- •Глава II. Практическая часть Предметная область и задачи, определение объектов базы данных
- •Код формы «Авторизация»
- •Код формы «Студент»
- •Код формы «Преподаватель»
- •Код формы «Деканат»
- •Приложение
- •Заключение
- •Использованная литература
Глава II. Практическая часть Предметная область и задачи, определение объектов базы данных
База данных предназначена для хранения данных об обучающихся студентах, а также оценок успеваемости по списку изучаемых дисциплин (программе обучения). Подразумевается, что эта информация может изменятся в течении всего периода обучения и может быть затребована в любое время за период обучения студента и даже после окончания его обучения или участвовать в формировании статистических данных о группе или курсе за любой временной промежуток.
База данных несомненно носит характер фактографической информационной системы и должна выдавать однозначные сведения на поставленные запросы. Конечными пользователями базы данных являются работники деканатов, которые относятся к категории пользователей не искушенных в вопросах ведения, администрирования баз данных и поддержании их в актуальном состоянии. Это накладывает определенные требования на разработку системы управления базой данных, при которой все методы доступа, поиска и большинство функций администрирования скрыты внутри программы и прозрачны при работе что, несомненно, скажется на разработке программного интерфейса. Кроме того, существующая на данный момент в деканатах факультетов база данных по делам студентов, диктует необходимость принимать во внимание вопросы совместимости и конвертирования данных существующей базы данных в формат разрабатываемой в данной дипломной работе.
Объекты базы данных:
Student (id_full name, id groups, date of enrollment, date of deductions, id_student);
Facilty (name, id_organization, short name, id_faculty);
Man (surname, name, patronymic, id_man);
Organization (name, short name, id_function, id_full name, boss,id_organization);
Cathedra (name, id_faculty, id_cathedra, short name);
Function (name,short name, id_function);
User (status, password, login, id_user);
Results (id_student, id_lessons, results);
Results BRC (id_student, test point1, test point2, test point3, boundary section, control, letter, id_sheet);
BRS sheet (id_sheet, id_groups, course, semester, id_lessons, id_operator, tyoe of control);
Assignments (id_lessons, id_operator, id_groups, id_student, points, date of delivery);
Lessons (name, short name, id_lessons, id_cathedra);
Shedule (date of lessons, id_operator, id_subject, id_groups, type of lessons, pair no, id_lessons);
Operator (id_faculty, id_full name, id_cathedra, type of work, id_operator);
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.