首次采用弹窗~~~~
#include
#include
#include
#include
#include
int nl(int a),nll(int a); // 【nl(int a)】 Sleep方式函数 【nll(int a)】 time_t方式函数
char xuanze(char yy); // 判断输入选择函数
int dongzuo(),jilu(),fs(); //【dongzuo()】 读取用户指定运行动作函数 【jilu()】记录文件函数 【fs()】选择计时方式函数
char ll[130]={0},lj[100]={0},file[]="闹铃动作.txt",kk[]="请将要运行的程序或音乐的绝对路径复制到这里,覆盖这行字并保存(支持DOS命令)...";
int main()
{
system("COLOR 0a");
system("title 欢迎使用由【遲、钝dè豬】设计的程序~~");
printf("*******************************************************************************");
printf("\n\n\t\t\t\t【 说 明 】");
printf("\n\n\t可惜的是不能实现自动开机,不过它的作用不仅仅局限于闹钟......");
printf("\n\n\t嘿嘿,这是值得欣慰地方,提供两种记时方式,以减少时间误差......");
printf("\n\n\t【Sleep】记时方式是让程序暂停运行,暂停时间由用户指定的时间......");
printf("\n\n\t【time_t】方式记时方式是让程序不断读取时间差是否等于用户指定的时间...");
printf("\n\n\t精确到分钟,最低也需要1分钟,有时间再把它精确到秒吧,O(∩_∩)O~.......");
printf("\n\n\t最后感谢【蓝雨森林】QQ:000000......");
printf("\n\n\t解决了让我郁闷了很久的重复使用scanf()函数无法中断程序等待用户输入问题..");
printf("\n\n\t\t\t\t\t\t遲、钝dè豬 QQ:0000000000\n\n");
printf("\t\t\t\t\t\t2010年12月25日 0:11 设计\n\n");
printf("*******************************************************************************");
system("pause");
system("cls");
printf("\n\n\a【请注意弹出的对话框,有可能会隐藏在程序界面的背后...】");
jilu();// 判断、读取记录文件函数
dongzuo(); // 调用记录用户指定函数
fs(); // 计时方式选择函数
}
/*********************************/
/*-------【计时方式选择】------*/
/********************************/
int fs()
{
int a;
if((MessageBox(0,"【Y】Sleep 方式记时 [无倒计时提示,误差较小]\n\n【N】time_t方式记时 [有倒计时提示,误差较大]","选择记时方式",MB_YESNO))==6)
{
system("title 欢迎使用由【遲、钝dè豬】设计的程序~~【Sleep方式记时】");
printf("\n请输入闹铃时间(分钟):");
scanf("%d",&a);
nl(a);
}
else
{
system("title 欢迎使用由【遲、钝dè豬】设计的程序~~【time_t方式记时】");
printf("\n请输入闹铃时间(分钟):");
scanf("%d",&a);
nll(a);
}
strcpy(ll,"\"");
strcat(ll,lj);
strcat(ll,"\"");
printf("【懒猪!时间到!该刷牙洗脸骑着破电动去上班啦...】\n\n\a\a\a");
system(ll); // 执行用户指定的程序、音乐或命令
system("pause');
exit(0);
}
/*********************************/
/*-------【Sleep方式记时】------*/
/********************************/
int nl(int a)
{
a*=60000; // 将毫秒转换为分钟
printf("\n【已进入倒计时闹铃!】\n\n");
Sleep(a); // 中断程序,等待用户指定的时间后返回主函数
}
/**********************************/
/*-------【time_t方式记时】------*/
/*********************************/
int nll(int a)
{
time_t start,end;
int v,d=1,i=60,h=1;
a*=60;// 转化为分钟 1分钟=60秒
printf("\n【已进入倒计时闹铃!】\n\n");
start=time(NULL);// 开始记录时间并赋值给变量start
printf("距离闹铃时间还剩【%d】分钟\n\n",a/60-d);
for(;;)
{
end=time(NULL);// 结束记录时间并赋值给变量end
if((difftime(end,start))==a)// 如果开始记录的时间到结束记录的时间等于指定的时间 则跳出循环
break;
else // 否则
{
if((difftime(end,start))==i) // 如果开始记录的时间到结束记录的时间等于i=60=1分钟 则显示剩余时间
{
v=a/60-1-d;
if(h==1)// 设定h 控制每分钟只显示一次提示信息
{
printf("距离闹铃时间还剩【%d】分钟\n\n",v);
h=0;
}
}
else if((difftime(end,start))>i) // 控制每分钟都会有显示
{
h=1;
i+=60;//记录分钟
d++;//记录秒
}
}
}
}
/**************************************/
/*-------记录用户指定文件或命令------*/
/*************************************/
int dongzuo()
{
FILE *fp;
char r;
if((fp=fopen(file,"w"))==NULL)
MessageBox(0,"无法写入动作文件","提示",MB_OK);
else
{
fputs(kk,fp);
fclose(fp);
system(file);
}
if((fp=fopen(file,"r"))==NULL)
puts("无法读取动作");
else
{
fscanf(fp,"%[^\n]",lj); // 不写%s 而写%[^\n]是因为让fscanf()函数可以读取空格并写入文件 \n :代表空格
fclose(fp);
if((strcmp(lj,kk))==0)
{
MessageBox(0,"程序未检测到你输入了程序、音乐的绝对路径或DOS命令","注意",MB_OK);
dongzuo();
}
printf("\n\n你输入了这行路径或Dos命令:\n\n【%s】\n\n",lj);
printf("【提示:当时间到了程序会自动运行上面的程序、音乐或命令...】\n\n");
printf("确认以上的路径或Dos命令吗?(Y/N):");
r=xuanze(r);
if(r=='N'||r=='n')dongzuo();
if((MessageBox(0,"是否保存此记录以供下次使用?","提示",MB_YESNO))==6)
MessageBox(0,"如果需要更改运行的程序、音乐或命令,可以删除本目录下的【闹铃动作.txt】\n\n或直接更改里面程序、音乐的绝对路径或命令......","提示",MB_OK);
else
unlink(file);
}
}
/***********************/
/*-------判断输入------*/
/***********************/
char xuanze(char yy)
{
for(;;)
{
scanf("%c",&yy);
fflush(stdin); // 清除一个流...避免重复使用scanf()函数是无法中断程序等待用户输入 (这个问题让我头疼N久...)
if(yy!='y'&&yy!='n'&&yy!='Y'&&yy!='N')
{
printf("\n输入错误,请重新输入:\a");
continue;
}
else
break;
}
return yy;
}
/***********************/
/*-------历史记录------*/
/***********************/
int jilu()
{
FILE *fp;
if((fp=fopen(file,"r"))==NULL);
else
{
printf("\n\n\t发现记录文件,正在读取记录文件...");
fscanf(fp,"%[^\n]",lj); // 为什么不写%s 而写%[^\n]是因为让fscanf()函数可以读取空格并写入文件 \n :代表空格
fclose(fp);
printf("\n\n路径或Dos命令为:\n\n【%s】\n\n",lj);
printf("【提示:当时间到了程序会自动运行上面的程序、音乐或命令...】\n\n");
fs();
}
}