多功能集合程序重磅上线! ——摘自《C优快云日报》
放假的前三天,我没有作业,闲着没事做了一个多功能集合程序。结果还没写完,作业布置下来了......所以现在才写完,发布出来。
这个程序拥有四个功能,个人认为还算比较精美,至少不是黑白框
(图标有点像某著名公司的logo,纯属巧合)
程序不难,代码也不长,只有753行。
注意事项:
- Windows系统,C++运行
- 建议使用Windows10系统,以达到完美运行效果(如上图)。因系统版本和电脑本身显示等原因,程序显示可能出现分离、错位等现象,严重时可能导致程序无法正常运行。
- 打开程序后请按Shift键调成英文模式(每次打开运行都要按)。
- 程序打开网页的时候,如果电脑上安装了360文件防护程序,可能会出现下面的弹窗
请点击允许程序运行。 - 建议不要把程序最大化,否则可能影响美观。
- 程序中的给电脑睡眠功能为深度睡眠,可能无法用单机键盘或单机鼠标的方式唤醒电脑。此时,请用正常开机的方法,按电源键,即可唤醒电脑。
- 程序中的四个系统操作都是立刻执行,作死带来后果作者概不负责。
源代码:
未经允许,严禁转载!
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
//=====================================================================0
void SetPos(COORD a)
{
HANDLE out=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(out, a);
}
void SetPos(int i, int j)
{
COORD pos={i, j};
SetPos(pos);
}
void color(int a)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void Pos()
{
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cci;
GetConsoleCursorInfo(hOut, &cci);
cci.bVisible = FALSE;
SetConsoleCursorInfo(hOut, &cci);
}
//=========================================================================1
void logo()
{
color(12);
printf(" ■");
color(10);
printf("■\n");
color(11);
printf(" ■");
color(14);
printf("■");
}
void logoing()
{
color(12);
printf(" ■");
_sleep(500);
color(10);
printf("■\n");
_sleep(500);
color(11);
printf(" ■");
_sleep(500);
color(14);
printf("■");
_sleep(500);
system("Cls");
}
//==========================================================================2
void lobby()
{
system("cls");
Pos();
printf("\n");
logo();
SetPos(10,5);
color(12);
printf("欢迎使用");
color(14);
printf("多功能集合程序");
SetPos(0,20);
color(8);
printf("-------------------------------------------\n");
printf(" 版权所有 (c) molongAWM");
color(12);
SetPos(1,7);
printf("┌───────────────┐\n");
printf(" │ │\n");
printf(" │ 计算器[A] │\n");
printf(" │ │\n");
printf(" └───────────────┘\n");
color(10);
SetPos(23,7);
printf("┌───────────────┐\n");
SetPos(23,8);
printf("│ │\n");
SetPos(23,9);
printf("│ 各种小游戏[S] │\n");
SetPos(23,10);
printf("│ │\n");
SetPos(23,11);
printf("└───────────────┘\n");
color(11);
SetPos(1,13);
printf("┌───────────────┐\n");
printf(" │ │\n");
printf(" │ 去抄题解[D] │\n");
printf(" │ │\n");
printf(" └───────────────┘\n");
color(14);
SetPos(23,13);
printf("┌───────────────┐\n");
SetPos(23,14);
printf("│ │\n");
SetPos(23,15);
printf("│ 系统操作[F] │\n");
SetPos(23,16);
printf("│ │\n");
SetPos(23,17);
printf("└───────────────┘\n");
Pos();
}
//================================================================================3
void calculator1()
{
system("cls");
printf("\n\n\n\n\n");
logoing();
system("cls");
color(11);
printf("|计算器|输入1!1退出\n");
color(14);
double num1, num2;
char op;
double result;
string caption1("Error!Divided by 0!\n");
string caption2("Invalid opereator!\n");
while (1)
{
color(7);
cin >> num1 >> op >> num2;
color(15);
switch (op)
{
case '+':
result = num1 + num2;
cout << num1 << op << num2 << "=" << result << endl; break;
case '-':
result = num1 - num2;
cout << num1 << op << num2 << "=" << result << endl; break;
case '*':
result = num1 * num2;
cout << num1 << op << num2 << "=" << result << endl; break;
case '/':
if (fabs(num2)<1.0e-8)
{
cout << caption1 << endl;
}
else
{
result = num1 / num2;
cout << num1 << op << num2 << "=" << result << endl; break;
}
case '!':
goto loop_calculator1;
default: cout << caption2 << endl;
}
}
loop_calculator1:
int Loop;
}
void calculator2_1()
{
system("cls");
color(14);
SetPos(1,1);
printf("|高精度加法|输入 退出\n");
color(11);
printf("每次输入两行,一行一个数,自动相加\n\n");
color(10);
SetPos(17,1);
printf("[E]");
SetPos(0,5);
while (1)
{
color(8);
char a1[100],b1[100];
int a[100],b[100],c[100];
int a1_len,b1_len,lenc,i,x;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
gets(a1);
if (a1[0]=='E')
break;
gets(b1);
color(15);
a1_len=strlen(a1);
b1_len=strlen(b1);
for (i=0;i<=a1_len-1;i++)
{
a[a1_len-i]=a1[i]-48; //将操作数放入a数组
}
for (i=0;i<=b1_len-1;i++)
{
b[b1_len-i]=b1[i]-48; //将操作数放入b数组
}
lenc =1;
x=0;
while(lenc <=a1_len || lenc <=b1_len)
{
c[lenc]=a[lenc]+b[lenc]+x; //两数相加
x=c[lenc]/10;
c[lenc]=c[lenc]%10;
lenc++;
}
c[lenc]=x;
if (c[lenc]==0)
{
lenc--; //处理最高进位
}
for (i=lenc;i>=1;i--)
{
cout<<c[i]; //输出结果
}
cout<<endl<<endl;
}
}
void calculator2_2()
{
system("cls");
color(14);
SetPos(1,1);
printf("|高精度减法|输入 退出\n");
color(11);
printf("每次输入两行,一行一个数,自动相减\n\n");
color(10);
SetPos(17,1);
printf("[E]");
SetPos(0,5);
while (1)
{
color(7);
int N=1001;
int a [ N ] , b [ N ] , c [ N ] , i ;
char n [ N ] , n1 [ N ] , n2 [ N ] ;
memset ( a , 0 , sizeof ( a ) ) ;
memset ( b , 0 , sizeof ( b ) ) ;
memset ( c , 0 , sizeof ( c ) ) ;
gets ( n1 ) ;
if (n1[0]=='E')
break;
gets ( n2 ) ;
color(15);
int lena = strlen ( n1 ) , lenb = strlen ( n2 ) ;
if ( lena < lenb || ( lena == lenb && strcmp ( n1 , n2 ) < 0 ) )
{
strcpy ( n , n1 ) ;
strcpy ( n1 , n2 ) ;
strcpy ( n2 , n ) ;
swap ( lena , lenb ) ;
printf ( "-" ) ;
}
for ( i = 0 ; i < lena ; i ++ ) a [ lena - i ] = int ( n1 [ i ] - '0' ) ;
for ( i = 0 ; i < lenb ; i ++ ) b [ lenb - i ] = int ( n2 [ i ] - '0' ) ;
i = 1 ;
while ( i <= lena || i<= lenb )
{
if ( a [ i ] < b [ i ] )
{
a [ i ] += 10 ;
a [ i + 1 ] -- ;
}
c [ i ] = a [ i ] - b [ i ] ;
i ++ ;
}
int lenc = i ;
while ( c [ lenc ] == 0 && lenc > 1 )
lenc -- ;
for ( i = lenc ; i >= 1 ; i -- )
printf ( "%d" , c [ i ] ) ;
printf("\n\n");
}
}
void calculator2_3()
{
system("cls");
color(14);
SetPos(1,1);
printf("|高精度乘法|输入 退出\n");
color(11);
printf("每次输入两行,一行一个数,自动相乘\n\n");
color(10);
SetPos(17,1);
printf("[E]");
SetPos(0,5);
while (1)
{
string str1,str2;
int a[250],b[250],c[500],len;
int i,j;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
color(8);
cin>>str1;
if (str1[0]=='E')
break;
cin>>str2;
color(15);
a[0]=str1.length();
for(i=1;i<=a[0];i++)
a[i]=str1[a[0]-i]-'0';
b[0]=str2.length();
for(i=1;i<=b[0];i++)
b[i]=str2[b[0]-i]-'0';
memset(c,0,sizeof(c));
for(i=1;i<=a[0];i++)
for(j=1;j<=b[0];j++)
{
c[i+j-1]+=a[i]*b[j];
c[i+j]+=c[i+j-1]/10;
c[i+j-1]%=10;
}
len=a[0]+b[0];
while((c[len]==0)&&(len>1)) len--;
for(i=len;i>=1;i--)
cout<<c[i];
printf("\n\n");
}
}
void calculator2()
{
system("cls");
printf("\n\n\n\n\n");
logoing();
loop_calculator2_head:
system("cls");
color(10);
SetPos(1,1);
printf("|高精度计算器|按 返回");
color(11);
SetPos(17,1);
printf("[`]");
color(14);
SetPos(1,3);
printf("|高精度加法| [S]");
SetPos(1,5);
printf("|高精度减法| [D]");
SetPos(1,7);
printf("|高精度乘法| [F]");
char c;
while (1)
if (kbhit())
{
c=getch();
switch (c)
{
case 's':
{
calculator2_1();
goto loop_calculator2_head;
}
case 'd':
{
calculator2_2();
goto loop_calculator2_head;
}
case 'f':
{
calculator2_3();
goto loop_calculator2_head;
}
case '`':
goto loop_calculator2_tail;
}
}
loop_calculator2_tail:
int Loop;
}
//================================================================================4
void Calculator()
{
loop_calculator_head:
system("cls");
color(12);
printf("\n");
printf("┌───────────────┐\n");
printf("│ 普通计算器[D] │\n");
printf("└───────────────┘");
color(14);
SetPos(20,1);
printf("┌───────────────┐\n");
SetPos(20,2);
printf("│ 高精计算器[F] │\n");
SetPos(20,3);
printf("└───────────────┘");
color(8);
SetPos(1,5);
printf("按 返回。");
color(15);
SetPos(3,5);
printf("[`]");
char c;
while (1)
if (kbhit())
{
c=getch();
if (c=='d')
{
calculator1();
goto loop_calculator_head;
}
if (c=='f')
{
calculator2();
goto loop_calculator_head;
}
if (c=='`')
goto loop_calculator_tail;
}
loop_calculator_tail:
int Loop;
}
void game1()
{
ShellExecute(NULL,"open","explorer.exe","https://blog.youkuaiyun.com/molongAWM/article/details/85039785",NULL,SW_SHOW);
}
void game2()
{
ShellExecute(NULL,"open","explorer.exe","https://blog.youkuaiyun.com/wangyongrui2018/article/details/86693019",NULL,SW_SHOW);
}
void Game()
{
loop_game_head:
system("cls");
color(14);
printf("\n");
printf("┌───────────────────┐\n");
printf("│ 绝地求生小游戏[D] │\n");
printf("└───────────────────┘\n");
color(10);
SetPos(25,1);
printf("┌───────────────────┐\n");
SetPos(25,2);
printf("│ 王者荣耀小游戏[F] │\n");
SetPos(25,3);
printf("└───────────────────┘\n");
color(8);
SetPos(1,5);
printf("按 返回。");
color(15);
SetPos(3,5);
printf("[`]");
color(11);
SetPos(1,7);
printf("警告:以上两个游戏都是【关机小游戏】\n 如果您不知道如何取消关机计划,请慎重使用");
char c;
while (1)
if (kbhit())
{
c=getch();
if (c=='d')
{
game1();
goto loop_game_head;
}
if (c=='f')
{
game2();
goto loop_game_head;
}
if (c=='`')
goto loop_game_tail;
}
loop_game_tail:
int Loop;
}
void solution1()
{
ShellExecute(NULL,"open","explorer.exe","https://blog.youkuaiyun.com/u011815404/article/details/79324003",NULL,SW_SHOW);
}
void solution2()
{
system("cls");
_sleep(500);
color(12);
SetPos(1,1);
printf("┌────────────┐\n");
SetPos(1,2);
printf("│ 暂不支持! │\n");
SetPos(1,3);
printf("└────────────┘\n");
_sleep(1000);
}
void solution3()
{
system("cls");
_sleep(500);
color(12);
SetPos(1,1);
printf("┌────────────┐\n");
SetPos(1,2);
printf("│ 暂不支持! │\n");
SetPos(1,3);
printf("└────────────┘\n");
_sleep(1000);
}
void Solution()
{
loop_solution_head:
system("cls");
color(14);
SetPos(1,1);
printf("┌───────────────┐\n");
SetPos(1,2);
printf("│ 一本通题解[S] │\n");
SetPos(1,3);
printf("└───────────────┘\n");
color(13);
SetPos(1,4);
printf("┌───────────────┐\n");
SetPos(1,5);
printf("│ 洛谷题解[D] │\n");
SetPos(1,6);
printf("└───────────────┘\n");
color(11);
SetPos(1,7);
printf("┌───────────────┐\n");
SetPos(1,8);
printf("│ 力扣题解[F] │\n");
SetPos(1,9);
printf("└───────────────┘\n");
color(8);
SetPos(1,11);
printf("按 返回。");
color(15);
SetPos(3,11);
printf("[`]");
char c;
while (1)
if (kbhit())
{
c=getch();
if (c=='s')
{
solution1();
goto loop_solution_head;
}
if (c=='d')
{
solution2();
goto loop_solution_head;
}
if (c=='f')
{
solution3();
goto loop_solution_head;
}
if (c=='`')
goto loop_solution_tail;
}
loop_solution_tail:
int Loop;
}
void System()
{
loop_system_head:
system("cls");
color(15);
printf("\n 准备中");
_sleep(500);
system("cls");
printf("\n 正在与Windows系统取得联系");
_sleep(1200);
system("cls");
printf("\n 正在与系统建立关联");
_sleep(2000);
system("cls");
printf("\n 正在启用管理员权限");
_sleep(800);
system("cls");
printf("\n 正在与计算机硬件建立关联");
_sleep(2400);
system("cls");
printf("\n 准备以启动");
_sleep(1000);
system("cls");
color(12);
SetPos(3,1);
printf("┌────────────┐\n");
SetPos(3,2);
printf("│ 关机[A] │\n");
SetPos(3,3);
printf("└────────────┘\n");
color(10);
SetPos(3,4);
printf("┌────────────┐\n");
SetPos(3,5);
printf("│ 重启[S] │\n");
SetPos(3,6);
printf("└────────────┘\n");
color(11);
SetPos(3,7);
printf("┌────────────┐\n");
SetPos(3,8);
printf("│ 注销[D] │\n");
SetPos(3,9);
printf("└────────────┘\n");
color(14);
SetPos(3,10);
printf("┌────────────┐\n");
SetPos(3,11);
printf("│ 休眠[F] │\n");
SetPos(3,12);
printf("└────────────┘\n");
color(8);
SetPos(1,14);
printf("按 返回。");
color(15);
SetPos(3,14);
printf("[`]");
char c;
while (1)
if (kbhit())
{
c=getch();
switch (c)
{
case 'a':
{
system("shutdown -s -t 0");
goto loop_system_head;
}
case 's':
{
system("shutdown -r");
goto loop_system_head;
}
case 'd':
{
system("shutdown -l");
goto loop_system_head;
}
case 'f':
{
system("shutdown -h");
goto loop_system_head;
}
case '`':
goto loop_system_tail;
}
}
loop_system_tail:
int Loop;
}
//========================================================================5
void run()
{
color(7);
char c;
while (1)
if (kbhit())
{
c=getch();
switch (c)
{
case 'a':
{
Calculator();
goto loop_run_tail;
}
case 's':
{
Game();
goto loop_run_tail;
}
case 'd':
{
Solution();
goto loop_run_tail;
}
case 'f':
{
System();
goto loop_run_tail;
}
}
}
loop_run_tail:
int Loop;
}
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Main
int main(void)
{
Pos();
printf("\n");
for (int i=1;i<=4;i++)
{
logoing();
printf("\n");
}
while (1)
{
lobby();
run();
}
return 0;
}