44418

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

Курсовая

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

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

Русский

2013-11-12

282.5 KB

13 чел.

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


 

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

33091. Українська філософська та суспільно-політична думка другої половини XIX - XX століття 55.08 KB
  Пізнання він розумів як відображення зовнішнього світу людини засуджував агностицизм. У працях Що таке прогрес Роздуми про еволюцію в історії людства він намагався простежити розвиток від живої природи від простих частинок живої матерії до людини. Заперечуючи всяку владу людини над людиною він стверджує природне прагнення людини до добра. Це означає що вона розвивається за своїми законами незалежними від людини і людства і тому для її пояснення не потрібно залучати ні містику ні інші вигадки метафізиків та ідеалістів.
33092. Філософія української національної ідеї 31.64 KB
  Ми українець і як такий ми член нації яка не лише пригноблюється в русской державі в Росії й урядом а почасти і суспільністю панівної національності. Поет і прозаїк громадський діяч і політик науковий дослідник проблем історії й теорії літератури етнографії й фольклору політичної й економічної історії філософії досконалий знавець німецької польської російської мов він спрямовував усе своє надбання на народне відродження розвій української нації; збагачення української духовної культури. Франко був переконаний що...
33093. Поняття буття 12.67 KB
  Проблема буття виникла в епоху античності як своєрідна відповідь на її нові потреби. Буття на його думку гарант надійності і незнищенності світу та раз і назавжди заведеного порядку в ньому. Не змінюється лише буття тобто абсолютна думка.
33094. Матерія та її розуміння 15.73 KB
  Досліджуючи фундамент матерії сучасна фізика відкрила всезагальне перетворення матеріальних об'єктів. Простір і час це атрибути тобто суттєві властивості рухомої матерії. Однак філософи ідеалісти заперечують залежність часу і простору від матерії. Кантом простір і час апріорні й абсолютно порожні форми чуттєвого споглядання речей внутрішньо і споконвічно притаманні людській свідомості.
33095. Рух матерії 12.92 KB
  Рух є способом існування матерії. Ніде і ніколи не було і не може бути матерії без руху як і руху без матерії. Рух матерії абсолютний і вічний. Такий стан руху матерії називається спокоєм.
33096. Простір та час як філософські категорії 12.45 KB
  Простір і час це атрибути тобто суттєві властивості рухомої матерії. Однак філософи ідеалісти заперечують залежність часу і простору від матерії. Кантом простір і час апріорні й абсолютно порожні форми чуттєвого споглядання речей внутрішньо і споконвічно притаманні людській свідомості.
33097. Проблема свідомості в філософії 13.7 KB
  Жодна наукова проблема не є предметом таких далеких від науки і таких широких за змістом інтелектуальних спекуляцій як проблема свідомості. Варте уваги те що з кожним кроком уперед у дослідженнях психіки і свідомості людини кількість такого роду спекуляцій не зменшується. Однак слід пам'ятати що лише наукове осягнення природи свідомості може відкрити істину.
33098. Суспільна свідомість 13.6 KB
  Виділяють буденну і теоретичну свідомості. В основу цього членування покладено відношення свідомості до практики ступінь її узагальнення глибина зв'язку з практичними основами життя. У свідомості виділяють два рівні ідеологію і суспільну психологію. Суспільна психологія є частиною буденної свідомості.
33099. Формы собственности в условиях рыночной экономики 38 KB
  Содержание собственности в экономической литературе в том числе и учебной рассматривается как правило в трех проявлениях: социальном экономическом и правовом. Социальноэкономическую сущность собственности экономисты определяют неоднозначно. В этом определении очевидным является тесное взаимодействие социальной и экономической сторон собственности.