当前位置:文档之家› ico文件的数据结构

ico文件的数据结构

ico文件的数据结构
ico文件的数据结构

1.制造原理

调色板模式的ico文件的数据结构,可分为 6 部分:

1.ICON文件头(6字节)

2.ICON图象信息块(16字节)

3.BMP信息头(40字节)

4.调色板(16色为64字节,256色为1024字节)

5.XOR位图

6.AND位图

而调色板模式的bmp文件的数据结构可分为 4 部分:

1.BMP文件头(14字节)

2.BMP信息头(40字节)

3.调色板(16色为64字节,256色为1024字节)

4.XOR位图

分析可知,ico图标与bmp位图有三个相同的部分(注:真彩图标与真彩位图的数据结构均没有调色板部分,所以是两个相同的部分),而且这三个部分是最重要的部分。因此,我

们只要去掉 bmp位图的 BMP文件头,再加上ICON文件头、ICON图象信息块和AND位图,就可以轻松制作出255×255象素以内的任何规格的图标了。然而……且慢,有一点却是很不轻松的:如果你想制作背景透明(屏蔽背景色)的图标,那么你还需要对 XOR位图的数据动大手术,更不轻松的是,AND 位图的数据也必须符合相应的要求,这是相当困难的;而制作有背

景色的图标的话,XOR 位图部分我们可以原封不动,AND 位图全是 0,只要计算出它的长度

来即可添加到 XOR位图数据的后面,这是很容易实现的。所以,下面我所讲的,都是制作有背景色的图标。

ICON文件头结构很简单,一共只有3个数据共6个字节,我们要给其中的“资源类型”和“图象个数” 2个数据均赋值为 1。

ICON 图象信息块有 7个数据共16字节,有5个数据要赋值:图标宽度、图标高度、颜色计数、图像数据块的长度、图象数据块相对于文件头部的偏移量。要赋值的 5个数据中,图象数据块相对于文件头部的偏移量是固定的,图像数据块的长度需要计算,其余 3个数据可从 BMP 信息头中获得资料。

AND 位图的长度必须根据从 BMP 信息头中获得的有关数据计算。

此外,还要更改 BMP 信息头中的 2个数据:一个是图象长度数据(要加上 AND 位图的长度),另一个是图像高度数据(这只要简单地将原数据×2即可)。

OK,一切都准备好了,万事俱备,只欠东风,下面就让东风劲吹吧。

2.编程

新建一个窗体,添加一个公用对话框,两个图片框,三个按纽。

窗体与图片框的ScaleMode属性均设为3,其中 Picture1 的 Autosize 属性设为 Ture。

按纽的属性设置:

Command1:Caption=打开图片

Command2:Caption=数据处理,Enabled=False

Command3:Caption=保存图标,Enabled=False

代码如下:

Option Explicit

Dim pDAT() As Byte '源图数据

Dim aDAT() As Byte 'AND位图数据

Dim iDAT() As Byte 'icon文件头和图象信息块数据

Private Sub Command2_Click()

On Error GoTo 100

Dim d As Long, c As Long

Dim aLength As Long 'AND位图长度

aLength = 4 * (pDAT(4) \ 32 + Abs((pDAT(4) Mod 32) > 0)) * pDAT(8) '计算AND位图的长度ReDim aDAT(aLength - 1) As Byte

ReDim iDAT(21) As Byte

'给 icon文件头和 icon图象信息块的元素赋值

iDAT(2) = 1 '资源类型

iDAT(4) = 1 '图像个数

iDAT(6) = pDAT(4) '图像宽

iDAT(7) = pDAT(8) '图像高

iDAT(8) = 16 * Abs(pDAT(14) = 4)

iDAT(18) = 22 '图象数据块相对于文件头部的偏移量

'更改BMP信息头中的图像高度数据

d = 2 * pDAT(8)

Select Case Len(Hex(d))

Case 1, 2: pDAT(8) = d

Case 3, 4: pDAT(9) = d \ 256: pDAT(8) = d And 255

End Select

'更改BMP信息头中的图象长度数据

c = pDAT(21):

d = pDAT(20) + c * 256 + pDAT(22) * 65536 + aLength

Select Case Len(Hex(d))

Case 1, 2: pDAT(20) = d

Case 3, 4: pDAT(21) = d \ 256: pDAT(20) = d And 255

Case 5, 6: c = d And 65535: pDAT(22) = d \ 65536: pDAT(21) = c \ 256: pDAT(20) = c And 255 End Select

'计算icon图像信息块中的图象长度数据

Select Case pDAT(14) 'pDAT(14)=4为16色,=8为256色,=24为真彩

Case 4: d = d + 40 + 64 '64是16色调色板长度,40是BMP信息头的长度

Case 8: d = d + 40 + 1024 '1024是256色调色板长度

Case 24: d = d + 40

End Select

Select Case Len(Hex(d))

Case 1, 2: iDAT(14) = d

Case 3, 4: iDAT(15) = d \ 256: iDAT(14) = d And 255

Case 5, 6: c = d And 65535: iDAT(16) = d \ 65536: iDAT(15) = c \ 256: iDAT(14) = c And 255 End Select

Command3.Enabled = True: Command2.Enabled = False

100

End Sub

Private Sub Command1_Click()

On Error GoTo ReadErr

Dim ImageName As String, fLength As Long, BJ As Boolean

With CommonDialog1

.DialogTitle = "打开"

.Filter = "图片文件(*.bmp,*.jpg,*.gif)|*.bmp;*.jpg;*.gif"

.ShowOpen

If Len(.FileName) < 5 Then Exit Sub

ImageName = .FileName

End With

Picture1.Picture = LoadPicture(ImageName)

Picture2.Width = Picture1.Width: Picture2.Height = Picture1.Height

Picture2.Picture = LoadPicture()

If Right(LCase(ImageName), 3) <> "bmp" Then '如果不是位图,先存为位图,再读取

BJ = True

ImageName = App.Path & "\TempFile.bmp"

SavePicture Picture1.Image, ImageName

End If

fLength = FileLen(ImageName) '获取文件长度

ReDim pDAT(fLength - 15) As Byte

Open ImageName For Binary As #1

Get #1, 15, pDAT

Close

If BJ Then Kill ImageName '删除临时位图文件

If (pDAT(5) + pDAT(6) + pDAT(7) + pDAT(9) + pDAT(10) + pDAT(11) > 0) Then

MsgBox "图片尺寸超出"

Exit Sub

End If

Me.Caption = ImageName

Command2.Enabled = True

Exit Sub

ReadErr:

Close

End Sub

Private Sub Command3_Click()

On Error GoTo WriteErr

Dim IconName As String

With CommonDialog1

.Flags = &H802

.DialogTitle = "保存"

.Filter = "图标文件(*.ico)|*.ico"

.ShowSave

If .FileName = "" Then Exit Sub

IconName = .FileName

End With

Open IconName For Binary As #1

Put #1, , iDAT

Put #1, , pDAT

Put #1, , aDAT

Close

ReDim iDAT(0)

ReDim pDAT(0)

ReDim aDAT(0)

Command3.Enabled = False

Picture2.Picture = LoadPicture(IconName)

Exit Sub

WriteErr:

Close

MsgBox "图标制作失败"

End Sub

3.代码分析

①在 Command1_Click 过程中,使用二进制读入数据方法,从第15字节读起,这样就去掉了BMP文件头。

②在 Command3_Click 过程中,使用二进制写入数据方法,将ICON文件头、ICON图象信息块、读入的位图数据(修改了其中几个字节的数据)、AND位图数据(全0数据)等,依次写入一个ico文件

③Command2_Click 过程是本代码关键的关键。

首先计算 AND位图的长度。这就需要知道扫描线的长度和图象的高度,而计算扫描线长度还需知道图像的宽度。本代码中,图像高度在原位图数据的 pDAT(8)元素中,图象宽度在原位图数据的 pDAT(4) 元素中,所以可归纳成代码中所示的计算公式。

接着给 ICON文件头和 ICON图象信息块的元素赋值。请注意 iDAT(6)和 iDAT(7),它们

分别是图标的宽度和高度,由于它们都只占用 1个字节,故图标规格的最大值只能做到 255 象素(如果它们都分别占用 4 个字节的话,呵呵,那制作出来的图标是多么地惊人啊!)。icon 图像信息块中的图象长度数据元素 iDAT(14)—iDAT(17)要最后才赋值。

接下来就是更改BMP信息头中的图像高度数据。原元素中只是XOR位图的高度,而图标的数据结构要求这个值是XOR位图高度与AND位图高度之和。

再修改 BMP信息头中的图象长度数据。原元素中只是 XOR位图的长度,而图标的数据结构要求这个值是 XOR位图长度与 AND位图长度之和。

最后修改 icon 图像信息块中的图象长度数据,也就是 iDAT(14)—iDAT(17) 元素的值(这个长度数据本来占用 4个字节,但255×255象素的图标长度只要 3个字节就够了)。计算公式如下:

icon图像信息块中的图象长度=XOR位图长度+AND位图长度+BMP信息头长度+调色板长度

特大图标的制作工作到此就全部结束了,你一定迫不及待地想看看它的效果吧,可惜的是,不论多大的图标,在桌面或资源管理器中最大都只能显示72×72的尺寸,你只有在图片框中才能欣赏到它的丽容了。不过不要垂头丧气,通过这个实验,你将会获得许多图标及位

图的数据结构方面的知识,这不就是最大的收获吗?

附:图标文件的数据结构之研究

一、从图标的显示原理说起

一般图标都是由两个单独的位图组成的。如果该图标是屏蔽背景色的话,那么,第一个

位图是由黑色背景(相关的颜色位全为 0)与彩色图标图案组成的,该位图将与当前屏幕进

行异或操作(XOR),故称其为 XOR位图;第二个位图是由白色背景(相关的颜色位全为1)与黑色图标图案(相关的颜色位全为0)组成的,该位图将与当前屏幕进行与操作(AND),故称其为 AND 位图。因此,图标的显示是通过两个步骤完成的:

步骤1.首先,AND 位图与当前屏幕进行 AND 操作;

步骤2.接着,XOR 位图与当前屏幕进行 XOR 操作。

大家知道,任何数值与 1 进行AND操作的结果将等于原数值,而任何数值与 0 进行AND 操作的结果则是 0,因此在步骤1中,AND位图中的背景色(即白色 1)部分与屏幕经过 AND 操作后仍然保持屏幕的原色彩,而图案色(即黑色 0)部分则取代了原屏幕色。步骤 1结束后,屏幕上将留下一个黑色的图标图案。在随后的步骤 2中,由于任何数值与 0 进行异或操作的结果都等于原数值,因此,XOR 位图与屏幕经过异或操作后,彩色图案部分就取代了屏

幕上的黑色图标部分,而屏幕的背景色与 XOR位图中的黑色背景 0异或后仍保持原来的屏幕色。步骤 2结束后,一个以屏幕色为背景的彩色图标图案就出现在屏幕上了(这也是我们通常所说的“屏蔽背景色”或者说“背景色透明”),这就是图标显示的原理。

二、图标的图形

图标的图形,实际上就是位图格式的图片,是一个标准的位图格式。Windows只要从BMP 信息头中获取信息就足够了,它据以解释在其后出现的数据应该如何处理。如果是调色板模式,BMP 信息头后面的数据包含有调色板和像素点颜色索引,如果是真彩模式,其后的数据

直接就是像素点的 RGB 颜色值。

调色板模式的位图文件是由BMP文件头、BMP信息头、调色板、数据区(又称位图点阵)等几个部分组成的。

而调色板模式的图标文件是由ICON文件头、ICON图像信息块、BMP信息头、调色板、数据区(这个数据区比位图的数据区多了 AND 位图的数据,后面会讲到)。

我们欣喜地看到,位图与图标的数据结构有很大一部分是相同的!了解了这一情况,我们可以简单地把图标图形的结构理解为位图信息。这样,我们就有可能根本不需要真的去画一幅图来制作图标,而只需要利用已有的位图,对关键数据进行程序填充或修改就可以了,所编写的代码,直接按图标格式的要求,可把一个尺寸不大于255×255 像素的任意位图,封装成标准格式的图标(位图的宽高尺寸保持不变)。

三、图标的数据结构

图标文件的数据结构可分为6部分,叙述如下:

-----------------------------------------------------------------------

顺号名称长度(单位:字节)说明

-----------------------------------------------------------------------

1 ICON文件头 6

2 ICON图象信息块16 有多少个图像,则信息块也有多少个

3 BMP 信息头40

4 XOR 位图调色板16色=64,256色=1024 真彩图标从此开始像素点的 RGB 值

5 XOR 位图以调色板的索引值形式表示

6 AND 位图以单色表示

-----------------------------------------------------------------------

说明:

1.上表中的3-6部分合称图像数据块,其中5、6部分又合称为图像数据区(也称位图点阵)

2.不论何种规格的图标,其1-3部分的字节长度是固定的。

3.调色板是供XOR位图使用的,所以又称作XOR位图调色板。AND位图是不需要调色板的,因为它是单色的,即只有黑色和白色,所以又称作单色AND位图。

4.请注意第 2部分的图象信息块的说明,“有多少个图像”是什么意思呢?原来,在一个图标文件中,有可能存放几个图像(windows图标最多可有8个图像),但每个图像都有自己的 BMP 信息头、调色板、XOR 位图和 AND 位图,且它们的图像大小也可能不相同。以16 色有 3 个图像的图标为例,其数据结构如下:

-------------------------------------------------------------------------

顺号名称长度(字节)说明

-------------------------------------------------------------------------

1 文件头 6

2 图象1的图象信息块 16

3 图象2的图象信息块 16

4 图象3的图象信息块 16

5 图象1的图象数据块不定其中BMP信息头和调色板固定为40和64字节

6 图象2的图象数据块不定同上

7 图象3的图象数据块不定同上

-------------------------------------------------------------------------

下面以内含1个图像、16色、16×16规格的图标为例详述(偏移量括号前为10进制,括号内为16进制):

------------------------------------------------------------------------------------ 偏移量字节数描述典型值(16进制)

------------------------------------------------------------------------------------ (一、文件头6字节)

000(000)2 保留的字节00 00

002(002)2 资源类型01 00 (01为图标,02为光标)

004(004)2 图象个数01 00

(二、图像信息块16字节)

006(006)1 图标宽度10

007(007)1 图标高度10

008(008)1 颜色计数10(16色,02=单色,00=256色或真彩) 009(009)1 未用 00

010(00A)4 保留的00 00 00 00

014(00E)4 图象数据块的长度28 01 00 00(10进制=296)

018(012)4 图象数据块相对于文件头部的偏移量16 00 00 00(10进制=22)

(三、BMP信息头40字节)

022(016)4 BMP 信息头结构长度28 00 00 00(10进制=40)

026(01A)4 图像宽度 10 00 00 00

030(01E)4 图像高度(XOR图高度+AND图高度)20 00 00 00

034(022)2 位面板数 01 00

036(024)2 每象素所占位数 04 00(04=16色,8=256色,18=真彩) 038(026)4 象素数据的压缩类型00 00 00 00(表示未压缩)

042(02A)4 位图点阵的长度C0 00 00 00(10进制=192)

046(02E)16 未用16个00.

(四、XOR位图的调色板64字节)

062(03E)1 蓝色分量

063(03F)1 绿色分量

064(040)1 红色分量

065(041)1 未用00

……

(五、XOR位图的数据128字节)

126(07E)128 XOR位图

(六、单色AND位图的数据64字节)

254(0FE)64 AND位图

------------------------------------------------------------------------------------ 说明:

1.上表中有关长度的数据,遵循“低位在前,高位在后”的原则。如果有4个字节,那么后2

个字节为高位,前2个字节为低位,并且每2个字节内也是“低位在前,高位在后”。例如

偏移量为00E的图象数据块的长度是28 01 00 00,在计算时要把它们反过来,变成00 00

01 28,实际就是16进制的128即10进制的296;再如12 34 56 78,那么实际计算时就是:78 56 34 12,即10进制的2018915346

2.偏移量为024的“每象素所占位数”是指象素在XOR位图中所占的字节位数(1个字节=8位),04表示每个象素占4位,换言之,就是说XOR位图中每个字节可表示2个象素。该数据如为01 00,则表示单色(黑白位图),04 00为16色,08 00为256色,18 00为24位真彩。

3.XOR位图每字节对应2个像素(16色)或1个像素(256色),它的排列规律是:倒向(最末行的像素在最前,而第一行的像素在最后,由此类推),行内像素按从左至右的顺序,字节高

位表示靠左的像素。AND位图每字节对应8个象素(每位对应1个象素),排列规律与XOR位图相同。

4.真彩图标没有调色板,而是在第 3部分 BMP 信息头的后面直接存放像素的 RGB 值,24位

真彩图标每 3个字节对应1个像素值,其中每个字节分别对应该像素的 R、G、B值。像素的排列规律与调色板模式的图标相同。

5.上表的第一、二、三部分中,凡字节数为1的数据,其数据类型为Byte,字节数为2的数据, 其数据类型为Integer,字节数为4的数据,其数据类型为Long(第三部分中有16个未用的的字节,是4个Long类型的数据,它们在.bmp位图中是有作用的)。

下面是各种图标(内含1个图像)的调色板、图像数据的长度及总长度,括号内是起始字

节的偏移量:

单位:字节

------------------------------------------------------

图标规格调色板 XOR位图 AND位图总长度

------------------------------------------------------

16 色16×16象素 (62) 64 (126) 128 (254) 64 318

16 色24×24象素 (62) 64 (126) 288 (414) 96 510

16 色32×32象素 (62) 64 (126) 512 (638) 128 766

16 色48×48象素 (62) 64 (126) 1152 (1278)384 1662

256色16×16象素 (62)1024 (1086) 256 (1342) 64 1406

256色24×24象素 (62)1024 (1086) 576 (1662) 96 1758

256色32×32象素 (62)1024 (1086)1024 (2110)128 2238

256色48×48象素 (62)1024 (1086)2304 (3390)384 3774

真彩16×16象素 (62) 768 (830) 64 894

真彩24×24象素 (62) 1728 (1790) 96 1886

真彩32×32象素 (62) 3072 (3134)128 3262

真彩48×48象素 (62) 6912 (6974)384 7358

------------------------------------------------------

说明:

1.XOR位图的长度与图标尺寸及图标的颜色数均有关,AND位图的长度只与图标的尺寸有关,

与图标的颜色数无关。

2.XOR位图每字节对应2个像素(16色)或1个像素(256色)

3.AND位图每4字节为一组(这里所说的“一组”,其标准名称为“一条扫描线”,扫描线的

定义是:位图中的一行数据信息叫做一条扫描线),但48×48图标的 AND 位图每8个字节

为一组。组内每个颜色位对应1个象素。注意:

①16×16图标每组的后2个字节不用,所以实际上是2字节(16位)对应一行16个象素

②24×24图标每组的最后1个字节不用,所以实际上是3字节(24位)对应一行24个象素

③32×32图标每组4个字节32位对应一行32个象素

④48×48图标每组的后2个字节不用,所以实际上是6字节(48位)对应一行48个象素

4.为什么位图数据中会有不用的字节呢,这不是浪费吗?原来,Windows 有一个规定,每一

条扫描线必须结束于一个32位的边界,也就是说,一条扫描线的位长度(按位计算)必须

能整除32,或字节长度必须能整除4(XOR、AND 位图都是如此)。举例来说,如果一条扫

描线只有 8位,那么就要用空白的24位来补充,如果有48位,那么还必须用空白的16位来补充。

5.XOR位图每条扫描线长度取决于两个因素:图像的宽度值和颜色数。各种颜色的图标的XOR 位图每条扫描线的长度如下表所示(单位:字节):

①16色图标:

----------------------

XOR图象宽度扫描线长度

----------------------

16象素8

17--24象素12

25--32象素16

33--40象素20

41--48象素 24

49--56象素28

57--64象素32

65--72象素36

71--80象素40

……

----------------------

可以归纳出计算公式是:

16色XOR位图每条扫描线长度=4×(图象宽\8+Abs((图象宽 Mod 8)>0))

②256色图标:

----------------------

XOR图象宽度扫描线长度

----------------------

16象素16

17--20象素20

21--24象素24

25--28象素28

29--32象素 32

33--36象素36

37--40象素40

41--44象素44

45--48象素48

……

----------------------

可以归纳出计算公式是:

256色XOR位图每条扫描线长度=4×(图象宽\4+Abs((图象宽 Mod 4)>0))

③真彩图标:

----------------------

XOR图象宽度扫描线长度

----------------------

16象素48

17象素52

18象素56

19象素60

20象素 60

21象素 64

22象素68

23象素72

24象素 72

……

----------------------

可以归纳出计算公式是:

真彩XOR位图每条扫描线长度=4×(图象宽×3\4+Abs((图象宽×3 Mod 4)>0))

6.AND位图每条扫描线的长度只与图标图像的宽度值有关。如下表所示(单位:字节):

----------------------

AND图象宽度扫描线长度

----------------------

16--32象素 4

33--64象素8

65--96象素12

97--128象素 16

129--160象素20

160--192象素24

192--224象素28

224--255象素32

----------------------

可以归纳出计算公式是:

AND位图每条扫描线长度=4×(图象宽\32+Abs((图象宽 Mod 32)>0))

7.要使背景透明,XOR位图的背景必须为黑色(对应的颜色位=0),图案为彩色,而 AND位图则背景必须为白色(对应的颜色位=1),图案为黑色(对应的颜色位=0)

8.XOR位图的彩色图形信息中存储的并不是颜色值,而是与调色板对应的索引值,从 0 开始编号。

四、图标的颜色

调色板模式的图标,其颜色是由调色板确定的,而调色板是可以自行定义的。比如16色图标,其调色板只要有16种颜色就行。下面是以 QBasic 的16种颜色作为调色板时,XOR 位图调色板的16色索引值与 QBColor 的颜色值对照:

----------------------------------------------------

颜色索引值 QBasic 调色板中的值(最后一个字节未用)

----------------------------------------------------

黑色0 0 00 00 00 00

深红 1 4 00 00 80 00

深绿 2 2 00 80 00 00

深黄 3 6 00 80 80 00

深蓝 4 1 80 00 00 00

深紫 5 5 80 00 80 00

深青 6 3 80 80 00 00

深灰7 8 80 80 80 00

浅灰 8 7 C0 C0 C0 00

红色9 C(12) 00 00 FF 00

绿色A(10) A(10) 00 FF 00 00

黄色B(11) E(14) 00 FF FF 00

蓝色C(12) 9 FF 00 00 00

紫色D(13) D(13) FF 00 FF 00

青色E(14) B(11) FF FF 00 00

白色F(15) F(15) FF FF FF 00

----------------------------------------------------

怎么个对应法呢?举个例来说,比如16×16象素图标的 XOR位图中某个字节值为81,那就表示该字节所对应的2个象素,左边的象素为浅灰色而右边的象素为深红色。

五、一个具体的例子

有一个16色16×16象素的图标,该图标是一个边长为16、边框为红色的空心正方形,其全部数据如下:

------------------------------------------------------

偏移量 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

------------------------------------------------------

000 00 00 01 00 01 00 10 10 10 00 00 00 00 00 28 01

010 00 00 16 00 00 00 28 00 00 00 10 00 00 00 20 00

020 00 00 01 00 04 00 00 00 00 00 C0 00 00 00 00 00

030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

040 00 00 00 00 80 00 00 80 00 00 00 80 80 00 80 00

050 00 00 80 00 80 00 80 80 00 00 80 80 80 00 C0 C0

060 C0 00 00 00 FF 00 00 FF 00 00 00 FF FF 00 FF 00

070 00 00 FF 00 FF 00 FF FF 00 00 FF FF FF 00 99 99

080 99 99 99 99 99 99 90 00 00 00 00 00 00 09 90 00

090 00 00 00 00 00 09 90 00 00 00 00 00 00 09 90 00

0A0 00 00 00 00 00 09 90 00 00 00 00 00 00 09 90 00

0B0 00 00 00 00 00 09 90 00 00 00 00 00 00 09 90 00

0C0 00 00 00 00 00 09 90 00 00 00 00 00 00 09 90 00

0D0 00 00 00 00 00 09 90 00 00 00 00 00 00 09 90 00

0E0 00 00 00 00 00 09 90 00 00 00 00 00 00 09 90 00

0F0 00 00 00 00 00 09 99 99 99 99 99 99 99 99 00 00

100 00 00 7F FE 00 00 7F FE 00 00 7F FE 00 00 7F FE

110 00 00 7F FE 00 00 7F FE 00 00 7F FE 00 00 7F FE

120 00 00 7F FE 00 00 7F FE 00 00 7F FE 00 00 7F FE

130 00 00 7F FE 00 00 7F FE 00 00 00 00 00 00

------------------------------------------------------

下面对位图部分的数据加以说明:

1.XOR位图最末一行的数据在07E-085这8个字节中,由于是一条红线,所以索引值均为9。

2.XOR位图倒数第二行的数据在086-08D这8个字节中,该行的首尾2个象素为红色,其余14个象素为背景色,所以086字节所对应象素的颜色索引值分别为9、0,而08D字节所对应象素

的颜色索引值分别为0、9,因为要屏蔽背景色,所以除了红色外,其余均为黑色,黑色在

调色板中的索引值为0。其余行的数据也照此分析。

3.AND位图最末一行的数据在0FE-101这4个字节中,后2个字节没用,前2个字节为00 00,因为要屏蔽背景色,AND位图的图象位必须为0(黑色),而不管这图象原来是什么颜色,

所以,这一行是红线,相应的颜色位就全是0了。

4.AND位图倒数第二行的数据在102-105这 4个字节中,前2个字节对应该行的16个象素,其值为7F FE。先看7F,其二进制为 01111111,因为该行首个象素为红色,所以对应的最高

位为0(黑色),跟着的7个象素都是背景色,而在AND位图中,要屏蔽背景色,那么背景色的对应位应该是白色,白色在单色中表示为1,所以这8个象素所表示的16进制值就是7F了。再看FE,其二进制值为 11111110,它对应的该行后8个象素,而该行最后1个象素是红色,所以对应的最低位为0(黑色),其它象素是背景色,所以对应的位都是1(白色)。

5.其它行的数据,可以比照上述的方法自行分析。

数据结构作业

数据结构习题 第一章绪论 1.6 在程序设计中,常用下列三种不同的出错处理方式: 1) 用exit语句终止执行并报告错误; 2) 以函数的返回值区别正确返回或错误返回; 3) 设置一个整形变量的函数参数以区别正确返回或某种错误返回。 试讨论这三种方法各自的优缺点。 1.7 在程序设计中,可采用下列三种方法实现输出和输入: 1) 通过scanf和printf语句; 2) 通过函数的参数显示传递; 3) 通过全局变量隐式传递。 试讨论这三种方法的优缺点。 1.8 设n为正整数。试确定下列各程序段中前置以记号@的语句的频度: 5) for (i = 1; i <= n; i++ ) { for (j = 1; j <= i; j++) { for (k = 1; k <= j; k++) { @ x += delta; } } } 答案:n*(n+1)*(n+2) =1+(1+2)+(1+2+3)+...+(1+2+3+...+n) =∑ =+ n i i i 1 2 / )1 ( * =1/2*∑ =+ n i i i i 1 * =n*(n+1)*(2n+1)/12 +n*(n+1)/4 =n*(n+1)*(n+2)/6 7) x = n; //n是不小于1的常数 y = 0; while (x >= (y + 1) * (y + 1)) { @ y++; } 答案:n向下取整 8) x = 91; y = 100; while (y > 0) { @ if (x > 100) { x -= 10; y--;}

else { x++; } } 答案:if 执行次数为1100, if 判断内部执行为100次 1.19 试编写算法,计算i!·2i (i = 0, 1, …, n-1)的值并分别存入数组a[arrsize]的各个分量中。假设计算机中允许的整数最大值为MAXINT ,则当n > arrsize 或对某个k (0 ≤ k ≤ n-1)使k!·2k > MAXINT 时,应按出错处理。注意选择你认为较好的出错处理方法。 1.20 试编写算法求一元多项式∑==n i i i x a x 0n )(P 的值P n (x 0),并确定算法中每一语句的执行 次数和整个算法的时间复杂度。注意选择你认为较好的输入和输出方法。本题的输入为a i (i=0, 1, …, n )、x 0和n ,输出为P n (x 0)。

数据结构 习题 第一章 绪论

第1章绪论 一、选择题 1. 算法的计算量的大小称为计算的()。 A.效率 B. 复杂性 C. 现实性 D. 难度 2. 算法的时间复杂度取决于() A.问题的规模 B. 待处理数据的初态 C. A和B 3.计算机算法指的是(1),它必须具备(2)这三个特性。 (1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法 (2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性 C. 确定性、有穷性、稳定性 D. 易读性、稳定性、安全性 4.一个算法应该是() A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C. 5. 下面关于算法说法错误的是() A.算法最终必须由计算机程序实现 B.为解决某问题的算法同为该问题编写的程序含义是相同的 C. 算法的可行性是指指令不能有二义性 D. 以上几个都是错误的 6. 下面说法错误的是()【南京理工大学 2000 一、2 (1.5分)】 (1)算法原地工作的含义是指不需要任何额外的辅助空间 (2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法 (3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界 (4)同一个算法,实现语言的级别越高,执行效率就越低 A.(1) B.(1),(2) C.(1),(4) D.(3) 7.从逻辑上可以把数据结构分为()两大类。【武汉交通科技大学 1996 一、4(2分)】A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 8.以下与数据的存储结构无关的术语是()。【北方交通大学 2000 二、1(2分)】A.循环队列 B. 链表 C. 哈希表 D. 栈 9.以下数据结构中,哪一个是线性结构()?【北方交通大学 2001 一、1(2分)】A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串 10.以下那一个术语与数据的存储结构无关?()【北方交通大学 2001 一、2(2分)】A.栈 B. 哈希表 C. 线索树 D. 双向链表 11.在下面的程序段中,对x的赋值语句的频度为()【北京工商大学 2001 一、10(3分)】 FOR i:=1 TO n DO FOR j:=1 TO n DO x:=x+1; A. O(2n) B.O(n) C.O(n2) D.O(log2n) 12.程序段 FOR i:=n-1 DOWNTO 1 DO FOR j:=1 TO i DO IF A[j]>A[j+1] THEN A[j]与A[j+1]对换; 其中 n为正整数,则最后一行的语句频度在最坏情况下是()

数据库设计说明书(文档格式)

数据库设计说明书 1. 引言 1.1 编写目的 阐明编写本数据库设计说明书的目的,指出读者对象。 1.2 项目背景 列出本项目的委托单位、开发单位和主管部门,说明该数据库系统与其他系统的关系。 1.3 定义 列出本文档中所用到的专门术语的定义和缩写词的原意。 1.4 参考资料 列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源。包括本项目经核准的计划任务书、合同或上级机关的批文,项目开发计划,需求规格说明书,本文档需要引用的论文、著作,需要采用的标准、规范。 2. 外部设计 2.1 标识 列出用于标识该数据库的编码、名称、标识符或标号,并给出附加的描述性信息。如果该数据库是在实验中的或是暂时性的,则要说明其暂时性和有效期。 2.2 约定 叙述使用该数据库所必须了解的建立标号、标识的有关约定。例如用于标识库内各个文卷、记录、数据项的命名约定等。

2.3 使用该数据库的软件 列出将要使用或访问该数据库的所有软件。 2.4 支撑软件 叙述与此数据库有关的支撑软件,如数据库管理系统、存储定位程序等。概要说明这些支撑软件的名称、功能及为使用这些支撑软件所需的操作命令。列出这些支撑软件的有关资料。 2.5 专门说明 为此数据库的生成、测试、操作和维护的相关人员提供专门的说明。 3. 结构设计 3.1 概念结构设计 说明数据库的用户视图,即反映现实世界中的实体、属性和它们之间关系的原始数据形式,包括各数据项、记录、文卷的标识符、定义、类型、度量单位和值域。可使用ER图。 3.2 逻辑结构设计 说明把上述原始数据进行分解、合并后重新组织起来的数据库全局逻辑结构,包括记录、段的编排,记录、段之间的关系及存取方法等,形成本数据库的管理员视图。 3.3 物理结构设计 建立系统程序员视图,包括: (1) 数据在内存中的安排,包括索引区、缓冲区的设计。 (2) 所使用的外存设备及外存之间的组织,包括索引区、数据块的组织 与划分。 (3) 访问数据的方式方法。

严蔚敏《数据结构》(C语言版)配套题库-第12章 文 件【圣才出品】

第12章 文 件 一、选择题 1.哈希文件使用哈希函数将记录的关键字值计算转化为记录的存放地址,因为哈希函数是一对一的关系,则选择好的()方法是哈希文件的关键。 A.哈希函数B.除余法中的质数C.冲突处理D.哈希函数和冲突处理【答案】D 【解析】哈希表是根据文件中关键字的特点设计一种哈希函数和处理冲突的方法将记录散列到存储设备上。 2.下述文件中适合于磁带存储的是()。 A.顺序文件B.索引文件C.哈希文件D.多关键字文件 【答案】A 【解析】磁带存储是一种顺序存储,顺序文件(sequential file)是记录按其在文件中的逻辑顺序依次进入存储介质而建立的,即顺序文件中物理记录的顺序和逻辑记录的顺序是一致的。因此顺序文件适合磁带存储。 二、判断题 1.倒排文件是对次关键字建立索引。() 【答案】√ 【解析】倒排文件是对每一个次关键字项建立次关键字索引(称为倒排表),将所有具有相同次关键字的记录的物理记录号都填入倒排表为此次关键字的表中。

2.倒排序文件的优点是维护简单。() 【答案】× 【解析】倒排文件的优点是检索记录较快。特别是对某些询问,不用读取记录,就可得到解答。 3.哈希表与哈希文件的唯一区别是哈希文件引入了“桶”的概念。() 【答案】× 【解析】哈希文件是使用一个函数(算法)来完成一种将关键字映射到存储器地址的映射,根据用户给出的关键字,经函数计算得到目标地址,再进行目标的检索。哈希表是根据关键码值而直接进行访问的数据结构。 4.文件系统采用索引结构是为了节省存储空间。() 【答案】× 【解析】是为了缩短查找的时间,牺牲了一部分存储空间。 5.对处理大量数据的外存介质而言,索引顺序存取方法是一种方便的文件组织方法。() 【答案】× 【解析】索引顺序存取方法插入操作比较麻烦,对于处理大量数据,会有大量的记录进入溢出区,而基本区中又浪费很多空间。

数据库表结构设计参考

数据库表结构设计参考

表名外部单位表(DeptOut) 列名数据类型(精度范围)空/非空约束条件 外部单位ID 变长字符串(50) N 主键 类型变长字符串(50) N 单位名称变长字符串(255) N 单位简称变长字符串(50) 单位全称变长字符串(255) 交换类型变长字符串(50) N 交换、市机、直送、邮局单位邮编变长字符串(6) 单位标识(英文) 变长字符串(50) 排序号整型(4) 交换号变长字符串(50) 单位领导变长字符串(50) 单位电话变长字符串(50) 所属城市变长字符串(50) 单位地址变长字符串(255) 备注变长字符串(255) 补充说明该表记录数约3000条左右,一般不做修改。初始化记录。 表名外部单位子表(DeptOutSub) 列名数据类型(精度范围)空/非空约束条件 外部子单位ID 变长字符串(50) N 父ID 变长字符串(50) N 外键 单位名称变长字符串(255) N 单位编码变长字符串(50) 补充说明该表记录数一般很少 表名内部单位表(DeptIn) 列名数据类型(精度范围)空/非空约束条件 内部单位ID 变长字符串(50) N 主键 类型变长字符串(50) N 单位名称变长字符串(255) N 单位简称变长字符串(50) 单位全称变长字符串(255) 工作职责 排序号整型(4) 单位领导变长字符串(50) 单位电话(分机)变长字符串(50) 备注变长字符串(255)

补充说明该表记录数较小(100条以内),一般不做修改。维护一次后很少修改 表名内部单位子表(DeptInSub) 列名数据类型(精度范围)空/非空约束条件内部子单位ID 变长字符串(50) N 父ID 变长字符串(50) N 外键 单位名称变长字符串(255) N 单位编码变长字符串(50) 单位类型变长字符串(50) 领导、部门 排序号Int 补充说明该表记录数一般很少 表名省、直辖市表(Province) 列名数据类型(精度范围)空/非空约束条件ID 变长字符串(50) N 名称变长字符串(50) N 外键 投递号变长字符串(255) N 补充说明该表记录数固定 表名急件电话语音记录表(TelCall) 列名数据类型(精度范围)空/非空约束条件ID 变长字符串(50) N 发送部门变长字符串(50) N 接收部门变长字符串(50) N 拨打电话号码变长字符串(50) 拨打内容变长字符串(50) 呼叫次数Int 呼叫时间Datetime 补充说明该表对应功能不完善,最后考虑此表 表名摄像头图像记录表(ScreenShot) 列名数据类型(精度范围)空/非空约束条件ID 变长字符串(50) N 拍照时间Datetime N 取件人所属部门变长字符串(50) N 取件人用户名变长字符串(50) 取件人卡号变长字符串(50) 图片文件BLOB/Image

数据结构习题及答案-第11章 文件

第十一章文件 一、选择题 1. 散列文件使用散列函数将记录的关键字值计算转化为记录的存放地址,因为散列函数是一对一的关系,则选择好的()方法是散列文件的关键。【哈尔滨工业大学 2001二、5 (2分)】 A. 散列函数 B. 除余法中的质数 C. 冲突处理 D. 散列函数和冲突处理 2. 顺序文件采用顺序结构实现文件的存储,对大型的顺序文件的少量修改,要求重新复制整个文件,代价很高,采用()的方法可降低所需的代价。【北京邮电大学 2000 二、 8 (20/8分)】 A. 附加文件 B. 按关键字大小排序 C. 按记录输入先后排序 D. 连续排序 3. 用ISAM组织文件适合于()。【中科院软件所 1998】 A.磁带 B.磁盘 4.下述文件中适合于磁带存储的是()。【中科院计算所 2000 一、7(2分)】 A. 顺序文件 B. 索引文件 C. 散列文件 D. 多关键字文件 5. 用ISAM和VSAM组织文件属于()。 A. 顺序文件 B. 索引文件 C. 散列文件 【中国科技大学 1998 二、5(2分)中科院计算所 1998 二、5(2分)】 6. ISAM文件和VASM文件属于()。【山东大学 2001 二、5 (1分)】 A. 索引非顺序文件 B. 索引顺序文件 C. 顺序文件 D. 散列文件 7. B+树应用在()文件系统中。【北京邮电大学 2001 一、1(2分)】 A. ISAM B. VSAM 二、判断题 1. 文件是记录的集合,每个记录由一个或多个数据项组成,因而一个文件可看作由多个记录组成的数据结构。【长沙铁道学院 1998 一、5 (1分)】 2. 倒排文件是对次关键字建立索引。【南京航空航天大学 1997 一、10(1分)】 3. 倒排序文件的优点是维护简单。【南京航空航天大学 1995 五、10(1分)】 4. 倒排文件与多重表文件的次关键字索引结构是不同的。【西安交通大学 1996 二、6 (3分)】 5. Hash表与Hash文件的唯一区别是Hash文件引入了‘桶’的概念。【南京航空航天大学1996六10(1分)】 6. 文件系统采用索引结构是为了节省存储空间。【北京邮电大学 2000 一、10 (1分)】 7. 对处理大量数据的外存介质而言,索引顺序存取方法是一种方便的文件组织方法。 【东南大学 2001 一、1-10 (1分)】 8. 对磁带机而言,ISAM是一种方便的稳健组织方法。【中科院软件所 1997 一、10(1分)】 9. 直接访问文件也能顺序访问,只是一般效率不高。【北京邮电大学 2002 一、10(1分)】 10. 存放在磁盘,磁带上的文件,即可以是顺序文件,也可以是索引结构或其他结构类型的文件。 【山东大学 2001 一、7 (1分)】 11. 检索出文件中的关键码值落在某个连续的范围内的全部记录,这种操作称为范围检索。对经常需要做范围检索的文件进行组织,采用散列法优于顺序检索法。【中山大学 1994 一、

数据文件格式

1.交点线文件(*.JDX) 系统提供三种交点线资料的格式: 格式一: XY(或NE) 1 起点编号坐标坐标 0 交点号坐标坐标 R LS1 LS2 R1 R2 交点号坐标坐标 R LS1 LS2 R1 R2 …… 终点编号坐标坐标 0 格式二: XY(或NE) 2 起点编号起点坐标X 起点坐标Y 0 交点号起始边方位角起始边长度 R LS1 LS2 R1 R2 交点号来向边方位角来向边长度 R LS1 LS2 R1 R2 ……… 终点编号终止边方位角终止边长度 0 格式三: XY(或NE) 3 起点编号起点坐标X(或N)起点坐标Y(或E) 0 交点号起始边方位角起始边长度 R LS1 LS2 R1 R2 交点号来向边偏角来向边长度 R LS1 LS2 R1 R2

………. 终点编号终止边偏角终止边长度 0 格式说明: 大地(测量)坐标系,采用“NE”标识;数学直角坐标系采用“XY”标识。 对于低等级路起点坐标和起始边方位角可以假设为0。 偏角的正负与坐标相关,在XY坐标系下:左正右负;在NE坐标系下:左负右正。 变量意义 R:圆曲线半径 LS1、LS2:第1和第2回旋线的长度,对于四级公路,当LS1、LS2的值为负值时表示Lc1和Lc2值(缓和段的长度),HARD系统允许在四级公路中同时存在LS和LC值;(无相应回旋线时输0,成对出现)R1 R2 ---第1、第2回旋线起点半径;(无相应半径时输0,成对出现。) 对于存在虚交的交点线文件,应按如下述格式填写,比如TA、 TB、 TC、 TD 四点组成虚交(TA为总交点,TB、 TC、 TD为分交点),应将这四点共有的曲线信息写在TA 的后面,而其他三点的曲线信息位置填写 -1 。比如: NE n 表示第n种交点线格式 . . . . . TA 坐标坐标 R LS1 LS2 R1 R2 TB 坐标坐标 -1 TC 坐标坐标 -1 TD 坐标坐标 -1 . . . . . . Hard系统能够处理任意多点的虚交问题。 6、提醒用户:交互式设计的同时可以通过“输出文件”输出*.JDX和*.PQX文件以随时存储设计成果。

社会保障卡文件结构和数据项(V2.0) .doc

谢谢观赏 谢谢观赏社会保障卡文件结构和数据项(V2.0) 引言 本规范是《社会保障(个人)卡规范》(LB002-2000)中关于应用文件结构和数据项部分的升级,包括以下主要内容: ——社会保障卡应用的文件结构和数据项。其中包括DDF,ADF和EF的内部属性,访问控制等信息。 1 适用范围 本规范适用于人力资源和社会保障领域面向社会公众发行的社会保障卡。其使用对象主要是与社会保障卡应用相关的卡片设计、制造、管理、发行、受理以及应用系统的研制、开发、集成和维护等组织机构。 2 参考标准 GB/T 16649.5-2002 识别卡带触点的集成电路卡第5部分:应用标识符的国家编 号体系和注册规程 3 定义 以下定义适用于本规范。 3.1 命令(Command) 终端向IC卡发出的一条信息,该信息启动一个操作或请求一个应答。 3.2 响应(Response) IC卡处理完成收到的命令报文后,回送给终端的报文。 3.3 交易(Transaction) 持卡者和业务、管理部门之间根据社会保障卡所支持的应用接受、提供服务的行为。 3.4 集成电路卡(IC卡)(Integrated Circuit(s) Card) 内部封装一个或多个集成电路的ID-1型卡(如ISO/IEC 7810、ISO/IEC 7811第1至第5部分、ISO/IEC 7812和ISO/IEC 7813中描述的)。 3.5 报文(Message) 由终端向卡或卡向终端发出的,不含传输控制字符的字节串。 3.6 报文鉴别代码(Message Authentication Code) 对交易数据及其相关参数进行运算后产生的代码。主要用于验证报文的完整性。 3.7 密钥(Key)

数据库设计文档

学院 ~ 数据库课程设计报告$ ( ) 电子技术系 ! 专业班级 学生姓名 指导教师 . 实习地点

# / 数据库设计文档 一、系统需求分析报告(数据流图、数据词典和功能分析) 系统应具有售票、查询、管理和维护等功能,系统管理员可以进行对车次的更改、票价的变动及调度功能,票价的修改可以通过修改运价来进行,车次调度可通过对发车时刻表的修改来进行,维护功能即可对表进行修改。 1、功能需求 经过分析后确定系统应具备以下功能: — (1)、售票功能 ①销售车票 ②预订车票 ③退票 (2)、查询功能 ①— ②车次查询 ③时刻表查询 ④售票情况查询 (3)、调度功能 ①运价修改 ②~ ③车辆修改 ④终点站修改 ⑤车次修改 (4)、维护功能 ①车票表修改 ②— ③预订车票表修改 ④退票表修改

⑤密码修改 (5)、统计功能 ①售票统计 ②¥ ③报表打印 2、数据流图 使用结构化分析方法,确定系统的数据主要是运价、车次、终点站名、发车时间和车票,对数据的操作主要有运价修改、车次修改、终点站修改、发车时间修改、售票及打印,可以确定系统的处理逻辑和流程,得到如下所示的系统数据流图。 ) 3、数据字典: 经过分析可以得到以下数据流条目: 车次表=车辆编号+车型+座位数 终点站名表=站名+里程 运价表=车型+运价 { 发车时刻表=车次+车辆编号+站名+发车时间+检票口

已售车票表=票号+乘车日期+车次+站名+发车时间+票价+全半价+工号+退票否 预订车票表=预订号+乘车日期+车次+站名+发车时间+车型+票价+客户名称+订票数量退票表=票号+退票时间+票价+应退款 售票员编号=工号+姓名 ) 车辆编号=6{数字}6 车次=4{字符}5 车型=1{字符}8 座位数=2{数字}2 检票口=1{数字}2 ` 站名=1{字符}10 里程=1{数字}5 运价=1{数字}6 发车时间={时间} 乘车日期={日期} , 票号=7{数字}7 票价=1{数字}5 全半价=2{字符}2 退票否={T|F} 预订号=4{数字}4 % 客户名称=6{字符}20 订票数量=1{数字}2 退票时间={日期时间} 应退款=1{数字}5 工号=3{字符}3 》 姓名=4{字符}8 二、数据逻辑结构设计(E-R图、关系模式和数据库结构) 1、E—R图

数据库的存储结构(文件、记录的组织和索引技术)

数据库的存储结构(文件、记录的组织和索引技术) by 沈燕然0124141 利用课余时间自学了第6章《数据库存储结构》,对于数据 库不同层次的存储结构,文件记录组织和索引技术有了一定的 了解,在这篇札记中将会结合一些具体应用中涉及到的数据存 储和索引知识,以及通过与过去学习过的一些数据结构比较来 记录自己学习的心得体会。这些实例涉及不同的数据库系统, 如Oracle, DB2和Mysql等等,它们之间会有一些差异。不过 本文旨在探讨数据存储方面的问题,因而兼容并包地将其一并收入,凡是可能需要说明之处都会加上相应的注解。:) 1、数据库(DBS)由什么组成?——逻辑、物理和性能特征 1、什么是数据库系统(DBS)——DBS用文件系统实现 在关系模型中,我们把DBS看成关系的汇集。DBS存在的目的就是为了使用户能够简单、方便、容易地存取数据库中的数据。因此在用户的眼中,数据库也就是以某种方式相关的表的集合。用户并不需要去关心表之间关系,更不需要了解这些表是怎样存储的。但是我们现在从DBA(数据库管理员)的角度来看,情况就比那稍稍复杂一点。 实际的数据库包含许多下面列出的物理和逻辑对象: ?表、视图、索引和模式(确定数据如何组织) ?锁、触发器、存储过程和包(引用数据库的物理实现) ?缓冲池、日志文件和表空间(仅处理如何管理数据库性能) 2、什么是表空间?——表空间相当于文件系统中的文件夹。 表空间被用作数据库和包含实际表数据的容器对象之间的一层,表空间可以包含多个不同的表。用户处理的实际数据位于表中,他们并不知道数据的物理表示,这种情况有时被称为数据的物理无关性。

上图描述了一个ORACLE数据库大致的表空间组织,USER中存放主要的数据表,TEMP存放临时数据表,INDX存放索引,TOOLS存放回退段(RBS). 表空间在DB2数据库系统中是比较典型的说法,在Mysql等系统中也直接使用文件系统中文件夹的概念。新建一个表的时候可以指定它所在的表空间,至于用文件具体存储数据时如何存储这可能就是各个数据库系统的商业机密了,至少DB2是这样。另外值得关注的一点是不同于oracles对表空间的严格要求,Mysql的数据库形式相对比较简单,以文件夹的形式存放在安装目录的/data/下面,该数据库的每一个表对应两个文件,一个存放表中数据,另一个存放元数据信息,也就是建表时指明的列属性等等信息。 3、文件中的记录在物理上如何实现?——文件组织形式 在外存中,DB以文件形式组织,而文件由记录组成。文件结构由OS的文件系统提供和管理。文件组织有两种方式——定长记录格式和变长记录格式。 那种格式更好? 定长记录格式——优点是插入操作较简单。 缺点是对记录长度有硬性要求,而且有的记录可能横跨多个快,降低读写效率。 变长记录格式——优点是记录长度自由方便 缺点是记录长度差异导致删除后产生大量“碎片”,记录很难伸长,尤其“被拴记录”移动代价相当大。 中庸之道——预留空间和指针方式 记录长度大多相近——采用预留空间方法,取最大记录长为统一标准,在短记录多于空间处填特定空值或记录尾标志符。 记录长度相差很大——采用指针形式(每纪录后的指针字段把相同属性值记录链接起来)。文件中使用两种块——固定块(存放每条链中第一条记录)和溢出块(存放其 余纪录)。 3、记录在文件中怎样组织?

数据结构复习题第章答案

第1章绪论 一、选择题(每小题2分,共20分) 1.以下哪一个不是算法的特性()。 A.有穷性 B.确定性 C.简洁性 D.可行性 2.数据结构的定义为(D,S),其中D是( )的集合。 A. 算法 B. 数据元素 C. 数据操作 D. 逻辑结构 3.设n是描述问题规模的非负整数,下面程序片段的时间复杂度是()。x=2; while(x

A.效率 B. 复杂性 C. 现实性 D. 难度 9.数据结构在计算机内存中的表示是指()。 A.数据的存储结构 B.数据结构 C.数据的逻辑结构 D.数据元素之间的关系 10.在数据结构中,与所使用的计算机无关的是数据的()结构。A.逻辑 B.存储 C.逻辑和存储 D.物理 11.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储()。 A.数据的处理方法 B.数据元素的类型 C.数据元素之间的关系 D.数据的存储方法 12.在决定选取何种存储结构时,一般不考虑()。 A.各结点的值如何 B.结点个数的多少 C.对数据有哪些运算 D.所用的编程语言实现这种结构是否方便。 13.算法分析的目的是(),算法分析的两个主要方面是()。(1)A.找出数据结构的合理性 B.研究算法中的输入和输出的关系 C.分析算法的效率以求改进 D.分析算法的易读性和文档性 (2 )A.空间复杂度和时间复杂度 B.正确性和简明性 C.可读性和文档性 D.数据复杂性和程序复杂性 15.通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。 A.数据元素具有同一特点 B.不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致 C.每个数据元素都一样 D.数据元素所包含的数据项的个数要相等 16.以下说法正确的是()。 A.数据项是数据的基本单位 B.数据元素是数据的最小单位 C.数据结构是带结构的数据项的集合 D.一些表面上很不相同的数据可以有相同的逻辑结构

数据库设计文档

— 学院 数据库课程设计报告> < 电子技术系 ~ 专业班级 学生姓名 指导教师 实习地点 (

: 数据库设计文档 一、系统需求分析报告(数据流图、数据词典和功能分析) 系统应具有售票、查询、管理和维护等功能,系统管理员可以进行对车次的更改、票价的变动及调度功能,票价的修改可以通过修改运价来进行,车次调度可通过对发车时刻表的修改来进行,维护功能即可对表进行修改。 1、功能需求 经过分析后确定系统应具备以下功能: (1)、售票功能 ①销售车票 ②预订车票 ③' ④退票 (2)、查询功能 ①车次查询 ②时刻表查询 ③售票情况查询 (3)、调度功能 ①运价修改 ②车辆修改 ③( ④终点站修改 ⑤车次修改 (4)、维护功能 ①车票表修改 ②预订车票表修改 ③退票表修改 ④密码修改 (5)、统计功能 ①、 ②售票统计

③报表打印 2、数据流图 使用结构化分析方法,确定系统的数据主要是运价、车次、终点站名、发车时间和车票,对数据的操作主要有运价修改、车次修改、终点站修改、发车时间修改、售票及打印,可以确定系统的处理逻辑和流程,得到如下所示的系统数据流图。 、 3、数据字典: 经过分析可以得到以下数据流条目: 车次表=车辆编号+车型+座位数 终点站名表=站名+里程 运价表=车型+运价 发车时刻表=车次+车辆编号+站名+发车时间+检票口 已售车票表=票号+乘车日期+车次+站名+发车时间+票价+全半价+工号+退票否) 预订车票表=预订号+乘车日期+车次+站名+发车时间+车型+票价+客户名称+订票数量退票表=票号+退票时间+票价+应退款 售票员编号=工号+姓名

车辆编号=6{数字}6 车次=4{字符}5 车型=1{字符}8 座位数=2{数字}2 检票口=1{数字}2 ¥ 站名=1{字符}10 里程=1{数字}5 运价=1{数字}6 发车时间={时间} 乘车日期={日期} 票号=7{数字}7 票价=1{数字}5 全半价=2{字符}2 ( 退票否={T|F} 预订号=4{数字}4 客户名称=6{字符}20 订票数量=1{数字}2 退票时间={日期时间} 应退款=1{数字}5 工号=3{字符}3 姓名=4{字符}8 二、! 三、数据逻辑结构设计(E-R图、关系模式和数据库结构) 1、E—R图 》

数据结构(C语言版)9-12章练习 答案 清华大学出版社

9-12章数据结构作业答案 第九章查找 选择题 1、对n个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为( A ) A.(n+1)/2 B. n/2 C. n D. [(1+n)*n ]/2 2. 下面关于二分查找的叙述正确的是 ( D ) A. 表必须有序,表可以顺序方式存储,也可以链表方式存储 B. 表必须有序且表中数据必须是整型,实型或字符型 C. 表必须有序,而且只能从小到大排列 D. 表必须有序,且表只能以顺序方式存储 3. 二叉查找树的查找效率与二叉树的( (1)C)有关, 在 ((2)C )时其查找效率最低 (1): A. 高度 B. 结点的多少 C. 树型 D. 结点的位置 (2): A. 结点太多 B. 完全二叉树 C. 呈单枝树 D. 结点太复杂。 4. 若采用链地址法构造散列表,散列函数为H(key)=key MOD 17,则需 ((1)A) 个链表。 这些链的链首指针构成一个指针数组,数组的下标范围为 ((2)C) (1) A.17 B. 13 C. 16 D. 任意 (2) A.0至17 B. 1至17 C. 0至16 D. 1至16 判断题 1.Hash表的平均查找长度与处理冲突的方法无关。 (错) 2. 若散列表的负载因子α<1,则可避免碰撞的产生。(错) 3. 就平均查找长度而言,分块查找最小,折半查找次之,顺序查找最大。(错) 填空题 1. 在顺序表(8,11,15,19,25,26,30,33,42,48,50)中,用二分(折半)法查找关键码值20, 需做的关键码比较次数为 4 . 算法应用题 1. 设有一组关键字{9,01,23,14,55,20,84,27},采用哈希函数:H(key)=key mod 7 ,表长 为10,用开放地址法的二次探测再散列方法Hi=(H(key)+di) mod 10解决冲突。要求:对该关 键字序列构造哈希表,并计算查找成功的平均查找长度。 2. 已知散列表的地址空间为A[0..11],散列函数H(k)=k mod 11,采用线性探测法处理冲 突。请将下列数据{25,16,38,47,79,82,51,39,89,151,231}依次插入到散列表中,并计算出在 等概率情况下查找成功时的平均查找长度。 3、对长度为20 的有序表进行二分查找,试画出它的一棵判定树,并求等概率情况下的平均 查找长度。 4、设散列表的长度为15,散列函数H(K)=K%13,给定的关键字序列为20,16,29,82,37,02,06,28,55,39,23,10,试写出分别用拉链法和线性探测法解决冲突时所构造的散 列表,并求出在等概率情况下,这两种方法查找成功时的平均查找长度。

数据库的存储结构

第五章数据库的存储结构 5.1数据库存储介质的特点 ●内存 容量低(一般只有几百M,最多一两个G),价格高,速度快,数据易丢失(掉电、当机等)。 一般做DBMS(或CPU)和DB之间的数据缓冲区。 实时/内存数据库系统中使用内存存放实时数据。 ●硬盘 容量高(一般有几十G,多到一两百G),价格中,速度较快,数据不易丢失(除非物理性损坏)。 一般做用来存放DB。 实时/内存数据库系统中使用硬盘存放历史数据库。 ●移动硬盘(USB接口) 容量高(一般有几十G),价格中,速度较快,数据不易丢失(除非物理性损坏)。 一般做用来做备份。 ●光盘 容量低(一般650M/片,但光盘可在线更换,海量),价格低,速度中,数据不易丢失(除非物理性损坏)。 一般做用来做备份。 ●磁盘(软盘) 容量低(一般有几M,优盘多到一两百M),价格中,速度较慢,数据不易丢失(除非物理性损坏)。 一般数据库不使用磁盘。 ●磁带 容量低(但可在线更换,海量),价格低,速度最慢,且要按顺序存取,数据不易丢失(除非物理性损坏)。 一般做用来做备份。 按速度从高到低: 内存、硬盘、USB盘(移动硬盘和优盘)、光盘、软盘、磁带。 按在线容量从大到小: 硬盘、移动硬盘、内存、光盘、磁带、优盘、软盘。 物理块:512byte/1K/2K/4K/8K 原因: (1)减少I/O的次数; (2)减少间隙的数目,提高硬盘空间的利用率。 ORACLE逻辑块与物理块(init.ora中db_block_size定义逻辑块大小) 缓冲块和缓冲区(即SGA中的Data Buffer Cache) 延迟写(delayed write)技术/预取(Prefetching)技术(ORACLE中由DBWR进程完成数据的读写)

数据结构课后习题及解析第一章

第一章习题 一、问答题 1.什么是数据结构? 2.叙述四类基本数据结构的名称与含义。 3.叙述算法的定义与特性。 4.叙述算法的时间复杂度。 5.叙述数据类型的概念。 6.叙述线性结构与非线性结构的差别。 7.叙述面向对象程序设计语言的特点。 8.在面向对象程序设计中,类的作用是什么? 9.叙述参数传递的主要方式及特点。 10.叙述抽象数据类型的概念。 二、判断题(在各题后填写“√”或“×”) 1.线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。() 2.算法就是程序。() 3.在高级语言(如C或 PASCAL)中,指针类型是原子类型。() 三、计算下列程序段中X=X+1的语句频度 for(i=1;i<=n;i++) for(j=1;j<=i;j++) for(k=1;k<=j;k++) x=x+1; 四、试编写算法,求一元多项式P n (x)=a +a 1 x+a 2 x2+a 3 x3+…a n x n的值P n (x ),并确定算法中的每 一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用 求幂函数。注意:本题中的输入a i (i=0,1,…,n),x和n,输出为P n (x )。通常算法的输入和输 出可采用下列两种方式之一: (1)通过参数表中的参数显式传递。

(2)通过全局变量隐式传递。 试讨论这两种方法的优缺点,并在本题算法中以你认为较好的一种方式实现输入和输出。 实习题 设计实现抽象数据类型“有理数”。基本操作包括有理数的加法、减法、乘法、除法,以及求有理数的分子、分母。 第一章答案 1.3计算下列程序中x=x+1的语句频度 for(i=1;i<=n;i++) for(j=1;j<=i;j++) for(k=1;k<=j;k++) x=x+1; 【解答】x=x+1的语句频度为: T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n)=n(n+1)(n+2)/6 1.4试编写算法,求p n(x)=a0+a1x+a2x2+…….+a n x n的值p n(x0),并确定算法中每一语句的执 行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。注意:本题中的输入为a i(i=0,1,…n)、x和n,输出为P n(x0)。算法的输入和输出采用下列方法(1)通过参数表中的参数显式传递(2)通过全局变量隐式传递。讨论两种方法的优缺点,并在算法中以你认为较好的一种实现输入输出。 【解答】 (1)通过参数表中的参数显式传递 优点:当没有调用函数时,不占用内存,调用结束后形参被释放,实参维持,函数通用性强,移置性强。 缺点:形参须与实参对应,且返回值数量有限。 (2)通过全局变量隐式传递 优点:减少实参与形参的个数,从而减少内存空间以及传递数据时的时间消耗

数据库设计文档模板

数据库设计说明书模板 修订历史 版本 说明 编制 批准日期 1引言 1.1编写目的 说明编写这份数据库设计说明书的目的,指出预期的读者。 1.2背景 说明: a.说明待开发的数据库的名称和使用此数据库的软件系统的名称; b.列出该软件系统开发项目的任务提出者、用户以及将安装该软件和这个数据库的计算站(中心)。 1.3定义 列出本文件中用到的专门术语的定义、外文首字母组词的原词组。 1.4参考资料 列出有关的参考资料: a.本项目的经核准的计划任务书或合同、上级机关批文; b.属于本项目的其他已发表的文件; c.本文件中各处引用到的文件资料,包括所要用到的软件开发标准。 列出这些文件的标题、文件编号、发表日期和出版单位,说明能够取得这些文件的来源。

2外部设计 2.1标识符和状态 联系用途,详细说明用于唯一地标识该数据库的代码、名称或标识符,附加的描述性信息亦要给出。如果该数据库属于尚在实验中、尚在测试中或是暂时使用的,则要说明这一特点及其有效时间范围。 2.2使用它的程序 列出将要使用或访问此数据库的所有应用程序,对于这些应用程序的每一个,给出它的名称和版本号。 2.3约定 陈述一个程序员或一个系统分析员为了能使用此数据库而需要了解的建立标号、标识的约定,例如用于标识数据库的不同版本的约定和用于标识库内各个文卷、、记录、数据项的命名约定等。 2.4专门指导 向准备从事此数据库的生成、从事此数据库的测试、维护人员提供专门的指导,例如将被送入数据库的数据的格式和标准、送入数据库的操作规程和步骤,用于产生、修改、更新或使用这些数据文卷的操作指导。如果这些指导的内容篇幅很长,列出可参阅的文件资料的名称和章条。 2.5支持软件 简单介绍同此数据库直接有关的支持软件,如数据库管理系统、存储定位程序和用于装入、生成、修改、更新数据库的程序等。说明这些软件的名称、版本号和主要功能特性,如所用数据模型的类型、允许的数据容量等。列出这些支持软件的技术文件的标题、编号及来源。 3结构设计 3.1概念结构设计 说明本数据库将反映的现实世界中的实体、属性和它们之间的关系等的原始数据形式,包括各数据项、记录、系、文卷的标识符、定义、类型、度量单位和值域,建立本数据库的每一幅用户视图。

SQL数据库修改表结构

S Q L数据库修改表结构-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

SQL数据库修改表结构 修改表结构包括: 增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表。 所有这些动作都是用 ALTER TABLE 命令执行的。 1、增加字段 ALTER TABLE products ADD description text; 你也可以同时在该字段上定义约束,使用通常的语法: ALTER TABLE products ADD description text CHECK (description <> ''); 实际上,所有在CREATE TABLE里描述的可以应用于字段之选项都可以在这里使用。不过,我们要注意的是缺省值必须满足给出的约束,否则ADD 将会失败。另外,你可以在你正确填充了新字段的数值之后再增加约束(见下文)。 2、删除字段 要删除一个字段,使用下面这样的命令: ALTER TABLE products DROP COLUMN description; 不管字段里有啥数据,都会消失。和这个字段相关的约束也会被删除。不过,如果这个字段被另外一个表的外键所引用,PostgreSQL 则不会隐含地删除该约束。你可以通过使用 CASCADE 来授权删除任何依赖该字段的东西:ALTER TABLE products DROP COLUMN description CASCADE; 3、增加约束 要增加一个约束,使用表约束语法。比如: ALTER TABLE products ADD CHECK (name <> ''); ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no); ALTER TABLE products ADD FOREIGN KEY (product_group_id) REFERENCES product_groups; ALTER TABLE Teacher add constraint df_sex default('男') for sex 要增加一个不能写成表约束的非空约束,使用下面语法: ALTER TABLE products ALTER COLUMN product_no SET NOT NULL; 这个约束将立即进行检查,所以表在添加约束之前必须符合约束条件。 4、删除约束 要删除一个约束,你需要知道它的名字。如果你给了它一个名字,那么事情就好办了。否则系统会分配一个生成的名字,这样你就需要把它找出来

数据库结构设计

一、数据库结构设计步骤 二、需求分析 三、概念结构设计 四、逻辑结构设计 五、数据库物理设计 数据库结构设计 一、数据库结构设计步骤 一般可将数据库结构设计分为四个阶段,即需求分析、概念结构设计、逻辑结构设计和物理设计。 下面各节分别介绍各阶段设计内容和具体方法。 二、需求分析 需求分析的任务是具体了解应用环境,了解与分析用户对数据和数据处理的需求,对应用系统的性能的要求,提出新系统的目标,为第二阶段、第三阶段的设计奠定基础。一般需求分析的操作步骤如下所述。 1.了解组织、人员的构成 子系统的划分常常以现有组织系统为基础,再进行整合,而新系统首先必须达到的目的是尽可能地完成当前系统中有关信息方面的工作,在原有系统中,信息处理总是由具体人来实施的。我们要了解组织结构情况、相互之间信息沟通关系、数据(包括各种报告、报表、凭证、单据)往来联系情况。 具体弄清各个数据的名称,产生的时间与传递所需时间与周期,数据量的大小,所涉及(传送)的范围,使用数据的权限要求,数据处理过程中容易发生的问题及其影响,各个部门所希望获得的数据的情况等。 然后了解每个人对每一具体数据处理的过程,基本数据元素来源于哪些地方、获取的途径、处理的要求、数据的用途,进而弄清数据的构成、数据元素的类型、性质、算法、取值范围、相互关系。 在上述调查基础上,首先画出组织机构及工作职能图。我们以一个学校的基层单位——某大学一个系的管理为例来简要说明。 系的组织机构及工作职能如图7.1所示。

图7.1 系管理体系结构图 作为管理层经常需要的信息和工作有: .查询老师个人基本情况及打印相应内容 .查询与统计科研项目情况及相关报表 .查询与统计论文著作情况及相关报表 .上级部门及其他部门来文管理与查询(要求能全文检索) .系部发文管理 .任务下达、检查及管理 .信件、通知的收发及管理 .日程安排调度及管理 .设备仪器计划及管理 .设备入库与库存情况管理与查询 .设备借还领用管理及相应报表 .耗材计划与领发管理及相应统计报表 .图书管理及借还情况查询 .学生毕业设计文档管理 .专业与班组编制与查询 .教学文档管理及查询(安排与检查,包括课表、考试日程安排、监考安排等).学生成绩管理与查询和统计 .教师、学生、实验室课表管理及查询 .学生基本情况管理与查询(包括社会活动、奖惩、家庭情况及学校校友管理)

相关主题
文本预览
相关文档 最新文档