各位论坛的大佬们,能不能帮我看看,我写的一个C语言的关机程序,有什么不足的地方,望指点,谢谢 !

//C语言关机小程序
#include<stdio.h>
#include<windows.h>
#include<string.h>
#include<time.h>
void shut_down(char name[20], char save[100]);   //函数调用关机键入
void Cancel_shut_down(char Cancel[2]);//用于取消关机,并重新设置秒数
void New_function(void); //用于汇总函数体


int main(void){
    system("cls");//清屏
    system("COLOR A"); //变色龙 绿色
    system("MODE CON COLS=50 LINES=25");//窗口宽度和高度
    printf("=====当前时间=====\n");
    system("DATE /T");//日期
    system("TIME /T");//时间
    printf("\n");
    
    New_function();//函数调用
    
    return 0;
}
void New_function(void){ 
//调用两个函数结构,void shut_down 和 Cancel_shut_down 功能是让用户手动设置关机倒计时
    char name[20] = {"shutdown -s -t "};
    char save[100];//用于保存关机秒数
    char Cancel[2]; //重新设置关机秒数,判断 "YES" 或 "NO"
    char eliminate[5]; //消除
    int i=0; //作为while循环条件

    printf("===============C语言 关机程序===============\n");
    printf("==    1、1分钟关机                  ==\n");
    printf("==    2、10分钟关机                  ==\n");
    printf("==    3、自行设置关机                  ==\n");
    printf("==      4、立即关机                       ==\n");
    printf("==    5、exit                  ==\n");
    printf("============================================\n");
    
    int option; //Switch选项
    
    printf("请输入以上5个选项的其中一条: ");
    scanf("%d", &option);

    switch(option){
        case 1:
            system("shutdown -s -t 60");
                printf("是否需要取消关机程序(YES and NO): ");
                scanf("%s", eliminate);
                    strlwr(eliminate);    
                        if(strcmp(eliminate,"yes")==0){
                    //如果两个优先级同样的括号,那么程序就从左往右执行
                            system("shutdown -a");
                                printf("以取消...\n");
                        }else printf("正常执行...\n");
                getch();//等待用户键入任意键
                break;
        case 2:
            system("shutdown -s -t 600");
                printf("是否需要取消关机程序(YES and NO): ");
                scanf("%s", eliminate);
                    strlwr(eliminate);
                        if(strcmp(eliminate,"yes")==0){
                    //如果两个优先级同样的括号,那么程序就从左往右执行
                            system("shutdown -a");
                                printf("已取消...\n");
                        }else printf("正常执行...\n");
                getch();
                break;
        case 3:
            shut_down(name,save);  //使用switch调用用户自行设置关机秒数
            Cancel_shut_down(Cancel); //函数调用 shutdown -s -t 用于字符串链接
                break;
        case 4:
            system("shutdown -s -t 0"); //立即关机
                break;
        case 5:
            printf("正在退出程序中");
            while(++i<=5){
                printf("。");
                Sleep(1000);
            }
            system("exit");
                break;
            default: printf("输入错误--请重启程序 !\n");
                getch();//用于等待用户键入任意键
    }//switch
    //把多个语句用括号{}括起来组成的一个语句称复合语句。 在程序中应把复合语句看成是单条语句,而不是多条语句
}
void shut_down(char name[20], char save[100]){
    int redo = 1;//作为while循环条件判断
    int i;

    do{
    printf("你要多少秒关机: ");
    if(scanf("%s", save)!=0) //因为是字符串连接,所以输入的也是字符串关机秒数
    //首先保证有输入
      {
        redo = 0; //假定数据正确
        for(i=0; i<strlen(save); i++)//获取长度
        {
            if(save[i] < '0' || save[i] > '9')
            //save[i] 判断是否有 非数字字符
            {
                redo = 1; //要求重输
                printf("输入错误,请重新输入\n");
                break;
            }
        }//for
            //printf("%d\n", i);  循环检测
      }//if 
        else   printf("无输入数据,请重新输入\n");
    }while(redo==1);
    strcat(name,save); //字符串连接
    //用户输入name1,把name1的值连接到name上,实现了用户输入关机秒数,关机
    system(name);
}
void Cancel_shut_down(char Cancel[2]){ //重新设置关机秒数
    int i = 0; //用于死循环,使用户输入 “YES” 或 “NO”
    int test = 0; //判断数据是否正确
    char again[100];//重新设计时间
    char name2[20] = {"shutdown -s -t "}; //用于字符串链接
    
    do{
    printf("\"YES\"--\"NO\"需要重新设置关机秒数: "); //输入 "YES" 或 "NO" 程序判断执行
    scanf("%s", Cancel);
    
    strlwr(Cancel); //把输入的数,都转变成小写字符
    
    if(strcmp(Cancel,"yes")==0){ //字符串比较
        system("shutdown -a"); //重新设置关机秒数的瞬间,取消关机
    
        do{
        printf("请输入新的设计时: ");
        if(scanf("%s", again)!=0){    
        test = 0;//假的数据正确
        for(i=0; i<strlen(again); i++){
            if(again[i] < '0' || again[i] > '9'){
                test = 1;  //要求重输
                printf("输入错误。。。");
                break;
                        }//判断用户输入的是否是   数字类型
                    }//获取字符串长度。用于判断数组中的值。
                }//保证有输入
            }while(test==1);//循环条件是 test = 1 一直循环下去

        strcat(name2,again);  //字符串链接,从新计时
        system(name2);
        break;
        
        }else if(strcmp(Cancel,"no")==0){ //如果输入否,则程序正常执行
            printf("程序正常运行。。。"); 
            getch();//卡线程在break跳出
            break;
        }
    }while(i < 1);//如果用户乱输入,程序就一直死循环询问
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值