Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

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

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

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

Отчет

по лабораторной работе №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. Аудит в лице генерального директора Спириной О
3. Технікоекономічне обґрунтування створення дієтичної їдальні на 82 місця 2
4. Ответы на вопросы по дисциплине «Философия»
5. Представители отряда перепончатокрылые
6. Затверджую Голова приймальної комісії проф
7. Дипломная работа ИССЛЕДОВАНИЕ АПОПТОТИЧЕСКОЙ АКТИВНОСТИ ЛИМФОЦИТОВ ПЕРИФЕРИЧЕСКОЙ КРОВИ IN VITRO ПРИ ИНФ
8. СТРОИТЕЛЬНАЯ МЕХАНИКА ДЛЯ СТУДЕНТОВ НАПРАВЛЕНИЯ 270100 СТРОИТЕЛЬСТВО
9. тема Высшая школа 1991
10. по теме ЦНС ~ 2009 ЛФПФМПФ Понятие о центральной нервной системе её роли и функциях в организме
11. Иван Алексеевич Бунин
12. Распределение метеовеличин и коэффициента преломления воздуха в нижнем слое атмосферы летом
13. на тему- Художественная ковка в организации пространства интерьера Выполнила- Скрипченко Анастасия
14. психоанализ стало настолько общественным достоянием что каждому кто его употребляет кажется что он по
15. Великая Отечественная война 1941 1945 гг
16. тематический план ТЕМА 3 Предложение и факторы его определяющие
17. Материальная культура Москвы XVI в
18. Лекция 2 Реклама в средние века
19. Автомобильные двигатели 1
20. а Работа выполнена- Студент- Тройник И