新生——S型分班算法

package org.zttc.service;

public class DistributeClass {
	
	public static final Boolean order =true;
	
	public static void main(String[] args) {
		
		//把分班后数据存入二位数组
		int test[][] = divideByClass(64,8,order);
		String str = "顺序";
		if(!order){
			str = "倒序";
		}	
		
		for(int i=0;i<8;i++){
			for(int j=0;j<test[i].length;j++){
				int x = test[i][j];
				if(x != 0){
					System.out.println("进行"+str+"排列的结果:第"+(i+1)+"班被分配的第"+(j+1)+"位学生总体排名为:"+x+"");
				}
			}
		}
		
	}

	public static int[][] divideByClass(int stuNum,int classNum,boolean type){

		//定义一个二维数组,初始化容量为 stuNum=64 classNum=8 ,int[8][9]
		int[][] rs = new int[classNum][stuNum/classNum+1];
				
		for(int i=0;i<stuNum;i++){//i<64
			
			int x = i%classNum;//求余 64/8  0 1 2 3 4 5 6 7   横坐标
			int y = i/classNum;//整除 64/8  0 1 2 3 4 5 6 7 8  纵坐标
			
			//求余x=0,整除y!=0的时候,type取反
			if(x==0 && y!=0){  // 8-false 16-true 24-false 32-true 40-false 48-true 56-true 64-false
				type=!type;
			}
					
			if(!type){
				x = classNum-i%classNum-1; //班级数-序号%班级数-1
				y = i/classNum;//序号/班级数
			}
			rs[x][y]=i+1; 
			
			/** x求余  y整除  rs数组
			 *  i=0;x=0;y=0;type=true,rs[0][0]=1;
			 *  i=1;x=1;y=0;type=true,rs[1][0]=2;
			 *  i=2;x=2;y=0;type=true,rs[2][0]=3;
			 *  i=3;x=3;y=0;type=true,rs[3][0]=4;
			 *  i=4;x=4;y=0;type=true,rs[4][0]=5;
			 *  i=5;x=5;y=0;type=true,rs[5][0]=6;
			 *  i=6;x=6;y=0;type=true,rs[6][0]=7;
			 *  i=7;x=7;y=0;type=true,rs[7][0]=8;
			 *  i=8;x=6;y=1;type=false,rs[6][1]=9;
			 *  i=9;x=6;y=1;type=false,rs[7][1]=10;
			 *  i=10;x=
			 */
		}
		return rs;
	}
}

 

转载于:https://www.cnblogs.com/wangmei/p/5941012.html

分班是教学管理中一个重要的环节。如何分班平衡?相信很多人都想过这个问题,按总分高低排的方法只分得各班的总平均分基本平衡,但受偶然因素影响一些科目班之间平衡性很差,而学校评价教师教学成绩却以科目班的平衡性评价为主。 因此,我们都希望最好能分得每个科目各班都基本平衡,处理这个问题用手工根本难于做到,只有借助计机的强大数据处理能力,我们才可能解决这个难题,下面示例数据就是最有力的说明,要观看示例效果请按下红色的[开始分班]键。即使你不用平衡各科分班,本软件也是一个又快又好地辅助分班的好助手。多谢使用本免费软件,并提出宝贵意见。??使用说明:先在表头填上要分开的班数,然后在下面的“要分班的原来学生成绩表”中输入学生的各科的成绩,最后按[开始分班]按钮,稍后你就可以在“结果表”中看到按平衡各科分班结果与按总分分班结果,以及两结果的对比预览表。 注意:1、性别一个字段是必须输入的数据;学号和姓名两个字段可选任一个字段输入,但最好能全部输入。?? 2、性别用“1”表示男,“0”表示女;学号最好能用前面数位表示班别,后两位数表示座号进行编号,以便分班后能方便查出原来所在的班级。?? 3、你最多可以输入19个班,每班77人,6个科目;1463个学生的成绩。科目名称可自行修改。?? 4、各科目的满分成绩不能超过100分,如果超过100分,应先把成绩折为100分,然后输入成绩。 本作者还制作有“教学成绩统计系统”、“课程表编排系统”、“数学工具箱”等软件,全部用EXCEL作为开发平台。????在使用过程中有什么问题,或有什么建议要求,请TET:(0757)8886326或E-mail:lixuedong@peoplemail.com.cn  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值