Построить диаграмму Компонентов на тему: «Система начисления зарплаты»
Подсказка для задания:
Перед информационной службой компании поставлена задача создания новой системы начисления зарплаты взамен морально устаревшей существующей системы. Новая система должна предоставлять служащим возможность записывать электронным информацию из карточки учета рабочего времени и автоматически формировать чеки на оплату, учитывающие количество отработанных часов и общий объем продаж (для служащих, получающих комиссионное вознаграждение).
Новая система должна предоставлять служащим возможность вводить информацию из карточки учета рабочего времени, вводить заказы на поставку, изменять свои параметры (такие, как оплаты за работу), и формировать различные отчеты. Система должна работать на персональных компьютерах служащих всей компании. В целях обеспечения безопасности и аудита служащие должны иметь возможность доступа и редактирования только своих собственных карточек учета рабочего времени и заказов на поставку.
В системе должна храниться информация обо всех служащих компании в различных странах. Система должна обеспечивать правильную и своевременную оплату работы каждого служащего в соответствии с указанным им Компания из соображений экономии расходов желает сохранить без изменений одну из существующих баз данных (БД управления проектами), которая содержит всю информацию относительно проектов и тарифов. БД управления проектами функционирует в среде DB2 на мейнфрейме IBM. Новая система может читать данные из БД управления проектами, но не может обновлять их.
Некоторые служащие получают почасовую зарплату. Она начисляется на основе карточек учета рабочего времени, каждая из которых содержит дату и количество часов, отработанных в соответствии с конкретным тарифом. Если какой-либо служащий отработал в день более 8 часов, сверхурочное время оплачивается с коэффициентом 1.5. Служащие-почасовики получают зарплату каждую пятницу.
Некоторые служащие получают фиксированный оклад, однако они тоже представляют свои карточки учета рабочего времени. Благодаря этому система может вести учет количества часов, отработанных в соответствии с конкретными тарифами. Такие служащие получают зарплату в последний рабочий день месяца.
Некоторые из служащих с фиксированным окладом также получают комиссионное вознаграждение, учитывающее объем продаж. Они представляют заказы на поставку, отражающие дату и объем продаж. Процент комиссионного вознаграждения определяется индивидуально для каждого служащего и может составлять 10%, 15%, 25% или 35%.
Одной из наиболее часто используемых возможностей новой системы является формирование различных отчетов. За количество отработанных часов, суммарную зарплату, оставшееся время отпуска и т.д.
Служащие могут выбирать оплаты за работу. Они могут получать свои чеки на оплату по почте, на счет в банке или на руки в офисе. Администратор системы ведет информацию о служащих. В его обязанности входит ввод данных о новых служащих, удаление данных и изменение любой информации о служащем, такой, как имя, адрес и оплаты, а также формирование различных отчетов для руководства.
Приложение начисления зарплаты запускается автоматически каждую пятницу и в последний рабочий день месяца, рассчитывая в эти дни зарплату соответствующих служащих. Начисление зарплаты должно производиться автоматически, без ручного вмешательства.
var
a: array[1..20, 1..20] of integer;
n, m, i, j, jm: integer;
begin
randomize;
writeln('Введите количество строк и столбцов соответственно: ');
readln(n, m);
writeln('Сгенерированная матрица: ');
for i := 1 to n do
begin
jm := 1;
for j := 1 to m do
begin
a[i, j] := random(99);
write(a[i, j]:4);
if (i mod 2 = 0) and (a[i, jm] > a[i, j])
then jm := j;
end;
if i mod 2 = 0 then write(' min=a[', i, ',', jm, ']=', a[i, jm]);
writeln;
end;
readln;
end.
Объяснение:
Задание 1
PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018
Внимание! Если программа не работает, обновите версию!
begin
var s:=ReadlnString;
var a:=s.ToWords('.').Select(t->Trim(t)).ToArray;
var b:=s.ToWords(Arr('.',' '))
.GroupBy(t->t).Select(t->(t.Key,t.Count))
.Where(t->t[1]>1).Select(t->t[0]).ToArray;
a.Cartesian(b,(p,q)->p.Contains(q)?p:'')
.Where(t->t.Length>0).Distinct.PrintLines
end.
Примеры
Мама мыла полы. Маша ела кашу. Даша пила молоко. Таня мыла полы.
Мама мыла полы
Таня мыла полы
Мама мыла раму.
Маша ела кашу. Даша пила молоко. Таня мыла полы.
Мама мыла рамуТаня мыла полы
Задание 2
uses crt;
var n,i,k:integer;
begin
repeat
write('Введите натуральное число >0 n=');
read(n);
until n>0;
if n=1 then write('Простых множителей нет')
else
begin
write(n,'=');
i:=2;
while i<=n do
begin
k:=0;
while n mod i=0 do
begin
k:=k+1;
n:=n div i;
end;
if i<n then
begin
if k=1 then write(i,'*')
else if k>1 then write(i,'^',k,'*');
end
else
begin
if k=1 then write(i)
else if k>1 then write(i,'^',k);
end;
i:=i+1;
end;
end;
end.
Задание 3
var n,m,i:integer;
function fact(j:integer):longint;
begin
if j=1 then fact:=1 else fact:=j*fact(j-1);
end;
begin
readln(m,n);
for i:=m to n do if i mod 2 =0 then write(fact(i),' ');
writeln;
end.
Задание 4
program SomeProgram;
var i,n,summ:integer;
a:array[1..150] of integer;
begin
readln(n); {ввод размерности массива}
for i:=1 to n do readln(a[i]); {ввод массива}
summ:=0; {обнулим сумму на всякий случай}
for i:=1 to n do {собственно поиск суммы}
if a[i]=i then {коли номер элемента равен элементу, то...}
summ:=summ+a[i]; {...прибавить к сумме значение элемента}
Writeln('Сумма:',summ);
end.