注:成绩比例:优<20%,校优<5%,良<45%,不及格:1%-3%
第二篇:毕业答辩分组
import java.util.Scanner; import java.io.File;
import jxl.Workbook;
import jxl.write.WritableWorkbook; import jxl.write.WritableSheet; import jxl.write.Label;
import jxl.Sheet;
import jxl.Cell;
import java.util.Scanner; import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; import jxl.write.Label;
class student
{ int count=0;
private String id;
private String name; private String major; private String title; private String teacher; void setid(String id) {
this.id=id;
}
String getid()
{
return id;
}
void setname(String name) {
this.name=name;
}
String getname() {
return name; }
void setmajor(String major) {
this.major=major; }
String getmajor() {
return major;
}
void settitle(String title)
{
this.title=title;
}
String gettitle(){
return title;
}
void setteacher(String teacher)
{
this.teacher=teacher;
}
String getteacher()
{
return teacher;
}
student(String id,String name,String major,String title, String teacher)
{
this.id=id; this.name=name;this.major=major; this.title=title;this.teacher=teacher; }
student(){}
}
class grouping{
String tea[];
String route; //路径 Workbook wk; //读取表 Sheet sheet0=null; WritableWorkbook wwk=null; //写入表 String []cocn; //存储列表名 int cols; //记录列数 int rows; //记录行数 student stu[]; int counttea; int teamnumber; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); WritableSheet sheet1; WritableSheet sheet2; int cla=0; //分组识别 void autogroup(){ cla=0; //自动分组 try{ System.out.println("请输入excel表路径(格式:盘符:\\文件名.xls):"); route=br.readLine(); while(!new File(route).exists()) {
} //手动分组
System.out.println("文件不存在,请重新输入!"); route=br.readLine(); } wk=Workbook.getWorkbook(new File(route)); wwk=Workbook.createWorkbook(new File(route),wk); sheet1 = wwk.createSheet("学生分组", 1); sheet2 = wwk.createSheet("老师分组", 2); sheet0=wk.getSheet(0); cols=sheet0.getColumns();//获取列数 rows=sheet0.getRows();//获取行数 stu=new student[rows-1]; tea=new String[rows-1]; cocn=new String[cols];//获取列标题 teamnumber=((rows-1)%4==0)?(rows-1)/4:((rows-1)/4+1); getcocn(cocn,wk.getSheet(0)); getstudent(stu,wk.getSheet(0)); gettea(tea,stu); writesheet1(stu);//对学生分组并写入sheet1 writesheet2(tea);//对老师分组并写入sheet2 wwk.write(); wwk.close(); } catch(Exception e) { System.out.println(e); } void handgroup(){ cla=1; try{ System.out.println("请输入excel表路径(格式:盘符:\\文件名.xls):"); route=br.readLine(); while(!new File(route).exists()) { System.out.println("文件不存在,请重新输入!"); route=br.readLine(); } wk=Workbook.getWorkbook(new File(route)); wwk=Workbook.createWorkbook(new File(route),wk); sheet1 = wwk.createSheet("学生分组", 1); sheet2 = wwk.createSheet("老师分组", 2);
//获取列数
//获取行数
sheet0=wk.getSheet(0); cols=sheet0.getColumns(); rows=sheet0.getRows(); stu=new student[rows-1]; tea=new String[rows-1]; cocn=new String[cols]; //获取列标题
teamnumber=((rows-1)%4==0)?(rows-1)/4:((rows-1)/4+1); getcocn(cocn,wk.getSheet(0));
getstudent(stu,wk.getSheet(0));
gettea(tea,stu);
writesheet1(stu); //对学生分组并写入sheet1
writesheet2(tea); //对老师分组并写入sheet2
wwk.write();
wwk.close();
}
catch(Exception e)
{
System.out.println(e);
}
}
void getcocn(String str[],Sheet sh){//得到列名
for(int i=0;i<cols;i++)
{ Cell ce=sh.getCell(i,0);
cocn[i]=ce.getContents();
}
}
void getstudent(student []stu,Sheet sh){//得到学生组
for(int i=1;i<rows;i++)
{
Cell ce1=sh.getCell(0,i);
Cell ce2=sh.getCell(1,i);
Cell ce3=sh.getCell(2,i);
Cell ce4=sh.getCell(3,i);
Cell ce5=sh.getCell(4,i);
stu[i-1]=new
student(ce1.getContents(),ce2.getContents(),ce3.getContents(),ce4.getContents(),ce5.getContents());
}
}
void gettea(String tea[],student[] stu)
{ counttea=0;
int tru=0;
for(int i=0;i<stu.length;i++)
{
tea[i]=stu[i].getteacher();
for(int j=i+1;j<stu.length;j++)//去除重复老师姓名
{
if(stu[i].getteacher().equals(stu[j].getteacher()))
{tru=1;}
}
if(tru==0)
{
tea[counttea]=stu[i].getteacher();
counttea++;
}
else{ tru=0;}
}
}
void writesheet1(student[] stu)
{ try{
sheet1.addCell(new Label(0,0,"分组"));
for(int j=0;j<cols;j++)
{
sheet1.addCell(new Label(j+1,0,cocn[j]));
}
for(int i=1;i<rows;i++)
{
sheet1.addCell(new Label(1,i,stu[i-1].getid()));
sheet1.addCell(new Label(2,i,stu[i-1].getname()));
sheet1.addCell(new Label(3,i,stu[i-1].getmajor()));
sheet1.addCell(new Label(4,i,stu[i-1].gettitle()));
sheet1.addCell(new Label(5,i,stu[i-1].getteacher()));
if((i+4)%4==1)
{
sheet1.addCell(new Label(0,i,"第"+(i+3)/4+"组")); }
}
}
catch(Exception e)
{
System.out.println(e);
}
}
同在一组):
void writesheet2(String []tea) { int tru=0; int cotm=0; int cou=1; int check=1;//检测老师分组是否符合规则 int count=0;//记录学生数防止溢出 String tctm[][]=new String[teamnumber][3];//存储人工分组 String str[]=new String[3]; String readtea[]= new String[3]; if(cla==1){ try{ int circle=1; while(circle==1){ System.out.println("学生分组如下(规则:指导老师不能与答辩老师学生姓名 ( 所属指导老师)"); for(int ln=1;ln<=teamnumber;ln++) { System.out.print(" 第"+ln+"组:"); for(int lnt=1;lnt<=4;lnt++) { System.out.print(" " + stu[count].getname()+"("+stu[count].getteacher()+")"); count++; if( count==stu.length){break;} } System.out.println(""); } System.out.println("可供选择老师:"); for( int lnt=0;lnt<tea.length;lnt++) { System.out.print(tea[lnt]+" ");} System.out.println("请对老师分组 (以空格隔开):"); for(int ij=0;ij<teamnumber;ij++) { System.out.println("第"+ (ij+1)+"组"); readtea=br.readLine().split(" ");
for(int ik=0;ik<3;ik++){ tctm[ij][ik]=readtea[ik]; //scrplit()分组 } }
count=1; //重置count用做以下检测
for(int jiance=0;jiance<teamnumber;jiance++) //检测过程 {
for(int i=0;i<3;i++)
{ for(int j=0;j<4&&count<=stu.length;j++)
{
if(tctm[jiance][i].equals(stu[jiance*4+j].getteacher()))
{
check=0;break;
}
count++;
}
if(check==0)
{
break;
}
}
if(check==0)
{
break;
}
}
if(check==1){circle=0;
}
else{ System.out.println("分组不符合规则,请重新对老师分组!");
circle=1;
} }
sheet2.addCell(new Label(0,0,"分组"));
sheet2.addCell(new Label(1,0,"指导老师"));
sheet2.addCell(new Label(0,1,"第"+1+"组"));
for(int xx=1;xx<teamnumber;xx++)
sheet2.addCell(new Label(0,xx*3+1,"第"+(xx+1)+"组"));
for(int tm=0;tm<teamnumber;tm++)
{
for(int i=0;i<=2;i++)
{
sheet2.addCell(new Label(1,cou,tctm[tm][i])); cou++;
}
}
wk.close();
System.out.println("分组完成!请在相应地址下查询!");
}
catch(Exception e)
{ System.out.println(e);}
}
else{
try{
sheet2.addCell(new Label(0,0,"分组"));
sheet2.addCell(new Label(1,0,"指导老师"));
sheet2.addCell(new Label(0,1,"第"+1+"组"));
for(int xx=1;xx<teamnumber;xx++)
sheet2.addCell(new Label(0,xx*3+1,"第"+(xx+1)+"组")); for(int i=1;i<=teamnumber;i++)
{
for(int x=0;x<3;x++)
{ str[x]="1";}
for(int j=0;j<tea.length;j++)
{ tru=0;int ij=0;
for(;ij<4&&((i-1)*4+ij)<stu.length;ij++)
if(!stu[(i-1)*4+ij].getteacher().equalsIgnoreCase(tea[j])) { tru++;}
if(tru==4||(((i-1)*4+ij)==stu.length))
{ int y=0;
for(;y<3;y++)
if(str[y].equalsIgnoreCase(tea[j])) {
break;
}
if(y==3)
{
str[cotm]=tea[j];
cotm++;
}
if(cotm==3)
{tru=1;cotm=0;break;}
}
else
{
tru=1;
}
}
for(int k=0;k<3;k++)
{
sheet2.addCell(new Label(1,(i-1)*3+k+1,str[k]));
}
} wk.close();
}
catch(Exception e)
{
System.out.println(e);
}}
}
}
class desktop{ //显示桌面
int choic;
String again;
Scanner sc = new Scanner(System.in);
grouping group=new grouping();
void dkp(){
System.out.println("***************************************"); System.out.println("-------------------");
System.out.println(" 欢迎进入毕业生答辩分组系统");
System.out.println("--------------------");
System.out.println("请选择分组方式(序号):");
System.out.println(" 1.自动分组");
System.out.println(" 2.手动分组");
System.out.println("***************************************");
choic=sc.nextInt();
if(choic==1)
{
group.autogroup();//自动分组 } else{
group.handgroup();//手动分组 }
}
}
public class pleasystem
{
/**
* @param args
*/
public static void main(String[] args)throws IOException { desktop desk=new desktop();
Scanner sc = new Scanner(System.in);
while(true){
desk.dkp();
System.out.println("\n是否继续分组?(是/否)"); if(!sc.nextLine().equalsIgnoreCase("是"))
break;
System.out.println("*******");
}
}
}