没用的C++程序

一个没啥大用的程序

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define S(i) Sleep(i)
#define cls system("cls");
#define ei else if
using namespace std;
bool agreedshutdown = false; //判断是否关闭
//项目名称
long long recentnum = 15, projectnum = 15, settingnum = 3;
string recentfilename[1010100]  = {};
string projectfilename[1010100] = {};
string settingfilename[1010100] = {" ", "声音", "亮度", "关于"};
//--------
HWND hwnd = GetConsoleWindow();
/*
HANDLE HOUT = GetStdHandle(STD_OUTPUT_HANDLE);    //获得控制台句柄
COORD NewSize = GetLargestConsoleWindowSize(HOUT);//获得控制台最大坐标,坐标以字符数为单位
NewSize.X -= 1;
NewSize.Y -= 1;    //可以不加,不加时显示滚动条
SetConsoleScreenBufferSize(HOUT, NewSize); //设置控制台缓冲区大小
SMALL_RECT DisplayArea={0,0,0,0};
DisplayArea.Right = NewSize.X;
DisplayArea.Bottom = NewSize.Y;
SetConsoleWindowInfo(HOUT, TRUE, &DisplayArea);    //设置控制台大小
//控制台已经最大化,但是初始位置不在屏幕左上角,添加如下代码
HWND hwnd = GetConsoleWindow();
ShowWindow(hwnd, SW_MAXIMIZE);    //窗体最大化
*/
void SetColorAndBackground(int ForgC, int BackC) {//单个字的颜色
//1深蓝,2深绿,3深青,4深红,5深紫,6深黄,7灰白(默认),8深灰
//9浅蓝,10浅绿,11浅青,12浅红,13浅紫,14浅黄,15白色,0黑色
	WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}
void gotoxy(long long x, long long y) {
	COORD pos;
	pos.X = 2 * x;
	pos.Y = y;
	SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
}
struct CMDset {
	void setfont(int size) {//字体、大小、粗细
		CONSOLE_FONT_INFOEX cfi;
		cfi.cbSize = sizeof cfi;
		cfi.nFont = 0;
		cfi.dwFontSize.X = 0;
		cfi.dwFontSize.Y = size;//设置字体大小
		cfi.FontFamily = FF_DONTCARE;
		cfi.FontWeight = FW_NORMAL;//字体粗细 FW_BOLD,原始为FW_NORMAL
		wcscpy_s(cfi.FaceName, L"Minecraft AE");//设置字体,必须是控制台已有的
		SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &cfi);
		HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
		CONSOLE_FONT_INFO consoleCurrentFont;
		GetCurrentConsoleFont(handle, FALSE, &consoleCurrentFont);
	}
} cmdset;
struct Start {
	struct Fileinput { /*注入文件名*/
		void recentfileinput() {
			CreateDirectory("./files",NULL );
			ifstream recent("./files/recent.whstu");
			if (!recent.is_open()) {
				ofstream recent_create("./files/recent.whstu");//如果文件不存在就创建文件
				recent_create.close();
			}
			string line;
			recentfilename[0] = {" "};
			long long i = 1;
			while (getline(recent, line)) {
				recentfilename[i] = line;
				i++;
			}
			recentnum = i - 1;
		}
		void projectfileinput() {
			CreateDirectory("./files",NULL );
			ifstream project("./files/project.whstu");
			if (!project.is_open()) {
				ofstream project_create("./files/project.whstu");//如果文件不存在就创建文件
				project_create.close();
			}
			string line;
			projectfilename[0] = {" "};
			long long i = 1;
			while (getline(project, line)) {
				projectfilename[i] = line;
				i++;
			}
			projectnum = i - 1;
		}
	} fileinput;

	void powerOn() {
		ShowWindow(hwnd, SW_MAXIMIZE);
		cmdset.setfont(30);
		cout << "\n  ";
		SetColorAndBackground(4, 12);
		cout << "W";
		SetColorAndBackground(6, 14);
		cout << "H";
		SetColorAndBackground(2, 10);
		cout << "S";
		SetColorAndBackground(1, 9);
		cout << "T";
		SetColorAndBackground(13, 5);
		cout << "U";
		SetColorAndBackground(0, 0);
		cout << " ";
		SetColorAndBackground(15, 8);
		cout << "Studio";
		SetColorAndBackground(7, 0);
		S(5000);
		cls
		gotoxy(13, 10);
		cout << "S";
		Sleep(1000);
		cout << "\b\bS  ";
		S(100);
		cout << "\b\b\b\bS  ";
		S(100);
		cout << "\b\b\b\bS  ";
		S(100);
		cout << "\b\b\b\bS  ";
		S(100);
		cout << "\b\b\b\bS  ";
		S(100);
		cout << "\b\b\b\bS \b";
		S(100);
		cout << "l";
		S(100);
		cout << "y";
		S(100);
		cout << "t";
		S(100);
		cout << "h";
		S(100);
		cout << "e";
		S(100);
		cout << "r";
		S(100);
		cout << "i";
		S(100);
		cout << "n";
		S(100);
		cout << "  O";
		S(100);
		cout << "S";
		S(4000);
		system("cls");
		cmdset.setfont(16);
		return;
	}
	void Lock(string pass) {
		while (true) {
			cout << "请输入密码:";
			string in;
			cin >> in;
			if (in == pass) {
				return;
			} else {
				cout << "再试一次";
				Sleep(1000);
				system("cls");
			}
		}
	}
	void prepareStart() {
		cout << "\n正在准备Slytherin OS";
		S(500);
		system("ipconfig /flushdns");
		S(100);
		system("ipconfig");
		S(100);
		cls
		cout << "正在导入文件...";
		fileinput.projectfileinput();
		fileinput.recentfileinput();
		cout << "\n完成。\n";
		S(100);
		cout << "欢迎...";
	}
} start;
//apps
struct Filemanager { /*文件管理*/
	void createfile(string name) {
		return;
	}
	void deletefile(string name) {
		return;
	}
	void fileinfo(string name) {
		return;
	}
	void editfile(string name) {
		return;
	}
} filemanager;
struct Setting {
	void voice() {
		return;
	}
	void light() {
		return;
	}
	void about() {
		//初始化
		gotoxy(0, 3);
		SetColorAndBackground(7, 0);
		for (int i = 0; i < 15; i++) {
			cout << "                              \n";
		}
		gotoxy(0, 3);
		//--------
		cout << "\nPowered by\n\n ";
		S(1000);
		SetColorAndBackground(4, 12);
		cout << " W ";
		SetColorAndBackground(6, 14);
		cout << " H ";
		SetColorAndBackground(2, 10);
		cout << " S ";
		SetColorAndBackground(1, 9);
		cout << " T ";
		SetColorAndBackground(13, 5);
		cout << " U ";
		SetColorAndBackground(0, 0);
		cout << "   ";
		SetColorAndBackground(15, 8);
		cout << " S t u d i o ";
		SetColorAndBackground(7, 0);
		S(3000);
		cout << "\n";
		//写入版本号 
		CreateDirectory("./info",NULL );
		ofstream info("./info/info.txt");
		info<<"Slytherin OS 0.2_Build20240807152900_DeveloperBeta3"< 1) {
							gotoxy(0, 2 + file);
							SetColorAndBackground(7, 0);
							cout << recentfilename[file];
							file--;
							gotoxy(0, 2 + file);
							SetColorAndBackground(0, 7);
							cout << recentfilename[file];
						}
						break;
					}
					case 'b': {
						return;
					}
				}
			}
		}
		return;
	}
	void project() {/*文件*/
		//初始化
		gotoxy(0, 3);
		SetColorAndBackground(7, 0);
		for (int i = 0; i < max(recentnum, settingnum) + 3; i++) {
			cout << "                              \n";
		}
		gotoxy(0, 3);
		SetColorAndBackground(0, 7);
		cout << projectfilename[1] << endl;
		SetColorAndBackground(7, 0);
		for (int i = 2; i <= projectnum; i++) {
			cout << projectfilename[i] << endl;
		}
		int file = 1;
		//---------------
		while (1) {
			if ( _kbhit() ) {
				char x = _getch();
				switch (x) {
					case ' ': {
						/*运行*/
						break;
					}
					case 'a': {
						return;
					}
					case 'd': {
						return;
					}
					case 'b': {
						return;
					}
					case 's': {
						if (file < projectnum) {
							gotoxy(0, 2 + file);
							SetColorAndBackground(7, 0);
							cout << projectfilename[file];
							file++;
							gotoxy(0, 2 + file);
							SetColorAndBackground(0, 7);
							cout << projectfilename[file];
						}
						break;
					}
					case 'w' : {
						if (file > 1) {
							gotoxy(0, 2 + file);
							SetColorAndBackground(7, 0);
							cout << projectfilename[file];
							file--;
							gotoxy(0, 2 + file);
							SetColorAndBackground(0, 7);
							cout << projectfilename[file];
						}
						break;
					}
				}
			}
		}
		return;
	}
	void settings() {/*设置*/
		//初始化
		gotoxy(0, 3);
		SetColorAndBackground(7, 0);
		for (int i = 0; i < projectnum + 3; i++) {
			cout << "                              \n";
		}
		gotoxy(0, 3);
		SetColorAndBackground(0, 7);
		cout << settingfilename[1] << endl;
		SetColorAndBackground(7, 0);
		for (int i = 2; i <= settingnum; i++) {
			cout << settingfilename[i] << endl;
		}
		int file = 1;
		//---------------
		while (1) {
			if ( _kbhit() ) {
				char x = _getch();
				switch (x) {
					case ' ': {
						switch (file) {
							case 3: {
								com_whstu_setting.about();
								break;
							}
						}
						break;
					}
					case 'a': {
						return;
					}
					case 'd': {
						return;
					}
					case 'b': {
						return;
					}
					case 's': {
						if (file < settingnum) {
							gotoxy(0, 2 + file);
							SetColorAndBackground(7, 0);
							cout << settingfilename[file];
							file++;
							gotoxy(0, 2 + file);
							SetColorAndBackground(0, 7);
							cout << settingfilename[file];
						}
						break;
					}
					case 'w' : {
						if (file > 1) {
							gotoxy(0, 2 + file);
							SetColorAndBackground(7, 0);
							cout << settingfilename[file];
							file--;
							gotoxy(0, 2 + file);
							SetColorAndBackground(0, 7);
							cout << settingfilename[file];
						}
						break;
					}
				}
			}
		}
		return;
	}
	void head() { /*标签栏*/
		//初始化
		title();
		gotoxy(0, 2);
		SetColorAndBackground(7, 0);
		cout << "                                                    ";
		gotoxy(0, 2);
		cout << "  |";
		SetColorAndBackground(0, 7);
		cout << "  主页  ";
		SetColorAndBackground(7, 0);
		cout << " |  最近  |  文件  |  设置  |";
		home();
		int channel = 1;
		//---------------
		while (1) {
			if ( _kbhit() ) {
				char x = _getch();
				switch (x) {
					case 'a' : {
						if (channel > 1) {
							channel--;
						}
						break;
					}
					case 'd': {
						if (channel < 4) {
							channel++;
						}
						break;
					}
					case 'b': {
						return;
					}
				}
				if (channel == 1) {
					gotoxy(0, 2);
					SetColorAndBackground(7, 0);
					cout << "                                                    ";
					gotoxy(0, 2);
					cout << "  |";
					SetColorAndBackground(0, 7);
					cout << "  主页  ";
					SetColorAndBackground(7, 0);
					cout << " |  最近  |  文件  |  设置  |";
					home();
				}
				if (channel == 2) {
					gotoxy(0, 2);
					SetColorAndBackground(7, 0);
					cout << "                                                    ";
					gotoxy(0, 2);
					cout << "  |  主页  |";
					SetColorAndBackground(0, 7);
					cout << "  最近  ";
					SetColorAndBackground(7, 0);
					cout << " |  文件  |  设置  |";
					recent();
				}
				if (channel == 3) {
					gotoxy(0, 2);
					SetColorAndBackground(7, 0);
					cout << "                                                    ";
					gotoxy(0, 2);
					cout << "  |  主页  |  最近  |";
					SetColorAndBackground(0, 7);
					cout << "  文件  ";
					SetColorAndBackground(7, 0);
					cout << " |  设置  |";
					project();
				}
				if (channel == 4) {
					gotoxy(0, 2);
					SetColorAndBackground(7, 0);
					cout << "                                                    ";
					gotoxy(0, 2);
					cout << "  |  主页  |  最近  |  文件  |";
					SetColorAndBackground(0, 7);
					cout << "  设置  ";
					SetColorAndBackground(7, 0);
					cout << " |";
					settings();
				}
			}
		}
	}
} launcher;
void shutdownagreement() {//关闭提示
	cls
	cout << "确实要关闭吗?(y/n)";
	while (1) {
		if ( _kbhit() ) {
			char x = _getch();
			switch (x) {
				case 'y': {
					agreedshutdown = true;
					return;
				}
				case 'n': {
					agreedshutdown = false;
					return;
				}
			}
		}
	}
}

int main() {
	start.powerOn();
	cls
	start.Lock("123456");
	cls
	S(10);
	cout << "欢迎...";
	start.prepareStart();
	S(500);
	cls
	while (agreedshutdown == false) {
		ShowWindow(hwnd, SW_MAXIMIZE);
		cmdset.setfont(16);
		launcher.head();
		shutdownagreement();
	}
	return 0;
}
/*
Slytherin OS 版本0.2
最后更新:20240807

更新日志
20240807
修复了取消退出后无法控制UI的问题;增加了项目名称读取程序 
20240805
UI编写
*/

你可能感兴趣的:(c++)