随即抽取的小程序

没事情干,好无聊,造了个程序。

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <ctime>
#include <cmath>
#include <windows.h>
using namespace std;
int n;
int b[40],sh[1000],ds;
FILE *p,*p1,*p2;
struct am {
	int hao;
	char m[100];
	int ok;
	int hengz,shuz;
} name[40];
int kan() {
	int i;
	for(i=0; i<n; i++) {
		if(name[i].ok==0)
			return 0;
	}
	return 1;
}
void qing() {
	int i;
	for(i=0; i<n; i++) {
		name[i].ok=0;
	}
}
int fang() {
	int i,j;
	j=0;
	for(i=0; i<n; i++) {
		if(name[i].ok==0) {
			b[j]=i;
			j++;
		}
	}
	return j;
}
void chou(int h) {
	int j,x;
	while(h--) {
		if(kan()==1) {
			MessageBox(NULL,"所有人都点过一遍了!","提示", MB_ICONEXCLAMATION );
			qing();
		}
		j=fang();
		Sleep(100);
		x=rand()%j;
		sh[ds]=b[x];
		ds++;
		cout<<name[b[x]].hao<<" "<<name[b[x]].m<<endl;
		name[b[x]].ok=1;
	}
}
void chouwj(int h) {
	int j,x;
	while(h--) {
		if(kan()==1) {
			MessageBox(NULL,"所有人都点过一遍了!","提示", MB_ICONEXCLAMATION );
			qing();
		}
		j=fang();
		Sleep(100);
		x=rand()%j;
		sh[ds]=b[x];
		ds++;
		cout<<name[b[x]].m<<"\t";
		fprintf(p2,"%s\t",name[b[x]].m);
		name[b[x]].ok=1;
	}
}
int main() {
	cout<<"初始化时间函数中……"<<endl;
	//Sleep(2000);
	srand((unsigned)time(NULL));
	cout<<"打开文件中……"<<endl;
	//Sleep(1000);
	p=fopen("name.txt","r");
	p2=fopen("座位.txt","a");
	int i,t;
	i=0;
	if(p==NULL) {
		cout<<"无数据文件!"<<endl;
		system("pause");
		return 0;
	}
	while(fscanf(p,"%d\t%s",&name[i].hao,name[i].m)!=EOF) {
		i++;
	}
	n=i;
	cout<<"初始化函数中……"<<endl;
	ds=0;
	//Sleep(2000);
	for(i=0; i<n; i++) {
		name[i].ok=0;
	}
	cout<<"准备完成!"<<endl;
	//Sleep(1000);
	system("cls");
	while(1) {
		cout<<"输入1:点一个人名"<<endl<<"输入2:点多个人名"<<endl<<"输入3:手动操纵"<<endl<<"输入4:将人名的顺序放入文件中"<<endl<<"输入5:生成座位表"<<endl<<"输入6:其他功能"<<endl;
		int g;
		cin>>g;
		if(g==1) {
			cout<<"名单如下:"<<endl;
			chou(1);
			system("pause");
			system("cls");
		}
		if(g==2) {
			int f;
			cout<<"输入要点人名的个数:";
			cin>>f;
			cout<<"名单如下:"<<endl;
			chou(f);
			system("pause");
			system("cls");
		}
		if(g==3) {
			cout<<"输入这个人的号码系统将把它设置为点过:";
			int jb;
			cin>>jb;
			for(i=0; i<n; i++) {
				if(name[i].hao==jb)
					name[i].ok==1;
			}
			cout<<"设置成功"<<endl;
		}
		if(g==4) {
			p1=fopen("顺序.txt","w");
			for(int fr=0; fr<ds; fr++)
				fprintf(p1,"%d\t%s\n",name[sh[fr]].hao,name[sh[fr]].m);
			fclose(p1);
			cout<<"成功放入文件中"<<endl;
			system("pause");
			system("cls");
		}
		if(g==5) {
			cout<<"此功能不稳定,可能会卡死,请谨慎使用!"<<endl;
			int lsh,hsh;
			int duo,pai;
			cout<<"请输入多少行多少列"<<endl;
			cin>>hsh>>lsh;
			cout<<"正在处理数据"<<endl;
			cout<<"经过处理后发现"<<endl;
			if(lsh*hsh<n) {
				cout<<"装不下了!"<<endl;
				system("pause");
				system("cls");
				continue;
			}
			pai=n/lsh;
			duo=n%lsh;
			cout<<"坐满"<<pai<<"排"<<"最后一排多"<<duo<<"人"<<endl;
			for(int xhbl=pai; xhbl>=1; xhbl--) {
				chouwj(lsh);
				cout<<endl;
				fprintf(p2,"\n");
			}
			chouwj(duo);
			cout<<endl;
			fprintf(p2,"\n");
			fprintf(p2,"---------------萌萌哒的分割线---------------\n");
			system("pause");
			system("cls");
		}
		if(g==6) {
			int gn;
			cout<<"输入1:清屏 \n输入2:退出 \n输入3:显示数据源\n";
			cin>>gn;
			if(gn==1) {
				system("cls");
			}
			if(gn==2) {
				exit(0);
			}
			if(gn==3) {
				int diang=0,mdian=0;
				cout<<"正在处理"<<endl;
				//Sleep(1000);
				for(i=0; i<n; i++) {
					if(name[i].ok==0)
						mdian++;
					else
						diang++;
				}
				cout<<"有"<<diang<<"人被点过  "<<"   "<<"有"<<mdian<<"人没被点过"<<endl;
				system("pause");
				system("cls");
			}
		}
	}
	//by devvs
	return 0;
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值