UIT2024_Calendar/stu2024/网络2401郑世凯_02.cpp
2024-12-07 16:23:34 +08:00

150 lines
28 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Created by Ricsae on 2024/11/13.
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define 初始化 system("CHCP 65001");system("cls");for(char i:str1)_str[0]+=i;for(char i:str2)_str[1]+=i;
#define Fexit system("pause");system("cls");break;
#define Fexit2 _sleep(300);printf_purple("请按下任意按键。");getchar();system("cls");break;
#define WTF cout <<" \n.i.:.....................:...:.:::::.:::::.....:.......:.:::...........:.::....:::.:::::::::::.............. . ....... .i:::::::::..:.....:\n"":7iii:i:i:i:::::::::i::iiiiiiiiiiiiiirrrrii:iiiii::.::iiiirii:i:i:iiiiiiririiiiiriiiiiriiiiirii::::::::::::.:.::::::i. i7ririririiii::::::i\n"".i.:.:.:...............:.:.:::::::::::::::::.:::.....:.:::::.....::::::i:i:i:i::::::::::::::::........................ :i::::::::::.......:\n"".i:.:.:...:.............:::::::::::::::::::.:::::.....::::i::::::::.. ....::i:::::::i:i::.:....................... :::::::::::::......:\n"".i.:.:.:.........:.:.:.:::::::::::::::::::::.::::....::::ii:.. .:::i::::::i:::...................:.. :i::::::::::::.....:\n"":::.:...:.........:.:.:::::::::::::::::::::.:.:::...:::.. . .:::...................: i::::::::::::...:..:\n"".i.:.:.:.....:.......:.:::::::::::::::::::::::::::.. :::::.................. .:i:::::::::::......:\n"".i:.:.:.:.:.:.........:::::::::::::::::::::::::.. .:::............... .i::::::::::::......:\n"".:.:.:.............:.:.::::::::::::::::::i:: .::::............ .ii:::::::::::......:\n"":::.:.:.:...:.......:.::::::::::::::::ri:. ..:::........ .i::::::::::::......:\n"".i.....:...:.:.....:.:.::::::::::::iiri. ...:..... :ii::::::::::...:...:\n"".:......:.:.:.........::::::::::::iii. ..:.. :i::::::::::::......:\n"".i.......:.:.........:.::::::::::ii. .:. :ii::::::::::::.....:\n"".:..:.:...:.....:...:.::::::::::ii. .. :i::::::::::::......:\n"".i...:.:.....:...:.:.::::::::::i: ..:i:::::::::::.......:\n""::..:.:::...:.:.:.:.:::::::::::: .ir:i::::::::::......:\n"".i...:::.:.:.:.:.:.:.:::::::::. :ii::::::::::.:.....:\n"".:..:.:.:.:.:.:.:.:.:::::::::. :ii::::::::::......:\n"".i...:.:.:.:.:.:.:.:.:::::::: .:i::::::::.......:\n"".:..:.:...:.:.:...:.:.::::::. .:i::::::::......:\n"".i.:.:.....:.:.:...:.::::::: .:i::::::.......:\n"".:....:.:.:::.:.:.:.:.:::::. :r: .:i::::::......:\n"".i...:.:.:::.:.:.:.:.::::::: rjUJ: .:.::i7r. .i::::.......:\n"".:......:.:.:.:...:.:.::::i. 7ZR2r. ..::iii:7vY7i. ::::::......:\n"".:.......:::.:.:.....::::::. iX27: ::iiriir7YYLYr: .::::.......:\n"".:..:....::.:.......:.::::: i: ..::ririrr7vsJj7r:. :::::......:\n"".:.:.....:::.:.:.....:::::. .u1 . :iiirrrrir77vvL7ri:. .::::......:\n"".:......:::.........::::::: LPU: ..:.::iiri7r7rrirrrrrii:::. .i.:.......\n"".:.......:::........:::::::. rsvYvYLvvYsY777v77ii::::::.. .:........:\n"".:......:::.:.......:::::.:. ivYssjYU2XSSSS2Ijvrrii:i::. :........:\n"".i.......:..........:::::::: .::rr .:rv7vLu152XSqIIuusYvv77ii. .:.......:\n"".:......:::...:.....:::::.:: .2BBBBBQui:. :ir7vvv7v7LvJuISKUjLL77rr :.:......:\n"".:.....:.:.........:::::.::: 7DBQBBRKuYvri:. ..ii777irir:.. . .:.......:\n"".:..................:::::.::. .ri .iv7i.....irv77::.... ...:......:\n"".:.................:::::.:::. rvYr .:...:iv5X5vi.....:........ ..........:\n"".:..............:..::.:::.::: 777rrr777riii:. .7i :iri7L5qESsi...:ir7Y5bgDg2Uj7:. ..........:\n"".:.............:...:::::... rrrrv7v1U1s7v777Lriirir5IsLvuUqPJr: .:irv2SdQBBBg2Uvr: ..:.......:\n"".:............:...:.:.:.:.:.i: :rrrvLjjIUUYYYv77r77vJSPKJ7r7LXSur: .i77: .:rii:. ..:........:\n"".:...........:.:...:.:.:.:rJM: irr7JS5dbbPKU2UIUS5PKPP27v777USuri. .rj7 ...........:\n"".:..................:.:..:vqX .rr7j25bPDEgZZbdbdEDbb2J77777jqXr:.....r7r7L7r.. .............\n"".:.................:.:::.:7q7 ir7v5IPqEEgEDZgEdEDDDqU77rrrY1qui.....:ivrrri:i:iii:. .:...........:\n"".:..................:.::..7Ur ir7sSPEggQQQQBQBBBRgIjrririv2bS7:.....:rvJ7vvvrrrririi:.. ::...........:\n"".:..................::::.:r2v ii7712PEgRQRBQQDbsriiiri7vsSgdIvi.....irvU1YjJI2SSbPKUsLvr:... :::...........:\n"".:..................:.:..:LjJ. .ir771USKdP5U2Liiiir7JvIPQBBBQSU7:....i7JX5U1uu21XXSXbPPIJ7r:::. ....:...........\n"".:.................:::::.:vJr. .iii7r7vYvYrrriirr77Lrr7gBBBBBPJvi:. i72PEqP255XKbPPPPS5UL7rii.. ................:\n"".:..................:::.::77i. .iiiirrrr7rrrrr7vYvr .:7Jvi:irri: :v2EPEPbKdPdPdbqI1YL7rii::. ..:...............\n"".:.....:.:.........:.:::.:i7i. :iiiirrrrrrrvv11uvvr. ii.. :7uIXqdKbqKPb5SU1Yv77ri::.. :::::...............:\n"".:..................:.:::.ivs: :rirrrr7r77j2S22Yv77r77Y7i :7ruUS2S5S25U2JY77rrii::.. :i::::::...............\n"".:...................:::..:77: :iiirr7r7L2u1uuJLvv7v7YsjjUsr.. .ir77uuuuUjjYv77rrri::.... .i::::.:...............:\n"".:..................:.:::.:::..:iiir7r77Lu1vsvsYJv7r77v7Yj2JY7v77r7r77v7vvJ7v7v77rrii::.... :::::::.:...............\n"".:...................:.:::::...::ii7r77v7vvYLv7vrriiirrrrvLJYsvYvLvJLYvLvvv777rrir::... ... .ii::::::...:...........:\n"".:..................:.:.:.:.:...::ii7r777i:. ..::rvJv7777L7YYL7vr7iiii::.. :YbI. ... :i::::::.:..............:\n"".:.................:.:.:...:....:::rr7rrii. .:. .iLYL77rvvv7vrrii::... :MBBBi .... :::::::::.:.............:\n""::..................:.:.:.:.:...::::rr7rrrr: .7dQbsui :7v7rrvv7rriri:... vBBBQr ...... .:::.:::::.:............:\n"".:.................:.:.:.:.:.....::::rirr7r7i:::. . ::rrv77rri:::. BBBB7 ....... :::.:.:.:...............:\n"".:................:.:.:::.:.:....:::iirrrrrrr::ivJI1J7i.. .. :irrrrii:... 7Yi ... ..... :i::.:.:.:..............:\n"".:.................:.:.:.:.:.....::::irrr7rrrr:::iir7s2qDMK2vr:.. ..::iii::::.. . . . .:.:. i::::.:.:.:.:...........:\n""..................:.:.:.:::.:.....:::irr7r777ii:. ..:rrrii:i::.... ... .::::. ..:.... .::.:::::.:.:.............\n"".:.............:...:.:.:.:.:::.......:i7r77v77ii:... .::iiiii::::.. ... ..... .i::.:::::...............:\n"".:................:::.:.:::.:.:.....::rrrrr7v7v77ri:i:i::::...::::i:i:i::. ........ .i:::::::.:...............\n"".:.................:.:.:.:::.:.... ..:irr7r77vjSS55X1Y77r7rrii:i:iiiii:. ......... .i::::.:.:...............:\n""..................:::.:.:.:.:.:::.. ..:i7r77vvu1X5qXKUs7v777rrririiiri. ........... .::.:.:.:.:...............\n"".. ................:.:::.:::.:::::.....:r7r77vvsJUu21svv7v77rrrriiii:. ............ .:.:.....:...............:\n""... ..............:.:.:.:.:.::::::::. .irrr7rvvL7LvL7vrrrrir:i::::.. ............. .:......:.................\n"".. ................:.:.:.:.:.::::i:... ..::iirrrrririi::::.:..... .............. .:.......................:\n""... ..............:.:::::.:.::i:: :::. ............... . .............. ..........................\n"".. . ..............:::::::::ii. :ii::.. ii:.................. ....................:\n""... . .............::.::ii:. iiii::.. .i::................ . ....................\n"".: ..............:.::::i:. 7Bi:iri::.. ::................ .... . ..................:\n""................::::::: YBS.:irir::... 7 .:.............. ..........................\n"".:.......:...:.::::. .QB :iiiririi::... .B. ............... ::.....:.................:\n"".:....::::::::::. BB irirrrrrii:i::.... :B2 ............ :::.......:..............:\n"":r:... :BB rrrirrriiirii::::.... . . . 7Bg .......... .::::.:...................:\n"" . DBB irrrrrrririr:i:::i:i::.. ... . . gQM .:...... .i::.:.:.:.:...............\n"" rBBB .irirrrrrrrii:::iiiiii: . ......... . 7QMQ .:... :::::::...:...............:\n"" gQBBQ irrrrrrirrrii:::i:iii. . ........... . rBQdB ... :r::::.....................\n"" .BEDBBr .rr7r7rrrririi:::iii:. . .................. rBBZDQ :iii::.:.................:\n"" rBEqBBB. .rrrr7rrrrrri:...:.. ...................... YBBDPZB :::::................:\n"" 7BKXqBBB .irrrrrrrrir::.. .............:....... QBBgPqgM ..:::.:::::.......:\n"" dBBBBBBBB7.ivsU22uJvLvv7r:i.:.::iiiiiiriiiriiiiii:i::LBQBBBBBBB ..:::..:";
int y,m,d,cishu=0;
string _str[2]={"",""};
string encodedStr = "|%E9%83%91%E4%B8%96%E5%87%AF";
string decodedStr = "%E8%B0%81%E5%91%8A%E8%AF%89%E4%BD%A0%E8%BF%99%E4%B8%AA%E5%BD%A9%E8%9B%8B%E7%9A%84";
string wk_zh[7]={"","","","","","",""};
string wk_en[7]={"Su","Mo","Tu","We","Th","Fr","Sa"};
const int str1[]={56,56,50,50,52,54,52,54,66,65};
const int str2[]={56,56,50,50,52,54,52,54,98,97};
const int runPing[2][13] = {{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31},};
int WeekDay(int y,int m,int d){
if(y<1582||y==1582) {if(m<10||(m==10&&d<5))d+=3;else if(m==10&&(4<d&&d<15))return -1;}
if(m<3){y--;m+=12;}return ((d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1)%7;
}//相关https://zh.wikipedia.org/zh-cn/%E8%94%A1%E5%8B%92%E5%85%AC%E5%BC%8F
int IsLeapYear(int year) {/*if(year<0)return -1;*/return ((year%4==0&&year%100!=0)||(year%400==0));}
int to_int(string s){int ans=0,k=0;for(char i:s)if('0'<=i&&i<='9'){ans=ans*10+(i-'0');k++;}if(!k)return 0;else return ans;}
bool IsTureData(){if(d==0)return false;if(m==0)y--,m=12;if(m>12)return false;if(d>runPing[IsLeapYear(y)][m])return false;return true;}
//颜色字
string ToString(int n){string t=" ";char tm;if(n<10){tm=n+'0';t+=" ";t+=tm;return t;}else{tm=n/10+'0';t+=tm;tm=n%10+'0';t+=tm;return t;}}
string ToStringB(int n) {string result;while (n > 0) {result.push_back('0' + (n % 10));n /= 10;}reverse(result.begin(), result.end());return result;}
void print(const char* s) { printf("\033[0m\033[1;32m%s\033[0m", s); }
void printf_red(const char* s) { printf("\033[0m\033[1;31m%s\033[0m", s); }
void printf_blue(const char* s) { printf("\033[0m\033[1;34m%s\033[0m", s); }
void printf_purple(const char* s) { printf("\033[0m\033[1;35m%s\033[0m", s); }
void print_cd(int time,const char* s) {_sleep(time);printf_blue(s);}
void clearInput() {/*清除错误状态*/
cin.clear();/*辅助函数,用于清理输入流*/
cin.ignore(numeric_limits<streamsize>::max(), '\n'); /*忽略错误输入*/
printf_red("非法输入,请重新输入!\n");
}
void getdata(int n) {d=n%100,m=(n/100)%100,y=n/10000;}
void ToTrueDate() {/*int& y, int& m, int& d*/
while(m>12)m-=12,y++;
while(d>runPing[IsLeapYear(y)][m]){d-=runPing[IsLeapYear(y)][m],m++;if(m>12)m=1,y++;}
}
/*copy区:Unicode转码技术*/string urlDecode(const string& src) {string ret;for (size_t i = 0; i < src.length(); ++i) {if (src[i] == '%') {/*处理百分号编码*/if (i + 2 < src.length()) {std::string hex = src.substr(i + 1, 2);char decodedChar = static_cast<char>(std::stoi(hex, nullptr, 16));/*将十六进制字符串转换为字符*/ret += decodedChar;i += 2; /*跳过已处理的部分*/}} else if (src[i] == '+') ret += ' ';/*'+' 号转换为一个空格*/else ret += src[i]; /*直接添加其他字符*/}return ret;}
void PYear(int n){
encodedStr+="|By:Ricsae";
string decodedStr = urlDecode(encodedStr);
int day[12][6][7]={{{{0}}}};
for(int k=0;k<12;++k){
int FD=WeekDay(y,k+1,1);
int daynum=1;
for(int i=0;i<6;++i){
for(int j=((daynum==1)?FD%7:0);j<7;++j){
if(y==1582&&k==9&&daynum==5)daynum+=10;
if(daynum>runPing[IsLeapYear(y)][k+1])break;
day[k][i][j]=daynum++;
}
}
}
string str1="";for(int i=0;i<26*n+5;i++)str1+="=";str1+="|";int tempa=ToStringB(y).length();str1.replace(tempa+2, 1, "|");str1.replace(0, 2, "||");str1.replace(2, tempa, ToStringB(y));cout<<str1<<endl;
for(int k=0;k<12;k+=n){
cout<<":";
for(int x=0;x<n;++x){
cout<<" "<<ToString(k+1+x);cout<<" ";for(string j:wk_en)cout<<" "<<j;
}
cout<<" :\n";
for(int i=0;i<6;++i){
cout<<":";
for(int x=0;x<n;++x){cout<<" ";for(int j=0;j<7;++j)if(day[k+x][i][j])cout<<ToString(day[k+x][i][j]);else cout<<" ";}
cout<<" :\n";
}
}
string str2="|";for(int i=0;i<26*n+3-14;i++)str2+="=";str2.replace(26*n-11,1,decodedStr);str2+="|";cout<<str2<<endl;
}
signed main(){
string choice,temp;int value,op;
while(true){
print("请选择操作:\n1.查周几\n2.查闰年\n3.查日历\n4.彩蛋\n5.退出\n输入选项:\n");
printf_purple("日期结构:YYYYMMDD(请一次全输入 如20240405<有点反人类)\n示例1: 20190220为2月20日 示例2: 20160301为3月1日\n");
getline(cin, choice);
// if (cin.fail() || choice < 1 || choice > 3) { clearInput(); continue;}// 应对非法输入的法二,弊端:过于麻烦,但可辅助输入
if(choice=="1"){
while(true) {
print("查周几 示例: 20190220为2月20日\n请输入日期:(如果我沉默了一定是你不对!!!)\n");
getline(cin,temp);value=to_int(temp);
if(value<10000||cin.fail()){clearInput();continue;}
getdata(value);
if(d==0) continue;
if(!IsTureData()){printf_blue("很屑的了,搞点正常的不行吗?\n");ToTrueDate();cout<<"\033[0;34m猜你想知道"<<y<<""<<m<<""<<d<<"日是星期几?\033[0m"<<endl;}
int n=WeekDay(y,m,d);
if(n==-1){printf_blue("不是哥们,日历上没这天,那天不是被搞没了。\n");}else{cout<<y<<"."<<m<<"."<<d<<"是星期"<<wk_zh[n]<<"["<<wk_en[n]<<"]\n";}
Fexit
}
}else if(choice=="2"){
while(true) {
print("查闰年 请输入年份:");
// cin>>value;cin.ignore(1e9,'\n');//方案1
getline(cin,temp);value=to_int(temp);
if(value<1||cin.fail()){clearInput();continue;}
if(IsLeapYear(value))cout<<value<<"是闰年!"<<endl;else cout<<value<<"非闰年!"<<endl;
if(value>9999)printf("\033[0m\033[24;34m%s\033[0m", "这个年号害我笑一下\n");
Fexit
}
}else if(choice=="3"){
while(true) {
while(true){
print("查日历 请输入年份:\n");
getline(cin,temp);y=to_int(temp);
if(y<1||cin.fail()){clearInput();continue;}
break;
}
while(true){
print("查日历 输出多少列:\n");int n=13;
getline(cin,temp);n=to_int(temp);
if(cin.fail()){clearInput();continue;}
if(0<n&&n<13){
PYear(n);
Fexit
}else printf_red("非法输入,请重新输入!\n");
}
break;
}
}else if(choice=="4"){
//后记:网络爬虫方案失败
system("cls");
if(cishu++)cout<<"这是你第"<<cishu<<"来这里了"<<endl<<"但菜单页为何不可以彩蛋呢?"<<endl;
print_cd(1000,"Hi,这暗藏着彩蛋的部分信息\n");
print_cd(1000,"3的bug最好找\n");
print_cd(1000,"当输入不可被整除的数字时,输出会炸,甚至可能会把你卡出去\n");
print_cd(1500,"除此外,其实还有个非常远古的游戏传统彩蛋:\n");
print_cd(1500,"哦对了,其实有时候会触发渲染颜色问题\n");
if(cishu>1)print_cd(1000,"提示1\n数字+字母\n");
if(cishu>2)print_cd(1000,"提示2\n数字是由其他方式代替来的\n");
if(cishu>3)print_cd(1000,"真的没新提示了\n");
if(cishu>4)print_cd(1000,"再有新提示的话会④人的\n");
system("pause");
system("cls");
// 后后记:突然就明白了,什么叫防御式代码
}else if(choice=="5"){
break; }else if(choice==_str[0]||choice==_str[1]){cout<<urlDecode(decodedStr)<<endl;WTF cout<<endl<<endl<<endl<<endl;
}else{
printf_red("非法输入,请重新输入!\n");
}
}
}
//Clion yyds