主题:关于检索排序的新问题?
首先说明:站内的帖子中我没有找到答案,
现有一个二维数组SZ(N,X),N表示编号,X 表示各学科成绩,如下:
数学 语文 英语 计算机
SZ 1 2 3 4 ...
编号 1 成绩 成绩 成绩 成绩
2 成绩 成绩 成绩 成绩
3 成绩 成绩 成绩 成绩
4 成绩 成绩 成绩 成绩
...
请教一个检索程序?(就是根据用户提出要求检索,并输出符合要求的数据)
例如:当用户要检索数学成绩高于60分时,就是要显示SZ(N,1)>60的人的各科成绩。
呵呵!简单吧
问题是:用户提出的要求不确定(连方式都不确定),现在如下几种方式:
1.可根据某科的分数线检索(如:例子)
2.可根据某几科的分线线检索(如:要数学80以上、语文60以上的)
3.按某科成绩排序(如:按数学成绩从高到低排序)
4.按某几科成绩排序(如:按数学成绩从高到低排序,若数学成绩相同则语文成绩高的在前)
5.同3.4.但只显示某科分数线上的(如:从高到低显示数学成绩在60以上的,若成绩相同则语文高的在前)
...
更头疼的是:
分数线不是只检索高的,如1中可以检索成绩高于、低于或等于
排序可不一定是从高到低,如3中数学成绩从高到低,相同的按语文成绩从低到高,再相同的按英语成绩从高到低...
--讨论----------------------
其实问题就在于判断的条件
我曾想过根据用户给出的要求确定判断条件,象问题1中:
先确定几个大的查询方式让用户选择 (如获得用户是按单科成绩查询)
再让用户选择学科 (如获得用户是按数学成绩查询) X1=1
再让用户确定分数线 (如60) X2=60
再让用户确定方式 (如高于且包括60分) Y1$=">="
这时就可以根据以上信息确定出判断条件 X1 Y1$ X2 求得SZ(N,1)>=60
FOR A=1 TO N
IF SZ(A,x1)>=x2 THEN 输出
NEXT A
真正的问题是:数学1可以用变量,分数线60也可以用变量,但关系运算符怎么代入?
如果能解这个问题,查询方式1就搞定了,其它也好办了。
我现在的处理方式是:
1.在主程序中将判断条件生成为一个字符串
2.用这个字符串修改文件A.bas中IF与THEN中的相关代码,并执行A.bsa生成一个A.TMP文件存放符合条件的编号序列
3.返回主程序打开A.TMP文件提取编号序列输出,最后删除A.TMP
但我认为这总不是办法,还请高手赐教
现有一个二维数组SZ(N,X),N表示编号,X 表示各学科成绩,如下:
数学 语文 英语 计算机
SZ 1 2 3 4 ...
编号 1 成绩 成绩 成绩 成绩
2 成绩 成绩 成绩 成绩
3 成绩 成绩 成绩 成绩
4 成绩 成绩 成绩 成绩
...
请教一个检索程序?(就是根据用户提出要求检索,并输出符合要求的数据)
例如:当用户要检索数学成绩高于60分时,就是要显示SZ(N,1)>60的人的各科成绩。
呵呵!简单吧
问题是:用户提出的要求不确定(连方式都不确定),现在如下几种方式:
1.可根据某科的分数线检索(如:例子)
2.可根据某几科的分线线检索(如:要数学80以上、语文60以上的)
3.按某科成绩排序(如:按数学成绩从高到低排序)
4.按某几科成绩排序(如:按数学成绩从高到低排序,若数学成绩相同则语文成绩高的在前)
5.同3.4.但只显示某科分数线上的(如:从高到低显示数学成绩在60以上的,若成绩相同则语文高的在前)
...
更头疼的是:
分数线不是只检索高的,如1中可以检索成绩高于、低于或等于
排序可不一定是从高到低,如3中数学成绩从高到低,相同的按语文成绩从低到高,再相同的按英语成绩从高到低...
--讨论----------------------
其实问题就在于判断的条件
我曾想过根据用户给出的要求确定判断条件,象问题1中:
先确定几个大的查询方式让用户选择 (如获得用户是按单科成绩查询)
再让用户选择学科 (如获得用户是按数学成绩查询) X1=1
再让用户确定分数线 (如60) X2=60
再让用户确定方式 (如高于且包括60分) Y1$=">="
这时就可以根据以上信息确定出判断条件 X1 Y1$ X2 求得SZ(N,1)>=60
FOR A=1 TO N
IF SZ(A,x1)>=x2 THEN 输出
NEXT A
真正的问题是:数学1可以用变量,分数线60也可以用变量,但关系运算符怎么代入?
如果能解这个问题,查询方式1就搞定了,其它也好办了。
我现在的处理方式是:
1.在主程序中将判断条件生成为一个字符串
2.用这个字符串修改文件A.bas中IF与THEN中的相关代码,并执行A.bsa生成一个A.TMP文件存放符合条件的编号序列
3.返回主程序打开A.TMP文件提取编号序列输出,最后删除A.TMP
但我认为这总不是办法,还请高手赐教