毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

基于CDMA手机地址录开发设计 第8页

更新时间:2008-6-17:  来源:毕业论文

基于CDMA手机地址簿开发设计

5章 详细设计

本应用程序中主要由控制架构模块,DB模块,UI模块及其外部扩展模块。其中UI模块总的来看包括查找子模块,详细表示功能子模块,添加功能子模块,

修改功能子模块,删除功能子模块。

5.1 控制功能子模块

通过ApiPage.hPage.c作为公共的基类,所有的页面都将定义一个Page的实例,把各个页面的相应绘制函数,时间处理函数,释放函数的指针登记到Page实例的中相应的位置。在调用时,就实现了多态。使得各个页面各不相关.

从而达到控制其他页面的功能。注意:程序从AddressBook.c进入主页面page1,然后再通过ApiPage.hPage.c来调用其他所有的页面。

5.1.1 模块结构体

在这个模块中有一个结构体AddressBook

结构体定义如下:

typedef struct _AddressBook {

 AEEApplet        a ;     

   ;

    ST_UISTATEMGR *m_pstUIStateMgr;

} AddressBook;

其中的结构体ST_UISTATEMGR定义如下:

typedef struct _ST_UISTATEMGR

{

IShell                  *m_pIShell;

         m_nSelItemID;

File       m_File;

#ifdef __DEBUG

IBitmap              *m_pIBitmap;

    *m_bufferControl[3];

#endif

}ST_UISTATEMGR;

在上面的结构体中包含了两个重要的结构体变量:结构体m_File,用来进行DB处理,结构体*m_pstPageStack[ VP_PAGESTACK_SIZE ]用来记录打开的页面,便于显示各页面,记录光标位置。

5.1.2 模块函数

控制模块的主要函数列表:

No.

函数名称

函数处理及说明

1

AEECLsCreateInstance

启动应用程序(函数入口)

2

AddressBook_InitAppData

初始化应用程序数据

3

AddressBook_FreeAppData

释放资源空间,退出整个程序

4

ApiPage_Draw

用来调用各个页面的draw函数

5

ApiPage_Release

释放资源页面资源

5.2  DB模块

5.2.1 DB模块的概括

DB模块是AddressBook应用程序中最重要的部分。此部分的设计会直接影响到整个应用程序其他部分的实现与设计。一般而言手机中的AddressBook所容纳的记录条数不是很多,大多数都在300条左右,在此次设计中我们就将记录数设置为最多300条,整个AddressBook的记录信息一般不会很大,相对于手机中的几十兆甚至几百兆的存储空间来说是微不足道的。所以本应用程序的DB模块设计成数据库文件的大小是固定的,不随数据的的多少而变化。

本应用程序的DB模块是通过BREW平台下的文件接口实现的。DB模块是一个文件,这个文件分为两部分:标志区和数据区,标志区记录了相应数据区的数据是否有效,1表示有效,0表示无效,此数据文件具体结构如下;

若图片无法显示请联系QQ752018766

5.2.2 DB模块的接口函数

1、通过IFileMgr接口实现文件的创建,删除和出错处理。

2、文件读写操作。

   IFILE_Seek  ( )           将文件操作位置定位

      IFILE_Read  ( )        从打开的文件中读取指定数量的字节

      IFILE_Write  ( )         将指定数量的字节写入打开的文件

3、索引操作

struct Index

{

AECHAR   Name[NAME_LEN];

Int      position;

}

在程序启动时把所有记录的Index创建起来以便索引。

Index是动态分配空间。

Index排序用指针排序,提高速度,降低开销。

4、姓名查找和快速查找都使用二分查找,提高速度,没有完全匹配的条目时则返回最相近的条目。

5、添加时,从标志区找到标志位是0的,将新纪录添加到该标志位对应的位置。

6、删除时将条目相应的标志位置0

7、编辑时先将该条记录读出来,然后保存编辑后的内容。

此模块中主要的函数列表:

NO

函数名称

函数处理及说明

1

CreateFile

判断文件是否存在,若存在则打开此文件,若不存在则创建并打开文件

2

ReadFile

从文件缓存中读取所有的记录

3

AddRecord

向文件中添加记录

4

EditRecord

修改记录并读取修改后的信息

5

SaveRecord

修改或添加之后保存

6

DeleteRecord

从文件中删除一条记录

7

DeleteAll

删除文件所有的记录

8

FileRelease

释放文件指针

9

FastSearch

快速查找

 


 

5.3   UI模块

5.3.1 简单介绍

此模块中不仅要显示UI界面,而且有些模块还需调用DB模块中的接口函数。如:查找子模块,添加功能子模块,修改功能子模块。对应用到的DB中的接口函数在上节中都有介绍,这里不做介绍。

下面就我负责的描绘部分(page1page2)做简单的介绍

    首先对于在这次设计中的描绘,回调是重点,我用了回调机制来画菜单。

回调在BREW中是一个很重要的机制。用它使某些操作变得方便简单。

如画菜单的时候,用回调可以对菜单进行详细设定,例如:标题的高度,宽度,菜单项的高度,宽度等,而这些在BREW中的IMENUCTL接口中是固定不能设置的。   

    其次在page2快速查找页面中,不仅要求将文件中的记录全部显示出来,而且要做到快速查找的效果,即输入文本框中要找的记录的名字的一部分,光标会落在相应的记录上。后者前面已经介绍过,所以这里着重要讲的是前者即:如何把所有的记录全部显示出来。

5.3.2 函数列表

5.3.2.1  page1中的函数列表

 

 

NO

函数名称

函数处理及说明

1

Page1_Draw

page1被创建时,该函数调用page1的描绘函数来把该页面画出来

2

Page1_DrawMenuCB

自己写的回调函数

3

Page1_HandleEvent

Page1的事件处理

4

Page1_Release

释放page1的所有资源

5

Page1_HandleEvtKey

用来处理Key事件

6

Page1_HandleEvtKey1

处理Key1事件,按下1键时跳到第一个菜单项页面即FastSearch页面

7

Page1_HandleEvtKey2

处理Key2事件,按下2键时跳到第二个菜单项页面即NameSearch页面

8

Page1_HandleEvtKey3

处理Key3事件,按下3键时跳到第三个菜单项对应的页面即:Add页面

9

Page1_HandleEvtKey4

处理Key4事件,按下4键时跳到第四个菜单项对应的页面即Delete All页面

10

Page1_HandleEvtClr

处理Clr事件,按下Clr键时退出该页面或清楚文本框中已输入的文字

11

Page1_HandleEvtSoft1

处理Soft1事件,按下Soft1键,会进入光标所在位置对应的页面

12

Page1_HandleEvtSoft2

处理Soft2事件,按下Soft2键,会返回到上一页

13

Page1_HandleEvtSelect

处理OK键事件,按下OK键则进入光标所在位置对应的页面

14

Page1_DrawMenu

通过调用Page1_AddItem回调函数来画该页的菜单

15

Page1_HandleEvtUP

UP键处理,当按下UP键时,光标上移,当移到第一个菜单项时,继续按UP键,则光标跳到最后一项

16

Page1_HandleEvtDOWN

DOWN键处理,当按下DOWN键时,光标下移,当移到最后一项时,继续按此键,则光标跳到第一项

17

Page1_AddItem

通过调用回调函数画菜单项

18

Page1_Redraw

被回调函数调用画菜单项,此函数主要是设置光标的大小,及显示资源

说明:回调函数Page1_DrawMenuCB是自己写的函数,在Page1_Draw函数中注册为回调函数,再画菜单时就直接有系统自己来调用该函数,来完成该页的菜单的描绘。

5.3.2.2   Page2中的函数列表

在此页面中也用了回调来画菜单,具体的与Page1类似,这里不再列举,

此外 Page2_DrawPage2_HandleEventPage2_ReleasePage2_HandleEvtKey

Page2_HandleEvtKeyClrPage2_HandleEvtKeySOFT1Page2_HandleEvtKeySOFT2

Page2_HandleEvtKeySelectPage2_HandleEvtDOWNPage2_HandleEvtKeyUP

Page2_DrawCBPage2_Redraw以上这些函数与Page1中的类似,这里也不再做说明。

下面介绍如何显示记录列表:

实现显示所有记录功能的两个核心函数:

  static void Page2_NameList(ST_PAGE2  *pstPage)

   static void Page2_AddItem(ST_PAGE2 *pstPage, int itemID)

Page2_NameList()可以通过调用Page2_AddItem()显示所有的记录姓名条目。

其中关键的是通过传递存记录的在缓存Buffer[]的下标,从而把其中的记录取出来,显示在屏幕上。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

基于CDMA手机地址录开发设计 第8页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。