Расчет эксплуатационных затрат и оценка экономической эффективности



 

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

Эксплуатационные затраты рассчитываются по формуле:

 

Зтек = Ззпа+3э+3рем+3м                       (3.16)


где Ззп - затраты на зарплату основную и дополнительную с отчислениями во внебюджетные фонды, руб.;

Са - амортизационные отчисления от стоимости оборудования и устройств системы, руб.;

Зэ - затраты на силовую энергию, руб.;

Зрем - затраты на текущий ремонт оборудования и устройств, руб.;

Зм - затраты на материалы и машинные носители, руб..

Расчет затрат на основную заработную плату приведен в таблице 3.13.

 

Таблица 3.13

Затраты на основную заработную плату сотрудника

Оклад в месяц, руб. Стоимость одного рабочего дня, руб.

Трудоемкость, дни

Сумма, руб.
3200 139,13 Автоматизированный труд 80 11130,43
    Ручной труд 200 27826

 

Тогда с учетом дополнительной заработной платы и отчислений по налогам:

Ззп = 11130,43* 1,6*1,262 = 22474,56 - для автоматизированного труда

Ззп = 34782,5* 1,6*1,262 = 56186,26 руб. - для ручного труда

Сумма амортизационных отчислений рассчитывается следующим образом:

 

                          (3.17)

 

где Сbj - балансовая стоимость j-ого вида оборудования, руб.;

tj - время работы j-ого вида оборудования, час;

Fэф - эффективный фонд времени работы оборудования в год, час;

aj - норма годовых амортизационных отчислений для j-ого вида оборудования, %;

gj - количество единиц оборудования j-ого вида.

Эффективный фонд времени работы оборудования можно вычислить:

 

                                      (3.18)

 

где Др - количество рабочих дней в году (Др = 264 дня);

Нэ - норматив среднесуточной загрузки (Нэ = 8 часов). Таким образом,

Fэф= 264 *8 = 2112 часов.

Рассчитаем амортизационные отчисления по применению оборудования: Для проекта:

g1 = 1

а1 = 16,95;

t1 = 80*8 = 640 часов;

Сb1,= 17750 руб.

Сумма амортизационных отчислений для проекта составит:

Са = 0,01*[(17750*16,95*1*640) / 2112] = 911,7 руб.

Затраты на силовую энергию рассчитываются по формуле:

 

                             (3.19)

 

где Nj - установленная мощность j-го вида технических средств, кВТ;

tj- время работы j-го вида технических средств, час;

gj - коэффициент использования установленной мощности оборудования;

Тэ - тариф на электроэнергию, руб./кВТ*ч.

Таким образом, затраты на силовую энергию для проекта составят:

Зэ = 0,45*640*0,50 = 144 руб.

Затраты на текущий ремонт оборудования рассчитываются по формуле:

                           (3.20)

 

где Сpi - норматив затрат на ремонт (Сpi = 0,05).

Таким образом, затраты на текущий ремонт оборудования для проекта составят:

Зрем = (0,05*17750*640) /2112 = 268,94 руб.

Расчет эксплуатационных затрат для проекта и ручного учета по статьям представлен в табл. 3.14.

 

Таблица 3.14

Расчет эксплуатационных затрат для проекта и аналога

Статьи затрат Автоматизированный труд Ручной труд
Основная и дополнительная зарплата с отчислениями во вне 22474,56 56186,26
Амортизационные отчисления 911,7 0
Затраты на электроэнергию 144 0
Затраты на текущий ремонт 268,94 0
Итого 23799,2 56186,26

 

Таким образом, эксплуатационные затраты составят:

Для проекта Зтек = 23799,2 руб.

Для ручного Зтек = 56186,26 руб.

Расчет показателя экономического эффекта

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

 

Э = (Збкп)*А2                                (3.21)

где Зб, Зп - приведенные затраты на единицу работ, выполняемых с помощью базового и проектируемого вариантов процесса обработки информации, руб.;

Ак -коэффициент эксплуатационно-технической эквивалентности (Ак= 1,29);

А2 - объем работ, выполняемых с помощью разрабатываемого продукта, натуральные единицы (А2 примем = 1).

Приведенные затраты 3i на единицу работ, выполняемых по базовому и разрабатываемому вариантам, рассчитываются по формуле:

 

3i=Ci + Ен*Кi                                       (3.22)

31=23799,2 + 0,33*9928,1 = 27075,47

 

где Ci -текущие эксплуатационные затраты единицы работ, руб.;

Ен -нормативный коэффициент экономической эффективности (Ен = 0,33);

Кi - суммарные затраты, связанные с внедрением нового проекта. Расчет экономического эффекта приведен в табл. 3.15.

 

Таблица 3.15

Расчет экономического эффекта

Данные Автоматизированный труд Ручной труд
Текущие эксплуатационные затраты, руб. 23799,2 (С1) 56186,26 (С2)
Суммарные затраты, связанные с внедрением проекта, руб.  9928,1 (К1) 0 (К2)
Приведенные затраты на единицу работ, руб. 27075,47 (31) 56186,26 (32)
Экономический эффект от использования разрабатываемой системы, руб.

Э = (56186,26*1,29 - 27075,47) *1 = 45404,81

 

После определения годового экономического эффекта необходимо рассчитать срок окупаемости затрат на разработку продукта по формуле:


Ток=К/Э                                       (3.23)

 

где К- единовременные затраты на разработку продукта, руб.;

Э - годовая эффективность, руб.

Срок окупаемости составит:

Ток =9928,1 /45404,81= 0,22 года

Рассчитаем фактический коэффициент экономической эффективности разработки (Еф):

 

Еф = Э/К                   (3.24)

 

Фактический коэффициент экономической эффективности разработки составит:

Еф =45404,81/9928,1 = 4,6

Сопоставим его с нормативным значением коэффициента эффективности капитальных вложений Ен = 0,33:

Так как Еф = 4,6 > Ен, то разработка и внедрение разрабатываемого продукта является эффективным, т.е. эффект от использования данной системы окупает все затраты, связанные с проектированием и эксплуатацией.

 

Таблица 3.19

Сводная таблица экономического обоснования разработки и внедрения проекта

Затраты на разработку проекта, руб. 9928,1
Общие эксплуатационные затраты, руб. 23799,2
Экономический эффект, руб. 45404,81
Коэффициент экономической эффективности 4,6
Срок окупаемости, лет 0,22

 


Вывод. Проделанные расчеты показывают, что внедрение разработанной информационной системы имеет экономическую выгоду для ХТИ. Это наглядно показывает коэффициент экономической эффективности, который равен 4,6 и срок окупаемости, который составит примерно 4 месяца. Что подтверждает эффективность вложения финансовых средств в автоматизацию системы учета успеваемости студентов.


Заключение

 

Проведенные исследования в данной дипломной работе технологии контроля успеваемости подсистемы учебный процесс ХТИ - филиала СФУ учебной деятельности Хакасского технического института, показывают важность внедрения информационной системы для ведения учета успеваемости студентов. Исследование технологии успеваемости студентов, показывает необходимость согласованной работы всех частей подсистемы учебный процесс ХТИ.

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

В качестве практической части разработана автоматизированная система контроля успеваемости студентов. В которой был введен расчет текущей успеваемости студентов, при различных шкалах оценок (5, 12, 100 бальная по желанию преподавателей). Также автоматизирован процесс вывода результатов успеваемости для сотрудников деканата.

Рациональная автоматизация учебной деятельности, проводимая ХТИ, а также документооборота деканатов, проводящих необходимый контроль за успеваемостью студентов и использующие современные технические средства, единую комплексную автоматизированную информационную систему включает в себя автоматизированное журналирование оценок. Своевременная и качественная обработка данных учебного процесса очень важна, поскольку именно на основе данной информации выполняется контроль успеваемости учащихся ХТИ.


Список используемой литературы

 

1. Положение «О Хакасском техническом институте – Филиале Федерального государственного образовательного учреждения высшего профессионального образования «Сибирский федеральный университет»

2. Борри Хелен. Firebird. Руководство разработчика баз данных [Текст]: учебное пособие / Х. Борри. - СПб.: BHV, 2006. 921с.: ил.

3. Глушаков С. В. Программирование в среде Delphi 7.0 [Текст]:учебное пособие / С.В. Глушауов, А.Л. Клевцова - М.: Изд-во Фолио, · 2003. 897с.: ил.

4. Дейтел Х.М. Операционные системы. Распределенные системы, сети, безопасность [Текст]: учебное пособие / Х.М. Дейл, П.Д. Дейл М.: Бином, 2006. 854с.: ил.

5. Климова Л. В. Delphi 7. Основы программирования. Решение типовых задач [Текст]: самоучитель. / Л.В. Климова - М.: КУДИЦ – ОБРАЗ, 2005. 672с.

6. Ковязин А. Н. Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/Firebir/Yaffil [Текст]: учебное пособие / А.Н.Коновязин, С.М. Востриков - М.: Изд-во КУДИЦ – ОБРАЗ, 2003. 654с.: ил.

7. Кэнту М. Delphi 7: для профессионалов [Текст]: учебное пособие / М. Каэнту - СПб.: Питер, 2004. 685с.

8. Олифер В.Г. Сетевые операционные системы [Текст]: учебное пособие / В.Г. Олифер, Н.А. Олифер - СПб.: Изд-во Питер, 2002. 789с.: ил.

9. Сорокин А.В. Delphi. Разработка баз данных [Текст]: учебное пособие / А.В. Сорокин - СПб.: Питер, 2005. 703с.: ил.

10. Таненбаум Э. Современные операционные системы [Текст]: учебное пособие / Э. Таненбаум, СПб.: Питер, 2004. 1040с.: ил.

11. Нестеров В.Л. Оценка успеваемости учащихся и информационные технологии / Нестеров В.Л., Радченко В.И., Салтынская Г.К.// Информатика и образование. – 2005. - №11. - С. 121-123.

12. Delphi 7 Studio. Разработка приложений электронного бизнеса: от проектирования до развертывания [электронный текст, www.interface.ru/borland/delphi7_ds_rus.htm].

13. Критерии выбора СУБД [электронный текст, http://www.citforum.ru/database/articles/criteria.htm].

14. Компания Майкрософт [электронный текст, www.microsoft.com/rus].

15. Хакасский технический институт [электронный текст, www.khti.ru].


Глоссарий

 

Автоматизированная информационная система – совокупность информации, экономико-математических методов, технических, программных, технологических средств и специалистов, предназначенная для обработки информации.

Информационная система – совокупность внутренних и внешних потоков прямой и обратной информационной связи объекта, средств, специалистов, участвующих в процессах обработки информации.

Программное изделие (ПИ) – это программа на носителе данных, являющаяся продуктом промышленного производства.

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

Экономический эффект – результат внедрения какого-либо мероприятия, выраженный в стоимостной форме, в виде экономии от его осуществления.

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

 


Приложение 1

 

Перечень используемых полей в БД

KOD_DEKANATA - код деканата;

NAIMENOVANIE - наименование деканата;

TELEPHON - телефон деканата;

FIO_DEKANA - ФИО декана;

KOD_DOCUMENTA - Код документа предоставленного во время поступления студентом;

DOCUMENT - Наименование документа предоставленного во время поступления студентом;

KOD_FACULTETA - Код факультета

NAIMENOVANIE - Наименование факультета

KOD_DEKANATA - Код деканата

KOD_FO – код формы обучения;

FO – вид формы обучения;

KOD_KAFEDRI - Код кафедры;

KAFEDRA - Наименование кафедры;

KOD_NACII – код национальности студента;

NACIA – национальность студента;

KOD_OCENKI _ код оценки;

KOD_UPS – код учебного плана;

KOD_UCHASHEGOSYA – код учащегося;

OCENKA – оценка;

DATA_OCENKI – дата выставления оценки;

KOD_POL – код пола учащегося;

POL – пол;

KOD_PREPOD -Код преподавателя;

FAMILIA - Фамилия преподавателя;

NAME - Имя преподавателя;

OTCHESTVO - Отчество преподавателя;

KOD_STEPENI - Код ученой степени;

KOD_ZVANIA - Код ученого звания;

DATA_VVODA - Дата ввода записи;

KOD_PRIZNAK - Код признака поступления;

PRIZNAK - Признак поступления учащегося;

KOD_ROLI- Код роли пользователя;

ROL - Роль пользователя в системе;

KOD_SEM_POLOG - Код семейного положения;

SEM_POLOG - Семейное положение;

KOD_SPEC - Код специальности;

SPEC - Наименование специальности;

KOD_GRUP - Код группы;

NOMER_GRUP - Номер группы;

KOD_ZAVEDENIYA - Код типа учебного заведения;

TIP - Тип учебного заведения;

FAMILIA - Фамилия учащегося;

NAME - Имя учащегося;

OTCHESTVO - Отчество учащегося;

DATA_ROJDENIA - Дата рождения;

MESTO_ROJDENIA - Место рождения учащегося:

ADRES - Адрес проживания/прописки;

TELEPHON – Телефон;

SERIA_PASPORTA – серия паспорта;

NOMER_PASPORTA – номер паспорта;

DATA_VIDACHI – дата выдачи паспорта;

KEM_VIDAN- наименование учреждения выдавшего паспорт;

DATA_VNESENIA_LICHNOGO_DELA - Дата внесения личного дела;

NOMER_PRIKAZA_O_ZACHISLENII - Номер приказа о зачислении;

DATA_PRIKAZA –Дата приказа о зачислении;

KOD_STEPENI - Код научной степени;

STEPEN- Название научной степени;

KOD_ZVANIA - Код ученого звания;

ZVANIE – Название ученого звания;

KOD_UPS - Код учебного плана семестра;

SEMESTR - Номер семестра;

GRUPPA - Номер группы;

KOD_DISCIPLINI - Код дисциплины;

KOD_VID_RABOT - Код вида проводимых работ;

KOD_USER – код пользователя;

USERNAME – имя пользователя;

KOD_FIO – код ФИО;

VID_DISCIPLINI - Вид дисциплины;

RABOTA - Вид работы преподавателя.


Приложение 2

 

Блок-схема алгоритма редактирования записей


Приложение 3

 

Листинг родительской оконной формы приложения

 

private

{ Private declarations }

procedure CreateMDIChild(const Name: string);

public

{ Public declarations }

//имя текущего пользователя

CurrentUser: string;

//идентификатор пользователя

CurrentUserID: string;

//идентификатор преподавателя

prepodID: string;

//процедура отображения справочников

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

end;

var

MainForm: TMainForm;

implementation

uses CHILDWIN, about, pass_f, spr, IniFiles, DbGrids, zhur_edit, koef_edit, koef_res_edit;

//процедура закрытия всех компонентов данных при выходе из приложения

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);

begin

db.CloseDataSets;

db.Close;

end;

procedure TMainForm.FormCreate(Sender: TObject);

var

login: TPass_Form;

conf: TIniFile;

begin

//отображение текущей даты в строке состояния

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 height="97" border="0" align="center">

<tr>

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

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

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

</tr>

<tr>

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

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

</label></td>

<td 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


Дата добавления: 2018-09-22; просмотров: 399; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!