




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机学院 高级语言课程名称课程设计报告学号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 程序分析1811.设计内容及要求1.1 课程设计的内容设计编写一个C程序“万年历”。 本程序是一个万年历程序,可以查询1901年到9999年中任意一天是星期几,只要在运行程序时按照要求输入年,月,日,程序就会把这一天是星期几显示在屏幕上;也可以输入一个年份和一个月份,程序就会把该月份的月历显示在屏幕上,使人一目了然。1.2 课程设计的要求1:程序的功能多样;2:输入日期能够判断该日期是星期几;3:输入一个年份能够显示出该年的全部月历;4:输入一个年月能够显示该月的月历;5:输入一个年份能够判断该年是闰年还是平年;6:能够退出。2.概要设计2.1 系统总体设计 通过此次课程设计可以复习巩固C语言的基础知识的同时,进一步加深对C语言的理解和掌握。主要的设计思想是通过不同的函数模块来实现并调用的,将不同的数据结构组成一个整体就是此次设计的系统概要。2.2功能模块设计本系统包括4个模块,分别是闰年判断模块、星期计算模块、月历查询模块和打印整年日历模块。(1)闰年判断模块。该模块用于输入一个年份能够判断该年是闰年还是平年。(2)星期计算模块。该模块主要是输入日期能够判断该日期是星期几。(3)月历查询模块。该模块是系统的核心模块,是用来显示指定日期所在月份的月历,包括打印指定个数的空格、打印分隔线。(4)打印整年日历模块。该模块用于输入一个年份能够显示出该年的全部月历3.设计过程或程序代码3.1算法提示: 开始 闰年判断 输入指令 显示整年年历 月历查询 星期查询1.功能结构框图: 2.闰年的判断:计算所输入的年份是否可被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=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; 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)(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);/本月积日 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=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=GetDayOfMonth(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年不是闰年!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); break; 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026届福建省南平市第一中学化学高二第一学期期中质量检测试题含解析
- 甘肃省庆阳长庆中学陇东中学分校2026届化学高三上期中综合测试试题含解析
- 2026届天津市武清区等五区县高一化学第一学期期末联考试题含解析
- 现代文学鉴赏课件
- 2025年春季英语四六级写作高分策略与实战演练试卷
- 现代女性健康知识培训课件
- 2025年Python二级考试模拟试卷 实战演练知识点精讲
- 王波培训知识产权贯标课件
- 重庆市七校2026届化学高一上期中监测模拟试题含解析
- 王亚林律师课件
- 剪映剪辑教学课件
- 麦当劳营销策略分析及对策建议定稿
- 全陪导游工作流程
- 2025年心理辅导:声音疗愈《听听声音》课件设计
- 2025年七年级上册生物知识点总结样本(2篇)
- 变化与更新-2025中国家居家装行业发展研究报告-树懒生活fine-202501
- 主要施工机械设备、劳动力、设备材料投入计划及其保证措施
- 《柴油机的维护保养》课件
- 4S店企业职业卫生培训
- 石油化工设备维护与检修手册
- 2023部编新人教版五年级(上册)道德与法治全册教案
评论
0/150
提交评论