随机点名系统1.20版本(建立于c++)(有VIP的麻烦看另一篇VIP的!!!谢谢)

目录

引言

系统需求分析

技术选型与架构设计

核心功能实现

扩展功能

总结与展望

代码大纲

美化预期

代码

美化输出

随机抽取动画

1. 单人名单打印

2. 双人名单打印

3. 列打印

4. 组打印

主函数

完整代码

效果图片

总结


引言

需要源文件或exe的可以私信我,也可以代理编辑

  • 随机点名系统的应用场景(课堂、会议、活动等
  • 传统点名方式的局限性
  • 技术解决方案的价值与优势
系统需求分析
  • 功能需求:随机选择、多功能点名、指定性操作
  • 非功能需求:响应速度、兼容性、界面美化
技术选型与架构设计
  • 应用语言:C++
  • 随机算法设计:随机数生成(Cpp)
核心功能实现
  • 名单录入:仅支持代码内更改
  • 随机选择:算法实现防伪随机现象
  • 交互设计:点击触发、动画效果、舒适界面
扩展功能
  • 多模式支持:单人/多人抽取、分组抽取
总结与展望
  • 项目总结:目前仍只实现控制台模式,后续等待开发,且希望更多技术人员参与开发
  • 未来改进方向:界面美化、动态增强、支持本地导入以及动态增删改查、AI 语音合成、云同步等功能

代码大纲

1. 单人点名

2. 双人点名

3. 列点名

4. 组点名

美化预期

1.通过较为和谐的颜色调节整体页面。

2.通过更改字体颜色等使程序更加完美。

3.通过动画使程序美观

代码

美化输出

void slowout(char* p)
{
    while (1)
    {
        if (*p != 0)
            printf("%c", *p++);
        else
            break;
        Sleep(20);
    }
    Sleep(500);
}

上述代码为让文字逐字输出,可以使字符串缓慢输出

void setsize(int col, int row)
{
	char cmd[64];
	sprintf(cmd, "mode con cols=%d lines=%d", col, row);
	system(cmd);
}

这一串作用也是美化输出

void HideCursor()
{
	CONSOLE_CURSOR_INFO cursor_info = {1, 0};
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}

以上为隐藏光标的函数

随机抽取动画

这一部分作为随机抽取动画,会在抽取式效果更真实

1. 单人名单打印
void all_print()
{
	string name[50]={"名单"};
    for(int i=0;i<44;i++){
    	cout<<"恭喜幸运的"; 
    	cout<<name[i];
    	cout<<"准备发言"; 
    	Sleep(0.5);
    	system("cls");
	}
}
2. 双人名单打印
void all_print_two()
{
	string name[50]={"名单"};
    for(int i=1;i<44;i++){
    	cout<<"恭喜幸运的"; 
    	cout<<name[i];
    	cout<<"和"; 
    	cout<<name[i-1];
    	cout<<"准备发言"; 
    	Sleep(0.5);
    	system("cls");
	}
}
3. 列打印
void all_print_lie()
{
	string lie[9]={"第一列","第二列","第三列","第四列","第五列","第六列","第七列","第八列"}; 
	for(int i=0;i<8;i++){
		for(int j = 0;j<8;j++){
			cout<<"恭喜幸运的"; 
    		cout<<lie[j];
    		cout<<"选择列内员或全体准备发言"; 
    		Sleep(0.5);
    		system("cls");
		}
    	
    	
	}
}

这里我分了8列,有需求的可以自己改变

4. 组打印
void all_print_zu()
{
	string zu[5]={"第一组","第二组","第三组","第四组"}; 
	for(int i=0;i<4;i++){
		for(int j = 0;j<4;j++){
			cout<<"恭喜幸运的"; 
    		cout<<zu[j];
    		cout<<"选择组员或全体准备发言"; 
    		Sleep(1);
    		system("cls");
		}
    	
    	
	}
}

这里分了4组

主函数

下面就是随机点名系统的主体了,包含了开始的界面、说明以及随机抽取内容

int main()
{
    int ch;
    SetConsoleTitle("随机点名系统1.20 Willstar");
    HideCursor();
    HANDLE hOutPut = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_FONT_INFOEX consoleCurrentFontEx;
   	consoleCurrentFontEx.cbSize = sizeof(CONSOLE_FONT_INFOEX);
    consoleCurrentFontEx.nFont = 0;
    consoleCurrentFontEx.dwFontSize.X = 60;//是字体的宽度 
   	consoleCurrentFontEx.dwFontSize.Y = 100;//字体的高度 
    consoleCurrentFontEx.FontFamily = TMPF_VECTOR;
    consoleCurrentFontEx.FontWeight = 400;//字体的粗细(正常字体400 加粗700)
    //wcscpy_s(consoleCurrentFontEx.FaceName, __TEXT("Courier"));
    SetCurrentConsoleFontEx(hOutPut, FALSE, &consoleCurrentFontEx);
    system("color E4");
    //system("color 02");
    cout<<"                随机点名系统                \n                   1.2.0                \n                奶黄限定版本\n             Willstar团队 出品"<<endl; 
    cout<<"系统说明:\n1.按下R键随机抽取\n2.按下T键随机抽取2人\n3.按下E键抽取小组\n4.按下Y键抽取列\n5.抽取后按下任意键重新抽取\n6.禁止按下数字/快捷键/功能键,严禁刷屏\n7.按下P键全体安静\n"; 
    string name[50]={"名单"};
    string zu[5]={"第一组","第二组","第三组","第四组"}; 
    string lie[9]={"第一列","第二列","第三列","第四列","第五列","第六列","第七列","第八列"}; 
	Sleep(1000);
    system("pause");
    while (1)
    {
    	system("cls");
    	system("color E4");

        cout << "按“R”随机抽取1人\n按“T”随机抽取2人\n按“E”先抽取一组\n按“Y”抽取一列" << endl;
        srand(time(NULL));  // 初始化随机数生成器
    	int randinta = rand() % 44;  // 生成 0 到 99 之间的随机数
    	int randintb = rand() % 44;  // 生成 0 到 99 之间的随机数
    	int randintc = rand() % 4;
    	int randintd = rand() % 9;
    	
    	srand(time(NULL));  // 初始化随机数生成器
        ch = getch();
        switch (ch-32) {
        case 87:all_print();
				slowout("恭喜幸运的");
        		cout<<"A";
        		slowout("准备发言\n"); break;
        case 83:all_print();
				slowout("恭喜幸运的");
        		cout<<"B";
        		slowout("准备发言\n");  break;
        case 65:all_print();
				slowout("恭喜幸运的");
        		cout<<"C";
        		slowout("准备发言\n"); ; break;
        case 68:all_print();
				slowout("恭喜幸运的");
        		cout<<"D";
        		slowout("准备发言\n");  break;
        case 90:all_print_two();
				slowout("恭喜幸运的");
        		cout<<"A和B";
        		slowout("准备发言\n");  break;
        case 88:all_print_two();
				slowout("恭喜幸运的");
        		cout<<"C和D";
        		slowout("准备发言\n");  break;
        case 67:all_print_two();
				slowout("恭喜幸运的");
        		cout<<"E和F";
        		slowout("准备发言\n");  break;
        case 82:all_print();
				slowout("恭喜幸运的");
        		cout<<name[randinta];
        		slowout("准备发言\n");
        		srand(time(NULL));  // 初始化随机数生成器
				break;
				
		case 84:all_print_two();
				slowout("恭喜幸运的");
        		cout<<name[randinta];
        		cout<<"和";
        		cout<<name[randintb];
        		slowout("准备发言\n");
        		srand(time(NULL));  // 初始化随机数生成器
				break;
		case 69:all_print_zu();
				slowout("恭喜幸运的");
        		cout<<zu[randintc];
        		slowout("选择组员或全体准备发言\n");
        		srand(time(NULL));  // 初始化随机数生成器
				break;
		case 89:all_print_lie();
				slowout("恭喜幸运的");
        		cout<<lie[randintd];
        		slowout("选择列内员或全体准备发言\n");
        		srand(time(NULL));  // 初始化随机数生成器
				break;
		case 80:system("cls");
				system("color fc");
				for(int i=1;i<=10;i++){
					cout<<"全体保持安静\n";
				}
				break;
        default:slowout("输入有误!\n");break;
        }  
        srand(time(NULL));  // 初始化随机数生成器
		system("pause");
        srand(time(NULL));  // 初始化随机数生成器
		
    }
END:;
}

首先,通过aksma值接受键盘输入,然后根据输入内容进行相应的操作。

当然,这里也存在一些“暗箱操作”,比如按下指定按键时,你可以指定一个人或两个人上台发言或回答问题,这些都可以自己更改。

按键WASD:指定单人

按键ZXC:指定双人

完整代码


#include<bits/stdc++.h>
#include<windows.h>
#include<dir.h>
#include <conio.h>
#include<Windows.h>//必须包含这个头
#include<iostream>
using namespace std;
void slowout(char* p)
{
    while (1)
    {
        if (*p != 0)
            printf("%c", *p++);
        else
            break;
        Sleep(20);
    }
    Sleep(500);
}
void setsize(int col, int row)
{
	char cmd[64];
	sprintf(cmd, "mode con cols=%d lines=%d", col, row);
	system(cmd);
}
void all_print()
{
	string name[50]={"名单"};
    for(int i=0;i<44;i++){
    	cout<<"恭喜幸运的"; 
    	cout<<name[i];
    	cout<<"准备发言"; 
    	Sleep(0.5);
    	system("cls");
	}
}
void all_print_two()
{
	string name[50]={"名单"};
    for(int i=1;i<44;i++){
    	cout<<"恭喜幸运的"; 
    	cout<<name[i];
    	cout<<"和"; 
    	cout<<name[i-1];
    	cout<<"准备发言"; 
    	Sleep(0.5);
    	system("cls");
	}
}
void all_print_zu()
{
	string zu[5]={"第一组","第二组","第三组","第四组"}; 
	for(int i=0;i<4;i++){
		for(int j = 0;j<4;j++){
			cout<<"恭喜幸运的"; 
    		cout<<zu[j];
    		cout<<"选择组员或全体准备发言"; 
    		Sleep(1);
    		system("cls");
		}
    	
    	
	}
}
void all_print_lie()
{
	string lie[9]={"第一列","第二列","第三列","第四列","第五列","第六列","第七列","第八列"}; 
	for(int i=0;i<8;i++){
		for(int j = 0;j<8;j++){
			cout<<"恭喜幸运的"; 
    		cout<<lie[j];
    		cout<<"选择列内员或全体准备发言"; 
    		Sleep(0.5);
    		system("cls");
		}
    	
    	
	}
}
void HideCursor()
{
	CONSOLE_CURSOR_INFO cursor_info = {1, 0};
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
int main()
{
    int ch;
    SetConsoleTitle("随机点名系统1.20 Willstar");
    HideCursor();
    HANDLE hOutPut = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_FONT_INFOEX consoleCurrentFontEx;
   	consoleCurrentFontEx.cbSize = sizeof(CONSOLE_FONT_INFOEX);
    consoleCurrentFontEx.nFont = 0;
    consoleCurrentFontEx.dwFontSize.X = 60;//是字体的宽度 
   	consoleCurrentFontEx.dwFontSize.Y = 100;//字体的高度 
    consoleCurrentFontEx.FontFamily = TMPF_VECTOR;
    consoleCurrentFontEx.FontWeight = 400;//字体的粗细(正常字体400 加粗700)
    //wcscpy_s(consoleCurrentFontEx.FaceName, __TEXT("Courier"));
    SetCurrentConsoleFontEx(hOutPut, FALSE, &consoleCurrentFontEx);
    system("color E4");
    //system("color 02");
    cout<<"                随机点名系统                \n                   1.2.0                \n                奶黄限定版本\n             Willstar团队 出品"<<endl; 
    cout<<"系统说明:\n1.按下R键随机抽取\n2.按下T键随机抽取2人\n3.按下E键抽取小组\n4.按下Y键抽取列\n5.抽取后按下任意键重新抽取\n6.禁止按下数字/快捷键/功能键,严禁刷屏\n7.按下P键全体安静\n"; 
    string name[50]={"名单"};
    string zu[5]={"第一组","第二组","第三组","第四组"}; 
    string lie[9]={"第一列","第二列","第三列","第四列","第五列","第六列","第七列","第八列"}; 
	Sleep(1000);
    system("pause");
    while (1)
    {
    	system("cls");
    	system("color E4");

        cout << "按“R”随机抽取1人\n按“T”随机抽取2人\n按“E”先抽取一组\n按“Y”抽取一列" << endl;
        srand(time(NULL));  // 初始化随机数生成器
    	int randinta = rand() % 44;  // 生成 0 到 99 之间的随机数
    	int randintb = rand() % 44;  // 生成 0 到 99 之间的随机数
    	int randintc = rand() % 4;
    	int randintd = rand() % 9;
    	
    	srand(time(NULL));  // 初始化随机数生成器
        ch = getch();
        switch (ch-32) {
        case 87:all_print();
				slowout("恭喜幸运的");
        		cout<<"A";
        		slowout("准备发言\n"); break;
        case 83:all_print();
				slowout("恭喜幸运的");
        		cout<<"B";
        		slowout("准备发言\n");  break;
        case 65:all_print();
				slowout("恭喜幸运的");
        		cout<<"C";
        		slowout("准备发言\n"); ; break;
        case 68:all_print();
				slowout("恭喜幸运的");
        		cout<<"D";
        		slowout("准备发言\n");  break;
        case 90:all_print_two();
				slowout("恭喜幸运的");
        		cout<<"A和B";
        		slowout("准备发言\n");  break;
        case 88:all_print_two();
				slowout("恭喜幸运的");
        		cout<<"C和D";
        		slowout("准备发言\n");  break;
        case 67:all_print_two();
				slowout("恭喜幸运的");
        		cout<<"E和F";
        		slowout("准备发言\n");  break;
        case 82:all_print();
				slowout("恭喜幸运的");
        		cout<<name[randinta];
        		slowout("准备发言\n");
        		srand(time(NULL));  // 初始化随机数生成器
				break;
				
		case 84:all_print_two();
				slowout("恭喜幸运的");
        		cout<<name[randinta];
        		cout<<"和";
        		cout<<name[randintb];
        		slowout("准备发言\n");
        		srand(time(NULL));  // 初始化随机数生成器
				break;
		case 69:all_print_zu();
				slowout("恭喜幸运的");
        		cout<<zu[randintc];
        		slowout("选择组员或全体准备发言\n");
        		srand(time(NULL));  // 初始化随机数生成器
				break;
		case 89:all_print_lie();
				slowout("恭喜幸运的");
        		cout<<lie[randintd];
        		slowout("选择列内员或全体准备发言\n");
        		srand(time(NULL));  // 初始化随机数生成器
				break;
		case 80:system("cls");
				system("color fc");
				for(int i=1;i<=10;i++){
					cout<<"全体保持安静\n";
				}
				break;
        default:slowout("输入有误!\n");break;
        }  
        srand(time(NULL));  // 初始化随机数生成器
		system("pause");
        srand(time(NULL));  // 初始化随机数生成器
		
    }
END:;
}

效果图片

总结

以上就是全部内容了

复制代码麻烦在评论区吱一声

有程序猿想合作的麻烦私信或邮箱加入我们

这里是Willstar团队官方账号,下期不见不散。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值