Отчет по практике в ООП Delphi 7

Автор работы: Пользователь скрыл имя, 28 Октября 2013 в 00:20, отчет по практике

Описание работы

В ходе прохождения квалификационной практики мне предстоит доработать мной ранее созданную универсальную тестовую оболочку Testing v.1.0.
Задачи:
1) ПП должен выбирать из базы без повтора 10 вопросов случайным образом.
2) ПП должен выводить выбранные вопросы пользователю в удобной форме.
3) ПП должен содержать разделы для редактирования базы тестировщиком.
4) ПП должен выводить вопросы с поддержкой многострочного отображения.
5) ПП должен выводить протокол прохождения теста.

Содержание работы

Введение 4
Описание программного продукта. Структурная схема переходов между формами универсальной тестовой оболочки «Testing v. 1.1» 5
Описание первой формы 6
Описание объектов: 6
Листинг программного кода 7
Описание второй формы 14
Описание объектов: 14
Описание третьей формы 15
Описание объектов: 15
Описание четвертой формы 16
Описание объектов: 16
Описание пятой формы 17
Описание объектов 17
Листинг программного кода 18
Заключение ……………………………………………………………………………………22

Файлы: 1 файл

Отчет по практике ОАИП 4 КУРС.docx

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

Отчет по квалификационной практике, дисциплина ОАиП, Киселева Н. С., группы АСУ-412


Министерство образования  и науки Российской Федерации

Федеральное государственное  автономное образовательное учреждение высшего профессионального образования

«Уральский федеральный  университет

имени первого  Президента России Б.Н.Ельцина»

Филиал УрФУ в г.Среднеуральске

 

 

 

 

 

Специальность: 230103 «Автоматизированные системы управления и обработки информации при измерении и контроле»

Группа:        АСУ-412

 

 

 

 

 

 

ОТЧЕТ

ПО УЧЕБНОЙ  ПРАКТИКЕ

Дисциплина: «Основы  алгоритмизации и программирования»

 

 

 

Студент:        ________

 

Дата:         «____»________2012 г.

 

Преподаватель:       ________Захарова Е.А.

 

Дата:         «____»________2012 г.

 

 

 

 

 

 

 

 

 

 

г. Среднеуральск

2012 г.

2.Бланк  задания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Содержание:

Введение 4

Описание программного продукта. Структурная схема переходов между формами универсальной тестовой оболочки «Testing v. 1.1» 5

Описание  первой формы 6

Описание  объектов: 6

Листинг программного кода 7

Описание  второй формы 14

Описание  объектов: 14

Описание  третьей формы 15

Описание  объектов: 15

Описание  четвертой формы 16

Описание  объектов: 16

Описание пятой  формы  17

Описание объектов 17

         Листинг программного кода 18

Заключение ……………………………………………………………………………………22

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение

В настоящее время в  школах и других образовательных  учреждениях получили популярность компьютерные тесты для проверки усвоенных знаний у учеников. Универсальная тестовая оболочка Testing v.1.1 разработанная в среде ООП Delphi 7 предназначенная для тестирования в любой предметной области. С его помощью можно создавать тесты на любую тематику, а затем опрашивать неограниченное количество людей.

В ходе прохождения квалификационной практики мне предстоит доработать мной ранее созданную универсальную тестовую оболочку Testing v.1.0.

Задачи:

1) ПП должен выбирать  из базы без повтора 10 вопросов  случайным образом.

2) ПП должен выводить  выбранные вопросы пользователю  в удобной форме.

3)  ПП должен содержать  разделы для редактирования базы  тестировщиком.

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

5)  ПП должен выводить  протокол прохождения теста. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание первой формы


 

 

 

 

 

 

 

 

 

 

Описание объектов

Form1- форма окна

  • Caption – изменение текста в строке заголовка
  • Width – ширина окна в пикселях
  • Left – расстояние от левого края формы к правому краю формы
  • Top – расстояние от верхнего края экрана до верхнего края формы

Button1- кнопка «Результат»

Image1-вставка картинки

MainMenu1-главное меню окна

RadioGroup – управляющий элемент с зависящей фиксацией

Items – записываются варианты ответов

ItemIndex- выбранный элемент списка и его значение

TabbedNotebook-вкладки

  • Edit-изменить название
  • Pages-добавление вкладок

 

 

 

 

Листинг программного кода

var

  Form1: TForm1;

  a:string; //  объектная реализация примитивного типа строкового значения 

  f:textfile; // тип целое число

  n:integer;

  i:integer;

  B:array[1..10] OF integer;

  nst:integer;

  z:real;    // реальное значение Z

  st:string;

  q:integer;

  k1,k2,k3,k4,k5,k6,k7,k8,k9,k10:integer;

  y:integer;

implementation

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

 

{$R *.dfm}

{$R windowsxp.res}

 

procedure TForm1.N2Click(Sender: TObject);

begin

close;

end;

 

procedure TForm1.N3Click(Sender: TObject);

begin

form3.show;

end;

 

 

 

procedure TForm1.N4Click(Sender: TObject);

begin

form2.show;

end;

 

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

begin

  Base.Free;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

var st:TStringList;

    s:string;

    x,y,z,z1:Cardinal;

    rg: TRadioGroup;

begin

  s := Paramstr(0);

  s := ExtractFileDir(s);

  //Берем нашу директорию  и загружаем файл base.ini в ней

  Base  := TiniFile.Create(s+'\base.ini');

  st :=  TStringList.Create;

  Qs := [];

  //Читаем имена всех секций (вопросы)

  Base.ReadSections(st);

  Randomize;

for x:=1 to 10 do

  begin

    //Берем текущий RadioGroup (10шт)

    rg := TRadioGroup(self.FindComponent('RadioGroup'+IntToStr(x)));

    repeat

      y:=Random(st.Count); //Случайным образом выбираем вопрос

    until not (y in Qs); //И делаем так пока его нет среди уже выбранных

    include(Qs, y); //Добавляем его номер в список уже выбранных

    Q[x]:=y;

    Qa[x] := Base.ReadInteger(st[y], 'ans', 0); //Читаем варианты ответов

    //Каждый вопрос (10 шт) выводим в заголовок RadioGroup

    rg.Caption := st[y];

    z:=1;

    repeat

      //Читаем все варианты ответов

      if Base.ValueExists(st[y],'O'+IntToStr(z)) then

          rg.items.add(Base.ReadString(st[y], 'O'+IntToStr(z),'?'))

          else break;

      inc(z);

    until false;

    //Если есть картинка, то выводим ее

    if Base.ValueExists(st[y],'image') then

        (self.FindComponent('Image'+IntToStr(x+1)) as TImage).Picture.LoadFromFile('images\'+Base.ReadString(st[y], 'image','image02.jpg'));

  end;

end;

procedure TForm1.N5Click(Sender: TObject);

begin

AssignFile(F,'baza.txt'); // соединение файловой переменной с текстовым файлом

reset(F);

nst:=0;

while not eof(F) do // Отображение содержимого файла

begin

readln(f,st);

nst:=nst+1;

end;

z:=(nst-1)/5;

form4.panel2.caption:=floattostr(Z);

form4.panel1.caption:=floattostr(nst);

nst:=0;

form4.Show;

closefile(f);

end;

 

Procedure TForm1.N5Click(Sender: TObject);

Да


начало

AssignFile(F,'baza.txt');

reset(F);

nst:=0;

 

z:=(nst-1)/5;

form4.panel2.caption:=floattostr(Z);

form4.panel1.caption:=floattostr(nst);

nst:=0;

form4.Show;

closefile(f);

 

while not eof(F) do

 

readln(f,st);

nst:=nst+1;

 

Нет

конец


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

procedure TForm1.Button1Click(Sender: TObject);

var

  fam,name,date1,time1,ochen:string;

  z:integer;

  rg:TRadioGroup;

begin

Form6.Show;

RadioGroup1.Enabled:=false;

RadioGroup2.Enabled:=false;

RadioGroup3.Enabled:=false;

RadioGroup4.Enabled:=false;

RadioGroup5.Enabled:=false;

RadioGroup6.Enabled:=false;

RadioGroup7.Enabled:=false;

RadioGroup8.Enabled:=false;

RadioGroup9.Enabled:=false;

RadioGroup10.Enabled:=false;

 

y:=0;

if radiogroup1.ItemIndex=k1-1 then y:=y+1;

if radiogroup2.ItemIndex=k2-1 then y:=y+1;

if radiogroup3.ItemIndex=k3-1 then y:=y+1;

if radiogroup4.ItemIndex=k4-1 then y:=y+1;

if radiogroup5.ItemIndex=k5-1 then y:=y+1;

if radiogroup6.ItemIndex=k6-1 then y:=y+1;

if radiogroup7.ItemIndex=k7-1 then y:=y+1;

if radiogroup8.ItemIndex=k8-1 then y:=y+1;

if radiogroup9.ItemIndex=k9-1 then y:=y+1;

if radiogroup10.ItemIndex=k10-1 then y:=y+1;

y:=0;

//Подсчитываем кол-во  правильных ответов

for z:=1 to 10 do

  begin

    rg := (self.FindComponent('RadioGroup'+IntToSTr(z)) as TRadioGroup);

    if (rg.ItemIndex+1)=Qa[z] then inc(y);

end;

 

If y=10 then form6.panel11.Caption:='5';

If y=9 then form6.panel11.Caption:='4';

If y=8 then form6.panel11.Caption:='4';

If y=7 then form6.panel11.Caption:='3';

If y=6 then form6.panel11.Caption:='3';

If y=5 then form6.panel11.Caption:='3';

If y=4 then form6.panel11.Caption:='3';

If y=3 then form6.panel11.Caption:='3';

If y=2 then form6.panel11.Caption:='2';

If y=1 then form6.panel11.Caption:='2';

If y=0 then form6.panel11.Caption:='2';

 

 

for z:=1 to 10 do

  begin

    if (self.FindComponent('radiogroup'+IntToStr(z)) as Tradiogroup).ItemIndex+1 =Qa[z]

        then

          begin

            (form6.FindComponent('Panel'+IntToStr(z)) as TPanel).Caption := 'Верно';

            (form6.FindComponent('Panel'+IntToStr(z)) as TPanel).Font.Color:=clblue;

          end;

  end;

{

if radiogroup1.ItemIndex=k1-1 then begin form6.Panel1.Caption:='Верно'; form6.Panel1.Font.Color:=clblue; end;

if radiogroup2.ItemIndex=k2-1 then begin form6.Panel2.Caption:='Верно'; form6.Panel2.Font.Color:=clblue; end;

if radiogroup3.ItemIndex=k3-1 then begin form6.Panel3.Caption:='Верно'; form6.Panel3.Font.Color:=clblue; end;

if radiogroup4.ItemIndex=k4-1 then begin form6.Panel4.Caption:='Верно'; form6.Panel4.Font.Color:=clblue; end;

if radiogroup5.ItemIndex=k5-1 then begin form6.Panel5.Caption:='Верно'; form6.Panel5.Font.Color:=clblue; end;

if radiogroup6.ItemIndex=k6-1 then begin form6.Panel6.Caption:='Верно'; form6.Panel6.Font.Color:=clblue; end;

if radiogroup7.ItemIndex=k7-1 then begin form6.Panel7.Caption:='Верно'; form6.Panel7.Font.Color:=clblue; end;

if radiogroup8.ItemIndex=k8-1 then begin form6.Panel8.Caption:='Верно'; form6.Panel8.Font.Color:=clblue; end;

if radiogroup9.ItemIndex=k9-1 then begin form6.Panel9.Caption:='Верно'; form6.Panel9.Font.Color:=clblue; end;

if radiogroup10.ItemIndex=k10-1 then begin form6.Panel10.Caption:='Верно'; form6.Panel10.Font.Color:=clblue; end;

}

form6.Label11.Caption:=datetostr(date);

form6.Label12.Caption:=TimeToStr(Time);

 

end;

procedure TForm1.N6Click(Sender: TObject);

begin

form1.Button1.Visible:=true;

PageControl1.Visible:=true;

end;

 

procedure TForm1.H1Click(Sender: TObject);

begin

form8.show;

end;

end.

 

 

 

 

 

Описание второй формы

 

 

 

 

 

 

 

 

Описание объектов

Label1:  Предназначен для ввода текста о программе

Image1: Изображение фон формы

Я изменял свойство Word Wrap перенос по словам

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Описание третьей  формы

 

 

Описание объектов

Image1: -вставка фотографии разработчика

Picture: -загрузка фотографии (картинки)

Label1: -Сведения о разработчике

Я изменял свойство Word Wrap для переноса по словам

Описание четвертой  формы


 

 

 

 

 

 

 

 

 

 

 

 

Описание объектов

label1, label2,…,label10 для названия вопросов

  • Caption – изменение текста в строке заголовка

panel1, panel2,…panel10 объекты которые при окончание теста выводят на какой вопрос вы ответили правильно или не правильно.

Panel11 – выводит оценку.

 

 

 

Описание пятой формы

Описание объектов

Label 1 – Вопрос

Label 2 – Ответы

Label 3 – Правильный ответ

ComboBox1 -  используется для ввода и вывода данных в раскрывающемся поле со списком. По умолчанию элемент управления ComboBox отображается в виде двух частей: верхняя часть представляет собой текстовое поле, в которое пользователь может ввести элемент списка. Вторая часть представляет собой список элементов, один из которых пользователь может выбрать.

Т.е. служит для  ввода и выбора  вопроса.

Memo1 - окно редактирования многострочного текста.  Т.е. служит для ввода ответов.

OpenPictureDialog1 - Компоненты OpenDialog — диалог «Открыть файл» используются чаще всего, в большинстве приложений. Т.е. служит для выбора картинки.

Edit представляет собой редактируемую строку

Button1 кнопка фото

Button2 кнопка Добавить фотографию

Button3 кнопка Добавить

Button4 кнопка Записать

Листинг программного кода

… 

var

  Form8: TForm8;

implementation

{$R *.dfm}

procedure TForm8.Button1Click(Sender: TObject);

var s:string;

    x:integer;

begin

  //При нажатии кнопки "Записать", запишем в базу?

  s:= ComboBox1.Text;//сам вопрос

  x:=0;

  if Pos('image=', Memo1.Lines[0])<>0 then //Если есть картинка то и ее

    begin

      Base.WriteString(s, 'image', Copy(Memo1.Lines[0], Pos('=',Memo1.Lines[0])+1, Length(Memo1.Lines[0])));

      inc(x);

    end;

    //И варианты  ответов

  for x:=x to Memo1.Lines.Count-1 do

    Base.WriteString(s, 'O'+IntToStr(x+1), Memo1.Lines[x]);

    //Ну и правильные ответы тоже

  Base.WriteString(s, 'ans', Edit6.Text);

end;

procedure TForm8.Button2Click(Sender: TObject);

begin

 

//Добавим в ComboBox1 новую пустую запись

  ComboBox1.Items.Add('');

  ComboBox1.ItemIndex := ComboBox1.Items.Count-1;

  ComboBox1Change(self);

end;

 

procedure TForm8.Button3Click(Sender: TObject);

var s:string;

  ss:string;

begin

//Добавим картинку как  вариант ответа

  if not OpenPictureDialog1.Execute then exit;

  s := ExtractFileName(OpenPictureDialog1.FileName);

  ss := 'images\' + s;

  //Скопировав ее в свою папку

  CopyFile(PChar(s), PChar(ss), false);

  Memo1.Lines.Add(s);

end;

procedure TForm8.Button4Click(Sender: TObject);

var s:string;

  ss:string;

begin

//Добавим картинку как  приложение к вопросу

  if not OpenPictureDialog1.Execute then exit;

  s := ExtractFileName(OpenPictureDialog1.FileName);

  ss := 'images\' + s;

  //Скопировав ее в свою папку

  CopyFile(PChar(s), PChar(ss), false);

  Memo1.Lines.Insert(0, 'image='+s);

end;

 

procedure TForm8.ComboBox1Change(Sender: TObject);

var s:string;

    x:integer;

 

begin

  // При выборе значения  в ComboBox найдем этот вопрос в базе

  s:= ComboBox1.Items[ComboBox1.ItemIndex];

  Memo1.Clear;

  x:=1;

  repeat

      // и отобразим  все варианты ответов

      if Base.ValueExists(s,'O'+IntToStr(x)) then

          Memo1.Lines.Add(Base.ReadString(s, 'O'+IntToStr(x),'?'))

          else break;

    inc(x);

  until false;

  //и покажем правильные ответы

  Edit6.Text := Base.ReadString(s, 'ans','0');

end;

 

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

begin

  Base.Free;

end;

 

procedure TForm8.FormShow(Sender: TObject);

Var

    s : string;

begin

  //При показе формы  загрузим все вопросы в память

  s := Paramstr(0);

  s := ExtractFileDir(s);

  Base  := TiniFile.Create(s+'\base.ini');

  //Имена секций (вопросы) занесем в ComboBox

  Base.ReadSections(ComboBox1.Items);

  //В ComboBox отобразим 1-ю запись

  ComboBox1.ItemIndex := 1;

  ComboBox1Change(self);

end;

 end.

Procedure TForm8.FormShow(Sender: TObject);

начало


s := Paramstr(0);

s := ExtractFileDir(s);

Base  := TiniFile.Create(s+'\base.ini');

Base.ReadSections(ComboBox1.Items);

ComboBox1.ItemIndex := 1;

ComboBox1Change(self);

 

 

конец

    s : string;

 


 

 

 

 

Информация о работе Отчет по практике в ООП Delphi 7