用基姆拉尔森计算公式做一个课表

因为最近上网课,我大部分时间是用电脑上课,课程APP得在手机上打开,我觉得麻烦,就写了一个可以看当天有什么课的程序。

既然要写课表,我们就得创建一个7天循环,并每7天更改一次单双周的判断。这里我用的是基姆拉尔森公式(你不必纠结他的原理,只有能合理的使用就行),用它来获取年月日。

然后我设定了开学的那一天为起始天,每过7天改变单双周课表,这样就完成了啦!。

大概可以实现的功能就是这样,当然也可以用QT再去写一些界面来美化程序,或者用easyX可以,但是代码就是这些了。

写完发现这个根本没什么卵用。。。。。。又丑又臭,也是我闲着无聊。

最后,修改图标,注入灵魂,就可以了

#include<iostream>
#include<time.h>
#include<fstream>
#include<string>
#include<windows.h>
using namespace std;
int year,month,day,weeks,yday,result;
int CaculateWeekDay(int y, int m, int d)
{
    if (m == 1 || m == 2) {
        m += 12;
        y--;
    }
    //基姆拉尔森计算公式:
    int iWeek = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;
    switch (iWeek)
    {
    case 0: return 0;break;
    case 1: return 1;break;
    case 2: return 2;break;
    case 3: return 3;break;
    case 4: return 4;break;
    case 5: return 5;break;
    case 6: return 6;break;
    }
}

void search(int weeks,int danshuang)
{
    HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);//句柄
    SetConsoleTextAttribute(hout, 64 + 15);
    ifstream fin;
    char buf[100];
    int chose;
    cout<<"今天是北京时间:"<<year<<"年"<<month<<"月"<<day<<"日"<<"星期"<<weeks+1<<endl;
      if(danshuang==1)cout<<"本周是单周"<<endl;
      else cout<<"本周是双周"<<endl;
      while(chose!=-1)
{
      SetConsoleTextAttribute(hout, FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE);
    if(weeks==0) fin.open("monday.txt");
    if(weeks==1) fin.open("tuesday.txt");
    if(weeks==2) fin.open("wednesday.txt");
    if(weeks==3) fin.open("thurday.txt");
    if(weeks==4) fin.open("friday.txt");
    if(weeks==5) cout<<"周末啦,好好休息啦,怎么想上课?"<<endl;
    if(weeks==6) cout<<"这么想上课?明天周一有你上的"<<endl;
     string s;
    while(getline(fin,s)) //逐行读取,直到结束
    {
        if(danshuang==0)
        {

        for(int i=0;i<s.length();i++)
        {
            if(s[0]==‘2‘||s[0]==‘3‘)
            {cout<<s[i+1];
            }
        }
        if(s[0]==‘2‘)
        cout<<endl<<endl;
        if(s[0]==‘3‘)
        cout<<endl;
    }
    else{
        for(int i=0;i<s.length();i++)
        {
            cout<<s[i+1];
        }
        cout<<endl;
    }
    }

    fin.close();
    cout<<"输入:"<<endl;
    cout<<"1.查看前一天课表"<<" "<<"2.查看后一天课表"<<" "<<"<<3.退出"<<endl;
    cin>> chose;
    if(chose==1) {if(weeks>0) weeks--;
                    if(weeks==0) {(weeks+7)-1;danshuang=(danshuang-1)%2;}
    }
    if(chose==2) {
        if(weeks<6) weeks++;
        if(weeks==6) {weeks=(weeks-7)+1; danshuang=(danshuang+1)%2;}
    }
    if(chose==3) chose=-1;
}

}

int main()
{
      time_t tt = time(NULL);//这句返回的只是一个时间cuo
      tm* t= localtime(&tt);
      yday=t->tm_yday+1;
      year=t->tm_year + 1900;
      month=t->tm_mon + 1;
        day=t->tm_mday;
      weeks=CaculateWeekDay(year, month, day);//获取今天星期几
      //判断单双周
      int begining=48;//开学第一天是本年的多少天
      result=yday-begining;//得到差值
      if(result==0){result=(yday+1)-begining;}
      result/=7;
      if(result%2!=0){result=0;}//双
      else {result=1;} //单周
          if(weeks==0) search(0,result);
          if(weeks==1) search(1,result);
          if(weeks==2) search(2,result);
          if(weeks==3) search(3,result);
          if(weeks==4) search(4,result);
          if(weeks==5) search(5,result);
          if(weeks==6) search(6,result);
      system("pause");
      return 0;
}

原文地址:https://www.cnblogs.com/Truedragon/p/12389240.html

时间: 2024-10-18 09:56:55

用基姆拉尔森计算公式做一个课表的相关文章

[ C ]根据年月日判断周几(基姆拉尔森计算公式)

基姆拉尔森计算公式 是个好东西啊!那我们在什么时候用呢? 偶尔写程序会用上它,当我们在已知年月日的情况下想要快速的知道这天是周几时,用此公式很方便. 那下面来见见它的容颜: W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 个人感觉挺复杂的,不过sei叫它有用呢 具体例子: int W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;    switch(W)    {    case 0: printf("星期一\n"

万年历计算星期-基姆拉尔森公式

#include /* * 基姆拉尔森计算公式 * W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 */ int week(int y, int m, int d) { if (m < 3) { m += 12; y--; } int w = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7; return w; } int main() { printf("%d\n

web前端课程技术内容之如何做一个简单的手机端页面的翻页

[如何做一个简单的手机端页面的翻页] 第一步:创建移动端页面内 HTML + CSS [注]可用弹性布局 但需要注意的是 外层盒子的定位 第二步: 思考问题 要实现怎样的效果? 1. 手指滑动时触发事件[左右]两个方向 2.点击footer部分的下标实现切换效果 3.点击footer部分的下标实现下标颜色变化 第三步:编写JS代码 添加监听事件 document.addEventListener('DOMContentLoaded',function(){ 创建一个数组用于调用数组属性值 或者

React-Native做一个文本输入框组件

我又回来啦! 由于最近一直在做公司的项目,而且比较急.如今项目已经迭代到第三期,可以缓一缓了... 今天在公司里听前端的说,这个项目本来是用React-Native做的(去年10月份),但是做到一半发现坑太多,就中途放弃了,于是让我们android和iOS重新开发... 作为非常喜欢这个技术的我来说,表示相当的不服. 于是我打算利用闲暇时间做一个一模一样的出来,反正接口我都有(嘻嘻) 说实话,最近一直再用android做开发,而且时间也不宽裕,react-native有点生疏了. 好了,废话不多

做一个手机端页面时,遇到了一个奇怪的问题:字体的显示大小,与在CSS中指定的大小不一致

最近在做一个手机端页面时,遇到了一个奇怪的问题:字体的显示大小,与在CSS中指定的大小不一致.大家可以查看这个Demo(记得打开Chrome DevTools). 就如上图所示,你可以发现,原本指定的字体大小是24px,但是最终计算出来的却是53px,看到这诡异的结果,我心中暗骂一句:这什么鬼! 随后开始对问题各种排查:某个标签引起的?某个CSS引起的?又或者是某句JS代码引起的.通过一坨坨的删代码,发现貌似都不是.我不禁又骂,到底什么鬼!不过中间还是发现了一些端倪:当页面中的标签数量或者文本数

做一个微信语音点播系统

最近在做一个微信项目,接触到了微信公众平台.通过公众平台可以很方便的搭建一个功能完善的移动应用.昨天发现:开发者可使用手机号来申请接口测试帐号,体验高级接口. 这篇文章的应用将使用到高级接口中的语音识别,以及音乐回复接口.通过这两个接口,让大家体验一下语音点歌的魅力. 这个应用简单的来说:就是你向微信公众平台报一首歌名,微信公众平台返回这首歌曲给你听.本文将一步一步教你如何实现这个看似复杂的移动应用. 下面是我申请的测试账号的二维码,大家可以关注一下测试一下效果,不过测试账号的有效期只有一年,最

先做一个“小程序”——关于微信应用号的六大猜想

先做一个“小程序”——关于微信应用号的六大猜想 9月 21 日,苦等了9个多月的时间,应用号终于与我们见面了,命名为「小程序」. 01 为什么推出小程序? 考虑到小程序对整个APP市场的影响,毫无疑问会对现有的APP生态带来一定的冲击.但是,之所以推出小程序,最直接的原因可能是为了构建和扩充微信生态链,让微信更具开放性. 如我们所知,目前微信公众号分为三类: • 服务号,连接人和商品,目前很多电商企业,以及在微信端提供产品和服务的企业都用服务号. • 订阅号,微信官方的定位是阅读,连接人和资讯的

20151229:AJax :用类方式做一个查询

前台aspx代码不变,处理页面需要新建一个类,封装属性并在处理页面调用 新建类DB代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data;//引用命名空间 using System.Data.SqlClient; /// <summary> /// DB 的摘要说明 /// </summary> public class DB

今天来做一个PHP电影小爬虫。

今天来做一个PHP电影小爬虫.我们来利用simple_html_dom的采集数据实例,这是一个PHP的库,上手很容易.simple_html_dom 可以很好的帮助我们利用php解析html文档.通过这个php封装类可以很方便的解析html文档,对其中的html元素进行操作 (PHP5+以上版本)下载地址:https://github.com/samacs/simple_html_dom下面我们以 http://www.paopaotv.com 上的列表页 http://paopaotv.com