C++万年历实验报告

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A、判断闰年;
B、判断某天是星期几;
C、判断某年的隶属生肖;
D、输出某年的日历;
E、输出某月的日期;
F、退出系统;
2、建立类wnl,定义类的成员函数;
void isleapyear();//判断闰年,用于输出判断结果,以流的形式
bool isleap(int year);//判断闰年,返回判断结果,用于计算天数
cout<<"继续查询请输1 "<<endl<<"退出查询请输入字符"<<endl;
int x;
cin>>x;
if(x==1)
goto loop;
}
void wnl::isleapyear(int year)
{
if(year>=1000&&year<=9999)
printf("%s\n",year%(year%100?4:400)?"no":"yes"); //以C语言流的形式判断会更快一些,节省内存
void weekdays(int year,int month,int day);//获取星期几
void printyear(int year);//输出年的日历
void printyearmonth(int year,int month);//输出某年某月的日历
void animal(int year);//判断某年的生肖
(5)创意的技术实现
(6)
(7)
(8)
主函数流程
判断闰年
获取天数
输出年份
(9)课程设计中目前存在的问题:
无法在欢迎页面插入字符画;
(10)设计实践过程中的自我感受
这是我第一次编写如此长的代码,从网上如同大海捞针似的寻找编写方法,看铺天盖地的长代码,还有的程序是错的。输入的时候,没有小工具。在看着自己熬通宵打出的代码,一大串的错误,真的有些泄气。改对了执行输出结果还是错的,只好重新思考算法。不过通过这次编程我真的学会了好多,比如其他的头文件的功能;setfil(‘’)设置填充字符;setw()定义字段长度……也让我真正体会到了编程的作用,爱上了编程。
(11)参考文献:
[1]吕凤翥,《C++语言程序设计》,清华大学出版社。
实验代码:
//万年历
#include<iostream.h>
#include<stdio.h>
#include<iomanip.h>
int dayofmonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //整形数组用于储存每月的天数
cout<<"▏判断某天是星期几请按2;▕"<<endl;
cout<<"▏判断某年的隶属生肖请按3;▕"<<endl;
cout<<"▏输出某年的日历请按4;▕"<<endl;
cout<<"▏输出某月的日期请按5;▕"<<endl;
cout<<"╲如果您要退出系统请按0;╱"<<endl;
cin>>choice;
switch(choice)
{
case 0:return;
case 1:
cout<<"输入一个年份格式如:xxxx";
cin>>year;
_wnl.isleapyear(year);break;
case 2:
{
cout<<"请输入您要查询的天数格式如xxxx xx xx";
cin>>year>>month>>day;
cout<<" ~~欢迎来到万年历查询系统~~"<<endl<<endl;
cout<<"设计人:"<<endl;
cout<<"天津职业技术师范大学\n\t\t\t设计人:张锦琪\n\n";
loop:
cout<<"╱请按序号输入您要做的工作:╲"<<endl;
cout<<"▏判断闰年请按1;▕"<<endl;
void animal(int year);//判断某年的生肖
int getyear(){Fra Baidu biblioteketurn Year;}//返回私有成员的值
int getmonth(){return Month;}
int getday(){return Day;}
3、定义私有成员:int Year,Month,Day;
else
printf("%s\n","没有按格式输入");
}
bool wnl::isleap(int year)
{
if(year%400==0||(year%100!=0&&year%4==0))
return 1;
else
return 0;
}
void wnl::weekdays(int year,int month,int day)
case 9: cout<<"该年是蛇年"<<endl; break;
case 10: cout<<"该年是马年"<<endl; break;
case 11: cout<<"该年是羊年"<<endl; break;
}
}
else
cout<<"没有按格式输入"<<endl;
}
void wnl::printyear(int year)
4、定义类的对象:_wnl;
5、为类的成员函数填写代码,满足功能实现;
6、运行环境:控制台应用程序的源程序;
(4)得意之处:
1、可以满足多功能实现,可以循环执行功能;
2、可以选择每行输出的月份数;
3、有欢迎界面;
4、客户输入错误会有提示;
5、使用了C语言的流的形式,判断闰年,提高执行速度;
6、使用I/O流控制头文件iomanip.h控制月份日历的输出,更加整齐;
cout<<endl;
for(j=0;j<choice;j++) //这个循环是为了输出第一行,第一行都是单数,所以提出来输
{
int month;
month=choice*(i-1)+j+1; //计算月份
s=getdays(year,month,1);
s=s%7; //获取每月第一天
for(int m=0;m<s;m++)
人人文库网仅提供信息存储空间仅对用户上传内容的表现方式做保护处理对用户上传分享的文档内容本身不做任何修改或编辑并不能对任何下载内容负责
《高级语言程序设计》课程设计报告
万年历程序设计
(1)课程设计名称:C++万年历设计
(2)使用工具软件:Microsoft visual C++
(3)课程设计内容简介
1、以开关语句进行执行功能的选择,这些功能分别是:
{
int n=year%12;
switch(n)
{
case 0: cout<<"该年是猴年"<<endl; break;
case 1: cout<<"该年是鸡年"<<endl; break;
case 2: cout<<"该年是狗年"<<endl; break;
case 3: cout<<"该年是猪年"<<endl; break;
for(h=1;h<=choice;h++)
cout<<"--------------------- ";
cout<<endl;
for(int j=0;j<choice;j++)
{
cout<<"Su "<<"Mo "<<"Tu "<<"We "<<"Th "<<"Fr "<<"Sa "<<" ";
}
case 6:cout<<"Saturday"<<endl;
}
}
}
}
else
cout<<"没有按格式输入"<<endl;
}
int wnl::getdays(int year,int month,int day)
{
int i,sum=0;
for(i=1;i<year;i++)
{
if(isleap(i)) sum+=366;
char monthname[13][5]={"","Jan","Feb","Mar","Apr","May","June","July","Aug","Seb","Oct","Nov","Dec"}; //字符型数组用于储存月份名第一个数字用于表示字符串数(相当于行)第二个用于表示字符串长度(相当于列)
int getyear(){return Year;} //返回私有成员的值
int getmonth(){return Month;}
int getday(){return Day;}
private:
int Year,Month,Day;
}_wnl;
void main()
{
int choice,year,month,day;
_wnl.weekdays(year,month,day);
}break;
case 3:
{
cout<<"请输入您要查询的年份格式如xxxx:";
cin>>year;
_wnl.animal (year);
}break;
case 4:
{
cout<<"请输入你要输出的年份xxxx:";
cin>>year;
a[j]=i; //a数组用来储存每一行的日期素材
_wnl.printyear(year);
}break;
case 5:
{
cout<<"请输入您要输出的年月,形如xxxx xx:";
cin>>year>>month;
_wnl.printyearmonth(year,month);
}break;
default:cout<<"输入错误"<<endl;
}
int getdays(int year,int month,int day);//获取据第一天天数
void weekdays(int year,int month,int day);//获取星期几
void printyear(int year);//输出年的日历
void printyearmonth(int year,int month); //输出某年某月的日历
{
if(year>=1000&&year<=9999)
{
cout<<"输入一行输出的月份数:";
int choice;
cin>>choice;
int s;
int a[3],b[3]; //b数组用来储存每月的天数a数组用来临时储存那一月输出到的日期
cout<<" year:"<<year<<endl;
else sum+=365;
}
if(isleap(year)) dayofmonth[2]=29;
for(i=1;i<month;i++) sum+=dayofmonth[i];
sum+=day;
return sum;
}
void wnl::animal(int year)
{
if(year>=1000&&year<=9999)
cout<<" "; //输出月前的空
if(isleap(year)) dayofmonth[2]=29;
b[j]=dayofmonth[month]; //月份天数b数组储存一个月的天数
for(int i=1;i<8-s;i++) //从一号开始输出
cout<<setw(2)<<i<<" "; //最后那个空是为了让一位数和两位数对齐
case 1:cout<<"Monday"<<endl;break;
case 2:cout<<"Tuesday"<<endl;break;
case 3:cout<<"Wednesday"<<endl;break;
case 4:cout<<"Thursday"<<endl;break;
case 5:cout<<"Friday"<<endl;break;
int i=1;
for(i=1;i<=12/choice;i++) //计算纵向输出几个月
{
for(int h=1;h<=choice;h++) //该循环用于输出横向月份名
{
int m=choice*(i-1)+h; //计算月份
cout<<" "<<monthname[m]<<" ";
}
cout<<endl;
{
if(year>=1000&&year<=9999)
{
if(month<=12&&month>=1)
{
int max=dayofmonth[month];
if(day>0&&day<max)
{
int s=getdays(year,month,day)%7;
switch(s)
{
case 0:cout<<"Sunday"<<endl;break;
case 4: cout<<"该年是鼠年"<<endl; break;
case 5: cout<<"该年是牛年"<<endl; break;
case 6: cout<<"该年是虎年"<<endl; break;
case 7: cout<<"该年是兔年"<<endl; break;
case 8: cout<<"该年是龙年"<<endl; break;
class wnl
{
public:
void isleapyear(int year); //判断闰年,用于输出判断结果,以流的形式
bool isleap(int year); //判断闰年,返回判断结果,用于计算天数
int getdays(int year,int month,int day);//获取据第一天天数
相关文档
最新文档