ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:65.95KB ,
资源ID:4844624      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4844624.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言课程设计报告万年历最详细doc.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、c语言课程设计报告万年历最详细docC语言课程设计报告 -万年历设计人:贾伟涛学号:2013010912班级:13电信应电班指导老师:张伟日期: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, 3

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

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

6、系统时间,可以通过中的time 和localtime函数取出系统时间进行初始化。判断日期是否合法,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 yearMo

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

9、nthDay 这两个函数的共同使用就能够完成输出年历的功能。四、程序流程图(一)总流程图(二)算法说明1. 总天数的算法:isLeapYear函数的使用,判断出了输入年份是否为闰年的信息。判断一年是否为闰年的方法是:该年分而能被4整除但不能被100整除,或者是能被400整除。判断是否为闰年的流程图:2.输入日期计算星期几:利用whichWeekday函数可以判断出星期,然后对于输入的日期可以通过公式weekday=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7计算就可以输出相应的星期数。int whichWeekday(i

10、nt 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. 对输入信息的汇总:void yearMonth(int year, int month)/打印某年某月的月历,void monthDay(int year)/输入

11、年份,打出个月历;通过这两个函数可以将输入数据的具体信息通过完整日历的形式表示出来。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) days1 = days1 + 1; printf

12、( ); 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 12; i +) yearMonth(year,i+1

13、); 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 return 0; void hy()/欢迎信息 printf(n 欢迎使用万年历查

14、询系统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 系统时间日期:%d年%d月%d日,tp-tm_year+1900,

15、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*month+3*(month+1)/5+year

16、+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) days1 = day

17、s1 + 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=30

18、00|year=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) e

19、xit(0); break; case 5: printf(n 是否确定退出?n); printf( 确定请按,取消请按); ch=getch(); if(ch = 2) goto tz; else printf( ); 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秒后,进入主菜单界面,可看到以下界面

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1