




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验报告电子万年历:一、 需求分析:电子万年历系统主要实现以下单个查询功能:1、 查询某一年的日历。要求从键盘输入年份,输出该年12个月份的日历2、 查询某一天某一个月的日历。要求从键盘输入年份和月份,输出该月的日历。3、 查询某一天是星期几。要求从键盘输入年、月、日,输出这一天是星期几。二、 总体设计:1、功能模块图 万年历系统计算模块查询模块输出模块 计算模块:用于计算天数,判断闰年 输出模块:用于菜单输出和日历输出查询模块:实现查询某一年的日历。查询某一天某一个月的日历。查询某一天是星期几。三、 详细设计:1、 计算模块:计算模块主要包含3个函数:LeapYear()、CountYearDays()、CountMonthDays函数CountYearDays()功能是计算从公元元年1月1日到某年12月31日一共有多少天。CountYearDays()功能是几双当年1月1日到输入日期的前一个月的天数2、 输出模块包含2个函数:Menu()和ListMonth()函数。Menu()函数用来输出系统提供的功能选项。ListMonth()函数用来按规定格式输出一个月的日历。3、 查询模块针对系统要实现三个查询功能定义了3个函数:Search1()、 Search2()和 Search3()函数。函数Search1()用来显示一年12个月的日历,输入年份后,计算该年1月1日是星期几,然后从1月份开始一次输出每个月的日历,其中调用了函数LeapYear()、CountYearDays()和CountMonthDays()。函数Search2()用来显示某年某月的日历,输入年份和月份后,计算出该年该月1日是星期几,然后输出这个月的日历,其中调用了函数LeapYear()和CountYearDays()、CountMonthDays()和ListMonth()。 函数Search3()用来显示某天是星期几,通过调用函数LeapYear()、CountYearDays()和CountMonthDays()计算出从公元元年1月1日到这一天总共过去了多少天,用这个总天数除以7得到的余数即为答案。4、 调试与测试:在调试过程中主要的问题就是结果的显示问题,显示易错位。以及函数之间调用问题。对于这些问题,主要是翻书籍和网络上找解决方案,以及自己亲自用找到的方法去测试。最终解决问题。5、 测试结果菜单界面:功能一展示:功能二展示:功能三展示:6、 附录:程序代码:#include#include#includeint g_MonthDays 13=0,31,28,31,30,31,30,31,31,30,31,30,31; /定义全局数组/函数声明int LeapYear(int n);int CountYearDays(int year);int CountMonthDays(int month);void Menu(void);void ListMonth(int days,int t);void Search1(void);void Search2(void);void Search3(void);void main() /main函数定义int select;while(1)Menu(); /调用Menu函数,显示菜单scanf(%d,&select); /输入想选择的功能switch(select) /对select进行多分支选择case 1:Search1();break; /select=1时,调用Search1函数case 2:Search2();break;case 3:Search3();break;case 0:printf(nt谢谢使用!再见n);exit(0); /结束程序,退出系统default:(nt按键错误,请重新选择!n); /输入错误,应重新输入 /switch结束 /while结束/=/功能:判断闰年/参数:n为需要判断的年份/返回:是闰年返回1,否则返回0/主要思路:用if语句判断某一脸是否是闰年/=int LeapYear(int n)if(n%4=0&n%100=0)|n%400=0)return (1); /是闰年返回1else return (0); /不是闰年返回0/=/功能:计算从公元元年到公元(year-1)年的总天数/参数:year为年份/返回:返回总天数/主要思路:用for循环计算天数/=int CountYearDays(int year)int i,flag,days=0;for(i=0;iyear;i+)flag=LeapYear(i); /判断第i年是否为闰年if(flag) days=days+366; /是闰年加366天else days=days+365; /不是闰年应加365天return (days); /返回总的天数/=/功能:计算当年前(month-1)个月的天数/参数:month为月份/返回:返回前(month-1)个月的总天数/主要思路:用for循环计算天数/=int CountMonthDays(int month)int i,days=0;for(i=1;imonth;i+)days=days+g_MonthDaysi;return (days);/=/功能:显示系统菜单/参数:无/返回:无/主要思路:用printf函数输出菜单/=void Menu(void)printf(n);printf(t-n);printf(t* *n);printf(t* 欢迎使用万年历系统 *n);printf(t* *n);printf(t-n);printf(n);printf(t请选择您要查询的内容n);printf(t1.显示某年的日历n);printf(t2.显示某年某月的日历n);printf(t3.显示某天是星期几n);printf(t0.退出系统n);printf(t请选择按键(0-3)n);/=/功能:按规定格式输出一个月的日历/参数:days表示要输出月份的天数,t表示要输出月份的1日是星期几/返回:无/主要思路:主要采用for语句输出日历/=void ListMonth(int days,int t)int i,j; printf(星期日 星期一 星期二 星期三 星期四 星期五 星期六);for(i=1;i=days;i+)if(i=1)for(j=0;jt;j+)printf( ); /在数字1前输出9*t个空格printf( % - 7d,i);if(i+t)%7=0) printf(n);/=/功能:输出指定年份全年12月份的日历/参数:无/返回:无/主要思路:主要采用for语句循环输出每个月的日历/=void Search1(void)int year,t,k,flag,days;printf(n请输入年份:);scanf(%d,&year);flag=LeapYear(year); /调用LeapYear函数,判断Year是否为闰年t=(CountYearDays(year)+1)%7; /计算该年的第一天是星期几for(k=1;k2)mdays+; /是闰年且month大于2时,前(month-1)个月的天数加1elseif(month=2) days=29; /是闰年且month为2月,则2月份天数加1alldays=ydays+mdays+1;/计算公元元年1月1日到输入日起这个月1日的总天数t=alldays%7; /计算第month个月的第一天是星期几printf(n%d年%d月:nn,year,month);ListMonth(days,t); /输出该月日历printf(n);/=/功能:输出某一天是星期几/参数:无/返回:无/主要思路:通过调用函数计算天数,在计算并输出这一天是星期几/=void Search3(void)int t,year,month,day,flag,ydays,mdays,alldays;printf(n请输入年.月.日如(2009.3.25):);scanf(%d.%d.%d,&year,&month,&day);ydays=CountYearDays(year); /计算前(year-1)年的天数mdays=CountMonthDays(month); /计算前(month-1)个月的天数flag=LeapYear(year); /判断该年是否为闰年if(flag&month2)mdays+; /是闰年且month大于2时,则前(month-1)个月的天数加1alldays=ydays+mdays+day; /计算总天数t=alldays%7;printf(n%d年%d月%d日是,year,month,day);switch(t) /对t进行多分支选择
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业环保监理检测计划
- 小学道德与法制教研组法制宣传月活动计划
- 红薯苗采购协议合同模板
- 供应链协调进度保证措施
- 结核的影像诊断
- 高中生学习辅导专项计划
- 小班幼儿健康管理教学计划
- 新版三年级科学知识点复习计划
- 康景轩:吃出健康的智慧
- 教育教学时间轴
- 商业租户招商营运一户一档移交资料清单
- 废弃物分类、清运、处理流程图
- 电白局设备采购4开标过程评标报告
- 比和比例综合练习题及答案-
- 小学古诗词大赛-九宫格练习课件
- 医院(诊所)门诊病人登记簿表格模板
- 有限空间外包作业管理制度管理办法
- 10kV电气试验方案
- (高清正版)T-CAGHP 021—2018泥石流防治工程设计规范(试行)
- 鼎力软件操作鼎立pilot navig操作手册
- 国际篮球联合会(FIBA)标准篮球记录表.xls
评论
0/150
提交评论