项目优化2-调整终端大小,居中显示

在这里插入图片描述

#include <iostream>
#include <windows.h>
#include <string>

using namespace std;

//定义宏
#define WIDTH   60  //宽度
#define HIEGHT  20 //高度


//设置控制台大小
void The_console(void) {
	//设置终端窗口的大小
	// cols=宽度    lines=高度
	//mode  con  cols=80  lines=25

	char print[128];  //打印
	sprintf(print,"mode con cols=%d lines=%d", WIDTH, HIEGHT); //用宏代替高度跟宽度
	//system(" mode con cols=80 lines=20");
	
	system(print);//把宽度跟高度用字符串方式打印进终端

}


//初始化
void Initialize_the(void) {  
	string name;  //名字
	string password; //密码

	while (1) {
		system("cls");
		cout << "请输入账号:";
		cin >> name;
		cout << "请输入密码:";
		cin >> password;

		//判断密码是否正确
		if( name =="dandan" && password =="123456") {
			break;
		} else {
			cout << "账号或密码错误!!!" << endl;
			cout << "请重新输入。。。" << endl;
			system("pause");
		}
	}
}
/**
//菜单选项
void The_menu(void) {
	system("cls");
	//登录菜单?
	cout << "---黑客攻击系统---" << endl;
	cout << "1.404攻击" << endl;
	cout << "2.篡改攻击" << endl;
	cout << "3.攻击修复" << endl;
	cout << "4.查看攻击记录" << endl;
	cout << "5.退出" << endl;
	cout << "请选择:";

}
**/
//居中打印标题
void The_title(string print) {
	int blank = (WIDTH - print.length()) /2;
	for(int i=0; i<blank; ++i) {
		printf(" ");
	}
	cout << print << endl;
}

//登路菜单 居中打印
void Print_center(void) {
	//定义一个人字符串  计算长度
	string lienth[] ={ 
		"1。404攻击",
		"2.篡改攻击",
		"3.攻击恢复",
		"4.攻击查看",
		"5.退出",
		"请选择:",
	};

	system("cls");
	The_title("---黑客攻击系统---");
	int storage = 0;  //存储
	//计算单个字符长度  循环读取并计算
	int long1 = sizeof(lienth)/sizeof(lienth[0]);
	for(int i=0; i<long1; ++i) {
		if(lienth[i].length() >  storage) {
			storage = lienth[i].length();
		}
	}
    //打印空格
	int blank = (WIDTH - storage) /2;
	for(int i=0; i<long1; ++i) {
		for(int i=0; i<blank; ++i) {
			printf(" ");
		}
	cout << lienth[i] << endl;
	}
	
}

int Menu_options(void) {
	int n = 0;
	while (1) {
		cin >> n;
		if (cin.fail()) {
			cin.clear();
			cin.clear();
			cout << "无效输入. 请重新输入." << endl;
			system("pause");
		} else {
			break;
		}
	}
	return n;
}

void The_menu1(void) {
	system("cls");
	cout << "404攻击" << endl;
	cout << "待实现。。。" << endl;
	system("pause");
}

void The_menu2(void) {
	system("cls");
	cout << "篡改攻击" << endl;
	cout << "待实现。。。" << endl;
	system("pause");
}

void The_menu3(void) {
	system("cls");
	cout << "攻击修复" << endl;
	cout << "待实现。。。" << endl;
	system("pause");
}

void The_menu4(void) {
	system("cls");
	cout << "查看攻击记录" << endl;
	cout << "待实现。。。" << endl;
	system("pause");
}


void The_menu6(void) {
	system("cls");
	cout << "输入错误请重新输入..;...." << endl;
	system("pause");
}

int main(void) {
	The_console(); //设置控制台终端大小
	Initialize_the(); //初始化
	while(1) {
		//The_menu(); //菜单
		Print_center();  //居中打印菜单
		int p = Menu_options(); //菜单选项
			switch (p) {
				case 1:
					The_menu1();
					break;
				case 2:
					The_menu2();
					break;	
				case 3:
					The_menu3();
					break;
				case 4:
					The_menu4();
					break;
				case 5:
					return 0;
					break; //结束
				default:
					The_menu6(); 
					break;
			}
	}
	system("pause");
	return 0;
}

/**
	项目优化2
	调整终端大小
	优化成“居中显示”
**/

项目优化2
调整终端大小
优化成“居中显示”
在这里插入图片描述

#include <iostream>
#include <Windows.h>
#include <string>

using namespace std;

#define WIDTH		40
#define HEIGHT		15

void init(void) {
	//mode con cols=80 lines=40
	char cmd[128]; 
	sprintf(cmd, "mode con cols=%d lines=%d", WIDTH, HEIGHT);
	system(cmd);
}

void printInMiddle(string msg) {
	int space = (WIDTH - msg.length()) /2 ;
	for (int i=0; i<space; i++) {
		cout << " ";
	}
	cout << msg << endl;
}

void menuShow(void) {
	string menu[] = {
		"1.网站404攻击",
		"2.网站篡改攻击",
		"3.网站攻击修复",
		"4.查看攻击记录",
		"5.退出"
	};

	system("cls");
	printInMiddle("---黑客攻击系统---");

	// 计算菜单最大长度:
	int max = 0;
	int menuCount = sizeof(menu)/sizeof(menu[0]);
	for (int i=0; i< menuCount; i++) {
		if (menu[i].length() > max) {
			max = menu[i].length();
		}
	}

	int leftSpace = (WIDTH - max) / 2;

	for (int i=0; i<menuCount; i++) {
		for (int i=0; i<leftSpace; i++){
			printf(" ");
		}
		cout << menu[i] << endl;
	}
}

int main(void) {
init();
......
}

在这里插入图片描述

发布了73 篇原创文章 · 获赞 0 · 访问量 9878

猜你喜欢

转载自blog.csdn.net/weixin_45399178/article/details/104523402