У вас вопросы?
У нас ответы:) SamZan.net

Информационные системы в управлении

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 3.2.2025

Сибирская государственная автомобильно-дорожная академия (СибАДИ)  

Факультет "Информационные системы в управлении"

Отчет

по лабораторной работе №5

по дисциплине

Языки программирования

Преподаватель:

Михайлов Е.М.

Студент гр. БИ-12И1:

Миллер А.Е.

Омск - 2012


Задание:

Составить список учебной группы, включающей n человек (n не менее 10). Для каждого учащегося указать фамилию, дату рождения (день, месяц, год), год поступления в ВУЗ, экзаменационные оценки за один год обучения (2 семестра по 4 экзамена в семестре).

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

Список студентов в программе хранить в виде объекта класса TMyList. Этот класс должен быть порожден от класса TList. Описание созданного класса TMyList должно быть помещено в отдельный модуль. Созданный класс TMyList должен обязательно содержать метод Work выполняющий основное задание, указанное в Вашем варианте.

Вывод списка группы на экран реализовать с помощью объекта TMemo.

В отчет поместить:

  •  внешний вид всех экранных форм Вашей программы с описанием названий и типов всех компонентов, размещенных на форме (см. пример описания в задании лабораторной работы № 1 семестр 1);
  •  исходный текст всех модулей Вашей программы (*.dpr, *.pas);
  •  исходные данные и результат обработки этих данных составленной программой.

Вариант №10:

Удалить студентов, получивших в последнюю сессию все оценки 5.


Текст программы на языке «Pascal»:

Часть 1:

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,

 EditBtn, StdCtrls, Spin, MaskEdit, Buttons, LCLType, DateUtils;

type

 student=record

   name:string[25];

   birthday:TDate;

   vuz:integer;

   mark:array[1..16] of byte;

 end;

 { TForm1 }

 TForm1 = class(TForm)

   bbSave: TBitBtn;

   bbClose: TBitBtn;

   deBirthDay: TDateEdit;

   Label1: TLabel;

   Label2: TLabel;

   Label3: TLabel;

   lbNumber: TLabel;

   lbTitle: TLabel;

   leName: TLabeledEdit;

   meMark: TMaskEdit;

   seVuz: TSpinEdit;

   procedure bbCloseClick(Sender: TObject);

   procedure bbSaveClick(Sender: TObject);

   procedure FormClick(Sender: TObject);

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

   procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);

   procedure FormCreate(Sender: TObject);

   procedure Label2Click(Sender: TObject);

   procedure lbNumberClick(Sender: TObject);

   procedure seVuzChange(Sender: TObject);

 private

   { private declarations }

 public

   { public declarations }

   f:file of student;

   k:integer;

 end;

var

 Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Label2Click(Sender: TObject);

begin

end;

procedure TForm1.lbNumberClick(Sender: TObject);

begin

end;

procedure TForm1.bbSaveClick(Sender: TObject);

var

 data:student;

 i:integer;

 lat,rus,rus_m,name_ok,mark_ok:boolean;

begin

 data.Name:=leName.Text;

 data.BirthDay:=deBirthDay.Date;

 data.Vuz:=seVuz.Value;

 if length(meMark.Text)<16 then

   begin

   ShowMessage('Внимание! Недостаточное количество оценок.');

   deBirthDay.SetFocus;

   exit;

   end;

 for i:=1 to 16 do

   data.mark[i]:=StrToInt(meMark.Text[i]);

 lat:=   (length(data.name)>=1) and

         (data.name[1] in ['A'..'Z','a'..'z']);

 rus:=   (length(data.name)>=2) and

         (ord(data.name[1])=208) and

         (ord(data.name[2]) in [144..175]);

 rus_m:= ((length(data.name)>=2) and

         (ord(data.name[1])=208) and

         (ord(data.name[2]) in [176..191])) or

         ((length(data.name)>=2) and

         (ord(data.name[1])=209) and

         (ord(data.name[2]) in [128..143]));

 name_ok:=lat or rus or rus_m;

 if not name_ok then

    begin

      ShowMessage('Внимание! Фамилия должна начинаться с буквы.');

      leName.SetFocus;

      exit;

    end;

   if (YearOf(data.BirthDay)<1980)

   or (YearOf(data.BirthDay)>1995) then

    begin

      ShowMessage('Внимание! Год рождения указан неверно.');

      deBirthDay.SetFocus;

      exit;

    end;

 mark_ok:=true;

   for i:=1 to 16 do

     begin

     if (data.mark[i]>5) or

        (data.mark[i]<2) then

         mark_ok:=false;

     end;

  if not mark_ok then

    begin

      ShowMessage('Внимание! Оценки указаны неверно.');

      meMark.SetFocus;

      exit;

    end;

 write(f,data);

 lbNumber.Caption:=IntToStr(k);

 inc(k);

end;

procedure TForm1.FormClick(Sender: TObject);

begin

end;

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

begin

 closefile(f);

end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);

begin

 CanClose:= Application.MessageBox('Вы уверены?',

            'Внимание!!!',MB_YESNOCANCEL)

            =IDYES;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

 assignfile(f,'students.dat');

 rewrite(f);

 k:=1;

end;

procedure TForm1.bbCloseClick(Sender: TObject);

begin

end;

procedure TForm1.seVuzChange(Sender: TObject);

begin

end;

end.


Часть 2:

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,

 Buttons, Unit2;

type

 { TForm1 }

 TForm1 = class(TForm)

   bbPrintAll: TBitBtn;

   bbVariant: TBitBtn;

   bbClose: TBitBtn;

   mmOutput: TMemo;

   procedure bbPrintAllClick(Sender: TObject);

   procedure bbVariantClick(Sender: TObject);

   procedure FormCreate(Sender: TObject);

   procedure FormDestroy(Sender: TObject);

 private

   { private declarations }

 public

   { public declarations }

   list:TMyList;

 end;

var

 Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);

begin

 list:=TMyList.Create;

 list.ReadFile('students.dat');

end;

procedure TForm1.bbPrintAllClick(Sender: TObject);

begin

 list.PrintAll(mmOutput);

end;

procedure TForm1.bbVariantClick(Sender: TObject);

begin

 list.Work;

 mmOutput.Lines.Add('В списке удалены студенты, получивших в последнюю сессию все оценки 5.');

end;

procedure TForm1.FormDestroy(Sender: TObject);

begin

 list.ClearAll;

 list.Free;

end;

end.    


Часть 3(Модуль):

unit Unit2;

{$mode objfpc}{$H+}

interface

uses

 Classes, SysUtils, StdCtrls, LazUTF8, DateUtils;

type

 student = record

   Name: string[25];

   birthday: TDate;

   vuz: integer;

   mark: array[1..16] of byte;

 end;

 PStudent = ^Student;

 { TMyList }

 TMyList = class(TList)

   procedure Work;

   procedure ReadFile(filename: string);

   procedure ClearAll;

   procedure PrintAll(mmOut: TMemo);

 end;

implementation

{ TMyList }

procedure TMyList.Work;

var

 i, j, k: integer;

 p: PStudent;

begin

 i := 0;

 while i < Count do

 begin

   p := Items[i];

   k := 0;

   for j := 13 to 16 do

     if p^.mark[j] = 5 then

       k := k + 1;

   if k = 4 then

     Delete(i)

   else

     i := i + 1;

 end;

end;

procedure TMyList.ReadFile(filename: string);

var

 f: file of student;

 p: PStudent;

begin

 AssignFile(f, filename);

 ReSet(f);

 while not EOF(f) do

 begin

   new(p);

   Read(f, p^);

   Add(p);

 end;

 CloseFile(f);

end;

procedure TMyList.ClearAll;

var

 p: PStudent;

 i: integer;

begin

 for i := 0 to Count - 1 do

 begin

   p := Items[i];

   dispose(p);

 end;

 Clear;

end;

procedure TMyList.PrintAll(mmOut: TMemo);

var

 i, j: integer;

 p: PStudent;

 str: string;

begin

 for i := 0 to Count - 1 do

 begin

   p := Items[i];

   str := IntToStr(i + 1);

   with p^ do

   begin

     str := str + ' ' + Name;

     while UTF8Length(str) < 25 do

       str := str + ' ';

     str := str + DateToStr(birthday) + ' ';

     str := str + IntToStr(vuz) + ' ';

     for j := 1 to 16 do

       str := str + IntToStr(mark[j]);

   end;

   mmOut.Lines.Add(str);

 end;

end;

end.   
Форма
:

Часть 1:

Рис. 1 Создание списка группы.


Часть 2:

Рис. 2 Вывод списка группы.

Рис. 2 Вывод списка после обработки.




1. статистика 2 Роль выборочных методов в статистике
2. Тема- Значення об~єктивної сторони злочину для його кваліфікації ВСТУП ПОНЯТТЯ ОБ~ЄКТИВНОЇ С
3.  г именуемое в дальнейшем Комитент в лице действующ
4. Статья 1. Предмет регулирования настоящего Федерального закона 1.
5. Лабораторная работа 1
6. Анализ эксплутационной работы железнодорожной сортировочной станции Т
7. Поняття системи заробітної плати Організація заробітної плати в економічних формаціях заснованих на р
8. Рахмани рРахим. Этот труд являет собой квартальные выдержки истории моей жизни.html
9.  Великий Крестовый Поход нес свет Имперских Истин в самые темные уголки Галактики возвращая разрозненные ми
10. Способ оценки технического и технико-тактического мастерства спортсменов в индивидуально-игровых видах спорта