C语言万年历系统

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档