回 帖 发 新 帖 刷新版面

主题:关于检索排序的新问题?

首先说明:站内的帖子中我没有找到答案,

现有一个二维数组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
但我认为这总不是办法,还请高手赐教

回复列表 (共11个回复)

11 楼

呵呵,其实我们都知道核心了,而且知道有点麻烦,就差慢慢研究了。
我一定要不用文件中转搞定。

再着说文件中转也没什么不好的吧,在一些软件的目录中都有一些不知名的文件,按理说无非两种,或是数据或是程序,那些tmp的临时又是什么呢?我想肯定还是有这种中介的吧,呵呵[em12]

好了谢谢你,给你加上30分

我来回复

您尚未登录,请登录后再回复。点此登录或注册