C语言程序设计万年历Word格式.docx

上传人:b****1 文档编号:5784995 上传时间:2023-05-05 格式:DOCX 页数:16 大小:47.26KB
下载 相关 举报
C语言程序设计万年历Word格式.docx_第1页
第1页 / 共16页
C语言程序设计万年历Word格式.docx_第2页
第2页 / 共16页
C语言程序设计万年历Word格式.docx_第3页
第3页 / 共16页
C语言程序设计万年历Word格式.docx_第4页
第4页 / 共16页
C语言程序设计万年历Word格式.docx_第5页
第5页 / 共16页
C语言程序设计万年历Word格式.docx_第6页
第6页 / 共16页
C语言程序设计万年历Word格式.docx_第7页
第7页 / 共16页
C语言程序设计万年历Word格式.docx_第8页
第8页 / 共16页
C语言程序设计万年历Word格式.docx_第9页
第9页 / 共16页
C语言程序设计万年历Word格式.docx_第10页
第10页 / 共16页
C语言程序设计万年历Word格式.docx_第11页
第11页 / 共16页
C语言程序设计万年历Word格式.docx_第12页
第12页 / 共16页
C语言程序设计万年历Word格式.docx_第13页
第13页 / 共16页
C语言程序设计万年历Word格式.docx_第14页
第14页 / 共16页
C语言程序设计万年历Word格式.docx_第15页
第15页 / 共16页
C语言程序设计万年历Word格式.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言程序设计万年历Word格式.docx

《C语言程序设计万年历Word格式.docx》由会员分享,可在线阅读,更多相关《C语言程序设计万年历Word格式.docx(16页珍藏版)》请在冰点文库上搜索。

C语言程序设计万年历Word格式.docx

XXXXXXX

XX

运行完成后显示:

“是否继续打印(Y/N)?

”如果输入Y,则重新显示“请输入要打印的月份(XXXX年XX月)”,否则回到主菜单。

(3)在主菜单中输入3后,显示:

“请输入要打印的年份(XXXX)”

运行后输出XXXX年的日历,

XXXX

X(月数)

SMTWTFS

XXXXXXX

xx

……

SMTWTFS

XXXXX

XXXXX

运行完成后显示:

”如果输入Y,则重新显示“请输入要打印的年份(XXXX)”,否则回到主菜单。

(4)在主菜单中输入4后,显示:

“是否要真的退出(Y/N)?

”如果输入Y,结束程序运行,否则重新显示主菜单。

本系统涉及的知识点有:

for语句、do-while语句、switch语句、break语句、if-else语句、还有sizeof、return、default、char、printf、scanf等,包含了课本上的很多知识。

有顺序、选择、循环的结构,数组、函数、指针等。

2功能设计:

本系统需要实现的功能要求:

利用for语句、do-while语句、switch语句、break语句和if-else语句来实现所需功能

如:

(万年历系统主菜单)

输入1输出:

XXXX年XX月XX日是星期X

输入2输出X月的日历

输入3输出XXXX年的日历

输入4退出

3程序代码设计

1)函数原形:

voidInputyearMonth();

输入年月日的函数判断格式是否正确

VoidInputDates();

输入日期判断格式是否正确

2)功能:

switch语句判断每月的天数是多少以及二月分的天数是多少

用while语句循环判断月份的函数及输入日期判断是否正确并赋值

3)变量及类型:

intYearTodays(inty);

类的私有函数intDatasToDays();

intMonthToWeek();

intYearMonthToDay(inty,intm);

voidDate:

InputDates()输出函数

4)说明:

利用输入模块来完成数据的输入

voidshowyuandan()//显示元旦是星期几的函数voidDisPlayMonth();

//显示月历voidDate:

showdatetime()//显示当前系统时间

用if语句判断是否是闰年然后输出下面的函数

VoidDate:

DisPlayMonth()输出结果的函数

Intyear;

intmonth;

intdays;

intwday;

类的私有成员

利用输出模块来完成数据的输出

4程序设计总结:

这次“万年历系统设计”的课程设计不仅让我对C语言的熟悉程度上升到了另一个高度,更加熟练的运用C语言,而且在一定意义上对面向对象设计的理解更加深刻了。

是我在编程路途上的一次质的飞跃。

而且在处理非常规数据类型的运算的锻炼下,使我对编程语言有了一个新的认识。

当看着一个具有图形界面的万年历的模型成品出现在自己面前时,心中有着无限感慨,原来编程也不是非常遥不可及的,原来在编程的趣味性中能让我学到更多有意思的知识。

5致谢;

在程序设计报告的编写过程中得到了刘洁老师的有力帮助,还有朱浩同学的帮助提醒,以及网络资源的参考,在此一并表示感谢。

6参考文献:

【1】贾宗璞、许合利,《C语言程序设计》人民邮电出版社2010.9

【2】贾宗璞、许合利,《大学计算机基础》吉林大学出版社2010.8

【3】谭浩强,《C程序设计》清华大学出版社1999

【4】陈英,《C语言趣味程序百例精解》北京理工大学出版社1994

【5】

7附:

#include<

stdio.h>

stdlib.h>

typedefstruct{

intyear;

charmonth;

charday;

}*DATE;

DATENewDate(void);

intDestroyDate(DATEdate);

intDaysAMonth(DATEdate);

intCheckDate(DATEdate);

intSetDate(DATEdate,intyear,intmonth,intday);

intGetWeek(DATEdate);

intQueryDay(void);

intShowMonth(DATEdate);

intQueryMonth(void);

intQueryYear(void);

intConfirmExit(void);

intCalendar(void);

intmain()

{

if(Calendar())

return0;

else

return1;

}

DATENewDate(void)

DATEdate;

date=(DATE)malloc(sizeof(*date));

returndate;

intDestroyDate(DATEdate)

if(!

date)

free(date);

intDaysAMonth(DATEdate)

intdays;

switch(date->

month)

{

case1:

case3:

case5:

case7:

case8:

case10:

case12:

days=31;

break;

case4:

case6:

case9:

case11:

days=30;

default:

days=0;

}

if(date->

month==2)

year%4==0&

&

date->

year%400!

=0||date->

year%400==0)

days=29;

days=28;

returndays;

intCheckDate(DATEdate)

month<

1||date->

month>

12)

day<

day>

DaysAMonth(date))

intSetDate(DATEdate,intyear,intmonth,intday)

year=year;

month=month;

day=day;

returnCheckDate(date);

intGetWeek(DATEdate)

intyear,month,day;

year=date->

year;

month=date->

month;

day=date->

day;

if(month<

=2)

month+=12;

--year;

return(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7+1;

intQueryDay(void)

charcont;

staticchar*week[]={"

星期一"

"

星期二"

星期三"

星期四"

星期五"

星期六"

星期日"

};

(date=NewDate()))

do{

printf("

请输入年月日(XXXX,XX,XX)"

);

scanf("

%d,%d,%d"

&

year,&

month,&

day);

if(SetDate(date,year,month,day))

%4d年%2d月%2d日是%s,是否继续查询(Y/N)?

"

\

year,month,day,week[GetWeek(date)-1]);

%c"

cont);

日期输入错误!

\n"

}while(cont=='

Y'

||cont=='

y'

DestroyDate(date);

intShowMonth(DATEdate)

intstartweek;

inti;

startweek=GetWeek(date);

days=DaysAMonth(date);

SMTWSFS\n"

startweek=startweek%7;

for(i=0;

i<

startweek;

++i)

"

for(i=1;

=days;

%2d"

i);

startweek=(startweek+1)%7;

if(startweek==0)

if(startweek!

=0)

intQueryMonth(void)

intyear,month;

请输入要打印的月份(XXXX,XX)"

%d,%d"

month);

if(SetDate(date,year,month,1))

%4d年%2d月\n"

year,month);

ShowMonth(date);

月份输入错误!

intQueryYear(void)

intmonth;

请输入要打印的年份(XXXX)"

%d"

year);

%4d年\n"

year);

for(month=1;

=12;

++month)

SetDate(date,year,month,1);

%2d月\n"

month);

是否继续打印(Y/N)?

intConfirmExit(void)

charexit;

是否要真的退出(Y/N)?

exit);

if(exit=='

||exit=='

intCalendar(void)

intmenu=1;

inttmp;

switch(menu)

\n|1查星期||2月日历||3年日历||4退出|:

tmp);

switch(tmp)

menu=11;

case2:

menu=12;

menu=13;

menu=14;

选择有误!

QueryDay();

menu=1;

QueryMonth();

case13:

QueryYear();

case14:

if(ConfirmExit())

menu=0;

}while(menu);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2