Как самому написать программу Часы в Windows
Как самостоятельно написать программу Часы в Windows? Всем привет. Мой ресурс – это не совсем то место, где было бы интересно профессиональным программистам. Однако именно сейчас мы научимся писать простейшую программку, которая будет отображать текущее время в уголочке вашей системы.
Визуально она будет похожа на интегральные часы а-ля 70-х-80-х годов, так как работать будет в консоли команд Windows. Вещь совершенно бесполезная в быту, однако сам процесс… Каждую из команд для облегчения восприятия я буду объяснять – вдруг вам это дело понравится? Использовать будем только программу Блокнот или похожие на неё утилиты текстовых редакторов. Если лень читать описание и комментарии к командам, внизу статьи снимок конечного файла со всеми строчками кода. Вы можете также копировать и вставлять мои команды прямо в консоль по ходу объяснения. Если кто-то забыл как это делается и что ещё умеет консоль Windows, читайте статью Полезные функции консоли команд Windows.
Запускаем Блокнот и введём нашу первую команду, которая означает, что программа будет показывать дальнейший код на экране:
После этого запишем кусочек кода, который определит цвет цифр на фоне консоли. В фильме «Матрица» это были зелёные символы на чёрном фоне, ну и мы туда же:
: — означает, что появилась точка отсчёта, к которой вы ещё вернётесь
start – имя этой точки. Все всегда и пишут, что имя ей может быть присвоено любое, однако start – имя точки отсчёта всех времён и народов.
Следующая строчка кода:
От английского Clear Screen (Очистить экран). Этим она и занимается. Чуть позже или по другим статьям вы обнаружите, что после очистки экрана любой код работает порезвее. Да и предыдущий код не засоряет окно.
Код «эхо» — «echo» — просит программу выводить на экран то, что в этой строчке написано.
%time% — означает отображение текущего по компьютеру времени.
означает отправится к start (кстати, написано грамматически неверно – правильно «go to»).
Но перед этой строкой внесите кусок кода, который попросит бегущие мгновения не мерцать:
Запускайте и любуйтесь на своё творение. Вам удалось написать программу, которая вполне себе работоспособна. Вот как ваш код должен выглядеть перед запуском в текстовом редакторе:
Создание часов в среде программирования Pascal ABC.net с комментариями
«Управление общеобразовательной организацией:
новые тенденции и современные технологии»
Свидетельство и скидка на обучение каждому участнику
var x0,y0, x,y,min,sec,chas: integer ;
lockdrawing; //Блокирует рисование на графическом окне
HideCursor; //скрывает курсор
x0:= 250 ; y0:= 250 ; min:= 0 ; sec:= 0 ; //начальные значения центра часов
repeat //цикл с постусловием
ClearWindow; //очистить окно
SetPenWidth( 5 ); //задать толщину пера 5
setfontsize( 20 ); //параметры шрифта: размер
setfontcolor(clblack); //параметры шрифта: цвет
setfontstyle(fsbold); //стиль шрифта: полужирный
x:=x0+Round( 120 *sin(Pi*sec/ 30 )); //координаты конечной точки секундной стрелки
y:=y0-Round( 120 *cos(Pi*sec/ 30 ));
SetPenWidth( 3 ); Line(x0, y0, x, y); //рисование секундной стрелки
x:=x0+Round( 100 *sin(Pi*min/ 30 )); //координаты конечной точки минутной стрелки
y:=y0-Round( 100 *cos(Pi*min/ 30 ));
SetPenWidth( 7 ); Line(x0, y0, x, y); //рисование минутной стрелки
x:=x0+Round( 60 *sin(Pi*chas/ 30 )); //координаты конечной точки часовой стрелки
y:=y0-Round( 60 *cos(Pi*chas/ 30 ));
SetPenWidth( 10 ); Line(x0, y0, x, y); //рисование часовой стрелки
sleep( 1000 ); //задержка
Курс повышения квалификации
Дистанционное обучение как современный формат преподавания
Курс повышения квалификации
Педагогическая деятельность в контексте профессионального стандарта педагога и ФГОС
Курс повышения квалификации
Авторская разработка онлайн-курса
Ищем педагогов в команду «Инфоурок»
Изучение вложенного цикла и графики в среде программирования Pascal ABC.net на примере создания «графических» часов
var x0,y0, x,y,min,sec,chas: integer;
lockdrawing; //Блокирует рисование на графическом окне
SetWindowSize(500,500); //задает размер экрана
HideCursor; //скрывает курсор
x0:=250; y0:=250; min:=0; sec:=0; //начальные значения центра часов
repeat //цикл с постусловием
ClearWindow; //очистить окно
SetPenWidth(5); //задать толщину пера 5
setfontsize(20); //параметры шрифта: размер
setfontcolor(clblack); //параметры шрифта: цвет
setfontstyle(fsbold); //стиль шрифта: полужирный
x:=x0+Round(120*sin(Pi*sec/30)); //координаты конечной точки секундной стрелки
SetPenWidth(3); Line(x0, y0, x, y); //рисование секундной стрелки
x:=x0+Round(100*sin(Pi*min/30)); //координаты конечной точки минутной стрелки
SetPenWidth(7); Line(x0, y0, x, y); //рисование минутной стрелки
x:=x0+Round(60*sin(Pi*chas/30)); //координаты конечной точки часовой стрелки
SetPenWidth(10); Line(x0, y0, x, y); //рисование часовой стрелки
Номер материала: ДБ-207251
Не нашли то, что искали?
Вам будут интересны эти курсы:
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.
Учителя о ЕГЭ: секреты успешной подготовки
Время чтения: 11 минут
Учителя о ЕГЭ: секреты успешной подготовки
Время чтения: 11 минут
Итоговое сочинение успешно написали более 97% выпускников школ
Время чтения: 2 минуты
В России стартует пилотный проект по реабилитации детей-инвалидов
Время чтения: 2 минуты
Названы главные риски для детей на зимних каникулах
Время чтения: 3 минуты
В Минпросвещения рассказали о формате обучения школьников после праздников
Время чтения: 1 минута
Минпросвещения создает цифровую психологическую службу для школьников
Время чтения: 1 минута
Подарочные сертификаты
Ответственность за разрешение любых спорных моментов, касающихся самих материалов и их содержания, берут на себя пользователи, разместившие материал на сайте. Однако администрация сайта готова оказать всяческую поддержку в решении любых вопросов, связанных с работой и содержанием сайта. Если Вы заметили, что на данном сайте незаконно используются материалы, сообщите об этом администрации сайта через форму обратной связи.
Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение администрации может не совпадать с точкой зрения авторов.
Разработка приложения «Часы»
Анализ предметной области. Диаграмма классов. Проектирование программного продукта «Часы». Тестирование и отладка, руководство программиста. Описание работы приложения. Руководство оператора, модель жизненного цикла. Файл Times.cs, Arrow.cs, Form1.cs.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 20.04.2015 |
Размер файла | 1,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Приложений часов огромное множество, созданное приложение удобно в использовании, имеет большое количество настроек и каждый пользователь без труда сможет настроить его под свои вкусы и требования.
Для проектирования программного обеспечения выбрана среда Star UML.
Для реализации приложения «Часы» следует выделить следующие объекты:
Форма для отображения внешнего интерфейса часов;
Выпадающее меню и взаимодействия с пользователем;
Системное время которое будет считываться;
Стрелки аналоговых часов;
Таймер, по которому будет происходить отрисовка.
Данное приложение предназначено для отображения текущего времени, отсчитываемого системными часами компьютера.
Приложение должно обеспечивать:
Отображение времени в цифровом и аналоговом (стрелки) виде, с секундами и без;
Отображение (в аналоговом виде) римских или арабских цифр, соответствующих часам, в вариантах: без цифр; только 3, 6, 9 и 12; все;
Опциональное отображение даты в цифровом виде;
Задание параметров фона, стрелок, шрифтов времени и даты;
Задание параметров окна: обычное или «непотопляемое» (поверх остальных), с заголовком и без него.
3. Проектирование программного продукта
Диаграмма вариантов использования
Пользователь открывает приложение «Часы»;
Приложение считывает системное время и отображает текущее время в окне программы;
Далее посредствам выпадающего меню можно выполнять дальнейшие настройки.
часы программист руководство приложение
Приложение содержит в себе 3 класса
Метод отображения выпадающего меню menuStrip;
Метод вызова окна цветов colorDialog;
Метод вызова окна форматирования текста fontDialog;
Метод запуска таймера timer.
Метод Time, присваивающий переменной dt текущее дату и время;
Метод coordSec, содержащий угол поворота секундной стрелки;
Метод coordMin, содержащий угол поворота минутной стрелки;
Метод coordHour, содержащий угол поворота часовой стрелки.
Метод Show, отвечающий за отрисовку стрелок;
Метод Arrow, отвечающий за создание пера, с заданным цветом и размером.
Пользователь открывает приложение;
Приложение показывает время и ожидает последующих действий;
Пользователь выбирает нужные настройки;
Часы отображаются с принятыми настройками.
При запуске, приложения отображает текущее время и ожидает каких либо действий от пользователя;
При выборе, нужных пользователю, настроек, они применяются.
При выполнении тестирования проблем не обнаружено.
Приложение содержит в себе 3 класса
Метод отображения выпадающего меню menuStrip;
Метод вызова окна цветов colorDialog;
Метод вызова окна форматирования текста fontDialog;
Метод запуска таймера timer.
Метод Time, присваивающий переменной dt текущее дату и время;
Метод coordSec, содержащий угол поворота секундной стрелки;
Метод coordMin, содержащий угол поворота минутной стрелки;
Метод coordHour, содержащий угол поворота часовой стрелки.
Метод Show, отвечающий за отрисовку стрелок;
Метод Arrow, отвечающий за создание пера, с заданным цветом и размером.
1. Главное окно приложения
2. Главное окно приложения с открытым пунктом «Отображение»
3. Главное окно приложения с открытым пунктом «Вид»
19. Пункт меню «Выход» закрывает приложение.
Программа необходима для отображения текущего времени в удобном для пользователя виде
Условия выполнения программы:
Операционная система семейства Windows XP или выше;
Для корректного выполнения программы, необходимо чтоб системное дата и время были правильно настроены
Для запуска приложения необходимо запустить файл Clock.exe
Каскадная стратегия (однократный проход, водопадная или классическая модель) подразумевает линейную последовательность прохождения стадий создания информационной системы. Другими словами, переход с одной стадии на следующую происходит только после того, как будет полностью завершена работа на текущей.
Данная модель применяется при разработке информационных систем, для которых в самом начале разработки можно достаточно точно и полно сформулировать все требования.
на каждой стадии формируется законченный набор проектной документации, отвечающий критериям полноты и согласованности;
выполняемые в четкой последовательности стадии позволяют уверенно планировать сроки выполнения работ и соответствующие ресурсы (денежные, материальные и людские).
реальный процесс разработки информационной системы редко полностью укладывается в такую жесткую схему. Особенно это относится к разработке нетиповых и новаторских систем;
жизненный цикл основан на точной формулировке исходных требований к информационной системе. Реально в начале проекта требования заказчика определены лишь частично;
В ходе выполнения курсовой работы были закреплены и углублены навыки использования объектно-ориентированного подхода к программированию.
Приобретены навыки программирования на языке C# в среде Visual Studio. Был получен навык работы с небольшим количеством компонентов среды и некоторыми встроенными библиотеками.
Закреплен материал прошлого семестра по способам проектирования программного обеспечения в среде Star UML.
Список использованных источников
Программирование на C, C# и Java
Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы
ОСТОРОЖНО МОШЕННИКИ! В последнее время в социальных сетях участились случаи предложения помощи в написании программ от лиц, прикрывающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в посторонних группах ВК. Для связи с нами используйте исключительно эти контакты: vscoderu@yandex.ru, https://vk.com/vscode
Дата и время в C#
Сегодня мы создадим программу, которая будет при запуске показывать нам цифровые часы и дату.
Для начала создаём форму. У нас она такая:
Всё, что у нас тут есть – это два Label’a + Timer.
Настраиваем Label’ы, переименовываем, увеличиваем шрифт – всё по усмотрению программиста.
Теперь переходим к коду, щёлкнув правой кнопкой мыши по форме и выбрав соответствующую команду.
Сразу после строки public partial class Form1 : Form объявим таймер. Делается это так:
Объявляем мы его в самом начале, чтобы все функции, которые у нас будут внутри, принимали его в расчёт (если он будет объявлен в какой-то одной отдельной функции, то вторая функция не будет его видеть).
Теперь рам надо включить наш таймер. Для этого мы возвращаемся в форму и дважды щёлкаем на неё левой кнопкой мыши.
Нас переносит в код, который будет срабатывать при загрузке формы (то есть, с самого начала работы программы). Здесь мы пишем следующее:
Первая строка устанавливает интервал обновления таймера. Число 1000 означает, что таймер будет обновляться каждые 1000 миллисекунд, т.е. каждую секунду.
Вторая строка очень важна – она срабатывает при каком-либо событии “Tick” в таймере. У нас она будет срабатывать каждые 1000 миллисекунд, пока включен таймер. Именно благодаря ней пользователь будет видеть смену часов, минут и секунд на циферблате. Само событие мы опишем ниже в функции timer1_Tick.
Третьей строкой мы запускаем наш таймер.
Теперь мы возвращаемся в форму и дважды кликаем на значке таймера () внизу.
Вот и открылась у нас функция timer1_Tick. Мы запишем в неё определённый код, и каждые 1000 миллисекунд этот код будет исполняться заново.
Внутри нашей функции мы сначала объявим некоторые переменные:
В переменную h мы будем записывать часы, в переменную m – минуты, в s – секунды.
Переменная строкового типа time нам нужна, чтобы мы записали первые три переменные в строку для вывода в форму.
Теперь мы сделаем один “трюк”, предназначенный скорее для красоты вида, нежели для функционала и качества работы.
Сначала мы задаём условие, что если h
Итак, в самом начале работы программы строка time у нас пустая (мы выше объявили её такой, с правой стороны поставив пустые кавычки: string time = “” ). Как только запускается таймер, в строку сначала записываются часы, принимая во внимание, больше ли 10 это время или меньше.
То есть вместо пустого пространства в строке теперь что-то типа “12”, если у нас в данный момент 12 часов. После этого в строку записывается двоеточие, теперь строка выглядит так: “12:”. Затем мы записываем минуты, опять учитывая, сколько знаков в них. Получится, например, так :”12:06″. Опять ставим двоеточие: “12:06:”. Заканчивается запись секундами: “12:06:34″. И перезаписываться наша строка от пустоты до полной формы времени будет каждые 1000 миллисекунд, то есть каждую секунду, чтобы мы видели, как меняется циферблат секунд, а впоследствии и минут с часами.
Однако пока что наша строка просто существует, но пользователь не видит её, не видит, сколько время в данный момент.
Поэтому мы выводим нашу строку в форму через Label. У нас это label2, с наиболее крупным шрифтом.
Разрабатываем свои собственные буквенные часы
На эту статью меня вдохновили часы на английском языке, которые случайно увидел на одном из зарубежных сайтов. Они представляют собой матрицу из слов, которые, включая подсветку за определёнными словами, показывают словесную индикацию текущего времени.
Часы являются малодоступными широкому кругу людей, ввиду их дороговизны (это явилось одним из стимулов для разработки своих собственных), а ещё имеются у производителя на разных языках.
И я подумал, почему бы не обдумать вероятность создания примерно таких часов, на русском языке?
Так как полностью копировать чужую идею не хотелось (хотя это достаточно просто осуществить), я подумал, что будет достаточно любопытным разработать нечто своё, базируясь на изначальной идее этих часов.
Дальнейший ход рассуждений предназначен только в ознакомительных целях, «как можно было бы сделать нечто подобное». Целью статьи является изложить ход инженерной мысли, следуя которой каждый может создать что-то своё, уникальное.
После появления мысли о создании буквенных часов, я решил проработать в теории, как они могли бы выглядеть, и что для этого бы пригодилось.
Можно сказать, что задача создания буквенных часов может быть разделена на несколько этапов:
1 Этап: Так как нам будет необходимо предварительно создать матрицу из слов, весьма полезно использовать для этого дела свои навыки программирования. Так как, безусловно, возможно создать данную матрицу и просто вручную, Однако, программные методы генерации дают нам гораздо большую гибкость.
2 Этап: Далее, после того как разработана матрица, она должна быть превращена в соответствующую совокупность панелей, которые можно изготовить лазерной резкой. Почему именно таким способом: так как он является одним из самых простых и недорогих в данном случае.
3 Этап: Необходимо разработать прошивку для соответствующего микроконтроллера, который будет заниматься управлением подсветкой матрицы из слов. Тут надо сделать пояснение: часы будут показывать время, включая соответствующие сочетания букв.
Любопытным моментом работы микроконтроллера является то, что на часах необходимо периодически устанавливать корректное время. Так как мне не хотелось вводить в программу дополнительные усложнения, в виде подключения каких-либо кнопок, обработки их нажатий, вывода на какой-то микро экран введённого времени, либо прямо на часы,- мне показалось, что будет достаточно остроумным решением, если код будет сам обращаться с некой периодичностью на сервер времени, получая с него корректное текущее время.
Таким образом, получается, что программисту будет необходимо только предварительно настроить прошивку, введя в неё:
В качестве же средства подсветки букв — будем использовать адресную светодиодную ленту. Конкретно данный проект базируется на ленте WS2812B, с количеством светодиодов 30 шт/метр. Что такое адресная светодиодная лента, можно подробнее почитать тут, тут или тут.
Схема подключения адресной светодиодной ленты к esp32 видится такой:
Следуя вышеперечисленному алгоритму, приступим к работе.
▍ Реализация 1 Этапа
Так как хотелось создать нечто максимально универсальное, ввиду того, что я не был совершенно уверен, какое количество слов и в каких комбинациях (сколько слов в строке) у меня получится, я решил написать генератор матрицы слов, который позволит достаточно гибким образом варьировать созданием матрицы и подобрать тот тип матрицы, который будет наиболее удовлетворять разработчика часов.
Для достижения цели я написал генератор на языке Java, в рамках среды IntelliJIDEA.
Вкратце пробежимся по его ключевым моментам.
Все слова, которые будут участвовать в создании матрицы, предварительно добавляются в Arraylist. Если вас не устроит данная подборка словосочетаний, вы всегда сможете заменить в этом списке мои слова — на свои.
Здесь следует сделать одну оговорку: я не ставил себе целью сделать максимально лаконичную матрицу, поэтому моя подборка слов может оказаться несколько избыточной. Это нужно учитывать, и если вы захотите создать более короткую матрицу (короткую в буквальном смысле, что позволит ей быть более узкой по горизонтали), вы можете обдумать и изменить мою подборку слов.
Нашей задачей является создать такую матрицу, которая будет состоять из определённого количества строк, равных по количеству символов.
Генератор после первого запуска, для данного конкретного Arraylist-a выводит статистику, в которой содержится общее количество символов в неразбитой строке, количество комбинаций символов в строке, которые позволяют создать определённое количество строк, с равным количеством символов в них.
Кроме того, генератор выводит непосредственно свёрстанную матрицу слов, а также матрицу номеров, для данной длины строк.
Здесь следует сделать пояснение: так как для подсветки букв мы будем использовать адресную светодиодную ленту, в которой нумерация светодиодов начинается с 0, генератор выводит номера будущих пикселей, также разбитые на строки.
После первого запуска программы, когда мы знаем какое число символов должно содержаться в каждой отдельной строке, чтобы количество символов в каждой строке было равным, мы можем поэкспериментировать, забивая данные числа в переменную horizontalCount.
❒ Код генератора можно глянуть тут: github
Запустим программу заново, чтобы обновить вывод.
Например, для количества символов в строке, равному 41, вывод программы будет выглядеть следующим образом:
▍ Реализация 2 Этапа
После того как у нас сформирован вывод программы, мы можем им воспользоваться в наших целях — а именно, для предварительного формирования внешнего вида будущей матрицы, который мы собираем в программе Microsoft Word.
Для этого, я создал таблицу, в ячейки которой забил получившиеся строки. После чего, я создал ещё одну такую же таблицу, в каждую ячейку которой вставил номера будущих пикселей адресной светодиодной ленты.
Для большего удобства, я создал сводную таблицу, которая содержит как буквы, так и номера подсвечивающих светодиодов адресной ленты.
Также, я раскрасил отдельные слова в таблице, в разные цвета (это можно увидеть в нижней таблице).
Далее мы начинаем обрабатывать получившуюся матрицу в программе CorelDraw.
Так как для подсветки будущих часов мы будем использовать ленту с количеством светодиодов в 60 штук на метр, и размером светодиода 5×5 мм, мы создаём соответствующий массив квадратиков в программе CorelDraw, копируем и вставляем из Ворда каждую строку со словами.
После того, как скопированная строка вставлена в CorelDraw, мы выделяем вставленную строку и нажимаем сочетание клавиш Ctrl+K.
Это позволит разбить вставленную строку на отдельные буквы. После чего, мы начинаем подравнивать каждую букву, выравнивая её по центру квадратика, символизирующего пиксель светодиодной ленты.
Однако, данная работа была бы неполной, без преобразования получившихся букв — в буквы трафаретного типа. Так как будущую конструкцию часов мы оптимизируем под производство с применением лазерной резки, нам необходимо, чтобы каждая буква не содержала замкнутых объёмов внутри (как например, буква О). Поэтому все замкнутые объёмы внутри букв мы соединяем перемычками с внешними объёмами.
Для этого, мы предварительно выделяем все строки, вставленные в CorelDraw, с помощью комбинации Ctrl+A, затем переводим их в не редактируемый формат («в кривые») – комбинацией Ctrl+Q. Далее – вручную рисуем прямоугольничек и, передвигая его – прорезаем вручную каждую букву в матрице, чтобы превратить её в трафаретный вид:
Далее нам остаётся только экспортировать получившуюся матрицу букв в ту программу твердотельного моделирования, которую вы предпочитаете, предварительно переведя её формат dxf.
Можно было бы всю работу проделать и в CorelDraw, — просто мне было так привычней и удобней.
❒ После чего, я собрал следующую сборку, которая содержит:
▍ Реализация 3 Этапа
И напоследок, следует сказать пару слов об электронной части проекта. Видится наиболее перспективным, в качестве микроконтроллера – использование платы esp32, ввиду встроенного в неё wifi модуля. Это позволит часам, с нужной периодичностью производить подключение к серверу, для синхронизации с мировым временем.
▍ Полезности и итоги
Прошивка проекта написана в среде Arduino IDE: github.
Скачать векторные файлы для лазерной резки, в формате pdf, можно по ссылке.
Для удобства, достаточно объёмные функции void timeBurner (int hours, int minutes) и void timer () — выполнены в отдельных вкладках.
Так как данный проект ещё никем в реале не реализовывался, возможно, прошивка имеет некоторые погрешности и неочевидные ошибки – просьба отнестись с пониманием. В любом случае, наверняка, потребуется отладка.
Если Вам понравилась вся эта затея – у вас есть всё необходимое, чтобы реализовать свой собственный проект, основываясь на моём. Удачи в проектировании!