C语言万年历系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
山东交通学院
面向对象课程设计
字符统计软件
院(系)别信息科学与电气工程学院班级计算111
学号
姓名李峰辉
指导教师徐硕博
时间2012-03-05—2012-03-09
课程设计任务书
题目万年历系统程序设计
系 (部) 信息科学与电气工程学院
专业计算机科学与技术
班级计算111 学生姓名李峰辉
学号
3 月 5 日至 3 月 9 日共 1 周
指导教师(签字)
系主任(签字)
年月日
一、设计内容及要求
编写一万年历系统(限最多1人完成)
要求: 模仿现实生活中的挂历.
当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几). 当系统日期变到下一月时,系统自动翻页到下一月.
二、设计原始资料
C语言程序与设计
三、主要参考资料
谭浩强《C程序设计》第四版
四、设计完成后提交的文件和图表
文件:万年历系统文件,及源代码
图表
1,进入万年历系统
2,任意键进入菜单
3,当输入非法字符时,提示错误,重新输入
4,进入选项1,日历显示并显示日历
5,进入选项2,日历查询并显示所查询的日期
6,当查询输入非法字符时,提示错误,返回主菜单
7,进入选项3,退出
五,流程图功能模块
显示模块
月历显
示
日期查
询
日期判
断
日期调
整
闰年判
断
程序进入
显示当前时
1、日期显示1、日期显示
2、日期查询
3、退出程序
3、退出程序
2、日期查询
六,源代码
#include
#include
#include
#include
int year,month,day; //全局变量记录时间
int
daysOfMonth[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,3 1,30,31,31,30,31, 30,31}};
void main()
{
int runYear(int year);
struct tm* getDay();//从系统取得当前时间,结构体,在函数中指定程序员需要的标准类型(实践结构体)
int chaxunday(int year,int month,int day);//检查日期是否正确
int qudeDay(int year,int month,int day);//取得星期
void printrili(int year,int month,int day);//打印月历
void checkrili();//查询日历
void backMenu();
void mainMenu(int &year,int &month,int &day);//主菜单
struct tm *gmt=getDay();//用系统时间进行初始化,
year=gmt->tm_year+1900;
month=gmt->tm_mon+1;
day=gmt->tm_mday;
printrili(year,month,day);//打印当前月历
backMenu();
mainMenu(year,month,day);
}
struct tm* getDay()//从系统取得当前时间
{
time_t timer;
struct tm* gmt;
time(&timer);
gmt=localtime(&timer);
return gmt;
}
int runYear(int year) //判断是否是闰年
{
int run=0;
if(year%400==0||(year%4==0&&year%100!=0))
run=1;
return run;
}
int chaxunday(int year,int month,int day)//检查正确
{
if(year<=0&&year>=10000||month<1&&month>12||day<1||day>31) return 0;
switch(month)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12: if(day>31)return 0;break;
case 4:case 6:case 9:case 11:
if(day>30)return 0;break;
default:
if(runYear(year)&&day>29)
return 0;
else if(runYear(year)==0&&day>28)
return 0;
}
return 1;
}
int qudeDay(int year,int month,int day)//取得星期
{
int nday=0,nDay,i,x;
for(i=0;i nday+=daysOfMonth[runYear(year)][i]; nday+=day; nDay=year-1+(year-1)/4-(year-1)/100+(year-1)/400+nday;