Разработка компьютерной программы "Учебная часть РПТ (Рузаевского политехнического техникума)"

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

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

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

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

else if (oc4>0) {t=4;T_=D_.OlePropertyGet("Tables").OleFunction("Item",3);}

else if (oc5>0) {t=5;T_=D_.OlePropertyGet("Tables").OleFunction("Item",2);}

if (t!=0) {

T_.OleFunction("Cell",kol[t]+1,2).OleProcedure("Select");

kol[t]++;

_.OlePropertyGet("Selection").OleProcedure("InsertRowsBelow",(int)kol[t]);

T_.OleFunction("Cell",kol[t]+1,2).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",student->FieldByName("Fio")->AsString.c_str());

T_.OleFunction("Cell",kol[t]+1,1).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",kol[t]);

if (t==2)

{ T_.OleFunction("Cell",kol[t]+1,3).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",pre2.c_str()); } }

student->Next();}

B_.OleProcedure("AppShow");}

catch(EOleException& e){ShowMessage("OleException "+e.Message);}

catch(EOleSysError& e){ShowMessage("OleSyserror "+e.Message);}

catch(Exception& e){ShowMessage("Exception "+e.Message);}

student->Filtered=false;

Label23->Caption=" ";

TabSheet1->Show(); }

На главной форме разместила PageControl, состоящий из вкладок:

студенты - просмотр, добавление, поиск, изменение и удаление студентов, также с этой вкладки можно распечатать успеваемость студента, группы и личную карточку;

личная карточка - сдержит основные сведения о студенте (номер зачетки, ФИО, группу, приказы о зачислении и переводе с курса на курс) и учебно-производственные практики;

оценки по студенту - при помощи компонента DBGrid выставляются оценки по всем предметам для конкретного студента;

оценки по предмету - выставление оценок по конкретному предмету студентам одной группы;

справочники - просмотр, добавление, поиск, изменение и удаление предметов, преподавателей, групп и специальностей соответственно;

часы - позволяет вводить данные об отработанных часах преподавателя.

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

Для того чтобы программа выводила пользователю список по группам, создала фильтр. Его листинг приведен ниже:

{String aaa=((TMenuItem *)Sender)->Caption;

int aa=aaa.Pos("&");

if (aa) aaa.Delete(aa,1);

student->Filter="Gruppa='"+aaa+"'";

student->Filtered=true;

Label23->Caption=aaa;

TabSheet1->Show();}

При выборе в меню подпункта Личная карточка пользователь имеет возможность просмотреть либо добавить данные по студенту.

Для создания надписей (№ зачетки, ФИО, группа, курс, специальность и т.д) выбрала компонент label (надпись) расположенный на вкладке Standard.

Для группы и специальности поместила DBLookupComboBox, компонент представляющий собой комбинированный список значений поля синхронного просмотра для поля, заданного свойством DataFieid, из набора данных DataSource. Его основное назначение -- автоматически устанавливать соответствие между полями двух наборов данных по одинаковому значению заданного поля исходной таблицы и ключевого поля таблицы синхронного просмотра. В списке синхронного просмотра отображаются возможные значения для редактирования поля основной таблицы. По своим функциональным возможностям компонент совпадает с компонентом TDBComboBox.

Для даты рождения и поступления выбрала компонент DataTimePicker с вкладки Win32, по щелчку раскрывающийся календарь в котором пользователю необходимо выбрать требуемую дату.

Для указания пола студента использовала стандартную группу переключателей, состояние которых зависит от значений поля связанного набора данных.

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

Если текущее значение связанного поля соответствует значению какого либо переключателя, то он включается. Если пользователь включает другой переключатель, то связанное с переключателем значение заносится в поле. Возможные значения, на которые должны реагировать переключатели в группе, заносятся в свойство Values при помощи специального редактора в Инспекторе объектов или программно посредством методов класса TStrings. Каждому элементу свойства values соответствует один переключатель представленный на рисунке ___ (М, Ж).

Свойство items содержит список поясняющих надписей для переключателей группы М, Ж. Если для какого-либо переключателя нет заданного значения, но есть поясняющий текст, то такой переключатель включается при совпадении значения связанного поля с поясняющим текстом.

Текущее значение связанного поля содержится в поле value.

Использование переключателя DBRadioGroup исключает возможность появления ошибок.

Рисунок 2.10 - Задание параметра Values компонента DBRadioGroup

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

Компонент может осуществлять проверку редактируемых данных по заданной для поля маске.

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

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

Новая колонка добавляется при помощи кнопки Add New, после этого ее название появляется в списке колонок представленном на рисунке ___. Для выбранной в списке колонки доступные для редактирования свойства появляются в Инспекторе объектов. Колонки в списке можно редактировать, удалять, менять местами. При помощи кнопки Add All Fields в сетку можно добавить все поля набора данных.

Каждая колонка компонента TDBGrid описывается специальным классом Column, а совокупность колонок доступна через свойство columns компонента, оно имеет тип DBGridColumns и представляет собой индексированный список объектов колонок. Поле набора данных связывается с конкретной колонкой при помощи свойства FieidName класса Column. При этом в колонку автоматически переносятся все необходимые параметры поля, в частности заголовок поля, настройки шрифтов, ширина поля. После ручного изменения параметров первоначальные значения восстанавливаются методами соответствующих объектов Column.

Рисунок 2.11 - Редактор колонок компонента DBGrid

Для управления записями таблицы установлен навигатор - DBNavigator связанный с таблицей практика (praktika) через DataSource (dpraktika).

Для настройки свойств компонента DataSource необходимо выполнить следующие действия.

1. Связать набор данных и компонент DataSource. Для этого используется свойство DataSet компонента DataSource, доступное через Инспектор объектов. Это указатель на экземпляр компонента доступа к данным. В списке этого свойства в Инспекторе объектов перечислены все доступные компоненты наборов данных.

2. Переименовать компонент. Это не обязательное действие. Тем не менее желательно присваивать компонентам осмысленные имена, соответствующие названиям связанных наборов данных. Обычно название компонента комбинирует имя набора данных например dstudent, dspecial.

Рисунок 2.12 - Таблица ввода учебной и производственной практики студента.

Для перехода на личную карточку делаем активной вкладку 2: {TabSheet2->Show();}

При нажатии на успеваемость в пункте меню студены открывается страница в верхней части которой отображается Фамилия Имя Отчество студента на компоненте DBText Он представляет собой статический текст, который отображает текущее значение некоторого поля связанного набора данных. При этом данные можно просматривать в режиме "только для чтения".

Ниже расположена таблица DBGrid состоящая из столбцов Наименование предмета и 8 столбцов с оценками за 8 семестров. Установлена связь с таблицей оценка.

Для удобства работы пользователей добавление предмета производится из раскрывающегося списка представленного на рисунке ______.

Перед переходом на вкладку Оценки по студенту для таблицы Ocenka задала связь с таблицей Студенты используя свойства MasterSource (главная таблица) через поле Номер зачетки. Название предмета отображается через Lookup поле n_predmet:

ocenka->Active=false;

ocenkafio_stud->Visible=false;

ocenkafio_stud->FieldKind=fkCalculated;

ocenkan_predmet->FieldKind=fkLookup;

ocenkan_predmet->Visible=true;

ocenka->IndexName="Nom_zach";

ocenka->MasterFields="";

ocenka->MasterSource=dstudent;

ocenka->MasterFields="nom_zach";

ocenka->Active=true;

TabSheet3->Show();}

Для управления данными в таблице установила навигатор, прописав в событиях (Events) команду для OnClick:

{ if (Button==nbInsert)

ocenka->FieldValues["Nom_zach"]=student->FieldValues["Nom_zach"];}

При вводе оценок по ведомости (по предмету) необходимо выбрать предмет и группу (поле преподаватель не отображается). Для этого была создана форма (Form2). В свойствах (Properties) установила:

Рисунок 2.13 - Ввод оценок по студенту

BorderStyle = bsDialog;

Position = poScreenCenter.

На форме разместила кнопки ОК и Отмену используя компонент BitBtn. Для выбора группы и предмета размещен компонент DBLookupComboBox. Форма представлена рисунке 2.14.

Рисунок 2.14 - Форма выбора параметров.

При нажатии в меню на Справочники страница становится активной {TabSheet5->Show();}

Содержит четыре таблицы со своими навигаторами для управления:

- предметы

- преподаватели

- группы

- специальности.

Для каждой таблицы установлены соответствующие связи в свойствах (Properties): dpredmet, dprepod, dgruppa, dspecial.

Рисунок 2.15 - Справочники открытые в программе C++ Builder.

Мой проект в C++ Builder состоит из шести форм. Форма -- это всего лишь окно приложения на этапе разработки. Каждую форму описывают два файла -- файл формы, описывающий свойства формы и размещенных на ней компонентов, и модуль, содержащий описание экземпляра класса формы и исходный код.

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

Для создания новой формы проекта выбрала команду New Form из меню File. Форма, на которой находится компонент, становится его владельцем.

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

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

В зависимости от настроек свойств, формы в проекте могут играть разные роли. Форма может быть главной формой проекта - Form1 (Студенты). Для этого форма в файле проекта создавалась первой. В этом случае она автоматически появляется при запуске приложения, а ее закрытие приводит к завершению работы всей программы.

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

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

Для формирования и распечатывания ведомостей, личной карточки студента, в Microsoft Word было создано 7 шаблонов [Приложение А].

Для каждого документа были введены соответствующие коды полей:

Таблица 2.1 - Переменные шаблона Microsoft Word.

Наименование документа

Название поля

Код поля

Зачетная ведомость и Экзаменационная ведомость

предмет

{DOCVARIABLE Predmet \* MERGEFORMAT}

курс

{DOCVARIABLE Nom_kurs \* MERGEFORMAT}

группа

{DOCVARIABLE Nom_gr \* MERGEFORMAT}

специальность

{DOCVARIABLE Spec \* MERGEFORMAT}

экзаменатор

{DOCVARIABLE Prepod \* MERGEFORMAT}

Сводная ведомость

курс

{DOCVARIABLE Nom_kurs \* MERGEFORMAT}

группа

{DOCVARIABLE Nom_gr \* MERGEFORMAT}

семестр

{DOCVARIABLE Sem \* MERGEFORMAT}

Учебный год

{DOCVARIABLE Uch_god \* MERGEFORMAT}

Ведомость учета часов учебной работы преподавателя

группа

{DOCVARIABLE Nom_gr \* MERGEFORMAT}

Месяц

{DOCVARIABLE Mes \* MERGEFORMAT}

Учебный год

{DOCVARIABLE Uch_god \* MERGEFORMAT}

Сводная ведомость учета часов учебной работы преподавателя

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

{DOCVARIABLE Fio \* MERGEFORMAT}

наименование предмета

{DOCVARIABLE Predmet \* MERGEFORMAT}

Отчет по успеваемости группы

курс

{DOCVARIABLE Nom_kurs \* MERGEFORMAT}

группа

{DOCVARIABLE Nom_gr \* MERGEFORMAT}

семестр

{DOCVARIABLE Sem \* MERGEFORMAT}

Учебный год

{DOCVARIABLE Uch_god \* MERGEFORMAT}

Личная карточка

ФИО студента

{DOCVARIABLE Fio \* MERGEFORMAT}

Курс зачисления

{DOCVARIABLE Kurs_post \* MERGEFORMAT}

группа

{DOCVARIABLE Nom_gr \* MERGEFORMAT}

специальность

{DOCVARIABLE Spec \* MERGEFORMAT}

Дата поступления

{DOCVARIABLE Data_post \* MERGEFORMAT}

Пол

{DOCVARIABLE Pol \* MERGEFORMAT}

Число, месяц и год рождения

{DOCVARIABLE Data_rozd \* MERGEFORMAT}

Место рождения

{DOCVARIABLE Mest_rozd \* MERGEFORMAT}

Адрес родителей

{DOCVARIABLE Adr_pod \* MERGEFORMAT}

Национальность

{DOCVARIABLE nacional \* MERGEFORMAT}

Приказ о зачислении

{DOCVARIABLE Prik_zach \* MERGEFORMAT}

Приказ о переводе на 2 курс

{DOCVARIABLE Prik2 \* MERGEFORMAT}

Приказ о переводе на 3 курс

{DOCVARIABLE Prik3 \* MERGEFORMAT}

Приказ о переводе на 4 курс

{DOCVARIABLE Prik4 \* MERGEFORMAT}

При нажатии на сводную ведомость появляется окно (Form3) представленная на рисунке 2.16.

Рисунок 2.16 - Форма для заполнения сводной ведомости.

Пользователю необходимо выбрать группу и семестр, программа формирует сводную ведомость, которая передается в Word: if(Form3->ShowModal()!=mrOk) return;

Результат помещаю в переменную типа Variant, чтобы можно было впоследствии управлять этим документом.

Variant A_,B_,T_,D_,V_;

char gg[6],sp[3];

int kurs, sem, i,pre[20],kach[20],kol[20],kols=0;

for (i=0;i<20;i++) {pre[i]=0; kach[i]=0; kol[i]=0;}

String oo;

try{

A_ = CreateOleObject("Word.Application");

B_=A_.OlePropertyGet("WordBasic");

B_.OleProcedure("FileNew", (ExtractFilePath(ParamStr(0))+"Svod.dot").c_str());

D_=A_.OlePropertyGet("ActiveDocument");

V_=D_.OlePropertyGet("Variables");

strcpy(gg,Form3->DBLookupComboBox1->Text.c_str());

if (gg[1]=='-') {sp[0]=gg[0];sp[1]=0; kurs=gg[2]-48;}

else {sp[0]=gg[0];sp[1]=gg[1];sp[2]=0; kurs=gg[3]-48;}

sem=(kurs-1)*2+(Form3->RadioButton1->Checked?1:2);

V_.OleProcedure("Add", "Nom_kurs", kurs);

V_.OleProcedure("Add", "Nom_gr", (Form3->DBLookupComboBox1->Text) .c_str());

V_.OleProcedure("Add", "Sem", Form3->RadioButton1->Checked?1:2);

V_.OleProcedure("Add", "Uch_god", ((String)uch_god+"-"+(String)(uch_god+1)).c_str());

D_.OlePropertyGet("Fields").OleProcedure("Update");

B_.OleProcedure("AppShow");

//student->Filter="Spec='"+(String)sp+"' AND Nom_kurs="+(String)kurs+" AND Nom_gr="+(String)gr;

student->Filter="Gruppa='"+Form3->DBLookupComboBox1->Text+"'";

student->Filtered=true;

Label23->Caption=Form3->DBLookupComboBox1->Text;

ocenka->Active=false;

ocenkafio_stud->Visible=false;

ocenkafio_stud->FieldKind=fkCalculated;

ocenkan_predmet->FieldKind=fkLookup;

ocenkan_predmet->Visible=true;

ocenka->IndexName="Nom_zach";

ocenka->MasterFields="";

ocenka->MasterSource=dstudent;

ocenka->MasterFields="nom_zach";

ocenka->Active=true;

T_=D_.OlePropertyGet("Tables").OleFunction("Item",2);

student->First();

char sss[20];

int l=3;

while(!student->Eof)

Прописала команду для заполнения столбца ФИО из базы данных таблицы Student (Студенты).

{ T_.OleFunction("Cell",l,2).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",student->FieldByName("Fio")->AsString.c_str());

ocenka->First();

char oc[]="Oc0";

oc[2]=sem+48;

while(!ocenka->Eof)

Расставляем оценки в зависимости от ФИО студента и предмета в 19 столбцов ведомости.

{if (ocenka->FieldByName(oc)->IsNull) {ocenka->Next();continue;}

for (i=0;i<19;i++) if (pre[i]==0 || pre[i]==ocenka->FieldByName("predmet")->AsInteger) break;

if (i>=19) {ocenka->Next();continue;}

if (pre[i]==0)

{pre[i]=ocenka->FieldByName("predmet")->AsInteger;

T_.OleFunction("Cell",2,3+i).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",ocenka->FieldByName("n_predmet")->AsString.c_str()); }

oo=ocenka->FieldByName(oc)->AsString;

if (oo[1]=='5' || oo[1]=='4' || oo[1]=='з') kach[i]++;

if (oo[1]=='5' || oo[1]=='4' || oo[1]=='3' || oo[1]=='з') kol[i]++;

T_.OleFunction("Cell",l,3+i).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",oo.c_str());

ocenka->Next();}

l++;

kols++;

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

if(l>38) break;

student->Next();}

for (i=0;i<19;i++)

{ if (pre[i]==0) break;

Подсчитываем качественный и количественный проценты, занося результат ячейки таблицы.

T_.OleFunction("Cell",38,3+i).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",kach[i]*100/kols);

T_.OleFunction("Cell",39,3+i).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",kol[i]*100/kols);}

B_.OleProcedure("AppShow");}

catch(EOleException& e){ShowMessage("OleException "+e.Message);}

catch(EOleSysError& e){ShowMessage("OleSyserror "+e.Message);}

catch(Exception& e){ShowMessage("Exception "+e.Message);}

student->Filtered=false;

Label23->Caption=" ";

TabSheet1->Show();}

Для зачетной ведомости аналогичным образом происходит передача данных из базы в документ Microsoft Word. При выборе в меню Зачетной ведомости открывается форма представленная на рисунке___, при выборе полей из раскрывающихся списков группа, предмет и преподаватель автоматически создается документ на основе шаблона zach. Происходит заполнение прописанных кодов-полей отписанных в таблице 2.1.

Рисунок 2.17 - Форма выбора данных для заполнения зачетной и экзаменационной ведомостей.

Задаем условие, если пользователь нажимает кнопку ОК, выполняется алгоритм:

{Form2->Label2->Visible=true;

Form2->DBLookupComboBox3->Visible=true;

if(Form2->ShowModal()!=mrOk) return;

Variant A_,B_,T_,D_,V_;

char gg[6],sp[3];

int kurs;

wchar_t www[100];

try{

A_ = CreateOleObject("Word.Application");

B_=A_.OlePropertyGet("WordBasic");

B_.OleProcedure("FileNew", (ExtractFilePath(ParamStr(0))+(Sender==N3?"Ekzam_ved.dot":"Zach.dot")).c_str());

D_=A_.OlePropertyGet("ActiveDocument");

V_=D_.OlePropertyGet("Variables");

V_.OleProcedure("Add", "Predmet", Form2->DBLookupComboBox2->Text.c_str());

strcpy(gg,Form2->DBLookupComboBox1->Text.c_str());

if (gg[1]=='-') {sp[0]=gg[0];sp[1]=0; kurs=gg[2]-48;}

else {sp[0]=gg[0];sp[1]=gg[1];sp[2]=0; kurs=gg[3]-48;}

V_.OleProcedure("Add", "Nom_kurs", kurs);

V_.OleProcedure("Add", "Nom_gr", (Form2->DBLookupComboBox1->Text) .c_str());

V_.OleProcedure("Add", "Spec", ((String)special->Lookup("Buk_spec",sp,"Naz_spec") +" ").c_str());

V_.OleProcedure("Add", "Prepod", (Form2->DBLookupComboBox3->Text +" ").c_str());

D_.OlePropertyGet("Fields").OleProcedure("Update");

B_.OleProcedure("AppShow");

Прописала фильтр по группе, которая была выбрана на форме (Form2)

student->Filter="Gruppa='"+Form2->DBLookupComboBox1->Text+"'";

Label23->Caption=Form2->DBLookupComboBox1->Text;

student->Filtered=true;

T_=D_.OlePropertyGet("Tables").OleFunction("Item",2);

student->First();

char sss[20];

int l=2,i;

while(!student->Eof)

Заполнение в таблице столбцов номер по порядку и фамилия, имя, отчество учащегося.

{ T_.OleFunction("Cell",l,1).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",itoa(l-1,sss,10));

T_.OleFunction("Cell",l,3).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",student->FieldByName("Fio")->AsString.c_str());

l++;

if(l>50) break;

student->Next();}

B_.OleProcedure("AppShow");}

Обработка возможной ошибки, которая может возникнуть при взаимодействии с MsWord.

catch(EOleException& e){ShowMessage("OleException "+e.Message);}

catch(EOleSysError& e){ShowMessage("OleSyserror "+e.Message);}

catch(Exception& e){ShowMessage("Exception "+e.Message);}

student->Filtered=false;

Label23->Caption=" ";

TabSheet1->Show();}

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

Набор данных Query связывается с компонентом UpdateSQL через свое свойство UpdateObject типа TDataSetUpdateObject, В качестве значения которого выбирается имя компонента UpdateSQL. Кроме того, для набора данных Query нужно установить значение true свойствам CachedUpdates и RequestLive.

Роль компонента UpdateSQL заключается в выполнении SQL-запросов, обновляющих необходимые записи связанного с ним набора данных Query

Этот компонент позволяет хранить и выполнять три разных запроса:

- update (редактирование записей);

- insert (вставка записей);

- delete (удаление записей).

Указанные запросы содержатся в свойствах ModifySQL, insertsql и DeleteSQL типа Tstrings соответственно. Таким образом, компонент UpdateSQL частично совмещает функциональность сразу трех компонентов Query.

Ввести тексты соответствующих запросов компонента UpdateSQL можно вручную аналогично тому, как это выполняется для свойства sql компонента Query. На этапе разработки приложения удобно использовать для этих целей Редактор свойств компонента UpdateSQL, окно которого показано на рисунке 2.18. Редактор свойств вызывается командой UpdateSQL Editor контекстного меню компонента или двойным щелчком на компоненте UpdateSQL.

В названии окна выводятся имена компонента UpdateSQL и соответствующего набора данных Query.

Редактор содержит две вкладки, первоначально выбрана вкладка параметров Options. В списке Table Name выбирается таблица, для записей которой включен механизм кэшированных изменений. Список содержит имена таблиц, указанных в запросе набора данных Query.

После выбора таблицы в списках ключевых (Key Fields) и обновляемых полей (Update Fields) отображается перечень ее столбцов. В первом списке нужно выделить столбцы, входящие в состав индекса и используемые при доступе к данным, а во втором -- столбцы, значения которых будут обновляться.

Рисунок 2.18 - Редактирование свойств компонента UpdateSQL.

Запросы компонента UpdateSQL можно выполнить либо через вызов методов Компонента Database, либо через метод самого компонента UpdateSQL.

При подтверждении кэшированных изменений методом ApplyUpdates компонента Database для указанных наборов данных Query автоматически отрабатываются запросы соответствующего компонента updateSQL. Эти запросы и выполняют сохранение кэшированных изменений "своего" набора.

Набор данных Query связан с компонентами Database и UpdateSQL через свои свойства DatabaseName и UpdateObject соответственно.

Система C++ Builder автоматически учитывает все указанные в SQL- запросе параметры в специальном списке параметров, являющемся для набора данных Query значением свойства Params типа TParams, представляющим собой массив. Это свойство позволяет получить доступ к каждому параметру, как при разработке, так и при выполнении приложения.

Рисунок 2.19 - SQL-запросы компонента updateSQL.

Чтобы обратиться к параметру во время выполнения приложения, следует указать его номер (индекс) в списке параметров или обратиться по имени параметра. На этапе разработки приложения можно вызвать Редактор параметров представленный на рисунке 2.20 в Инспекторе объектов. Тип каждого параметра целесообразно указать а свойстве DataType типа TFieldType.

Рисунок 2.20 - Окно Редактора параметров.

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

Набор данных Query, в отличие от компонента Table, может включать в себя записи более чем одной таблицы БД.

Текст запроса, на основании которого в набор данных отбираются записи, содержится в свойстве sql типа Tstrings. Запрос включает в себя команды на языке SQL и выполняется при открытии набора данных с помощью вызова его методов ExecSQL или Open. Запрос SQL иногда называют SQL- программой.

При формировании запроса на этапе разработки приложения я использовала текстовый редактор представленный на рисунке 2.21, вызываемый через Инспектор объектов двойным щелчком в области значения свойства sql.

Рисунок 2.21 - Редактирование запроса SQL

При выборе в пункте меню ввод часов преподавателей, открывается форма (Form4) представленная на рисунке 2.22.

Из раскрывающихся списков (LookupComboBox) можно выбрать предмет, преподавателя и группу.

Год и месяц установлены компонентом CSpinEdit из вкладки Samples на панели инструментов C++ Builder - контейнеров для ввода значений атрибутов, а также поставьте каждому из них в соответствие объект Label (метка или комментарий, компонент проживает во вкладке Standard).

Рисунок 2.22 - Выбор параметров для ввода часов преподавателей.

Далее измените название формы с Form4 (поле Caption окна инспектора свойств) на заголовок вида: «Учет часов». Наконец, поместите на рабочую область программы кнопка типа BitBtn из группы Additional и задайте в свойствах:

- для кнопки ОК Kind->bkOk;

- для отмены: Kind->bkCancel;

Перейдите в окно редактирования исходного кода и встройте после директивы: #include "uchebka.h"следующую команду: #include "Unit4.h" Этим действием мы подключим четвертую форму к нашей основной программе или, проще говоря, активируем рабочую область четвертой формы. Теперь назначим действие ведущее к открытию вкладки часы для редактирования (изменение, удаление, добавление часов). Поместите следующий код:

{Form4->CSpinEdit1->Value=year(Date());

Form4->CSpinEdit2->Value=month(Date());

Form4->Label26->Visible=true;

Form4->Label1->Visible=true;

Form4->DBLookupComboBox3->Visible=true;

Form4->CSpinEdit2->Visible=true;

if(Form4->ShowModal()!=mrOk) return;

TLocateOptions Opts;

Opts.Clear();

Variant locvalues[5];

locvalues[0] = Variant(gruppa->FieldValues["gruppa"]);

locvalues[1] = Variant(predmet->FieldValues["Kod_pred"]);

locvalues[2] = Variant(prepod->FieldValues["Kod"]);

locvalues[3] = Variant(Form4->CSpinEdit1->Value);

locvalues[4] = Variant(Form4->CSpinEdit2->Value);

if (!chasi-Locate("Nom_gr;Predmet;Prepod;God;Mes",VarArrayOf(locvalues, 4), Opts))

{chasi->Append();

chasi->FieldValues["Nom_gr"] = gruppa->FieldValues["gruppa"];

chasi->FieldValues["Predmet"] = predmet->FieldValues["Kod_pred"];

chasi->FieldValues["Prepod"] = prepod->FieldValues["Kod"];

chasi->FieldValues["God"] = Form4->CSpinEdit1->Value;

chasi->FieldValues["Mes"] = Form4->CSpinEdit2->Value;

chasi->Post();}

TabSheet6->Show();}

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

Поля DBEdit от 1 до 31 предназначенные для ввода часов по числам месяца. На кнопку ОК происходит сохранение введенных данных.

После ввода необходимых данных можно вывести ведомость учета часов преподавателей. Для этого в пункте меню выбираем Преподаватели->Ведомость учета часов.

Рисунок 2.23 - Вкладка ввода часов учебной работы преподавателя.

Загружается Microsoft Word и соответствующие данные заполняют шаблон таблицы:

if(Form5->ShowModal()!=mrOk) return;

Variant A_,B_,T_,D_,V_;

int i,c0,cs;

try{ A_ = CreateOleObject("Word.Application");

B_=A_.OlePropertyGet("WordBasic");

B_.OleProcedure("FileNew", (ExtractFilePath(ParamStr(0))+"prep_chac.dot").c_str());

D_=A_.OlePropertyGet("ActiveDocument");

V_=D_.OlePropertyGet("Variables");

V_.OleProcedure("Add", "Nom_gr", (Form5->DBLookupComboBox3->Text) .c_str());

V_.OleProcedure("Add", "Mes", Form5->CSpinEdit2->Value);

V_.OleProcedure("Add", "God", Form5->CSpinEdit1->Value);

D_.OlePropertyGet("Fields").OleProcedure("Update");

B_.OleProcedure("AppShow");

chasi->Filter="Nom_gr='"+Form5->DBLookupComboBox3->Text+"' AND Mes="+(String)Form5->CSpinEdit2->Value+" AND God="+(String)Form5->CSpinEdit1->Value;

chasi->Filtered=true;

T_=D_.OlePropertyGet("Tables").OleFunction("Item",1);

chasi->First();

char sss[20];

int l=4;

while(!chasi->Eof)

{ T_.OleFunction("Cell",l,1).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",((String)predmet->Lookup("Kod_pred", chasi->FieldByName("predmet")->AsInteger, "Naim_pred")).c_str());

T_.OleFunction("Cell",l,2).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",((String)prepod->Lookup("Kod", chasi->FieldByName("prepod")->AsInteger, "Fio")).c_str());

char cc[]="c00";

cs=0;

for (i=1;i<=31;i++)

{ itoa(i,cc+1,10);

c0=chasi->FieldByName(cc)->AsInteger;

T_.OleFunction("Cell",l,2+i).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",c0);

cs+=c0;}

T_.OleFunction("Cell",l,34).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",cs);

l++;

if(l>30) break;

chasi->Next();}

chasi->Filtered=false;

B_.OleProcedure("AppShow");}

catch(EOleException& e){ShowMessage("OleException "+e.Message);}

catch(EOleSysError& e){ShowMessage("OleSyserror "+e.Message);}

catch(Exception& e){ShowMessage("Exception "+e.Message);}

chasi->Filtered=false;}

За год формируется отчет по часам, который передается в Microsoft Word.

{ Form4->Label26->Visible=false;

Form4->Label1->Visible=false;

Form4->DBLookupComboBox3->Visible=false;

Form4->CSpinEdit2->Visible=false;

if(Form4->ShowModal()!=mrOk) return;

Variant A_,B_,T_,D_,V_;

int cs;

char sss[20];

int l=1,i,mes;

int cha[13]; //сумма по строкам

int chag=0; // по столбам

try{

A_ = CreateOleObject("Word.Application");

B_=A_.OlePropertyGet("WordBasic");

B_.OleProcedure("FileNew", (ExtractFilePath(ParamStr(0))+"prep-sv.dot").c_str());

D_=A_.OlePropertyGet("ActiveDocument");

V_=D_.OlePropertyGet("Variables");

V_.OleProcedure("Add", "Fio", (prepod->FieldByName("Fio")->AsString).c_str());

V_.OleProcedure("Add", "Predmet", predmet->FieldByName("Naim_pred")->AsString.c_str());

V_.OleProcedure("Add", "Uch_god", ((String)Form4->CSpinEdit1->Value+"-"+(String)(Form4->CSpinEdit1->Value+1)).c_str()); D_.OlePropertyGet("Fields").OleProcedure("Update");

B_.OleProcedure("AppShow");

chasi->Filter="Prepod='"+prepod->FieldByName("Kod")->AsString+"' AND Predmet="+predmet->FieldByName("Kod_pred")->AsString+" AND (God="+(String)Form4->CSpinEdit1->Value+" AND Mes>8 OR God="+(String)(Form4->CSpinEdit1->Value+1)+" AND Mes<8 )";

chasi->Filtered=true;

T_=D_.OlePropertyGet("Tables").OleFunction("Item",1);

chasi->First();

for (i=1;i<13;i++) cha[i]=0;

grupf="";

while(!chasi->Eof)

{ if (grupf!=chasi->FieldByName("Nom_gr")->AsString)

{ if (chag){

T_.OleFunction("Cell",17,l).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",chag);

chag=0; }

l++;

if(l>13) break;

grupf=chasi->FieldByName("Nom_gr")->AsString;

T_.OleFunction("Cell",2,l).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",grupf.c_str()); }

mes=chasi->FieldByName("Mes")->AsInteger;

char cc[]="c00";

cs=0;

for (i=1;i<=31;i++)

{ itoa(i,cc+1,10);

cs+=chasi->FieldByName(cc)->AsInteger;}

cha[mes]+=cs;

chag+=cs;

T_.OleFunction("Cell",(mes>8? (mes-9):(mes+3))+4,l).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",cs);

chasi->Next();}

chasi->Filtered=false;

if (chag){

T_.OleFunction("Cell",17,l).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",chag); }

for (mes=1;mes<13;mes++)

{ T_.OleFunction("Cell",(mes>8? (mes-9):(mes+3))+4,14).OleProcedure("Select");

A_.OlePropertyGet("Selection").OlePropertySet("Text",cha[mes]);}

B_.OleProcedure("AppShow");}

catch(EOleException& e){ShowMessage("OleException "+e.Message);}

catch(EOleSysError& e){ShowMessage("OleSyserror "+e.Message);}

catch(Exception& e){ShowMessage("Exception "+e.Message);}

chasi->Filtered=false;}

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

Рисунок 2.24 - Форма перехода студентов на следующий учебный год.

char gg[6],sp[3];

hDBIDb hDb;

String kurator;

char dir[DBIMAXPATHLEN + 1];

if(Form7->ShowModal()!=mrOk) return;

hDb=nastr->DBHandle;

DbiGetDirectory(hDb,0,dir);

nastr->Active=false;

special->Active=false;

student->Active=false;

praktika->Active=false;

ocenka->Active=false;

predmet->Active=false;

gruppa->Active=false;

prepod->Active=false;

chasi->Active=false;

String ss=(String)dir+"arh.exe a -x*.rar -x*.exe A"+(String)uch_god+" *.*";

PROCESS_INFORMATION pin;

STARTUPINFO si;

memset(&si, 0, sizeof(STARTUPINFO));

si.cb = sizeof(STARTUPINFO);

si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;

si.wShowWindow = SW_HIDE;

si.hStdOutput = 0;

si.hStdError = 0;

if (!CreateProcess(0,ss.c_str(),0,0,1,0,0,dir,&si,&pin)){MessageBox(Form1->Handle,"Ошибка архивирования продолжение невозможно","Ошибка",MB_OK|MB_ICONERROR);return;}else{

CloseHandle(pin.hThread);

WaitForSingleObject(pin.hProcess, 200000); }

nastr->Active=true;

special->Active=true;

student->Active=true;

praktika->Active=true;

ocenka->Active=true;

predmet->Active=true;

gruppa->Active=true;

prepod->Active=true;

chasi->Active=true;

ocenka->IndexName="Nom_zach";

ocenka->MasterFields="";

ocenka->MasterSource=dstudent;

ocenka->MasterFields="nom_zach";

Label23->Caption="";

student->Filtered=false;

student->First();

while(!student->Eof){

if(special->Lookup("Buk_spec",student->FieldByName("Spec")->AsString,"Let")==student->FieldByName("Nom_kurs")->AsInteger)

{ if (student->RecNo==student->RecordCount) {student->Delete();break;}

student->Delete();

} else {

strcpy(gg,student->FieldByName("Gruppa")->AsString.c_str());

if (gg[1]=='-') {gg[2]++;}

else if (gg[2]=='-') {gg[3]++;}

student->Edit();

switch(student->FieldByName("Nom_kurs")->AsInteger){

case 1: student->FieldByName("Prik2")->AsString=Form7->Edit1->Text; break;

case 2: student->FieldByName("Prik3")->AsString=Form7->Edit1->Text; break;

case 3: student->FieldByName("Prik4")->AsString=Form7->Edit1->Text; break; }

student->FieldByName("Gruppa")->AsString=gg;

student->Post();

student->Next(); }}

int kk;

gruppa->Last();

while(!gruppa->Bof){

strcpy(gg,gruppa->FieldByName("Gruppa")->AsString.c_str());

if (gg[1]=='-') {sp[0]=gg[0];sp[1]=0;gg[2]++;kk=gg[2]-48;}

else if (gg[2]=='-') {sp[0]=gg[0];sp[1]=gg[1];sp[2]=0;gg[3]++;kk=gg[3]-48;}

if(special->Lookup("Buk_spec",sp,"Let")<kk){

gruppa->Delete();

gruppa->Prior();

}else {

gruppa->Edit();

gruppa->FieldByName("Gruppa")->AsString=gg;

gruppa->Post();

gruppa->Prior(); }}

nastr->Edit();

nastr->FieldByName("Uch_god")->AsInteger=++uch_god;

nastr->Post();

Form1->Caption="Учебная часть РПТ "+(String)uch_god+"-"+(String)(uch_god+1)+" учебный год"; }

Ежедневно выполняется проверка и переиндексация баз, по средам архивация. Для архивации вызывается внешний архиватор с параметрами для архивации всех файлов кроме exe и .rar в папке, имя файла соответствует дате архивации:

{char *bas[]={"chasi.db","gruppa.db","ocenka.db","praktika.db","predmet.db","prepod.db","special.db","student.db","propusk.db"};

WORD err;

char bbb[100];

hDBIDb hDb;

hDb=nastr->DBHandle;

char dir[DBIMAXPATHLEN + 1];

DbiGetDirectory(hDb,0,dir);

if (nastr->FieldByName("Datar")->AsDateTime!=Date()) {

if (Date().DayOfWeek()==4){

nastr->Close();

String ss=(String)dir+"arh.exe a -x*.rar -x*.exe "+Date().FormatString("yyyymmdd")+" *.*";

PROCESS_INFORMATION pin;

STARTUPINFO si;

memset(&si, 0, sizeof(STARTUPINFO));

si.cb = sizeof(STARTUPINFO);

si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESTDHANDLES;

si.wShowWindow = SW_HIDE;

si.hStdOutput = 0;

si.hStdError = 0;

if (!CreateProcess(0,ss.c_str(),0,0,1,0,0,dir,&si,&pin)){MessageBox(Form1->Handle,"Ошибка архивирования","Ошибка",MB_OK|MB_ICONERROR);}else{

CloseHandle(pin.hThread);

WaitForSingleObject(pin.hProcess, 200000); } }

nastr->Close();

nastr->Exclusive=true;

try{

nastr->Open();

}catch(EDatabaseError &E)

{ nastr->Exclusive=false;

nastr->Open();

return; }

for (int i=0;i<9;i++)

{ //err=DbiRegenIndexes(Table1->Handle);

CRTblDesc TblDesc;

memset((void *) &TblDesc, 0, sizeof(CRTblDesc));

lstrcpy(TblDesc.szTblName, bas[i]);

lstrcpy(TblDesc.szTblType, szPARADOX);

TblDesc.bPack = TRUE;

err=DbiDoRestructure(hDb,1,&TblDesc,0,0,0,0);

if (err!=DBIERR_NONE)

{ sprintf(bbb,"Ошибка переиндексации %x",err);

MessageBox(0,bbb,bas[i],MB_OK); } }

nastr->Close();

nastr->Exclusive=false;

nastr->Open();

nastr->Edit();

nastr->FieldValues["Datar"]=Date();

nastr->Post(); }}

реляционный запрос электронный интерфейс

3. Организация интерфейса с пользователем

Программа состоит из исполняемого модуля uch_chast1.exe, шаблонов Ekzam_ved.dot, lichn.dot, svod.dot, pred_chac.dot, pred_sv.dot, usp.dot, zach.dot, эти шаблоны должны находиться в папке куда была установлена программа (C:\Uch1).

«Учебная часть РПТ» - это программа работающая с базой данных, которая содержит полную информацию по работе очного отделения, а также программные средства поиска, добавления и обработки этой информации.

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

3.1 Сервисные функции программы РПТ

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

«Учебная часть РПТ»

Компактное хранение информации. Программа помогает компактно хранить необходимые в работе документы и данные.

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

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

Отслеживание изменений в документах с учетом их взаимосвязей. Изменения, вносимые нормативными правовыми актами раздела "Новые документы", автоматически отражаются в текстах изменяемых документов. При этом предыдущие редакции измененных документов по-прежнему остаются. Требования являются рекомендуемыми для работы с программой «Учебная часть РПТ».

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

Таблица 3.1 - Общие требования к программе Учебная часть РПТ

Привод CD-ROM или DVD-ROM

Требуется наличие устройства чтения CD-ROM или DVD-ROM для установки программы.

Microsoft Word

Версии 2000-2003

BDE

Версии 4.0

Таблица 3.2 - Требования для запуска программной оболочки

Процессор

Celeron 500 МГц

Оперативная память

128 Мб

Операционная система

Windows 98 - ХР

Настройки экрана

разрешение 800х600 пикселей

Жесткий диск

Программная оболочка занимает около 2 Мб

Для установки программы необходимо:

Скопировать папку с программой на жесткий диск (рекомендуется в корень диска С:\);

Установить BDE;

Для работы в сетевом режиме прописать алиас Uch1, иначе программа ищет базу данных по псевдониму Uch1.

Главное окно программы

Композиция главного окна программы «Учебная часть РПТ» содержит главное меню, список студентов.

Рисунок 3.1 - Главное окно системы и его составляющие.

Панель навигации размещается в нижней части окна системы и содержит набор кнопок для управления списком студентов.

Рисунок 3.2 - Панель навигации.

На панели имеются кнопки: первая строка, предыдущая строка, следующая строка, последняя строка, добавить, удалить, изменить, сохранить изменения, отменить изменения и обновить.

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

Рисунок 3.3 - Список студентов загруженный в основное окно программы.

3.2 Руководство пользователя

3.2.1 Запуск программы

Нажмите кнопку Пуск на панели задач и перейдите в меню Мой компьютер/Локальный диск С:\Uch1\Uch_chast. Запустите систему двойным щелчком по значку.

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

3.2.2 Работа с программой

Данный модуль (окно) в программе предназначен для работы со списками.

Программа позволяет отобразить как полный список учащихся Рузаевского политехнического техникума (в меню Студенты->Список->Полный), так и списки по группам (в меню Студенты->Список->По группам-> выбираем нужную группу, например А-11).

Рисунок 3.4 - Работа со списком студентов в главном окне программы.

Производимые действия над списком (кнопки панели навигации в нижней части окна): Добавить (+)- добавление новой записи; Изменить (^) - редактирование записи (при редактировании списка студентов, программа автоматически переходит на вкладку личная карточка, для перехода на список нажмите ОК, или кнопочку крестик в верхней части рабочей области программы); Удалить (-)- удаление записи; Принять изменения (7) - сохраняет внесенные изменения в базе данных; Отменить изменения (Х) - оставляет исходный вариант без исправления последний записи; Первая строка (|<) - переход курсора мыши на первую строку списка; Последняя строка (|>) - переход курсора мыши на последнюю строку списка; Следующая строка (>) - переход курсора мыши с активной строки на следующую; Предыдущая строка (<) - переход курсора мыши с активной строки на предыдущую; Обновить ( э ) - перечитывает содержимое программы и отображает с внесенными изменениями.

Если в списке нет студента, то его необходимо добавить. Для этого на панели навигации нажимаем кнопку Добавить (+). Перед нами отображается окно «Личная карточка студента». Необходимо ввести данные по студенту:

номер зачетки;

Фамилия Имя Отчество;

группа;

выбрать в календаре дату поступления;

Заполнить приказ о зачислении и другие поля.

Курс и специальность устанавливаются автоматически в зависимости от группы.

Рисунок 3.5 - Заполнение личной карточки студента.

Для внесения исправлений личной карточки можно перейти из главного меню программы, для этого выбрать Студенты->Личная карточка». В нижней части основного окна (Список студентов) имеется набор кнопок:

Успеваемость студента;

Успеваемость за семестр;

Распечатать личную карточку.

Справочник предназначен для внесения информации в базу данных. В программе «Учебная часть РПТ» их 4: предметы, преподаватели, группы, специальности.

Рисунок 3.6 - Работа со справочниками программы Учебная часть РПТ.

Для внесения данных или изменения созданы панели навигации.

Для того чтобы выставить студенту оценки, необходимо:

Выделить строку с нужной фамилией студента, затем в главном меню программы выбрать Студенты->Успеваемость, или в основном окне программы (Список студентов) нажать на кнопку Успеваемость студента.

Открывается окно в верхней части которого написано ФИО выбранного студента, а ниже основная рабочая часть в виде таблицы (предметы и оценки по семестрам с 1 по 8). Для редактирования этой таблицы воспользуйтесь панелью навигатора (работа с которой описана выше).

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

Рисунок 3.7 - Успеваемость студента

В поля оценок допускается вводить: 2, 3, 4, 5, зач, н/з, н/я, и две оценки через /. При расчетах успеваемости в отчетах обрабатывается только первый символ оценки. При этом «з» - означает зачет, «н» - равносильно «2».

В программе предусмотрен вывод отчета по успеваемости студентов определенной группы.

Отчет формируется в документе Microsoft Word.

Для вывода отчета необходимо:

Перейти на вкладку студенты.

Нажать на кнопку Успеваемость за семестр.

В появившимся диалоговом окне выбираем из раскрывающегося списка группу, например А-41, ставим переключатель на нужный семестр, затем нажимает ОК.

В появившимся документе Microsoft Word можно внести необходимые изменения, сохранить или распечатать отчет.

Примечание/ Для успевающих студентов (обучающихся на 5,4,3) отображаются ФИО, для неуспевающих (имеющих оценку 2) - ФИО и дисциплина по которой есть задолжность.

При нажатии на кнопку Распечатать личную карточку студента запускается приложение Microsoft Word. Документ является двусторонним, поэтому размещается на двух страницах. Если пользователь все правильно оформил в программе, полученный документ можно сразу распечатывать, не внося исправления.

В этом документе автоматически заполняются:

Фамилия имя отчество студента

Курс, группа, специальность

Число, месяц и год рождения

Место рождения, адрес родителей, национальность, пол

Время поступления в техникум, номер и дата приказа, приказы о переводе на соответствующий курс

Оценки успеваемости с 1 по 4 курс

Практики (учебная и производственная).

Рисунок 3.8 - Выбор параметров из раскрывающихся списков.

При нажатии в панели меню Студенты->Оценки по ведомости открывается страница. В верхней части, которой отображается группа и дисциплина, по которой необходимо выставить оценки, в рабочей части - находится таблица, содержащая ФИО, группу и оценки по семестрам.

Рисунок 3.9 - Ввод оценок по ведомости.

Эта вкладка создана для удобства работы, позволяет вводить оценки по группе.

В конце каждого семестра необходимо заполнить ведомости (экзаменационную, зачетную сводную).

Работа с экзаменационной и зачетной ведомостями.

Для того чтобы передать ведомость в Word необходимо:

В главном меню выбрать Ведомости->Экзаменационная либо Зачетная.

После этого появляется окно, представленное на рисунке 3.10 где необходимо из раскрывающихся списков выбрать группу, предмет и преподавателя.

Нажать ОК

Для того чтобы передать ведомость в Word необходимо:

В главном меню выбрать Ведомости->Сводная

Рисунок 3.10 - Выбор параметров для заполнения экзаменационной и зачетной ведомостей.

Выбрать из раскрывающегося списка Группу и указать переключателем семестр. Нажать ОК.

Рисунок 3.11 - Установление параметров для вывода сводной ведомости.

Для учета часов преподавателей выводятся два отчета: учет часов, сводная ведомость по часам. Для заполнения ведомости «Учет часов преподавателей» выберите в главном меню пункт Преподаватели->Учет часов. Перед вами открывается диалоговое окно, в котором из раскрывающихся списков нужно выбрать: предмет, преподавателя, группу.

Указать с помощью переключателя необходимый год и месяц, нажать ОК. Открывается страница, содержащая указанные выше данные (группа, предмет и т.д.) и ячейки от 1 до 31 в которые необходимо ввести количество часов отработанных преподавателем за месяц в конкретной группе:

Рисунок 3.12 - Задание параметров для ввода часов преподавателей.

Рисунок 3.13 - Ввод часов учебной работы преподавателя за месяц.

Затем для сохранения данных нажать ОК.

3.2.3 Завершение работы

Работа с программой «Учебная часть РПТ» завершается обычным способом - закрытием главного окна программы. При выходе автоматически сохраняются все данные.

Заключение

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

Применение компьютера сокращает время работы, обладает широкими возможностями в области ввода нового материала, позволяет использовать готовые формы, таблицы для предоставления нужной и актуальной информации, чем при работе с документами вручную и т.д. Наиболее перспективным на данный момент для общеобразовательного учреждения Рузаевский политехнический техникум является применение программы «Учебная часть РПТ». Из проведенного анализа существующих ныне программ видно, что есть еще множество проблем в области компьютеризации работы. Многие разработанные системы не позволяют решить требуемые задачи. Основные причины этого - специфика конкретного учебного заведения, высокая стоимость. В дипломном проекте был рассмотрен вопрос об автоматизации учебного процесса очного отделения, которая позволяет повысить эффективность работы.

База данных Учебная часть РПТ позволяет: сформировать личную карточку студента, вывести отчет по успеваемости группы, подготовить на печать заполненные бланки зачетной и экзаменационной ведомостей, автоматически сформировать сводную ведомость за семестр, из введенные данных в базу формирует ведомость учета часов учебной работы преподавателя позволяет вывести отчет в Microsoft Word, для перевода студентов на следующий учебный год предусмотрен ввод приказа для всех студентов учебного заведения. Для внесения изменений в базу данных предусмотрены справочники, которые вызываются из меню программы. В случае сбоя работы компьютера предусмотрено восстановление баз из архива arh.exe имеющим название год, число, месяц, например 20080604.rar

...

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

  • Представление информации в виде баз данных с помощью таблиц, форм, запросов, отчетов. Сущность запросов и их функции. Применение форм и отчетов. Назначение и использование электронной почты глобальной сети. Описание интерфейса системы Компас-3D.

    контрольная работа [1,2 M], добавлен 23.12.2014

  • Понятие базы данных, ее иерархические, реляционные и сетевые модели. Суть и принципы работы системы управления БД MS Access. Способы создания таблиц, форм, запросов, отчетов. Хранение информации в БД, возможности ее редактирования и вывода пользователем.

    презентация [1,2 M], добавлен 27.02.2015

  • Рассмотрение теоретических основ проектирования. Анализ предметной области и разработка таблиц базы данных. Заполнение таблиц, поиск данных с помощью фильтра. Создание форм, разработка запросов. Создание и настройка отчетов, составление приложения.

    курсовая работа [2,8 M], добавлен 01.06.2014

  • Особенности разработки инфологической модели и создание структуры реляционной базы данных. Основы проектирования базы данных. Разработка таблиц, форм, запросов для вывода информации о соответствующей модели. Работа с базами данных и их объектами.

    курсовая работа [981,4 K], добавлен 05.11.2011

  • Создание автоматизированной системы – "Агентство по трудоустройству". Проектирование таблиц для хранения данных. Разработка запросов и отчетов, предназначенных для просмотра, редактирования и вывода информации. Разработка пользовательского интерфейса.

    курсовая работа [4,9 M], добавлен 29.01.2011

  • Создание БД с информацией о сотрудниках на основе таблиц: "Сотрудники", "Отдел". Поиск, сортировка и фильтрация данных в таблицах. Запросы на выборку данных, удаления и замены. Создание форм и отчетов на основе запросов и таблиц. Диспетчер кнопочных форм.

    лабораторная работа [136,7 K], добавлен 01.12.2011

  • Особенности проектирования программы на языке С++ для обработки данных из таблиц базы данных. Основные функции программы, создание концептуальной модели базы данных и диаграммы классов, разработка интерфейса пользователя и запросов к базе данных.

    курсовая работа [2,1 M], добавлен 08.06.2012

  • Виды запросов в информационной системе. Модель выдачи информации по каждому из сотрудников. Сбор данных о поставках корма, животных, потомстве и совместимости видов. Основные параметры структуры таблиц и схем данных. Создание запросов, отчетов и форм.

    курсовая работа [1,1 M], добавлен 15.05.2014

  • Создание реляционной базы данных, запросов, форм и отчетов по БД "Компьютеры", "Таблицы". Создание базы данных, объектов, заполнение таблиц данными, выполнение схемы. Справочно-правовая система "Консультант Плюс". Информационные массивы, разделы и банки.

    контрольная работа [4,3 M], добавлен 21.10.2009

  • Методы проектирования базы данных по заданной предметной области с использованием CASE-средств ER/Studio и СУБД MS Access. Формирование и связывание таблиц, ввод данных. Создание экранных форм, запросов, отчетов, меню приложения. Генерация приложения.

    курсовая работа [884,0 K], добавлен 08.09.2010

  • Характеристика Microsoft Access. Создание структуры базы данных. Определение основных тем таблиц базы данных и информации, которую будут содержать поля таблиц. Создание таблиц, запросов, форм и отчетов. Страницы доступа к данным. Макросы и модули.

    курсовая работа [1,1 M], добавлен 09.12.2012

  • Выделение информационных объектов и их инфологическая модель. Логическая структура реляционной базы данных. Разработка таблиц в системе управления базами данных Access. Создание запросов, форм и отчетов в СУБД Access. Разработка приложения пользователя.

    курсовая работа [2,8 M], добавлен 05.02.2018

  • Создание базы данных "Компьютерные игры": разработка и дизайн интерфейса, наполнение таблиц информацией, формирование идентификаторов. Использование системы управления базами данных Microsoft Access для составления стандартных запросов, форм и отчетов.

    курсовая работа [715,7 K], добавлен 29.01.2011

  • Процесс создания и определение задач полнофункциональной системы управления базами данных. Разработка структуры таблиц, хранящих данные и формирование запросов. Построение форм для ввода и просмотра информации в запросах и создание необходимых отчетов.

    курсовая работа [1,1 M], добавлен 11.09.2010

  • Построение концептуальной модели. Создание таблиц, входящих в состав базы данных. Разработка основных запросов, отчетов о количестве учеников в данном классе и работе школы; форм для просмотра и редактирования данных в программе Microsoft Access.

    курсовая работа [2,7 M], добавлен 08.05.2015

  • Базы данных и системы управления ими. Разработка базы данных "Торговая организация", позволяющей вести учет имеющегося товара, покупателей и поставки товара. Проектирование таблиц, запросов и форм. Создание отчетов. Обеспечение доступа к информации.

    курсовая работа [1,2 M], добавлен 21.11.2014

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

    курсовая работа [815,5 K], добавлен 14.02.2016

  • Построение базы данных для экзаменационных ведомостей. Работа с таблицами, создание простых форм, отчетов и запросов (Query by Example). Использование информации из нескольких, связанных между собой таблиц. Запросы с использованием статистических функций.

    практическая работа [39,1 K], добавлен 24.06.2009

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

    контрольная работа [4,5 M], добавлен 18.03.2012

  • Создание базы данных по теме "Склад фруктов" в СУБД Microsoft Access. Проектирование запросов по числовым, символьным, логическим критериям и сложных запросов, состоящих из комбинаций приведенных типов данных. Создание форм и таблиц, конструктор отчетов.

    курсовая работа [869,2 K], добавлен 04.11.2014

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