📄 400mfcdlg.cpp
字号:
if (FH == NULL)
{
MessageBox("error 38\nerror open file");
return ;
}
for (i=1; i<=change_num; i++)
{
fprintf(FH,".%3d - %2d\n", change[i].num, change[i].classnum);
}
fclose(FH);
}
if (m_bSaveMiddleFile)
{
CSFileNamesBuf = CString("ClaNoSignFalse-") + m_SSaveFileName;
FH = fopen(CSFileNamesBuf, "w");//分班未分学号,且调整过.
if (FH == NULL)
{
MessageBox("error 39\nerror open file");
return ;
}
fprintf(FH,"序号 姓名 性别 班级 暂时座号 毕业学校\n");//
for (j=1; j<=class_num; j++)//printf
{
for (i=1; i<=cla[j].studentnum; i++)
{
if (cla[j].num[i] > 0)
{
x= cla[j].num[i];
fprintf(FH,"%d %s %s %d %d %s\n",
stu[x].NUM, stu[x].name, stu[x].sex, stu[x].classnum, i, stu[x].school);
}
}
fprintf(FH,"\n\n");
}
fclose(FH);
}
}
///////////////////////////////////////////////////////////////////class message
FILE *FHCSV = NULL;
int nBoyNum = 0;
int nBoyNumAll = 0;
int nGirlNum = 0;
int nMark[6] = {0};
int nMarkAll[6] = {0};
int nSchNum[SCH_NUM_ALL] = {0};
CSFileNamesBuf = CString("分班后相关信息-") + m_SSaveFileName;
FH = fopen(CSFileNamesBuf, "w");
FHCSV = fopen(CSFileNamesBuf+CString(".csv"), "w");
fprintf(FH,"this file is about the message of classes and schools record by lzx\n");
fprintf(FH,"班级 总人数 男生 女生 AA AB AC/BB BC CC");
fprintf(FHCSV,"this file is about the message of classes and schools record by lzx\n");
fprintf(FHCSV,"班级,总人数,男生,女生,AA,AB,AC/BB,BC,CC");
for (x=1; x<=school_num; x++)
{
fprintf(FH, " %s", sch[x].school);
fprintf(FHCSV, ",%s", sch[x].school);
}
fprintf(FH, "\n");
fprintf(FHCSV, "\n");
for (i=1; i<=class_num; i++)
{
nBoyNum = 0;
nGirlNum = 0;
memset(nMark, 0, sizeof(nMark));
memset(nSchNum, 0, sizeof(nSchNum));
// nMark[6] = {0};
for (j=1; j<=cla[i].studentnum; j++)
{
if (0 == strcmp(stu[cla[i].num[j]].sex, "男"))
{
nBoyNum++;
nBoyNumAll++;
}
else
{
nGirlNum++;
}
nMark[FindMark(cla[i].num[j])]++;
nMarkAll[FindMark(cla[i].num[j])]++;
for (x=1; x<=school_num; x++)
{
if (strcmp(stu[cla[i].num[j]].school,sch[x].school) == 0)
{
nSchNum[x]++;
break;
}
}
}
fprintf(FH, "%d %d %d %d %d %d %d %d %d",
i, cla[i].studentnum, nBoyNum, nGirlNum, nMark[1], nMark[2], nMark[3], nMark[4], nMark[5]);
fprintf(FHCSV, "%d,%d,%d,%d,%d,%d,%d,%d,%d",
i, cla[i].studentnum, nBoyNum, nGirlNum, nMark[1], nMark[2], nMark[3], nMark[4], nMark[5]);
for (x=1; x<=school_num; x++)
{
fprintf(FH, " %d", nSchNum[x]);
fprintf(FHCSV, ",%d", nSchNum[x]);
}
fprintf(FH, "\n");
fprintf(FHCSV, "\n");
}
fprintf(FH, "--------------------------------All---------------------------------\n");
fprintf(FHCSV, "ALL\n");
fprintf(FH, "%d %d %d %d %d %d %d %d %d",
class_num, student_num, nBoyNumAll, student_num-nBoyNumAll, nMarkAll[1], nMarkAll[2], nMarkAll[3], nMarkAll[4], nMarkAll[5]);
fprintf(FHCSV, "%d,%d,%d,%d,%d,%d,%d,%d,%d",
class_num, student_num, nBoyNumAll, student_num-nBoyNumAll, nMarkAll[1], nMarkAll[2], nMarkAll[3], nMarkAll[4], nMarkAll[5]);
for (x=1; x<=school_num; x++)
{
fprintf(FH, " %d", sch[x].studentnum);
fprintf(FHCSV, ",%d", sch[x].studentnum);
}
fprintf(FH, "\n");
fprintf(FHCSV, "\n");
fprintf(FH, "the school num is : %d \n", school_num);
fprintf(FHCSV, "the school num is : %d \n", school_num);
fclose(FH);
fclose(FHCSV);
///////////////////////////////////////////////////////////////////rand the clssssign
FH = fopen(m_SSaveFileName, "w");//m_bSaveMiddleFile
FHCSV = fopen(m_SSaveFileName+CString(".csv"), "w");
fprintf(FH,"这是最后输出文件,随机排班级及座号,学号可以由年度,学校,编号,班级,座号组成\n");//
fprintf(FH,"序号 姓名 性别 语文 数学 班级 座号 毕业学校\n");//
fprintf(FHCSV,"序号,姓名,性别,语文,数学,班级,座号,毕业学校\n");
for (x=1; x<=class_num; x++)
{
memset(peoplebuf,0,STU_NUM_ALL40);
for (y=1; y<=cla[x].studentnum; y++)//
{
do
{
z = rand();
z = z%cla[x].studentnum +1;
} while(peoplebuf[z] != 0);
peoplebuf[z] = y;
}
for (y=1; y<=cla[x].studentnum; y++)
{
z = cla[x].num[peoplebuf[y]];
stu[z].clssssign = y;
fprintf(FH,"%d %s %s %c %c %d %d %s\n",
stu[z].NUM, stu[z].name, stu[z].sex, stu[z].chinese,
stu[z].math, stu[z].classnum, stu[z].clssssign, stu[z].school);
fprintf(FHCSV,"%d,%s,%s,%c,%c,%d,%d,%s\n",
stu[z].NUM, stu[z].name, stu[z].sex, stu[z].chinese,
stu[z].math, stu[z].classnum, stu[z].clssssign, stu[z].school);
}
fprintf(FH,"\n\n");
fprintf(FHCSV,"\n\n");
}
fclose(FH);
fclose(FHCSV);
///////////////////////////////////////////////////////////////////////////////////////
CSFileNamesBuf = CString("类似原件-") + m_SSaveFileName;
FH = fopen(CSFileNamesBuf, "w");
fprintf(FH,"该文件排列与原文件顺序一样,便于统计,打开Microsoft Excel导入该数据选择TAB键隔开即可\n");//
fprintf(FH,"序号 班级 座号 姓名 性别 语文 数学 毕业学校\n");//
for (z=1; z<=student_num; z++)
{
fprintf(FH,"%d %d %d %s %s %c %c %s\n",
stu[z].NUM, stu[z].classnum, stu[z].clssssign, stu[z].name,
stu[z].sex, stu[z].chinese, stu[z].math, stu[z].school);
}
fclose(FH);
FH = fopen(CSFileNamesBuf+CString(".csv"), "w");
fprintf(FH,"该文件排列与原文件顺序一样,便于统计,打开Microsoft Excel导入该数据选择TAB键隔开即可\n");//
fprintf(FH,"序号,班级,座号,姓名,性别,语文,数学,毕业学校\n");//
for (z=1; z<=student_num; z++)
{
fprintf(FH,"%d,%d,%d,%s,%s,%c,%c,%s\n",
stu[z].NUM, stu[z].classnum, stu[z].clssssign, stu[z].name,
stu[z].sex, stu[z].chinese, stu[z].math, stu[z].school);
}
fclose(FH);
MessageBox("OK!\n产生的文件与源文件在同一个目录下");
UpdateData(FALSE);
}
void CMy400MFCDlg::OnHelp_lzx()
{
// TODO: Add your control notification handler code here
MessageBox("\
本软件适用于小学升初中只有两科成绩,且成绩只有A,B,C三个标号.\n\
\n\
点击浏览源文件,选择要排号的名单,限TXT文本\n\
选择完源文件后,两个不可编辑的编辑框显示文件路径及读取的学生数.\n\
若读取有误,学生数则只显示正确的个数\n\
可以选择保存中间文件,查看ReadByLzx.txt中实际读到的数据情况\n\
\n\
源文件读取出错?\n\
那请点击'生成源文件样本'按钮\n\
将在源文件同一目录下产生'源文件及说明.txt'文件,详细格式说明都在里面\n\
\n\
要分为几个班级,请在班级数填写数字,默认为:10\n\
\n\
最后输出的文件名,请在另存为填写字符串,默认为:输出.txt\n\
\n\
全部设置完后点击开始排班级按钮即可\n\
\n\
产生的文件与源文件在同一个目录下\n\
\n\
要退同该程序点击退出程序即可,或者直接关闭窗口\n\
\n\
若还有疑问,请联系MSN/E-mail:fjptlzx@hotmail.com\n\
");
}
void CMy400MFCDlg::OnButMakeSample()
{
// TODO: Add your control notification handler code here
FH = fopen("源文件及说明.txt", "w");
if (NULL == FH)
{
MessageBox("error 40\nopen the file error!");
return;
}
fprintf(FH, "序号 姓名 性别 语文 数学 生源地\n");
fprintf(FH, "1 赵一山 女 A A 实验中心小学\n");
fprintf(FH, "3 张小二 女 A A 实验中心小学\n");
fprintf(FH, "5 张三 女 A A 实验中心小学\n");
fprintf(FH, "13 李四 男 A A 东峰小学\n");
fprintf(FH, "13 王五班 男 C C 一中分校小学部\n");
fprintf(FH, "14 小六 男 A B 东峰小学\n");
fprintf(FH, "15 小七 男 A C 一中分校小学部\n");
fprintf(FH, "16 八哥 男 A B 一中分校小学部\n");
fprintf(FH, "17 小九 女 A B 东峰小学\n");
fprintf(FH, "20 十号 女 C B 东峰小学\n");
fprintf(FH, "20 十一 男 A B 东峰小学\n");
fprintf(FH, "21 十二 男 B B 东峰小学\n");
fprintf(FH, "22 十三 女 A B 东峰小学\n");
fprintf(FH, "23 十四 男 A C 一中分校小学部\n");
fprintf(FH, "24 十五 男 A B 一中分校小学部\n");
fprintf(FH, "25 十六 女 A A 实验中心小学\n");
fprintf(FH, "26 十七 男 A A 实验中心小学\n");
fprintf(FH, "27 十八 女 A A 实验中心小学\n");
fprintf(FH, "28 十九 男 C B 前沁小学\n");
fprintf(FH, "29 二十 男 A A 前沁小学\n");
fprintf(FH, "31 二一 男 B B 前沁小学\n");
fprintf(FH, "32 二二 女 A A 前沁小学\n");
fprintf(FH, "33 二三 男 C C 前沁小学\n");
fprintf(FH, "34 二四 男 A A 前沁小学\n");
fprintf(FH, "35 二五 男 A B 前沁小学\n");
fprintf(FH, "36 二六 女 A A 前沁小学\n");
fprintf(FH, "37 二七 女 B A 前沁小学\n");
fprintf(FH, "38 二八 男 A A 前沁小学\n");
fprintf(FH, "15 二九 女 A B 前沁小学\n");
fprintf(FH, "14 三十 男 C A 前沁小学\n");
fprintf(FH, "1 1赵一山 女 A A 实验中心小学\n");
fprintf(FH, "3 1张小二 女 A A 实验中心小学\n");
fprintf(FH, "5 1张三 女 A A 实验中心小学\n");
fprintf(FH, "13 1李四 男 A A 东峰小学\n");
fprintf(FH, "13 1王五班 男 C C 一中分校小学部\n");
fprintf(FH, "14 1小六 男 A B 东峰小学\n");
fprintf(FH, "15 1小七 男 A C 一中分校小学部\n");
fprintf(FH, "16 1八哥 男 A B 一中分校小学部\n");
fprintf(FH, "17 1小九 女 A B 东峰小学\n");
fprintf(FH, "20 1十号 女 C B 东峰小学\n");
fprintf(FH, "20 1十一 男 A B 东峰小学\n");
fprintf(FH, "21 1十二 男 B B 东峰小学\n");
fprintf(FH, "22 1十三 女 A B 东峰小学\n");
fprintf(FH, "23 1十四 男 A C 一中分校小学部\n");
fprintf(FH, "24 1十五 男 A B 一中分校小学部\n");
fprintf(FH, "25 1十六 女 A A 实验中心小学\n");
fprintf(FH, "26 1十七 男 A A 实验中心小学\n");
fprintf(FH, "27 1十八 女 A A 实验中心小学\n");
fprintf(FH, "28 1十九 男 C B 前沁小学\n");
fprintf(FH, "29 1二十 男 A A 前沁小学\n");
fprintf(FH, "31 1二一 男 B B 前沁小学\n");
fprintf(FH, "32 1二二 女 A A 前沁小学\n");
fprintf(FH, "33 1二三 男 C C 前沁小学\n");
fprintf(FH, "34 1二四 男 A A 前沁小学\n");
fprintf(FH, "35 1二五 男 A B 前沁小学\n");
fprintf(FH, "36 1二六 女 A A 前沁小学\n");
fprintf(FH, "37 1二七 女 B A 前沁小学\n");
fprintf(FH, "38 1二八 男 A A 前沁小学\n");
fprintf(FH, "15 1二九 女 A B 前沁小学\n");
fprintf(FH, "14 1三十 男 C A 前沁小学\n\n\n");
fprintf(FH, "\
本软件适用于小学升初中只有两科成绩,且成绩只有A,B,C三个标号.\n\
说明一下:该随机自动分班级排学号软件,\n\
不仅有有考虑到,成绩的均匀,\n\
还考虑到生源地(即原毕业学校),性别,及班级学生个数的均匀.\n\
一般来说,每个班级的总体都比较均匀\n\
\n\
作者懒人居然这样造名单.哈哈\n\
\n\
格式说明:\n\
一.第一行就是标题头,一共有六项,每项之间用不少于一个TAB键隔开,每一次名字可更改\n\
二.从第二行起就是具体的内容了.六项的内容格式如上所示,生源地就是学校名称,每项之间用不少于一个TAB键隔开\n\
\n\
细节说明:\n\
两科成绩必需是大写的'A','B','C'中的一种\n\
姓名不多于四个汉字或不多于八个字符\n\
另序号是无关紧要的,可以相同,也可以无序,但可以标出来给自己定位用的,这样核对起来比较容易\n\
\n\
\n\
可以将上面格式单独复制到另一空文件,最后一行最多一个换行键.然后排一下号做实验,体验效果\n\
当然,如果你也懒的话,就不要复制出来,直接读取这个文件,读取时会出错,先不管它,反正照样能够读出六十个学生的数据.可以做实验\n\
\n\
操作说明如下所示:\n\
");
fprintf(FH, "\n\n\
点击浏览源文件,选择要排号的名单,限TXT文本\n\
选择完源文件后,两个不可编辑的编辑框显示文件路径及读取的学生数.\n\
若读取有误,学生数则只显示正确的个数\n\
可以选择保存中间文件,查看ReadByLzx.txt中实际读到的数据情况\n\
\n\
源文件读取出错?\n\
那请点击'生成源文件样本'按钮\n\
将在源文件同一目录下产生'源文件及说明.txt'文件,详细格式说明都在里面\n\
\n\
要分为几个班级,请在班级数填写数字,默认为:10\n\
\n\
最后输出的文件名,请在另存为填写字符串,默认为:输出.txt\n\
\n\
全部设置完后点击开始排班级按钮即可\n\
\n\
产生的文件与源文件在同一个目录下\n\
\n\
要退同该程序点击退出程序即可,或者直接关闭窗口\n\
\n\
若还有疑问,请联系MSN or E-mail:fjptlzx@hotmail.com\n\
E-mail:fjptlzx.student@sina.com\n\
");
fclose(FH);
MessageBox("File name:源文件及说明.txt is OK!");
return;
}
int CMy400MFCDlg::FindMark(int stu_num)
{
if ((stu[stu_num].math=='A') && (stu[stu_num].chinese=='A'))
{
return 1;
}
else if ((stu[stu_num].math=='A') && (stu[stu_num].chinese=='B'))
{
return 2;
}
else if ((stu[stu_num].math=='B') && (stu[stu_num].chinese=='A'))
{
return 2;
}
else if ((stu[stu_num].math=='A') && (stu[stu_num].chinese=='C'))
{
return 3;
}
else if ((stu[stu_num].math=='C') && (stu[stu_num].chinese=='A'))
{
return 3;
}
else if ((stu[stu_num].math=='B') && (stu[stu_num].chinese=='B'))
{
return 3;
}
else if ((stu[stu_num].math=='B') && (stu[stu_num].chinese=='C'))
{
return 4;
}
else if ((stu[stu_num].math=='C') && (stu[stu_num].chinese=='B'))
{
return 4;
}
else if ((stu[stu_num].math=='C') && (stu[stu_num].chinese=='C'))
{
return 5;
}
else
{
MessageBox("error 41\nthe mark is not between A-C");
return 0;
}
}
///////////////////////////////////////////////////对更改班级的格式的要求如下:
//更改人数不多于40人,文件必需是"c:\\change.txt"
//更改后将产生另一个文件"c:\\ReadChange.txt"
//change.txt格式:中间只能一个TAB键;顶格写,如下表示要调整三个人,即序号为1,2,3的必定会分到 一班.(注:没有'//'号)
//1 1
//2 1
//3 1
//
int CMy400MFCDlg::ReadChange(void)
{
char rbuf[2] = {0};
char buf[50] = {0};
int i = 0;
FH = fopen("c:\\change.txt", "r+");
if (FH == NULL)
{
return NULL;
}
fseek(FH,0,SEEK_SET);
memset(buf, 0, 50);
i = 0;
change_num = 0;
while (1)
{
change_num++;
if (change_num > 40)
{
change_num--;
fclose(FH);
return change_num;
}
memset(buf, 0, 50);
i = 0;
do //read NUM
{
if (1 != fread(rbuf, 1, 1, FH))
{
change_num--;
fclose(FH);
return change_num;
}
buf[i] = rbuf[0];
if (0x09 == rbuf[0])
{
buf[i] = 0;
change[change_num].num = atoi(buf);
break;
}
i++;
} while(1);
memset(buf, 0, 50);
i = 0;
do //read sign
{
if (1 != fread(rbuf, 1, 1, FH))
{
fclose(FH);
if (i != 0)
{
buf[i] = 0;
change[change_num].classnum = atoi(buf);
return change_num;
}
change_num--;
return change_num;
}
buf[i] = rbuf[0];
if (0x0a == rbuf[0])
{
if (0x0d == buf[i-1])
{
buf[i-1] = 0;
}
buf[i] = 0;
change[change_num].classnum = atoi(buf);
break;
}
i++;
} while(1);
}
fclose(FH);
return change_num;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -