44418

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

Курсовая

Информатика, кибернетика и программирование

Требования, предъявляемые к программе, предполагают использование объектно-ориентированного подхода при разработке программы. Данную программу можно реализовать на любом объектно-ориентированном языке программирования. Одним из наиболее распространенных на сегодня объектно-ориентированных языков программирования является Object Pascal.

Русский

2013-11-12

282.5 KB

9 чел.

- 26 -

Содержание

[1] Введение

[2] 1. Анализ технического задания

[3]
2. Определение требований к системе

[4] 3. Разработка модели данных

[4.1] 3.1 Построение логической модели БД

[4.2] 3.2 Построение физической модели БД

[5] 4. Разработка алгоритмов работы системы

[6] 5. Обеспечение требований к безопасности данных

[7] 6.Руководство по работе с системой

[7.1] 6.1 Руководство программиста

[7.2] 6.2. Руководство администратора

[7.3] 6.3. Руководство пользователя

[8] Заключение

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

[10] Приложение А


Введение

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

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

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


1. Анализ технического задания

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

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

Требования, предъявляемые к программе, предполагают использование объектно-ориентированного подхода при разработке программы. Данную программу можно реализовать на любом объектно-ориентированном языке программирования. Одним из наиболее распространенных на сегодня объектно-ориентированных языков программирования является Object Pascal. Язык Object Pascal позволяет получить код, сравнимый по быстродействию с кодом на Ассемблере. Borland Delphi – мощная среда разработки, обеспечивающая высокое качество кода на протяжении всего цикла разработки ПО, от проектирования до внедрения, является мощным RAD-инструментом, предоставляющим возможность программирования в стиле drag-and-drop, основанного на компонентах. Этот стиль программирования получил широкое распространение, практически вытеснив концепцию каркасов. Каркас это основа, скелет вашего приложения, который объединяет в себе все его части. Однако у каркасов есть существенный недостаток – вместо того чтобы сделать программирование более простым и гибким, каркасы вынуждают писать программы по заранее определенным жестким правилам. Несмотря на то, что каркасы действительно ускоряют разработку приложения, предоставляя в распоряжение разработчика многие из основных функций нормального Windows приложения, они сразу же встают на пути создания нестандартных программ, то есть практически невозможно сделать то, что каркас  не  предоставляет  или  изменить  сам  каркас. В  отличие  от каркасов компоненты никакой структуры не навязывают [2]. Есть ещё один аспект, на который необходимо обратить внимание: в Borland Delphi зашита невероятно мощная и чрезвычайно гибкая среда программирования баз данных, что немаловажно для разрабатываемой программы. По сути дела это первая среда программирования баз данных для Object Pascal. Интерфейс с базами данных во многих других системах Object Pascal состоит из набора объектов, которые являются лишь тонкими оболочками, скрывающими под собой низкоуровневые функции баз данных. Для таких объектов обычно требуются десятки параметров для открытия и присоединения к базе данных. Это не сравнится с полным набором drag-and-drop компонентов баз данных, встроенных в систему. Эта среда содержит полный набор управляющих элементов для работы с данными, которые вообще не требуют программирования.


2. Определение требований к системе

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

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

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


3. Разработка модели данных

3.1 Построение логической модели БД

В программе необходимо реализовать базу данных для хранения базы вопросов. Поэтому необходимо выделить сущность «Вопросы». Атрибутами сущности «Вопросы» является:

  1.  Номер вопроса.
  2.  Текст вопроса.

Кроме текстов вопросов необходимо хранить варианты ответов. Поэтому выделим следующую сущность «Ответы». Атрибутами для этой сущности являются:

  1.  Номер вопроса.
  2.  Вариант ответа №1
  3.  Вариант ответа №2
  4.  Вариант ответа №3
  5.  Вариант ответа №4
  6.  Номер правильного ответа

Рассмотрев используемые данные, можно построить модель данных.

Вопросы

Ответы

Номер вопроса

Текст вопроса

Номер вопроса.

Вариант ответа №1

Вариант ответа №2

Вариант ответа №3

Номер правильного ответа

Рисунок 1 – Логическая модель данных

3.2 Построение физической модели БД

Рисунок 2 – Физическая модель данных


4. Разработка алгоритмов работы системы

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

if(cur_q <> 0) then

 begin

   IBQuery2.Close;

   IBQuery2.SQL.Text := 'select * from temp where question = :q';

   IBQuery2.ParamByName('q').AsInteger := cur_q;

   IBQuery2.Open;

   IBQuery2.FetchAll;

   if IBQuery2.RecordCount > 0 then

   begin

     IBQuery2.SQL.Text := 'update temp set answer = :a where question = :q';

     IBQuery2.ParamByName('q').AsInteger := cur_q;

     IBQuery2.ParamByName('a').AsInteger := RadioGroup1.ItemIndex;

     IBQuery2.ExecSQL;

   end

   else

   begin

     IBQuery2.SQL.Text := 'insert into temp(question,answer) values(:q,:a)';

     IBQuery2.ParamByName('q').AsInteger := cur_q;

     IBQuery2.ParamByName('a').AsInteger := RadioGroup1.ItemIndex;

     IBQuery2.ExecSQL;

   end;

 end;

 RadioGroup1.Items.Clear;

 IBQuery1.Close;

 IBQuery1.ParamByName('question').AsInteger := IBTable1.FieldByName('ID_QUESTION').AsInteger;

 IBQuery1.Open;

 IBQuery1.FetchAll;

 IBQuery1.First;

 for i:=0 to IBQuery1.RecordCount-1 do

 begin

   RadioGroup1.Items.Add(IBQuery1.FieldByName('Answer').AsString);

   IBQuery1.Next;

 end;

 cur_q := IBTable1.FieldByName('ID_QUESTION').AsInteger;

 IBQuery2.SQL.Text := 'select answer from temp where question = :q ';

 IBQuery2.ParamByName('q').AsInteger := cur_q;

 IBQuery2.Open;

 IBQuery2.FetchAll;

 if(IBQuery2.RecordCount > 0) then

 begin

   IBQuery2.First;

   RadioGroup1.ItemIndex := IBQuery2.FieldByName('answer').AsInteger;

 end;

При указании варианта ответа выбранный ответ заносится во временную таблицу Temp:

IBQuery2.Close;

   IBQuery2.SQL.Text := 'select * from temp where question = :q';

   IBQuery2.ParamByName('q').AsInteger := cur_q;

   IBQuery2.Open;

   IBQuery2.FetchAll;

   if IBQuery2.RecordCount > 0 then

   begin

     IBQuery2.SQL.Text := 'update temp set answer = :a where question = :q';

     IBQuery2.ParamByName('q').AsInteger := cur_q;

     IBQuery2.ParamByName('a').AsInteger := RadioGroup1.ItemIndex;

     IBQuery2.ExecSQL;

   end

   else

   begin

     IBQuery2.SQL.Text := 'insert into temp(question,answer) values(:q,:a)';

     IBQuery2.ParamByName('q').AsInteger := cur_q;

     IBQuery2.ParamByName('a').AsInteger := RadioGroup1.ItemIndex;

     IBQuery2.ExecSQL;

   end;

 end;

При нажатии на кнопку Закончить необходимо определить количество верных ответов и вывести это на экран.

if(cur_q <> 0) then

 begin

   IBQuery2.Close;

   IBQuery2.SQL.Text := 'select * from temp where question = :q';

   IBQuery2.ParamByName('q').AsInteger := cur_q;

   IBQuery2.Open;

   IBQuery2.FetchAll;

   if IBQuery2.RecordCount > 0 then

   begin

     IBQuery2.SQL.Text := 'update temp set answer = :a where question = :q';

     IBQuery2.ParamByName('q').AsInteger := cur_q;

     IBQuery2.ParamByName('a').AsInteger := RadioGroup1.ItemIndex;

     IBQuery2.ExecSQL;

   end

   else

   begin

     IBQuery2.SQL.Text := 'insert into temp(question,answer) values(:q,:a)';

     IBQuery2.ParamByName('q').AsInteger := cur_q;

     IBQuery2.ParamByName('a').AsInteger := RadioGroup1.ItemIndex;

     IBQuery2.ExecSQL;

   end;

 end;

 IBQuery2.SQL.Text := 'select rigth from answers join temp on temp.question = answers.question and temp.answer = answers.answer_no';

 IBQuery2.Open;

 IBQuery2.First;

 sum := 0;

 for i:=1 to IBTable1.RecordCount do

 begin

   sum := sum + IBQuery2.FieldByName('rigth').AsInteger;

   IBQuery2.Next;

 end;

 ShowMessage('Правильных ответов ' + IntToStr(sum) + ' из ' + IntToStr(IBTable1.RecordCount));

 IBQuery2.SQL.Text := 'delete from temp';

 IBQuery2.ExecSQL;

 Close;

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

'select rigth from answers join temp on temp.question = answers.question and temp.answer = answers.answer_no'

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

  1.  IBDatabase – компонент подключения к серверу баз данных (СУБД).
  2.  IBTranzaction  - компонент для работы с механизмом транзакций.
  3.  IBTable  - компонент для доступа к таблицам БД.
  4.  DataSource – компонент для связи визуальных компонент отображения данных с невизуальными компонентами доступа к данным.
  5.  DBGrid – визуальный компонент отображения табличных данных.
  6.  IBQuery – компонент для выполнения запросов SQL к БД.


5. Обеспечение требований к безопасности данных

Необходимая безопасность данных обеспечивается на уровне СУБД Firebird.

Для подключения к базе данных используется системный пользователь SYSDBA (пароль masterkey). При необходимости можно добавит новых пользователей, для этого в системном каталоге СУБД имеется база данных security.fdb в которой располагаются роли пользователей, их имена и пароли.


6.Руководство по работе с системой

6.1 Руководство программиста

Программа состоит из исполнимого модуля Tester.exe, файла базы пользователей base.fdb. Данная программа тестировалась на компьютере следующей минимальной конфигурации:

  1.  процессор Pentium 133 МГц;
  2.  ОЗУ 256 МБ;
  3.  ОС Windows 98.

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

Используемые компоненты:

  1.  MainMenu – главное меню программы.
  2.  GroupBox – визуальный компонент для группировки компонент.
  3.  PageControl – компонент для реализации закладок на форме.
  4.  IBDatabase – компонент подключения к серверу баз данных (СУБД).
  5.  IBTranzaction  - компонент для работы с механизмом транзакций.
  6.  IBTable  - компонент для доступа к таблицам БД.
  7.  DataSource – компонент для связи визуальных компонент отображения данных с невизуальными компонентами доступа к данным.
  8.  DBGrid – визуальный компонент отображения табличных данных.
  9.  IBQuery – компонент для выполнения запросов SQL к БД.

6.2. Руководство администратора

Для корректной работы программы необходимо наличие СУБД Firebird 2.1 и выше. Данная СУБД является бесплатной и легко скачивается с официального сайта www.firebird.org. Возможна нормальная работа с аналогом – СУБД Interbase.

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

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

 Чтобы войти в программу, запустите файл Raskroy.exe. После этого на экран будет выведено главное окно.

Рисунок 3 – главное окно программы

Список вопросов представлен в верхней части приложения:

Рисунок 4 – список вопросов

Текущий вопрос отмечается специальным знаком слева от текста:

Рисунок 5 – выбранный вопрос

Варианты ответа располагаются внизу формы:

Рисунок 6 – варианты ответа

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

Для завершения теста необходимо нажать на кнопку Закончить.:

Рисунок 7 – Кнопка закончить

При завершении теста система подсчитает количество правильных ответов и выведет результаты в сообщении:

Рисунок 8 – Результаты теста

Для редактирования базы вопросов служит приложение Редактор теста.

Рисунок 9 – главное окно редактора вопросов

Для редактирования, добавления и удаления вопросов служит навигатор:

Рисунок 10 – кнопки редактирования вопросов

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

Рисунок 11 – кнопки редактирования вопросов


Заключение

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

Все предъявленные требования к системе были выполнены.


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

1. Электронный вариант лекций по дисциплине «Технология программирования».

2. Электронный вариант лекций по дисциплине «ООП».


Приложение А

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

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, IBQuery, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids, DB,

 IBCustomDataSet, IBTable, IBDatabase,Unit2;

type

 TForm1 = class(TForm)

   IBDatabase1: TIBDatabase;

   IBTransaction1: TIBTransaction;

   IBTable1: TIBTable;

   DataSource1: TDataSource;

   Panel1: TPanel;

   DBGrid1: TDBGrid;

   Splitter1: TSplitter;

   Panel2: TPanel;

   IBQuery1: TIBQuery;

   RadioGroup1: TRadioGroup;

   Button1: TButton;

   IBQuery2: TIBQuery;

   procedure DataSource1DataChange(Sender: TObject; Field: TField);

   procedure FormShow(Sender: TObject);

   procedure Button1Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

 Form2: TForm2;

 cur_q:Integer;

implementation

{$R *.dfm}

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);

var

 i:Integer;

begin

 if(cur_q <> 0) then

 begin

   IBQuery2.Close;

   IBQuery2.SQL.Text := 'select * from temp where question = :q';

   IBQuery2.ParamByName('q').AsInteger := cur_q;

   IBQuery2.Open;

   IBQuery2.FetchAll;

   if IBQuery2.RecordCount > 0 then

   begin

     IBQuery2.SQL.Text := 'update temp set answer = :a where question = :q';

     IBQuery2.ParamByName('q').AsInteger := cur_q;

     IBQuery2.ParamByName('a').AsInteger := RadioGroup1.ItemIndex;

     IBQuery2.ExecSQL;

   end

   else

   begin

     IBQuery2.SQL.Text := 'insert into temp(question,answer) values(:q,:a)';

     IBQuery2.ParamByName('q').AsInteger := cur_q;

     IBQuery2.ParamByName('a').AsInteger := RadioGroup1.ItemIndex;

     IBQuery2.ExecSQL;

   end;

 end;

 RadioGroup1.Items.Clear;

 IBQuery1.Close;

 IBQuery1.ParamByName('question').AsInteger := IBTable1.FieldByName('ID_QUESTION').AsInteger;

 IBQuery1.Open;

 IBQuery1.FetchAll;

 IBQuery1.First;

 for i:=0 to IBQuery1.RecordCount-1 do

 begin

   RadioGroup1.Items.Add(IBQuery1.FieldByName('Answer').AsString);

   IBQuery1.Next;

 end;

 cur_q := IBTable1.FieldByName('ID_QUESTION').AsInteger;

 IBQuery2.SQL.Text := 'select answer from temp where question = :q ';

 IBQuery2.ParamByName('q').AsInteger := cur_q;

 IBQuery2.Open;

 IBQuery2.FetchAll;

 if(IBQuery2.RecordCount > 0) then

 begin

   IBQuery2.First;

   RadioGroup1.ItemIndex := IBQuery2.FieldByName('answer').AsInteger;

 end;

end;

procedure TForm1.FormShow(Sender: TObject);

begin

 //IBQuery2.SQL.Text := 'delete from temp';

 //IBQuery2.ExecSQL;

 cur_q := IBTable1.FieldByName('ID_QUESTION').AsInteger;

end;

procedure TForm1.Button1Click(Sender: TObject);

var i,sum:integer;

begin

 if(cur_q <> 0) then

 begin

   IBQuery2.Close;

   IBQuery2.SQL.Text := 'select * from temp where question = :q';

   IBQuery2.ParamByName('q').AsInteger := cur_q;

   IBQuery2.Open;

   IBQuery2.FetchAll;

   if IBQuery2.RecordCount > 0 then

   begin

     IBQuery2.SQL.Text := 'update temp set answer = :a where question = :q';

     IBQuery2.ParamByName('q').AsInteger := cur_q;

     IBQuery2.ParamByName('a').AsInteger := RadioGroup1.ItemIndex;

     IBQuery2.ExecSQL;

   end

   else

   begin

     IBQuery2.SQL.Text := 'insert into temp(question,answer) values(:q,:a)';

     IBQuery2.ParamByName('q').AsInteger := cur_q;

     IBQuery2.ParamByName('a').AsInteger := RadioGroup1.ItemIndex;

     IBQuery2.ExecSQL;

   end;

 end;

 IBQuery2.SQL.Text := 'select rigth from answers join temp on temp.question = answers.question and temp.answer = answers.answer_no';

 IBQuery2.Open;

 IBQuery2.First;

 sum := 0;

 for i:=1 to IBTable1.RecordCount do

 begin

   sum := sum + IBQuery2.FieldByName('rigth').AsInteger;

   IBQuery2.Next;

 end;

 ShowMessage('Правильных ответов ' + IntToStr(sum) + ' из ' + IntToStr(IBTable1.RecordCount));

 IBQuery2.SQL.Text := 'delete from temp';

 IBQuery2.ExecSQL;

 Close;

end;

end.


 

А также другие работы, которые могут Вас заинтересовать

6281. Противотуберкулезные, противоспирохетозные, противопротозойные средства 63.5 KB
  Противотуберкулезные, противоспирохетозные, противопротозойные средства План. Классификация, характеристика противотуберкулезных средств. Общая характеристика, принципы действия, применение, побочные эффекты противоспирохетозных средств....
6282. Иммуннопрофилактические препараты 1.5 MB
  Иммуннопрофилактические препараты Вакцины - иммунобиологические препараты, предназначенные для активной иммунопрофилактики, то есть для создания активной специфической невосприимчивости организма к конкретному возбудителю. Вакцинация признана В...
6283. Генетическая структура популяции 120 KB
  Генетическая структура популяции Генофонд и фенофонд популяции Основу современной эволюционной теории составляет изучение популяционной генетики - отрасль генетики, изучающая наследственную преемственность в группах организмов одного вида, которы...
6284. Народные движения в середине - второй половине XVII веков 54.5 KB
  Народные движения в середине - второй половине XVII веках. Причины массовых народных выступлений в XVII в. Причиной большинства массовых народных выступлений в середине XVII в. было тяжелое финансовое положение страны, вынуждавшее...
6285. Филологическая философия 109 KB
  Филологическая философия Вопрос 1 Философия Ф. Ницше. Падающего - толкни. Самое злое нужно для блага сверхчеловека (Ф. Ницше). Жизнь и труды Ф. Ницше. Немецкий философ Фридрих Вильгельм Ницше (1844-1900) родился Саксонии, провинци...
6286. Санитарно-гигиенические и технологические требования к тепловому режиму 103 KB
  Санитарно-гигиенические и технологические требования к тепловому режиму Исторический обзор развития систем отопления - На большей части территории России в условиях современного города вследствие особенности климата до 80% своей жизни человек провод...
6287. Противогрибковые, противовирусные, противоглистные средства 62.5 KB
  Противогрибковые, противовирусные, противоглистные средства План 1. Характеристика противогрибковых средств. 2. Классификация противовирусных средств, особенности действия, применение, побочные эффекты средств для профилактики и лечения гриппа, герп...
6288. Философия и наука ХХ века 122.5 KB
  Философия и наука ХХ века. Вопрос 1 Экзистенциализм: истоки, основные представители и концепты. Не существует иной вселенной, кроме вселенной человека, вселенной человеческой субъективности (Ж.П. Сартр). Причина появления, представител...
6289. Выбор уставок дистанционной защиты и его оценка 102.5 KB
  1. Выбор уставок дистанционной защиты Ниже рассматривается выбор характеристик трехступенчатой ДЗ на примере участка сети с одиночными ЛЭП, показанного на рис.11.44. Выбираются уставки ДЗ А, уставки ДЗ В и С принимаются заданными. Характеристики сог...