# **万年历**
## **一、课题内容和要求:**
(1)从键盘读入要求输出日历的年份xxxx,此部分要求对读入的数据具有一定的错误检查能力,如输入的不是数字,或输入的是五位以上的年份等。
(2)根据2005年10月20日是星期四,推算出xxxx年的1月1日是星期几。
(3)对法定假节日给以标注。
(4)输出到指定文件夹下面。输出的格式如下(假设要求输出2017年的):
![](img/1.png)
(5)从系统获取当前时间。
## **二、系统功能结构示意如图所示:**
![](img/2.png)
图 2-1
功能详解:
1. 提供界面友好操作菜单:输出欢迎信息和操作菜单,用于提示用户需要选择的操作。根据用户的选项实现相应的功能。
1. 读取系统时间,打印当年年历,并打印到.Txt文档中。
1. 要求用户输入查询目标,若输入目标不在查询范围内,则系统自动清屏,并要求重新输入,直到输入正确,则执行程序。
1. 计算待求年份元旦星期数:通过求待求年份与2005年10月25日是星期四相距的总天数求出待求年份元旦的星期数。
1. 打印日历的标题和日期:可以将万年历以三月并排的形式输出,一方面使得万年历看起来美观,另一方面也确保了年历日期与星期能准确对应。
1. 选择菜单有两种,一种是选择是否打印日历,另一种是选择某一项查询功能。
## **三、概要设计**
### 1、主要类
int The\_week(int year,int month,int day); //判断某天是星期几
void print\_month(int year,int month,char array[3\*7\*6]); //输出打印某个月份
void print\_halfyear(int year,int month); //输出打印半年的年历
void Get\_time(); //获取系统时间
void print\_hello(); //欢迎界面,系统初始化等
void search\_year(); //查找年份函数
void search\_day(); //查找天函数
void file\_init(); //文件指针初始化函数
void file\_write\_month(int year,int month,char array[3\*7\*6]);
` `//在文件中写入月历
void file\_write\_halfyear(int year,int month); //在文件中写入半年的年历
int LunarCalendar(int year,int month,int day); //农历函数初始化
void lunar(int year,int month,int day); //农历函数
void lunar\_holiday(int year,int month,int day); //农历假日函数
void calendar\_holiday(); //公历假日函数
void select\_lunar\_holiday(int month,int day); //选择农历假日函数
void lunar\_holiday\_print(int year,int month); //打印农历假日函数
void draw\_yearlogo(int year); //输出打印年份logo
void write\_yearlogo(int year); //在文件中写如年份logo
void calendar\_to\_lunar\_init(int year,int month,int day);//公历转农历函数初始化
void calendar\_to\_lunar(); //公历转农历函数**
### 2、主要函数流程图
(1)类的构造函数:用于给了类的对象赋值,提示用户输入数据,并自动检查输入数据的正确性。(如图3-1)
![](img/3.png)
(2)求待求年份元旦星期函数,通过求待求年份与2005年10月25日是星期四相距的总天数求出待求年份元旦的星期数。(如图3-2)
![](img/4.png)
![](img/5.png)
## **四、程序源码**
详见Doc下文档
## **五、测试数据及其结果分析**
程序功能测试:
欢迎界面,选择查询目标
![](Aspose.Words.d5bfe527-d4ac-4dfc-994b-2e93e0163e31.043.png)
图5-1
读取系统时间:
![](Aspose.Words.d5bfe527-d4ac-4dfc-994b-2e93e0163e31.044.png)
图5-2
打印查询目标年历:
![](img/6.png)
图5-3
查询某一年的元旦是星期几:
![](img/7.png)
图5-4
![](img/8.png)
图5-5
节日查询:
![](img/9.png)
图5-6
![](img/11.png)
图5-7
![](img/12.png)
图5-8
![](img/13.png)
图5-9
![](img/14.png)
图5-10
公历转农历:
![](img/15.png)
图5-11
![](img/16.png)
图5-12
输入数字6再按回车直接退出程序。
## **六、调试过程中的问题**
一是刚开始没注意到每个人的代码变量名不一样,等到程序放一起运行的时候出现错误,后来又重新编写了一个代码,才发现这个问题。二是在打印年份输出图形的时候,刚开始是用二维数组来实现的,但是只能竖排打印不能横排打印,最后请教老师,通过三维数组的方法来解决这个问题,虽然最终解决了这个问题,但是采用的方法不太好,需要重复去写类似的代码,较繁。三是没有能够在打印的日历上面标注出节假日,只能采用笨办法单独做出一个查询节假日的功能,这个没有做好。四是农历和公历的转换我们没能想出来,只能在网上找到相关代码学习修改来用。
基于C++制作(控制台)万年历小程序【100012107】
版权申诉
171 浏览量
2023-04-28
14:03:20
上传
评论
收藏 4.7MB ZIP 举报
神仙别闹
- 粉丝: 2674
- 资源: 7640
最新资源
- docker一键安装包
- Screenshot_20240430_144340_com.ss.android.ugc.live.jpg
- 回到山沟沟.mp3
- 基于matlab实现自适应波束形成RLS及LMS算法仿真源程序1.rar
- 基于matlab实现自己编写的基于卡尔曼滤波的利用加速度传感器的计步器,测试数据是传感器放在腰部和手臂 .rar
- 基于matlab实现阵列信号处理,波束形成.rar
- 111111111111111111
- 基于matlab实现计步器编程;对当前的计步器装置的数值算法模拟 .rar
- Mdb学习查看PW;access;mdb;pw;password;patch
- 基于matlab实现关于语音信号声源定位DOA估计所用的一些传统算法.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈