请教一下评分的排名次问题。

龙飞宇 2015-06-06 04:37:44
最近要搞个评分系统,比如是十个评委打分,去掉一个最高分,去掉一个最低分,然后求平均,最好还能显示选手的当前名次。我的思路是先建一个表,然后字段是:姓名,单位,分数1,分数2...分数10,最高分,最低分,总分,平均分,名次。
xm dw fs1 fs2 ...fs10 max min tot pjf mc
张三 一中 80 90 ... 82 90 80 XX XX X
....
做个表单,数据源就是我建的那个表,分数1-分数10手动输入,然后求和,并显示出最高和最低分并去掉最高分和最低分,然后求平均就是这个人的最终得分,并显示出这个人当前的名次号,现在的问题是,最后得分这个命令按钮里面的命令是把FS1--FS10相加然后减掉最高分和最低分然后除以个数,但这个个数必须是有分数的,就是比如一个评委弃权,只有九个评委有分数的话那不是要除以九,所以这个除数是个变量,要怎么实现?然后就是名次按钮里面的内容是想显示当前名次,比如一共十个人参加比赛,比完五个人的时候按一个这个按钮就显示当前页面的这个人在这五个人中的名次,比完十个人后再按一下就显示当前页面在十个人中的名次.要怎么实现.求赐教.
...全文
268 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-06-07
  • 打赏
  • 举报
回复
示例代码
CREATE CURSOR 表(xm C(10), dw C(10), fs1 N, fs2 N, fs3 N, fs4 N, fs5 N, fs6 N, fs7 N, fs8 N, fs9 N, fs10 N, df N(10,2))
INSERT INTO 表 VALUES ('张三', '一中', 80, 90, 95, 85, 82, 82, 80, 81, 90, 80, 0)
INSERT INTO 表 VALUES ('李四', '二中', 80, 90, 94, 85, 94, 82, 82, 81, 90, 80, 0)

SCAN
  SCATTER TO ar
  CREATE CURSOR tmp (df N)
  FOR i=3 TO ALEN(ar)
  	IF ar[i] > 0
  	  INSERT INTO tmp VALUE (ar[i])
  	ENDIF
  NEXT
  SELECT (SUM(df) - MAX(df) - MIN(df)) / COUNT(*) AS df FROM tmp INTO ARRAY r
  SELECT 表
  REPLACE df WITH r[1]
ENDSCAN
xuzuning 2015-06-07
  • 打赏
  • 举报
回复
直接在你的表中计算是很困难的,因为计算是在列间进行的。 如果评委数发生变化,或某评委弃权,就会使算式变得异常复杂。 也没有发挥数据库的优势:行间统计 给个思路: 建一临时表,一个字段 df 将选手的得分插入进去,未参与评分的评委的0分就不插入了 对此表做 (sum(df) - max(df) - min(df)) / (count(*) - 2) 即是该选手的得分 将得分存入你的表中 如此循环,直至全部选手都处理完成

2,735

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧