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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序设计报告

(2009/2010学年第一学期)

题目:万年历查询系统

专业电气信息工程 _

学生姓名王XX

班级学号 B080510XX

指导教师张台国

指导单位计算机软件基础教学中心

日期 2009.10.30

万年历查询系统

一、课题内容和要求

万年历在现在日常生活工作学习等众多方面被广泛使用。本课题旨在以“公元2005年10月20日星期四”为已知条件编写一个基本的万年历查询系统,可以查询公元元年至公元9999年间任一年的全年日历,以双月并排显示的方式输出,并要求对用户输入的待查询数据有较强的错误检查能力。通过该课题,进一步加深对C++面向对象特性的认识,更加深层的理解了类的封装意义,较为熟练的掌握了函数调用、文件读写、对象操作等知识。

二、需求分析

功能框架图:(图2-1

功能详解:

(1)提供界面友好的操作菜单:输出欢迎信息和操作菜单,用于提示用户选择需要的操作。根据用户输入的选项实现相应的功能。

(2)进行数据的输入和错误检查:要求用户输入待查询数据,并对输入的数据执行错误检查,如果输入有误,则提示用户重新输入,直到输入正确。

(3)计算待求年份元旦的星期数:通过求出待求年份与2005年元旦相距的总天数求出待求年份元旦的星期数,为准确输出万年历奠定基础。

(4)打印日历的标题和日期:可以将万年历以双月并排的形式输出,一方面使得万年历看起来美观;另一方面,也确保了万年历日期与星期的准确对应。

(5)选择菜单:供用户选择需要继续的操作,具有较强的输入数据错误检查能力;同时实现了程序操作的循环性。

三、概要设计

1、主要类:

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(); //退出程序时显示结束信息

};

2、主要函数流程图:

(1)类的构造函数:用于给类的对象赋值。提示用户输入数据,并具有较强的错误输入数据检查功能。(参见图3-1)

(2)闰年判断函数:判断哪些年份为闰年。(图3-2)

(3)求待求年份元旦星期函数:求出待求年份元旦距离2005年元旦的总天数,进而求出待求年份元旦的星期数。(图3-3,其中Week[0]代表元旦星期数)

四、程序源码

#include

#include

#include

#include

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

相关文档
最新文档