C++万年历实验报告.docx
- 文档编号:5733511
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:17
- 大小:319.38KB
C++万年历实验报告.docx
《C++万年历实验报告.docx》由会员分享,可在线阅读,更多相关《C++万年历实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
C++万年历实验报告
《高级语言程序设计》课程设计报告
万年历程序设计
(1)课程设计名称:
C++万年历设计
(2)使用工具软件:
MicrosoftvisualC++
(3)课程设计内容简介
1、以开关语句进行执行功能的选择,这些功能分别是:
A、判断闰年;
B、判断某天是星期几;
C、判断某年的隶属生肖;
D、输出某年的日历;
E、输出某月的日期;
F、退出系统;
2、建立类wnl,定义类的成员函数;
voidisleapyear();//判断闰年,用于输出判断结果,以流的形式
boolisleap(intyear);//判断闰年,返回判断结果,用于计算天数
intgetdays(intyear,intmonth,intday);//获取据第一天天数
voidweekdays(intyear,intmonth,intday);//获取星期几
voidprintyear(intyear);//输出年的日历
voidprintyearmonth(intyear,intmonth);//输出某年某月的日历
voidanimal(intyear);//判断某年的生肖
intgetyear(){returnYear;}//返回私有成员的值
intgetmonth(){returnMonth;}
intgetday(){returnDay;}
3、定义私有成员:
intYear,Month,Day;
4、定义类的对象:
_wnl;
5、为类的成员函数填写代码,满足功能实现;
6、运行环境:
控制台应用程序的源程序;
(4)得意之处:
1、可以满足多功能实现,可以循环执行功能;
2、可以选择每行输出的月份数;
3、有欢迎界面;
4、客户输入错误会有提示;
5、使用了C语言的流的形式,判断闰年,提高执行速度;
6、使用I/O流控制头文件iomanip.h控制月份日历的输出,更加整齐;
(5)创意的技术实现
(6)
(7)
(8)
主函数流程
判断某天是周几
判断闰年
获取天数
输出年份
(9)课程设计中目前存在的问题:
无法在欢迎页面插入字符画;
(10)设计实践过程中的自我感受
这是我第一次编写如此长的代码,从网上如同大海捞针似的寻找编写方法,看铺天盖地的长代码,还有的程序是错的。
输入的时候,没有小工具。
在看着自己熬通宵打出的代码,一大串的错误,真的有些泄气。
改对了执行输出结果还是错的,只好重新思考算法。
不过通过这次编程我真的学会了好多,比如其他的头文件的功能;setfil(‘’)设置填充字符;setw()定义字段长度……也让我真正体会到了编程的作用,爱上了编程。
(11)参考文献:
[1]吕凤翥,《C++语言程序设计》,清华大学出版社。
实验代码:
//万年历
#include
#include
#include
intdayofmonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//整形数组用于储存每月的天数
charmonthname[13][5]={"","Jan","Feb","Mar","Apr","May","June","July","Aug","Seb","Oct","Nov","Dec"};//字符型数组用于储存月份名第一个数字用于表示字符串数(相当于行)第二个用于表示字符串长度(相当于列)
classwnl
{
public:
voidisleapyear(intyear);//判断闰年,用于输出判断结果,以流的形式
boolisleap(intyear);//判断闰年,返回判断结果,用于计算天数
intgetdays(intyear,intmonth,intday);//获取据第一天天数
voidweekdays(intyear,intmonth,intday);//获取星期几
voidprintyear(intyear);//输出年的日历
voidprintyearmonth(intyear,intmonth);//输出某年某月的日历
voidanimal(intyear);//判断某年的生肖
intgetyear(){returnYear;}//返回私有成员的值
intgetmonth(){returnMonth;}
intgetday(){returnDay;}
private:
intYear,Month,Day;
}_wnl;
voidmain()
{
intchoice,year,month,day;
cout<<"~~欢迎来到万年历查询系统~~"< cout<<"设计人: "< cout<<"天津职业技术师范大学\n\t\t\t设计人: 张锦琪\n\n"; loop: cout<<"╱请按序号输入您要做的工作: ╲"< cout<<"▏判断闰年请按1;▕"< cout<<"▏判断某天是星期几请按2;▕"< cout<<"▏判断某年的隶属生肖请按3;▕"< cout<<"▏输出某年的日历请按4;▕"< cout<<"▏输出某月的日期请按5;▕"< cout<<"╲如果您要退出系统请按0;╱"< cin>>choice; switch(choice) { case0: return; case1: cout<<"输入一个年份格式如: xxxx"; cin>>year; _wnl.isleapyear(year);break; case2: { cout<<"请输入您要查询的天数格式如xxxxxxxx"; cin>>year>>month>>day; _wnl.weekdays(year,month,day); }break; case3: { cout<<"请输入您要查询的年份格式如xxxx: "; cin>>year; _wnl.animal(year); }break; case4: { cout<<"请输入你要输出的年份xxxx: "; cin>>year; _wnl.printyear(year); }break; case5: { cout<<"请输入您要输出的年月,形如xxxxxx: "; cin>>year>>month; _wnl.printyearmonth(year,month); }break; default: cout<<"输入错误"< } cout<<"继续查询请输1"< intx; cin>>x; if(x==1) gotoloop; } voidwnl: : isleapyear(intyear) { if(year>=1000&&year<=9999) printf("%s\n",year%(year%100? 4: 400)? "no": "yes");//以C语言流的形式判断会更快一些,节省内存 else printf("%s\n","没有按格式输入"); } boolwnl: : isleap(intyear) { if(year%400==0||(year%100! =0&&year%4==0)) return1; else return0; } voidwnl: : weekdays(intyear,intmonth,intday) { if(year>=1000&&year<=9999) { if(month<=12&&month>=1) { intmax=dayofmonth[month]; if(day>0&&day { ints=getdays(year,month,day)%7; switch(s) { case0: cout<<"Sunday"< case1: cout<<"Monday"< case2: cout<<"Tuesday"< case3: cout<<"Wednesday"< case4: cout<<"Thursday"< case5: cout<<"Friday"< case6: cout<<"Saturday"< } } } } else cout<<"没有按格式输入"< } intwnl: : getdays(intyear,intmonth,intday) { inti,sum=0; for(i=1;i { if(isleap(i))sum+=366; elsesum+=365; } if(isleap(year))dayofmonth[2]=29; for(i=1;i sum+=day; returnsum; } voidwnl: : animal(intyear) { if(year>=1000&&year<=9999) { intn=year%12; switch(n) { case0: cout<<"该年是猴年"< case1: cout<<"该年是鸡年"< case2: cout<<"该年是狗年"< case3: cout<<"该年是猪年"< case4: cout<<"该年是鼠年"< case5: cout<<"该年是牛年"< case6: cout<<"该年是虎年"< case7: cout<<"该年是兔年"< case8: cout<<"该年是龙年"< case9: cout<<"该年是蛇年"< case10: cout<<"该年是马年"< case11: cout<<"该年是羊年"< } } else cout<<"没有按格式输入"< } voidwnl: : printyear(intyear) { if(year>=1000&&year<=9999) { cout<<"输入一行输出的月份数: "; intchoice; cin>>choice; ints; inta[3],b[3];//b数组用来储存每月的天数a数组用来临时储存那一月输出到的日期 cout<<"year: "< inti=1; for(i=1;i<=12/choice;i++)//计算纵向输出几个月 { for(inth=1;h<=choice;h++)//该循环用于输出横向月份名 { intm=choice*(i-1)+h;//计算月份 cout<<""< } cout< for(h=1;h<=choice;h++) cout<<"---------------------"; cout< for(intj=0;j { cout<<"Su"<<"Mo"<<"Tu"<<"We"<<"Th"<<"Fr"<<"Sa"<<""; } cout< for(j=0;j { intmonth; month=choice*(i-1)+j+1;//计算月份 s=getdays(year,month,1); s=s%7;//获取每月第一天 for(intm=0;m cout<<"";//输出月前的空 if(isleap(year))dayofmonth[2]=29; b[j]=dayofmonth[month];//月份天数b数组储存一个月的天数 for(inti=1;i<8-s;i++)//从一号开始输出 cout< (2)< a[j]=i;//a数组用来储存每一行的日期素材 cout<<"";//两个月份之间的空隙 } cout< for(intw=1;w<=5;w++)//一个月最多会在五个星期出现 { for(j=0;j { intw=1; for(w=1;w<=7;w++,a[j]++)//依次输出日期 { if(a[j]>b[j])//如果那一行的日期数大于该月最大日期则跳出 break;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 万年历 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)