万年历+备忘录(C语言课程设计)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*
湖南大学数学与应用数学
胡凡
C语言课程设计
万年历+备忘录命令提示行
完成于2011年
完整版
*/
/*-------------------------------我是分割线-------------------------------*/ /*命令行功能选项*/
/*-d:显示当月日历和当日备忘*/
/*-i:显示当月日历和添加当日备忘*/
/*-m:显示当月日历和修改当日备忘*/
/*-g:删除当日备忘*/
/*-t:删除全部备忘*/
/*-------------------------------我是分割线-------------------------------*/ /*头文件*/
#include
#include
#include
/*定义全局变量(各月所含天数)*/
int a[]={0,31,0,31,30,31,30,31,31,30,31,30,31};
/*定义结构体*/
struct date_message
{
int year; /*年*/
int month; /*月*/
int day; /*日*/
char memo[300]; /*备忘*/
}date={1,1,1,"\0"};
/*-------------------------------我是分割线-------------------------------*/ /*主函数*/
int main(int argc,char *argv[])
{
/*函数声明*/
void checkDate(); /*检查日期合法性*/ void show_calender(); /*显示日历*/
void memo_written(); /*写入备忘*/
void memo_modify(); /*修改备忘*/
void memo_delete(); /*删除当日备忘*/
void memo_delete_all(); /*删除全部备忘*/
void memo_read(); /*读取备忘*/
/*定义变量*/
int choice;
/*使用getopt函数分析命令行参数,识别选项*/
while((choice=getopt(argc,argv,"d:i:m:g:t"))!=-1)
{ /*选项*/
switch(choice)
{ /*选项为d时,显示当月日历和当日备忘*/
case 'd':/*调用atoi函数,将字符型数字转化为整型*/
date.year=atoi(argv[2]);
date.month=atoi(argv[3]);
/*如果没有输入日期则不赋值*/
if(atoi(argv[4])!=0)date.day=atoi(argv[4]);
/*检查日期合法性*/
checkDate();
/*显示当日日历*/
show_calender();
/*显示备忘*/
memo_read();
break;
/*选项为i时,显示当月日历和添加当日备忘*/
case 'i':date.year=atoi(argv[2]);
date.month=atoi(argv[3]);
if(atoi(argv[4])!=0)date.day=atoi(argv[4]);
checkDate();
show_calender();
memo_read();
printf("请输入该日备忘\n");
/*写入备忘*/
memo_written();
/*添加之后*/
printf("添加之后的日历为\n");
show_calender();
memo_read();
break;
/*选项为m时,显示当月日历和修改当日备忘*/
case 'm':date.year=atoi(argv[2]);
date.month=atoi(argv[3]);
if(atoi(argv[4])!=0)date.day=atoi(argv[4]);
checkDate();
show_calender();
memo_read();
printf("请输入该日修改后的备忘\n");
/*修改备忘*/
memo_modify();
/*修改之后*/
printf("修改之后的日历为\n");
show_calender();
memo_read();
break;
/*选项为g时,删除当日备忘*/
case 'g':date.year=atoi(argv[2]);
date.month=atoi(argv[3]);
if(atoi(argv[4])!=0)date.day=atoi(argv[4]);
checkDate();
/*确认信息*/
printf("确认要删除当日备忘吗(y/n)?");
/*如果输入y的话删除*/
if(getchar()=='y'||'Y')
memo_delete();
break;
/*选项为t时,删除全部备忘*/
case 't':/*确认信息*/
printf("确认要删除全部备忘吗(y/n)?");
/*如果输入y的话删除全部*/
if(getchar()=='y'||'Y')
memo_delete_all();
getchar();
break;
}
}
printf("\t\t Please any key to continue…………");
getchar();
system("cls");
return 0;
}
/*-------------------------------我是分割线-------------------------------*/
/*显示当月日历*/
void show_calender()
{
/*函数调用声明*/
int leap(int t_year);
/*定义函数*/
int sum=0,count=0,i,t,temp_year,temp_month,temp_day=-1;
/*输出年月日*/
printf("\n\t\t\t\t%d年%d月",date.year,date.month);
if(date.day!=0)printf("%d日\n",date.day);