日期:2014-05-17  浏览次数:20784 次

一个简单的数组问题
现在想从一个人员表中读出四个人的名字,然后从中间加入一个人名,变成五个人名,然后拷贝入另一个人员表中去,请问用数组如何实现,我基本不用数组,请大侠帮助.

------解决方案--------------------
说下思路:
1、从数组中取值加入数据表中,用循环实现
2、在循环到指定人物,如本例中的“李四”时,
if 变量=李四 then
insert 数据表 “李四”
end if

------解决方案--------------------
少写一行,应该是:

if 变量=李四 then
insert 数据表 “李四” 
insert 数据表 “胖子”
end if

------解决方案--------------------

楼主的循环要求,比如用来进行值班循环,可按以下思路:

1. 同部门的人排序号,从1开始(给值班人员添加字段“排班”)
1,2,3,4

2. 从最小序号的人开始值班,同时,该人的序号重置为本部门 最大序号+1

则 1 --> 5 张三值班





2 --> 6 李四值班





3 --> 7 王五值班


5
6
7
4 --> 8 赵六值班

3、如果中间插入“胖子”,则

1 --> 5
2 --> 6
胖子-->7



4、说明:“排班”字段使用 32 位整型数,最大值 2147483647 (有符号),约 5883516 年
使用数据库存储,写 SQL 代码比写其他的第三代高级语言代码简单。

如是部门加了新人,则新人的排班序号为: 最大序号+1

------解决方案--------------------
补充一下,如果有人比如“赵六”请假或出差,回来后参与值班。在其他人轮完一圈之后参与值班(变为值班状态)。那么赵六的序号应该是当前值班人的序号(已经+1)再+(值班人数-1)。
比如:
5
2 --> 6 李四值班
3
4

那么赵六的序号是:6+(4人-1)=9,下一轮值班应是:

8
6
7
9 赵六值班

另外:顺便说一下数据表

select * from db order by id
aa=min(序号)
序号=aa+(值班人数-1)
*******

select 值班人员名称 from db where 序号=aa
name=值班人员名称
*******

write(name)

解释:选取最小序号的人作为值班人员,同时把该序号+(值班人数-1)。把值班人员名称提出来,写在值班记录本上。


------解决方案--------------------
更正一下:
一、10楼第一句话有错误,应该是
“补充一下,如果有人比如“赵六”请假或出差,回来后参与值班。在其他人轮完一圈之后参与值班(变为值班状态)。那么赵六的序号应该是当前值班人的序号(已经变为最大序号+1)再+(现有值班人数),而后将赵六变为值班状态。就是说,值班人员应该添加一个“状态”字段,以区分是否可以参与值班。”
 
二、同理,如果有两个人同时请假,同时回来参与值班,那么,其中一人的序号为“当前值班人的序号(已经变为最大序号+1)再+(现有值班人数)",第一个人变为值班状态,“现有值班人数”也就多了1个。
第二个人的序号为“当前值班人的序号(已经变为最大序号+1)再+(现有值班人数)”,第二个人变为值班状态。

三、下面几处地方,(值班人数-1)全部改为(现有值班人数),应该是

比如:
5
2 --> 6 李四值班
3
4

那么赵六的序号是:6+3=9, //这里改动,同时赵六变为值班状态,现有值班人数变为3+1=4
下一轮值班应是:

8
6
7
9 赵六值班

另外:顺便说一下数据表

select * from db order by id
aa=min(序号)
序号=aa+(现有值班人数)
*******

select 值班人员名称 from db where 序号=aa
name=值班人员名称
*******

write(name)

解释:选取最小序号的人作为值班人员,同时把该序号+(现有值班人数)。把值班人员名称提出来,写在值班记录本(显示在屏幕)上。