【重磅】多功能集合程序

博主在假期制作了一款包含四个功能的集合程序,适用于Windows系统,采用C++编写,总共有753行代码。程序运行可能需要在Windows10环境下以达到最佳效果,并提示用户在启动时按Shift键切换到英文模式。程序可能会被360文件防护程序拦截,需允许运行。其中的深度睡眠功能可能需要通过电源键唤醒电脑,且所有系统操作立即执行,后果自负。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多功能集合程序重磅上线! ——摘自《C优快云日报》

放假的前三天,我没有作业,闲着没事做了一个多功能集合程序。结果还没写完,作业布置下来了......所以现在才写完,发布出来。

这个程序拥有四个功能,个人认为还算比较精美,至少不是黑白框

 

(图标有点像某著名公司的logo,纯属巧合) 

程序不难,代码也不长,只有753行。


注意事项:

  1. Windows系统,C++运行
  2. 建议使用Windows10系统,以达到完美运行效果(如上图)。因系统版本电脑本身显示等原因,程序显示可能出现分离错位等现象,严重时可能导致程序无法正常运行
  3. 打开程序后请按Shift键调成英文模式(每次打开运行都要按)。
  4. 程序打开网页的时候,如果电脑上安装了360文件防护程序,可能会出现下面的弹窗

    请点击允许程序运行
  5. 建议不要把程序最大化,否则可能影响美观。
  6. 程序中的给电脑睡眠功能为深度睡眠,可能无法用单机键盘或单机鼠标的方式唤醒电脑。此时,请用正常开机的方法,按电源键,即可唤醒电脑。
  7. 程序中的四个系统操作都是立刻执行,作死带来后果作者概不负责。

源代码:

未经允许,严禁转载!

​
#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;
}

​

原创文章,未经允许,严禁转载!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值