首页百度通讯录 → 手机通讯录管理软件

手机通讯录管理软件


上传时间:2015-06-12 来源:百度通讯录


第一篇:手机通讯录管理软件

目录 1. 引言......................................................................................................................... 1 1.1 编写目的 .......................................................................................................... 1 1.2 背景说明 .......................................................................................................... 1 1.3 参考资料 .......................................................................................................... 1 2.系统功能需求分析 .................................................................................................... 2 2.1 功能分析 ......................................................................................................... 2 2.2 安全性要求 ..................................................................................................... 2 2.3 完整性要求 ...................................................................................................... 2 3.结构化分析与设计 .................................................................................................... 3 3.1 手机通讯录系统 H 图及简介 .......................................................................... 3 3.2 手机通讯录系统 ER 图 .................................................................................... 5 3.3 数据流图 .......................................................................................................... 6 4.面向对象的分析与设计 ............................................................................................ 7 4.1 用例图 .............................................................................................................. 7 4.2 用例描述 .......................................................................................................... 7 4.3 面向对象的类图 ............................................................................................. 9 4.4 数据库表设计 ................................................................................................ 10 5.课程设计总结 .......................................................................................................... 13 6.附录 .......................................................................................................................... 13 1. 引言 1.1 编写目的 本份分析设计说明书是分析与设计手机通讯录管理系统,使手机通讯录的功 能更为强大和方便。 1.2 背景说明 随着科学技术的发展及人们生活水平的提高,手机已成为人们使用最为 频繁的工具之一,其主要作用是为了让人们更为方便相互联系。每个手机都 具有一个或者多个通讯录。一个好的通讯录能够提供方便,快捷的操作来帮 助人们提高工作效率,节省时间。

本次课程设计是建立一个对手机联系人进行管理的通讯里系统。在本手 机通讯里中,可以将自己的亲朋好友的姓名、群组、手机、座机、E-mail、 QQ、生日,家庭住址等信息保持到终极资料库中,并随时进行登录、退出、查 看、添加、编辑、删除、查询、排序、个人设置等操作在满足人性化的时候 也具备一定的安全性(用户需要进行登录) ,防止他人盗窃隐私。 1.3 参考资料 a.《软件工程》作者:张海潘出版社:人民邮电出版社 b.《软件工程》作者:鄂大伟出版社:清华大学出版社 c. 《软件工程导论》作者:张海潘 2.系统功能需求分析 2.1 功能分析 登陆管理:登陆或退出通信录。

通讯录管理:添加删除联系人,编辑备份联系人信息,将联系人分组。

通讯录查询:实现按姓名或者按手机号码进行快速查询,查看通信录所有成员, 将联系人按一定属性排序。

设置管理:用户名及密码修改,个人隐私设置。

联系管理:对联系人进行语音或者短信联系。 2.2 安全性要求 系统中设置访问用户的标识以鉴别该用户是否是合法用户(以正确的 账号密码登陆的)并要求用户设置密码,以防信息被盗。 2.3 完整性要求 a.各种信息记录保存的完整性,某些信息记录内容不能为空。

b.各种数据的相互联系的正确性。

c.相同数据在不同记录中的一致 3.结构化分析与设计 3.1 手机通讯录系统 H 图及简介 本系统目的是方便人们管理联系人通讯录中联系人通讯工作需要,提高 对联系人信息管理的效率。本着对手机通讯录系统的方便性、安全性、完整 性及人性化的要求,对本系统的模块做了如下设计:通讯录系统 包含 5 个模块,分别为登陆模块、设置模块、管理模块、查询模块和联系模 块。

其中登陆模块包含登陆及退出功能, 设置模块包含个人设置和用户设置, 管理模块包含添加、删除、编辑、备份和建组功能,查询模块包含查询、查 看和排序功能,联系模块包含呼叫和短信功能。

在以上分析基础上得到系统功能结构图如下 手 机 通 讯 录 系 统 登 陆 模 块 设 置 模 块 管 理 模 块 查 询 模 块 联 系 模 块 登 陆 退 出 个 人 设 置 用 户 设 置 添 加 删 除 编 辑 备 份 建 组 查 询 查 看 排 序 呼 叫 短 信 表 1 手机通讯录系统 H 图 下面是每个功能的简介 登陆模块 登陆:根据用户手机号,密码来直接登陆 退出:关闭程序,退出通讯录 设置模块 个人设置:设置常用属性,对不常用的进行隐藏 用户设置:对用户账号,密码进行操作 管理模块 添加:用于新建一个新的联系人信息并记录到数据库 修改:用于对变动的信息进行修改并更新,保证联系人信息是最新的 删除:用于删除不需要或者错误的连续人信息 备份:对该系统中所有联系人的信息进行复制保存,以防丢失数据造成不便 建组:对联系频繁或关系特殊的联系人进行分组,便于管理 查询模块 查看:浏览整个通讯里中所以联系人 查询:用于快速查找所需的信息 排序:对通讯录中联系人按某一属性进行排序 联系模块 呼叫:以语音的形式联系对方 短信:以文本信息的方式联系对 3.2 手机通讯录系统 ER 图 在系统功能需求分析的基础上, 我们可以分析得到该系统的实体有用户、 联系人、群组。其中用户属性有用户名、密码,联系人的属性有手机,座机, E-mail,生日,家庭住址等等,群组属性有组名及成员。

其整体 ER 图如下 添加 删除 短信 编辑 姓名 查看 备份 QQ E-mail 手机 座机 呼叫 用户名 用户 查询 密码 排序 管理 建组 备注 设置 信息 生日 家庭住址 群组 联系人组 组名 成员 表 2 手机通讯录系统 ER 图 3.3 数据流图 通过问题的需求描述,我们分析得出该数据流图的源点是用户,终点是名片夹。处理有 添加、删除、编辑、查看、查询等操作,数据流包括联系人与群组两大部分,数据存储为联 系人信息。

具体的数据流图设计如下 1.2 1.1 1.6 查找 设置 添加 1.3 1.7 查询 排序 用户 1.4 1.8 编辑 呼叫 1.5 1.9 删除 1.10 1.11 短信 建组 备份 联系人信息 名片夹 表 3 手机通讯录系统数据流图 4.面向对象的分析与设计 4.1 用例图 用例描述的是外部行为者所理解的系统功能,据此我们设计了下面的用例图 手机通讯录管理系统 设置 查找 <<extends>> 查看 编辑 呼叫 删除 联系人 用户 添加 短信 排序 建组 备份 表4 手机通讯录系统用例图 4.2 用例描述 基本流程 1 添加联系人

a. 进入联系人管理界面点击添加联系人。

b. 进入新建的联系人表,用户选择要编辑的内容(姓名、群组、手机、生日、E-mail 等等)

c. 编辑完成后,用户提交信息。

d. 系统显示信息人添加成功。

e. 返回主界面。

2 编辑修改联系人

a. 进入联系人管理界面,选中某个联系人点击编辑。

b. 进入该联系人信息表,用户选择要编辑的内容(姓名、群组、手机、生日、E-mail 等等)

c. 修改完成后,用户提交信息。

d. 系统显示联系人已成功编辑。

e. 返回主界面。

3 查找联系人

a. 进入联系人管理界面。

b. 显示联系人信息表。

c. 用户按照首字母或者电话号码进行查找,找到符合的联系人后,系统显示查到的联 系人,并提示对该联系人进行呼叫或短信操作。

d. 用户操作完成后,返回主界面。

4 删除联系人

a. 进入联系人管理界面,选中某个联系人。

b. 进入该联系人信息表,用户点击删除。

c. 系统提示是否确认删除。

d. 删除成功后返回主界面。

5. 设置联系人

a. 进入联系人界面,选中某个联系人。

b. 用户对联系人信息进行操作, 选择联系人的某些属性进行权限设置 (隐藏或者显示)

c. 设置完成后,系统提示操作成功,返回主界面。

6. 排序

a. 进入联系人管理界面。

b. 选择多个联系人设置一定排序属性。

c. 排序成功,返回主界面。

7 建组

a. 进入联系人管理界面。

b. 选择建组。

c. 输入组名及其他属性,建组成功。

d. 提示用户对组添加联系人。

e. 添加完成,返回主界面。

8. 呼叫

a. 进入联系人管理主界面。

b. 查找到相应联系人。

c. 提示是否对该联系人进行语言通信。

d. 建立通信状态。 e. 9. a. b. c. d. e. f. 通信结束,返回主界面。

短信

进入联系人管理界面。

查到到相应联系人。

提示是否对该联系人进行文本通信。

要求输入文本信息。

发送文本信息。

结束,返回主界面。 4.3 面向对象的类图 实体类:联系人,群组 边界类:管理界面 控制类:个人设置,用户设置 联系人 姓名 手机 座机 E-mail QQ 生日 家庭住址 群组 备注 群组 -结束1 * -结束2 * 成员 组名 删除成员 添加成员 管理界面 设置 查找 查询 编辑 删除 添加 排序 呼叫 短信 建组 备份 个人设置 隐藏 全显 用户设置 用户名 密码 输入密码 修改密码 表 5 手机通讯录管理系统类图 4.4 数据库表设计 数据库设计是指根据用户的需求, 在某一具体的数据库管理系统上设计数据库的结构和建立 数据库的过程, 也就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。

下面是将各个实体的关系模式 1.联系人信息表如下图 属性名 序号 姓名 群组 手机 座机 E-mail QQ 生日 家庭住址 备注 数据类型 Char(10) Char(20) Char(10) Char(20) Char(20) Char(20) Char(11) Char(20) Char(50) Char(50) 关键字 是否可为空 否 备注 编号 姓名 是 否 是 是 否 是 是 是 是 是 是 现住地址 表 6 联系人信息表 2.查询信息表如下图 属性名 姓名 群组 手机 E-mail 家庭住址 数据类型 Char(20) Char(10) Char(20) Char(20) Char(50) 关键字 是 是否可为空 否 是 备注 姓名 是 否 是 是 表 7 查询信息表 3.用户信息表如下图 属性名 姓名 群组 手机 E-mail 家庭住址 数据类型 Char(20) Char(10) Char(20) Char(20) Char(50) 关键字 是 是否可为空 否 是 备注 姓名 是 否 是 是 表 8 用户信息表 4.属性信息表如下图 属性名 用户名 密码 属性选项 数据类型 Char(20) Char(10) Char(20) 关键字 是否可为空 是 否 备注 是 否 表 9 属性信息表 5.课程设计总结 越来越复杂的人际交往使得我们很难弄清楚和每个交往过人的关系, 特别对于那些工作 很忙的人来说,这样,通讯录能够便捷的给我们带来所需要的相关信息。

通过设计前整个通讯录系统的分析, 使得我们对程序设计有了更深的认识, 通过对用户 需求所做的人性化分析。

在设计程序的过程中, 我们能更加合理的构建瞒住用户需求的系统 功能, 使用户在使用前能增强工作效率。

在分析与设计中我们查阅了有关资料和分析案例额, 从中学到了很多能够优化自己功能的设计,提高了系统合理性。

这次课程设计让我们体会到时间的重要性, 只有通过实践才能把书本上的知识落实到日 常生活中,还有和同学的相互讨论也很重要,小组的分工模式让我们的设计更好。 6.附录 成员信息及成员分工如下图 姓名 肖萌 刘新宇 学号 1011051031 1011051032 专业班级 计科 1003 计科 1003 分工内容 引言、ER 图,H 图及简介 面向对象类图 及数据库表设 计 系统功能需求 分析 用例图及用例 描述 数据流图及课 程设计总结 是否组长 是 李伟 徐阳升 杨红云 1011051030 1011052097 0911051112 计科 1003 计科 1003 计科 1003

第一篇:手机通讯录管理软件

中国地质大学(武汉) C 语言课程设计 学 专 题 班 姓 学 院

号: 计算机学院 网络工程 手机通讯录管理系统 ************* ************ ************ ************ 指导教师: 2010 年 6 月 22 日 C 语言课程设计论文 手机通讯录管理系统 摘 要 现在手机通讯录越来越普及,用手机通讯录系统代替人工书面通讯录,容易实现查看, 增加,修改和删除等功能,简洁方便,不容易出错。 关键词:文件,修改,简洁方便 目 录 中 文 摘 要 ················································Ⅰ ··············································· 1 题目要求·········································1 ········································· ········································ 1.1 要求. ........................................................................................................................ 1 2 3 4 需求分析·········································1 ········································· ········································ 总体设计·········································1 ········································· ········································ 详细设计 ········································· ········································ 2 ········································ 4.1 主函数 ········································2 ········································ ······································· 4.2 各功能模块设计 ··································· ·································· 5 ·································· 4.3 公共函数 ······································ 6 ······································ ······································ 5.运行结果(附带抓图) ·································7 ································· ································ 6.总结···········································10 ··········································· ·········································· 附录 A 练习题源码 ···································· ··································· 11 ··································· 参考文献·········································· 27 ·········································· ·········································· C 语言课程设计论文 1 题目要求 要求 1.1 模拟手机通讯录管理系统,实现对手机中的通讯录进行管理。功能要求如下

(1)查看功能:选择此功能时,列出下列三类选择。

①办公类 ②个人类 ③商务类 当选中某类时,显示出此类所有数据中的姓名和电话号码。

(2)增加功能:能录入新数据。

一个结点包括:姓名、电话号码、分类(办公类、个人类、商务类) 、电子邮件。例如:杨春 13589664454 商务类 chuny@126.com. 当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通讯录中超过 15 条 信息时,存储空间已满,不能再录入新数据:录入的数据能按递增的顺序自动进行条目编号。

(3)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改。

(4)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动调整后续条目的 编号。

[提示] 建立结构体,结构体成员包括姓名、电话号码、分类、电子邮件。 2 需求分析 根据题目要求,由于通讯录信息是放在文件中,所以应提供文件的输入输出等操作;在程序中需 要浏览通讯录信息,应提供显示、查找、添加、删除、修改等操作;另外应提供键盘式选择菜单实现 功能选择。 3 总体设计 根据上面的分析,可以将这个系统分为如下七大模块:enter 通讯录信息信息输入模块、look 按 类查看模块、add 通讯录信息添加模块、modify 通讯录信息修改模块、del 通讯录信息删除模块、 search 通讯录信息按姓名查找模块、 browse 通讯录信息浏览模块。而各个模块之间由 menu 菜单模 块来做连接,最后由 main 主函数领导。 -1- C 语言课程设计论文 4 详细设计 4.1 主函数 主函数一般要求设计得比较简洁,只提供输入、输出、处理和输出部分的函数调用。其中各功能 模块用菜单方式选择。

把界面选择部分语句单独取出来作为一独立函数,目的在于系统实行完每部分 功能后能够方便返回系统界面。主函数设计如下

【程序】 void menu() {void enter();void add();void modify();void del();void look();void search();void browse(); int n,w1; do { puts("\t\t************************MENU**************************\n\n"); puts("\t\t\t\t1.Enter new data"); puts("\t\t\t\t2.look by group"); puts("\t\t\t\t3.Addition data"); puts("\t\t\t\t4.Modify data"); puts("\t\t\t\t5.Delete data"); puts("\t\t\t\t6.Search by name"); puts("\t\t\t\t7.browse"); puts("\t\t\t\t8.Exit"); puts("\n\n\t\t*******************************************************\n"); printf("Choice your number(1-8)

[]\b\b"); scanf("%d",&n); if(n<1||n>8) { w1=1;getchar(); } else w1=0; }while(w1==1); switch(n) { case 1:enter();break; case 2:look();break; case 3:add();break; case 4:modify();break; case 5:del();break; case 6:search();break; case 7:browse();break; case 8:exit(0); } } -2- C 语言课程设计论文 /***********主函数***********************/ main() { void menu(); menu(); } 4.2 各功能模块设计 4.2.1 输入模块 【数据结构】 根据题目提示,每个人通讯录信息是一个实体,用结构体保存。有多个通讯录信息,因此用结 构体数组。

【数据结构代码】 struct record {int num; /********用于存放条目编号************/ char name[20];/***********用于存放姓名**************/ char phnum[15];/**************用于存放电话号码*************/ char group[15];/**************** 用于存放类别****************/ char e_mail[30];/*************** 用于存放邮件地址*************/ }rec[N]; 【程序】 void enter() { int i,n,j; int input(int i);void save(int n);void printf_back(); printf("You can input 15 peoples' records at max"); scanf("%d",&n); if(n>15) { printf("You cannot input this data.Please reinput'n'\n"); } printf("\n Enter data now\n\n"); for(i=0;i<n;) { printf("\n Input %dth people record>\n",i+1); j=input(i); if(j==1)i++; } if(i!=0) save(n); printf_back(); } -3- C 语言课程设计论文 4.2.2 按类查看模块 按类查看模块其实就是按类显示,用printf函数实现。又用到提供选择类别,用菜单选择实 现。

【程序】 void look() { int n,w1; void browse_work();void browse_pers();void browse_busi(); do { puts("\t\t************************MENU**************************\n\n"); puts("\t\t\t\t1.work"); puts("\t\t\t\t2.personnal"); puts("\t\t\t\t3.business"); puts("\t\t\t\t4.Exit"); puts("\n\n\t\t**********************************************\n"); printf("Choice your number(1-4)

[]\b\b"); scanf("%d",&n); if(n<1||n>4) { w1=1;getchar(); } else w1=0; }while(w1==1); switch(n) { case 1:browse_work();break; case 2:browse_pers();break; case 3:browse_busi();break; case 4:exit(0); } } void browse_work() {int i,n,w1; void printf_face();void printf_one(int i);int load();void look(); n=load(); printf_face(); for(i=0;i<n;i++) if(strcmp(rec[i].group,"work")==0) { if((i!=0)&&(i%5==0)) { printf("\n\nPress any key to continue..."); getchar(); -4- C 语言课程设计论文 puts("\n\n"); } printf_one(i); } printf("Do you want to look another?1).Yes 2).No and back to menu scanf("%d",&w1); if(w1==1) look(); else menu(); } []\b\b"); void browse_pers() {int i,n,w1;void printf_face();void printf_one(int i);int load();void look(); n=load(); printf_face(); for(i=0;i<n;i++) if(strcmp(rec[i].group,"personnal")==0) { if((i!=0)&&(i%5==0)) { printf("\n\nPress any key to continue..."); getchar(); puts("\n\n"); } printf_one(i); } printf("Do you want to look another?1).Yes 2).No and back to menu []\b\b"); scanf("%d",&w1); if(w1==1) look(); else menu(); } void browse_busi() {int i,n,w1;void printf_face();void printf_one(int i);int load();void look();void printf_back(); n=load(); printf_face(); for(i=0;i<n;i++) if(strcmp(rec[i].group,"business")==0) { if((i!=0)&&(i%5==0)) { -5- C 语言课程设计论文 printf("\n\nPress any key to continue..."); getchar(); puts("\n\n"); } printf_one(i); } printf("Do you want to look another?1).Yes 2).No and back to menu []\b\b"); scanf("%d",&w1); if(w1==1) look(); else menu(); } 4.2.3 增加功能设计 增加功能可以用追加函数实现。

【程序】 void add() { int i,n,m,k,j;int load();int input(int i);void printf_back(); FILE *fp; n=load(); printf("You can input another (0-%d) new datas?:",14-n); scanf("%d",&m); k=m+n; for(i=n;i<k;) { printf("\n Input %dth people record.\n",i-n+1); if(i>14) {printf("The space is full.You cannot input another new data\n"); k=15;break; } j=input(i); if(j==1)i++; } if((fp=fopen("record.txt","ab"))==NULL) { printf("Cannot open file\n"); } for(i=n;i<k;i++) if(fwrite(&rec[i],sizeof(struct record),1,fp)!=1) printf("file write error\n"); fclose(fp); printf_back(); } -6- C 语言课程设计论文 4.2.4 修改功能的实现 先分屏显示通讯录信息,用户输入要修改的通讯人姓名,根据姓名查找通讯录信息,根据用户的 选择修改相应信息。

【程序】 void modify() { struct record s; int i,k,n,w0=1,w1,w2=0;int load();void printf_face();void printf_one(int i);int modify_data(int i,int n);void menu();void save(int n); n=load(); do { k=-1; printf_face(); for(i=0;i<n;i++) { if((i!=0)&&(i%5==0)) { printf("\n\nRemember name which needed modify.Press any key to continue..."); getchar(); puts("\n\n"); } printf_one(i); } do { printf("\n\nEnter name that you want to modify! name:"); scanf("%s",s.name); for(i=0;i<n;i++) if(strcmp(s.name,rec[i].name)==0) { k=i;s=rec[i]; } if(k==-1) printf("\n\nNO exit!please again"); }while(k==-1); printf_face(); printf_one(k); w1=modify_data(k,n); if(w1==1) { printf("\nSuccessful.\n\nAre you modify another?\n\n\t1).Yes2).Back with save\t[]\b\b"); scanf("%d",&w0); w2=1; } -7- C 语言课程设计论文 else { w0=0; if(w2==1) rec[k]=s; } if(w0!=1&&w2==1) save(n); }while(w0==1); menu(); } 4.2.5 删除模块的设计 先分屏显示通讯录信息,用户输入姓名,根据姓名找到此人的通讯录信息,用户根据需要确定是 否删除。将要删除的数据从文件中删除,删除后面的数据往前移。通过对条目编号的处理实现自动调 整后续条目的编号。程序为

【程序】 void del() { int i,k,n,w1;int load();void printf_face();void printf_one(int i);void printf_back();void save(int n);void browse(); struct record s; n=load(); k=-1; printf_face(); for(i=0;i<n;i++) { if((i!=0)&&(i%5==0)) { printf("\n\nRemember name which needed delete.Press any key to continue..."); getchar(); puts("\n\n"); } printf_one(i); } do { printf("\n\nEnter name that you want to delete! name.:"); scanf("%s",s.name); for(i=0;i<n;i++) if(strcmp(s.name,rec[i].name)==0) { k=i; } if(k==-1) printf("\n\nNO exit!please again"); }while(k==-1); -8- C 语言课程设计论文 printf_face(); printf_one(k); printf("Are you sure?1).sure 2).No and back []\b\b"); scanf("%d",&w1); if(w1==1) { for(i=k;i<n-1;i++) {rec[i]=rec[i+1]; rec[i].num=i+1; } rec[n-1].num=0; save(n); browse(); } else printf_back(); } 4.2.6 按姓名查找模块的设计 尽管题目没要求按姓名查找,但实际中往往用到查找模块。程序为

【程序】 void search() { int i,k,n,w1=1,w2,w3,w4; int load();void printf_face();void printf_one(int i);void save(int n);int modify_data(int i,int n); struct record s; n=load(); do { do { k=-1; printf("\n\nEnter name that you want to search! name"); scanf("%s",s.name); printf_face(); for(i=0;i<n;i++) if(strcmp(s.name,rec[i].name)==0) { k=i; printf_one(k); break; } if(k==-1) { printf("\n\nNO exit!please"); printf("\n\nAre you again\n\t1).again 2).No and back []\b\b"); -9- C 语言课程设计论文 scanf("%d",&w1); w2=0; } }while(k==-1&&w1==1); w4=0;w3=0; if(k!=-1) { printf("\n\nWhat do you want to do?\n1).Search another 2).Modify 3).Delete 4).Back menu []\b\b"); scanf("%d",&w2); switch(w2) { case 2:w3=modify_data(k,n);break; case 3:{ printf("\nAre you sure?\n\t1).Sure 2).No and back []\b\b"); scanf("%d",&w4); if(w4==1) for(i=k;i<n-1;i++) { rec[i]=rec[i+1]; rec[i].num=i+1; } rec[n-1].num=0;break; } } if(w3==1||w4==1) { save(n); printf("\n\nSuccessful."); printf("\n\nWhat do you want to do?\n\t1).Search another 2).Back[]\b\b"); scanf("%d",&w2); } } }while(w2==1); menu(); } 4.2.7 显示模块的设计 为了确定是否已经删除或者修改或者已经输入数据,为了方便,特设计此函数

【程序】 void browse() { int i,n;int load();void printf_face();void printf_one(int i);void menu(); n=load(); printf_face(); for(i=0;i<n;i++) { if((i!=0)&&(i%5==0)) { printf("\n\nPress any key to continue..."); getchar(); puts("\n\n"); } - 10 - C 语言课程设计论文 printf_one(i);} printf("\tThere are %d record.\n",n); printf("\nPress any key to back..."); getchar(); menu(); } 4.3 公共函数 下面是各个模块都可能用到的一些公共函数 4.3.1 保存函数save(int n)/***********用于实现把数据读入文件中*********/ 【程序】: void save(int n) { FILE *fp; int i; if((fp=fopen("record.txt","wb"))==NULL) { printf("\nCannot open file\n"); } for(i=0;i<n;i++) if(rec[i].num!=0)/***********不保存该数据,即实现了删除功能************/ if(fwrite(&rec[i],sizeof(struct record),1,fp)!=1) printf("file write error\n"); fclose(fp); } 4.3.2 加载函数 【程序】 int load() { FILE *fp; int i; if((fp=fopen("record.txt","rb"))==NULL) { printf("\nCannot open file\n"); return 0; } for(i=0;!feof(fp);i++) fread(&rec[i],sizeof(struct record),1,fp); fclose(fp); return(i-1);} 4.3.3 姓名输入函数 【程序】: - 11 - C 语言课程设计论文 int name_input(int i,int n) { int k,s1=0; printf("name:"); scanf("%s",st.name); for(k=0;k<n;k++) if(k!=i&&strcmp(rec[k].name,st.name)==0) { puts("This record is exist.cancel this input!\n"); s1=1;break; } return(s1); } 4.3.4 电话号码输入函数 【程序】 int phnum_input(int i,int n) { int j,k,w1,s2=0; do { w1=0; printf("phnum:"); scanf("%s",st.phnum); for(j=0;st.phnum[j]!='\0';j++) if(st.phnum[j]<'0'||st.phnum[j]>'9') { puts("Input error!Only be made up of(0-9).Please reinput!\n"); w1=1;break; } if(w1!=1) for(k=0;k<n;k++) if(k!=i&&strcmp(rec[k].phnum,st.phnum)==0) { puts("This record is exist.cancel this input!\n"); s2=1; break; } }while(w1==1); return(s2); } 4.3.5 输入整个记录函数 【程序】 int input(int i) {int w1,w2,w3=0; int name_input(int i,int n);int phnum_input(int i,int n); - 12 - C 语言课程设计论文 st.num=i+1; w1=name_input(i,i); w2=phnum_input(i,i); printf("group:"); scanf("%s",st.group); printf("e_mail:"); scanf("%s",st.e_mail); if(w1!=1&&w2!=1) {rec[i]=st;w3=1;} return(w3); } 4.3.6 修改整条记录函数 【程序】 int modify_data(int i,int n) { int c,w1;void printf_face();void printf_one(int i); do { puts("\nmodify by =>\n\n1).name 2).phnum 3)group 4).e_mail 5).all data 6).cancel and back"); printf("Which you needed?

[]\b\b"); scanf("%d",&c); if(c<1||c>6) { puts("\nChoice error!Please again!"); getchar(); } } while(c>6||c<1); do { switch(c) { case 1:printf("name:");scanf("%s",rec[i].name);break; case 2:printf("phnum:");scanf("%s",rec[i].phnum);break; case 3:printf("group:");scanf("%s",rec[i].group);break; case 4:printf("e_mail:");scanf("%s",rec[i].e_mail);break; case 5:input(i);break; } puts("\nNow:\n"); printf_face(); printf_one(i); printf("\nAre you sure?\n\n\t1).Sure 2).No and remodify 3).Back without save in this time []\b\b"); scanf("%d",&w1); } while(w1==2); - 13 - C 语言课程设计论文 return(w1); } 4.3.7 显示数据结构项目函数 【程序】 void printf_face() { printf("\n\tnum\tname\tphnum\tgroup\t\te_mail\n\n"); } 4.3.8 显示一个记录函数 【程序】 void printf_one(int i) { printf("\t%d %s %s %s %20s\n",rec[i].num,rec[i].name,rec[i].phnum,rec[i].group,rec[i].e_mail); } 4.3.9 一个任务结束时选择返回还是浏览的函数 【程序】 void printf_back() { int w; void browse(); printf("\n\n\tSuccessful.\n\n"); printf("What do you want to do?\n\n\t1).Browse all now\t2).Back

[]\b\b"); scanf("%d",&w); if(w==1) browse(); else menu(); } - 14 - C 语言课程设计论文 5 运行结果(附带抓图) 程序主界面运行结果

(1)主菜单函数,效果如图: - 15 - C 语言课程设计论文 (2)输入模块

在主界面出现后输入 1 并按【Enter】键,结果如下: 输入要输入的记录然后逐条增加: - 16 - C 语言课程设计论文 (3)分类查看: (4)添加模块: - 17 - C 语言课程设计论文 (5)修改模块: (6)删除模块 - 18 - C 语言课程设计论文 (7)按姓名查找模块: - 19 - C 语言课程设计论文 (8)浏览模块: 6 总结 通过这次 C 程序设计,我掌握了模块化设计方法,能够深入的理解结构化程序设计思想,熟练运用结构化 程序设计方法,提高了运用 C 语言进行程序设计的能力。 参考文献 [1] 谭浩强.《C 程序设计》[M].北京:清华大学出版社,1991 年第一版. 致 首先要感谢张冬梅老师的授课与指导! 感谢帮助我完成 C 程序设计论文的研究生。 谢 附录 A 源程序 #include <stdio.h> #include <string.h> #include <stdlib.h> - 20 - C 语言课程设计论文 #define N 20 void menu() {void enter();void add();void modify();void del();vo作文id look();void search();void browse(); int n,w1; do { puts("\t\t************************MENU**************************\n\n"); puts("\t\t\t\t1.Enter new data"); puts("\t\t\t\t2.look by group"); puts("\t\t\t\t3.Addition data"); puts("\t\t\t\t4.Modify data"); puts("\t\t\t\t5.Delete data"); puts("\t\t\t\t6.Search by name"); puts("\t\t\t\t7.browse"); puts("\t\t\t\t8.Exit"); puts("\n\n\t\t*******************************************************\n"); printf("Choice your number(1-8)

[]\b\b"); scanf("%d",&n); if(n<1||n>8) { w1=1;getchar(); } else w1=0; }while(w1==1); switch(n) { case 1:enter();break; case 2:look();break; case 3:add();break; case 4:modify();break; case 5:del();break; case 6:search();break; case 7:browse();break; case 8:exit(0); } } main() { void menu(); menu(); } struct record {int num; - 21 - C 语言课程设计论文 char name[20]; char phnum[15]; char group[15]; char e_mail[30]; }rec[N]; void enter() { int i,n,j; int input(int i);void save(int n);void printf_back(); printf("You can input 15 peoples' records at max"); scanf("%d",&n); if(n>15) { printf("You cannot input this data.Please reinput'n'\n"); } printf("\n Enter data now\n\n"); for(i=0;i<n;) { printf("\n Input %dth people record>\n",i+1); j=input(i); if(j==1)i++; } if(i!=0) save(n); printf_back(); } void look() {int n,w1; void browse_work();void browse_pers();void browse_busi(); do { puts("\t\t************************MENU**************************\n\n"); puts("\t\t\t\t1.work"); puts("\t\t\t\t2.personnal"); puts("\t\t\t\t3.business"); puts("\t\t\t\t4.Exit"); puts("\n\n\t\t**********************************************\n"); printf("Choice your number(1-4)

[]\b\b"); scanf("%d",&n); - 22 - C 语言课程设计论文 if(n<1||n>4) { w1=1;getchar(); } else w1=0; }while(w1==1); switch(n) { case 1:browse_work();break; case 2:browse_pers();break; case 3:browse_busi();break; case 4:exit(0); } } void browse_work() {int i,n,w1; void printf_face();void printf_one(int i);int load();void look(); n=load(); printf_face(); for(i=0;i<n;i++) if(strcmp(rec[i].group,"work")==0) { if((i!=0)&&(i%5==0)) { printf("\n\nPress any key to continue..."); getchar(); puts("\n\n"); } printf_one(i); } printf("Do you want to look another?1).Yes 2).No and back to menu []\b\b"); scanf("%d",&w1); if(w1==1) look(); else menu(); } void browse_pers() {int i,n,w1;void printf_face();void printf_one(int i);int load();void look(); n=load(); printf_face(); for(i=0;i<n;i++) - 23 - C 语言课程设计论文 if(strcmp(rec[i].group,"personnal")==0) { if((i!=0)&&(i%5==0)) { printf("\n\nPress any key to continue..."); getchar(); puts("\n\n"); } printf_one(i); } printf("Do you want to look another?1).Yes 2).No and back to menu []\b\b"); scanf("%d",&w1); if(w1==1) look(); else menu(); } void browse_busi() {int i,n,w1;void printf_face();void printf_one(int i);int load();void look();void printf_back(); n=load(); printf_face(); for(i=0;i<n;i++) if(strcmp(rec[i].group,"business")==0) { if((i!=0)&&(i%5==0)) { printf("\n\nPress any key to continue..."); getchar(); puts("\n\n"); } printf_one(i); } printf("Do you want to look another?1).Yes 2).No and back to menu []\b\b"); scanf("%d",&w1); if(w1==1) look(); else menu(); } void add() { int i,n,m,k,j;int load();int input(int i);void printf_back(); FILE *fp; - 24 - C 语言课程设计论文 n=load(); printf("You can input another (0-%d) new datas?:",14-n); scanf("%d",&m); k=m+n; for(i=n;i<k;) { printf("\n Input %dth people record.\n",i-n+1); if(i>14) {printf("The space is full.You cannot input another new data\n"); k=15;break; } j=input(i); if(j==1)i++; } if((fp=fopen("record.txt","ab"))==NULL) { printf("Cannot open file\n"); } for(i=n;i<k;i++) if(fwrite(&rec[i],sizeof(struct record),1,fp)!=1) printf("file write error\n"); fclose(fp); printf_back(); } void modify() { struct record s; int i,k,n,w0=1,w1,w2=0;int load();void printf_face();void printf_one(int i);int modify_data(int i,int n);void menu();void save(int n); n=load(); do { k=-1; printf_face(); for(i=0;i<n;i++) { if((i!=0)&&(i%5==0)) { printf("\n\nRemember name which needed modify.Press any key to continue..."); getchar(); puts("\n\n"); } printf_one(i); - 25 - C 语言课程设计论文 } do { printf("\n\nEnter name that you want to modify! name:"); scanf("%s",s.name); for(i=0;i<n;i++) if(strcmp(s.name,rec[i].name)==0) { k=i;s=rec[i]; } if(k==-1) printf("\n\nNO exit!please again"); }while(k==-1); printf_face(); printf_one(k); w1=modify_data(k,n); if(w1==1) { printf("\nSuccessful.\n\nAre you modify another?\n\n\t1).Yes2).Back with save\t[]\b\b"); scanf("%d",&w0); w2=1; } else { w0=0; if(w2==1) rec[k]=s; } if(w0!=1&&w2==1) save(n); }while(w0==1); menu(); } void del() { int i,k,n,w1;int load();void printf_face();void printf_one(int i);void printf_back();void save(int n);void browse(); struct record s; n=load(); k=-1; printf_face(); for(i=0;i<n;i++) { if((i!=0)&&(i%5==0)) { - 26 - C 语言课程设计论文 printf("\n\nRemember name which needed delete.Press any key to continue..."); getchar(); puts("\n\n"); } printf_one(i); } do { printf("\n\nEnter name that you want to delete! name.:"); scanf("%s",s.name); for(i=0;i<n;i++) if(strcmp(s.name,rec[i].name)==0) { k=i; } if(k==-1) printf("\n\nNO exit!please again"); }while(k==-1); printf_face(); printf_one(k); printf("Are you sure?1).sure 2).No and back []\b\b"); scanf("%d",&w1); if(w1==1) { for(i=k;i<n-1;i++) {rec[i]=rec[i+1]; rec[i].num=i+1; } rec[n-1].num=0; save(n); browse(); } else printf_back(); } void search() { int i,k,n,w1=1,w2,w3,w4; int load();void printf_face();void printf_one(int i);void save(int n);int modify_data(int i,int n); struct record s; n=load(); do { do - 27 - C 语言课程设计论文 { k=-1; printf("\n\nEnter name that you want to search! name"); scanf("%s",s.name); printf_face(); for(i=0;i<n;i++) if(strcmp(s.name,rec[i].name)==0) { k=i; printf_one(k); break; } if(k==-1) { printf("\n\nNO exit!please"); printf("\n\nAre you again\n\t1).again 2).No and back []\b\b"); scanf("%d",&w1); w2=0; } }while(k==-1&&w1==1); w4=0;w3=0; if(k!=-1) { printf("\n\nWhat do you want to do?\n1).Search another 2).Modify 3).Delete 4).Back menu []\b\b"); scanf("%d",&w2); switch(w2) { case 2:w3=modify_data(k,n);break; case 3:{ printf("\nAre you sure?\n\t1).Sure 2).No and back []\b\b"); scanf("%d",&w4); if(w4==1) for(i=k;i<n-1;i++) { rec[i]=rec[i+1]; rec[i].num=i+1; } rec[n-1].num=0;break; } } if(w3==1||w4==1) { save(n); printf("\n\nSuccessful."); printf("\n\nWhat do you want to do?\n\t1).Search another 2).Back[]\b\b"); - 28 - C 语言课程设计论文 scanf("%d",&w2); } } }while(w2==1); menu(); } void browse() { int i,n;int load();void printf_face();void printf_one(int i);void menu(); n=load(); printf_face(); for(i=0;i<n;i++) { if((i!=0)&&(i%5==0)) { printf("\n\nPress any key to continue..."); getchar(); puts("\n\n"); } printf_one(i); } printf("\tThere are %d record.\n",n); printf("\nPress any key to back..."); getchar(); menu(); } void save(int n) { FILE *fp; int i; if((fp=fopen("record.txt","wb"))==NULL) { printf("\nCannot open file\n"); } for(i=0;i<n;i++) if(rec[i].num!=0) if(fwrite(&rec[i],sizeof(struct record),1,fp)!=1) printf("file write error\n"); fclose(fp); } int load() - 29 - C 语言课程设计论文 { FILE *fp; int i; if((fp=fopen("record.txt","rb"))==NULL) { printf("\nCannot open file\n"); return 0; } for(i=0;!feof(fp);i++) fread(&rec[i],sizeof(struct record),1,fp); fclose(fp); return(i-1); } struct record st; int name_input(int i,int n) { int k,s1=0; printf("name:"); scanf("%s",st.name); for(k=0;k<n;k++) if(k!=i&&strcmp(rec[k].name,st.name)==0) { puts("This record is exist.cancel this input!\n"); s1=1;break; } return(s1); } int phnum_input(int i,int n) { int j,k,w1,s2=0; do { w1=0; printf("phnum:"); scanf("%s",st.phnum); for(j=0;st.phnum[j]!='\0';j++) if(st.phnum[j]<'0'||st.phnum[j]>'9') { puts("Input error!Only be made up of(0-9).Please reinput!\n"); w1=1;break; } - 30 - C 语言课程设计论文 if(w1!=1) for(k=0;k<n;k++) if(k!=i&&strcmp(rec[k].phnum,st.phnum)==0) { puts("This record is exist.cancel this input!\n"); s2=1; break; } }while(w1==1); return(s2); } int input(int i) {int w1,w2,w3=0; int name_input(int i,int n);int phnum_input(int i,int n); st.num=i+1; w1=name_input(i,i); w2=phnum_input(i,i); printf("group:"); scanf("%s",st.group); printf("e_mail:"); scanf("%s",st.e_mail); if(w1!=1&&w2!=1) {rec[i]=st;w3=1;} return(w3); } int modify_data(int i,int n) { int c,w1;void printf_face();void printf_one(int i); do { puts("\nmodify by =>\n\n1).name 2).phnum 3)group 4).e_mail 5).all data 6).cancel and back"); printf("Which you needed?

[]\b\b"); scanf("%d",&c); if(c<1||c>6) { puts("\nChoice error!Please again!"); getchar(); } } while(c>6||c<1); do - 31 - C 语言课程设计论文 { switch(c) { case 1:printf("name:");scanf("%s",rec[i].name);break; case 2:printf("phnum:");scanf("%s",rec[i].phnum);break; case 3:printf("group:");scanf("%s",rec[i].group);break; case 4:printf("e_mail:");scanf("%s",rec[i].e_mail);break; case 5:input(i);break; } puts("\nNow:\n"); printf_face(); printf_one(i); printf("\nAre you sure?\n\n\t1).Sure 2).No and remodify 3).Back without save in this time scanf("%d",&w1); } while(w1==2); return(w1); } void printf_face() { printf("\n\tnum\tname\tphnum\tgroup\t\te_mail\n\n"); } void printf_one(int i) { printf("\t%d %s %s %s %20s\n",rec[i].num,rec[i].name,rec[i].phnum,rec[i].group,rec[i].e_mail); } void printf_back() { int w; void browse(); printf("\n\n\tSuccessful.\n\n"); printf("What do you want to do?\n\n\t1).Browse all now\t2).Back

scanf("%d",&w); if(w==1) browse(); else menu(); } []\b\b"); []\b\b"); - 32 -

第一篇:手机通讯录管理软件

重庆理工大学毕业论文 基于 Android 的通讯录软件 毕业设计 题目 基于 Android 系统手机通讯录 管理软件的设计与开发 二级学院 专 班 业 级 计算机科学与工程学院 软件工程 08 软件工程 3 班级 张三 学号 99999999999 李王五 2011/9 - 2011/10 学生姓名 指导教师 时 间 重庆理工大学毕业论文 基于 Android 的通讯录软件 摘 要............................................................................................................................................ I Abstract ............................................................................................................................................. II 第一章 绪论..................................................................................................................................... 2 1.1 项目研究背景..................................................................................................................... 2 1.2 项目研究的目的及意义..................................................................................................... 2 1.3 系统主要实现内容与实现方式 ......................................................................................... 3 1.3.1 系统主要实现内容 ................................................................................................ 3 1.3.2 安卓系统开发的方法 ............................................................................................ 3 1.3.3 系统的开发平台 ................................................................................................... 4 1.4 系统开发需用到的技术支持 ............................................................................................. 4 1.4.1 Java 语言 .............................................................................................................. 4 1.4.2 Android................................................................................................................. 5 第二章 系统分析............................................................................................................................. 6 2.1 系统可行性分析................................................................................................................. 6 2.1.1 技术可行性 ............................................................................................................ 6 2.1.2 经济可行性 ............................................................................................................ 6 2.1.3 操作可行性 ............................................................................................................ 6 2.2 需求分析............................................................................................................................. 6 2.2.1 Android 通讯录的使用意义 ................................................................................ 7 2.2.2 外部事件................................................................................................................ 7 第三章 系统概要设计..................................................................................................................... 8 3.1 系统总体设计..................................................................................................................... 8 3.2 处理流程设计.................................................................................................................... 9 3.2.1 业务流程图 ............................................................................................................ 9 3.2.2 数据增加流程图 .................................................................................................. 10 3.2.3 数据修改流程图 .................................................................................................. 11 3.2.4 数据删除流程 ...................................................................................................... 12 3.3 数据库设计..................................................................................................................... 12 3.3.1 SQLite 数据库简介 ............................................................................................. 12 3.3.3 数据库表结构 ..................................................................................................... 13 第四章 系统详细设计................................................................................................................... 13 4.1 联系人浏览模块.............................................................................................................. 13 4.2 查看联系人模块.............................................................................................................. 16 4.3 编辑联系人模块.............................................................................................................. 17 5.4 查找联系人模块.............................................................................................................. 18 4.5 关于.................................................................................................................................. 19 第五章 系统测试与调试............................................................................................................... 19 5.1 测试目的........................................................................................................................... 19 5.2 程序调试.......................................................................................................................... 20 5.3 测试的主要内容............................................................................................................. 20 5.4 测试用例.......................................................................................................................... 21 5.4.1 功能测试—添加联系人 ...................................................................................... 21 重庆理工大学毕业论文 基于 Android 的通讯录软件 5.4.2 功能测试—查看联系人 ...................................................................................... 21 5.4.3 功能测试—删除联系人 ...................................................................................... 22 5.4.4 功能测试—修改联系人 ........................................................................................ 22 5.4.5 功能测试—查询联系人 ........................................................................................ 23 5.5 系统的后期维护与升级 .................................................................................................. 23 5.6 系统运行界面.................................................................................................................. 24 总 结 .............................................................................................................................................. 25 致 谢 ............................................................................................................................................ 26 参 考 文 献................................................................................................................................... 27 重庆理工大学毕业论文 基于 Android 的通讯录软件 摘 要 自 google 于 2005 年收购 Android 公司, 于此, 谷歌在安卓领域投入了大量精力来开发, 使得安卓技术得以广泛推广,现安卓移动平台设备在市场上已经得到大量推广及普及。在 Android 移动终端操作系统的快速发展,Android 的各种手机软件也大量增长。当然,在手机 终端中, 手机通讯录是手机终端必不可少的基础功能, 其质量直接影响着用户对手机使用的 体验与感觉。

手机通讯管理软件不仅仅只是能够简单添加联系人以及联系方式的功能, 而今 已发展成为多种形式,丰富了联系人的信息,存储了更多的内容。此课程设计研究的这个项 目,主要实现添加联系人的多种联系方式的功能。

本软件采用 Eclipse3.4+Android SDK 集成环境,应用程序编程语言采用 Java 高级语言开 发。通过对通讯录中的联系人的管理,来方便用户通讯更加便捷,联系人的数据保存更加安 全。在对 Android 手机通讯管理软件进行详细的系统设计时,对功能进行详细的划分并对其 功能做了详细的介绍,列出了一些主要功能流程图。

关键词

Android:本义指“机器人”,最早出现于法国作家利尔亚当在1886年发表的科幻小 说《未来夏娃》中,他将外表像人的机器起名为 Android。同时也是 Google 于2007年11月5 日宣布的基于 Linux 平台的开源手机操作系统的名称,中文名:安卓(官方) I 重庆理工大学毕业论文 基于 Android 的通讯录软件 Abstract Since Google has bought up the Android company in 2005,Google has invested considerable effort to Android field,it makes Android technology and Android tablet device be substatial popularity.In that case,about different kinds of Android software has grown rapidly.Certainly, . Mobile phone address book as a basic function of a direct impact on the user experience of mobile phone use and feel. Android mobile phone software, rich mobile contacts record way,you can store more contact information,this course study Android mobile contacts just for implements multiple contact information. The software integrates with Eclipse 3.4 + android SDK environment, using java advanced language development. Through contacts in the address book management, to allow users to communicate more convenient, contact the data storage more secure. Android phones on the detailed communication management software system design, the detailed division of functions and the function made a detailed introduction, a list of some major code and flow chart. Keywords

Basic meaning of’Robot’,First appeared in French writer David Villa’s LandaposEve Future in 1886,He named the robot looks like a man as Android.So Google announced Linux platform based on the open source phone operating system,Chinese name:anzhuo. II 重庆理工大学毕业论文 基于 Android 的通讯录软件 第一章 绪论 1.1 项目研究背景 经过多年的发展, 随着第三代网络的使用及四代网络的即将来临, 移动终端不再仅是通 讯网络的终端,还将成为互联网的终端。因此,移动终端的应用软件和需要的服务将会有很 大的发展空间。

Google 与包括 HTC、摩托罗拉,三星,联想等在内的三十多家技术和无线 应用的领军企业组成的开发联盟为此于 2007 年 11 月推出了一个专为移动设备设计的软件平 台——Android OS。

Android 是一套真正意义上的开放性移动设备综合平台,它包括操作系统、中间件和一 些关键的平台应用。Android 的 Java 程序运行环境包含一组 Java 核心函数库及 Dalvik 虚 拟机,它们有效地优化了 Java 程序的运行过程。Android 系统平台基于优化了的 Linux 内 核,它提供诸如内存管理、进程管理、设备驱动等服务,同时也是手机软硬件的连接层。

Android 最大特点在于它是一个开放的体系架构,具有非常好的开发和调试环境,而且 还支持各种可扩展的用户体验,Android 里面具有非常丰富的图形系统,对多媒体的支持功 能和非常强大的浏览器

Android 平台的开放性等特点既能促进技术(包括平台自身)的创新,又有助于降低开发 成本, 还可以使运营商能非常方便地制定特色化的产品, 因此, 它具有很大的市场发展潜力。 [3] 1.2 项目研究的目的及意义 随着 3G 网络的使用,移动终端不再仅是通讯网络的终端,还将成为互联网的终端。因 此,移动终端的应用软件和需要的服务将会有很大的发展空间。在 Google 和 Android 手机 联盟的共同推动下,Android 在众多手机操作系统中脱颖而出,受到广大消费者的欢迎

手机通讯录作为手机的基本功能之一, 每天我们都在频繁地使用着。

根据手机功能使用 调查显示, 9 成以上的消费者使用手机通讯录功能。

有 随着手机通讯录功能的不断加强与完 善,手机通讯录对于人们的意义,已不仅仅像记事簿一样显示通讯地址,而是向着个性化、 人性化的方向发展通讯录从无到有,从英文到中文,经过了十几年的发展历程,今后的 发展趋势就是从通讯录发展为名片夹,也就是在一个人名下,可以存储座机、手机、单位、 地址、电子邮件等内容。这种名片夹在电话薄的基础上,大大丰富了内容,同时结构也发生 2 [4] [7] 重庆理工大学毕业论文 基于 Android 的通讯录软件 了革命性变化, 而且随着手机的发展, 相信更优秀的通讯录会越来越受到社会各层人士的喜 爱。 1.3 系统主要实现内容与实现方式 1.3.1 系统主要实现内容 通过对 Android 技术的相关研究,了解 Android 源码实现原理以及过程,从而设计出一 款能够使用的手机通讯录。

这款音乐播放器实现的相关内容如下

? 简洁、实用的操作界面。

? 显示所有联系人的列表。

? 添加联系人。

? 删除联系人。

? 修改编辑联系人。

? 呼叫联系人。

? 发送短信至联系人。 1.3.2 安卓系统开发的方法 Android 现在发展迅猛,运营商、手机商、平板电脑厂商都在推,甚至家电 厂商们也开始涉足, Android 程序开发者的需求激增,人才的培养需要一个过 对 程大量的企业都在寻找 Android 软件开发的其他方式。卓系统开发的方法,简单 来说分成四层: 第一层,以 Inventor 为代表的绘图工具,是 Google 推出的简单开发工具,主要是针对 初级玩家的工具,操作起来很容易,这种容易上手的绘图工具,无法实现业务逻辑,运行效 率也比较低。

第二层,以 Rexsee 为代表的无线中间件,对技术门槛的要求很低,会用 HTML 和 JS 的 技术员就可以方便的使用,在技术要求大幅度降低的同时,基础功能的封装也是一大亮点, 这些中间件已经把所有应用需要的基础功能封装好,直接使用 JS 去调用就可以了,不再需 要写代码。 3 重庆理工大学毕业论文 基于 Android 的通讯录软件 第三层,基于 JAVA 的 JDK JDK(Java Development Kit),目前绝大部分应用都是用这 种方式来开发,本课程设计软件就采用这第三层开发来实现。

第四层,基于 C++的 NDK( Native Development Kit),很多大型游戏是以这种方法开发 的,相对于 JDK,这种方法的难度相对叫高,目前使用的比较少。 1.3.3 系统的开发平台 由于该 android 通讯录是一个基于 Java 语言开发软件, 所以选择了 Eclipse3.4 作为开 发平台,作为插件,它能够安装 Android SDK,从而可以安装使用 Android 虚拟机,使得程 序得以开发,亦更为方便。

本通讯录系统就是在 Eclipse3.4+Android 平台环境下编写设计而成的。 1.4 系统开发需用到的技术支持 1.4.1 Java 语言 Java 是一种简单的,面向对象的,分布式的,解释的,键壮的安全的,结 构的中立的,可移植的,性能很优异的多线程的,动态的语言。

Java 的开发环境有不同的版本,如 sun 公司的 Java Developers Kit, 简 称 JDK。后来微软公司推出了支持 Java 规范的 Microsoft Visual J++ Java 开 发环境,简称 VJ++。

Java 的特点

1. 平台无关性 平台无关性是指 Java 能运行于不同的平台。Java 引进虚拟机 原理,并运 行于虚拟机,实现不同平台的 Java 接口之间。使 用 Java 编写的程序能在世界 范围内共享。

Java 的数据类型与 机器无关, Java 虚拟机 (Java Virtual Machine) 是建立在 硬件和操作系统之上,实现 Java 二进制代码的解释执行功能, 提供 于不同平台的接口的。 2. 安全性 Java 舍弃了 C++的指针对存储器地址的直接操作, 程序 运行时, 内存由操作系统分配, 这样可以避免病毒通过指 针侵入系统。Java 对程序提供了安全管理器,防止程序的 非法 4 重庆理工大学毕业论文 基于 Android 的通讯录软件 访问。

3. 面向对象 Java 吸取了 C++面向对象的概念,将数据封装于类中,利用类 的优点,实现了程序的简 洁性和便于维护性。类的封装性、 继承性等有关对象的特性,使程序代码只需一次编译, 然后 通过上述特性反复利用。

程序员只需把主要精力用在类和接 口的设计和应用上。

Java 提供了众多的一般对象的类,通 过继承即可使用父类的方法。

4. 分布式 Java 建立在扩展 TCP/IP 网络平台上。库函数提供了用 HTTP 和 FTP 协议传送和接受信 息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。

5. 键壮性 Java 致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现 的错误。Java 自已操纵内存减少了内存出错的可能性。Java 还实现了真数组,避免了覆盖 数据的可能。这些功能特征大大提高了开发 Java 应用程序的周期。 1.4.2 Android Android 平台由互联网与社会信息科技的领袖 google 公司开发,由 google 和二十多家业界重量级企业联盟提供持续性的技术支持。Google 的开放自由精 神。Android 联盟的雄厚实力,以及 App 商店商业模式带来的巨大活力,使得在 IT 界出现一大批热爱,追随安卓平台开发人员和产品设计人员。

Android 操作系统最初由 Andy Rubin 开发,最初主要支持手机。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到 到平板电脑及其他领域上。

2010 年末数据显示,仅正式推出两年的操作系统的 Android 已经超越称霸十年的诺基亚 Symbian 系统,跃居全球最受欢迎的智能手 机平台。Android 的主要竞争对手是苹果的 IOS,微软的 WP7 以及 RIM 的 Blackberry OS。 5 重庆理工大学毕业论文 基于 Android 的通讯录软件 第二章 系统分析 2.1 系统可行性分析 2.1.1 技术可行性 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言(以下简称 Java 语言) Java 平台的总称。

和 Java 平台由 Java 虚拟机 (Java Virtual Machine) Java 和 应用编程接口(Application Programming Interface、简称 API)构成。Java 应用编程接 口为 Java 应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬 件或操作系统平台上安装一个 Java 平台之后,Java 应用程序就可运行。现在 Java 平台已 经嵌入了几乎所有的操作系统。

这样 Java 程序可以只编译一次, 就可以在各种系统中运行。

本软件用的是 Java 开发语言,在 eclipse 集成开发环境下,调试容易。当前的计算机 硬件配置或则现有安卓手机的硬件配置也完全能满足开发的需求,因此技术上是绝独可行 的。 2.1.2 经济可行性 开发该系统所需的相关资料可以通过已存在的相关系统进行调查采集,所需的软件系 统、硬件平台等都易于获得,且不需要 Android 平台机器,用模拟器即可实现开发研究,开 发成本低,容易实现,从经济角度来看,该系统可行。 2.1.3 操作可行性 不管是安卓平台的手机,还是计算机,其成本的下降,导致计算机,安卓手机购买成本 的降低.这套系统是利用自己的计算机, 且使用安卓模拟器, 并且在本地上安装 JDK、 Android 跟 Eclipse 作为软件的开发平台,使开发出来的系统有友好的用户界面、操作简单,因此在 操作上是可行的。 2.2 需求分析 该通讯录软件是一种主要用来记录联系人的基于安卓平台的软件, 可以运行在安卓平台 6 重庆理工大学毕业论文 基于 Android 的通讯录软件 模拟器或运行在安卓平台的手持设备上。 2.2.1 Android 通讯录的使用意义 根据手机功能使用调查显示,近 10 成的消费者都会使用手机通讯录功能。随着手机通 讯录功能的不断加强与完善, 手机通讯录对于人们的意义, 已不仅仅像记事簿一样显示电话 号码,而是向着个性化、人性化的方向发展。通讯录从无到有,从英文到中文,经过了十几 年的发展历程,今后的发展趋势就是从通讯录发展为名片夹,也就是在一个人名下,可以手 机号码、QQ、地址、电子邮件,备注等内容。

该系统针对的主要用户是 Android 手机用户。Android 手机通信管理系统包括以下主要 内容:添加联系人、删除联系人、编辑联系人、查找联系人、打电话、发短信。要设计一个 良好的手机通讯录,就必须首先明确该应用环境对系统的要求。Android 手机通讯录应用背 景:方便用户快捷通讯。 2.2.2 外部事件 图 2-1 描述了通讯录与外部环境的交互。在这个系统中,通过对系统的分析,可以识别 出参与者:用户。对于用户而言,通讯录上按钮是用户向系统输入的操作请求的输入设备, GUI 与是用于向用户输出信息的输出设备。

按钮 SQLite 数据库 用户 系统 GUI 图 2-1 通讯录的参与者 事件是来自人操作的重要的消息,表 2-1 给出了通讯录系统中可能发生的所有事件。

表 2-1 1 2 系统响应及其执行结果 事件 从手机屏幕点击软件 系统 点击"Menu",选择添 系统响应 调用函数入口,启动 系统,进入该软件 调用添加函数 执行结果 进入该软件,显示联 系人列表 进入添加界面 7 重庆理工大学毕业论文 基于 Android 的通讯录软件 加联系人 3 4 点击其中一个联系人 在联系人详细界面点 击"Menu",可对联系 人进行修改 在联系人详细界面点 击"Menu",可对联系 人进行发送短信 在联系人详细界面点 击"Menu",可对联系 人进行拨打电话 在联系人详细界面点 击"Menu",可对联系 人进行删除 在联系人列表界面点 击"Menu",选择查找 在联系人列表界面点 击"Menu",选择退出 在联系人列表长按其 中一个联系人 调用查看某个联系人 函数 调用修改函数 进入联系人详细界面 进入修改界面 5 调用系统发送短信函 数 调用系统拨打电话函 数 调用删除函数 进入发送短信界面 6 进入呼叫联系人界面 7 删除联系人 8 9 10 调用查找联系人函数 调用退出函数 调用长按函数 显示用户查找结果 退出通讯录软件 显示对该联系人的 3 种操作:查看,编辑, 删除 第三章 系统概要设计 3.1 系统总体设计 Android 手机通讯管理软件主要功能模块包括:联系人添加、联系人查看、联系人编辑、 联系人删除、呼叫、发送短信、搜索,如图 3-1 所示。 8 重庆理工大学毕业论文 基于 Android 的通讯录软件 Android 手机通讯管理软件 联系人列表 联 系 人 添 加 联 系 人 查 看 联 系 人 编 辑 联 系 人 删 除 呼 叫 联 系 人 发 送 短 信 联 系 人 搜 索 图 3-1 功能结构图 3.2 处理流程设计 3.2.1 业务流程图 用户进入手机通讯管理软件后, 会看到联系人列表界面。

联系人列表界面主菜单中包括 添加联系人、搜索联系人、关于及查看系统版本号、退出菜单项。点击添加联系人,则进入 联系人添加界面, 添加成功后返回联系人列表界面。

点击搜索菜单, 则进入联系人搜索界面, 输入联系人的全名或一个字,即可查找到相关联系人,点击联系人会进入联系人查看界面, 可以对联系人进行编辑、删除、拨打电话、发送短信。 9 重庆理工大学毕业论文 基于 Android 的通讯录软件 图 2 Android 手机通讯管理软件业务流程图 3.2.2 数据增加流程图 添加联系人时,数据由用户输入,点击确定按钮,判断数据是否合法(及用户名是否为 空),合法则插入到数据库;不合法,提示错误信息,让用户重新输入。流程如图 3 所示: 10 重庆理工大学毕业论文 基于 Android 的通讯录软件 添加联系人界面 添加数据 是否合法 插入数据库 图 3 数据增加流程图 3.2.3 数据修改流程图 编辑联系人时,点击编辑联系人菜单,输入修改后的数据,点击确定按钮,判断数据是 否合法,合法,则更新数据库;不合法,则返回错误信息。

流程如图 4 所示: 修改联系人界面 修改数据 是否合法 更新数据库 图 4 数据修改流程图 11 重庆理工大学毕业论文 基于 Android 的通讯录软件 3.2.4 数据删除流程 当用户选定一个联系人时,单击删除联系人菜单,提示用户是否删除,点击确定按钮, 则从数据库中删除此条记录。数据删除流程如图 5 所示: 查看联系人界面 删除联系人 是否删除 更新数据库 图 5 数据删除流程图 3.3 数据库设计 3.3.1 SQLite 数据库简介 SQLite,是一款轻型的数据库,是遵守 ACID 的关联式数据库管理系统,它的设计目标 是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式 设备中,可能只需要几百 K 的内存就够了。它能够支持 Windows/Linux/Unix 等等主流的操 作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java 等,还有 ODBC 接 口,同样比起 Mysql、PostgreSQL 这两款开源世界著名的数据库管理系统来讲,它的处理 速度比他们都快。SQLite 第一个 Alpha 版本诞生于2000年5月. 至今已经有10个年头, SQLite 也迎来了一个版本 SQLite 3已经发布。

本系统采用的是 Android 系统自带的 SQLite 轻型数据库数据库。因此占用资源非常小。 3.3.2 SQLite 特点 12 重庆理工大学毕业论文 基于 Android 的通讯录软件 1. 轻量级 SQLite 和 C/S 模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的 客户端和服务器。使用 SQLite 一般只需要带上它的一个动态库,就可以分享它的全部功能。

而且动态库的尺寸也相当小。

2. 独立性。

SQLite 数据库的核心引擎不依赖第三方软件,使用它也不需要“安装”所以在部署的 使用能省去不少麻烦。

3. 隔离性 SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件内,方便管 理和维护。

4. 跨平台性 SQLite 数据库支持大部分操作系统,除了我们在电脑上使用的操作系统之外。很多手机 操作系统童颜可以运行,比如 Android、Windows Phone、Symbin、Plam、IOS 等。

5. 多语言接口 SQLite 数据库支持很多编程语言接口,比如 C/C++、Java 等,得到很多开发者的喜爱。

6. 安全性 SQLite 数据库通过数据库级上的独占性和共享锁实现独立事务处理。

这就意味着多个进 程可以在同一时间从同一数据库读取数据, 但只有一个可以写入数据。

在某个进程或线程向 数据库执行写入操作之前,必须取得独占锁。在发出独占锁后,其他的读或写操作将不会在 发生。 3.3.3 数据库表结构 首先创建数据库,在数据库中创建表用来存储联系人数据,其中包括联系人姓名、手机 号、QQ、地址等联系方式。 第四章 系统详细设计 4.1 联系人浏览模块 进入手机通讯管理软件后, 看到的第一个界面是联系人列表界面。

该列表是由 ListView 控件生成的,打开数据库(如果数据库不存在则创建数据库,并创建数据表) ,查找数据库 中所有的联系人,并把联系人姓名和移动电话号码这两项填充到 ListView 的 adapter 中。

每一行显示一个联系人的姓名和手机号码, 联系人的显示的顺序是根据插入数据库的顺序显 示的。点击某个联系人会进入查看联系人界面,可以查看联系人的详细信息,对联系人进行 13 重庆理工大学毕业论文 基于 Android 的通讯录软件 编辑、删除、拨打电话发送短信等。联系人浏览界面如图 6 所示: 图 6 联系人浏览界面 点击 MENU 按钮时,就会显示主菜单项,其中包括:添加、查找、关于和退出。

点击添加菜单,会进入添加联系人界面,可以输入联系人相关信息,完成联系人添加功 能。点击查找菜单,会进入联系人查找界面,可以进行联系人查找,搜索想要找的联系人。

点击关于,查看该软件的系统版本号等详细信息,点击退出菜单,则会退出该软件。主菜单 如图 7 所示: 14 重庆理工大学毕业论文 基于 Android 的通讯录软件 图 7 主菜单项 长按列表的某一行时,会弹出长按菜单,其中包括:查看联系人、编辑联系人、删除联 系人。

点击查看联系人菜单会进入查看联系人界面。

点击编辑联系人菜单会进入编辑联系人 编辑界面。点击删除联系人时,会弹出对话框,询问是否删除联系人,点击确定,则从数据 库中删除该联系人。长按菜单如图 8 所示: 15 重庆理工大学毕业论文 基于 Android 的通讯录软件 图 8 联系人浏览界面长按菜单 4.2 查看联系人模块 在联系人浏览界面点击某个联系人,则会跳转到该界面。该界面使用 TextView 把从数 据库中调出的联系人的详细信息显示出来,这里面包括联系人姓名、手机号、地址等详细信 息。在该 Activity 中添加了五项菜单,其中包括:返回列表、删除联系人、编辑联系人、呼 叫联系人、发短信给联系人。点击返回列表菜单项,会回到联系人浏览界面。点击删除联系 人菜单项,会从数据库中删除联系人,并返回到联系人浏览界面。点击编辑联系人菜单项, 会跳转到联系人编辑界面, 可以对联系人信息进行修改。

该软件实现了给联系人拨打电话和 发送短信的功能。查看联系人界面如图 9 所示: 16 重庆理工大学毕业论文 基于 Android 的通讯录软件 图 9 查看联系人界面 4.3 编辑联系人模块 编辑联系人界面使用 EditView 控件显示并修改联系人的详细信息。联系人的所有信息, 处于可编辑状态,手机号和座机号的 EditView 设定为只能输入数字。修改完信息后点击确 定按钮,触发确定按钮点击监听事件,从而对数据库中该联系人的信息进行更新, 然后自 动返回联系人浏览界面。

点击取消按钮会返回联系人浏览界面。

联系人编辑界面设置了返回 列表菜单和删除联系人菜单。点击删除联系人,则会从数据库中删除该联系人。点击返回列 表菜单,会返回到联系人浏览界面。编辑联系人界面如图 10 所示: 17 重庆理工大学毕业论文 基于 Android 的通讯录软件 图 10 编辑联系人界面 5.4 查找联系人模块 这里采用的查找方法是 SQL 模糊查询, 可以只输入联系人姓名中的一部分, sql 语句 在 中联系人姓名的前后添加“%” ,即可查找到所有包含该部分的联系人,并在 ListView 中显 示出来所有的联系人的姓名和手机号码。 18 重庆理工大学毕业论文 基于 Android 的通讯录软件 图 11 查找联系人界面 4.5 关于 点击关于,可以查看该软件的系统版本号等情况。 第五章 系统测试与调试 5.1 测试目的 程序测试就是在程序投入运行前,对程序的需求分析、设计规格说明和编码 的最终复审,是保证程序质量的关键步骤,如果要给程序测试下定义,可以这样 讲,程序测试时为了发现错误而执行程序的过程。

测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错 误。在开发大型软件系统的过程中,需要面对错综复杂的问题,因此,在软件生 19 重庆理工大学毕业论文 基于 Android 的通讯录软件 存周期的每个阶段都不可避免地会产生错误。

编程人员力求在每个阶段结束之前 通过严格的技术审查,尽可能早的发现并纠正错误。

5.2 程序调试 程序开发中难免会遇到各种问题,如语法的错误,程序设计的错误。程序开 发是一个循序渐进的过程。开发完一个功能,需要及时的测试,待功能测试通过 后,方可以进行下一个功能的开发,这样可以保证程序的质量。在程序开发中, 使用了打印调试信息,debug 调试等方法。

5.3 测试的主要内容 为了保证测试的质量,测试过程包括:代码审查、单元测试、集成测试、确 认测试以及系统测试。

代码审查 单元测试 代码审查为了发现代码中冗余的部分,不合理的部分。

单元测试(模块测试)是编写的一小段代码,用于检验被测代码 的一个很小的、很明确的功能是否正确。

1. 集成测试 集成测试是在单元测试的基础上, 测试在将所有的软件单元按照概要设计规 格说明的要求组装成模块、 子系统或系统的过程中各部分工作是否达到或实现相 应技术指标及要求的活动。

2. 确认测试 确认测试又称有效性测试。

有效性测试是在模拟的环境下,运用黑盒测试的 方法,验证被测软件是否满足需求规格说明书列出的需求。

3. 系统测试 系统测试是针对整个产品系统进行的测试, 目的是验证系统是否满足了需求 规格的定义, 找出与需求规格不符或与之矛盾的地方, 从而提出更加完善的方案。

(1)功能测试 经测试:该软件系统的添加联系人功能、查看联系人、编辑联系人、查找联 系人、拨打电话、发送短息功能皆正常。软件的质量可以达到保证。

(2)健壮性测试 经测试:该软件系统在异常情况下能正常运行的能力。如:直接退出,没有 点退出菜单,程序数据不会受到破坏,在配置较低的手机上运行。

(3)性能测试 经测试:该软件系统处理事务的速度快捷。正常该软件时,安装在手机上面 运行良好。 20 重庆理工大学毕业论文 基于 Android 的通讯录软件 (4)界面测试。

经测试:该软件系统的易用性较强,可操作性强,界面视觉效果而等。

5.4 测试用例 √ 测试通过; × 测试没通过 5.4.1 功能测试—添加联系人 角色 用例 添加联 系人 所有用 户 测试环 境 安卓模 拟器 测试概 述 验证用 户能否 添加联 系人到 SQLite 数据库 中 添加联 系人 所有用 户 摩托罗 拉 Milesto ne2 机 手 验证用 户能否 添加联 系人到 SQLite 数据库 中 点 Menu 选择添 加联系 人 正常添 加联系 人 到 添加成 功, 再次 启动软 件有之 前插入 数据 2011-10 -05 测试步 骤 点 Menu 选择添 加联系 人 预期结 果 正常添 加联系 人 到 实际结 果 添加成 功, 再次 启动软 件有之 前插入 数据 测试日 期 2011-10 -05 结论 未解决 问题 √ 在模拟 器环境 中无法 输入中 文 SQLite 数据库 中 √ 无 SQLite 数据库 中 5.4.2 功能测试—查看联系人 角色 用例 查看联 系人 所有用 户 测试环 境 安卓模 拟器 测试概 述 验证用 户能否 查看从 列表中 选择的 用户 查看联 系人 所有用 户 摩托罗 拉 Milesto ne2 机 手 验证用 户能否 查看从 列表中 选择的 用户 在用户 列表中 点击其 中一个 联系人 能够查 看到该 联系人 的详细 信息 查看到 该联系 人的详 细信息 2011-10 -05 测试步 骤 在用户 列表中 点击其 中一个 联系人 预期结 果 能够查 看到该 联系人 的详细 信息 实际结 果 查看到 该联系 人的详 细信息 测试日 期 2011-10 -05 结论 未解决 问题 √ 在模拟 器环境 中无法 输入中 文 √ 无 21 重庆理工大学毕业论文 基于 Android 的通讯录软件 5.4.3 功能测试—删除联系人 用例 角色 测试环 境 删除联 系人 所有用 户 安卓模 拟器 测试概 述 验证用 户能否 删除联 系人从 SQLite 数据库 中 删除联 系人 所有用 户 摩托罗 拉 Milesto ne2 机 手 验证用 户能否 删除联 系人从 SQLite 数据库 中 测试步 骤 在联系 人详细 页面点 Menu , 选择删 除该联 系人 在联系 人详细 页面点 Menu , 选择删 除该联 系人 正常删 除联系 人 从 删除成 功, 再次 启动软 件没有 该数据 2011-10 -05 预期结 果 正常删 除联系 人 从 实际结 果 删除成 功, 再次 启动软 件没有 该数据 测试日 期 2011-10 -05 结论 未解决 问题 √ 无 SQLite 数据库 中 √ 无 SQLite 数据库 中 5.4.4 功能测试—修改联系人 用例 角色 测试环 境 修改联 系人 所有用 户 安卓模 拟器 测试概 述 验证用 户能否 修改联 系人从 SQLite 数据库 中 测试步 骤 在联系 人详细 页面点 Menu , 选择修 改, 进入 修改页 面进行 修改 修改联 系人 所有用 户 摩托罗 拉 Milesto ne2 机 手 验证用 户能否 修改联 系人从 SQLite 数据库 中 在联系 人详细 页面点 Menu , 选择修 改, 进入 修改页 面进行 修改 正常修 改联系 人 从 修改成 功, 再次 启动软 件, 之前 修改的 数据仍 在 2011-10 -05 预期结 果 正常修 改联系 人 从 实际结 果 修改成 功, 再次 启动软 件, 之前 修改的 数据仍 在 测试日 期 2011-10 -05 结论 未解决 问题 √ 无 SQLite 数据库 中 √ 无 SQLite 数据库 中 22 重庆理工大学毕业论文 基于 Android 的通讯录软件 5.4.5 功能测试—查询联系人 用例 角色 测试环 境 查询联 系人 所有用 户 安卓模 拟器 测试概 述 验证用 户能否 根据模 糊查找 功能查 询到联 系人 测试步 骤 在联系 人列表 中点击 查询, 进 入查询 界面, 输 入所想 查询的 联系人 (联系人 的任意 一个名/ 字即可) 查询联 系人 所有用 户 摩托罗 拉 Milesto ne2 机 手 验证用 户能否 根据模 糊查找 功能查 询到联 系人 在联系 人列表 中点击 查询, 进 入查询 界面, 输 入所想 查询的 联系人 (联系人 的任意 一个名/ 字即可) 查询到 所输入 即使是 只输入 了名或 字 查询到 所输入 即使是 只输入 了名或 字 2011-10 -05 预期结 果 查询到 所输入 即使是 只输入 了名或 字 实际结 果 查询到 所输入 即使是 只输入 了名或 字 测试日 期 2011-10 -05 结论 未解决 问题 √ 在模拟 器环境 中无法 输入中 文 的数据, 的数据, √ 无 的数据, 的数据, 5.5 系统的后期维护与升级 本系统在运行过程中可能会伴随出现各式各样的软硬件问题, 这就需要进行系统的软件 和硬件维护,系统升级需要专业的技术开发人员对该系统进行升级。 23 重庆理工大学毕业论文 基于 Android 的通讯录软件 5.6 系统运行界面 24 重庆理工大学毕业论文 基于 Android 的通讯录软件 总 结 对于安卓,由于平时对手机这方面很感兴趣,所以在学习的时候,带着兴趣 去学习的。

当然, 对一门新的 android 开发领域, 在学习过程中, 比想象要困难。

为了在短时间内投入到开发,完成项目。需要花大量的时间去学习,动手编程。

于此我在书店买了一本 android 开发的书籍,照着上面一个一个练习,以最快的 速度学习 Android,掌握开发中的各种控件的使用,理解了 Android 开发框架, 学习 SQLite 数据库的使用。

在开发当中遇到了很多困难,仍然遇见了很多困难,有时候,也会因为个别 问题卡壳了很久,迟迟没能解决,到处在网上查找答案,或者向同学求助等方式 寻求解决方案。

经过努力这些问题都一一解决了, 当这些问题一一被我解决之后, 那种自信感就更加上升,对于安卓通讯录的开发更加有信心。

这次综合课程设计是对自己的一个挑战,对于安卓,从来没有接触过的我, 在经过努力,最终一步步都解决了。完成综合课程设计设计,让我受益匪浅,我 相信它会对我以后的人生和工作起到很好的促进作用,有着积极影响。 25 重庆理工大学毕业论文 基于 Android 的通讯录软件 致 谢 我要由衷地感谢张老师的悉心指导下完成的。尤其是在课程设计答辩前期, 张老师给予我的课程指导起了非常大的指引作用, 张老师对安卓技前景的描绘让 我对安卓系统充满了好奇,对我后期的毕业设计指明了方向。

由于张老师长期在实验室从事研究指导,因此对各种项目有着的深切理解, 对工作, 对学习的严谨作风让我获益匪浅。借此对张老师表示崇高的敬意和衷心 的感谢! 26 重庆理工大学毕业论文 基于 Android 的通讯录软件 参 考 文 献 [1] 牛丽平、郭新志、宋强、杨继萍, 《UML 面向对象设计与分析》 ,清华大学出版社, 2007 [2] 李刚, 《疯狂 Java 讲义》 ,电子工业出版社,2008 [3] 程峰, 《JAVA 核心技术》 ,机械工业出版社,2007 [4] 王鹏, 《JAVA 语言程序设计》 ,大连理工出版社,2005 [5] 孙一林, 《JAVA 语言程序设计》 ,清华大学出版社,2002 [6] 赵康, 《JAVA1.1 使用大全》 ,电子工业出版社,2001 [7] 吴宏玉, 《JAVA 编程设计基础》 ,清华大学出版社,2002 [8]李磊, 《JAVA 大学实用教程》 ,机械工业出版社,2004 [9]张浩, 《JAVA 编程实例教程》 ,清华大学出版社,2003 [10]王永奎, 《JAVA 核心技术》 ,大连理工出版社,2005 [11]Rogers Cadenhead(美). Java 编程入门经典.梅兴文译.第 4 版.北京:人民邮 电出版社,2007 [12]Bruce Eckel(美). Thinking In Java.英文第 4 版.北京:机械工业出版社,2007 27