c++课程设计(日历)
今天比较无聊,就随便找了个程序设计来做,下面是源代码,以及效果图...不喜请喷!
/*题目1:年历显示。
功能要求:
(1) 输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。
(2) 输入年月,输出该月的日历。
(3) 输入年月日,输出距今天还有多少天,星期几,是否是公历节日。
*/
//日历
// Coder @Gxjun 2014/3/30/10:35
#include<iostream>
#include<ctime>
#include<string>
#include<iomanip>
using namespace std;
namespace isprimer
{
int ren[]={,,,,,,,,,,,,} ; //是闰年
int pin[]={,,,,,,,,,,,,} ;
}
namespace mon
{
int ren_month[]={,,,,,,,,,,,,};
int pin_month[]={,,,,,,,,,,,,};
}
bool isprim(int year)
{
if(year%==||(year%==&&year%!=))
return true;
return false;
}
void print(int month,int weekly,int tol_day)
{ int k=;
cout.width();
cout<<month<<" SUN MON TUE WED THU FRI SAT"<<endl;
cout<<" ";
int kongge=weekly%;
while(kongge)
{
cout<<" ";
kongge--;
}
for(k=;k<=tol_day ;k++)
{
cout<<setw()<<setiosflags(ios::right)<<k<<" ";
if(weekly%==)
cout<<endl<<" ";
weekly++;
}
cout<<endl;
}
class Calender
{
public :
Calender(){};
Calender(int y):year(y){};
Calender(int y,int m): year(y),month(m){};
Calender(int y,int m,int d): year(y),month(m),day(d){};
~Calender(){};
void show1();
void show2();
void show3();
private:
int year;
int month;
int day;
};
void Calender::show1()
{
time_t current;
struct tm *t;
time(¤t); //得到目前的时间
t=localtime(¤t);
t->tm_year+=;
t->tm_mon+=;
cout<<"今天的时间为:"<<t->tm_year<<" 年 ";
cout<<t->tm_mon<<" 月 "<<t->tm_mday<<" 日"<<endl;
cout<<"您要查询的时间为: "<<year<<" 年 "<<month<<" 月 "<<day<<"日"<<endl;
//判断是否闰年
using namespace isprimer ;
int en,start;
if(isprim(t->tm_year)) //这一天为闰年
start=ren[t->tm_mon-]+t->tm_mday ;
else
start=pin[t->tm_mon-]+t->tm_mday ;
if(isprim(year))
en=ren[month-]+day;
else
en=pin[month-]+day;
int year_cha=year - t->tm_year;
int ans=(year_cha/)*+(year_cha - year_cha/)*+en-start;
cout<<"相隔:"<<ans<<" 天"<<endl;
cout<<"那一天是:"<<t->tm_wday+ans%<<endl;
};
void Calender::show2()
{
time_t current;
struct tm *t;
time(¤t); //得到目前的时间
t=localtime(¤t);
int en,start,sday=;
using namespace isprimer ;
t->tm_year+=;
t->tm_mon++;
if(isprim(t->tm_year)) //这一天为闰年
start=ren[t->tm_mon-]+t->tm_mday ;
else
start=pin[t->tm_mon-]+t->tm_mday ;
using namespace mon ;
if(isprim(year))
en=ren[month-]+sday;
else
en=pin[month-]+sday;
int year_cha=year - t->tm_year;
int ans=(year_cha/)*+(year_cha - year_cha/)*+en-start;
//得到本月初一是星期几
int weekly=t->tm_wday+ans%;
if(weekly<)weekly+=;
if(isprim(year))
print(month,weekly,ren_month[month]);
else
print(month,weekly,pin_month[month]);
};
void Calender::show3()
{
int start,ans;
using namespace mon;
time_t k;
time(&k);
struct tm *t;
t=localtime(&k);
//推出其为星期几即可
int sday,mon;
sday=mon=;
t->tm_year+=;
t->tm_mon++;
using namespace isprimer;
if(isprim(t->tm_year))
start=ren[t->tm_mon-]+t->tm_mday;
else
start=pin[t->tm_mon-]+t->tm_mday;
int year_cha=(year-t->tm_year);
ans=(year_cha/)*+(year_cha - year_cha/)*+-start;
int weekly=t->tm_wday+ans%;
if(weekly<)weekly+=;
if(isprim(year))
{
for(int i=;i<= ;i++ )
print(i,(weekly+ren[i-])%,ren_month[i]);
}
else
for(int i=;i<= ;i++ )
print(i,(weekly+pin[i-])%,pin_month[i]); };
int main()
{
int tem,aa,bb,cc;
cout<<"你想要查找什么?";
cout<<"1.某年某月某日距现在的天数以及是星期几?"<<endl;
cout<<"2.某年某月的一个月的日历"<<endl;
cout<<"3.某年的日历"<<endl;
cin>>tem;
switch(tem)
{
case :
{
cout<<"输入年 月 日"<<endl;
cin>>aa>>bb>>cc;
Calender stu(aa,bb,cc);
stu.show1();
} ;break;
case :
{
cout<<"输入年 月"<<endl;
cin>>aa>>bb;
Calender tt(aa,bb);
cout<<"this is "<<aa<<" Calender !"<<endl;
tt.show2();
break;
}
case :
{
cout<<"输入 年"<<endl;
cin>>aa;
Calender stu(aa);
stu.show3();
}
}
return ;
}
效果图:


c++课程设计(日历)的更多相关文章
- 单片机课程设计——《基于AT89S52单片机和DS1302时钟芯片的电子时钟(可蓝牙校准)》
引言 本设计以AT89S52单片机为控制核心,时钟芯片DS1302提供时钟源,配合LCD1602液晶显示模块,组成基本硬件系统,同时利用HC-05嵌入式蓝牙串口通讯模块,可在手机端进行日期.时间的校准 ...
- c++课程设计之菜单选择
a) 从键盘输入n个数,选择升序还是降序输出 b)创新了日历 c) 添加了射箭游戏 d)还加入了好玩的24点游戏 学生签名: 年 月 日 课程设计(论文)评阅意见 等 级 项 ...
- [课程设计]任务进度条&开发日志目录
任务进度条&开发日志目录 周期 时间 任务 Sprint One 11.14 ● Scrum团队分工及明确任务1.0 Sprint One 11.15 ● Scr ...
- 课程设计 --- 黑白棋中的 AI
原文链接:https://www.dreamwings.cn/reversi/3013.html 到了考试周了佯,可是偏偏这个时候迎来了很多很多的课程设计,幸好教授把C语言的课程设计提前发出了,不然都 ...
- Java课程设计——扫雷(winmine)
因为是我的课程设计,要是有冲突就不好了,转载注明出处!!! 程序很简单,毕竟我是搞acm的,我就只介绍一下闪光点. 中心空白搜索的时候,我用的DFS: 有一点是要注意的,就是JFrame不支持重画,还 ...
- [课程设计]Scrum 1.6 多鱼点餐系统开发进度
[课程设计]Scrum 1.6 多鱼点餐系统开发进度(点餐页面按钮添加&修复) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4. ...
- [课程设计]Scrum 1.7 多鱼点餐系统开发进度
[课程设计]Scrum 1.7 多鱼点餐系统开发进度(点餐菜式内容添加及美化) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题 ...
- [课程设计]Scrum 1.3 多鱼点餐系统开发进度
[课程设计]Scrum 1.3 多鱼点餐系统开发进度 Scrum 1.3 多鱼点餐系统开发进度 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追 ...
- [课程设计]Scrum团队分工及明确任务1.0 ----多鱼点餐
[课程设计]Scrum团队分工及明确任务1.0 ----多鱼点餐 一.开发背景 多鱼点餐系统是一套比较系统化的针对餐厅点餐服务的产品,从顾客进入餐厅点餐到用餐结束再到最后的结账买单,需要全面的.高效的 ...
- [课程设计]Scrum 1.6 多鱼点餐系统开发进度(点餐页面按钮添加&修复)
[课程设计]Scrum 1.6 多鱼点餐系统开发进度(点餐页面按钮添加&修复) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4. ...
随机推荐
- (转)SQL Server 列转行
原文:http://www.myexception.cn/sql-server/1078985.html1,2,3,4,5以上是一个字符串或则一逗号分隔的数字. 这里希望用一条语句查询出这样的效果: ...
- [Swift] Swift3.0--GCD
reference to : http://www.jianshu.com/p/4c983388dca6 估计现在好多人在为这一块头疼,所以先来点干货. //最常用模板 //全局队列异步执行 Disp ...
- Hibernate @Entity注解配置说明
持久化是位于JDBC之上的一个更高层抽象. 持久层将对象映射到数据库.以便在查询.装载.更新或删除对象的时候,无须使用像JDBC那样繁琐的API.EJB的早期版本号中.持久化是EJB平台的一部分.EJ ...
- mybatis映射文件遇到的小问题
mybatis的映射文件插入操作时: 如果对应的属性是String类型的,那么一定要做空串的判断. 比如注册的时候,如果需要向数据库中插入一条记录时,对应的字段没有给他赋值,这个String类型的值传 ...
- Sort Colors leetcode java
题目: Given an array with n objects colored red, white or blue, sort them so that objects of the same ...
- JavaScript操作XML(二)
上一篇介绍了XML的结构以及节点之间的关系这一篇介绍浏览器内建的XML解析器以及JavaScript是如何加载XML的. 大多数浏览器都有读取和操作 XML 的内建 XML 解析器. 解析器(XML ...
- JS中应用正则表达式转换大小写
JS中应用正则表达式转换大小写,代码很简单,看代码: 以下首字母大写,其它字母小写 <script type="text/javascript"> function r ...
- 使用jQuery在上传图片之前实现缩略图预览
使用jQuery在上传图片之前实现缩略图预览 jQuery代码 01 $("#uploadImage").on("change", function(){ 02 ...
- 使用泛型集合取代datatable作为返回值实现面向对象
开会的时候,师父说.我们在机房重构时,尽量不要用datatable作为返回值.改用泛型集合的方式,这样能够实现真正的面向对象. 通过查资料和同学交流,把这个问题给攻克了. 对于泛型集合.我也有了一些认 ...
- 【Nodejs】“快算24”扑克牌游戏算法
算24是一款扑克牌游戏,它的游戏方式是把四张牌的牌面数值通过四则运算得到结果24,四张牌必须仅用一次.这是一种挺好的锻炼孩子算数能力的扑克牌游戏. 各地玩法还有点差别,有的只算1-10,其它抽出来:有 ...