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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

c万年历系统课程设计报告.docx

1、c万年历系统课程设计报告学号2016-2017学年 第2学期 1608220203高级语言程序课程设计课程设计报告题目: 万年历系统专业: 网络工程(对口)班级: 16(3)姓名: 代应豪指导教师: 代美丽成绩:计算机学院2017年4月25日目 录1.设计内容及要求 21.1 课程设计的内容 21.2 课程设计的要求 22.概要设计 32.1 系统总体设计 32.2功能模块设计 33.设计过程或程序代码 43.1算法提示: 43.2程序源代码 54.设计结果与分析 154.1设计结果 154.2 程序分析 181.设计内容及要求1.1 课程设计的内容设计编写一个C程序“万年历”。 本程序是一个

2、万年历程序,可以查询1901年到9999年中任意一天是星期几,只要在运行程序时按照要求输入年,月,日,程序就会把这一天是星期几显示在屏幕上;也可以输入一个年份和一个月份,程序就会把该月份的月历显示在屏幕上,使人一目了然。1.2 课程设计的要求1:程序的功能多样;2:输入日期能够判断该日期是星期几;3:输入一个年份能够显示出该年的全部月历;4:输入一个年月能够显示该月的月历;5:输入一个年份能够判断该年是闰年还是平年;6:能够退出。2.概要设计2.1 系统总体设计 通过此次课程设计可以复习巩固C语言的基础知识的同时,进一步加深对C语言的理解和掌握。主要的设计思想是通过不同的函数模块来实现并调用的

3、,将不同的数据结构组成一个整体就是此次设计的系统概要。2.2功能模块设计本系统包括4个模块,分别是闰年判断模块、星期计算模块、月历查询模块和打印整年日历模块。(1)闰年判断模块。该模块用于输入一个年份能够判断该年是闰年还是平年。(2)星期计算模块。该模块主要是输入日期能够判断该日期是星期几。(3)月历查询模块。该模块是系统的核心模块,是用来显示指定日期所在月份的月历,包括打印指定个数的空格、打印分隔线。(4)打印整年日历模块。该模块用于输入一个年份能够显示出该年的全部月历3.设计过程或程序代码3.1算法提示:1.功能结构框图: 2.闰年的判断:计算所输入的年份是否可被4整除,若不能被整除,为平

4、年。若可被4整除,计算此年份能否被100整除,不能被100整除则为闰年。既能被4整除,也能被100整除的年份,若也能被400整除,则为闰年,否则为平年。闰年366天,平年365天 3.2程序源代码#include #include char *NameOfMonth12=January,February,March,April,May,June,July,August,September,October,November,December;char *WeekDay7=星期日,星期一,星期二,星期三,星期四,星期五,星期六;int IsLeapYear (int year) if(year%4

5、=0&year%100!=0|year%400=0) return 1;/闰年返回1 else return 0;/平年返回0 int DateCheck(int uYear,int uMonth,int uDay)/合法返回true,非法或超出范围返回false if (uYear9999|uMonth12|uDay31) return 0; if (uMonth=4|uMonth=6|uMonth=9|uMonth=11) if (uDay30) return 0; else if (uMonth=2) if (IsLeapYear(uYear) if (uDay29) return 0;

6、 else if (uDay28) return 0; return 1;int GetDays (int year,int month,int day) int sum=0; if (DateCheck(year,month,day)=0) return -1;/日期有误 if(year=1901) int X=(int)(year/100);/世纪数 int Y=X-(int)(X/4);/如果按4年一闰来算,Y指的是比实际上多算的天数,在下面需要减去 if (month0) year-;/把1月、2月视为上一年的13月、14月(纯粹为了计算需要) month+=12; sum=(int)

7、(365.25*(year-1900)+(int)(30.6*(month+1)+day-Y-49;/以365.25(本来实际太阳年是365.2425天)来计算是为了计算按4年一闰的整数年总天数,加上月份天数再加上余下天数,减掉多闰天数,再减掉一个偏差值(多加的) /月份以30.6天的平均值计算。最后减去的49,是多加的一个月以及其余相差天数的和,可得到1900年1月1日的积日为0 return sum;/返回距离1900年1月1日的总天数(积日)int GetDayOfMonth(int month,int year) int tmp_days=GetDays(year,month,1);/

8、本月积日 int DayOfMonth=0; month+;/下个月 if (month12) month=1;/遇到月份为12月的情况,月份为1,年份加1 year+; DayOfMonth=GetDays(year,month,1);/下个月的积日 DayOfMonth-=tmp_days;/下月1日的总天数(距离1900年1月1日的积日)减去当前月1日的总天数 return DayOfMonth;/返回当前月总天数int ShowCalendar(int year,int month,int day) int i,j,count; int jiri=0;/积日 int dayofweek

9、=0;/星期 if (DateCheck(year,month,day)=0) printf(输入日期有误!rn);/日期不合法或超出范围,年历从1901年开始 return 0; printf(t %d %srn,year,NameOfMonthmonth-1); printf(-rn); printf( Sun Mon Tue Wed Thu Fri Satrn); printf(-rn); jiri=GetDays(year,month,1);/获取距离1900年1月1日的总天数 dayofweek=(1+jiri)%7;/月首星期,因为1900年1月1日星期一 count=GetDay

10、OfMonth(month,year); for(i=0;idayofweek;i+) printf( );/填充前面空格 for(i=1,j=dayofweek;i=count;i+,j+) if (i); scanf(%d,&nChoise); switch (nChoise) case 1: printf(请输入要判断的年份:Year); scanf(%d,&year); if (year9999) printf(输入年份超出范围!); break; if (IsLeapYear(year)=1) printf(%d年是闰年!rnrn,year); else printf(%d年不是闰年

11、!rnrn,year); break; case 2: printf(请输入要判断的日期:Year Month Day); scanf(%d %d %d,&year,&month,&day); totaldays=GetDays(year,month,day); printf(%d年%d月%d日是%srnrn,year,month,day,WeekDay(totaldays+1)%7); break; case 3: printf(请输入要显示的月份:Year Month); scanf(%d %d,&year,&month); ShowCalendar(year,month,1); brea

12、k; case 4: printf(请输入要判断的年份:Year); scanf(%d,&year); for (month=1;month=12;month+) ShowCalendar(year,month,1); break; default: printf(无效的菜单项!rn); break; system(pause); system(cls); return 0;4.设计结果与分析4.1设计结果1.登陆界面2.闰年判断3.星期计算4.月历查询5.打印整年日历4.2 程序分析 程序首先根据用户输入的序号,进行相关的操作,首先根据year判断是否是闰年,如果是则需要将该年2月份的天数设置为29天,接着判断day是否超过month所在月份的最大天数,如果超过则显示提示信息。然后进行星期的判断,如果输出的是该月的第一个星期,则判断该星期中还有几天在本月,输出空格。输出完第一周后,接着输出第二到第五周,每周7天。 实现思路:实现该程序一定要找准一个几点,比如找准2000年1月1日是星期几,然后在此基础上推出具体某天和这个几点之间相差多少天,然后推出该天是星期几,注意显示的时候格式要对齐。

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

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