Разработка информационной технологии контроля успеваемости подсистемы "Учебный процесс ХТИ – филиала СФУ"
Создание единой информационной сети, позволяющей эффективно хранить, обрабатывать, анализировать и использовать информацию по учету успеваемости студентов. Основные функции и формы созданной информационной системы. Экономическое обоснование проекта.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 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">Вас приветствует клиентская часть системы "АСКУС" - "Студент: самоконтроль" </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
Подобные документы
Методика разработки объектно-ориентированной модели информационной подсистемы необходимой для учета успеваемости студентов факультета, которая спроектирована с помощью программного продукта Rational Rose 2003 и унифицированного языка моделирования UML.
курсовая работа [183,9 K], добавлен 25.06.2011Проектирование эффективно работающей информационной подсистемы, которая значительно упростит работу сотрудников Благовещенского филиала СГА. Подсистемы правового, информационного и технического обеспечения. Назначения сущностям ключевых атрибутов.
дипломная работа [938,3 K], добавлен 28.05.2015Разработка автоматизированной системы по учету студенческих работ и успеваемости студентов Ухтинского технического университета. Методическое обеспечение, информационная база АИС. Архитектура системы, генерация базы данных; пользовательский интерфейс.
дипломная работа [953,3 K], добавлен 23.09.2016Оценка организационной структуры и процесс реализации информационной подсистемы отдела менеджмента предприятия. Требования к информационной подсистеме и техническому обеспечению. Технико-экономическое обоснование разработки информационной подсистемы.
дипломная работа [2,1 M], добавлен 29.06.2011Проблема повышения оперативности учета и контроля посещаемости и успеваемости студентов ЮТИ ТПУ. Разработка информационной системы, требования к ней. Информационное обеспечение задачи, автоматизация предметной области. Описание интерфейса системы.
дипломная работа [2,6 M], добавлен 17.07.2012Характеристика высшего учебного заведения "МФПА", структура подразделений учебной части. Анализ диаграммы дерева узлов, стадии проектирования информационной системы учета успеваемости студентов. Основные особенности построения модели "Как должно быть".
курсовая работа [3,1 M], добавлен 12.04.2012Разработка объектно-ориентированной модели подсистемы "StudentCount" для деканата ВУЗа (автоматизация учета студентов и их успеваемости). Для решения данной задачи использовалось CASE–средство Rational Rose, сгенерирован программный код для языка С++.
курсовая работа [2,4 M], добавлен 28.06.2011Разработка информационной системы анализа успеваемости студентов. Особенности режима просмотра объектов с помощью редактора Visual Basic for Application. Виды диалоговых окон и основных элементов управления. Формирование диаграммы успеваемости группы.
курсовая работа [1,3 M], добавлен 28.11.2008Разработка информационной системы для предметной области с использованием заданных структур данных. Создание и проверка базы данных, которая позволяет вводить информацию, хранить её в файле, осуществлять поиск, модификацию, сортировку и удаление данных.
курсовая работа [240,0 K], добавлен 29.03.2016Построение модели деятельности организации в IDEF0. Описание средств размещения данных в Интернет (форум, e-mail, web-site, хостинг). Выбор инструментальной среды разработки, логическое проектирование, установка и тестирование информационной системы.
дипломная работа [1,9 M], добавлен 13.01.2014