我做一个评分系统,首先将学生考卷机读卡上读出来信息(如:12482148421844488821122)保存在数据库的一个字段中,然后提出这些信息和标准答案(如:448422121111412824221)比较,相同匹配的为正确答案,将所有正确答案相加乘以一个分数基值就是这个学生的分数。
数据库为foxpro,编程语言为DELPHI问题:我用的普通循环和计数语句,当程序运行到2000多条记录时,总是提示数据库出错。我怀疑是我的算法的问题,请各位指点迷津,介绍一个好的算法,谢谢!

解决方案 »

  1.   

    我觉得应该将表建成诸如下形式;姓名     答案                         得分
    张三    448422121111412824221           ?
    李四    448422121111412824221           ?1、自定义一个函数;返回值是正确答案的得分;
      function getscores(var answer: string; score: integer): integer; 
      begin
       result := ?
      end;2、with adoquery1 do
       begin
        close;
        sql.clear;
        sql.text := 'select * from table_student ';
        open;
        while not eof do
        begin
          fieldbyname('得分').asinteger := getscores(fieldbyname('答案').asstring,3);
                                        //其中3是你的每个题的基分;
          next;
        end;
       end;