当前位置:文档之家› CC++程序设计——万年历(完整代码+实验报告)

CC++程序设计——万年历(完整代码+实验报告)


2、主要函数流程图: (1)类的构造函数:用于给类的对象赋值。提示用户输入数据,并具有较强的错误输 入数据检查功能。(参见图 3-1) (2)闰年判断函数:判断哪些年份为闰年。 (图 3-2)
正文 第 2 页(共 18 页)
开 始
开 始
year%4==0

输入待查询的 年份


year%100==0
* ","***** ","***** ","***** ","***** ","***** "," * ","***** ","***** "," * ","***** ","***** ","
"***** ","
=====================公元"<<year<<"年日历====================="<<endl; =====================公元"<<year<<"年日历====================="<<endl;
/*实现 3 维数组图案的输出*/ for(int g=0;g<5;g++) { cout<<" fout<<" for(int i=0;i<4;i++) for(int h=0;h<7;h++) { cout<<ss[g][num[i]][h]; fout<<ss[g][num[i]][h]; } cout<<endl; fout<<endl; } }
否 判断输入


是闰年
结 束
return 1
不是闰年 return 0
图 3-1
结 束 图 3-2
开 始 是 否
year>=2005
n=(year-2005)*365
n=(2005-year)*365
year 为闰年 是 n=n+1


year 为闰年 是 n=n+1
三、概要设计
1、主要类:
class Data { private: int Week[12]; int year; public: Data(); int Getyear(); void FirstDayOfYear(int); void FirstDayOfMonth(int); int IsLeapyear(int); void PrintYear(int); void PrintTitle(int); void PrintMonth(int); void PrintForm(int); void ChooseMenu(); void PrintThanks(); };
"; ";
/*函数功能: 控制日历的输出格式,使日历能够以每两个月并排的方式输出 函数参数: 整型变量 n,存放当前打印的月份 函数返回值:无返回值*/ void Data::PrintForm(int n) { if(n%2) //如果是单月,则输出空格 { cout<<" "; fout<<" "; } else //若为双月,则输出回车换行 { cout<<endl; fout<<endl; }
程序设计报告
(2009/2010 学年第一学期)

目:
万年历查询系统
专 学 班 指 指 日 生 级 导 导 姓 学 教 单
业 名 号 师 位 期
电气信息工程 王 XX B080510XX 张台国
_
计算机软件基础教学中心 2009.10.30
-
评分项 遵守机房规章制度
优秀
良好
中等


上机时的表现 学习态度 程序准备情况
正文 第 5 页(共 18 页)
{ int m=year/1000; //m 代表待查询年份的千位数字 int n=(year/100)%10; //n 代表待查询年份的百位数字 int p=(year/10)%10; //p 代表待查询年份的十位数字 int q=year%10; //q 代表待查询年份的各位数字 int num[4]={m,n,p,q}; //数组 num 用于存放年份的千、十、百、个位数 /*3 维数组 ss 用于存放由*组成的 0~9 这 10 个数字的图案,其中 5 表示行,7 表示列*/
正文 第 6 页(共 18 页)
} /*函数功能: 打印每个月日历的表头部分信息,并为每两个月并列显示 函数参数: 整型变量 n,存放待打印月份 函数返回值:无返回值*/ void Data::PrintTitle(int n) { do{ string ss[12]={" Jan "," Feb " Mar "," Apr " May "," June " July "," Aug " Sept "," Oct " Nov "," Dec cout<<ss[n-1]; fout<<ss[n-1]; PrintForm(n); //调用 PrintForm()函数控制日历输出格式 n++; }while(!(n%2)); //输出月份标题,每行打印两个月份标题 do{ cout<<"____________________________ "; fout<<"____________________________ "; PrintForm(n); //调用 PrintForm()函数控制日历输出格式 n++; }while(!(n%2)); //在相应的月份标题下打印横线 do{ cout<<" Sun Mon Tue Wed Thu Fri Sat "; fout<<" Sun Mon Tue Wed Thu Fri Sat "; PrintForm(n); //调用 PrintForm()函数控制日历输出格式 n++; }while(!(n%2)); //在相应的横线下面打印对应的星期标题 } /*函数功能: 打印每个月日历的详细日期,并按照每两个月并排的方式显示 函数参数: 整型变量 mon,存放待打印月份 函数返回值:无返回值*/ void Data::PrintMonth(int mon) { int CurDay[2]; //CurrentDay,储存每两个月中当前打印的日期 do{ int k=0; for(;k<Week[mon-1];k++) //使每个月的一号与星期对应 { cout<<" ";
char ss[5][10][7]= {"***** "," "* "* "* cout<<"\n fout<<"\n * "," * "," * "," * ","***** ","***** ","* * "," * ","* * "," "," * ","* * "," * ","***** ","***** ","***** ","***** ","***** ", * ","* * "," ","* * ","* "," * "," * ","* * ","* * ","* * "," * ", * ", * ","***** ","***** ", * ","***** ","***** ",};
//用于储存每个月 1 号为星期几 //用于存放用户输入的年份 //类 Data 的构造函数 //获取用户输入的年份 //求出任意一年元旦的星期数 //求出任意年份的每个月一号的星期数 //判断是否为闰年 //显示年份图案 //输出每个月日历的标题部分 //打印月份日历 //使日历按照每两个月并排的方式输出 //显示选择操作界面,实现程序的循环 //退出程序时显示结束信息
Week[0]=(n+1)%7-2
Week[0]=7-(n+1)%7
结 束
图 3-3
正文 第 3 页(共 18 页)
(3)求待求年份元旦星期函数:求出待求年份元旦距离 2005 年元旦的总天数,进而求 出待求年份元旦的星期数。 (图 3-3,其中 Week[0]代表元旦星期数)
四、程序源码
#include<iostream> #include<fstream> #include<iomanip> #include<string> using namespace std; ofstream fout("万年历_执行结果.txt"); //文件输出到“万年历_执行结果.txt 文件中” const int Year=2005; //const 符号常量,代表 2005 年 int MonNum[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //储存每月的天数 void PrintWelcome(); //顶层函数,用于开始执行程序时输出欢迎信息 class Data { private: int Week[12]; //用于储存每个月 1 号为星期几 int year; //用于存放用户输入的年份 public: Data(); //类 Data 的构造函数 int Getyear(); //获取用户输入的年份 void FirstDayOfYear(int); //求出任意一年元旦的星期数 void FirstDayOfMonth(int); //求出任意年份的每个月一号的星期数 int IsLeapyear(int); //判断是否为闰年 void PrintYear(int); //显示年份图案 void PrintTitle(int); //输出每个月日历的标题部分 void PrintMonth(int); //打印月份日历 void PrintForm(int); //使日历按照每两个月并排的方式输出 void ChooseMenu(); //显示选择操作界面,实现程序的循环 void PrintThanks(); //退出程序时显示结束信息 }; void main() { static int i=0; //静态全局变量 i,控制 PrintWelcome()只输出一次 if(!i++) PrintWelcome(); //调用顶层函数,输出欢迎信息 Data data; //定义类 Data 的对象 data int yy=data.Getyear(); data.PrintYear(yy); data.FirstDayOfYear(yy); data.ChooseMenu(); } /*函数功能: 判断输入的年份是否为闰年,如果是则返回 1,否则返回 0
相关主题