收藏 分销(赏)

c语言课程设计报告--万年历,最详细.doc

上传人:二*** 文档编号:4495323 上传时间:2024-09-25 格式:DOC 页数:17 大小:157KB
下载 相关 举报
c语言课程设计报告--万年历,最详细.doc_第1页
第1页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、.C语言课程设计报告 -万年历设计人:贾伟涛学号:2013010912班级:13电信应电班指导老师:X伟日期:2014年6月9日内容提要通过大一下学期对C语言的学习,了解到了很多C语言的相关知识。学习的过程虽然有很多困惑,但是当自己能够独立的看懂和独立的完成一个简单的程序时,心中就会收获无限的喜悦和成就感。我虽然可以看懂一些简单的程序,编写一些简单的计算程序,更多的是学会了一种思想编程,它让我在去思考很多日常生活中的事物是怎么样通过一个个小小的函数实现功能的,激发我对c语言的兴趣。C语言是近年在国内外得到迅速推广应用的一种机器语言。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效

2、率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。因此,C语言特别适合于编写各种软件。在这次的课程设计中我将把日常生活中最经常接触的日历的查询,利用C语言的程序编成一个简单的万年历查询系统。通过这个小小的系统可以实现很多功能。在程序中你能看到很多熟悉的C语言关键字,同时也加入了很多自己课外了解到的一些关键字。在不断的调试中最终才获得最为完整的程序。接下来就是我的C语言课程设计的具体内容来了,大家拭目以待吧!目录一、 系统功能和数据说明-二、 问题分析-三、 程序总体设计及功能结构框图-四、 程序流程图-五、 源程序代码-六、使用说明-七、个人心得-八、参考文献-一、系统功能和数

3、据说明(一)功能简介在日常生活中能接触到很多不同类型的日历,在日历上我们通常希望它能简单明了的给我们最想要的日期信息。在我的万年历系统当中,就是将日历,月历做的简单明了,很方便我们的查询使用。下面是它要实现的一些基本功能:C语言编写万年历查询系统:(1)输入年份,判断是否为闰年(2)输入年月日,判断是星期几(3)输入年份,打印出12个月的月历(4)输入年月,打印出本月的日历另新增:(1) 对输入指令错误的提示(2) 加入了调用系统时间函数(3) 还添加了欢迎界面并进行界面优化(二)程序中的数据说明int days12 = 31, 28, 31, 30, 31, 30, 31, 31, 30,

4、31, 30, 31;这是定义的关于每个月天数的数组,根据大小月以及二月份的特殊情况将每个月的天数变为数组中的元素存入数组当中。其中days1=28,是将闰年二月的天数28天作为初始元素存入。在经过yearMonth函数后就可以给days1中存入正确的月天数。tm *tp;char *week=一,二,三,四,五,六,日;这两组数据设计都利用了指针定义,利用指针可以提高程序的可读性,可以更方便使用。这两个数组的作用是用于调用系统时间,而定义的星期数组*week和年月日变量*tp,由于还没学到指针,在这里查阅了很多资料,并也借鉴了前辈们的很多程序。二、问题分析对于闰年的判断,能被4整除但不能被1

5、00整除,或者能被400整除的年份为闰年,否则为平年。日期的查询,就是直接打印改天所在月份的月历。程序难点在于判断星期,但根据公式,我们可以很容易地用年月日推断出星期: weekday=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;其中year:要查询的年份day:从该年的一月一日起到该天的天数weekday:得出的星期数。在打印月历时,只要知道第一天的星期,就可以依次输入后面的日期,通过一定长度输出日期,在遇到某天时星期天时,就换行输出,因此可以按照月历的格式输出。对于初始输入当前系统时间,可以通过中的time 和lo

6、caltime函数取出系统时间进行初始化。判断日期是否合法,if(year=3000|year=12|month=31|day=0)system(CLS);printf( 输入错误,系统及即将返回!);Sleep(3000);goto tz;可以先判断年月日是否有小于0的值,月和日是否有超出最大值12和31 ,如果通过此判断合法,再判断是否时闰年,如果时闰年,则判断二月份是否满足要求,闰年二月份不能超过29天,平年二月份不能超过28天。在查询过程中,如果发现输入不合法或者不满足输入要求,则提示错误,并返回主菜单。三、程序总体设计及功能结构框图(一)功能结构框图系统时间显示主菜单星期查询输出年历

7、输出月历闰年判断欢迎使用(二)程序设计头文件:#include/标准输入输出函数#include/清屏函数system()#include/延时函数Sleep()#include /调用系统时间函数time()在程序中运用了大量的自定义函数,都涉及为了使程序更简介明了。其中有:int isLeapYear(int year)/判断是否为闰年void hy()/欢迎信息;void Time() /获取系统时间;int whichWeekday(int year, int month, int day)/判断某天为星期几;void yearMonth(int year, int month)/打印

8、某年某月的月历;void monthDay(int year)/输入年份,打出个月历;void menu()/主菜单;void main()/主函数;这些函数的定义及其相应的内部程序共同构筑起了这个万年历查询系统的总程序。其中isLeapYear函数是用来判断输入的年份是否为闰年,实现了预计功能的第一个方面;whichWeekday函数则是为了实现判断星期而编写的;yearMonth函数则是为了实现月历而编写的;Time()函数则是为调用系统时间而编写,该Time()函数采用指针形式定义了*week数组和*tp变量;yearMonth,monthDay 这两个函数的共同使用就能够完成输出年历的

9、功能。四、程序流程图(一)总流程图开始计算是否为闰年计算星期数按键1?按键3和44输出是否为闰年输出星期数计算编辑接收到的数据输出具体年历和月历按键5?是是是是计算是否为闰年计算星期数按键2?是是是计算是否为闰年计算星期数是是是是结束 退出(二)算法说明1. 总天数的算法:isLeapYear函数的使用,判断出了输入年份是否为闰年的信息。判断一年是否为闰年的方法是:该年分而能被4整除但不能被100整除,或者是能被400整除。判断是否为闰年的流程图:2.输入日期计算星期几:利用whichWeekday函数可以判断出星期,然后对于输入的日期可以通过公式weekday=(day+2*month+3*

10、(month+1)/5+year+year/4-year/100+year/400)%7计算就可以输出相应的星期数。int whichWeekday(int year, int month, int day)/判断某天为星期几int weekday;if (month = 1 | month = 2)/公式中要把月和月换成是上一年的月和月 month += 12; year -= 1; weekday=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7; /计算星期的公式return weekday+1;3. 对输入信息的汇总

11、:void yearMonth(int year, int month)/打印某年某月的月历,void monthDay(int year)/输入年份,打出个月历;通过这两个函数可以将输入数据的具体信息通过完整日历的形式表示出来。void yearMonth(int year, int month)/打印某年某月的月历int i,j=0;int weekday;/计算这个月第一天是星期几weekday = whichWeekday(year, month, 1);printf(n %d年%d月n,year,month);printf(-n);printf( 星期一星期二星期三星期四星期五星期六

12、星期天n);if(isLeapYear(year) & month = 2)days1 = days1 + 1;printf();for(i = 1; i weekday; i +)printf( );for(i = 0; i 8 - weekday; i +)printf(%6d, i+1);printf( );printf(n);for(i = 9-weekday; i = daysmonth-1; i +,j+)if(j = 7)j = 0;printf(n);printf(%6d , i);printf(n-n);void monthDay(int year)/输入年份,打出个月历in

13、t i;for(i = 0; i 12; i +)yearMonth(year,i+1);printf(nn);五、源程序代码#include/标准输入输出函数#include/清屏函数system()#include/延时函数Sleep()#include /调用系统时间函数time()int days12=31,28,31,30,31,30,31,31,30,31,30,31;/每月的天数,闰年二月要加int isLeapYear(int year)/判断是否为闰年if(year%4 = 0 & year%100 != 0 | year%400 = 0) return 1;else ret

14、urn 0;void hy()/欢迎信息printf(n 欢迎使用万年历查询系统nn); Sleep(700);/延时毫秒printf( 祝您每天好心情!nnn); Sleep(1000);printf( 版本:v2.0nnn);Sleep(1000);printf( 正在进入功能菜单,请稍候n);Sleep(5000);/延时秒void Time() /获取系统时间 time_t t;struct tm *tp;static char *week=一,二,三,四,五,六,日;t=time(NULL);tp=localtime(&t);printf(t n);printf(tt 系统时间日期:

15、%d年%d月%d日,tp-tm_year+1900,tp-tm_mon+1,tp-tm_mday); printf( %d:%d:%d ,tp-tm_hour,tp-tm_min,tp-tm_sec);printf(星期%sn,week(tp-tm_wday)-1);printf(t n);int whichWeekday(int year, int month, int day)/判断某天为星期几int weekday;if (month = 1 | month = 2)/公式中要把月和月换成是上一年的月和月 month += 12; year -= 1; weekday=(day+2*mo

16、nth+3*(month+1)/5+year+year/4-year/100+year/400)%7; /计算星期的公式return weekday+1;void yearMonth(int year, int month)/打印某年某月的月历int i,j=0;int weekday;/计算这个月第一天是星期几weekday = whichWeekday(year, month, 1);printf(n %d年%d月n,year,month);printf(-n);printf( 星期一星期二星期三星期四星期五星期六星期天n);if(isLeapYear(year) & month = 2)

17、days1 = days1 + 1;printf();for(i = 1; i weekday; i +)printf( );for(i = 0; i 8 - weekday; i +)printf(%6d, i+1);printf( );printf(n);for(i = 9-weekday; i = daysmonth-1; i +,j+)if(j = 7)j = 0;printf(n);printf(%6d , i);printf(n-n);void monthDay(int year)/输入年份,打出个月历int i;for(i = 0; i =3000|year=3000|year=

18、12|month=31|day=3000|year=3000|year=12|month0)system(CLS);printf( 输入错误,系统及即将返回!);Sleep(3000);goto tz;yearMonth(year,month);if(isLeapYear(year) & month = 2)/如果年份为闰年,则月加天days1 = days1 + 1;printf(提示:n如继续运行请按n如回首菜单请按n如退出请按n请选择:);ch=getch();if(ch=1) goto t4;if(ch=2)goto tz;if(ch=0)exit(0);break;case 5:pr

19、intf(n是否确定退出?n);printf(确定请按,取消请按);ch=getch();if(ch = 2)goto tz;elseprintf();exit(0);/退出break;default:system(CLS);printf(您的输入的指令有误,请重新输入!nn);printf(提示:n如回首菜单请按n如退出请按n请选择:); ch=getch(); if(ch=1)goto tz;if(ch=0)exit(0);break;六、使用说明运行程序,首先进入欢迎界面,等待3秒后,进入主菜单界面,可看到以下界面 系统时间日期:2014年6月10日 16:55:14 星期二 - 万年历

20、查询系统 * * 1、输入年份,判断是否为闰年 * * 2、输入年月日,判断该日为星期几 * * 3、输入年份,打出12个月历 * * 4、输入月份,打出该月的日历 * * 5、退出 * * 请输入对应操作:1、在“请输入对应操作:”后面输入功能序号,如需“输入年份,判断是否为闰年”,请输入“1”,其他功能雷同。2、进入附属界面后会出现以下界面:请输入年份,确定按回车(格式:2014):3、可在“请输入年份,确定按回车(格式:2014):”语句后输入年份”2014”,会出现下面界面:请输入年份,确定按回车(格式:2014):2014 2014年不是闰年。提示:如继续运行请按1如回首菜单请按2如退出请按0请选择:4、可在“请选择:”后面填写序号,即可得到相应的提示功能。5、 其他功能做法于上相同,就不一一赘述。七、个人心得(略)八、参考文献1谭浩强。C程序设计(第四版).:清华大学,20102杜 恒。C程序程序设计(理实一体化教程).:机械工业,20133部分资料来源网络,作者不详。在这里对他们表示由衷的感谢17 / 17

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服