更新
【issue 2019.12.4】生成千帆图有误,产生的是历次成绩的折线图,没有累加效果,待修正
下载使用或者编辑
gradingTool for software engineering practice class
1.下载的文件里包含了源代码,可以修改、添加新的功能
2.作为Excel add-in使用:
参考了这个链接提供的信息:How to Create and Use an Excel Add-in
step 1 下载gradingTool.xlam(和两个评分表放在一起)
step 2 打开个人评分表格
step 3 在“开发工具”栏找到“Excel加载项”,浏览找到刚刚下载的文件,点击确定
step 4 在“文件”,“开始”,“插入”那一块点击鼠标右键,选择“自定义功能区”
step 5 在弹出的面板左侧下拉框选择“宏”,找到gradingTool,在面板中间点击“添加”,随后点击面板上的“确认”
step 6 做好了!之后要使用的时候,点击这里
前提
1.评分一共涉及三个Excel文件:“软工个人评分.xlsx”,“软工小组评分.xlsx”和gradingTool.xlam。三个文件严格要求在同一个文件夹下,并且前两个的名字是严格要求。
2.第一次使用时,个人评分表中必须有一个叫做“花名册”的Sheet,前两列必须是“学号”和“姓名”。一个例子如下:
3.“软工小组评分.xlsx”中必须有一个叫做“贡献度表”的Sheet,必须包含“组号”,“学号”,“姓名”和“第x次贡献度”四种列,其中x是阿拉伯数字。一个例子如下:
checklist:
1.同一文件夹下:个人评分表+“软工小组评分.xlsx”+gradingTool.xlam
2.“软工个人评分.xlsx”包含:花名册(学号,姓名)
3.“软工小组评分.xlsx”包含:贡献度表(组号,学号,姓名,第1次贡献度,第2次贡献度,.....,第n次贡献度)
功能说明
part 1 个人评分工具
1.初始化:只需要在第一次使用时点击一次,会将“花名册”变成“总成绩表”,同时生成个人编号以及学号后四位。
2.个人已统计:点击后显示一个数字,代表你之前已经统计过的个人作业次数。个人已统计+小组已统计=总的已统计次数。
3.++和--:用于控制个人已统计次数,方便错误操作后的重新统计。
4.新建评分表:生成一张新的评分表“第x次作业评分”,其中x=个人已统计+小组已统计=总的已统计次数。就在这张表完成本次的个人作业评分,注意评完分后手动添加“总分”列,并算出总分。
5.保存评分详情:会将刚刚新建的那张评分表的内容截图,创建文件夹“第x次作业评分”并保存。会隐藏姓名和学号。
6.生成排名:会对“总分”列排序后,生成一张条形图。调整这张图到合适的大小,选中它,使用下面的“保存选中图像”功能。(生成排名图就立即保存掉,否则接着生成千帆图的话会出错)
7.生成千帆图:会将“第x次作业评分”中的“总分”列汇合到“总成绩表”,并且生成千帆图。调整这张图到合适的大小,选中它,使用下面的“保存选中图像”功能。
8.保存选中图像:会将选中的图像保存到“第x次作业评分”,并删除。
9.完成本次评分,点击“++”累加个人已经评分次数。
part 2 小组评分工具
1.初始化:只需要在第一次使用时点击一次,只是将“小组已统计”设置为0。
2.小组已统计:点击后显示一个数字roundGroup,代表你之前已经统计过的小组作业次数。小组已统计+个人已统计=总的已统计次数。
3.++和--:用于控制小组已统计次数,方便错误操作后的重新统计。
4.小组分转换:
-生成一张新的评分表“第x次作业评分”,其中x=个人已统计+小组已统计=总的已统计次数。
-会将“软工小组评分.xlsx”中相应次数(roundGroup+1)的“总分”列,通过“贡献度”表中相应次数(roundGroup+1)的贡献度,换算为个人成绩。
-目前默认的转换方式为:小组成绩+个人贡献度=个人成绩。目前默认姓名为索引,是不重复的。
-如果班级列表存在同学没有贡献度信息或者小组信息,会报告;请确认一下是不是总成绩表和贡献度表中的姓名不一致。
5.保存评分详情:会将“软工小组评分.xlsx”中相应次数的评分内容截图,创建文件夹“第x次作业评分”并保存。
6.生成排名:与个人部分相同。
7.生成千帆图:与个人部分相同。
8.保存选中图像:与个人部分相同。
9.完成本次评分,点击“++”累加小组已经评分次数。
复习:
评分工具使用到三个数字:
- 个人已统计roundPerson:表示此前已经统计的个人作业次数。
- 小组已统计roundGroup:表示此前已经统计的小组作业次数。
- 总已统计roundPerson+roundGroup:表示总共已统计作业次数。
- 假设之前统计了3次个人作业,2次小组作业。则roundPerson=3,roundGroup=2。假如现在统计第3次小组作业,使用评分工具时,会对应“第3次小组评分”和“第3次贡献度”,创建“第6次作业评分”。
checklist:
1.个人评分里有没有“总分”列?
2.小组评分有没有对应次数的 “第x次小组评分”,其中包含 “总分”列;“贡献度表”中包含“第x次贡献度”
3.统计完有没有++?
其他
思考
VBA编程...有很多对象,一开始会比较懵。好处是调试一步一步来,能看到excel的变化,很方便。导出为add-in使用起来也比较方便。还有录制宏这样的功能,基本上使用录制,再把一些变量抽象一下,就能实现你想要的功能了。经常机械操作excel的人可以学习!
没有使用到复杂的算法之类的。稍微巧妙的地方在于:
1.多添加一个“索引”列,把某次成绩转换到“总成绩”时,就先根据索引排序,然后复制粘贴。
- 一方面助教在打分的时候,可以手动按学号排序,同时博客园的作业也可以按照学号排序,这样点击一个作业链接就能同时给这个人打分,效率高一些。
- 另一方面,期末登记总成绩的时候,按照索引排序,也是一一对应的
2.使用VBA字典完成了小组到个人成绩的转换,不需要搜索:姓名->组号;姓名->贡献度;组号->小组成绩;
3.把统计次数保存到了文档属性里
此外还存在一些缺陷。比如:
1.使用姓名作为小组分转换到个人分时的索引,可能会有重名,应该改成学号作为索引。
2.默认的贡献度计算方式为加法。你需要什么样的计算方式呢?我可以尽快添加进去
3.命名比较严格,当指定的表不存在时,会出错。
4.目前代码注释也比较少,待整理
建议
建议助教把贡献度表准备成共享文档,请组长每次小组作业完成后填写。
QAF
1.操作出错了怎么办?
使用前请备份。把多生成的sheet,列和图标删除掉,一般就可以重新操作一次了
2.......
如果存在bug或者功能建议,或者有更简便的操作顺序,请留言~