Разработка прикладной информационной системы

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО АТОМНОЙ ЭНЕРГИИ

САРОВСКИЙ ГОСУДАРСТВЕННЫЙ ФИЗИКО-ТЕХНИЧЕСКИЙ ИНСТИТУТ (СарФТИ)

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И ЭЛЕКТРОНИКИ

КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ И ИНФОРМАЦИОННОЙ ТЕХНИКИ

ЗАДАНИЕ

на курсовое проектирование

по курсу: Базы данных

наименование дисциплины

Студент Коптелов Алексей Юрьевич

фамилия, имя, отчество

Группа ВТ-43д

индекс группы

Руководитель проекта Логунова Елена Сергеевна

должность, ученая степень, звание, фамилия, имя, отчество

САРОВ, 2007

Наименование темы Разработка прикладной информационной системы “Курсовые работы кафедры ВИТ” средствами СУБД Microsoft VFP 9.0

Место выполнения СарФТИ ФИТЭ кафедра ВИТ Исходные данные Intel Celeron 4 2.4 Gz, 256 MB ОЗУ, HDD 80GB, клавиатура, мышь, MS Windows XP, Microsoft Visual Fox Pro 9.0

Содержание работы 1. Постановка задачи. 2. Уяснение поставленной задачи, формирование ТЗ, заполнение задания на курсовую работу. 3. Выбор и обоснование инструментальных и программных средств. 4. Разработка модели представления данных. 5. Разработка структуры интерфейса. 6. Проектирование входных и выходных форм. 7. Программирование приложения. 8. Проверка функциональности на контрольном примере. 9. Оформление пояснительной записки, разработка руководства пользователя, сдача системы в опытную эксплуатацию. 10. Сдача курсовой работы.

Экспериментальная часть 1. Освоение инструментальных средств. 2. Программная и интерактивная реализация разделов системы. 3. Формирование контрольного примера.

Допуск к защите

К защите представляется:

    пояснительная записка страниц

    чертежно-графический материал листов

    иллюстрационный материал листов

    экспериментальные макеты шт.

    приложение страниц

Студент ВТ-43Д Коптелов Алексей Юрьевич допущен к защите

индекс группы, фамилия, имя, отчество

Руководитель (Макарец А.Б.)

дата, подпись

Работа защищена с оценкой

Аннотация

Назначение данной курсовой работы – это разработка и реализация прикладной информационной системы «Курсовые работы кафедры ВИТ», позволяющей автоматизировать процессы учета курсовых работ.

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

Данная работа выполнена средствами СУБД Visual FoxPro 9.0 на основании технического задания.

Содержание

Введение

1.Постановка задачи

Общие сведения

1.2. Входные данные представляют собой

1.3.Требования к программному обеспечению

2. Выбор и обоснование инструментальных средств

3. Практическая часть

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

3.2. Принципы реализации программного обеспечения

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

Список литературы

Заключение

Приложение1.Разработка и реализация модели представления данных

Приложение2.

Листинг программы

Введение

В процессе учета курсовых работ часто требуется быстро найти информацию о курсовой работе и о студенте, выполнившем её.

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

Для реализации базы данных будет использована СУБД Visual FoxPro 9.0. Это одна из наиболее популярных систем разработки приложений баз данных, мощный продукт, позволяющий применять при разработке приложений баз данных всю гибкость объектно-ориентированного программирования.

1.Постановка задачи

1.1.Общие сведения.

Полное наименование работы: создать прикладную информационную систему по вводу и редактированию информации о курсовых работах кафедры ВИТ.

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

1.2 Входные данные представляют собой:

    Группа

    ФИО студента

    Предмет

    Тема

    Оценка

    Дата сдачи

    ФИО преподавателя

    Ученая степень

1.3 Требования к программному обеспечению.

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

1. Ведение списка курсовых работ кафедры ВИТ

2. Добавление, удаление информации о курсовых работах

    Создание необходимых отчетов

    Просмотр отчетов на экране и вывод на печать.

2. Выбор и обоснование инструментальных средств

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

Данный курсовой проект выполнен на СУБД Visual FoxPro 9.0. Visual FoxPro является объектно-ориентированным, визуально программируемым языком, управляемым по событиям и в полной мере соответствует требованиям, предъявляемым к современным средствам проектирования.

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

Наряду с традиционным хранением данных в виде отдельных DBF-файлов в Visual FoxPro поддерживается хранение данных в базе данных. База данных содержит все включенные в нее таблицы, их индексы, постоянные связи между таблицами, длинные имена таблиц, комментарии и заголовки полей, хранимые процедуры и триггеры, правила проверки и многое другое. Обеспечивается поддержка значения NULL для полей базы данных, что является очень важным при работе с SQL-базами данных. Используются четыре типа индексов: первичный, кандидат, уникальный и простой, отвечающие производственным стандартам работы с базами данных. Представлены средства переноса базы данных Visual FoxPro на SQL-сервер. Можно вводить для полей элементы управления, маску ввода и формат, которые будут использованы по умолчанию для отображения значений этих полей.

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

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

В настоящей версии Visual FoxPro графический интерфейс пользователя включает в себя: поддержку технологии перемещения таблиц и полей данных в экранные формы непосредственно из диспетчера проекта или из окна проектирования базы данных; использование контекстного меню; всеобъемлющий характер наборов инструментария и многое другое.

Visual FoxPro поддерживает работу с OLE-объектами, позволяя как встраивать такие объекты в экранные формы, так и сохранять их в полях базы данных. Дополнительно Visual FoxPro предоставляет библиотеку OLE-объектов.

Версия Visual FoxPro 9.0 обладает рядом новых возможностей:

    Более удобная работа с проектом и управлением базой данных.

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

    Расширены возможности построения запросов и проектирования видов.

    Упрощено проектирование форм и значительно расширены функциональные возможности. Поддерживается применение MDI (Multiple Document Interface) и SDI (Single Document Interface) интерфейсов для управления оконными формами. Добавлено средство проектирования контекстного меню (Shortcut Menu Designer). Новый редактор облегчает программирование, обеспечивая форматирование программного кода и выделение цветом.

    Введены новые мастера и дополнены старые. Новый мастер Application Wizard позволяет создавать рабочее пространство проекта.

    Продвинуто внедрение OLE-технологии. Поддерживается работа с новыми элементами управления ActiveX, являющимися OLE-объектами.

    Улучшен отладчик.

    Введены новые команды и функции.

3. Практическая часть

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

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

    Разработка модели представления данных

    Разработка структуры интерфейса

    Проектирование входных и выходных форм

    Программирование приложения

    Проверка функциональности на контрольном примере.

3.2 Принципы реализации программного обеспечения

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

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

Доступ к данным, хранимым в базе данных, осуществлялся через SQL – запросы.

SQL – команды позволили осуществить добавление и удаление данных из базы.

3.3 Руководство Пользователя

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

Данная форма «Учет курсовых работ кафедры ВИТ» содержит информацию о студенте и о курсовой работе. Для получения необходимой информации, в списке «Группа» выбираем любую группу кафедры ВИТ. После выбора группы в поле «ФИО» появляются все студенты, принадлежащие данной группе. При выборе студента происходит вывод информации предмете: в списке «Предмет» появляется название предмета (или предметов), по которому проводится курсовая работа. При дальнейшем выборе предмета из списка происходит заполнение следующей информации о курсовой работе: тема курсовой работы, оценка, дата сдачи и преподаватель.

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

В разделе «Информация о студенте» можем добавить группу с помощью кнопки «Добавить группу». Вводим название группы, нажимаем кнопку «Добавить группу», это поле автоматически очищается для дальнейшего добавления групп, а только что добавленная группа мгновенно заносится в наш список групп в поле «Группа», выбрав которую вбиваем информацию о студенте.

Аналогичным образом работают кнопки «Добавить предмет» и «Добавить уч.степень» (Добавить ученую степень преподавателя). Информация заносится в списки «Предмет» и «Ученая степень» соответственно.

Дальше идет заполнение полей: «Тема курсовой работы» - вводим тему; «Оценка» - выбираем из списка оценок (3,4,5) нужную нам оценку; «Дата сдачи» - при нажатии на кнопку ( ) появляется форма «Выберите дату» в виде календарика:

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

Нажимаем основную кнопку «Добавить», и информация о студенте и курсовой работе заносится в нашу базу данных.

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

и вводимые данные не добавляются.

В противном случае выводится сообщение:

и вводимые данные успешно заносятся в базу данных.

Если мы хотим перед вводом темы курсовой работы просмотреть кокой – нибудь предмет на наличие ранее выдававшихся тем по этому предмету, то в списке «Предмет» выбираем нужный нам предмет и нажимаем кнопку «Показать темы».

В правой стороне в списке появляются список тем.

Также мы можем удалять студента при помощи кнопки «Удалить» в главном окне программы (при этом тема курсовой работы не удаляется, для последующего выявления уже сданных тем курсовых работ).

Если студент, которого хотим удалить, не выбран, то выводится сообщение:

При выборе студента и нажатии на кнопку «Удалить» происходит удаление студента и выводится сообщение об успешном удалении:

Кнопки «Отчет по студентам» и «Отчет по преподавателям» позволяют просмотреть информацию:

1)о студенте: ФИО, по какому предмету, какую курсовую, на какую оценку, и когда он защитил;

2)о преподавателе: ФИО, ученую степень, предмет, который он вел, и какая тема курсовой работы выдавалась им по данному предмету.

Заключение

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

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

Список литературы:

    С. Каратыгин, А . Тихонов, Л.Тихонова Visual FoxRro К вершинам мастерства – М.:Восточеная Книжная Компания, 1997.

    А.М. Вендеров Проектирование программного обеспечения экономических информационных систем: Москва “Финансы и статистика”,2000.

    Курс лекций Макарец.А.Б

Приложение 1. Разработка и реализация модели представления данных.

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

В данном проекте информация была разбита на следующие категории :

    Основная таблица (courseworks.dbf)

    Справочник по предмету (sub>ject.dbf)

    Справочник по студенту (student.dbf)

    Справочник по группе (group.dbf)

    Справочник по преподавателю (professor.dbf)

    Справочник по ученой степени преподавателя (degree.dbf)

    Справочник по теме курсовой работы (theme.dbf)

Список файлов системы

courseworks.exe - запускаемый файл

Файлы базы данных.

1.dbc

courseworks.dbf

sub>ject.dbf

student.dbf

group.dbf professor.dbf

degree.dbf

theme.dbf

Файлы форм.

form1.scx - главная форма (Учет курсовых работ кафедры ВИТ)

form2.scx – форма добавления данных

getdataform.scx – форма по выбору даты

Файлы отчетов.

prof.frx – отчет по преподавателям

st.frx – отчет по студентам

Файлы помощи

Help.hlp

Файлы программ.

main.prg

quit.prg

Приложение 2. Листинг программы.

Form1 – «Учет курсовых работ кафедры ВИТ»

Инициализации формы:

SET DELETE on

SELECT namegroup FROM group INTO CURSOR group1

ThisForm.Combo1.RowSourceType= 2

ThisForm.Combo1.RowSource='group.namegroup'

Выборе группы из списка (Combo1):

gg=TRIM(THISFORM.Combo1.Value)

SELECT Group.id_group;

FROM 1!group;

WHERE TRIM(Group.namegroup)==gg;

INTO CURSOR t10

SELECT surname,name,patronymic;

FROM student;

WHERE student.id_group=t10.id_group;

INTO CURSOR clici

ThisForm.text9.Value=''

ThisForm.text11.Value=''

ThisForm.text12.Value=''

ThisForm.List1.RowSourceType= 2

ThisForm.List1.Value=''

ThisForm.List1.RowSource='ALLTRIM(clici.surname)+SPACE(1)+ALLTRIM(clici.name)+SPACE(1)+ALLTRIM(clici.patronymic)'

ThisForm.List2.RowSourceType= 2

ThisForm.List2.RowSource=''

Выбор студента (List1):

SELECT surname,name,patronymic,id_student FROM student;

WHERE ALLTRIM(student.surname)+SPACE(1)+ALLTRIM(student.name)+SPACE(1)+ALLTRIM(student.patronymic)=ALLTRIM(This.Value) AND t10.id_group=student.id_group;

INTO CURSOR student3

ThisForm.text9.Value=''

ThisForm.text11.Value=''

ThisForm.text12.Value=''

ThisForm.text1.Value=''

SELECT id_professor,id_theme,id_sub>ject,mark,datedelivery,id_student FROM courseworks;

WHERE courseworks.id_student=student3.id_student INTO CURSOR cwork

SELECT sub>ject.id_sub>ject, sub>ject.namesub>ject, Courseworks.id_student,;

Courseworks.id_sub>ject, Courseworks.id_professor,;

Courseworks.datedelivery, Courseworks.mark, Courseworks.id_theme;

FROM ;

1!sub>ject ;

INNER JOIN 1!courseworks ;

ON sub>ject.id_sub>ject = Courseworks.id_sub>ject;

INTO CURSOR ccwork

SELECT * FROM ccwork;

where ccwork.id_student=cwork.id_student INTO CURSOR cccwork

ThisForm.List2.RowSourceType=2

ThisForm.List2.Value=''

ThisForm.List2.RowSource='ALLTRIM(cccwork.namesub>ject)'

Выбор предмета(List2):

SELECT * FROM cccwork;

where ALLTRIM(cccwork.namesub>ject)=ALLTRIM(this.value) INTO CURSOR ccccwork

ThisForm.text11.Value=ccccwork.mark

ThisForm.text12.Value=ccccwork.datedelivery

SELECT surname,name,patronymic,id_degree FROM professor;

WHERE professor.id_professor=ccccwork.id_professor INTO CURSOR professor2

SELECT degree,id_degree FROM degree;

WHERE degree.id_degree=professor2.id_degree INTO CURSOR deg

ThisForm.text1.Value=ALLTRIM(professor2.surname)+SPACE(1)+ALLTRIM(professor2.name)+SPACE(1)+ALLTRIM(professor2.patronymic)+SPACE(3)+ALLTRIM(deg.degree)

SELECT nametheme,id_theme FROM theme;

WHERE theme.id_theme=ccccwork.id_theme INTO CURSOR tema

ThisForm.text9.Value=ALLTRIM(tema.nametheme)

Кнопка «Добавить»:

SET PATH TO ('FORMS')

do FORM FORM2.Scx

Кнопка «Удалить»:

b=TRIM(ThisForm.List1.Value)

IF THISFORM.list1.ListIndex!=0 THEN

SELECT * from Student;

WHERE ALLTRIM(student.surname)+SPACE(1)+ALLTRIM(student.name)+SPACE(1)+ALLTRIM(student.patronymic)=b AND t10.id_group=student.id_group;

into cursor stu

SELECT * from courseworks;

WHERE courseworks.id_student=stu.id_student;

into cursor cour

SELECT * from professor;

WHERE professor.id_professor=cour.id_professor;

into cursor pro

DELETE FROM Student;

WHERE ALLTRIM(student.surname)+SPACE(1)+ALLTRIM(student.name)+SPACE(1)+ALLTRIM(student.patronymic)=b AND t10.id_group=student.id_group

DELETE FROM courseworks;

WHERE courseworks.id_student=stu.id_student

DELETE FROM sub>ject;

WHERE sub>ject.id_sub>ject=cour.id_sub>ject

DELETE FROM professor;

WHERE professor.id_professor=cour.id_professor

DELETE FROM degree;

WHERE pro.id_degree=degree.id_degree

THISFORM.List1.InteractiveChange()

THISFORM.Combo1.InteractiveChange()

MESSAGEBOX(" Студент удален!")

ELSE

MESSAGEBOX(" Студент не выбран!")

ENDIF

И в менеджере проекта Code/Programs

main:

ON shutdown do quit.prg

SET DELETED ON

SET PATH TO('\FORMS')

do form form1.scx

read event

quit:

Clear windows

CLOSE DATABASES ALL

SET PATH TO ('DATA\')

SET DELETED ON

OPEN DATABASE 1

PACK courseworks

PACK degree

PACK group

PACK professor

PACK student

PACK sub>ject

PACK theme

PACK DATABASE

CLOSE DATABASES ALL

QUIT

Нажатие на кнопку «Отчет по студентам»:

SET PATH TO('REPORTS\')

REPORT FORM st PREVIEW

Нажатие на кнопку «Отчет по преподавателям»:

SET PATH TO('REPORTS\')

REPORT FORM prof PREVIEW

Form2 – «Добавление информации о студенте и курсовой работе»

Инициализации формы:

SELECT namegroup FROM group INTO CURSOR group2

ThisForm.Combo1.RowSourceType= 2

ThisForm.Combo1.RowSource='group2.namegroup'

SELECT namesub>ject FROM sub>ject INTO CURSOR sub>ject2

ThisForm.Combo2.RowSourceType= 2

ThisForm.Combo2.RowSource='sub>ject2.namesub>ject'

ThisForm.Combo4.RowSourceType= 2

ThisForm.Combo4.RowSource='sub>ject2.namesub>ject'

SELECT degree FROM degree INTO CURSOR degree222

ThisForm.Combo5.RowSourceType= 2

ThisForm.Combo5.RowSource='degree222.degree'

ThisForm.Combo3.AddItem("3")

ThisForm.Combo3.AddItem("4")

ThisForm.Combo3.AddItem("5")

Нажатие на кнопку «Добавить группу»:

SELECT MAX(group.id_group) as m_group FROM group INTO CURSOR group_max2

INSERT INTO group(id_group,namegroup);

VALUES (group_max2.m_group+1,ALLTRIM(ThisForm.text7.Value))

SELECT namegroup FROM group INTO CURSOR group2

ThisForm.Combo1.RowSourceType= 2

ThisForm.Combo1.RowSource='group2.namegroup'

ThisForm.text7.Value=''

Нажатие на кнопку «Добавить предмет»:

SELECT MAX(sub>ject.id_sub>ject) as m_sub>ject FROM sub>ject INTO CURSOR sub>ject_max2

INSERT INTO sub>ject(id_sub>ject,namesub>ject);

VALUES (sub>ject_max2.m_sub>ject+1,ALLTRIM(ThisForm.text8.Value))

SELECT namesub>ject FROM sub>ject INTO CURSOR sub>ject22

ThisForm.Combo1.RowSourceType= 2

ThisForm.Combo1.RowSource='sub>ject22.namesub>ject'

ThisForm.text8.Value=''

Нажатие на кнопку «»:

SET PATH TO ('Forms\')

DO FORM getdataform

Нажатие на кнопку «Добавить уч.степень»:

SELECT MAX(degree.id_degree) as m_degree FROM degree INTO CURSOR degree_max2

INSERT INTO degree(id_degree,degree);

VALUES (degree_max2.m_degree+1,ALLTRIM(ThisForm.text10.Value))

SELECT degree FROM degree INTO CURSOR degree22

ThisForm.Combo5.RowSourceType= 2

ThisForm.Combo5.RowSource='degree22.degree'

ThisForm.text10.Value=''

Нажатие на кнопку «Добавить»:

SELECT MAX(courseworks.id_student) as m_id_student,MAX(courseworks.id_sub>ject) as m_id_sub>ject,MAX(courseworks.id_professor) as m_id_professor,MAX(courseworks.id_theme) as m_id_theme FROM courseworks INTO CURSOR courseworks_save

SELECT * FROM sub>ject INTO CURSOR sub>ject_save

SELECT * FROM student INTO CURSOR student_save

SELECT * FROM professor INTO CURSOR professor_save

SELECT * FROM degree INTO CURSOR degree_save

SELECT MAX(degree.id_degree) as m_degree FROM degree INTO CURSOR degree_max

SELECT MAX(group.id_group) as m_group FROM group INTO CURSOR group_max

SELECT MAX(sub>ject.id_sub>ject) as m_sub>ject FROM sub>ject INTO CURSOR sub>ject_max

SELECT MAX(theme.id_theme) as m_theme FROM theme INTO CURSOR theme_max

SELECT MAX(student.id_student) as m_student FROM student INTO CURSOR student_max

SELECT MAX(professor.id_professor) as m_professor FROM professor INTO CURSOR professor_max

SELECT * FROM theme INTO CURSOR theme_save

SELECT * FROM group INTO CURSOR group_save

SELECT * FROM group WHERE group.namegroup=ALLTRIM(THISFORM.combo1.Value) INTO CURSOR selectgr

SELECT COUNT(*) as ct;

FROM 1!theme;

WHERE LOWER(TRIM(Theme.nametheme))==LOWER(TRIM(THISFORM.text9.value))

INTO CURSOR ttt1

IF ttt1.ct!=0 THEN

MESSAGEBOX(" Такая тема есть!!!")

ELSE

SELECT * FROM courseworks;

where ALLTRIM(courseworks.mark)=ALLTRIM(thisform.Combo3.value);

INTO CURSOR wer

INSERT INTO student(id_student,surname,name,patronymic,id_group);

VALUES (courseworks_save.m_id_student+1,ALLTRIM(ThisForm.text1.Value),ALLTRIM(ThisForm.text2.Value),ALLTRIM(ThisForm.text3.Value),selectgr.id_group)

INSERTINTO courseworks(id_student,id_sub>ject,id_professor,datedelivery,mark,id_theme);

VALUES (courseworks_save.m_id_student+1,courseworks_save.m_id_sub>ject+1,courseworks_save.m_id_professor+1,(Thisform.text12.Value),wer.mark,courseworks_save.m_id_theme+1)

INSERT INTO degree(id_degree,degree);

VALUES (degree_max.m_degree+1,ALLTRIM(ThisForm.Combo5.Value))

INSERT INTO professor(id_professor,surname,name,patronymic,id_degree);

VALUES (courseworks_save.m_id_professor+1,ALLTRIM(ThisForm.text4.Value),ALLTRIM(ThisForm.text5.Value),ALLTRIM(ThisForm.text6.Value),degree_max.m_degree+1)

INSERT INTO theme(id_theme,nametheme);

VALUES (courseworks_save.m_id_theme+1,ALLTRIM(ThisForm.text9.Value))

MESSAGEBOX(" готово!!! ")

ENDIF

Нажатие на кнопку «Показать темы»:

SELECT * FROM sub>ject;

where ALLTRIM(thisform.combo4.value)=ALLTRIM(sub>ject.namesub>ject) into cursor sub>find

SELECT theme.id_theme, theme.nametheme, Courseworks.id_student,;

Courseworks.id_sub>ject, Courseworks.id_professor,;

Courseworks.datedelivery, Courseworks.mark, Courseworks.id_theme;

FROM ;

1!theme ;

INNER JOIN 1!courseworks ;

ON theme.id_theme = Courseworks.id_theme;

INTO CURSOR corrwork

SELECT * FROM corrwork;

WHERE sub>find.id_sub>ject=corrwork.id_sub>ject INTO CURSOR corwork

ThisForm.List1.RowSourceType=2

ThisForm.List1.Value=''

ThisForm.List1.RowSource='ALLTRIM(corwork.nametheme)'

Getdataform – «Выбор даты»

Нажатие кнопки «Выбрать»:

y=YEAR(THISFORM.olecontrol1.SelEnd)

m=MONTH(THISFORM.olecontrol1.SelEnd)

ch=DAY(THISFORM.olecontrol1.SelEnd)

form2.text12.Value=DATE(y,m,ch)

THISFORM.Release