Разработка информационной технологии контроля успеваемости подсистемы "Учебный процесс ХТИ – филиала СФУ"

Создание единой информационной сети, позволяющей эффективно хранить, обрабатывать, анализировать и использовать информацию по учету успеваемости студентов. Основные функции и формы созданной информационной системы. Экономическое обоснование проекта.

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

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

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

StatusBar.Panels[2].Text:= 'Текущая дата: ' + DateToStr(Date);

//вывод на экран окна авторизации

login:= TPass_Form.Create(Application);

//загрузка данных о сервере из ini файла

GetDir(3, p);

conf:= TIniFile.Create('c:\connect.ini');

login.Edit1.Text:= conf.ReadString('Default','Host','127.0.0.1');

login.Edit2.Text:= conf.ReadString('Default','DB','');

conf.Free;

login.Main:= MainForm;

end;

// Справочник ниций

procedure TMainForm.N10Click(Sender: TObject);

begin

ShowSpr('NACII','KOD_NACII','NACIA','Справочник ниций','Нация');

end;

//Справочник признаков поступления

procedure TMainForm.N12Click(Sender: TObject);

begin

ShowSpr('PRIZNAK_POSTUPLENIA','KOD_PRIZNAK','PRIZNAK','Справочник признаков поступления','Признак поступления');

end;

//Справочник семейного положения

procedure TMainForm.N13Click(Sender: TObject);

begin

ShowSpr('SEM_POLOG','KOD_SEM_POLOG','SEM_POLOG','Справочник семейного положения','Семейное положение');

end;

//Справочник специальностей

procedure TMainForm.N14Click(Sender: TObject);

begin

ShowSpr('SPEC','KOD_SPEC','SPEC','Справочник специальностей','Специальность');

end;

// Справочник типов учебных заведений

procedure TMainForm.N16Click(Sender: TObject);

begin

ShowSpr('TIP_UCHEBNOGO_ZAVEDENIYA','KOD_ZAVEDENIYA','TIP','Справочник типов учебных заведений','Тип учебного заведения');

end;

//Справочник ученых степеней

procedure TMainForm.N18Click(Sender: TObject);

begin

ShowSpr('UCHENAYA_STEPEN','KOD_STEPENI','STEPEN','Справочник ученых степеней','Ученая степень');

end;

//Справочник ученых званий

procedure TMainForm.N19Click(Sender: TObject);

begin

ShowSpr('UCHENOE_ZVANIE','KOD_ZVANIA','ZVANIE','Справочник ученых званий','Ученое звание');

end;

//вывод на экран сводной таблицы УПС

procedure TMainForm.N1Click(Sender: TObject);

var

sp: Tsprav;

begin

sp:= Tsprav.Create(Application);

sp.DBGrid1.Columns.Add;

sp.DBGrid1.Columns.Add;

sp.DBGrid1.Columns.Add;

sp.DBGrid1.Columns.Add;

sp.DBGrid1.Columns.Items[0].FieldName:= 'KOD_UPS';

sp.DBGrid1.Columns.Items[0].Title.Caption:= 'Код УПС';

sp.DBGrid1.Columns.Items[1].FieldName:= 'GRUPPA';

sp.DBGrid1.Columns.Items[1].Title.Caption:= 'Группа';

sp.DBGrid1.Columns.Items[2].FieldName:= 'SEMESTR';

sp.DBGrid1.Columns.Items[2].Title.Caption:= 'Семестр';

sp.DBGrid1.Columns.Items[3].FieldName:= 'F_1';

sp.DBGrid1.Columns.Items[3].Title.Caption:= 'Предмет';

sp.DBGrid1.Columns.Items[4].FieldName:= 'F_2';

sp.DBGrid1.Columns.Items[4].Title.Caption:= 'Преподаватель';

sp.DBGrid1.Columns.Items[5].FieldName:= 'F_3';

sp.DBGrid1.Columns.Items[5].Title.Caption:= 'Вид работы';

sp.Caption:= 'УПС по видам работ';

sp.studP.Visible:= true;

sp.DBGrid1.DataSource.DataSet:= sp.upsQC;

sp.upsTable.Active:= true;

sp.upsQC.Active:= true;

end;

//Справочник видов выполняемых работ

procedure TMainForm.N21Click(Sender: TObject);

begin

ShowSpr('VID_RABOT', 'KOD_RABOTY', 'RABOTA','Справочник видов выполняемых работ', 'Вид работы');

end;

//просмотр списков студентов

procedure TMainForm.N23Click(Sender: TObject);

var

sp: Tsprav;

begin

sp:= Tsprav.Create(Application);

sp.DBGrid1.Columns.Add;

sp.DBGrid1.Columns.Add;

sp.DBGrid1.Columns.Add;

sp.DBGrid1.Columns.Items[0].FieldName:= 'KOD_UCHASHEGOSYA';

sp.DBGrid1.Columns.Items[0].Title.Caption:= 'Код';

sp.DBGrid1.Columns.Items[1].FieldName:= 'FAMILIA';

sp.DBGrid1.Columns.Items[1].Title.Caption:= 'Фамилия';

sp.DBGrid1.Columns.Items[2].FieldName:= 'NAME';

sp.DBGrid1.Columns.Items[2].Title.Caption:= 'Имя';

sp.DBGrid1.Columns.Items[3].FieldName:= 'OTCHESTVO';

sp.DBGrid1.Columns.Items[3].Title.Caption:= 'Отчество';

sp.DBGrid1.Columns.Items[4].FieldName:= 'GRUPPA';

sp.DBGrid1.Columns.Items[4].Title.Caption:= 'Группа';

sp.Caption:= 'Список Учащихся';

sp.studP.Visible:= true;

sp.ds.DataSet:= sp.uTable;

sp.uTable.Active:= true;

end;

//вывод списков групп

procedure TMainForm.N24Click(Sender: TObject);

var

sp: Tsprav;

begin

sp:= Tsprav.Create(Application);

sp.DBGrid1.Columns.Add;

sp.DBGrid1.Columns.Items[0].FieldName:= 'KOD_GRUP';

sp.DBGrid1.Columns.Items[0].Title.Caption:= 'Код';

sp.DBGrid1.Columns.Items[1].FieldName:= 'NOMER_GRUP';

sp.DBGrid1.Columns.Items[1].Title.Caption:= 'Номер группы';

sp.DBGrid1.Columns.Items[2].FieldName:= 'F_1';

sp.DBGrid1.Columns.Items[2].Title.Caption:= 'Специальность';

sp.Caption:= 'Список Групп';

sp.studP.Visible:= true;

sp.ds.DataSet:= sp.gcq;

sp.grupTable.Active:= true;

sp.gcq.Active:= true;

end;

//просмотр списков преподавателей

procedure TMainForm.N25Click(Sender: TObject);

var

sp: Tsprav;

begin

sp:= Tsprav.Create(Application);

sp.DBGrid1.Columns.Add;

sp.DBGrid1.Columns.Add;

sp.DBGrid1.Columns.Items[0].FieldName:= 'KOD_PREPOD';

sp.DBGrid1.Columns.Items[0].Title.Caption:= 'Код';

sp.DBGrid1.Columns.Items[1].FieldName:= 'FAMILIA';

sp.DBGrid1.Columns.Items[1].Title.Caption:= 'Фамилия';

sp.DBGrid1.Columns.Items[2].FieldName:= 'NAME';

sp.DBGrid1.Columns.Items[2].Title.Caption:= 'Имя';

sp.DBGrid1.Columns.Items[3].FieldName:= 'OTCHESTVO';

sp.DBGrid1.Columns.Items[3].Title.Caption:= 'Отчество';

sp.Caption:= 'Список Преподавателей';

sp.studP.Visible:= true;

sp.ds.DataSet:= sp.prepTable;

sp.prepTable.Active:= true;

end;

//вывод списков факультетов

procedure TMainForm.N26Click(Sender: TObject);

var

sp: Tsprav;

begin

sp:= Tsprav.Create(Application);

sp.DBGrid1.Columns.Items[0].FieldName:= 'KOD_FACULTETA';

sp.DBGrid1.Columns.Items[0].Title.Caption:= 'Код';

sp.DBGrid1.Columns.Items[1].FieldName:= 'NAIMENOVANIE';

sp.DBGrid1.Columns.Items[1].Title.Caption:= 'Факультет';

sp.Caption:= 'Список Факультетов';

sp.studP.Visible:= true;

sp.ds.DataSet:= sp.fakTable;

sp.fakTable.Active:= true;

end;

procedure TMainForm.N27Click(Sender: TObject);

var

sp: Tsprav;

begin

sp:= Tsprav.Create(Application);

//список кафедр

sp.DBGrid1.Columns.Items[0].FieldName:= 'KOD_KAFEDRI';

sp.DBGrid1.Columns.Items[0].Title.Caption:= 'Код';

sp.DBGrid1.Columns.Items[1].FieldName:= 'KAFEDRA';

sp.DBGrid1.Columns.Items[1].Title.Caption:= 'Кафедра';

sp.Caption:= 'Список Кафедр';

sp.studP.Visible:= true;

sp.ds.DataSet:= sp.kafTable;

sp.kafTable.Active:= true;

end;

//функция инициализации экранной формы журнала

procedure TMainForm.N29Click(Sender: TObject);

var

zc: TzhEd;

begin

zc:= TzhEd.Create(Application);

zc.prepodID:= prepodID;

zc.start;

end;

//отображение экранной формы подсчета итоговой оценки учащегося

procedure TMainForm.N35Click(Sender: TObject);

var

kc: TForm1;

begin

kc:= TForm1.Create(Application);

kc.prepodID:= prepodID;

kc.start;

end;

//Справочник полов

procedure TMainForm.N4Click(Sender: TObject);

begin

ShowSpr('POL','KOD_POL','POL','Справочник полов','Пол');

end;

//Справочник видов дисциплин

procedure TMainForm.N5Click(Sender: TObject);

begin

ShowSpr('VID_DISCIPLINI','KOD_DISCIPLINI','VID_DISCIPLINI','Справочник видов дисциплин','Дисциплина');

end;

//Справочник документов

procedure TMainForm.N6Click(Sender: TObject);

begin

ShowSpr('DOCUMENT','KOD_DOCUMENTA','DOCUMENT','Справочник документов','Документ');

end;

//Справочник форм обучения

procedure TMainForm.N8Click(Sender: TObject);

begin

ShowSpr('FO','KOD_FO','FO','Справочник форм обучения','Форма обучения');

end;

//Отображение списка деканатов

procedure TMainForm.N9Click(Sender: TObject);

var

sp: Tsprav;

begin

sp:= Tsprav.Create(Application);

sp.DBGrid1.Columns.Add;

sp.DBGrid1.Columns.Add;

sp.DBGrid1.Columns.Items[0].FieldName:= 'KOD_DEKANATA';

sp.DBGrid1.Columns.Items[0].Title.Caption:= 'Код';

sp.DBGrid1.Columns.Items[1].FieldName:= 'NAIMENOVANIE';

sp.DBGrid1.Columns.Items[1].Title.Caption:= 'Деканат';

sp.DBGrid1.Columns.Items[2].FieldName:= 'FIO_DEKANA';

sp.DBGrid1.Columns.Items[2].Title.Caption:= 'ФИО Декана';

sp.DBGrid1.Columns.Items[3].FieldName:= 'TELEPHON';

sp.DBGrid1.Columns.Items[3].Title.Caption:= 'Телефон';

sp.Caption:= 'Список Деканатов';

sp.dekTable.Active:= true;

sp.DBGrid1.DataSource:= sp.deks;

sp.DBNavigator1.DataSource:= sp.deks;

end;

//создание формы редактирования коэффициентов успеваемости по видам работ

procedure TMainForm.dfgdf1Click(Sender: TObject);

var

kc: TkoefEd;

begin

kc:= TkoefEd.Create(Application);

kc.prepodID:= prepodID;

kc.start;

end;

//общая функция просмотра справочников

procedure TMainForm.showSpr(name: string; field1: string; field2: string; name1: string; name2: string);

var

sp: Tsprav;

begin

sp:= Tsprav.Create(Application);

sp.DBGrid1.Columns.Items[0].FieldName:= field1;

sp.DBGrid1.Columns.Items[1].FieldName:= field2;

sp.Caption:= name1;

sp.DBGrid1.Columns.Items[1].Title.Caption:= name2;

sp.SprTable.Active:= false;

sp.SprTable.TableName:= name;

sp.SprTable.Active:= true;

end;

end.

Листинг формы авторизации

procedure TPass_Form.Button2Click(Sender: TObject);

begin

//ввод параметров сервера БД

Main.db.Params.Add('user_name=' + username_ed.Text);

Main.db.Params.Add('password=' + pass_ed.Text);

Main.db.Params.Add('lc_ctype=WIN1251');

Main.db.DatabaseName:= Edit1.Text + ':' + Edit2.Text;

//соединение с БД и перехват исключений

try

if Main.db.TestConnected then

Main.db.Close;

Main.db.Open;

except

on E: EIBError do

begin

if E.IBErrorCode = 335544472 then

Application.MessageBox('Имя пользователя или пароль не верны. Попробуйте еще раз.', 'Ошибка входа в систему.')

else if E.IBErrorCode = 335544344 then

Application.MessageBox('Указанная БД не найдена', 'Ошибка ввода/вывода')

else

Application.MessageBox('Неопознанная ошибка. Возможно не верно указан адрес сервера', 'Ошибка');

end;

end;

//получение всех сведений о текущем пользователе

if Main.db.TestConnected then

begin

Main.Transaction.Active:= true;

sql.SQL.Clear;

sql.SQL.Add('SELECT KOD_USER, KOD_FIO, KOD_ROLI FROM USERS WHERE USERNAME = '''+username_ed.Text+'''');

// sql.SQL.Add('SELECT KOD_USER, FIO FROM USERS WHERE USERNAME = ''' + username_ed.Text + '''');

sql.ExecQuery;

Main.CurrentUser:= username_ed.Text;

Main.CurrentUserID:= sql.Fields[0].AsString;

//проверка роли пользователя для дальнейшего разграничения прав доступа

if sql.Fields[2].AsInteger = 0 then

begin

Main.StatusBar.Panels[1].Text:= 'С системой работает: Администратор ' + fio;

end

else if sql.Fields[2].AsInteger = 1 then

begin

Main.StatusBar.Panels[1].Text:= 'С системой работает: Декан ' + fio;

end

else if sql.Fields[2].AsInteger = 2 then

begin

Main.StatusBar.Panels[1].Text:= 'С системой работает: Секретарь ' + fio;

end

else if sql.Fields[2].AsInteger = 3 then

begin

Main.prepodID:= sql.Fields[1].AsString;

sql.Close;

sql.SQL.Clear;

sql.SQL.Add('SELECT FAMILIA, NAME, OTCHESTVO FROM PREPOD WHERE KOD_PREPOD = ''' + sql.Fields[1].AsString + '''');

sql.ExecQuery;

Main.StatusBar.Panels[1].Text:= 'С системой работает: ' +sql.Fields[0].AsString+ ' ' +sql.Fields[1].AsString+ ' ' +sql.Fields[2].AsString;

end

else if sql.Fields[2].AsInteger = 4 then

begin

ShowMessage(`Вы не можете начать работу с системой! Используйте web-приложение.');

end;

Main.Enabled:= true;

Close;

end;

end;

Листинг формы отображения справочников

//активация компонентов на связь с БД и отображения данных на //просмотр/редактирование

procedure Tsprav.Button1Click(Sender: TObject);

var

//переменные классов форм

uc: TstEd;

gc: TgrEd;

pc: TprEd;

fc: TfkEd;

kc: TkfEd;

upsc: TupsEd;

begin

//отображение данных записи учащегося

if uTable.Active then

begin

DbGrid1.DataSource.DataSet.Append;

uc:= TstEd.Create(Application);

uc.polt.Active:= true;

uc.priznakt.Active:= true;

uc.grupat.Active:= true;

uc.documentt.Active:= true;

uc.tip_zavedt.Active:= true;

uc.naciat.Active:= true;

uc.sem_pologt.Active:= true;

DbGrid1.DataSource.DataSet.FieldByName('DATA_VVODA').Value:= DateToStr(Date);

DbGrid1.DataSource.DataSet.FieldByName('KTO_VVEL').Value:= '0';

end

//отображение данных записи групп

else if grupTable.Active then

begin

gds.DataSet.Append;

gc:=TgrEd.Create(Application);

gc.fot.Active:= true;

gc.fakt.Active:= true;

gc.spect.Active:= true;

gds.DataSet.FieldByName('DATA_VVODA').Value:= DateToStr(Date);

gds.DataSet.FieldByName('KTO_VVEL').Value:= '0';

end

//отображение данных записи преподавателя

else if prepTable.Active then

begin

DbGrid1.DataSource.DataSet.Append;

pc:= TprEd.Create(Application);

pc.stept.Active:= true;

pc.zvant.Active:= true;

pc.kaft.Active:= true;

DbGrid1.DataSource.DataSet.FieldByName('DATA_VVODA').Value:= DateToStr(Date);

DbGrid1.DataSource.DataSet.FieldByName('KTO_VVEL').Value:= '0';

end

//отображение данных записи факультета

else if fakTable.Active then

begin

DbGrid1.DataSource.DataSet.Append;

fc:= TfkEd.Create(Application);

fc.dekt.Active:= true;

end

else if kafTable.Active then

begin

DbGrid1.DataSource.DataSet.Append;

kc:= TkfEd.Create(Application);

kc.dekt.Active:= true;

end

//отображение данных записи УПС

else if upsTable.Active then

begin

upsDS.DataSet.Append;

upsc:= TupsEd.Create(Application);

upsc.discT.Active:= true;

upsc.prepodT.Active:= true;

upsc.rabotT.Active:= true;

end;

end;

//процедура добавления новых записей сводных таблиц БД

procedure Tsprav.Button2Click(Sender: TObject);

var

uc: TstEd;

gc: TgrEd;

pc: TprEd;

fc: TfkEd;

kc: TkfEd;

upsc: TupsEd;

begin

//добавление записи учащихся

if uTable.Active then

begin

uc:= TstEd.Create(Application);

uc.polt.Active:= true;

uc.priznakt.Active:= true;

uc.grupat.Active:= true;

uc.documentt.Active:= true;

uc.tip_zavedt.Active:= true;

uc.naciat.Active:= true;

uc.sem_pologt.Active:= true;

end

//добавление записи группы

else if grupTable.Active then

begin

gc:= TgrEd.Create(Application);

gc.fot.Active:= true;

gc.fakt.Active:= true;

gc.spect.Active:= true;

end

//добавление записи преподавателя

else if prepTable.Active then

begin

pc:= TprEd.Create(Application);

pc.stept.Active:= true;

pc.zvant.Active:= true;

pc.kaft.Active:= true;

end

//добавление записи факультетов

else if fakTable.Active then

begin

fc:= TfkEd.Create(Application);

fc.dekt.Active:= true;

end

//добавление записи кафедры

else if kafTable.Active then

begin

kc:= TkfEd.Create(Application);

kc.dekt.Active:= true;

end

//добавление записи УПС

else if upsTable.Active then

begin

upsc:= TupsEd.Create(Application);

upsc.discT.Active:= true;

upsc.prepodT.Active:= true;

upsc.rabotT.Active:= true;

end;

end;

//управление геометрией формы при изменении ее размеров

procedure Tsprav.FormResize(Sender: TObject);

begin

DbGrid1.Width:= Width - 24;

DbGrid1.Height:= Height - 81;

DBNavigator1.Top:= Height - 67;

studP.Top:= Height - 75;

studP.Width:= Width - 24;

Button4.Left:= studP.Width - 81;

end;

end.

Листинг просмотра/редактирования журнала

public

{ Public declarations }

prepodID: string;

kod_ups: string;

procedure start;

procedure get_data;

end;

var

zhEd: TzhEd;

procedure TzhEd.Button1Click(Sender: TObject);

var

sql: string;

begin

//перехват ошибок при выставлении оценок

if (studED.Text = '') or (studOC.Text = '') then

begin

ShowMessage('Не выбран учащийся или не введена оценка'+#13#10+'Заполните все поля и повторите попытку');

Exit;

end;

sql:= 'select KOD_UCHASHEGOSYA from UCHASHIESYA where FAMILIA = ''' + studEd.Text + '''';

tmpQ.SQL.Add(sql);

tmpQ.ExecQuery;

//занесение записи о новой оценке

sql:= 'insert into ocenka(KOD_OCENKI,KOD_UPS,KOD_UCHASHEGOSYA,OCENKA,DATA_OCENKI) values ((select max(KOD_OCENKI) from ocenka)+1,''' + kod_ups + ''',''' + tmpQ.Fields[0].AsString + ''',''' + studOC.Text + ''',''' + DateToStr(Date) + ''')';

zQ.SQL.Add(sql);

zQ.ExecQuery;

zQ.SQL.Clear;

zQ.Close;

tmpQ.SQL.Clear;

tmpQ.Close;

//обновление таблицы экранной формы

get_data;

end;

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

procedure TzhEd.dbgCellClick(Column: TColumn);

begin

studED.Text:= dbg.DataSource.DataSet.Fields[0].AsString;

button1.Enabled:= true;

end;

//фиксация выбранной дисциплины и поиск по УПС

procedure TzhEd.discCBChange(Sender: TObject);

var

sql: string;

begin

grCB.Enabled:= false;

sql:= 'select RABOTA from VID_RABOT where KOD_RABOTY = (select distinct KOD_VID_RABOT from UPS where KOD_PREPOD = '''+ prepodID +''' and GRUPPA = ''' + grCB.Items[grCB.ItemIndex] + ''' and KOD_VID_RABOT = VID_RABOT.kod_raboty)';

zQ.SQL.Add(sql);

zQ.ExecQuery;

vidCB.Enabled:= true;

vidCB.Items.Clear;

if zQ.Fields[0].AsString = '' then

ShowMessage('Ошибка БД, обратитесь к администратору');

while not zQ.Eof do

begin

vidCB.Items.Add(zQ.Fields[0].AsString);

zQ.Next;

end;

zQ.SQL.Clear;

zQ.Close;

end;

//фиксация выбранной группы и поиск по УПС

procedure TzhEd.grCBChange(Sender: TObject);

var

sql: string;

begin

sql:= 'select VID_DISCIPLINI from VID_DISCIPLINI where KOD_DISCIPLINI = (select distinct KOD_DISCIPLINI from UPS where KOD_PREPOD = ''' + prepodID + '''' + ' and GRUPPA = ''' + grCB.Items[grCB.ItemIndex] + ''')';

zQ.SQL.Add(sql);

zQ.ExecQuery;

discCB.Enabled:= true;

discCB.Items.Clear;

if zQ.Fields[0].AsString = '' then

ShowMessage('Ошибка БД, обратитесь к администратору');

while not zQ.Eof do

begin

discCB.Items.Add(zQ.Fields[0].AsString);

zQ.Next;

end;

zQ.SQL.Clear;

zQ.Close;

end;

//определение записей УПС по текущему преподавателю

procedure TzhEd.start;

begin

zQ.SQL.Add('select distinct gruppa from ups where kod_prepod = ''' + prepodID + '''');

zQ.ExecQuery;

grCB.Items.Clear;

if zQ.Fields[0].AsString = '' then

ShowMessage('У вас нет текущих записей в Учебном плане семестра');

while not zQ.Eof do

begin

grCB.Items.Add(zQ.Fields[0].AsString);

zQ.Next;

end;

zQ.SQL.Clear;

zQ.Close;

end;

//перехват выбора вида работ и выборка из УПС

procedure TzhEd.vidCBChange(Sender: TObject);

var

sql: string;

begin

discCB.Enabled:= false;

sql:= 'select KOD_UPS from UPS where GRUPPA = ''' + grCB.Items[grCB.ItemIndex] + ''' and KOD_DISCIPLINI = ''' + IntToStr(discCB.ItemIndex) + ''' and KOD_PREPOD = ''' + prepodID + ''' and KOD_VID_RABOT = ''' + IntToStr(vidCB.ItemIndex) + '''';

zQ.SQL.Add(sql);

zQ.ExecQuery;

kod_ups:= zQ.Fields[0].AsString;

zQ.SQL.Clear;

zQ.Close;

get_data;

button1.Enabled:= true;

end;

//формирование и отображение данных об оценках в табличном виде

procedure TzhEd.get_data;

var

sql: string;

sqltmp: string;

tmp: string;

begin

sqltmp:= 'select distinct data_ocenki from ocenka where kod_ups = ''' + kod_ups + '''';

tmpQ.SQL.Add(sqltmp);

tmpQ.ExecQuery;

sql:= 'select distinct FAMILIA as "Фамилия", NAME as "Имя", OTCHESTVO as "Отчество"';

while not tmpQ.Eof do

begin

tmp:=', (select ocenka from ocenka where ocenka.kod_uchashegosya = uchashiesya.kod_uchashegosya and ocenka.kod_ups = ''' + kod_ups + ''' and ocenka.data_ocenki = ''' + tmpQ.Fields[0].AsString + ''') as "' + tmpQ.Fields[0].AsString + '"';

sql:= sql + tmp;

tmpQ.Next;

end;

tmpQ.SQL.Clear;

tmpQ.Close;

sqltmp:= 'select KOD_GRUP from SPISOK_GRUP where NOMER_GRUP = ''' + grCB.Items[grCB.ItemIndex] + '''';

tmpQ.SQL.Add(sqltmp);

tmpQ.ExecQuery;

sql:= sql + ' from UCHASHIESYA where KOD_GRUPPA = ''' + tmpQ.Fields[0].AsString + '''';

if upsDS.Active then

begin

upsDS.Active:= false;

upsDS.SelectSQL.Clear;

upsDS.Close;

end;

upsDS.SelectSQL.Add(sql);

upsDS.Active:= true;

tmpQ.SQL.Clear;

tmpQ.Close;

end;

end.

Листинг формы отображения итоговых оценок учащихся

public

{ Public declarations }

prepodID: string;

procedure funk;

procedure start;

end;

//перехват, фиксация выбора дисциплины и поиск данных по УПС

procedure TForm1.discCBChange(Sender: TObject);

var

sql: string;

begin

grCB.Enabled:= false;

sql:= 'select RABOTA from VID_RABOT where KOD_RABOTY = (select distinct KOD_VID_RABOT from UPS where KOD_PREPOD = '''+ prepodID +''' and GRUPPA = ''' + grCB.Items[grCB.ItemIndex] + ''' and KOD_VID_RABOT = VID_RABOT.kod_raboty)';

zQ.SQL.Add(sql);

zQ.ExecQuery;

if zQ.Fields[0].AsString = '' then

ShowMessage('Ошибка БД, обратитесь к администратору');

while not zQ.Eof do

begin

vidCB.Items.Add(zQ.Fields[0].AsString);

zQ.Next;

end;

zQ.SQL.Clear;

zQ.Close;

funk;

end;

//перехват выбора группы и поиск записей в УПС

procedure TForm1.grCBChange(Sender: TObject);

var

sql: string;

begin

sql:= 'select VID_DISCIPLINI from VID_DISCIPLINI where KOD_DISCIPLINI = (select distinct KOD_DISCIPLINI from UPS where GRUPPA = ''' + grCB.Items[grCB.ItemIndex] + ''')';

zQ.SQL.Add(sql);

zQ.ExecQuery;

discCB.Enabled:= true;

discCB.Items.Clear;

if zQ.Fields[0].AsString = '' then

ShowMessage('Ошибка БД, обратитесь к администратору' + #13#10 + '.');

while not zQ.Eof do

begin

discCB.Items.Add(zQ.Fields[0].AsString);

zQ.Next;

end;

zQ.SQL.Clear;

zQ.Close;

end;

//определение итоговой оценки и вывода ее на форме

procedure TForm1.funk;

var

ms: TStringList;

us: string;

upss: string;

tmps: string;

tmps2: string;

i: real;

j: real;

k: real;

l: real;

m: real;

begin

//выбор всех учащихся по группе

us:= 'select KOD_UCHASHEGOSYA,FAMILIA,NAME,OTCHESTVO from UCHASHIESYA where KOD_GRUPPA = (select distinct KOD_GRUP from SPISOK_GRUP where NOMER_GRUP = '''+ grCB.Items[grCB.ItemIndex] +''')';

uch.SQL.Add(us);

uch.ExecQuery;

//выбор всей информации о группе по УПС

upss:= 'select KOD_UPS from UPS where GRUPPA = '''+ grCB.Items[grCB.ItemIndex] +''' and KOD_DISCIPLINI = (select distinct KOD_DISCIPLINI from VID_DISCIPLINI where VID_DISCIPLINI = '''+discCB.Items[discCB.ItemIndex]+''')';

ups.SQL.Add(upss);

ups.ExecQuery;

while not uch.Eof do

begin

j:=0;

while not ups.Eof do

begin

//выборка всех оценок по учащемуся для определенной записи УПС

tmps:='select ocenka from ocenka where kod_ups = '''+ups.Fields[0].AsString+''' and kod_uchashegosya = '''+uch.Fields[0].AsString+'''';

tmp.SQL.Add(tmps);

tmp.ExecQuery;

i:=0;

k:=0;

m:=0;

while not tmp.Eof do

begin

i:= i+tmp.Fields[0].AsInteger;

k:= k+1;

tmp.Next;

end;

//расчет итоговой оценки по коэффициентам

tmps2:= 'select KOEF from KOEF where KOD_UPS = '''+ups.Fields[0].AsString+'''';

tmp2.SQL.Add(tmps2);

tmp2.ExecQuery;

l:= tmp2.Fields[0].AsDouble;

m:= i/k*l;

j:=j+m;

tmp2.SQL.Clear;

tmp2.Close;

tmp.SQL.Clear;

tmp.Close;

ups.Next;

end;

uch.Next;

end;

end;

//выборка информации по текущему преподавателю из УПС

procedure TForm1.start;

begin

zQ.SQL.Add('select distinct gruppa from ups where kod_prepod = ''' + prepodID + '''');

zQ.ExecQuery;

grCB.Items.Clear;

if zQ.Fields[0].AsString = '' then

ShowMessage('У вас нет текущих записей в Учебном плане семестра');

while not zQ.Eof do

begin

grCB.Items.Add(zQ.Fields[0].AsString);

zQ.Next;

end;

zQ.SQL.Clear;

zQ.Close;

end;

end.

Листинг редактирования коэффициентов расчета итоговой оценки учащихся

//сохранение введенной информации в БД

procedure TkoefEd.Button1Click(Sender: TObject);

begin

if Label14.Caption <> '1' then

begin

ShowMessage('Выставьте коэффициенты с суммой 1');

Exit;

end;

if (SpinEdit1.Enabled) and (SpinEdit1.Value <> 0) then

begin

zQ.SQL.Add('insert into koef(KOD_KOEF, KOEF, KOD_UPS) values ((select max(KOD_KOEF) from koef)+1, '''+IntToStr(SpinEdit1.value)+''',(select distinct KOD_UPS from UPS where GRUPPA = '''+grCB.Items[grCB.ItemIndex]+''' and KOD_DISCIPLINI = '''+IntToStr(discCB.ItemIndex)+''' and KOD_VID_RABOT = ''1''))');

zQ.ExecQuery;

zQ.SQL.Clear;

zQ.Close;

end;

if (SpinEdit2.Enabled) and (SpinEdit2.Value <> 0) then

begin

zQ.SQL.Add('insert into koef(KOD_KOEF, KOEF, KOD_UPS) values ((select max(KOD_KOEF) from koef)+1, '''+IntToStr(SpinEdit2.value)+''',(select distinct KOD_UPS from UPS where GRUPPA = '''+grCB.Items[grCB.ItemIndex]+''' and KOD_DISCIPLINI = '''+IntToStr(discCB.ItemIndex)+''' and KOD_VID_RABOT = ''2''))');

zQ.ExecQuery;

zQ.SQL.Clear;

zQ.Close;

end;

if (SpinEdit3.Enabled) and (SpinEdit3.Value <> 0) then

begin

zQ.SQL.Add('insert into koef(KOD_KOEF, KOEF, KOD_UPS) values ((select max(KOD_KOEF) from koef)+1, '''+IntToStr(SpinEdit3.value)+''',(select distinct KOD_UPS from UPS where GRUPPA = '''+grCB.Items[grCB.ItemIndex]+''' and KOD_DISCIPLINI = '''+IntToStr(discCB.ItemIndex)+''' and KOD_VID_RABOT = ''3''))');

zQ.ExecQuery;

zQ.SQL.Clear;

zQ.Close;

end;

if (SpinEdit4.Enabled) and (SpinEdit4.Value <> 0) then

begin

zQ.SQL.Add('insert into koef(KOD_KOEF, KOEF, KOD_UPS) values ((select max(KOD_KOEF) from koef)+1, '''+IntToStr(SpinEdit4.value)+''',(select distinct KOD_UPS from UPS where GRUPPA = '''+grCB.Items[grCB.ItemIndex]+''' and KOD_DISCIPLINI = '''+IntToStr(discCB.ItemIndex)+''' and KOD_VID_RABOT = ''7''))');

zQ.ExecQuery;

zQ.SQL.Clear;

zQ.Close;

end;

if (SpinEdit5.Enabled) and (SpinEdit5.Value <> 0) then

begin

zQ.SQL.Add('insert into koef(KOD_KOEF, KOEF, KOD_UPS) values ((select max(KOD_KOEF) from koef)+1, '''+IntToStr(SpinEdit5.value)+''',(select distinct KOD_UPS from UPS where GRUPPA = '''+grCB.Items[grCB.ItemIndex]+''' and KOD_DISCIPLINI = '''+IntToStr(discCB.ItemIndex)+''' and KOD_VID_RABOT = ''6''))');

zQ.ExecQuery;

zQ.SQL.Clear;

zQ.Close;

end;

end;

//перехват выбора дисциплины и определение видов работ

procedure TkoefEd.discCBChange(Sender: TObject);

var

sql: string;

t: real;

begin

grCB.Enabled:= false;

sql:= 'select distinct KOD_VID_RABOT from UPS where GRUPPA = ''' + grCB.Items[grCB.ItemIndex] + ''' and KOD_DISCIPLINI = ''' + IntToStr(discCB.ItemIndex) + '''';

zQ.SQL.Add(sql);

zQ.ExecQuery;

if zQ.Fields[0].AsString = '' then

ShowMessage('Ошибка БД, обратитесь к администратору');

t:= 0.2;

while not zQ.Eof do

begin

if zQ.Fields[0].AsString = '1' then

begin

SpinEdit1.Enabled:= true

end

else if zQ.Fields[0].AsString = '2' then

begin

SpinEdit2.Enabled:= true

end

else if zQ.Fields[0].AsString = '3' then

begin

SpinEdit3.Enabled:= true

end

else if zQ.Fields[0].AsString = '7' then

begin

SpinEdit4.Enabled:= true

end

else if zQ.Fields[0].AsString = '6' then

begin

SpinEdit5.Enabled:= true

end;

zQ.Next;

end;

zQ.SQL.Clear;

zQ.Close;

end;

//перехват выбора группы и поиск записей УПС

procedure TkoefEd.grCBChange(Sender: TObject);

var

sql: string;

begin

sql:= 'select VID_DISCIPLINI from VID_DISCIPLINI where KOD_DISCIPLINI = (select distinct KOD_DISCIPLINI from UPS where KOD_PREPOD = ''' + prepodID + '''' + ' and GRUPPA = ''' + grCB.Items[grCB.ItemIndex] + ''')';

zQ.SQL.Add(sql);

zQ.ExecQuery;

discCB.Enabled:= true;

discCB.Items.Clear;

if zQ.Fields[0].AsString = '' then

ShowMessage('Ошибка БД, обратитесь к администратору');

while not zQ.Eof do

begin

discCB.Items.Add(zQ.Fields[0].AsString);

zQ.Next;

end;

zQ.SQL.Clear;

zQ.Close;

end;

//функции контроля сумм по всем коэффициентам

procedure TkoefEd.SpinEdit1Change(Sender: TObject);

var

sum: real;

begin

sum:= (SpinEdit1.Value+SpinEdit2.Value+SpinEdit3.Value+SpinEdit4.Value+SpinEdit5.Value) * 0.1;

//при сумме равной 1 сделать активной кнопку сохранения записи

if sum = 1 then

begin

Label14.Caption:= FloatToStr(sum);

Label14.Font.Color:= clWindowText;

Button1.Enabled:= true;

end

//иначе - сделать не активной кнопку сохранения записи

else if sum <> 1 then

begin

Label14.Caption:= FloatToStr(sum);

Label14.Font.Color:= clRed;

Button1.Enabled:= false;

end;

end;

procedure TkoefEd.SpinEdit2Change(Sender: TObject);

var

sum: real;

begin

sum:= (SpinEdit1.Value+SpinEdit2.Value+SpinEdit3.Value+SpinEdit4.Value+SpinEdit5.Value) * 0.1;

if sum = 1 then

begin

Label14.Caption:= FloatToStr(sum);

Label14.Font.Color:= clWindowText;

Button1.Enabled:= true;

end

else if sum <> 1 then

begin

Label14.Caption:= FloatToStr(sum);

Label14.Font.Color:= clRed;

Button1.Enabled:= false;

end;

end;

procedure TkoefEd.SpinEdit3Change(Sender: TObject);

var

sum: real;

begin

sum:= (SpinEdit1.Value+SpinEdit2.Value+SpinEdit3.Value+SpinEdit4.Value+SpinEdit5.Value) * 0.1;

if sum = 1 then

begin

Label14.Caption:= FloatToStr(sum);

Label14.Font.Color:= clWindowText;

Button1.Enabled:= true;

end

else if sum <> 1 then

begin

Label14.Caption:= FloatToStr(sum);

Label14.Font.Color:= clRed;

Button1.Enabled:= false;

end;

end;

procedure TkoefEd.SpinEdit4Change(Sender: TObject);

var

sum: real;

begin

sum:= (SpinEdit1.Value+SpinEdit2.Value+SpinEdit3.Value+SpinEdit4.Value+SpinEdit5.Value) * 0.1;

if sum = 1 then

begin

Label14.Caption:= FloatToStr(sum);

Label14.Font.Color:= clWindowText;

Button1.Enabled:= true;

end

else if sum <> 1 then

begin

Label14.Caption:= FloatToStr(sum);

Label14.Font.Color:= clRed;

Button1.Enabled:= false;

end;

end;

procedure TkoefEd.SpinEdit5Change(Sender: TObject);

var

sum: real;

begin

sum:= (SpinEdit1.Value+SpinEdit2.Value+SpinEdit3.Value+SpinEdit4.Value+SpinEdit5.Value) * 0.1;

if sum = 1 then

begin

Label14.Caption:= FloatToStr(sum);

Label14.Font.Color:= clWindowText;

Button1.Enabled:= true;

end

else if sum <> 1 then

begin

Label14.Caption:= FloatToStr(sum);

Label14.Font.Color:= clRed;

Button1.Enabled:= false;

end;

end;

//выбор записей УПС по текущему преподавателю

procedure TkoefEd.start;

begin

zQ.SQL.Add('select distinct gruppa from ups where kod_prepod = ''' + prepodID + '''');

zQ.ExecQuery;

grCB.Items.Clear;

if zQ.Fields[0].AsString = '' then

ShowMessage('У вас нет текущих записей в Учебном плане семестра');

while not zQ.Eof do

begin

grCB.Items.Add(zQ.Fields[0].AsString);

zQ.Next;

end;

zQ.SQL.Clear;

zQ.Close;

end;

end.

Листинги web-приложения «Студент: самоконтроль»

Листинг стартовой страницы “index.php”

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<title>Подсистема "АСКУС" - "Студент: самоконтроль";</title>

</head>

<?//определение фреймовой структуры документа?>

<frameset rows="*,60" border="0" frameborder="no" framespacing="0">

<frame name="main" src="login.php">

<frame name="info" src="info.php" >

</frameset>

<noframes>

<body>

Ваш браузер не поддерживает форматирование страницы

</body>

</noframes>

</html>

Листинг страницы авторизации системы “login.php”

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<title>Untitled Document</title>

</head>

<body>

<br/><br/><br/>

<div align="center">

<p class="style1">Вас приветствует клиентская часть системы "АСКУС" - "Студент: самоконтроль"&nbsp;</p>

<p>Для продолжения работы с системой идентифицируйте себя.</p>

</div>

<br/><br/><br/>

<?

//определение глобальных переменных пользователя

global $username;

global $password;

global $sl;

global $db;

if(!empty($sl))

ibase_close($db);

?>

//форма подключения к серверу и передачи управления странице отчетов “ connect.php ”

<form action="connect.php" method="post" name="form1" class="style1" id="form1">

<table width="403" height="97" border="0" align="center">

<tr>

<th height="33" colspan="2" align="center" bgcolor="#0099FF">

Вход в систему </th>

<th width="89" rowspan="4" align="center"><img src="/ASKUS/images/Keys.png" width="70" height="99"></th>

</tr>

<tr>

<td width="156" align="center" bordercolor="#E2E2E2"><label>

<div align="left">Имя пользователя </div>

</label></td>

<td width="144" align="center">

<div align="right">

<input name="username" type="text" id="userfield" />

</div></td>

</tr>

<tr>

<td align="center"><label>

<div align="left">Пароль</div>

</label></td>

<td align="center">

<div align="right">

<input name="password" type="password" id="pas_field" />

</div></td>

</tr>

<tr>

<td colspan="2" align="center"><input name="Submit" type="submit" id="Submit" value="Вход" /> </td>

</tr>

</table>

<input type="hidden" name="sl" value="true">

</form>

</body>

</html>

Листинг модуля подключения к БД и формирования отчетов об успеваемости “connect.php”

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />

<title>Connect</title>

</head>

<body>

<?

//функция подключения к серверу БД

function connect()

{

global $username;

global $password;

global $db;

global $user_id;

global $group;

global $inf;

$host = 'localhost:c:/s.gdb';

$db = ibase_connect($host, $username, $password);

echo ibase_errcode ();

$sql = "SELECT * FROM users WHERE username = '$username'";

$res = ibase_query($db, $sql);

$users = ibase_fetch_row($res);

ibase_free_result($res);

//выборка необходимой информации о текущем пользователе

$sql = "SELECT FAMILIA, NAME, OTCHESTVO, KOD_GRUPPA, (select NOMER_GRUP from SPISOK_GRUP where KOD_GRUP = UCHASHIESYA.KOD_GRUPPA) FROM UCHASHIESYA WHERE KOD_UCHASHEGOSYA = '$users[2]'";

$user_id = $users[2];

$res = ibase_query($db, $sql);

$inf = ibase_fetch_row($res);

$group = $inf[3];

ibase_free_result($res);

?>

<?

}

//функция получения списка дисциплин для текущей группы

function get_disc()

{

global $username;

global $password;

global $db;

global $user_id;

global $group;

global $discCB;

global $PHP_SELF;

//выбор списка дисциплин из УПС

$sql = "select KOD_DISCIPLINI, VID_DISCIPLINI from VID_DISCIPLINI where KOD_DISCIPLINI = (select distinct KOD_DISCIPLINI from UPS where GRUPPA = (select NOMER_GRUP from SPISOK_GRUP where KOD_GRUP = '$group'))";

$res = ibase_query($db, $sql);

?>

//форма выполнения запросов учащимся по дисциплинарной успеваемости

<form target="_self" method="post" action="<? echo $PHP_SELF; ?>">

<div align="center">

<label>Выбирите дисциплину</label>

<select name="discCB">

<?

while ($row = ibase_fetch_row($res))

{

?>

<option value="<? echo $row[0];?>"><? echo $row[1];?></option>

<?

}

?>

</select>

<input type="hidden" name="s" value="true">

<input type="submit" value="Запрос">

</div>

</form>

<?

}

//функция отображения всех оценок учащегося по выбранной дисциплине в виде таблицы

function get_ocenki()

{

global $username;

global $password;

global $db;

global $user_id;

global $group;

global $discCB;

//выборка видов работ

$sql_vid = "select distinct KOD_RABOTY, RABOTA from VID_RABOT where KOD_RABOTY = (select distinct KOD_VID_RABOT from UPS where GRUPPA = (select NOMER_GRUP from SPISOK_GRUP where KOD_GRUP = '$group') and KOD_DISCIPLINI = $discCB and KOD_VID_RABOT = VID_RABOT.kod_raboty)";

$vid = ibase_query($db, $sql_vid);

while ($vid_row = ibase_fetch_row($vid))

{

//Выборка всех оценок по текущему виду работ

$sql = "select DATA_OCENKI, OCENKA from OCENKA where KOD_UCHASHEGOSYA = '$user_id' and KOD_UPS = (select KOD_UPS from UPS where GRUPPA = (select NOMER_GRUP from SPISOK_GRUP where KOD_GRUP = '$group') and KOD_DISCIPLINI = $discCB and KOD_VID_RABOT = '$vid_row[0]')";

$oc = ibase_query($db, $sql);

//формирование отчета в виде таблицы

if($vid_row[0]!= '0')

echo '<div align="center">', $vid_row[1], '</div>';

echo '<table border="1" align="center">';

echo "<tr>";

while ($row = ibase_fetch_row($oc))

{

echo "<th>", $row[0], "</th>";

}

echo "</tr>";

$oc = ibase_query($db, $sql);

echo "<tr>";

while ($row = ibase_fetch_row($oc))

{

echo "<td>", $row[1], "</td>";

}

echo "</tr>";

echo "</table><br/><br/><br/>";

}

}

global $username;

global $password;

global $db;

global $user_id;

global $group;

global $inf;

//вывод дополнительной информации о пользователе

if(empty($s))

connect();

?> <div align="left" class="fio">

С системой работает студент гр.

<? echo $inf[4]?>

<br/>

<? echo $inf[0], " ", $inf[1], " ", $inf[2], " "; ?>

<a href="login.php" target="_self">(Выход)</a>

<br/><br/><br/>

</div>

<?

get_disc();

get_ocenki();

?>

</body>

</html>

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


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

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