#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct date/*定义日期时间类型*/
{
int year;/*年份*/
int yue;/*月份*/
int ri;/*日期*/
int shi;/*时钟*/
int feng;/*分钟*/
};
struct richenbiao/*定义日程表类型*/
{
struct date time;
char renwu[10];/*任务名*/
struct date tixing;
}xinxi[40];
main()/*主函数*/
{
int a;
int tianjia();
int shanchu();
int chaxun();
int shezhi();
int qingkong();
do{
printf("***************************\n");
printf("***************************\n");
printf("** 主 菜 单 **\n");
printf("** 1: 添加日程信息 **\n");
printf("** 2: 删除日程信息 **\n");
printf("** 3: 查 询 **\n");
printf("** 4: 设置 **\n");
printf("** 5: 清空日程 **\n");
printf("** 0: 退出 **\n");
printf("***************************\n");
printf("***************************\n");
printf(" 请输入数字选择: ");
scanf("%d",&a);
switch(a)/*选择应用函数类型*/
{
case 1: tianjia(); break;
case 2: shanchu();break;
case 3:chaxun();break;
case 4:shezhi(); break;
case 5:qingkong(); break;
case 0: exit(0);
default:printf("选择错误按回车返回") ; getch();getch();system("cls");break;
}
}while(a!=0);
}
int tianjia()/*添加日程函数*/
{
int i,j,k,l=1;
FILE *fp1;/*定义文件指针*/
system("cls");/*清屏函数*/
printf("***************************\n");
printf("** 添加日程信息 **\n");
printf("***************************\n");
fp1=fopen("ricb.txt","a+"); /*打开文件*/
for(i=0;fread(&xinxi[i],sizeof(struct richenbiao),1,fp1)!=0;i++);/*读取记录,统计记录条数*/
j=i;
if(i==0)/*判断是否有记录,如果无进行{}内程序*/
{
printf("日期 2009-1-1\n");
scanf("%d-%d-%d",&xinxi[0].time.year,&xinxi[0].time.yue,&xinxi[0].time.ri);
printf(" 时间 12:10\n");
scanf("%d:%d",&xinxi[0].time.shi,&xinxi[0].time.feng);
printf("日程\n");
scanf("%s",xinxi[0].renwu);
fwrite(&xinxi[0],sizeof(struct richenbiao),1,fp1);/*读入记录到文件*/
}
else
{
printf("日期 2009-1-1\n");
scanf("%d-%d-%d",&xinxi[j].time.year,&xinxi[j].time.yue,&xinxi[j].time.ri);
printf(" 时间 12:10\n");
scanf("%d:%d",&xinxi[j].time.shi,&xinxi[j].time.feng);
for(k=0;k<i;k++)/*判断所输入日程是否重复*/
{
if(xinxi[j].time.year==xinxi[k].time.year&&
xinxi[j].time.yue==xinxi[k].time.yue&&
xinxi[j].time.ri==xinxi[k].time.ri&&
xinxi[j].time.shi==xinxi[k].time.shi&&
xinxi[j].time.feng==xinxi[k].time.feng)
{
printf(" 日程冲突\n");
l=2;
}
}
if(l==1)/*当未重复进行......*/
{
printf("日程\n");
scanf("%s",&xinxi[j].renwu);
fwrite(&xinxi[j],sizeof(struct richenbiao),1,fp1);/*读入记录到文件*/
}
}
fclose(fp1); /*关闭文件*/
printf("回车键返回\n") ;
getchar();
getch();
system("cls");
}
int shanchu()/*删除日程函数*/
{
int i,j,k,l=1,x;
FILE *fp1;
system("cls");
printf("***************************\n");
printf("** 删除日程信息 **\n");
printf("***************************\n");
fp1=fopen("ricb.txt","a+"); /*打开文件*/
for(i=0;fread(&xinxi[i],sizeof(struct richenbiao),1,fp1)!=0;i++);/*读取记录,统计记录条数*/
if(i==0)/*判断是否有记录*/
printf(" 日程为空\n");
else
{
j=i;
printf("日期 2009-1-1\n");
scanf("%d-%d-%d",&xinxi[j].time.year,&xinxi[j].time.yue,&xinxi[j].time.ri);
printf(" 时间 12:10\n");
scanf("%d:%d",&xinxi[j].time.shi,&xinxi[j].time.feng);
for(k=0;k<i;k++)/*判断所输入日程是否存在*/
{
if(xinxi[j].time.year==xinxi[k].time.year&&
xinxi[j].time.yue==xinxi[k].time.yue&&
xinxi[j].time.ri==xinxi[k].time.ri&&
xinxi[j].time.shi==xinxi[k].time.shi&&
xinxi[j].time.feng==xinxi[k].time.feng)
{
printf("日程:%s\n",xinxi[k].renwu);
l=2;
j=k;
}
}
if(l==1)
printf(" 无日程\n");
if(l==2)/*确认是否删除*/
{
printf(" 是否删除 是1 其他数字键退出\n");
scanf("%d",&x);
if(x==1)
{
i=i-1;
for(;j<i;j++)
xinxi[j]=xinxi[j+1];
}
}
}
fclose(fp1);/*关闭文件*/
fp1=fopen("ricb.txt","w"); /*打开文件*/
for(k=0;k<i;k++)
fwrite(&xinxi[k],sizeof(struct richenbiao),1,fp1);/*读入记录到文件*/
fclose(fp1); /*关闭文件*/
printf("回车键返回\n") ;
getchar();
getch();
system("cls");
}
int chaxun()/*查询日程函数*/
{
int p,i,j,k,q=1;
FILE *fp1;
system("cls");
printf("***************************\n");
printf("** 查询日程信息 **\n");
printf("***************************\n");
fp1=fopen("ricb.txt","r"); /*打开文件*/
for(i=0;fread(&xinxi[i],sizeof(struct richenbiao),1,fp1)!=0;i++);/*读取记录,统计记录条数*/
if(i==0)
printf(" 日程为空\n");
else
{
j=i;
printf("查询方式\n");
printf("1息查询提前提醒事件\n");
printf("2 查询某天的日程信息\n");
scanf("%d",&p);
if(p==1)/*选择应用查询类型*/
{
for(k=0;k<i;k++)
{
if(xinxi[k].tixing.year!='\0')
{
printf("日期\n");
printf("%d-%d-%d\n",xinxi[k].time.year,xinxi[k].time.yue,xinxi[k].time.ri);
printf(" 时间 \n");
printf("%d:%d\n",xinxi[k].time.shi,xinxi[k].time.feng);
printf("日程:%s\n",xinxi[k].renwu);
printf("提醒日期\n");
printf("%d-%d-%d\n",xinxi[k].tixing.year,xinxi[k].tixing.yue,xinxi[k].tixing.ri);
printf(" 提醒时间 \n");
printf("%d:%d\n",xinxi[k].tixing.shi,xinxi[k].tixing.feng);
q=2;
}
}
if(q==1)
printf("提醒日程为空\n");
}
if(p==2)
{
printf("日期 2009-1-1\n");
scanf("%d-%d-%d",&xinxi[j].time.year,&xinxi[j].time.yue,&xinxi[j].time.ri);
printf(" 时间 12:10\n");
scanf("%d:%d",&xinxi[j].time.shi,&xinxi[j].time.feng);
printf("***************************\n");
printf("未完成\n");
printf("***************************\n");
for(k=0;k<i;k++)/*判断未完成任务*/
{
if((xinxi[j].time.year==xinxi[k].time.year&&
xinxi[j].time.yue==xinxi[k].time.yue&&
xinxi[j].time.ri==xinxi[k].time.ri&&
xinxi[j].time.shi<xinxi[k].time.shi)||
(xinxi[j].time.year==xinxi[k].time.year&&
xinxi[j].time.yue==xinxi[k].time.yue&&
xinxi[j].time.ri==xinxi[k].time.ri&&
xinxi[j].time.shi==xinxi[k].time.shi&&
xinxi[j].time.feng<xinxi[k].time.feng))
{
printf("日程:");
printf("%s\n",xinxi[k].renwu);
printf("时间:%d:%d\n",xinxi[k].time.shi,xinxi[k].time.feng);
}
}
printf(" \n");
printf("***************************\n");
printf("当前任务\n");/*判断当前任务*/
printf("***************************\n");
for(k=0;k<i;k++)
{
if(
(xinxi[j].time.year==xinxi[k].time.year&&
xinxi[j].time.yue==xinxi[k].time.yue&&
xinxi[j].time.ri==xinxi[k].time.ri&&
xinxi[j].time.shi==xinxi[k].time.shi&&
xinxi[j].time.feng==xinxi[k].time.feng)
)
{
printf("日程:");
printf("%s\n",