[纪念]C#控制台彩色时钟源码

本文介绍了一个使用C#编写的电子时钟程序,通过定时更新显示系统当前的时间、日期和秒表,提供了直观的界面体验。程序通过设置窗口属性、创建定时器类并启动线程来实现实时更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是C#第一次作业时写的程序,复制粘贴后可直接运行。


using System;

using System.Collections.Generic;

using System.Text;

 

using System.Threading;

 

namespace MyClock

{

    class Clock

    {

        static void Main(string[] args)

        {

            Console.Title = "电子时钟";  //设置窗口标题和长度

            Console.WindowHeight = 40;

            Timer timer = new Timer();

            timer.Start();

 

        }

    }

 

    class Timer

    {

 

        private System.DateTime currentTime;

 

        private int year;

        private int month;

        private int day;

        private int hour;

        private int mintue;

        private int second;

 

 

 

 

        public Timer()

        {

            currentTime = new System.DateTime();

        }

 

        /*

         * 获取当前系统时间

         *

         */

        private void getCurTime()

        {

            currentTime = System.DateTime.Now;

 

            year = currentTime.Year;

            month = currentTime.Month;

            day = currentTime.Day;

            hour = currentTime.Hour;

            mintue = currentTime.Minute;

            second = currentTime.Second;

        }

 

 

        /*

         * 开启线程

         *

         */

        public void Start()

        {

 

            Thread timeThread = new Thread(new ThreadStart(Process));

 

            timeThread.Start();

 

            Console.CursorVisible = false;

 

            //按下任意键退出程序

            Console.ReadKey(true);

 

            timeThread.Abort();

 

        }

 

 

        /*

         * 处理线程

         *

         */

        private void Process()

        {

            while (true)

            {

 

                getCurTime();

 

                Display();

 

                Thread.Sleep(1000);

 

            }

 

        }

 

        /*        

         * 显示信息

         *

         */

        private void Display()

        {    /*

              * 输出日期信息

              *

              */

            int pos = 17;

            int beteen = 2;

 

            Console.SetCursorPosition(33, 4);

            Console.ForegroundColor = ConsoleColor.Blue;

            Console.WriteLine(currentTime.Year + "" + currentTime.Month + "" + currentTime.Day + "");

 

            DisplayNum(hour / 10, pos, 8);

            DisplayNum(hour % 10, pos + 6 + beteen, 8);

 

            Console.SetCursorPosition(pos + 13 + beteen + 1, 9);

            Console.WriteLine("*");

            Console.SetCursorPosition(pos + 13 + beteen + 1, 11);

            Console.WriteLine("*");

 

            DisplayNum(mintue / 10, pos + 16 + beteen, 8);

            DisplayNum(mintue % 10, pos + 24 + beteen, 8);

 

            Console.SetCursorPosition(pos + 30 + beteen, 9);

            Console.WriteLine("*");

            Console.SetCursorPosition(pos + 30 + beteen, 11);

            Console.WriteLine("*");

 

            DisplayNum(second / 10, pos + 33 + beteen, 8);

            DisplayNum(second % 10, pos + 39 + beteen + 1, 8);

 

            /*输出日历*/

            DisplayCalender();

 

 

 

            Console.ForegroundColor = ConsoleColor.Red;

            Console.SetCursorPosition(0, 32);

            Console.WriteLine("按下任意键结束. .  .");

 

        }

        private void DisplayNum(int num, int x, int y)

        {

            Console.ForegroundColor = ConsoleColor.DarkBlue;

            string[][] digital ={new string[]{"▇▇▇"," ","  "," ","▇▇▇"},

                                 new string[]{"    ","    ","    ", "    ","    "},

                                 new string[]{"▇▇▇","   ","▇▇▇","    ","▇▇▇"},

                                 new string[]{"▇▇▇","   ","▇▇▇","   ","▇▇▇"},

                                 new string[]{" "," ","▇▇▇" ,"   ","    "},

                                 new string[]{"▇▇▇","    ","▇▇▇","   ","▇▇▇"},

                                 new string[]{"▇▇▇","    ","▇▇▇"," ","▇▇▇"},

                                 new string[]{"▇▇▇","   ","    ","   ","    "},

                                 new string[]{"▇▇▇"," ","▇▇▇"," ","▇▇▇"},

                                 new string[]{"▇▇▇"," ","▇▇▇","   ","▇▇▇"},

                                };

 

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

            {

                if (i == num)

                {

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

                    {

                        Console.SetCursorPosition(x, y + j);

                        Console.WriteLine(digital[i][j]);

                    }

                    break;

                }

            };

 

 

        }

 

        private void DisplayCalender()

        {

            Console.ForegroundColor = ConsoleColor.Yellow;

            Console.SetCursorPosition(18, 15);

            Console.WriteLine("Sun    Mon    Tue    Wed    Thr    Fri    Sat");

 

            int space = 5;//日历中相邻两个数字的间距

            int num_long = 2;//日历日期数字的宽度

 

            DateTime today = new DateTime();//指向今天

            DateTime pos = new DateTime();//用于移动的

 

            int days = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);//获取当前月份的天数       

 

            today = DateTime.Now;

            pos = today.AddDays(1 - today.Day);

            //Console.WriteLine(pos.DayOfWeek);

 

 

            int C_x = 18, C_y = 17;//C_x表示此刻的横坐标,C_y表示此刻的纵坐标

 

            C_x += (pos.DayOfWeek - DayOfWeek.Monday + 1) * (space + num_long) + 1;//设置好C_x的初始位置

 

            for (int day = 1; day <= days; day++)

            {

                Console.ForegroundColor = ConsoleColor.Green;

                if (pos == today)

                    Console.ForegroundColor = ConsoleColor.Red;

                Console.SetCursorPosition(C_x, C_y);

                Console.Write(pos.Day);

                if (pos.DayOfWeek == DayOfWeek.Saturday)  //如果此刻的日期是这一行的最后一列则换行

                {

                    C_x = 19;

                    C_y += 1;

                }

                else                                      //否则继续向后书写

                {

                    C_x += (space + num_long);

                }

                pos = pos.AddDays(1);

            }

        }

    }

 

}

C#写的闹钟应用程序。到处都是注释,一看就懂! 核心代码和效果展示见我的博客:http://blog.youkuaiyun.com/luochao5862426/article/details/78570141 个人特色: 1、可以这么所说,别人有的,我有!别人没有的,我也有。集百家之长,选我就对了,嘿嘿。 2、代码详细,基本上每一条稍微重要点的代码都有注释这行代码是干嘛的,所以你可以看到好多好多注释,详细的不能再详细! 3、里面包含,可直接导入的项目文件、该程序的PPT展示以及录制的视频展示。 4、模块清晰,注释详细,低耦合,高内聚。 主页面介绍:分三个部分 一、动态时钟部分,像石英钟一样时、分、秒针不停转动。 二、定点闹钟部分,简单点就是可以定闹钟。 三、闹钟备忘录部分,显而易见,为了添加提示功能。 本人设计了两种可选模式: 1、懒人模式(可多次延时响铃,下面主要讲述这个模式) 2、生存模式(本次考验失败后则下次的闹钟提前几分钟响铃。由于时间有限本人没去实现这个功能) 主要功能介绍: 一、时钟(石英钟) 1、使用C#的GDI+画出石英钟时、分、秒针不停转动的效果并加上了指针的尾巴。 二、闹钟 1、定闹钟时添加备注。 2、自选(默认铃声或本地铃声)试听铃声。所以机智的你可以当一个MP3用了。 3、设定多个闹钟。重点是,你可以设置不同类型(今天、每天、自定义星期、指定日期)的闹钟。 4、设定不同的响铃方式。包括:只响一次、不断响铃、静音响铃。 5、定时关机。定闹钟的时候选择了定时关机这个选项,那么,在闹钟到点后的一定时间内(我设置的3秒)会自动关机。 6、开机自启动。这个可以自己设定,很多人不需要。 7、响铃抖屏。闹钟到点后会抖动一小段时间(我设置的3秒)的屏幕,并同步跳到你打开的所有窗口的最顶层窗体。 8、系统托盘。可以隐藏到系统托盘。 三、备忘录 {备忘录组成:时段+时间+备注+尾巴(可删除,知识为了查看有哪些操作)} 1、移除所定的闹钟。 2、把闹钟备忘录保存至本地。 3、从本地导入至闹钟备忘录。所以你可以在本地修改备忘录咯,包括时间和内容。 4、修改闹钟备忘录内容。在程序界面修改备忘录。 5、查找备忘录内容。在程序界面查找备忘录内容。 6、显示倒计时。你在定闹钟的时候要是选了倒计时这个选项,则你可以在备忘录里面选中,显示倒计时。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值