版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、万年历课程设计目录第1章需求分析6第2章 概要设计6第3章详细设计11第四章 运行结果及分析171.登陆界面172.显示某年全年日历173.显示某月日历18第5章课程设计心得20参考文献21第1章需求分析(1)程序运行时,首先给出四个菜单选项和输入提示:图1-1(2)用户可以通过主菜单选择不同选项。输入1,通过输入年份可显示一年每个月份的日历;输入2,通过输入年份和月份(中间以空格分开)可显示该月的日历;若输入3,通过输入年份月份和日期(中间以空格分开)可显示该日的星期;输入0,则退出查询系统。第2章 概要设计1 菜单选择界面可通过下面所示函数时现; 主要思路:通过while语句与swichc
2、ase以及if条件语句实现菜单的循环功能和不同选项的功能实现。闰年与平年的判断:代码如下: void main() int year,month,day,a,b; while(1) printf("nnnn");printf(" *nn");printf(" * * n");printf(" 欢迎进入万年历查询系统 n"); printf(" * * nn"); printf(" *nnn");printf(" 1 年历 2 月历 3 日历 4 退出n")
3、;printf(" 请输入您的选择<14>,按回车键确定: ");scanf("%d",&b); switch(b) case 1: printf("n请输入您要查的年份: "); scanf("%d",&year); a=x3(year,1,1); if(a=0) printf("错误!请您重新输入。n"); break; nianli(year); break; case 2: printf("n请输入您要查的年和月,年月之间用空格隔开: ")
4、; scanf("%d%d",&year,&month); a=x3(year,month,1); if(a=0) printf("错误!请您重新输入。n"); break; yueli(year,month); break; case 3: printf("n请输入您要查的年月日,年月日之间用空格隔开: "); scanf("%d%d%d",&year,&month,&day); a=x3(year,month,day); if(a=0) printf("错误!请
5、您重新输入。n"); break; rili(year,month,day); break; case 4: exit(0); default: printf("错误!请您重新输入。nn"); 2 显示一年的日历,可通过函数void x1()实现,思路如下:先判断输入年份是否为闰年,若为闰年,则定义二月为29天,通过调用函数判断是否为闰年及每个月的天数依次打印12个月的月份打印每个月的日历,显示个每个月的日历:printf("%2s%2s%2s%2s%2s%2s%2sn"," 星期日 "," 星期一 ",
6、" 星期二"," 星期三 "," 星期四 "," 星期五 "," 星期六 ");3 闰年的判断:计算所输入的年份是否可被4整除,若不能被整除,为平年。若可被4整除,计算此年份能否被100整除,不能被100整除则为闰年。既能被4整除,也能被100整除的年份,若也能被400整除,则为闰年,否则为平年。闰年366天,平年365天 图2-1代码:int runnian(int year) if(year%4=0&&year%100!=0|year%400=0) return 1; els
7、e return 0; 4 判断某月的天数;通过函数:int day1(int year,int month) int a12=31,28,31,30,31,30,31,31,30,31,30,31;若为闰,则二月为29天。 图2-2代码:if(runnian(year)a1=29;第3章详细设计#include<cstdlib>#include<iostream>#include<iomanip>using namespace std;int runnian(int year)/函数:判断是否闰年if(year%4=0&&year%100!
8、=0|year%400=0) /*利用函数判断输入年份是闰年还是平年*/return 1;/是则返回1值elsereturn 0;/否则返回0值int day1(int year,int month)/函数:计算输入该月份的天数int a13=0,31,28,31,30,31,30,31,31,30,31,30,31;/*定义数组确定12个月每个月的天数*/if(runnian(year) /调用闰年判断函数a2=29;/如果为闰年,则二月份天数为29,否则默认为28return amonth;/返回该月份的天数值int day2(int year,int month,int day)/函数:
9、计算从该年第一天到该天的天数 int i,sum=0; for(i=1;i<month;i+) sum+=day1(year,i);/计算今年这个月前的总天数 sum+=day;/计算今年今天距一月一号的天数 return sum;/返回从该年的第一天到该天的天数int week1(int year,int month,int day)/函数:判断该天的星期数int number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+day2(year,month,day);/蔡勒公式number%=7; /蔡勒公式return number;/返回
10、该天的星期数,可用作日历显示需要char *Week2(int number)/函数:用语文的方式输出显示星期数switch(number)/*分类一周七天*/case 0:return "星期日"case 1:return "星期一"case 2:return "星期二"case 3:return "星期三"case 4:return "星期四"case 5:return "星期五"case 6:return "星期六"default:return &q
11、uot;错误!请您重新输入。"/*不符和上面七种情况的报错提示*/void x1(int year,int month,int day)/函数:头显示:输出显示年月日int number=week1(year,month,day);/该天的星期数赋值if(runnian(year)cout<<"闰年"/*年份为闰年则输出"闰年"*/else cout<<"平年"cout<<year<<"年"<<month<<"月"
12、<<day<<"日"<<Week2(number);/*按年 月 日输出结果*/void x2(int year,int month)/函数:图表(body)显示int max,number,i,j=1;max=day1(year,month);/该月的天数的赋值number=week1(year,month,1);/该月第一天的星期数的赋值cout<<setw(8)<<"SUN"<<setw(8)<<"MON"<<setw(8)<&
13、lt;"TUE"<<setw(8)<<"WED"<<setw(8)<<"THU"<<setw(8)<<"FRI"<<setw(8)<<"SAT"<<endl;for(i=0;i<number;i+)cout<<" "/找出该月一号所在的位置while(j<=max)cout<<setw(8)<<j;if(i%7=6)pri
14、ntf("n");/判断输出是否要换行i+;j+;cout<<endl<<endl;int x3(int year,int month,int day)/函数:判断输入值的正误if(year<0|month<1|month>12|day<1|day>day1(year,month)/*当输入植出现这些情况时*/return 0;/*返回0*/elsereturn 1;/*返回1*/void nianli(int year)/函数:年历int i;printf("n");for(i=1;i<=12
15、;i+)if(runnian(year)cout<<setw(10)<<"闰年"else printf("平年");printf(" %d 年 %d 月nn",year,i);x2(year,i);void yueli(int year,int month)/函数:月历if(runnian(year)cout<<setw(10)<<"闰年"else printf("平年");printf(" %d 年 %d 月nn",year,
16、month);x2(year,month);void rili(int year,int month,int day)/函数:日历printf("n");x1(year,month,day); void main()int year,month,day,a,b;while(1)printf("nnnn");printf(" *nn");printf(" * * n");printf(" 欢迎进入万年历查询系统 n");printf(" * * nn");printf(&quo
17、t; *nnn");printf(" 1 年历 2 月历 3 日历 4 退出n");printf(" 请输入您的选择<14>,按回车键确定: ");scanf("%d",&b);switch(b)case 1:/*选择1时*/printf("n请输入您要查的年份: ");/*给出输入提示*/scanf("%d",&year);/*输入查询的年份*/a=x3(year,1,1);if(a=0)printf("错误!请您重新输入。n");/*
18、输入植异常时报错*/break;nianli(year);break;case 2:/*选择二时*/printf("n请输入您要查的年和月,年月之间用空格隔开: ");/*给出输入提示*/scanf("%d%d",&year,&month);/*输入需要查询的年 月*/a=x3(year,month,1);if(a=0)printf("错误!请您重新输入。n");break;yueli(year,month);break;case 3:/*选择3时*/printf("n请输入您要查的年月日,年月日之间用空格隔开: ");/*给出输入提示*/scanf("%d%d%d",&year,&month,&day);/*输入年 月 日*/a=x3(year,month,day);if(a=0)printf("错误!请您重新输入。n");/*输入植异常时报错*/break;rili(year,month,day);break;case 4:exit(0);default:printf("错误!请您重新输入。nn");第四章 运行结果及分析1.登陆界面 图4-1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年山东济南一中高一下学期期中化学试题含答案
- 2024-2025学年江苏百校联考高一下学期5月检测历史试题含答案
- 肝癌合并腔静脉癌栓手术护理
- 新生儿水肿的护理课件
- 胃癌病人护理专项考试试题
- 肿瘤二科用药错误防范与处理考核试题
- 2026年工业数据分析算法的轻量化部署与边缘计算融合实践
- 2026年心理咨询师认证培训协议
- 2025年AI驱动的产品设计企业定制服务
- 工地值班协议书
- 南京市2025东南大学管理和其他专技岗位招聘36人(第一批)笔试历年参考题库典型考点附带答案详解
- 2026年中国铁路上海局铁路局招聘行测试题
- 2025-2026学年广东省深圳市蛇口育才教育集团七年级(下)期中地理试卷
- 2026湖北开放大学招聘编外聘用人员10人笔试参考题库及答案解析
- 2026江苏苏州工业园区司法工作办公室辅助人员招聘4人笔试参考题库及答案解析
- 2026山东济南新旧动能转换起步区招聘40人备考题库含答案详解(完整版)
- 2026湖南湘西州农商银行系统员工招聘41人笔试参考题库及答案解析
- 2026年学习教育畏难避责、斗争精神不强问题查摆材料
- 2025年广东省东莞市初二学业水平地生会考真题试卷+解析及答案
- 体检中心耳鼻喉工作制度
- 考古勘探工岗后测试考核试卷含答案
评论
0/150
提交评论