1、_wnl;5、为类的成员函数填写代码,满足功能实现;6、运行环境:控制台应用程序的源程序;(4)得意之处:1、可以满足多功能实现,可以循环执行功能;2、可以选择每行输出的月份数;3、有欢迎界面;4、客户输入错误会有提示;5、使用了C语言的流的形式,判断闰年,提高执行速度;6、使用I/O流控制头文件iomanip.h控制月份日历的输出,更加整齐;(5)创意的技术实现(6)(7)(8) 主函数流程 判断某天是周几 判断闰年 获取天数 输出年份(9)课程设计中目前存在的问题: 无法在欢迎页面插入字符画;(10)设计实践过程中的自我感受 这是我第一次编写如此长的代码,从网上如同大海捞针似的寻找编写方法
2、,看铺天盖地的长代码,还有的程序是错的。输入的时候,没有小工具。在看着自己熬通宵打出的代码,一大串的错误,真的有些泄气。改对了执行输出结果还是错的,只好重新思考算法。不过通过这次编程我真的学会了好多,比如其他的头文件的功能;setfil()设置填充字符;setw()定义字段长度也让我真正体会到了编程的作用,爱上了编程。(11)参考文献:1吕凤翥,C+语言程序设计,清华大学出版社。实验代码:/万年历#includestdio.hiomanip.hint dayofmonth13=0,31,28,31,30,31,30,31,31,30,31,30,31; /整形数组用于储存每月的天数char m
3、onthname135=,JanFebMarAprMayJuneJulyAugSebOctNovDec; /字符型数组用于储存月份名 第一个数字用于表示字符串数(相当于行) 第二个用于表示字符串长度(相当于列)class wnlpublic: void isleapyear(int year); /判断闰年,用于输出判断结果,以流的形式 bool isleap(int year); /判断闰年,返回判断结果,用于计算天数 int getdays(int year,int month,int day); /获取据第一天天数 void weekdays(int year,int month,int
4、 day); /获取星期几 void printyear(int year); /输出年的日历 void printyearmonth(int year,int month); /输出某年某月的日历 void animal(int year); /判断某年的生肖 int getyear()return Year; /返回私有成员的值private:_wnl;void main() int choice,year,month,day; cout 欢迎来到万年历查询系统endlchoice; switch(choice) case 0:return; case 1: coutyear; _wnl.
5、isleapyear(year);break; case 2: coutyearmonthday; _wnl.weekdays(year,month,day); break; case 3:请输入您要查询的年份 格式如xxxx: _wnl.animal (year); case 4:请输入你要输出的年份xxxx: _wnl.printyear(year); case 5:请输入您要输出的年月,形如xxxx xx:month; _wnl.printyearmonth(year,month); default:cout=1000&year=9999) printf(%sn,year%(year%1
6、00?4:400)?noyes); /以C语言流的形式判断会更快一些,节省内存 else 没有按格式输入 bool wnl:isleap(int year) if(year%400=0|(year%100!=0&year%4=0) return 1; else return 0; weekdays(int year,int month,int day) if(month0&daymax) int s=getdays(year,month,day)%7; switch(s) case 0:Sunday case 1:Monday case 2:Tuesday case 3:Wednesday c
7、ase 4:Thursday case 5:Friday case 6:Saturday elseint wnl:getdays(int year,int month,int day) int i,sum=0; for(i=1;ii+) if(isleap(i) sum+=366; else sum+=365; if(isleap(year) dayofmonth2=29;i+) sum+=dayofmonthi; sum+=day; return sum;animal(int year) int n=year%12; switch(n) case 0:该年是猴年 break; case 1:
8、该年是鸡年 case 2:该年是狗年 case 3:该年是猪年 case 4:该年是鼠年 case 5:该年是牛年 case 6:该年是虎年 case 7:该年是兔年 case 8:该年是龙年 case 9:该年是蛇年 case 10:该年是马年 case 11:该年是羊年printyear(int year)输入一行输出的月份数: int choice; int s; int a3,b3; /b数组用来储存每月的天数 a数组用来临时储存那一月输出到的日期 year: int i=1; for(i=1;=12/choice;i+) /计算纵向输出几个月 for(int h=1;h=choice
9、;h+) /该循环用于输出横向月份名 int m=choice*(i-1)+h; /计算月份 coutmonthnamem for(h=1;h+)- for(int j=0;jj+)Su Mo Tu We Th Fr Sa for(j=0;j+) /这个循环是为了输出第一行,第一行都是单数,所以提出来输 int month; month=choice*(i-1)+j+1; s=getdays(year,month,1); s=s%7; /获取每月第一天 for(int m=0;ms;m+) cout /输出月前的空 if(isleap(year) dayofmonth2=29; bj=dayo
10、fmonthmonth; /月份天数 b数组储存一个月的天数 for(int i=1;8-s;i+) /从一号开始输出setw(2) /最后那个空是为了让一位数和两位数对齐 aj=i; /a数组用来储存每一行的日期素材 /两个月份之间的空隙 for(int w=1;wbj) /如果那一行的日期数大于该月最大日期则跳出 break; coutaj if(w=7) coutbj,nbj&w!=8) /输出月份结束后的空 /为了美观 空一行printyearmonth(int year,int month)monthnamemonth -setw(6)SunMonTwosetw(6) WedThurFriSat /我觉得输出这个可以定义一个数组,用循环来做,但这样可能会使执行速度变慢 int number=getdays(year,month,1)%7; /第一天就一就相当于有一天了 for(int k=0;knumber;k+) cout for(int j=1;=max;j; if(number+j)%7=0) /周六换行
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1