前言今天,我同学问我这个程序怎么做:
于是,我用C给他写了一个类似的控制台程序:
我的这个控制台程序有8个小功能,分别是:1、定时n秒后自动关机2、定时到x点x分提醒

前言今天,我同学问我这个程序怎么做:

于是,我用C给他写了一个类似的控制台程序:

我的这个控制台程序有8个小功能 , 分别是:1、定时n秒后自动关机2、定时到x点x分提醒你是否要关机,如果你没确认不关机,则在60s后将自动关机3、立即关机4、取消自动关机5、注销计算机6、打开计算器7、打开画图软件 。
【关机命令代码 关机命令万万没想到】8、打开记事本在介绍各个功能之前 , 首先介绍一个函数: system函数system函数system是C函数库 stdlib.h中的一个函数 , 用于发出一个DOS命令给系统 , 函数原型为:int system。
(constchar* command);例如: system("pause"); 可以实现冻结屏幕在往期笔记【C语言笔记】你的黑窗口闪退?也有介绍,欢迎阅读这里的8个功能,我们都是借用这个函数来实现的,然后再添加一些处理逻辑即可 。
对DOS命令有一些了解的同学可能觉得定时关机、取消关机之类的只要一行命令就可以了 , 干嘛要那么麻烦的确,不实用!但是,我们是本着练习C编程的原则来做的 , 看似简单的功能,做起来也会遇到很多问题的,特别注意要理清楚一些逻辑关系及一些细节 。
下面分析各代码块:功能分析这几个功能中,其中功能1和功能2的实现比较麻烦一点 。其他几个功能都只是调用 system函数往发DOS命令给系统 。下面看各个功能的具体实现:1、定时n秒后自动关机功能演示

代码// 菜单选择1:定时n秒后自动关机void choice_01(void){int sec_count;char cmd[30]; scanf("%*[^\n]");scanf("%*c");
// 清空缓冲区 printf("请输入您要定时关机的秒数:"); scanf("%d",&sec_count);// 读入定时的秒数 sprintf((char*)cmd,"shutdown -s -t %d"
, sec_count);// cmd定时关机命令组包 system(cmd);// 执行定时关机命令 printf("定时开始!\n");// 输出倒计时的秒数while(sec_count
--){// 非阻塞式键盘监听,输入缓冲区非空时则退出while循环if(kbhit())// kbhit函数包含在头文件conio.h中 , 所以只适用于windows系统{break;} printf
("您的电脑将在%d秒后自动关机(输入数字4并回车可取消自动关机)\n", sec_count);Sleep(1000);// 休眠1秒 system("cls");// 清屏操作}}2、定时到x点x分提醒你是否要关机
这个功能像我手机的自动关机的操作:

我给我的手机定时每天0点0分自动关机,关机之前先倒计时一分钟,看你是否要真的关机 , 此时可以点击立即关机,也可以取消关机 。功能演示

代码// 菜单选择2:定时每天x点x分自动关机void choice_02(void){struct timed_time shutdown_time;char*wday[]={"Sun","Mon",
"Tue","Wed","Thu","Fri","Sat"};time_t t;struct tm *time_date;int year =0, mon =0, mday =0;int hour =0
, min =0, sec =0;char*week = NULL;int count_down =60;int count_down_flag =0; scanf("%*[^\n]");scanf
("%*c");// 清空缓冲区 printf("请输入您要定时关机的时间(如23:59):"); scanf("%d:%d",&shutdown_time.timed_hour,&shutdown_time
.timed_min);// 读入要定时关机的时间 printf("现在是:"); system("time /T");// 输出此刻的时间 printf("您的电脑将在%.2d点%.2d分提醒您是否要关机\n"
, shutdown_time.timed_hour, shutdown_time.timed_min);while(1){ time(&t);// 返回1970年1月1日至今的秒数 time_date
= localtime(&t);// 取得当地时间并保存在time_date中 year =1900time_date->tm_year;// 年(本程序中暂未用到) mon
=1time_date->tm_mon;// 月(本程序中暂未用到) mday = time_date->tm_mday;// 日(本程序中暂未用到) week
= wday[time_date->tm_wday];// 星期(本程序中暂未用到) hour = time_date->tm_hour;// 时(用到) min = time_date
->tm_min;// 分(用到) sec = time_date->tm_sec;// 秒(本程序中暂未用到)// 如果此时此刻的时、分等于设定值,则开始倒计时60秒if(hour ==
shutdown_time.timed_hour && min == shutdown_time.timed_min && sec ==0){ system
("shutdown -s -t 60");// 定时60秒自动关机 count_down_flag =1;// 倒计时标志置一}// 开始倒计时if(1== count_down_flag
){ count_down--; printf("您的电脑将在%d秒后自动关机(输入数字4可取消自动关机)\n", count_down);Sleep(1000
); system("cls");}// 非阻塞式键盘监听,输入缓冲区非空时则退出while循环if(kbhit()){ count_down_flag =0
;// 倒计时标志清零break;}}}关于时间日期函数 , 可以查看往期笔记:【C语言笔记】时间日期函数3、立即关机选择该功能时,先提示是否要关机,预防误操作代码// 菜单选择3:立即关机void choice_03 。
(void){char shutdown_affirm;// 确认是否真的需要立即关机 scanf("%*[^\n]");scanf("%*c");// 清空缓冲区 printf("您确定要立即关闭您的计算机(y/n)?\n"
); scanf("%c",&shutdown_affirm);if(shutdown_affirm ==y){ printf("您的计算机即将关机!\n");Sleep(1000);
system("shutdown -p");}else{ system("cls"); printf_menu();}}4、取消自动关机若此时没有定时关机操作,则选择取消自动关机时,会打印输出:
因为没有任何进行中的关机过程,所以无法终止系统关机(1116)代码// 菜单选择4:取消自动关机void choice_04(void){ system("cls");// 清屏 printf 。
("您已取消自动关机\n"); system("shutdown /a");// 取消自动关机 printf_menu();// 打印输出菜单}5、注销计算机代码// 菜单选择5:注销void
choice_05(void){ system("cls");// 清屏 printf("当前用户即将被注销\n"); system("shutdown -l");}6、打开计算器代码
// 菜单选择6:打开计算器void choice_06(void){ system("calc");// 打开计算器的命令 system("cls");// 清屏 printf_menu
();// 打印输出菜单}7、打开画图软件代码// 菜单选择7:打开画图软件void choice_07(void){ system("mspaint");// 打开画图软件的命令 system
("cls");// 清屏 printf_menu();// 打印输出菜单}8、打开记事本代码// 菜单选择8:打开记事本void choice_08(void){ system("notepad"
);// 打开记事本的命令 system("cls");// 清屏 printf_menu();// 打印输出菜单}本程序用到的DOS命令1、清屏操作:cls2、定时关机:shutdown
-s -t sec (说明:sec为要定时的秒数)3、取消定时关机:shutdown /a4、输出此刻的时间:time /T5、输出今天的日期:date /T6、立即关机:shutdown -p7、注销计算机:
shutdown -l8、设置cmd窗口标题:title 正念君(设置标题为“正念君”)9、设置窗口宽高:mode con cols=60 lines=3010、设置窗口前景色与背景色:color f0
11、打开计算器:calc12、打开画图软件:mspaint13、打开记事本:notepad这些命令可以cmd窗口中运行,如:

有些不需要依赖于cmd窗口的命令也可以直接在运行窗口中输入,如在运行窗口中输入 calc打开计算器:

其中,可通过组合键【win r】调出运行窗口完整程序由于完整的代码较长 , 就不贴出来了,有兴趣的朋友可在后台回复关键词:定时关机,获取该 .c 文件温馨提示:链接失效,可在后台回复,或添加小编微信(备注XX链接失效) 。
总结论实用性,除了功能二之外 , 其他功能都可以直接通过在cmd窗口中输入命令就可以实现但多写一些这些功能性的东西,可以很好的锻炼我们的编程实践能力及编程的逻辑思维,这对于提高我们嵌入式应用的编写能力有很大的帮助! 。
这次写的是控制台的定时关机程序,之后有时间有机会再把该定时关机程序做成图形界面的形式,欢迎持续关注!转发、点在看就是对小编最大的支持!猜你喜欢【Linux笔记】Linux下编译C程序【Linux笔记】make工程管理工具(二)
【C语言笔记】关于数组的一个陷阱!【C语言笔记】操作位的技巧【RT-Thread笔记】裸机系统与多线程系统【RT-Thread笔记】关于RT-Thread的启动问题

猜你喜欢
- 锋范p0301故障码什么问题 锋范故障码p0301是什么故障代码
- 北京汽车e系列p0303故障码什么意思 北京汽车e系列故障码p0303是什么故障代码
- 关机命令行 关机命令学会了吗
- 关机命令行 关机命令万万没想到
- 违章代码12110是什么意思
- 违章代码13527是什么意思
- 小米手机电池修复指令代码
- windows 10如何设置自动关机 windows10如何设置自动关机时间
- 违章代码10130是什么意思
- 违章代码10102是什么意思
