为了账号安全,请及时绑定邮箱和手机立即绑定

因为Dataquery结果集非常大,不允许使用数组等结构来缓存结果集全部数据,该怎么办?

因为Dataquery结果集非常大,不允许使用数组等结构来缓存结果集全部数据,该怎么办?

LEATH 2023-01-12 21:15:55

假定Dataquery类为封装后的数据库结果集对象,调用Dataquery.getData可以返回Data1类型的对象,该对象结构如下:
class Data1
{
String xsxh; //学号
String xsxm; //姓名
String kcdm; //课程代码
float kcxf; //课程学分
float kscj; //成绩
String kcsx;//课程属性
}
Dataquery的数据指针只能向前移动,每次调用Dataquery.next()方法都会检查结果集中当前指针指向位置后面是否还有数据,如果有则向前移动指针,指向下一个元素,否则直接返回false。已知Dataquery中的数据已经按照唯一关键字“学号”进行了排序,示例数据:
95001 张三 001 2 92 必修
95001 张三 002 3 70 选修
95002 李四 003 5 88 必修
95002 李四 005 3 98 选修
因Dataquery结果集非常大,不允许使用数组等结构来缓存结果集全部数据。请编写函数,使用Dataquery为输入参数,计算每个学生的平均成绩(仅成绩不小于60分参与计算),学分和(仅成绩不小于60分,且属性为必修课参与计算),并以下面的格式输出:
学号:95001|姓名:张三|平均成绩:78|学分和:80

查看完整描述

2 回答

?
蛊毒传说

TA贡献1630条经验 获得超3个赞

如果是要访问整个单链表的话,就直接可以从head->next开始一一遍历;
如果是要访问单链表中某个结点的话,那就设个while循环从头结点开始直到遍历到要访问的结点(比如为q)结束。具体程序如下:x为要访问的结点值(假如是int 型)
p=head;
while(p->next->data!=x)
p=p->next;
if(p)
printf("%d",p->data);
else
printf("not exsit this element!");

查看完整回答
反对 回复 2023-01-15
?
GCT1015

TA贡献1576条经验 获得超4个赞

Dataquery既然是对象必然已经进入内存了,否则怎么称为对象,对象是类在内存中的实例化。
如果是个文件的话,就用IO流处理。如果是数据库的输出结果,就用接口函数,用不着缓冲数据。

查看完整回答
反对 回复 2023-01-15

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信