Компьютеризация деятельности на предприятии

Автор работы: Пользователь скрыл имя, 30 Марта 2014 в 22:04, курсовая работа

Краткое описание

Цель. Разработка тестовой программы в системе программирования Delphi 6.0.
Задачей данной работы являлось создание специализированного тестового программного обеспечения, рассчитанного на управление заранее определённой структурой информации и решение вполне определённого и ограниченного круга задач для сотрудников организации, которое одновременно позволяло бы не отвлекаться будущим пользователям на изучение вопросов, связанных с их деятельностью и средствами управления ими.

Содержание

ВВЕДЕНИЕ 6
1 КОМПЬЮТЕРИЗАЦИЯ ДЕЯТЕЛЬНОСТИ НА ПРЕДПРИЯТИИ 8
1.1 Информационное обеспечение управления предприятием на современном этапе 8
1.2 Содержание и требования, предъявляемые к информации 9
2 СРЕДА DELPHI 6.0 КАК СРЕДСТВО ДЛЯ РАЗРАБОТКИ ПО 11
2.1 Визуальное программирование 11
2.2 Интегрированная среда разработки 12
2.3 Библиотека визуальных компонент 15
2.4 Формы, модули и методы разработки "Two-Way Tools" 19
2.5 Средства программирования на Pascal 20
2.5.1 Краткие сведения о структуре программы 20
2.5.2 Система типов 24 2.5.3 Стандартные процедуры и функции 28
2.5.4 Стандартные функции 31
3 ЭКОНОМИЧЕСКАЯ ЧАСТЬ 33
3.1 Оценка затрат на разработку ПО 33
3.2 Расчёт технических показателей и эффективности проекта 41
3.3 Безопасность жизнедеятельности 42
3.3.1 Характеристика санитарно-гигиенических условий труда 42
3.3.2 Основные требования к искусственному освещению в производственном помещении 46
3.4 Инженерно-технические мероприятия по созданию благоприятных условий труда 46
ЗАКЛЮЧЕНИЕ 52
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 53
ПРИЛОЖЕНИЯ 55

Вложенные файлы: 1 файл

Дипломный проект.doc

— 683.50 Кб (Скачать файл)

3. Описание логики

3.1 Описание структуры программы и её основных частей

Программа Test состоит из 4 основных модулей:

- модуль Unit1.pas;

- модуль Unit2.pas;

- модуль Unit3.pas;

- модуль Unit4.pas;

- модуль Unit5.pas.

3.2 Описание функций, составных частей и связей между ними

3.2.1 Программа Test:

1. Модуль Unit1.pas - содержит главное окно программы, на котором находится главное меню программы.

2. Модуль Unit2.pas – содержит диалоговое окно с подтверждением о правильности введённых данных: ФИО тестируемого и предмет тестирования.

3. Модуль Unit3.pas – окно, позволяющее просматривать и отвечать на вопросы в процессе тестирования.

4. Модуль Unit4.pas – форма, отвечающая за отображение результатов.

5. Модуль Unit5.pas – для создания и заполнения нового тестового задания.

3.3 Сведения о языке программирования

Программа написана и скомпилирована в среде Borland Delphi 6.0 и для хранения данных использует базы данных Paradox 7.

3.4 Описание входных и выходных данных для каждой из составных частей

3.4.1 Программа Test

3.4.1.1 Входные данные программы

В окне модуля Unit2.pas входными данными являются инициалы тестируемого и выбранный предмет.

3.4.1.2 Выходные данные программы

Отображение текста текущего вопроса и номера вопроса предмета тестирования в окне «Тестирование» модуля Unit3.pas. Отображение оставшегося до конца тестирования времени, отображаемого в верхней панели окна.

Информационное окно о завершении времени, данного на тестирование.

Вывод результата тестирования в окне «Результаты» модуля Unit4.pas с указанными инициалами тестируемого и предмета тестирования и с набранным количеством баллов.

3.5 Описание логики составных частей

3.5.1 Программа Test

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

 

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

 

Если количество предметов более 10, можно воспользоваться фильтрацией поля Список тестов. Нажмите на кнопку Далее.

 

Рисунок 4 – Окно тестирования

 

В появившемся окне будут отображаться вопросы. Для навигации по вопросам нужно воспользоваться кнопками вперед - и назад - ,

а предполагаемые правильные ответы выделять с помощью

панели выбора:

 

Рисунок 5 – Панель выбора

 

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

Рисунок 6 – Окно результатов тестирования

 

Для заполнения нового тестового задания нажмите на кнопку Редактор тестов. В появившемся окне введите название предмета, количество вопросов и количество минут для проведения теста, и щёлкните по кнопке Создать. Появится диалоговое окно выбора файла с тестовыми вопросами. После открытия файла тесты автоматически заполнятся в новый предмет.

 

Рисунок 7 – Окно редактора тестов

 

 

ПРИЛОЖЕНИЕ 2

 

ЛИСТИНГ ПРОГРАММЫ

unit Unit1;

interface

uses

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

  Dialogs, ToolWin, ComCtrls, Menus, DB, DBTables, ExtCtrls, StdCtrls;

type

  TForm1 = class(TForm)

    StatusBar1: TStatusBar;

    ToolBar1: TToolBar;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    N3: TMenuItem;

    N4: TMenuItem;

    N5: TMenuItem;

    N6: TMenuItem;

    Table1: TTable;

    Table2: TTable;

    Table3: TTable;

    Table1Nam_Pred: TStringField;

    Table1Ind: TAutoIncField;

    Table1Count: TIntegerField;

    Table1Name_Teach: TStringField;

    Table1Time: TIntegerField;

    Table1Count_Quest: TIntegerField;

    Table1Type_zap: TStringField;

    Table3Quest_M: TBlobField;

    Table3Quest_B: TBlobField;

    Table3Answer: TIntegerField;

    Table4: TTable;

    Table4Quest_M: TBlobField;

    Table4Quest_B: TBlobField;

    Table4Answer: TIntegerField;

    Table2FIO: TStringField;

    Table2Name_Sub: TStringField;

    Table2Ball: TIntegerField;

    Table2Date: TDateField;

    Timer1: TTimer;

    N10: TMenuItem;

    Label1: TLabel;

    procedure N5Click(Sender: TObject);

    procedure N6Click(Sender: TObject);

    procedure N2Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

    procedure N3Click(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

    procedure N10Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

  Fio, predm, ind : string;

  count, x, z, res_i : integer;

  ms, mOtv : array [1..30] of integer;

implementation

uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7;

{$R *.dfm}

procedure TForm1.N5Click(Sender: TObject);

var

  Dat : TForm2;

begin

  Dat := TForm2.Create(Application);

  Dat.Show;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

  Application.Terminate;

end;

procedure TForm1.N2Click(Sender: TObject);

label m1;

var

  Test : TForm3;

  j, i, y : integer;

begin

  Table4.Active := True;

  if ((predm ='') or (fio = '')) then

    begin

      ShowMessage('Введите данные!');

      exit;

    end;

  Test := TForm3.Create(Application);

  Test.Label1.Caption := predm;

  Test.Show;

  Test.WindowState := wsMaximized;

  Table3.DatabaseName := ExtractFilePath(Application.ExeName)+'Base\';

  Table3.TableName := 'File'+ind+'.db';

  Table3.Active := true;

  for j := 0 to Table4.RecordCount-1 do

    Table4.Delete;

  for j := 1 to 30 do

    ms[j] := 0;

  Randomize;

  for i := 1 to 30 do

    begin

    m1:

      x := Random(count);

      for j:= 1 to 30 do

        if ((x = ms[j]) or (x = 0)) then

          goto m1;

      ms[i] := x;

    end;

  for y := 1 to 30 do

    begin

      Table3.RecNo := ms[y];

      Table4.Append;

      Table4Quest_M.Value := Table3Quest_M.Value;

      Table4Answer.AsInteger := Table3Answer.AsInteger;

      Table4.Post;

    end;

  for i := 1 to 30 do

    mOtv[i] := 0;

  Table4.First;

  Test.RichEdit1.Text := Table4Quest_M.Value;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

  predm := '';

  fio := '';

  ind := '';

  z := 1;

  res_i := 0;

end;

procedure TForm1.N3Click(Sender: TObject);

var

  Rest : TForm4;

begin

  Rest := TForm4.Create(Application);

  Rest.Show;

  Rest.WindowState := wsMaximized;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

  N3Click(Form1);

  Timer1.Enabled := false;

end;

procedure TForm1.N10Click(Sender: TObject);

begin

  Form5.ShowModal;

end;

end.

unit Unit2;

interface

uses

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

  Dialogs, StdCtrls, ComCtrls, ExtCtrls, Grids, DBGrids, DB;

type

  TForm2 = class(TForm)

    DBGrid1: TDBGrid;

    Panel1: TPanel;

    StatusBar1: TStatusBar;

    Label1: TLabel;

    Label2: TLabel;

    Edit1: TEdit;

    Edit2: TEdit;

    Button1: TButton;

    Button2: TButton;

    DataSource1: TDataSource;

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

    procedure Button2Click(Sender: TObject);

    procedure Edit2Change(Sender: TObject);

    procedure UpdateFilter(DataSet: TDataSet);

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form2: TForm2;

  s, ss : String;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.UpdateFilter(DataSet: TDataSet);

var

  FR: TFilterRecordEvent;

begin

  with DataSet do

  begin

    FR := OnFilterRecord;

    if Assigned(FR) and Active then

    begin

      DisableControls;

      try

        OnFilterRecord := nil;

        OnFilterRecord := FR;

      finally

        EnableControls;

      end;

    end;

  end;

end;

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

begin

  Action := caFree;

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

  Close;

end;

procedure TForm2.Edit2Change(Sender: TObject);

begin

  s:=Edit2.Text;

  ss:='Nam_Pred';

  if length(Edit2.Text) > 0 then

  begin

    Form1.Table1.FilterOptions:=[foCaseInsensitive];

    Form1.Table1.Filtered := TRUE;

    Form1.Table1.Filter:=ss + ' = ''' + s + '*''';

    UpdateFilter(Form1.Table1);

  end

  else

    Form1.Table1.Filtered := FALSE;

end;

procedure TForm2.Button1Click(Sender: TObject);

begin

  if Edit1.Text = '' then

    begin

      ShowMessage('Введите инициалы!');

      exit;

    end;

  if Form1.Table1.RecordCount <> 0 then

    begin

      fio := Edit1.Text;

      predm := Form1.Table1Nam_Pred.Value;

      ind := Form1.Table1Ind.AsString;

      count := Form1.Table1Count.AsInteger;

      Close;

    end

  else

    ShowMessage('Отсутствует БД!');

end;

end.

unit Unit3;

 

interface

 

uses

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

  Dialogs, StdCtrls, ComCtrls, ExtCtrls, Buttons;

type

  TForm3 = class(TForm)

    StatusBar1: TStatusBar;

    Panel1: TPanel;

    RichEdit1: TRichEdit;

    Panel2: TPanel;

    Label1: TLabel;

    RadioGroup1: TRadioGroup;

    SpeedButton1: TSpeedButton;

    SpeedButton2: TSpeedButton;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    SpeedButton3: TSpeedButton;

    Timer1: TTimer;

    Label5: TLabel;

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

    procedure SpeedButton2Click(Sender: TObject);

    procedure SpeedButton1Click(Sender: TObject);

    procedure SpeedButton3Click(Sender: TObject);

    procedure FormShow(Sender: TObject);

    procedure Timer1Timer(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form3: TForm3;

  min : integer;

implementation

uses Unit1, DB;

{$R *.dfm}

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

begin

  Action := caFree;

end;

procedure TForm3.SpeedButton2Click(Sender: TObject);

begin

  inc(z);

  Form1.Table4.Next;

  Label2.Caption := IntToStr(z);

  RichEdit1.Text := Form1.Table4Quest_M.Value;

  // Запомнить RadioGroup

  if RadioGroup1.ItemIndex = 0 then mOtv[z-1] := 1;

  if RadioGroup1.ItemIndex = 1 then mOtv[z-1] := 2;

  if RadioGroup1.ItemIndex = 2 then mOtv[z-1] := 3;

  if RadioGroup1.ItemIndex = 3 then mOtv[z-1] := 4;

  if RadioGroup1.ItemIndex = 4 then mOtv[z-1] := 5;

 

  RadioGroup1.ItemIndex := -1;

  if mOtv[z] <> 0 then   // Вывод RadioGroup

    Begin

       RadioGroup1.ItemIndex := mOtv[z]-1;

    end;

  if z = 30 then

    SpeedButton2.Enabled := false;

  SpeedButton1.Enabled := true;

end;

procedure TForm3.SpeedButton1Click(Sender: TObject);

begin

  dec(z);

  Form1.Table4.Prior;

  Label2.Caption := IntToStr(z);

  RichEdit1.Text := Form1.Table4Quest_M.Value;

  // Запомнить RadioGroup

  if RadioGroup1.ItemIndex = 0 then mOtv[z+1] := 1;

  if RadioGroup1.ItemIndex = 1 then mOtv[z+1] := 2;

  if RadioGroup1.ItemIndex = 2 then mOtv[z+1] := 3;

  if RadioGroup1.ItemIndex = 3 then mOtv[z+1] := 4;

  if RadioGroup1.ItemIndex = 4 then mOtv[z+1] := 5;

  RadioGroup1.ItemIndex := -1;

  if mOtv[z] <> 0 then   // Вывод RadioGroup

    Begin

       RadioGroup1.ItemIndex := mOtv[z]-1;

    end;

  if z = 1 then

    SpeedButton1.Enabled := false;

  SpeedButton2.Enabled := true;

end;

procedure TForm3.SpeedButton3Click(Sender: TObject);

var

  i : integer;

begin

  Form1.Table4.First;

  for i := 1 to 30 do

    begin

      if Form1.Table4Answer.AsInteger = mOtv[i] then

        inc(res_i);

      Form1.Table4.Next;

    end;

  Form1.Table2.Append;

  Form1.Table2FIO.AsString := Fio;

  Form1.Table2Name_Sub.AsString := predm;

  Form1.Table2Ball.AsInteger := res_i;

  Form1.Table2Date.AsDateTime := Date;

  Form1.Table2.Post;

  Form1.Timer1.Enabled := true; 

  Close;

end;

procedure TForm3.FormShow(Sender: TObject);

begin

  Timer1.Enabled := true;

  min := 1800;

  z := 1;

  res_i := 0;

end;

procedure TForm3.Timer1Timer(Sender: TObject);

begin

  dec(min);

  Label5.Caption := '';

  if (min mod 60)<10 then

    Label5.Caption := IntToStr(min div 60) +'.0'+ IntToStr(min mod 60)

  else

    Label5.Caption := IntToStr(min div 60) +'.'+ IntToStr(min mod 60);

  if min = 0 then

    begin

      ShowMessage('Ваше время  вышло!');

      SpeedButton3Click(Form3);

    end;

end;

end.

unit Unit4;

interface

uses

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

  Dialogs, ExtCtrls, ComCtrls, DB, Grids, DBGrids, StdCtrls;

type

  TForm4 = class(TForm)

    StatusBar1: TStatusBar;

    Panel1: TPanel;

    DBGrid1: TDBGrid;

    DataSource1: TDataSource;

    Edit1: TEdit;

    Label1: TLabel;

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

    procedure UpdateFilter(DataSet: TDataSet);

    procedure Edit1Change(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form4: TForm4;

  s, ss : String;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm4.UpdateFilter(DataSet: TDataSet);

var

  FR: TFilterRecordEvent;

begin

  with DataSet do

  begin

    FR := OnFilterRecord;

    if Assigned(FR) and Active then

    begin

      DisableControls;

      try

        OnFilterRecord := nil;

        OnFilterRecord := FR;

      finally

        EnableControls;

      end;

    end;

  end;

end;

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

begin

  Action := caFree;

end;

procedure TForm4.Edit1Change(Sender: TObject);

begin

  s:=Edit1.Text;

  ss:='FIO';

  if length(Edit1.Text) > 0 then

  begin

    Form1.Table2.FilterOptions:=[foCaseInsensitive];

    Form1.Table2.Filtered := TRUE;

    Form1.Table2.Filter:=ss + ' = ''' + s + '*''';

    UpdateFilter(Form1.Table2);

  end

  else

    Form1.Table2.Filtered := FALSE;

end;

end.

unit Unit5;

interface

uses

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

  Dialogs, ComCtrls, Gauges, ToolWin, Grids, DBGrids, StdCtrls, ExtCtrls,

  DB, DBTables, ComObj;

type

  TForm5 = class(TForm)

    Panel2: TPanel;

    Label2: TLabel;

    Label3: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    Button1: TButton;

    Edit2: TEdit;

    Edit3: TEdit;

    Edit4: TEdit;

    Edit5: TEdit;

    Button2: TButton;

    Panel1: TPanel;

    Label1: TLabel;

    Edit1: TEdit;

    DBGrid1: TDBGrid;

    ToolBar1: TToolBar;

    Panel3: TPanel;

    Label7: TLabel;

    Gauge1: TGauge;

    StatusBar1: TStatusBar;

    DataSource1: TDataSource;

    OpenDialog1: TOpenDialog;

    Table2: TTable;

    Table2Quest_M: TBlobField;

    Table2Quest_B: TBlobField;

    Table2Answer: TIntegerField;

    Table1: TTable;

    Table1Nam_Pred: TStringField;

    Table1Ind: TAutoIncField;

    Table1Count: TIntegerField;

    Table1Name_Teach: TStringField;

    Table1Time: TIntegerField;

    Table1Count_Quest: TIntegerField;

    Table1Type_zap: TStringField;

    procedure Button2Click(Sender: TObject);

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form5: TForm5;

  MSWord, Table: OLEVariant;

  CellText : string;

  iRec, i : integer;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm5.Button2Click(Sender: TObject);

begin

  if Table1.RecordCount<>0 then

    begin

      DeleteFile(ExtractFilePath(Application.ExeName) + 'Base\' + Table1Ind.AsString + '.db');

      Table1.Delete;

end;

procedure TForm5.Button1Click(Sender: TObject);

begin

  if Edit2.Text = '' then

    begin

      ShowMessage('Необходимо ввести название теста!');

      exit;

    end;

  if OpenDialog1.Execute then

    begin

      MSWord := CreateOleObject('Word.Application');

      MSWord.Documents.Open(OpenDialog1.FileName);

      Table := MSWord.ActiveDocument.Tables.Item(1);

        begin

          if Table.Columns.Count <> 2 then

            begin

              ShowMessage('Неправильное сохранение!');

              MSWord.Quit;

              exit;

          else

            begin

              Table1.Append;

              Table1Nam_Pred.Value := Edit2.Text;

              Table1Count.AsInteger := Table.Rows.Count;

              Table1Name_Teach.Value := Edit3.Text;

              Table1Time.AsString := Edit5.Text;

              Table1Count_Quest.AsString := Edit4.Text;

              Table1.Post;

              with TTable.create(self) do

                begin

Информация о работе Компьютеризация деятельности на предприятии