麒麟居:ASP数据库查找最相似的分数问题。

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 16:30:09
有一个数据库1.mdb里边有个表score:
------------------------------------------------------------------------------
id 姓名 数学 语文 物理 英语 考场
1 stu1 65 90 95 120 01
2 stu2 70 85 75 60 01
3 stu3 65 115 70 145 01
-----------------第二期考试存在同一表中-------------
4 stu1 40 35 60 102 11
5 stu2 75 90 85 65 11
6 stu3 85 75 90 100 12
-----------------第三期考试一位同学没有参加--------
7 stu1 90 80 95 105 21
8 stu2 75 90 45 80 21
-----------------第四期考试二位同学没有参加-------------
10 stu2 70 85 90 85 33

------------------------------------------------------------------------------

当stu1登陆后,他想找一个N次考试和自己在同一个考场次数最多的且两次考试的比分最相近的同学。

然后由最相近依次往下排列

问题1: 先用stu1的数学与其它两位同学的数学相比较得出他们相似程度的百分比,比如
stu1的数学是65 stu3的数学也是65那们他们相似度的百分比就是100%,如果是这样,那stu2的数学是70,他们的相似度百分比是多

少?应该怎么算,是用65除以70乘以100%还是用65除以70乘以100%再加上100% 除以2?
问题2:分别用stu1的数学语文物理英语对其它同学的相应科目进行相似度的比较,然后求数学语文物理英语相似度的平均数百分比,

然后按照从大到小顺序排列。
问题3:怎么算出stu1一共考了几次?stu2有三次都和他在一个考场,怎么能算出stu1和stu2在同一考场考试的次数?再分别对他们在

同一考场考试时的所有科目分数进行对比,从而找出在同一考场考试次数最多且数学和数学、语文和语文、物理和物理、英语和英语

、分数最想近的同学,由上到下排列?

是不是可以这样,先查找score表中姓名是stu1的数据,找到第一个后,在从第一个提取所有分数,先临时存起来。然后再提取
考场号,查找其它用户中包含考场号的数据,找到后计算所有科目与stu1科目的相似度百分比,存到temp表中。
id 姓名 数学 语文 物理 英语 考场号 总的百分比
01 stu2 xx% xx% XX% XX% 01 xx%

然后继续查找其它用户包含stu1第一个考场号的数据,继续保存,直到没有stu1相应考场号的数据后重复上边操作,查找与stu1第二

次考试考场号相同的数据,继续填加,直到stu1所有数据查找完毕。将所有用户的总百分比相加,然后除以他们在temp表中出现的总

次数。再按百分比的大小排列。

这个问题我研究了两个月现在也只弄懂这些,我是一个asp盲,数学也学的不好,但一直想弄懂这个问题,麻烦谁废废心,帮帮我

把代码和算法写出来,非常非常感谢。
QQ:13067263

不是很难!我是学生,反作弊的东西我不会帮你!
成绩相似度

XSD=ABS(A的成绩-B的成绩)/100

数值越高越相似!最高为1