Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задания решения.doc
Скачиваний:
3
Добавлен:
11.09.2019
Размер:
1.57 Mб
Скачать

Содержание

2. Практические задания 4

3. Профессиональные задачи 68

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 86

2. Практические задания

  1. С оставьте алгоритм в виде блок-схемы и программу в ИСР Pascal для определения и вывода минимального элемента в каждом столбце матрицы X(n, m), где n и m вводятся с клавиатуры. Исходную матрицу нужно заполнить случайным образом числами в диапазоне от4 10 до 50 включительно и вывести в общепринятом виде на экран.

var

Matrix: array [0..1000,0..1000] of integer; MinArray: array [0..1000] of integer;

i,j,n,m, nMin: integer;

begin

writeln('Vvedite N'); readln(n); writeln('Vvedite M'); readln(m); writeln;

Randomize();

for i := 0 to n-1 do

begin

for j := 0 to m-1 do

begin

Matrix[i][j] := random(41)+10;

write(Matrix[i][j]);

write(' '); end; writeln; end; for j := 0 to m-1 do

begin

nMin := 50;

for i := 0 to n-1 do

begin

if (Matrix[i][j] < nMin) then

nMin := Matrix[i][j]; end;

MinArray[j] := nMin; end; writeln;

writeln('Minimalnie elementy:');

for i:= 0 to m-1 do

begin

write(MinArray[i]);

write(' '); end; readln; end.

  1. Составьте алгоритм в виде блок-схемы и программу в ИСР Pascal для упорядочивания элементов каждого столбца матрицы по убыванию любым методом.

var

a:array [1..100,1..100] of real;

m,n,i,j:integer;

procedure sorting(k:integer);

var

tmp:real;key:boolean;

begin

key:=true;

while key do begin

key:=false;

for j:=1 to m-1 do

if a[k,j]<a[k,j+1] then begin

tmp:=a[k,j+1];a[k,j+1]:=a[k,j];a[k,j]:=tmp;key:=true;end;end;end;

begin

randomize;

writeln('ener columns');readln(m);writeln('ener rows');readln(n);

for i:=1 to n do begin

for j:=1 to m do begin

a[i,j]:=random(10)+random(11)/10;

a[i,j]:=a[i,j]-5;write(a[i,j]:4:1,' ')

end;writeln;end;writeln;

for i:=1 to n do begin

sorting(i);

for j:=1 to m do write(a[i,j]:4:1,' ');

writeln;end;readln;end.

  1. Составьте алгоритм в виде блок-схемы и напишите программу в ИСР Pascal для определения 5 первых совершенных чисел. Натуральное число называется совершенным, если оно равно сумме всех своих делителей за исключением самого себя. Например, 6 – совершенное число, т.к. 6=1+2+3, число 8 – несовершенное, т.к. 8<>1+2+4).

Program chislo;

uses

crt;

var

n,i,k,j:longint;

begin

clrscr;

write('n=');

{Вводить диапазон n не более 9000,рассчёт пятого числа ведётся очень долго. }

readln(n);

for i:=1 to n do

begin

k:=0;

for j:=1 to i-1 do

if i mod j=0 then

begin

k:=k+j;

end;

if k=i then write(i,' ');

end;

readkey;

end.

  1. Напишите программу в ИСР Pascal для создания массива из 10 элементов типа запись (ввод полей осуществляется с клавиатуры). Запись для каждого студента должна содержать следующие поля: номер по порядку, фамилия, имя, группа, оценка. Эти данные нужно программным образом записать в текстовый файл, а затем осуществить чтение и форматный вывод информации из этого файла на экран.

type

student=record

num:integer;fam:string;name:string;group:string;ocenka:byte;end;

const c=2;

label

red ;

var

students: array [1..10] of student;

f:text; i:integer; s:string;

begin

writeln('create?');

readln(s);

if (s='n')or (s='N') then goto red;

assign(f,'c:\students.txt');

rewrite(f);

for i:=1 to c do begin

students[i].num:=i;

readln(students[i].fam);readln(students[i].name);readln(students[i].group);

readln(students[i].ocenka);

writeln(f,students[i].num,' ',students[i].fam,' ',students[i].name,' ',students[i].group,' ',students[i].ocenka);

end;close(f);

red:

assign(f,'c:\students.txt'); reset(f);

for i:=1 to c do begin readln(f,s);writeln(s);end;readln;end.

  1. Создайте в ИСР Pascal:

а) пользовательский модуль для вычисления , где a – любое вещественное число, n – целое число (может быть как положительным, так и отрицательным), причём обе переменные являются внешними по отношению к осн. программе;

б) программу, которая будет использовать модуль (задание А) для вычисления степени некоторого числа, основание и показатель вводятся с клавиатуры.

А) а. unit stepen;interface

function pow(n:real;x:integer):real;

implementation

function pow(n:real;x:integer):real;

var

i:integer;

tmp:real;

begin

if x<0 then begin n:=1/n;x:=abs(x);end;

tmp:=n;

for i:=2 to x do tmp:=tmp*n;

pow:=tmp;end;

var

g:real;

begin

g:=pow(2,3); writeln(g);end.

Б) uses stepen;

var

x:integer;n,g:real;

begin

writeln('input osn');readln(n);writeln('input step');readln(x);g:=pow(n,x);

writeln(g:6:4);

readln;

end.

  1. Напишите программу в ИСР С++ для нахождения в каждой строке матрицы G(n, m) максимальный и минимальный элементы и помещения их на место первого и последнего элемента строки соответственно. Вывести на экран исходную и полученную матрицы в общепринятом виде.

# include <iostream.h>

# include <iomanip.h>

inline void swap(double& l, double& r)

{

double tmp(l);

l = r;

r = tmp;

}

int main()

{

int row;

int col;

// enter matrix dimensiions

std::cin >> row >> col;

double* matrix = new double[row*col];

// reading matrix

int sz = row*col;

for(int i = 0; i < sz; ++ j)

std::cin >> matrix[i];

// swap min with first and max with last for each line

for (int i = 0; i < row; ++i)

{

int shift = i * col;

int minc = shift, maxc = shift;

for (int j = 1; j < col; ++i)

{

int idx = shift + j;

if (matrix[idx] < matrix[minc])

minc = idx;

if (matrix[idx] > matrix[maxc])

maxc = idx;

}

if (minc != shift)

swap(matrix[shift], matrix[minc]);

if (maxc != shift + col - 1)

swap(matrix[shift + col - 1], matrix[maxc]);

for (int j = 0; j < col; ++j)

std::cout << matrix[shift + j] << " ";

std::endl;

}

delete [] matrix;

return 0;

}

  1. Разработайте приложение из одной формы, разместив на форме компоненты ListBox, Memo и Button. В компонент ListBox ввести несколько произвольных строчек. Запрограммировать щелчок по кнопке: строки ListBox копируются в строки Memo с добавлением символов ‘77’.

unit Unit1;

interface

uses

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

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

ListBox1: TListBox;

memo1: TMemo;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

k:integer;

begin

//memo1.Lines.Add(listbox1.Items.Text+'77');

for k:=0 to listbox1.Count-1 do begin

memo1.Lines.add(listbox1.Items.Strings[k]+'77');

end;

end;

end.

  1. Разработайте приложение, разместив на форме компонент StringGrid и кнопку. Объявите двухмерный массив целых чисел размером 3х3. Задайте значения элементов массива в событии onCreate формы. Запрограммируйте щелчок по кнопке: в StringGrid выводится массив, в котором строки отсортированы по возрастанию значений элементов.

unit Unit1;

interface

uses

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

Dialogs, Grids, StdCtrls, Buttons;

type

TForm1 = class(TForm)

BitBtn1: TBitBtn;

StringGrid1: TStringGrid;

procedure FormCreate(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Publiciтеупук declarations }

end;

var

Form1: TForm1;

b:array[0..2,0..2] of integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

b[0,0]:=1;

b[1,0]:=3;

b[2,0]:=5;

b[0,1]:=1;

b[1,1]:=8;

b[2,1]:=6;

b[0,2]:=9;

b[1,2]:=4;

b[2,2]:=2;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

var

i,k:integer;

begin

for i:=0 to 2 do begin

for k:=0 to 2 do begin

stringgrid1.Cells[i,k]:=inttostr(b[i,k]);

end;

end;

end;

end.

  1. Разработайте приложение из одной формы, разместив на форме компонент Panel, а на Panel – компонент PaintBox. Запрограммируйте перемещение курсора мыши по PaintBox: на его поверхности рисуется «кривая» красного цвета при нажатой кнопке мыши.

unit Unit1;

interface

uses

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

Dialogs, ExtCtrls;

type

TForm1 = class(TForm)

Panel1: TPanel;

PaintBox1: TPaintBox;

procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

StartX, StartY: integer;

implementation

{$R *.dfm}

procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

paintbox1.Canvas.PEN.Color:=CLRED;

if not (ssLeft in Shift) then

Exit;

with PaintBox1.Canvas do begin

MoveTo (StartX, StartY);

LineTo (X, Y);

end;

StartX := X;

StartY := Y;

end;

procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

StartX := X;

StartY := Y;

end;

end.

  1. Разработайте приложение из одной формы, разместив на форме компонент Panel, два компонента Edit. Запрограммируйте перемещение курсора мыши по панели и экранной форме: в компонентах Edit отражаются соответствующие текущие координаты курсора мыши (координаты X и Y).

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

Panel1: TPanel;

Edit1: TEdit;

Edit2: TEdit;

procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

edit1.Text:=inttostr(x);

edit2.Text:=inttostr(y);

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

begin

edit1.Text:=inttostr(x);

edit2.Text:=inttostr(y);

end;

end.

  1. Разработайте приложение из главной и одной немодальной подчиненной формы. На главной форме поместить компонент RadioGroup и задать в его свойстве Items три альтернативы: отрезок, прямоугольник, круг. Запрограммируйте: при щелчке мышью по альтернативе в компоненте RadioGroup вызывается немодальная форма и на ее холсте рисуется соответствующая фигура (положение и размер – любые).

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls;

type

TForm1 = class(TForm)

RadioGroup1: TRadioGroup;

procedure RadioGroup1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

if radiogroup1.ItemIndex=0 then begin

form2.show;

form2.Canvas.Pen.Color:=clred;

FORM2.Canvas.Brush.Color:=clred;

form2.Canvas.Rectangle(10,10,200,100);

end;

if radiogroup1.ItemIndex=1 then begin

form2.show;

form2.Canvas.Pen.Color:=clred;

form2.Canvas.LineTo(100,100);

end;

if radiogroup1.ItemIndex=2 then begin

form2.show;

form2.Canvas.Pen.Color:=clred;

form2.Canvas.Ellipse(10,10,100,100);

end;

end;

end.

  1. Создайте произвольную таблицу из трех – четырех полей, используя DataBaseDesktop, таким образом, что одно из полей имеет имя P и числовой тип данных Short. Введите три записи с разными значениями поля P. Разработайте приложение, разместив на форме компоненты DBGrid, Query, DataSource. Выведите в DBGrid записи созданной таблицы через Query, в котором задано условие отбора по одному из значений поля P.

  1. File>Open>Table…

  2. Открыть таблицу, заполнить её несколькими записями. Поставить ключ.

  3. Открыть Delphi7. Сохранить проект.

  4. Поместить на форму компоненты Query, DataSource и DBGrid.

  5. Выделить DBGrid1 на панели ObjectInspektor, в свойстве Datasource выбрать DataSource1. Выделить компонент DataSource1, в свойстве DataSet выбрать Query1.

  6. В свойстве SQL компонента Query1 ввести код:

Select * from Par1, Par2 where Par1.P=Par2.P

  1. Нажать Ok и свойство Active поменять на True.

  1. Создайте произвольную таблицу из трех – четырех полей программой DataBaseDesktop, таким образом, что одно из полей имеет имя P и числовой тип данных Short. Выведите три записи с разными значениями поля P. Создайте еще одну таблицу из двух полей, у которой первое поле имеет имя Р, является ключевым и имеет тип Short. Разработайте приложение, разместив на форме компоненты DBGrid, Query, DataSource. Запишите в свойстве SQL компонента Query выражение перекрестного запроса и выведите в DBGrid записи из Query.

Открываем DataBaseDesktop

  • File>New>Table…

  • Выбирать Paradox7.

  • Field Name – имя поля

  • Type – тип данных (выдвинуть список правой кнопкой мыши в колонке напротив нужной строки)

  • Size – размер поля (количество символов)

  • Key – ключевое поле (желательно делать типа Autoincrement)

  • Например:

  • Открыть таблицу и заполнить её несколькими записями, после чего сохранить и перейти к программе.

  • Компоненты: DBGrid (1шт), DataSource (2шт), Table (1шт), Query (1шт).

  • DBGrid1 в свойстве Datasource выбрать DataSource2

  • DataSource2, в свойстве DataSet выбрать Query1.

  • Query1, в свойстве Datasource выбрать DataSource1.

  • DataSource1, в свойстве DataSet выбрать Table1.

  • Table1, в свойстве Table Name выбрать имя таблицы, которую создали ранее а в свойстве Active выбрать True.

  • В свойстве SQL компонента Query1 ввести код:

  • select * from Par where p=любое значение которое существует в таблице в этом поле.

  • Нажать Ok и свойство Active поменять на True.

  1. Используя любой стандарт базы данных, разработайте базу данных удовлетворяющую ниже представленным требованиям, спроектировав ее с использованием ERD технологии. Заполните ее данными в количестве достаточном для выполнения запросов. Напишите программу, которая позволила бы заполнять данными таблицы и продемонстрировала работу запросов.

Даны атрибуты, моделирующие работу фирмы, занимающейся разработкой программных систем: Название файла, Имя владельца файла, Название программы, Название диска.

Найти:

  1. Файлы, которые имеют нескольких владельцев.

  2. Программы, которые работают только с одним файлом.

  3. Файлы, которые имеют одно и тоже имя, но расположены, на различных дисках.

  4. Файлы, с которыми работают все программы.

  5. Файлы, владельцами которых являются все пользователи ПЭВМ.

  1. Используя любой стандарт базы данных, разработайте базу данных удовлетворяющую ниже представленным требованиям, спроектировав ее с использованием ERD технологии. Заполните ее данными в количестве достаточном для выполнения запросов. Напишите программу, которая позволила бы заполнять данными таблицы и продемонстрировала работу запросов.

Даны атрибуты, моделирующие работу программных продуктов в фирме: Имя пользователя, Название приложения, Операционная система, Название приложения, Имя БД, Имя сервера БД)

Найти:

  1. Пользователей, которые работают с несколькими приложениями, но в одной операционной системе.

  2. Серверы БД, которые работают только с одной БД.

  3. Приложения, которые работают со всеми серверами БД.

  4. Пользователи, которые работают только с одним сервером БД.

  1. Используя любой стандарт базы данных, разработайте базу данных удовлетворяющую ниже представленным требованиям, спроектировав ее с использованием ERD технологии. Заполните ее данными в количестве достаточном для выполнения запросов. Напишите программу, которая позволила бы заполнять данными таблицы и продемонстрировала работу запросов.

Даны атрибуты, моделирующие процесс учета работы преподавателя: Дисциплина, Курс, ФИО преподавателя, Тип занятия, Кафедра.

Найти:

  1. Преподавателей, которые могут только читать лекции.

  2. Кафедры, преподаватели которых не ведут курсового проектирования.

  3. Курсы, на которых ведут занятия преподаватели кафедры 44.

  4. Кафедры, преподаватели которых работают только на младших курсах (1-ом или 2-ом).

  1. Используя любой стандарт базы данных, разработайте базу данных удовлетворяющую ниже представленным требованиям, спроектировав ее с использованием ERD технологии. Заполните ее данными в количестве достаточном для выполнения запросов. Напишите программу, которая позволила бы заполнять данными таблицы и продемонстрировала работу запросов.

Даны атрибуты моделирующие процесс защиты дипломных работ: ФИО студента, № группы, Курс, Выпускающая кафедра, Кафедра, Факультет, Название работы.

Найти:

  1. Студентов, представивших работы более чем от одной кафедры.

  2. Кафедры, на которых подготовили работы студенты 3-го курса.

  3. Кафедры, на которых подготовили работы студенты других факультетов.

  4. Работы, подготовленные студентами различных факультетов.

18. Используя любой стандарт базы данных, разработайте базу данных удовлетворяющую ниже представленным требованиям, спроектировав ее с использованием ERD технологии. Заполните ее данными в количестве достаточном для выполнения запросов. Напишите программу, которая позволила бы заполнять данными таблицы и продемонстрировала работу запросов.

Даны атрибуты, моделирующие процесс учета успеваемости: ФИО студента, Название дисциплины, Оценка за экз., Дата сдачи, Группа,. Факультет, ФИО преподавателя.

Найти:

  1. Группы, все студенты которых сдали все экзамены с первого раза на оценку >=3.

  2. Дисциплины, по которым есть пересдававшие студенты.

  3. Факультеты, на которых нет задолженностей по сессии.

  4. Преподавателей, на экзаменах у которых были получены оценки только “хорошо” и “отлично”.

  1. Используя любой стандарт базы данных, разработайте базу данных удовлетворяющую ниже представленным требованиям, спроектировав ее с использованием ERD технологии. Заполните ее данными в количестве достаточном для выполнения запросов. Напишите программу, которая позволила бы заполнять данными таблицы и продемонстрировала работу запросов.

Даны атрибуты, моделирующие работу программного обеспечения в некоторой организации: Сервер, Рабочая станция, Название программного обеспечения, ФИО оператора.

Найти:

  1. Операторов, работающих с одинаковым программным обеспечением на нескольких рабочих станциях.

  2. Рабочие станции, связанные с несколькими серверами.

  3. Программное обеспечение, установленное только на одной рабочей станции.

  4. Серверы, связанные со всеми рабочими станциями.

  5. Операторов, работающих со всем программным обеспечением (указанным в R2).

  1. Используя любой стандарт базы данных, разработайте базу данных удовлетворяющую ниже представленным требованиям, спроектировав ее с использованием ERD технологии. Заполните ее данными в количестве достаточном для выполнения запросов. Напишите программу, которая позволила бы заполнять данными таблицы и продемонстрировала работу запросов.

Даны атрибуты, моделирующие работу банка и его филиалов: ФИО клиента, N филиала, N счета, Остаток, Район.

Найти:

  1. Филиалы, клиенты которых не имеют счетов в других филиалах.

  2. Клиентов, которые имеют счета во всех филиалах данного банка.

  3. Клиентов, которые имеют только один счет в одном филиале банка.

  4. Клиенты, которые имеют счета в нескольких филиалах банка, расположенных только в одном районе.

Схема БД:

  1. Найдите оптимальный план перевозок топлива из трех хранилищ , , , в которых имеются запасы топлива в количестве 220, 310 и 510 тонн соответственно. Топливо предназначено для четырех АЗС , , , . Потребности в топливе составляют соответственно 360, 260, 160 и 260 тонн. Известны тарифы перевозок (усл. ед.) одной тонны топлива из хранилища на АЗС, которые задаются матрицей стоимостей перевозок одной тонны топлива из пункта в пункт

Составьте план перевозок, при котором все запасы будут вывезены, все потребности удовлетворены и при этом стоимость перевозок будет минимальной.

Решение транспортной задачи с помощью надстройки MS Excel «Поиск решения»:

Экономико-математическая модель.

  1. Найти План перевозок при котором

  2. Об_затраты=План*Цена_перевозок - min

  3. При ограничениях: Ввезено=Потребности; Вывезено<=Запасы и План>=0

Реализация в Excel. Создаем таблицу с формулами, которые связывают план, ограничения и целевую функцию (Об_затраты):

В целевую ячейку Н3 (Об_затраты) вводим формулу: =СУММПРОИЗВ(C3:F5;C8:F10).

Получен план перевозок, при котором все запасы вывезены, все потребности удовлетворены и стоимость перевозок минимальная.

Ответ: 5060 усл.ед.

  1. Решите задачу линейного программирования графическим методом:

;

23.Решите задачу симплекс – методом:

Решение задачи симплекс-методом с помощью надстройки Excel «Поиск решения»:

В13: =B4-2*C4+2*D4

В14:=B4+2*C4+D4+E4

В15: =2*B4+C4-4*D4+F4

В8: =9*B4+5*C4+4*D4+3*E4+2*F4

Получено оптимальное решение задачи линейного программирования симплекс-методом.

Ответ: .

  1. Определите оптимальный цикл замены оборудования при следующих исходных данных: Р = 10, S(t) = 0, f(t) = r(t) - u(t), представленных в таблице, для N=12.

N

0

1

2

3

4

5

6

7

8

9

10

11

12

f(t)

10

9

8

7

6

5

4

3

2

1

0

0

0

Уравнение запишем в виде:

Для :

………………………………………….

Для :

……………………………………………………..

Вычисления продолжаем до тех пор, пока не будет выполнено условие , т.е. в данный момент оборудование необходимо заменить, так как величина прибыли, получаемая в результате замены оборудования, больше, чем в случае использования старого. Результаты расчетов помещаем в таблице, момент замены отмечаем *, после чего дальнейшие вычисления по строчке прекращаем.

0

1

2

3

4

5

6

7

8

9

10

11

12

11

10

9

8

7

6

5

4

3

2

1

10

9

8

7

6

5

4

3

2

1

0

0

0

19

17

15

13

11

9

9*

27

24

21

18

17*

34

30

26

24

24*

40

35

32

31

30

30*

45

41

39

37

36

35

35*

51

48

45

43

41

41*

58

54

51

48

48*

64

60

56

55

54

54*

70

65

63

61

60

60*

75

72

69

67

66

65

65*

82

78

75

73

72*

Можно не решать каждый раз уравнения, а вычисления проводить в таблице.

Вычислим :

Дальнейшие расчеты для прекращаем, так как .

По результатам вычислений и линии, разграничивающей области решений сохранения и замены оборудования, находим оптимальный цикл замены оборудования. Для данной задачи он составляет 4 года.

Ответ: Для получения максимальной прибыли о использования оборудования в 12-этапном процессе оптимальный цикл состоит в замене оборудования через каждые 4 года.

  1. Предприятие рекламирует свою продукцию с использованием четырех источников массовой информации: телевидения, радио, газет и расклейки объявлений. Анализ рекламной деятельности в прошлом показал, что эти средства приводят к увеличению прибыли соответственно на 15, 10 12 и 9 усл. ед. в расчете на 1 усл. ед., затраченную на рекламу. На рекламу выделено 75000 усл. ед. Администрация не намерена тратить на телевидение более 40 %, а на радио и газеты – более 50% от общей суммы выделенных средств. Как следует предприятию организовать рекламу, чтобы получить максимальную прибыль? Решите задачу симплекс-методом.

Решение:

Найдем чему равны 40%, 50%, 10% от 75000:

40% от 75000 – 30000

50% от 75000 – 37500

10% от 75000 – 7500

Составим математическую модель:

Приведем задачу к каноническому виду:

Составим симплексную таблицу:

Базовые переменные

Коэффициенты при переменных

Свободные члены

1

0

0

0

1

0

0

30000

0

1

1

0

0

1

0

37500

0

0

0

1

0

0

1

7500

-15

-10

-12

-9

0

0

0

0

1

0

0

0

1

0

0

30000

0

1

1

0

0

1

0

37500

0

0

0

1

0

0

1

7500

0

-10

-12

-9

15

0

0

450000

1

0

0

0

1

0

0

30000

0

1

1

0

0

1

0

37500

0

0

0

1

0

0

1

7500

0

2

0

-9

15

12

0

900000

1

0

0

0

1

0

0

30000

0

1

1

0

0

1

0

37500

0

0

0

1

0

0

1

7500

0

2

0

0

15

12

9

967500

Из приведенного выше решения следует, что максимальная прибыль, которая может быть получена составляет 967500.

  1. В резерве трёх железнодорожных станций А, В и С находятся соответственно 60, 80 и 100 вагонов. Составьте оптимальный план перегона этих вагонов к четырём пунктам погрузки хлеба, если пункту № 1 необходимо 40 вагонов, № 2  60 вагонов, № 3  80 вагонов и № 4  60 вагонов. Стоимости перегонов одного вагона со станции А в указанные пункты соответственно равны 1, 2, 3, 4 ден. ед., со станции В – 4, 3, 2, 0 ден. ед. и со станции С  0, 2, 2, 1 ден. ед. Опорный план определяется с помощью методов «Северо-западного угла» и «Минимального элемента», оптимизация которого осуществляется методом потенциалов.

Решение:

A=60 №1=40

B=80 №2=60

C=100 №3=80

№4=60

, ,

станции

пункты погрузки

резерв

№1

№2

№3

№4

A

40

1

20

2

-

3

-

4

60/20/0

B

-

4

40

3

40

2

-

0

80/40

C

-

0

-

2

40

2

60

1

100/60/0

потребности

40/0

60/40/0

80/40/0

60/0

Суммарные транспортные расходы, соответствующие данному плану перевозок равны:

Для проверки плана на оптимальность составим систему уравнений, следуя условию — для базисных переменных сумма потенциалов равна тарифу. Значение одного из потенциалов зададим произвольно (пусть ), последовательность вычисления остальных потенциалов указана ниже:

Потенциалы поставщиков поместим справа от таблицы, а потенциалы потребителей – под таблицей.

Для небазисных переменных вычислим оценки по формуле:

Если , то условие оптимальности выполнено.

Имеем три отрицательные оценки для клеток . Выбираем максимальную по модулю отрицательную оценку. Строим цикл пересчета для клетки .

, а заполненных клеток 4, поэтому добавляем нули:

станции

пункты погрузки

резерв

№1

№2

№3

№4

A

- 1

60 2

0 3

- 4

60

B

-

4

- 3

80 2

0 0

80

C

40 0

- 2

- 2

60 1

100

потребности

40

60

80

60

Суммарные транспортные расходы, соответствующие данному плану перевозок равны:

Для проверки плана на оптимальность составим систему уравнений, следуя условию — для базисных переменных сумма потенциалов равна тарифу. Значение одного из потенциалов зададим произвольно (пусть ), последовательность вычисления остальных потенциалов указана ниже:

Потенциалы поставщиков поместим справа от таблицы, а потенциалы потребителей – под таблицей.

Для небазисных переменных вычислим оценки по формуле:

Если , то условие оптимальности выполнено.

Имеем отрицательную оценку для клетки . Строим цикл пересчета для клетки .

станции

пункты погрузки

резерв

№1

№2

№3

№4

A

- 1

60 2

0 3

-

4

60

B

- 4

- 3

20 2

60 0

80

C

40 0

-

2

60 2

-

1

100

потребности

40

60

80

60

Суммарные транспортные расходы, соответствующие данному плану перевозок равны:

Для проверки плана на оптимальность составим систему уравнений, следуя условию — для базисных переменных сумма потенциалов равна тарифу. Значение одного из потенциалов зададим произвольно (пусть ), последовательность вычисления остальных потенциалов указана ниже:

Потенциалы поставщиков поместим справа от таблицы, а потенциалы потребителей – под таблицей.

Для небазисных переменных вычислим оценки по формуле:

Если , то условие оптимальности выполнено.

Отрицательных оценок нет, план оптимален.

Решение транспортной задачи с помощью надстройки Excel «Поиск решения»:

Ответ: план перегона этих вагонов к четырем пунктам погрузки хлеба, представленный в таблице, является оптимальным. Стоимость перевозок по данному плану составляет 280 усл.ед.

  1. Модель предметной области описывается следующим неформальным текстом:

1. У каждой книги в библиотеке свой идентификационный номер.

2. Каждая книга может быть издана в одном издательстве.

3. В одном и том же издательстве издается несколько книг.

4. Каждая книга имеет определенное количество страниц, тип переплета, величину тиража.

5. Каждая книга в конкретный момент может находиться или в библиотеке или на руках только у одного читателя.

6. Каждый читатель может взять из библиотеки несколько книг.

7. Каждый читатель имеет уникальный номер абонемента.

8. Имя читателя не уникально. Название издательства не уникально.

9. Читатель имеет ФИО, телефон, адрес. Издательство – код, название, город.

Постройте функциональную модель для заданной предметной области с применением методологии DFD:

  • постройте контекстные диаграммы (1, 2 уровень): 1 уровень – идентифицируйте систему, определите сущности, определить потоки данных между сущностями и системой; 2 уровень – декомпозируйте систему, выделив совокупность процессов, определите хранилище данных, распределите потоки данных между процессами и хранилищем;

  • составьте словарь данных;

  • опишите спецификацию процессов.

Решение:

Функциональная модель с применением DFD

Рисунок № – 1 уровень

Рисунок № – 2 уровень

Словарь данных:

@ИМЯ = ДАННЫЕ О КНИГЕ

@ТИП = внешний, дискретный

@БНФ = /количество страниц + тип переплета + величину тиража/

@ИМЯ = ИНФОРМАЦИЯ О КНИГЕ

@ТИП = внутренний, дискретный

@БНФ = /ДАННЫЕ О КНИГЕ + ID книги/

@ИМЯ = ДАННЫЕ ОБ ИЗДАТЕЛЬСТВЕ

@ТИП = внешний, дискретный

@БНФ = /название + город/

@ИМЯ = ИНФОРМАЦИЯ ОБ ИЗДАТЕЛЬСТВЕ

@ТИП = внутренний, дискретный

@БНФ = /ДАННЫЕ ОБ ИЗДАТЕЛЬСТВЕ + ID издательства/

@ИМЯ = ДАННЫЕ О ЧИТАТЕЛЕ

@ТИП = внешний, дискретный

@БНФ = /ФИО + телефон + адрес/

@ИМЯ = ИНФОРМАЦИЯ О ЧИТАТЕЛЕ

@ТИП = внутренний, дискретный

@БНФ = /ДАННЫЕ О ЧИТАТЕЛЕ + ID читателя/

@ИМЯ = ЧИТ.БИЛЕТ

@ТИП = внешний, дискретный

@БНФ = / ИНФОРМАЦИЯ О ЧИТАТЕЛЕ + ИНФОРМАЦИЯ О КНИГЕ + ИНФОРМАЦИЯ ОБ ИЗДАТЕЛЬСТВЕ /

Спецификация процессов:

1. @ВХОД = ДАННЫЕ О КНИГЕ

@ВЫХОД = ИНФОРМАЦИЯ О КНИГЕ

СПЕЦПРОЦ А2 # РЕГИСТРИРОВАТЬ КНИГУ

ЕСЛИ добавить ДАННЫЕ О КНИГЕ ТО

ВЫПОЛНИТЬ регистрация книги

ВЫПОЛНИТЬ присвоить код книге

ИНФОРМАЦИЯ О КНИГЕ = ID книги + ДАННЫЕ О КНИГЕ

ЕСЛИ изменить ДАННЫЕ О КНИГЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЯ О КНИГЕ

КОНЕЦЕСЛИ

КОНЕЦЕСЛИ

2. @ВХОД = ДАННЫЕ ОБ ИЗДАТЕЛЬСТВЕ

@ВЫХОД = ИНФОРМАЦИЯ ОБ ИЗДАТЕЛЬСТВЕ

СПЕЦПРОЦ А3 # РЕГИСТРИРОВАТЬ ИЗДАТЕЛЬСТВО

ЕСЛИ добавить ДАННЫЕ ОБ ИЗДАТЕЛЬСТВЕ ТО

ВЫПОЛНИТЬ регистрация издательства

ВЫПОЛНИТЬ присвоить код издательству

ИНФОРМАЦИЯ ОБ ИЗДАТЕЛЬСТВЕ = ID издательства + ДАННЫЕ ОБ ИЗДАТЕЛЬСТВЕ

ЕСЛИ изменить ДАННЫЕ ОБ ИЗДАТЕЛЬСТВЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЯ ОБ ИЗДАТЕЛЬСТВЕ

КОНЕЦЕСЛИ

КОНЕЦЕСЛИ

3. @ВХОД = ДАННЫЕ О ЧИТАТЕЛЕ

@ВЫХОД = ИНФОРМАЦИЯ О ЧИТАТЕЛЕ

СПЕЦПРОЦ А1 # РЕГИСТРИРОВАТЬ ЧИТАТЕЛЯ

ЕСЛИ добавить ДАННЫЕ О ЧИТАТЕЛЕ ТО

ВЫПОЛНИТЬ регистрация читателя

ВЫПОЛНИТЬ присвоить код читателю

ИНФОРМАЦИЯ О ЧИТАТЕЛЕ = ID читателя + ДАННЫЕ О ЧИТАТЕЛЕ

ЕСЛИ изменить ДАННЫЕ О ЧИТАТЕЛЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЯ О ЧИТАТЕЛЕ

КОНЕЦЕСЛИ

КОНЕЦЕСЛИ

4. @ВХОД = ИНФОРМАЦИЯ О КНИГЕ + ИНФОРМАЦИЯ ОБ ИЗДАТЕЛЬСТВЕ + ИНФОРМАЦИЯ О ЧИТАТЕЛЕ

@ВЫХОД = ЧИТ.БИЛЕТ

СПЕЦПРОЦ А4 # СОСТАВЛЕНИЕ ЧИТ.БИЛЕТА

ВЫПОЛНИТЬ обработать ИНФОРМАЦИЯ О КНИГЕ + ИНФОРМАЦИЯ ОБ ИЗДАТЕЛЬСТВЕ + ИНФОРМАЦИЯ О ЧИТАТЕЛЕ

ВЫПОЛНИТЬ присвоить код каталогу

ВЫПОЛНИТЬ составить ЧИТ.БИЛЕТ

ЧИТ.БИЛЕТ = ID билета + ИНФОРМАЦИЯ О КНИГЕ + ИНФОРМАЦИЯ ОБ ИЗДАТЕЛЬСТВЕ + ИНФОРМАЦИЯ О ЧИТАТЕЛЕ

  1. Модель предметной области описывается следующим неформальным текстом:

1. В университете занятия проводятся в различных корпусах.

2. Каждый корпус имеет уникальное название.

3. Номера аудиторий уникальны в пределах одного корпуса.

4. Каждая аудитория характеризуется числом посадочных мест, типом (поточная, лекционная, лаборатория, компьютерный класс).

5. Один и тот же тип может быть у различных аудиторий.

6. Каждый корпус имеет свой адрес.

7. К каждой аудитории прикреплен один сотрудник, ответственный за пожарную безопасность.

8. Один сотрудник может быть ответственным за несколько аудиторий.

9. Сотрудник имеет табельный номер, ФИО, должность, служебный телефон.

Постройте функциональную модель для заданной предметной области с применением методологии DFD:

  • постройте контекстные диаграммы (1, 2 уровень): 1 уровень – идентифицируйте систему, определите сущности, определить потоки данных между сущностями и системой; 2 уровень – декомпозируйте систему, выделив совокупность процессов, определите хранилище данных, распределите потоки данных между процессами и хранилищем;

  • составьте словарь данных;

  • опишите спецификацию процессов.

Решение:

Функциональная модель с применением DFD

Рисунок 1 - 1 уровень

Рисунок 2 - 2 уровень

Словарь данных:

@ИМЯ = ДАННЫЕ О СОТРУДНИКЕ

@ТИП = внешний, дискретный

@БНФ = /ФИО + должность + телефон/

@ИМЯ = ИНФОРМАЦИЯ О СОТРУДНИКЕ

@ТИП = внутренний, дискретный

@БНФ = /ДАННЫЕ О СОТРУДНИКЕ + табельный номер/

@ИМЯ = ДАННЫЕ О КОРПУСЕ

@ТИП = внешний, дискретный

@БНФ = /название + адрес/

@ИМЯ = ИНФОРМАЦИЯ О КОРПУСЕ

@ТИП = внутренний, дискретный

@БНФ = /ДАННЫЕ О КОРПУСЕ + ID корпуса/

@ИМЯ = ДАННЫЕ ОБ АУДИТОРИИ

@ТИП = внешний, дискретный

@БНФ = / число посадочных мест + тип /

@ИМЯ = ИНФОРМАЦИЯ ОБ АУДИТОРИИ

@ТИП = внутренний, дискретный

@БНФ = /ДАННЫЕ ОБ АУДИТОРИИ + ID аудитории/

@ИМЯ = СВЕДЕНИЯ ОБ АУДИТОРИЯХ

@ТИП = внешний, дискретный

@БНФ = / ИНФОРМАЦИЯ О СОТРУДНИКЕ + ИНФОРМАЦИЯ О КОРПУСЕ + ИНФОРМАЦИЯ ОБ АУДИТОРИИ/

Спецификация процессов:

1. @ВХОД = ДАННЫЕ О СОТРУДНИКЕ

@ВЫХОД = ИНФОРМАЦИЯ О СОТРУДНИКЕ

СПЕЦПРОЦ А1 # РЕГИСТРИРОВАТЬ СОТРУДНИКА

ЕСЛИ добавить ДАННЫЕ О СОТРУДНИКЕ ТО

ВЫПОЛНИТЬ регистрация сотрудника

ВЫПОЛНИТЬ присвоить код сотруднику

ИНФОРМАЦИЯ О СОТРУДНИКЕ = ID сотрудника + ДАННЫЕ О СОТРУДНИКЕ

ЕСЛИ изменить ДАННЫЕ О СОТРУДНИКЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЯ О СОТРУДНИКЕ

КОНЕЦЕСЛИ

КОНЕЦЕСЛИ

2. @ВХОД = ДАННЫЕ О КОРПУСЕ

@ВЫХОД = ИНФОРМАЦИЯ О КОРПУСЕ

СПЕЦПРОЦ А2 # РЕГИСТРИРОВАТЬ КОРПУС

ЕСЛИ добавить ДАННЫЕ О КОРПУСЕ ТО

ВЫПОЛНИТЬ регистрация корпуса

ВЫПОЛНИТЬ присвоить код корпусу

ИНФОРМАЦИЯ О КОРПУСЕ = ID корпуса + ДАННЫЕ О КОРПУСЕ

ЕСЛИ изменить ДАННЫЕ О КОРПУСЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЯ О КОРПУСЕ

КОНЕЦЕСЛИ

КОНЕЦЕСЛИ

3. @ВХОД = ДАННЫЕ ОБ АУДИТОРИИ

@ВЫХОД = ИНФОРМАЦИЯ ОБ АУДИТОРИИ

СПЕЦПРОЦ А3 # РЕГИСТРИРОВАТЬ АУДИТОРИЮ

ЕСЛИ добавить ДАННЫЕ ОБ АУДИТОРИИ ТО

ВЫПОЛНИТЬ регистрация аудитории

ВЫПОЛНИТЬ присвоить код аудитории

ИНФОРМАЦИЯ ОБ АУДИТОРИИ = ID аудитории + ДАННЫЕ ОБ АУДИТОРИИ

ЕСЛИ изменить ДАННЫЕ ОБ АУДИТОРИИ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЯ ОБ АУДИТОРИИ

КОНЕЦЕСЛИ

КОНЕЦЕСЛИ

4. @ВХОД = ИНФОРМАЦИЯ О СОТРУДНИКЕ + ИНФОРМАЦИЯ О КОРПУСЕ + ИНФОРМАЦИЯ ОБ АУДИТОРИИ

@ВЫХОД = СВЕДЕНИЯ ОБ АУДИТОРИЯХ

СПЕЦПРОЦ А4 # СОСТАВЛЕНИЕ СВЕДЕНИЯ ОБ АУДИТОРИЯХ

ВЫПОЛНИТЬ обработать ИНФОРМАЦИЯ О СОТРУДНИКЕ + ИНФОРМАЦИЯ О КОРПУСЕ + ИНФОРМАЦИЯ ОБ АУДИТОРИИ

ВЫПОЛНИТЬ составить СВЕДЕНИЯ ОБ АУДИТОРИЯХ

СВЕДЕНИЯ ОБ АУДИТОРИЯХ = ИНФОРМАЦИЯ О СОТРУДНИКЕ + ИНФОРМАЦИЯ О КОРПУСЕ + ИНФОРМАЦИЯ ОБ АУДИТОРИИ

  1. Модель предметной области описывается следующим неформальным текстом:

1. У каждой студенческой группы только один куратор.

2. Название группы уникально.

3. Имя куратора не уникально.

4. Каждый преподаватель может быть куратором в нескольких группах.

5. У каждого куратора может быть только одна должность.

6. Одну и ту же должность могут иметь несколько преподавателей.

7. Несколько должностей могут иметь один и тот же оклад.

8. Преподаватель имеет ФИО, год рождения, ученую степень, адрес.

Постройте функциональную модель для заданной предметной области с применением методологии DFD:

постройте контекстные диаграммы (1, 2 уровень): 1 уровень – идентифицируйте систему, определите сущности, определить потоки данных между сущностями и системой; 2 уровень – декомпозируйте систему, выделив совокупность процессов, определите хранилище данных, распределите потоки данных между процессами и хранилищем;

составьте словарь данных;

опишите спецификацию процессов.

Функциональная модель с применением DFD (рисунок 3,4)

Рисунок 3 - 1 уровень

Рисунок 4 - 2 уровень

Словарь данных:

@ИМЯ = ДАННЫЕ О КУРАТОРЕ

@ТИП = внешний, дискретный

@БНФ = /ФИО + год рождения + ученую степень + адрес /

@ИМЯ = ИНФОРМАЦИЯ О КУРАТОРЕ

@ТИП = внутренний, дискретный

@БНФ = /ДАННЫЕ О КУРАТОРЕ + номер/

@ИМЯ = ДАННЫЕ О ГРУППЕ

@ТИП = внешний, дискретный

@БНФ = /название + количество студентов/

@ИМЯ = ИНФОРМАЦИЯ О ГРУППЕ

@ТИП = внутренний, дискретный

@БНФ = /ДАННЫЕ О ГРУППЕ + ID группы/

@ИМЯ = ДАННЫЕ О ДОЛЖНОСТИ

@ТИП = внешний, дискретный

@БНФ = /оклад + название/

@ИМЯ = ИНФОРМАЦИЯ О ДОЛЖНОСТИ

@ТИП = внутренний, дискретный

@БНФ = /ДАННЫЕ О ДОЛЖНОСТИ + ID должности/

@ИМЯ = СВЕДЕНИЯ О ПРЕПОДАВАТЕЛЕ

@ТИП = внешний, дискретный

@БНФ = /ИНФОРМАЦИЯ О КУРАТОРЕ + ИНФОРМАЦИЯ О ГРУППЕ + ИНФОРМАЦИЯ О ДОЛЖНОСТИ /

Спецификация процессов:

1. @ВХОД = ДАННЫЕ О ГРУППЕ

@ВЫХОД = ИНФОРМАЦИЯ О ГРУППЕ

СПЕЦПРОЦ А1 # РЕГИСТРИРОВАТЬ ГРУППУ

ЕСЛИ добавить ДАННЫЕ О ГРУППЕ ТО

ВЫПОЛНИТЬ регистрация группы

ВЫПОЛНИТЬ присвоить код группе

ИНФОРМАЦИЯ О ГРУППЕ = ID группы + ДАННЫЕ О ГРУППЕ

ЕСЛИ изменить ДАННЫЕ О ГРУППЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЯ О ГРУППЕ

КОНЕЦЕСЛИ

КОНЕЦЕСЛИ

2. @ВХОД = ДАННЫЕ О КУРАТОРЕ

@ВЫХОД = ИНФОРМАЦИЯ О КУРАТОРЕ

СПЕЦПРОЦ А2 # РЕГИСТРИРОВАТЬ КУРАТОРА

ЕСЛИ добавить ДАННЫЕ О КУРАТОРЕ ТО

ВЫПОЛНИТЬ регистрация куратора

ВЫПОЛНИТЬ присвоить код куратора

ИНФОРМАЦИЯ О КУРАТОРЕ = ID куратора + ДАННЫЕ О КУРАТОРЕ

ЕСЛИ изменить ДАННЫЕ О КУРАТОРЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЯ О КУРАТОРЕ

КОНЕЦЕСЛИ

КОНЕЦЕСЛИ

3. @ВХОД = ДАННЫЕ О ДОЛЖНОСТИ

@ВЫХОД = ИНФОРМАЦИЯ О ДОЛЖНОСТИ

СПЕЦПРОЦ А3 # РЕГИСТРИРОВАТЬ ДОЛЖНОСТЬ

ЕСЛИ добавить ДАННЫЕ О ДОЛЖНОСТИ ТО

ВЫПОЛНИТЬ регистрация должности

ВЫПОЛНИТЬ присвоить код должности

ИНФОРМАЦИЯ О ДОЛЖНОСТИ = ID должности + ДАННЫЕ О ДОЛЖНОСТИ

ЕСЛИ изменить ДАННЫЕ О ДОЛЖНОСТИ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЯ О ДОЛЖНОСТИ

КОНЕЦЕСЛИ

КОНЕЦЕСЛИ

4. @ВХОД = ИНФОРМАЦИЯ О КУРАТОРЕ + ИНФОРМАЦИЯ О ГРУППЕ + ИНФОРМАЦИЯ О ДОЛЖНОСТИ

@ВЫХОД = СВЕДЕНИЯ О ПРЕПОДАВАТЕЛЕ

СПЕЦПРОЦ А4 # СОСТАВЛЕНИЕ СВЕДЕНИЯ О ПРЕПОДАВАТЕЛЕ

ВЫПОЛНИТЬ обработать ИНФОРМАЦИЯ О КУРАТОРЕ + ИНФОРМАЦИЯ О ГРУППЕ + ИНФОРМАЦИЯ О ДОЛЖНОСТИ

ВЫПОЛНИТЬ составить СВЕДЕНИЯ О ПРЕПОДАВАТЕЛЕ

СВЕДЕНИЯ О ПРЕПОДАВАТЕЛЕ = ИНФОРМАЦИЯ О КУРАТОРЕ + ИНФОРМАЦИЯ О ГРУППЕ + ИНФОРМАЦИЯ О ДОЛЖНОСТИ

29. Модель предметной области описывается следующим неформальным текстом:

1. Номер зачетки студента уникален, то есть не может быть двух студентов, у которых одинаковые номера зачеток

2. Несколько студентов, могут иметь одинаковые имена.

3. Каждый студент учится только в одной группе

4. В одной группе учатся несколько студентов.

5. Название группы уникально.

6. Каждая группа относится к одной кафедре.

7. К одной кафедре относится несколько групп.

8. Название кафедры уникально.

9. Студент имеет ФИО, год рождения, адрес. Кафедра название и зав. кафедрой.

Постройте функциональную модель для заданной предметной области с применением методологии DFD:

  • постройте контекстные диаграммы (1, 2 уровень): 1 уровень – идентифицируйте систему, определите сущности, определить потоки данных между сущностями и системой; 2 уровень – декомпозируйте систему, выделив совокупность процессов, определите хранилище данных, распределите потоки данных между процессами и хранилищем;

  • составьте словарь данных;

  • опишите спецификацию процессов.

Функциональная модель с применением DFD

Рисунок 5 - 1 уровень

Рисунок 6 - 2 уровень

Словарь данных:

@ИМЯ = ДАННЫЕ О КАФЕДРЕ

@ТИП = внешний, дискретный

@БНФ = /название + зав.кафедрой/

@ИМЯ = ИНФОРМАЦИЯ О КАФЕДРЕ

@ТИП = внутренний, дискретный

@БНФ = /ДАННЫЕ О КАФЕДРЕ + ID кафедры/

@ИМЯ = ДАННЫЕ О ГРУППЕ

@ТИП = внешний, дискретный

@БНФ = /название + количество студентов/

@ИМЯ = ИНФОРМАЦИЯ О ГРУППЕ

@ТИП = внутренний, дискретный

@БНФ = /ДАННЫЕ О ГРУППЕ + ID группы

@ИМЯ = ДАННЫЕ О СТУДЕНТЕ

@ТИП = внешний, дискретный

@БНФ = / ФИО + год рождения + адрес /

@ИМЯ = ИНФОРМАЦИЯ О СТУДЕНТЕ

@ТИП = внутренний, дискретный

@БНФ = /ДАННЫЕ О СТУДЕНТЕ + номер зачетки /

@ИМЯ = СВЕДЕНИЯ О СТУДЕНТАХ

@ТИП = внешний, дискретный

@БНФ = /ИНФОРМАЦИЯ О СТУДЕНТЕ + ИНФОРМАЦИЯ О ГРУППЕ + ИНФОРМАЦИЯ О КАФЕДРЕ /

/

Спецификация процессов:

1. @ВХОД = ДАННЫЕ О ГРУППЕ

@ВЫХОД = ИНФОРМАЦИЯ О ГРУППЕ

СПЕЦПРОЦ А2 # РЕГИСТРИРОВАТЬ ГРУППУ

ЕСЛИ добавить ДАННЫЕ О ГРУППЕ ТО

ВЫПОЛНИТЬ регистрация группы

ВЫПОЛНИТЬ присвоить код группе

ИНФОРМАЦИЯ О ГРУППЕ = ID группы + ДАННЫЕ О ГРУППЕ

ЕСЛИ изменить ДАННЫЕ О ГРУППЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЯ О ГРУППЕ

КОНЕЦЕСЛИ

КОНЕЦЕСЛИ

2. @ВХОД = ДАННЫЕ О КАФЕДРЕ

@ВЫХОД = ИНФОРМАЦИЯ О КАФЕДРЕ

СПЕЦПРОЦ А3 # РЕГИСТРИРОВАТЬ КАФЕДРУ

ЕСЛИ добавить ДАННЫЕ О КАФЕДРЕ ТО

ВЫПОЛНИТЬ регистрация кафедры

ВЫПОЛНИТЬ присвоить код кафедре

ИНФОРМАЦИЯ О КАФЕДРЕ = ID кафедры + ДАННЫЕ О КАФЕДРЕ

ЕСЛИ изменить ДАННЫЕ О КАФЕДРЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЯ О КАФЕДРЕ

КОНЕЦЕСЛИ

КОНЕЦЕСЛИ

3. @ВХОД = ДАННЫЕ О СТУДЕНТЕ

@ВЫХОД = ИНФОРМАЦИЯ О СТУДЕНТЕ

СПЕЦПРОЦ А1 # РЕГИСТРИРОВАТЬ СТУДЕНТА

ЕСЛИ добавить ДАННЫЕ О СТУДЕНТЕ ТО

ВЫПОЛНИТЬ регистрация студента

ВЫПОЛНИТЬ присвоить код студенту

ИНФОРМАЦИЯ О СТУДЕНТЕ = ID студента + ДАННЫЕ О СТУДЕНТЕ

ЕСЛИ изменить ДАННЫЕ О СТУДЕНТЕ ТО

ВЫПОЛНИТЬ редактировать ИНФОРМАЦИЯ О СТУДЕНТЕ

КОНЕЦЕСЛИ

КОНЕЦЕСЛИ

4. @ВХОД = ИНФОРМАЦИЯ О СТУДЕНТЕ + ИНФОРМАЦИЯ О ГРУППЕ + ИНФОРМАЦИЯ О КАФЕДРЕ

@ВЫХОД = СВЕДЕНИЯ О СТУДЕНТАХ

СПЕЦПРОЦ А4 # СОСТАВЛЕНИЕ СВЕДЕНИЯ О СТУДЕНТАХ

ВЫПОЛНИТЬ обработать ИНФОРМАЦИЯ О СТУДЕНТЕ + ИНФОРМАЦИЯ О ГРУППЕ + ИНФОРМАЦИЯ О КАФЕДРЕ

ВЫПОЛНИТЬ составить СВЕДЕНИЯ О СТУДЕНТАХ

СВЕДЕНИЯ О СТУДЕНТАХ = ИНФОРМАЦИЯ О СТУДЕНТЕ + ИНФОРМАЦИЯ О ГРУППЕ + ИНФОРМАЦИЯ О КАФЕДРЕ

  1. В СУБД Mysql создайте базу данных mydbname, состоящую из двух таблиц personal (с полями ФИО, Должность, ДатаРождения, Пол, ЗарПлата) и bosses (ФИО, Должность, СтажРаботы). Выведите записи из таблицы personal, отсортированные по полю ЗарПлата. Добавьте несколько записей в таблицу perlsonal с уже существующим полем ФИО. Выведите суммарный итог по полю ЗарПлата, сгруппировав записи по полю ФИО

$lnk=mysql_connect("localhost", "user", "123456");

mysql_create_db("mydbname");

mysql_select_db('mydbname', $lnk);

$select="DROP TABLE IF EXISTS `personal`;

CREATE TABLE `personal`

(`kod` int(10) NOT NULL,

`fio` varchar(255) default NULL,

`dolgnost` varchar(255) default NULL,

`birth` date default NULL,

`pol` varchar(255) default NULL,

`zp` double default NULL,

PRIMARY KEY (`kod`))

ENGINE=MyISAM DEFAULT CHARSET=cp1251;";

mysql_query($select);

$select="DROP TABLE IF EXISTS `bosses`;

CREATE TABLE `bosses`

(`kod` int(10) NOT NULL,

`fio` varchar(255) default NULL,

`dolgnost` varchar(255) default NULL,

`stazh` int(10) default NULL,

PRIMARY KEY (`kod`))

ENGINE=MyISAM DEFAULT CHARSET=cp1251;";

mysql_query($select);

$select="SELECT * FROM personal ORDER BY zp";

mysql_query($select);

while($row = mysql_fetch_row($result)) {

echo $row[1].' '.$row[2].' '.$row[3].' '.$row[4];

}

$select="INSERT INTO personal VALUES (NULL,'Иванов','Директор','1985-01-01','мужской',30000)";

mysql_query($select);

$select="SELECT SUMMA(zp) FROM personal GROUP BY fio";

mysql_query($select);

while($row = mysql_fetch_row($result)) {

echo $row[1].' '.$row[2].' '.$row[3].' '.$row[4];

}

      1. C помощью PHP соединитесь с MySQL базой данных - igadb, используя логин igauser@localhost и пароль 123456. Сделайте активной таблицу igatable. Внесите в нее произвольные данные исходя из обозначенной структуры

  • ID (INT, NOT NULL, PRIMARY KEY, AUTO_INCREMENT)

  • FIO (VARCHAR 255)

  • MONEY (INT)

  • GENDER (CHAR)

  • BIRTHDAY (DATE)

Выведите внесенные данные любым способом

$lnk=mysql_connect("localhost", "igauser", "123456");

mysql_select_db('igadb', $lnk);

$select="INSERT INTO igatable VALUES (NULL,'Иванов','300','мужской','1985-01-01')";

mysql_query($select);

$select="SELECT * FROM igatable";

mysql_query($select);

while($row = mysql_fetch_row($result)) {

echo $row[1].' '.$row[2].' '.$row[3].' '.$row[4];

}

  1. Создайте HTML документ с формой, состоящей из основных интерфейсных элементов (однострочное поле, поле для многострочного текста, выпадающий список, кнопка, переключатель). Измените стандартный вид элементов с помощью CSS стилей. Напишите Javascript функцию для проверки нескольких полей на отсутствие значения.

<form name="f">

<br>Ваше имя:<br>

<input id="nn" type="text" name="t1" value="" style="colorCC0000; border:2px solid #0000cc;">

<br><br><textarea style="colorCC0000; border:2px solid #0000cc; backgroundCCeeee;">Комментарий...</textarea>

<br>С чем пирожки??

<br><input type="radio" value="p"> С картошкой<Br>

<input type="radio" value="k"> С капустой<Br>

<input type="radio" value="m"> С грибами<Br>

Где продают?

<br><select class="zf" id="input-select" style="colorCC0000; border:2px solid #0000cc;">

<option value="1">Россия</option>

<option value="2">Беларусь</option>

<option value="3">Украина</option>

<option value="4">Казахстан</option>

</select>

<br><br><input type="submit" value="Отправить" onClick="sendform();"><Br>

</form>

<script language="javascript">

function sendform() {

objocument.getElementById("nn");

if (obj.value == "") {

alert('Пожалуйста, введите Ваше имя');

return false

}

return true;

}

</script>

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

Справочники

Должности, Сотрудники

Документы

Прием на работу, Увольнение

Журналы документов

Кадровые документы

1.Создать новую папку на любом диске, например, "C:\Учебная" 2.Запустить 1С:Предприятие. Откроется список информационных баз.

3. Нажать кнопку Добавить. Указать имя информационной базы, как оно будет отображаться в списке баз, например "Учебная". Имя базы может быть произвольным, от него ничего не зависит.

4. В следующем поле указать путь к папке, которую создали на 1 шаге. Нажмите кнопку "…", войдите в папку и нажмите Выбрать.

5. Нажмите ОК. В списке информационных баз появится новая строка. Для ее редактирования можно нажать кнопку Изменить. Например, информационную базу перенесли в другое место или вы хотите задать другое название для информационной базы. Для удаления информационной базы из списка нужно нажать кнопку Удалить. При этом информационная база удаляется из списка, но не удаляется физически с диска.

6. Укажите режим запуска Конфигуратор.

7. Нажмите ОК для запуска базы в режиме конфигуратор.

8. Так как в созданной папке пока ничего нет, то 1С спросит в каком формате будет храниться база данных: В файлах DBF или на SQL-Server Указать формат "Файлы DBF" и нажмите ОК.

9. Запустится конфигуратор. Открыть дерево конфигурации. Для этого щелкнуть меню Конфигурация => Открыть конфигурацию или кнопочку . Появится окно дерева конфигурации.

Создание объектов конфигурации

10. Установить курсор на строку Справочники и щелкнуть кнопку (или щелкнуть правой кнопкой мыши и выбрать Новый справочник). При этом откроется окно Конструктора справочников.

11. Снять флажок "Использовать конструкторы при создании новых объектов" и нажать кнопку Отмена для закрытия конструктора.

12. Установить курсор на строку Справочники и щелкнуть кнопку (или щелкните правой кнопкой мыши и выберите Новый справочник1.

3. Задать идентификатор справочника (имя), создать справочник «Должности».

14. Задать длину наименования 30 символов.

15. Закрыть окно структуры справочника Должности.

14. Сохранить конфигурацию.

15. Создать справочник Сотрудники. (Установить курсор на Справочники и щелкните кнопку Новый). Задать имя справочника (идентификатор) «Сотрудники».

16. Задать длину наименования 100 символов.

17. В этом справочнике будет еще одно поле (реквизит, атрибут) Должность. Нажать кнопку Добавить, откроется окно редактирования свойств реквизита.

18. Задать имя реквизита «Должность». Укажите тип реквизита «Справочник. Должности», который создали раньше. Это говорит о том, что значения данного реквизита будут выбираться из справочника Должности. Нажать ОК.

19. Создайте реквизит Оклад (тип Число, Точность 2 знака после запятой)

20. Создать реквизиты ДатаПриема и ДатаУвольнения (тип Дата)

21. Сохранить конфигурацию

22. Запустить 1С:Предприятие в режиме Предприятие.

23. Открыть справочник Должности. Для этого щелкнуть меню Операции => Справочники => Должности. Откроется окно справочника.

24. Ввести несколько должностей, используя кнопку или клавишу INS. Например, Директор, Бухгалтер, Программист.

25. Закрыть справочник Должности и открыть справочник Сотрудники. (Щелкнуть меню Операции => Справочники => Сотрудники).

26. Завести нескольких сотрудников. Например, Иванов - директор, Петров - Бухгалтер, Сидоров - Программист.

27. Закрыть 1С:Предприятие и запустить базу в режиме Конфигуратор.

28. Теперь создать новый документ "ПриемНаРаботу". (установить курсор на Документы и щелкнуть Новый). Задать имя документа ПриемНаРаботу.

29. Добавить реквизит шапки "Сотрудник", указать ему тип значения Строка и длина 100 символов. Нажмите ОК.

30. У документа должна быть удобная форма для ввода данных. Нажать кнопку "Форма" в нижней части окна.

32. Нужно создать форму следующего вида:

33. открыть окно "Модуль документа", написать там следующий текст:

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");

СпрСотр.Новый();

СпрСотр.Наименование = Сотрудник;

СпрСотр.Должность = Должность;

СпрСотр.Оклад = Оклад;

СпрСотр.ДатаПриема = ДатаПриема;

СпрСотр.Записать();

34. Сохраните конфигурацию.

35. Открыть 1с: Предприятие. Открыть журнал документов Прочие. Щелкнуть Операции => Журналы документов => Прочие.

36. Щелкнуть кнопку или нажать клавишу INS. Откроется форма документа "Прием на работу" для ввода данных. Номер документа присвоится автоматически, дата документа - сегодняшнее число.

37.увольнение сотрудников с помощью кадрового приказа. Создать в Конфигураторе новый документ "Увольнение". Указать, что он содержит реквизиты шапки "Сотрудник" тип "Справочник.Сотрудники и "Дата увольнения" тип Дата.

38. Написать следующий текст в модуле документа в процедуре ОбработкаПроведения():

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");

СпрСотр.НайтиЭлемент(Сотрудник);

СпрСотр.ДатаУвольнения = ДатаУвольнения;

СпрСотр.Записать();

39. Создать журнал "КадровыеДокументы". Установить курсор на "Журналы документов" в дереве конфигурации и щелкнуть Новый. Задать имя журнала.

40. открыть окно для редактирования структуры документа "ПриемНаРаботу". В верхней части окна изменить журнал "Прочие" на журнал "КадровыеДокументы".тоже самое сделать с документом Увольнение. 41. Создать пользовательское меню. В окне конфигурации внизу есть вкладка Интерфейсы. Создать новый Интерфейс и назвать его Администратор. Интерфейс появится в списке интерфейсов. Щелкнуть дважды на интерфейсе и выбрать "Редактировать меню". Откроется окно редактора меню. Нажать кнопку и затем "Построить". Конструктур автоматически создаст все пункты меню.

      1. Создайте простейшую систему складского учета для нескольких складов, которая позволит приходовать и отпускать материалы.

Справочники

Материалы (3 уровня), Склады

Документы

Приход, Расход

Журналы документов

Складские

В конфигурации создать следующие объекты:

Тип объектов

Объекты

Справочники

  • Материалы (количество уровней: 3)

  • Склады

Документы

  • Приход (реквизиты шапки: Склад, реквизиты табличной части: Материал, Количество)

  • Расход (реквизиты шапки: Склад, реквизиты табличной части: Материал, Количество)

При создании документов не забудьте поставить галочку "Оперативный учет", чтобы данный документ мог делать движения в регистрах.

Журналы документов

  • Складские

Документ "Приход"

Экранная форма документа Приход выглядит следующим образом:

Модуль проведения:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

Регистр.ОстаткиМатериалов.Материал = Материал;

Регистр.ОстаткиМатериалов.Склад = Склад;

Регистр.ОстаткиМатериалов.Количество = Количество;

Регистр.ОстаткиМатериалов.ДвижениеПриходВыполнить();

КонецЦикла;

КонецПроцедуры

Документ "Расход"

Экранная форма документа Расход выглядит следующим образом (отличается только названием):

Модуль проведения:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

Регистр.ОстаткиМатериалов.Материал = Материал;

Регистр.ОстаткиМатериалов.Склад = Склад;

Регистр.ОстаткиМатериалов.Количество = Количество;

Регистр.ОстаткиМатериалов.ДвижениеРасходВыполнить();

КонецЦикла;

КонецПроцедуры