新手,提一个关于数据显示的问题!(帮顶也有分!!!)

LGame 2006-05-26 09:59:44
例,有这么一个节构
{
int 编号;
char 姓名;
int 性别;
}

从库中取出了10条记录

但在屏幕上只能显示6条,

当按上键头,或下键头时,记录可以滚动显示,
即,按上键头,记录向上提一个!
或按下键头时,记录身下多显示一个,但依然只能是只示6条

比如 1 a
2 b
3 c
4 d
5 e
6 f

当按下键头时,显示的记录就变成了

2 b
3 c
4 d
5 e
6 f
7 g

怎么实现

帮帮我

谢谢了
谢谢了
...全文
370 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
LGame 2006-06-01
  • 打赏
  • 举报
回复
我用了个最笨的方法

将要显示的数据放在了数组了,

然后指针,指来指去
lijian7169 2006-06-01
  • 打赏
  • 举报
回复
ding
kopac 2006-06-01
  • 打赏
  • 举报
回复
thank you
simulationz 2006-05-31
  • 打赏
  • 举报
回复
获取键盘的按键(上键,i+1,超过记录数-5,置为记录数-5,下键,i-1,i<6,置0),清屏,循环[i,i+5],显示六条记录,
sonald 2006-05-31
  • 打赏
  • 举报
回复
学习了
帮UP
ymx0330 2006-05-31
  • 打赏
  • 举报
回复
学习中……
帮顶!
+ 关注!
niatclock 2006-05-30
  • 打赏
  • 举报
回复
UP
SAMUEL_NAME 2006-05-30
  • 打赏
  • 举报
回复
一个双向链表,两个指针分别指向当前显示内容的首和尾,再加上清屏就可以了吧
笑面佛_正版 2006-05-30
  • 打赏
  • 举报
回复
一个数组, 一个指针, 下行一行就移动一位指针不就搞定.
Tiwen 2006-05-30
  • 打赏
  • 举报
回复
链表形式的队列
简单说下吧
做一个结构体。里面放链表的头指针。给三个int型成员。一个是队头 = 0,一个是队尾,一个是总共人数。添加一个结点的时候人数加1。显示的数据从队头和队尾之间取
YFY 2006-05-29
  • 打赏
  • 举报
回复
友情Up了。
templarzq 2006-05-29
  • 打赏
  • 举报
回复
记得每次清屏。。
templarzq 2006-05-29
  • 打赏
  • 举报
回复
这里假定你的记录是个双向链表。连续显示就套个for循环就可以了
templarzq 2006-05-29
  • 打赏
  • 举报
回复
struct xx *p;

display(*cur)
{
int i;
for(i=0;i<6;i++)
printf("xx",*cur);
}

main()
{
char tmp;
p=struct1;
display(p);
tmp=getch();
if(tmp=="up")
{
p=p->previous;
display(p)
}
if(tmp=="down")
{
p=p->next;
display(p);
}
}
happytang 2006-05-29
  • 打赏
  • 举报
回复
滚动可以这样表示,用一个箭头,或者反显;tft的话背景色变化等等
屏幕的位置是固定的,只是你显示的内容不同
设置一个标志,默认指向第一项位置;down,箭头向下走;当要显示的超过6(一屏6项),箭头固定在最低端,分别显示7,8。。。。。,此时上面显示这一项的前5项;up的话也是一个道理
ouyh12345 2006-05-29
  • 打赏
  • 举报
回复
记住一个起始位置,显示从这个位置后的6条。
当按上下键时,改变这个起始位置。
fronm 2006-05-29
  • 打赏
  • 举报
回复
关注
乔小布 2006-05-29
  • 打赏
  • 举报
回复
我为分来...
ccccffff 2006-05-29
  • 打赏
  • 举报
回复
up
Z_Wing 2006-05-29
  • 打赏
  • 举报
回复
如果只完成翻屏功能的话,可以考虑设置一个序号变量,记录现在显示的内容出于整个记录中的什么位置。这里给出一个例子:
#include <stdio.h>

int tmp[20];//模拟数据结构,display函数显示数组里的元素

void display(int index) //显示函数,根据传入的index参数,依次显示6条记录
{
int i = 0;
if (index > -1 && index + 6 < 21)
{
for (i = index;i < index + 6;i++)
printf("number:%d\n",tmp[i]);
}
}

int main()
{
char str;
int i;
int index = -1;

for (i = 0;i < 20;i++)
tmp[i] = i;


while (1)
{
scanf("%c",&str);//取得控制字符,u为上翻,d为下翻
if (str == 'd')
{
index++;//下翻后序号加一,下次显示就从index+1处显示
display(index);
if (index > 14)
index = 14;
}
else if(str == 'u')//同上
{
index--;
display(index);
if (index < 0)
index = 0;
}


}


return 0;
}

这里没有做清屏处理,你可以根据你开发的设备自己加入。另外,当显示已经到底后,再向下翻例子中做的是不予处理(上翻到顶也一样),你可以根据需要改成循环翻屏等。
加载更多回复(7)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧