创建一个简单的通讯录程序

  • 来源: 互联网 作者: 若水   2008-03-21/16:38
  • 该程序主要实现对通讯录的浏览、增加和删除功能,实现是把保存在文本文件中的数据读取出来,依次存放在一个列表中,再对列表进行操作来实现相应的功能,.在用户退出时再把列表中的内容保存回文本文件中。

    其中文本文件的最后部分内容如图14.14所示。

    14.14  文本文件中的内容

    下面是具体的实现过程:

    1.进入Authorware ,新建一个文件,保存为“对象_Demo.a6p”。打开文件属性设置对话框,设置程序窗口大小为Variable,选中Center on Screen,取消Title BarMenu Bar前的选择。

    2.在程序开头拖入一个计算图标,命名为“读取文本”,在其中加入以下语句:

    --设置窗口大小

    ResizeWindow(320,240)

    --定义一个空的列表

    wen:=[]

    tem:=[]

    --创建一个Fileio Xtra的子对象

    zil:=NewObject("fileio")

    --以只读方式打开文本文件

    CallObject(zil, "openFile", FileLocation^"ziliao1.txt",1)

    --依次读取该文本文件的行,存放到列表中

    temp:=CallObject(zil,"readLine")

    i:=1

    repeat while temp<>-1

        repeat with p:=1 to 4

        tem[p]:=GetWord(p,temp)

        end repeat

        wen[i]:=[#name:tem[1],#sex:tem[2],#age:tem[3],#tel:tem[4]]

        temp:=CallObject(zil, "readLine")

        temp:=SubStr(temp,2,CharCount(temp))

        i:=i+1

    end repeat

    --关闭文本文件

    CallObject(zil, "closeFile")

    --初始化一个计数器

    j:=1

    --统计列表wen中元素的个数

    geshu:=ListCount(wen)

    说明:虽然系统函数ReadExtFile()也可以读取文本文件的内容,但当文本文件比较大时,所获得的字符串就比较大,对其进行处理就会影响程序的运行程序,且会受到Authorware中字符串的最大字符数的影响。所以此处使用Fileio Xtra中的OpenFile函数来打开文件,此时实际上获得的是指向该文本文件的指针。另外打开一个文件用完后最好马上关闭它。

    3.拖入一个显示图标到流程线上,命名为“显示记录”,双击打开该显示图标的展示窗口,用文字工具输入如图14.15所示的文字。

    #p#分页标题#e#

    14.15 显示图标“显示记录”中的标签

    然后在“姓名:”后输入语句:{wen[j][#name]};在“性别:”后输入语句:{wen[j][#sex]};在“年龄:”后输入语句:{wen[j][#age]};在“电话:”后输入语句:{wen[j][#tel]}

    选择菜单命令Modify>Icon>Properties.在弹出的显示图标属性对话框中选中Update Displayed Variables,单击OK按钮关闭对话框。

    4.在显示图标“显示记录”的下方拖入一个交互图标,命名为“控制”。

    ⑴在交互图标“控制”的右边放置一个计算图标,命名为“上一个”,在弹出的对话框中选择Button,双击新加入的计算图标上方的响应图标,在弹出的按钮响应属性对话框中按图14.16所示进行设置。设置好后单击“OK”关闭对话框

    14.16  按钮响应图标的属性设置对话框

    在计算图标“上一个”中加入以下语句:

    j:=j-1

    ⑵在计算图标“上一个”的右边加入一个计算图标,命名为“下一个”,双击其上方的响应图标,在弹出的如图14.16所示的对话框中把选项“ActiveX If”改为“j<geshu”。

    在计算图标“下一个”中加入以下语句:

    j:=j+1

    ⑶在计算图标“下一个”的右边加入一个计算图标,命名为“删除”。

    在计算图标“删除”中加入以下语句:

    --从列表中删除当前记录

    xuan:=MessageBox(WindowHandle, "真的要删除当前记录吗?", "提醒", 292)

    --6=Yes, 7=No

    if xuan=6 then

    --从列表中删除当前记录

        DeleteAtIndex(wen,j)

    --如果当前记录是最后一个记录,更改计数器的值

        if j=geshu then

            j:=j-1

        end if

    --更改列表的个数

        geshu:=geshu-1

    end if

    ⑷在计算图标“下一个”的右边加入一个群组图标,.命名为“添加”。双击群组图标“添加”打开其流程窗口。

    ①拖入一个擦除图标,命名为Cha#p#分页标题#e#,在该擦除图标中要擦除的是按钮“上一个”、“下一个”、“删除”、“添加”。

    ②使用菜单命令Insert>Control>ActiveX…依次插入四个ActiveX控件,第一个是TextBox控件,第二个是ComboBox控件,第三、四个是TextBox控件,其中TextBox控件的属性中设置属性项Font为黑体12号,属性项ForeColor设置为蓝色;ComboBox控件的属性中属性项FontForeColor也同上设置,另设置属性项Style为“2-DropDownList”。

    把这四个控件图标依次命名为xmxbnldh,然后运行程序单击“添加”按钮后再暂停调整这些控件的位置和大小。

    具体的属性设置和调整可以参见ActiveX控件一章的介绍。

    ③拖入一个计算图标,命名为“给xb赋值”,在其中输入以下内容:

    CallSprite(@"xb", #AddItem,"男")

    CallSprite(@"xb", #AddItem,"女")

    ④拖入一个交互图标,命名为“选择”。拖一个群组图标到该交互图标的右边,命名为“确定”,在弹出的响应类型对话框中选择Button,单击“OK”关闭对话框,双击图标“确定”上方的响应图标,在弹出的按钮响应属性设置对话框中按图14.16所示进行设置。

    双击“确定”群组图标打开其流程窗口。拖入一个计算图标,命名为“增加记录”,在其中输入以下内容:

    --获得四个控件图标中的值

    tem[1]:=GetSpriteProperty(@"xm", #text)

    tem[2]:=GetSpriteProperty(@"xb", #text)

    tem[3]:=GetSpriteProperty(@"nl", #text)

    tem[4]:=GetSpriteProperty(@"dh", #text)

    --判断xm图标中的值是否为空,即是否输入了姓名

    if tem[1]<>"" then

        --如果输入了姓名就在列表最后增加一个元素

        geshu:=geshu+1

        wen[geshu]:=[#name:tem[1],#sex:tem[2],#age:tem[3],#tel:tem[4]]

        j:=geshu

    else

        --否则就显示出错信息,并根据用户的选择给出不同的反应

        xuan:=MessageBox(WindowHandle, "没输入姓名,不能添加记录!", "出错", 21)

        -- 4=Retry, 2=Cancel

        if xuan=4 then GoTo(IconID@"xm")

    end if

    拖一个擦除图标到“增加记录”的下方,该图标要擦除的是四个控件图标和按钮“确定”以及将要增加的按钮“取消”。

    再拖入一个计算图标,命名为“返回”,在其中输入以下内容:#p#分页标题#e#

    GoTo(IconID@"显示记录")

    关闭“确定”的流程窗口回到“添加”图标的流程窗口,选中图标“确定”,再按Ctrl+C键,然后在“确定”图标的右边单击鼠标,将粘贴指针移到此处,按Ctrl+V键。将新粘贴过来的图标改名为“取消”。

    双击图标“取消”打开其流程窗口,删除计算图标“增加记录”。

    ⑸关闭群组图标“添加”的流程窗口回到主流程窗口,.拖一个计算图标到“添加”图标的右边,命名为“退出”,在其中输入以下内容:

    --创建一个Fileio Xtra的子对象

    zil:=NewObject("fileio")

    --以只写方式打开文本文件

    CallObject(zil, "openFile", FileLocation^"ziliao.txt",2)

    --删除该文件

    CallObject(zil, "delete")

    --创建一个同名文件

    CallObject(zil, "createFile", FileLocation^"ziliao.txt")

    --关闭文本文件

    CallObject(zil, "closeFile")

    --依次把列表中的值添加到文本文件中

    repeat with i:=1 to geshu

        str:=wen[i][#name]^" "^wen[i][#sex]^" "^wen[i][#age]^" "^wen[i][#tel]^"\r"

        AppendExtFile(FileLocation^"ziliao.txt",str)

    end repeat

    AppendExtFile(FileLocation^"ziliao.txt","-1")

    Quit()

    5.整个程序的流程如图14.17所示。

    14.17  程序流程图

    擦除图标通常可以在基本程序完成后再来设置,这样就容易设置有擦除的图标。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多