Глава 11. Представление и обработка дат.

Глава 11
Представление и обработка дат

Встроенный объект Data применяется для представления и обработки даты и времени. Он не имеет свойств, но обладает несколькими методами, позволяющими устанавливать и изменять дату и время. В языке JavaScript дата определяется числом миллисекунд, прошедших с 1 января 1970 года.

Объект Data создается оператором new с помощью конструктора Data. Если в конструкторе отсутствуют параметры, то значением new Data () будет текущая дата и время. Значением переменной my_datei, определенной следующим образом:

var my_datal = new Data()

будет объект, соответствующий текущей дате и времени. 

Параметром конструктора new Data может быть строка формата "месяц, день, год часы:минуты: секунды". Опишем переменную my_data2 И Приcвоим ей начальное значение:

var my_data2 = new DataC'Fv, 12, 1978 16:45:10")

Переменная my_data2 определяет дату 12 февраля 1978 года и время 16 часов 45 минут и 10 секунд. Значения часов, минут, секунд можно опустить, в этом случае они будут равны нулю:

var my_data3 = new Data("Feb, 12, 1978")

Параметры конструктора new Data могут определять год, месяц, число, время, минуты, секунды с помощью чисел. Дату 12 февраля 1978 года и время 16 часов 45 минут и 10 секунд можно задать так:

var my_data4 = new Data(78, 1, 12, 16, 45, 10)

Если время опустить, то описание будет следующим:

var my_data5 = new Data(78, 1, 12)

Все числовые представления даты нумеруются с нуля, кроме номера дня в месяце. Месяцы представляются числами от 0 (январь) до И (декабрь), поэтому второй параметр при задании переменных my_data4 и my_data5 равен 1.

Методами объекта Date можно получать и устанавливать отдельно значения месяца, дня недели, часов, минут и секунд.

  • Метод getDate возвращает число в диапазоне от 1 до 31, представляющее число месяца.
  • Метод getHours возвращает час суток. Значение возвращается в 24-часовом формате от 0 (полночь) до 23.
  • Метод getMinutes возвращает минуты как целое от 0 до 59.
  • Метод getseconds возвращает число секунд как целое от 0 до 59.

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

  Определение текущего времени

Напишем сценарий, который определяет текущее время и выводит его в .текстовое поле в формате "чч:мм:сс", как на рис. 11.1.

Рис 11.1. Определение времени

В переменной res формируется строка, которая затем будет отображена в поле rest формы с именем formi. Для того чтобы уточнить время, следует еще раз нажать кнопку Время и т. д. Полностью сценарий приведен в листинге 11.1.

Листинг 11.1. Определение времени

<HTML> 

<HEAD>

<TITLE>Определение времени</TITLE> 

<script language="JavaScript"> 

<!-- //

function c1() 

{ var d=document 

var t=new Date() 

var h=t.getHours() 

var m=t.getMinutes() 

var s=t.getseconds() 

var res="" 

if (h < 10)

res += "0" + h 

else res += h 

if (m < 10) res += ":0"+m 

else res += ":"+m 

if (s < 10) res += ":0"+s 

else res += ":"+s 

d.form1.rest.value = res 

}

//-—> 

</script> 

</HEAD>

<BODY bgcolor="#FFFFCC"> 

<CENTER>

<IMG src=alarmWHT.gif><br>

При нажатии кнопки <В>Время</В>, Вы узнаете, который час 

<FORM name="form1">

<input type="button" value=Время onClick="c1()"> 

<input type="text" size=10 narae="rest"><br> 

</FORM> 

</BODY> 

</HTML>

  Определение года, месяца, числа, дня недели и времени

Можно сделать так, что через некоторый заданный период значение времени будет обновляться. Для этого можно использовать функцию setTimeout ("c1()", 3000). Напомним, что функция setTimeout выполняет указанные в первом параметре действия по истечении интервала времени, задаваемого вторым параметром. В приведенном примере через три секунды будет снова осуществлен вызов функции d, результат отобразится в поле rest формы form1.

Объект Data обладает методами, которые позволяют определить день недели, номер месяца и год.

  • Метод getDay возвращает день недели как целое число от 0 (воскресенье) до 6 (суббота).
  • Метод getMonth возвращает номер месяца в году как целое число в интервале между 0 (январь) и 11 (декабрь). Обратите внимание, что номер месяца не соответствует стандартному способу нумерации месяцев.
  • Метод getYear выдает год объекта.

Использование описанных методов потребуется для решения следующей задачи.

Напишем программу, которая определяет год, название месяца, число, день недели и время текущей даты (рис. 11.2).

Рис 11.2. Дата и время

Для того чтобы по номеру дня, определяемому методом getDay, вывести название дня, можно воспользоваться оператором выбора. Аналогично поступаем и в случае вывода названия месяца. При щелчке по соответствующей кнопке получаем требуемое значение. HTML-код с описанным сценарием представлен в листинге 11.2.

Листинг 11.2. Определение года, названия месяца, числа, дня недели и времени

<HTML> 

<HEAD>

<TITLE>Определение года, месяца, числа, дня недели и времени</TITLE> 

<script language="JavaScript"> 

<!—- //

var d=document 

var t = new Date() 

function fyear (obj) 

{ var year = t.getYear()

obj.fye.value = year 

}

function fmon (obj} 

{ var s

var mont = t.getMonth() 

switch (mont)

{ case 0: s="январь"; break; 

case 1: s="февраль"; break; 

case 2: s="март"; break; 

case 3: s="апрель"; break; 

case 4: s="май"; break; 

case 5: s="июнь"; break; 

case 6: s="июль"; break; 

case 7: s="август"; break; 

case 8: s="сентябрь"; break; 

case 9: s="октябрь"; break; 

case 10: s="ноябрь"; break; 

case 11: s="декабрь"; break; 

}

obj.fm.value = s 

}

function fdate(obj) 

{ var d = t.getDate() 

obj.fdat.value = d 

}

function fday(obj) 

{ var day = t.getDay() 

var s

switch (day)

{ case 0: s="воскресенье"; break; 

case 1: s="понедельник"; break; 

case 2: s="вторник"; break;

case 3: s="среда"; break; 

case 4: s="четверг"; break; 

case 5: s="пятница"; break; 

case 6: s="суббота"; break; 

}

obj.fd.value = s 

}

function cl(obj) 

( var h = t.getHours() 

var m = t.getMinutes() 

var s = t.getSeconds() 

var res = "" + h 

if (m < 10) res += ":0"+m 

else res += ":"+m 

if (s < 10) res += ":0"+s 

else res += ":"+s 

obj.clo.value = res 

function aldate(obj)

{ obj.aldat.value = t } 

//-—> 

</script> 

</HEAD> 

<BODY bgcolor="#FFFFCC">

<Н4>Для получения информации нажмите соответствующую кнопку</Н4> 

<FORM name="form1">

<input type="button" value="Год    " onClick="fyear(form1)">

<input type="text" size=20 name="fye"><br> 

<input type="button" value=Месяц   onClick="fmon(form1)"> 

<input type="text" size=20 name="fm"><br>

<input type="button" value=Число   onClick="fdate(form1)"> 

<input type="text" size=20 name="fdat"><br>

<input type="button" value="День   " onClick="fday(form1)">

<input type="text" size=20 name="fd"><br> 

<input type="button" value=Время  onClick="cl(form1)"> 

<input type="text" size=20 name="clo"><HR> 

<input type="button" value=Дата   onClick="aldate(form1)"> 

<input type="text" size=40 name="aldat"><HR> 

<input type="reset" value=Отменить> 

</FORM> 

</BODY> 

</HTML>

  Определение рабочего и выходного дня

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

  • Метод setYear устанавливает значение года для объекта Date. Метод setoate устанавливает день месяца. Параметр должен быть числом в диапазоне от 1 до 31.
  • Метод setMonth устанавливает значение месяца. Параметр должен быть числом в диапазоне от 0 (январь) до 11 (декабрь).
  • Метод setHours устанавливает час для текущего времени, использует целое число от 0 (полночь) до 23 для установки даты по 24-часовой шкале.
  • Метод setMinuts устанавливает минуты для текущего времени, использует целое число от 0 до 59.
  • Метод setseconds устанавливает секунды для текущего времени, использует целое число от 0 до 59.
  • Метод setTime устанавливает значение объекта Date и возвращает количество миллисекунд, прошедших с 1 января 1970 года.

Предположим, пользователь вводит год, название месяца и число. Требуется написать сценарий, в результате работы которого определяется, на какой день (рабочий или выходной) приходится заданная дата. В зависимости от дня недели в документе должен появляться соответствующий рисунок. Например, для рабочего дня документ будет иметь вид, как на рис. 11.3.

Рис 11.3. Рабочие и выходные дни

В сценарии создается новый объект Data с именем t, для которого три значения определяются пользователем и берутся из соответствующих полей формы. Причем месяц определяется с помощью тега <seiect>. В теге <option> значение параметра value задает номер месяца в году. После того, как дата определена, с помощью метода getDay о выясняется номер дня недели, соответствующий этой дате. Функция fday(day) по номеру дня определяет его название, которое затем поступает в поле формы для формирования ответа на вопрос.

HTML-код со сценарием приведен в листинге 11.3.

Листинг 11.3. Рабочий или выходной день заданной даты

<HTML> 

<HEAD>

<TITLE>Рабочий или выходной день заданной даты</TITLE> 

<script language="JavaScript"> 

<!-— //

var d=document 

var t = new Date(} 

function fday(day)

{ var s

switch (day)

{ case 0: s="воскресенье"; break; 

case 1: s="понедельник"; break; 

case 2: s="вторник"; break; 

case 3: s="среда"; break; 

case 4: s="четверг"; break; 

case 5: s="пятница"; break; 

case 6: s="суббота"; break;

return s

}

function def (obj) 

{ var s

t.setYear(Number(obj.fye.value)) 

t.setDate(Number(obj.fdat.value)) 

var m=Number(obj.fm.value) 

t.setMonth(m) 

var nday= t.getDay() 

var idr= fday (nday) 

if (nday==0 || nday==6) 

{ s= "выходной день- "+ idt

document.mypict.src="burger.gif" 

}

else 

{ s="рабочий день- " + idt

document.mypict.src="comp.gif" 

}

obj.fd.value =s 

}

function aldate(obj) 

{ obj.aldat.value = t}

//-->

</script> 

</HEAD> 

<BODY>

<CENTER>

<H4>Ha какой день недели (рабочий или выходной) 

попадает заданная дата?</Н4>

<TABLE align= center border=3 cellpadding=4 cellspacing=4

bgcolor=silver background="tile2.jpg">

<ТR><ТН>Интересующая дата</ТН><ТН> попадает на</ТН></ТR> 

<TR><TD>

<FORM name="form1"> 

<pre>

год:   <input type="text" size=10 name="fye" > 

месяц: <select name="fm" size=1>

<option value=0>январь 

<option value=1>фeвpaль 

<option value=2>мapт 

<option value=3>aпpeль 

<option value=4>мaй 

<option value=5>июнь

<option value=6>июль

<option value=7>август

<option value=8>сентяврь

<option value=9>октябрь

<option value=10>ноябрь 

<option value=11>декабрь 

</select> 

число: <input type="text" size=10 name="fdat" >

</pre><FORM></TD> 

<TD align=center><input type="text" size=27 name="fd"><br>

<IMG src=comp.gif name=mypict height=100> 

</TD> 

</TR> 

</TABLE>

<input type="button" value="0пределить" ondick="def (form1)"> 

<input type="reset" value="Отменить"><HR> 

<input type="button" value=Tecт ondick="aldate (form1)"> 

<input type="text" size=30 name="aldat" ><HR> 

</BODY> 

</HTML>

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

Рис 11.4. Выходной день

  Пятница 13

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

При написании сценария будем поступать следующим образом: перебирать с помощью цикла месяцы и в каждом месяце устанавливать номер дня 13. Установка требуемой даты выполняется использованием методов работы с датой:

t.setYear (у) 

t.setMonth (i) 

t.setDate (13)

Далее следует проверить, какой номер дня соответствует этой дате. Если номер равен пяти ((t. getoay ()) ==5), то день недели — пятница, найденный месяц следует запомнить. Для формирования ответа используется строковая переменная с, после запоминания названия месяца добавляется символ перевода строки. HTML-код со сценарием приведен в листинге 11.4.

Листинг 11.4. В какие месяцы года 13 число попадает на пятницу?

<HTML> 

<HEAD>

<TITLE>B какие месяцы года 13 число попадает на пятницу?</TITLE> 

<script language="JavaScript"> 

<!-- //

function def13(obj) 

{ var t= new Date() 

var c=""

var y=Number(obj.fye.value) 

for (var 1=0; i <=11; i++) 

{ t.setYear(y) 

t.setMonth(i) 

t.setDate(13) 

if ( (t.getDay())==5) 

с = c+ fmon(i)+ "\r\n" 

}

obj.res.value = с 

}

function fmon(mont) 

var s

switch (mont)

{ case 0 s="январь"; break; 

case 1 s="февраль"; break; 

case 2 s="март"; break; 

case 3 s="апрель"; break; 

case 4 s="май"; break; 

case 5 s="июнь"; break; 

case 6 s="июль"; break; 

case 7 s="август"; break; 

case 8 s="сентябрь"; break; 

case 9 s="октябрь"; break; 

case 10: s="ноябрь"; break; 

case 11: s="декабрь"; break; 

}

return s 

}

//-—> 

</script> 

</HEAD> 

<BODY bgcolor="#FFFFCC">

<H4>B какие месяцы заданного года число 13 попадает на пятницу?</h4> 

<FORM name="form1">

Введите год: <input type="text" size=8 name="fye" > 

<input type="button" value=Haйти onClick="def13 (forml)"><br> 

<textarea Cols=30 rows=4 name=res></textarea><br> 

<input type="reset" value=Отменить> 

</FORM> 

</BODY> 

</HTML>

Результат работы сценария приведен на рис. 11.5.

Рис 11.5. Пятницы, попадающие на 13 число

  Дата, время и день посещения Web-страницы

Напишем, сценарий, который помещает в документ дату, время и день посещения страницы, как показано на рис. 11.6.

Основные действия выполняет функция DateTime (), в которой формируются необходимые компоненты помещаемой на странице информации. Обратите внимание, как теги HTML используются при формировании текстовой переменной. На рис. 11.6 некоторые слова выделены полужирным начертанием.

Рис 11.6. Время посещения HTML-код представлен в листинге 11.5.

Листинг 11.5. Дата посещения Web-страницы

<HTML> 

<HEAD>

<script language="JavaScript"> 

function NDays(r) 

( var s="" 

switch (r)

{ case 0: s="воскресенье"; break;

case 1: s="понедельник"; break;

case 2: s="вторник"; break;

case 3: s="среда"; break;

case 4: s="четверг"; break;

case 5: s="пятница"; break;

case 6: s="суббота"; break;

}

return s 

}

function NMonths (r) 

{ var s="" 

switch (r) 

{ case 0: s="января"; break;

case 1: s="февраля"; break; 

case 2: s="марта"; break; 

case 3: s="апреля"; break;

case 4: s="мая"; break; 

case 5: s="июня"; break; 

case 6: s="июля"; break; 

case 7: s="августа"; break; 

case 8: s="сентября"; break; 

case 9: s="октября"; break; 

case 10: s="ноября"; break; 

case 11: s="декабря"; break; 

}

return s 

}

function DateTime() 

{ var now = new Date(}

var str= "Вы посетили эту страницу<br><b>"

year = now.getYear() + ""

str += now.getDate() + " " + NMonths(now.getMonth()) + " " +

now.getYear() + "</b> года<br>" 

str += "в <b>" + now.getHours() + ":" + now.getMinutes0 + ":" +

now.getSeconds () + "</b><br>"

str += "Сегодня — <b>" + NDays(now.getDay()} + "</b>" 

document.write(str) 

}

</script>

</HEAD>

<BODY>

<H4 align=center>Пример использования функций определения

даты и времени</Н4> 

<CENTER>

<script language = "JavaScript">

DateTime() 

</script>

<br><img src=Time.gif align=center> 

</CENTER> 

</BODY> 

</HTML>

  Определение даты для заданного дня недели

Напишем сценарий, который определяет все даты заданного года, приходящиеся на определенный день недели, выбранный пользователем.

На рис. 11.7 приведен результат работы сценария, определяющий все даты 2001 года, приходящиеся на среду.

Рис 11.7. Даты заданного дня недели

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

Листинг 11.6. Даты, приходящиеся на выбранный день недели

function defdate(obj) 

{var t= new Date() 

var c=""

var y=Number(obj.fye.value) 

var a=obj.dayn.value 

t.setYear (y)

for (var i=0; i <=11; i++) 

{ t.setMonth (i)

for (var k=l; k< 31; k++ )

{ t.setDate(k)

if (t.getDayf) == a)

с = c+ fmon(i)+" " +k+ "\r\n" 

obj.res.value = с

}

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

  Составление расписания занятий

Предположим, что занятия в некотором учебном заведении начинаются по мере комплектования групп. В анкете заполняется дата начала и конца работы группы. Для проведения занятий по определенной дисциплине выбирается день занятий. Требуется написать сценарий, который формирует расписание занятий.

После того как пользователь заполнил поля формы, указав дату начала и конца занятий группы и день недели для проведения занятий по некоторой дисциплине, определяется дата первого занятия. Предположим, группа начинает работу 15 февраля 2001 года (четверг), а занятия по заданной дисциплине должны проводиться по средам. Тогда дата первого занятия — 21 февраля.

Далее формируется дата следующего занятия t и сопоставляется с датой окончания работы курсов w. Сначала сравниваются года. Продолжать работу следует лишь в случае, когда год предполагаемого текущего занятия предшествует или равен году окончания занятий. Если года совпадают, то сравниваются месяцы, если и месяцы совпадают, то сравниваются даты. Другими словами, если текущая дата предшествует дате окончания, то она добавляется в расписание, формируется дата следующего предполагаемого занятия и т. д.

Для того чтобы получить расписание занятий, надо ввести дату начала и окончания занятий в анкете, представленной на рис. 17.8.

Сформированное расписание помещается в текстовое поле. Если даты выбраны неверно, т. е. дата окончания курсов предшествует дате начала работы курсов, то выдается сообщение о том, что требуется проверить введенные даты. Возможна ситуация, когда даты введены верно, а выбранный день не попадает в интервал времени, определенный для занятий. В этом случае также будет выдано предупреждающее сообщение. HTML-код документа со сценарием приведен в листинге 11.7.

Рис 11.8. Расписание занятий

Листинг 11.7. Расписание занятий

<HTML> 

<HEAD>

<TITLE>Расписание занятий</TITLE> 

<script language="JavaScript"> 

<!-— //

function ident (mont) 

{ var s

switch (mont)

{ case 0: s="январь"; break; 

case 1: s="февраль"; break; 

case 2: s="март"; break; 

case 3: s="апрель"; break; 

case 4: s="май"; break; 

case 5: s="июнь"; break; 

case 6: s="июль"; break; 

case 7: s="август"; break;

case 8: s="сентябрь"; break; 

case 9: s="октябрь"; break; 

case 10: s="ноябрь"; break; 

case 11: s="декабрь"; break;

}

return s 

}

function rasp(obj) 

{ // дата начала работы группы

var d= new Date(obj.begy.value, obj.begm.value, obj.begd.value)

// дата окончания работы группы

var w= new Date(obj.endy.value, obj.endm.value, obj.endd.value)

// дата текущего занятия

var t= new Date(obj.begy.value, obj.begm.value, obj.begd.value)

var s=""

// выбранный пользователем день работы

var n=obj.dt.value

// сформированная дата дня первого занятия

var k=d.getDate()+Number(n)-Number(d.getDay())

if (n < d.getDay())

k += 7

t.setDate(k)

var s1 = "Дни занятий: "+"\n"

// scur - дата предполагаемого текущего занятия 

var scur var s=s1

// поиск дат занятий 

while (t.getYear() <= w.getYear()) 

{ // формирование даты очередного занятия

scur=+ t.getDate()+" "+ident(Number(t.getMonth()))+

" "+t.getYear()+"\n" 

if (t.getYearf) < w.getYear())

{ s+= scur } 

else 

{ if ( t.getMonth() < w.getMonth())

{s +=scur} 

else

{ if (t.getMonth () == w.getMonth()) 

{ if (t.getDate()<w.getDate())

{s +=scur} 

else

{ if (t.getDate()==w.getDate()) 

{s+= scur; break }

}

k=t.getDate()+7 

t.setDate(k) 

if (s==s1)

alert ("Проверьте даты начала и конца занятий") 

else

obj.res.value = s 

}

//-—> 

</script> 

</HEAD> 

<BODY bgcolor="#FFFFCC">

<H4 align=center>Формирование расписания занятий</Н4> 

<FORM name="form1">

<TABLE border=3 align=center>

<ТR><ТН>Начало курсов</ТН><ТН>Конец курсов</ТН>

<ТН>Расписание</ТН></TR> 

<TR><TD><pre>

число <input type="text" name="begd" size=10)> 

месяц <select name="begm" size=l >

<option value=0>январь 

<option value=l>фeвpaль 

<option value=2>март 

<option value=3>апрель 

<option value=4>май

<option value=5>июнь

<option value=6>июль 

<option value=7>aвгуст

<option value=8>сентябрь 

<option value=9>октябрь

<option value=10>ноябрь 

<option value=ll>декабрь 

</select>

год <input type="text" name="begy" size=10 value=2001> 

</pre></TD>

<TD><pre>

число <input type="text" name="endd" size=10> 

месяц <select name="endm" size=l>

<option value=0>январь 

<option value=l>фeвpaль 

<option valueе=2>март 

<option value=3>апрель 

<option value=4>май 

<option value=5>июнь

<option value=6>июль 

<option value=7>август

<option value=8>сентябрь 

<option value=9>октябрь 

<option value=10>ноябрь 

<option value=ll>декабрь 

</select>

год <input type="text" name="endy" size=8 value=2001> 

</pre></TD>

<TD rowspan=2>

<textarea Cols=20 rows=8 name=res></textarea><br> 

</TD></TR>

<TR><TD colspan=2 align=right> 

Выберите день занятий: 

<select name= dt size=1>

<option value=0 >воскресенье 

<option value=l>пoнeдeльник 

<option value=2>вторник

<option value=3>среда

<option value=4>четверг

<option value=5>пятница

<option value=6>суббота

</select> 

</TD></TR> 

<TR><TD colspan=2 align=left><br>

<input type="button" value=Сформировать 

onClick="rasp (form1) "><br></TD>

<TD align=right><input type="reset" value=Отменить> 

</TD> 

</TR>

</TABLE><br> 

</FORM> 

</BODY> 

</HTML>

  Упражнения

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

2. Напишите сценарий, который для заданной даты определяет, сколько дней прошло после некоторого события.

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

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

5. Напишите сценарий, который по заданной дате определяет номер недели в году.

6. Напишите сценарий, который по дате рождения человека определяет, под каким знаком зодиака родился человек.

7. В анкете приводятся данные о семи сотрудниках: фамилия и дата приема на работу. Напишите сценарий вычисления стажаработы (в годах) и определения максимального числа сотрудников с одинаковым стажем.

8. В анкете приводятся данные о шести сотрудниках: фамилия и дата приема на работу. Все сотрудники в зависимости от стажа работы разделяются на категории: проработавшие меньше года относятся к категории "молодой", от года до пяти лет — "опытный", более пяти лет — "ветеран". Напишите сценарий определения стажа работы каждого сотрудника и числа сотрудников в каждой категории. Постройте диаграмму, отражающую число сотрудников в категориях.

9. В анкете приводятся данные о семи сотрудниках: фамилия, дата рождения и оклад. Все сотрудники в зависимости от возраста разделяются на категории: менее 30 лет — "молодой", от 30 до 55 — "средний возраст", более 55 — "старший возраст"., Напишите сценарий вычисления возраста каждого сотрудника и размер средней зарплаты для любой категории. Постройте диаграмму, отражающую среднюю зарплату в каждой из трех категорий.

10. В анкете заполняется информация о десяти сотрудниках: фамилия, дата заключения контракта и срок (в годах), на какой заключен контракт. Создайте форму для ввода данных. Напишите сценарий, определяющий:

• дату окончания контракта;

• месяц, в который закончится контракт;

• день недели, в который закончится контракт;

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

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

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

• сотрудников, контракт с которыми заканчивается в выходной день (субботу или воскресенье);

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

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

• в зависимости от введенной даты тех сотрудников, с которыми заключен контракт на заданный момент;

• сотрудников, контракт с которыми завершен на заданную дату.

11. В анкете заполняется информация о семи сотрудниках: фамилия, дата заключения контракта. Ровно через одиннадцать месяцев после начала работы сотрудникам предоставляется отпуск продолжительностью 24 рабочих дня. Создайте форму для ввода данных. Напишите сценарий, определяющий:

• дату начала и окончания отпуска для каждого из сотрудников;

• фамилии сотрудников, отпуск которым будет предоставлен в заданном месяце (месяц выбирается пользователем);

• фамилии сотрудников, отпуск которых будет завершен в заданном квартале (номер квартала выбирается пользователем);

• фамилии сотрудников, отпуск которым будет предоставлен в следующем календарном году;

• фамилии сотрудников, отпуск которых будет завершен в следующем календарном году;

• фамилии сотрудников, которые в данный момент работают (не находятся в отпуске), в зависимости от введенной пользователем даты.

12. В анкете заполняется информация о семи сотрудниках: фамилия, дата заключения контракта, продолжительность отпуска. Ровно через одиннадцать месяцев после начала работы сотрудникам предоставляется отпуск, продолжительность которого оговорена в контракте (12, 24, 30, 48, 60 дней). Напишите сценарий, определяющий:

• дату начала и окончания отпуска для каждого из сотрудников;

• фамилии сотрудников, начала отпусков которых приходятся на заданный месяц (месяц выбирается пользователем);

• в зависимости от введенной пользователем даты фамилии сотрудников, которым предоставлен отпуск;

• в зависимости от введенной пользователем даты фамилии сотрудников, которые в данный момент работают (не находятся в отпуске).

13. В анкете заполняется информация о семи сотрудниках, принятых на работу на основе почасовой оплаты: фамилия, оплата за час, дата начала работы, дата окончания. Напишите сценарий, при работе которого определяется:

• количество рабочих дней для каждого сотрудника;

• количество выходных дней между заданными датами;

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

14. В анкету вносится информация о дате начала семестра, дате конца семестра. Требуется написать сценарий, который после выбора пользователем дня недели определяет количество часов, отведенных на данную дисциплину в определенном семестре. Напишите сценарий, определяющий:

• даты проведения занятий;

• по номеру занятия дату его проведения.

15. Предположим, что занятия в некоторой обучающей организации начинаются по мере комплектования групп. В анкете заполняется дата начала работы группы, количество занятий, отведенное на курс. Напишите сценарий, который определяет:

• дату проведения занятия с заданным номером;

• дату проведения контрольной работы (после половины занятий полагается контрольная работа);

• дату проведения зачета (предпоследнее занятие отведено для сдачи зачета);

• дату ближайшего занятия и его номер;

• сколько занятий уже прошло и сколько предстоит провести.

16. В документе определяется дата начала и конца семестра. Преподаватель заполняет анкету, содержащую название дисциплины, и выбирает день недели для занятий. Вводятся сведения о трех дисциплинах. Напишите сценарий, определяющий:

• расписание занятий (указывается дата, день недели и дисциплины);

• сколько занятий в семестре будет проводиться по каждой из дисциплин;

• неделю с максимальной загрузкой;

• неделю с минимальной загрузкой;

• расписание контрольных работ, в предположении, что контрольные проводятся примерно в середине курса, и не разрешено проводить две контрольные в один день;

• расписание зачетов, в предположении, что зачет проводится на последнем занятии.

17. Напишите сценарий, формирующий расписание занятий. Требуется предусмотреть ввод времени начала занятий. На каждое занятие отводится одна пара, состоящая из двух часов. Продолжительность часа занятий (30, 45, 50 минут) в паре определяется пользователем. Кроме того, требуется задать продолжительность перерыва между часами в паре и между парами, длительность обеденного перерыва, количество пар в день. В расписании требуется указать номер пары, время ее начала и окончания, время начала и окончания обеденного перерыва.

18. В старояпонском календаре был принят 60-летний цикл, состоящий из пяти 12-летних подциклов. Подциклы обозначались названиями цвета: зеленый, красный, желтый, белый, черный. Внутри каждого подцикла годы носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. Например, 1984 год (год зеленой крысы) был началом очередного цикла. Напишите сценарий, который по заданной дате определяет название года по старояпонскому календарю.



Опубликовал admin
12 Авг, Четверг 2004г.
Компания "КонсОМ СКС" - Размещение оборудования ЦОД на удаленных площадках.


Программирование для чайников.