安卓电子名片管理器的设计与实现

news2024/11/26 19:50:13

毕业设计

安卓电子名片管理器的设计与实现


诚信申明

本人郑重声明:本设计(论文)及其研究工作是本人在指导教师的指导下独立完成的,在完成设计(论文)时所利用的一切资料均已在参考文献中列出。

本人签名: 年 月 日


毕业设计(论文)任务书

毕业设计(论文)题目: 安卓电子名片管理器的设计与实现

1.课题意义及目标

当今社会,社交频繁,名片的需求量非常大。传统名片一般都是纸质的,看似简单,但要经过多道工序才能到使用。印刷方式、印刷难易、印刷用纸选择;名片的具体内容;设计大致思路;包括校稿都是需要用户考虑的因素,并且易丢失,难管理。当人们因各种因素需要更换名片信息的时候,需重新制作名片,难免造成了资源浪费。

2.主要任务

系统采用MVC架构,实现技术需用Java语言编写。

设计详细申请流程和软件运行流程

服务器的设计,实现永久备份恢复电子名片夹功能。

用户可以互相交换电子名片。

用户能够拍照纸质名片获取名片文字信息,识别及生成二维码名片。

3.主要参考资料

[1] 郭宏志. Android应用开发详解[M].电子工业出版社,2010.

[2] 高峰. 二维条形码手机识别系统的设计与实现[D].北京邮电大学,2008.

[3] 夏伟. 电子名片掘金新商务时代[J] .大众商务, 2007,15:01-02.

[4] 阿离. Android5.0棒棒糖轻度体验[J].电脑迷,2015,01:01-02.

4.进度安排

设计(论文)各阶段名称起 止 日 期
1需求分析:基于任务说明,查阅Android资料3月3日至3月13日
2概要设计:依据需求设计电子名片整体方案3月14日至3月31日
3详细设计:分模块依次实现电子名片各项功能4月1日至5月10日
4测试维护:对软件进行测试,记录测试用例。5月11日至5月21日
5设计论文:依据相关要求,完成论文写作6月01日至6月12日

审核人: 年 月 日

安卓电子名片管理器的设计与实现

摘 要

随着社会各行业的不断发展,面对种类繁多的社交名片,面对面的交换纸质名片已经很难跟上现代化、无纸化管理的步伐,而当今计算机和智能手机的飞速发展弥补了这些缺陷,运用现代化手段进行科学管理,已经成为名片交换和保存亟待解决的课题之一。

本软件以Eclipse为开发工具,利用Java语言,通过对Android平台的系统架构和应用程序进行学习,设计出一款基于Android的电子名片管理软件。本软件实现的功能不仅包括电子名片的添加、修改、删除、查询功能,而且实现了拍照识别纸质名片,扫描识别二维码名片,注册登录,互传分享电子名片,备份和恢复电子名片夹等功能,满足用户对电子名片夹的需求。本软件的设计遵循标准的开发流程,首先进行需求分析,然后确定电子名片夹的功能,再编写程序的代码,调试程序,运行程序,并对程序进行优化完善。本软件利用Android提供的各种组件对界面进行设计,能够很好地支持用户体验。

关键词:Android,电子名片,二维码

The Design and Implementation of Electronic Business Card Manager Based on Android

Abstract

With the continuous development of social various sectors, social business card has more and more kinds. Face-to-face exchange of paper card is hard to keep up with the pace of the modernization and paperless management.The rapid development of computers and smart phones makes up for these deficiencies. The use of modern means of scientific management has become one of the most important topics to exchange business cards and save.

The software bases on Eclipse,uses the Java language. Designers study by the Android platform’s system architecture and application and then design an electronic business card management software bases on Android. The functions of the software include not only the addition,modification, deletion, search functions of e-card,but also achieve a photograph identification paper business card, a two-dimensional code scanning identification cards, registration and landing,sharing electronic business cards, backup and restore electronic business card. These functions will satisfy users’the needs of Electronic card holder. The software is designed following the standards of development process. It begins with a needs analysis, and then determines the function of electronic business card holder, and then writes program code, debugs, runs the program, and optimizes the program. Designing the interface by using the various components of the Android, the software can greatly optimize the users’experience.

Keywords: Android,Electronic business card,Two-dimensional code

目 录

1绪论11

1.1引言11

1.2课题研究背景11

1.2.1课题背景11

1.2.2研究方法22

1.2.3研究工具33

1.3 设计意义33

1.4 国内外研究现状44

2可行性研究66

2.1技术可行性66

2.1.1硬件可行性66

2.1.2软件可行性66

2.1.3人员可行性66

2.2经济可行性66

2.2.1 经济效益66

2.2.2 社会效益66

2.3操作可行性77

2.4法律可行性77

3需求分析88

3.1概述88

3.1.1 用户特征88

3.1.2 条件和限制88

3.2功能需求88

3.2.1 用例图88

3.2.2 功能描述99

3.3性能需求1111

3.3.1 数据准确性1111

3.3.2 时间特性1111

3.3.2 适应性1111

4系统设计1212

4.1技术架构设计1212

4.2功能概要设计1313

4.3功能详细设计1515

4.4数据库设计1616

5软件实现1818

5.1服务端数据库连接实现1818

5.2软件功能实现1818

5.2.1用户注册登录模块实现1818

5.2.2侧边导航栏模块实现2121

5.2.3电子名片夹(万友夹)模块实现2222

5.2.4同步模块实现2626

5.2.5欢迎引导模块实现2828

5.2.6拍照纸质名片识别信息功能2929

5.2.7二维码的生成和识别3030

6软件测试3232

6.1软件测试概述3232

6.1.1软件测试目的3232

6.1.2软件测试的原则3232

6.2软件测试环境3333

6.3测试用例3333

6.3.1功能测试3333

6.4测试结论3535

7结论与展望3636

7.1结论3636

7.2完成内容3636

7.3尚存在的问题3737

7.4展望3737

参考文献3838

致谢3939

1绪论

1.1引言

生活节奏日益增快的今天,网络已经深入社会,信息成为了非常重要的资源。人们对信息的认识和运用渐渐广泛。从传统的信件邮递发展成Email,从逛商场购物到网上下单送货上门,传统的热弄信息管理系统已经远远不能满足快节奏、高效率的现代生活需要,落后的管理技术阻碍了信息的交流与共享。同时,网络技术的普及,如何通过网络来实现对科技信息的远程访问与远程管理,从而实现对信息的交流与共享成为当务之急。

随着社会各行业的不断发展,面对种类繁多的社交名片,面对面的交换纸质名片已经很难跟上现代化、无纸化管理的步伐,而当今计算机和手机通讯技术的飞速发展弥补了这些缺陷,运用现代化手段进行科学管理,已经成为名片交换和保存亟待解决的课题之一。

电子名片管理器可以实现名片信息的绿色无纸化管理和保存。伴随着互联网的蓬勃发展,越来越多的人将个人信息与Internet融合在一起,当人们因各种因素需要更换名片信息的时候,需要重新制作名片,难免造成了资源浪费。本系统就是在这样一个社会背景下开发的。

本软件可以极大的提高名片管理效率,在设计时充分考虑了用户的方便与灵活性,既能实现对名片夹信息的高效管理和控制,又能满足用户对二维码电子名片的需求。最重要的是,它颠覆了传统通讯录方式和名片的绿色无纸化管理。

1.2课题研究背景

1.2.1课题背景

随着社会发展的日新月异,商业来往日渐广泛。人与人之间的交往也日益频繁,于是,人们手中便出现了名目繁多的通讯录、名址录、名片夹等对好友或者客户进行管理的工具,但是,一张张名片上的信息虽然不多,却占据了很大的空间;同时,这些传统的手动管理方式存在着不易更新、不易存放、容易丢失、难以备份等重大缺陷;而建立自己的电子文档对名片进行管理虽然客服了以上的缺点,但是查询效率低,特别是当数据量十分庞大时,劣势更加明显。随着商务通的出现,虽然实现了可构造查询条件的名片电子化管理,但价格昂贵,难以在广大客户中进行全面普及。随着安卓智能手机的普及,因此开发一个既可以存储信息,又具有更新、查询等功能,同时价格又能为广大消费者接受的多功能安卓电子名片管理器就显得十分必要。

1.2.2研究方法

本软件采用三层架构MVC模式进行设计。MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,所谓MVC模式,是用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

Model(模型)是应用程序中用户处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。

View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。

Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

MVC 分层有助于管理复杂的应用程序,可以在一个时间内专门关注一个方面。例如,可以在不依赖业务逻辑的情况下专注于视图设计。同时也让应用程序的测试更加容易。

而本软件也正是遵循MVC模式的核心思想来进行工作的,用户通过多种方式把好友的名片信息存储在数据库中,用户每次进入电子名片夹中,将会从数据库中把好友的全部信息读取出来,显示在视图布局中,用户可以点击每张电子名片上的相应信息去查看或者联系好友。

1.2.3研究工具

软件开发工具为Eclipse,开发环境:jdk1.7,开发语言:java。

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。其特点:

(1)从编写、查错、编译、帮助等等各方面为Java语言贴身定做。

(2)可无限扩展的强大插件功能。

(3)众多公司、厂商、组织的鼎立支持。

(4)开放,自由,免费。

后台数据库为MySQL,优点主要有:它使用的核心线程是完全多线程,支持多处理器。它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞。MySQL可以工作在不同的平台上。支持C、C++、Java、Perl、PHP、Python和TCL API。

1.3 设计意义

当今社会是一个信息化的社会,在这个信息高速流通的社会中,网络成了一种必不可少的渠道。它遍布全球,与人们的生活越来越密切。

眼下,每个人由于交友需要会有多个账号信息,多个手机号码。而手机用户又需要对应的软件来保存这些信息,不方便把一个人的信息统一起来。基于这些需求和现状,设计一款电子名片夹尤为重要,此款软件是一款集所有好友信息于一身的应用型软件。在它的每张电子卡上,都保留了传统手机通讯录的功能,同时加入了QQ、微信等各种新兴通讯方式的信息,既可以像纸质名片一样简单直观的查看好友信息又可以取代纸质名片。

此款电子名片夹软件最大的特点就是把好友各种与联系方式有关的信息以电子卡片形式展示出来。一应俱全的好友信息展示卡,永久的云备份存储,能让用户更快捷的掌握联系人好友的信息。只需一个账号,便可进行信息的互传与分享。既保证绿色无纸化,又响应国家的节能环保政策。“颠覆传统通讯录,告别纸质名片”。

根据课题研究的需求分析和市场上所流行的软件的流程,本软件基于网页的方式进行访问,采用MVC模式。功能上涵盖电子名片保存,共享互传的整个过程,并具有以下优点。

无纸化。从名片信息的保存、修改、名片的互传共享等均存储在数据库中,无需印制纸质名片,电子名片夹可以云备份到服务端也无需资料夹等存放工具。

不受时间限制。以往在名片交换的是时候,不管是名片制作或者交换时间的限制非常大,使用电子名片,用户之间可以随时随地进行名片的互传。

不受地点限制。在目前交换名片的时候,需要当面进行交换,使用电子名片,只要用户有手机,便可以轻松进行名片的在线查看、编辑、修改、互传名片。

数据化。名片所有相关数据均存储在数据库中,在进行名片信息存储、电子名片查询、名片交换互传时,相关数据均可在软件中获得。

保密化。通过设计一个是否要开启互传交换名片开关,用户可以根据自己的实际情况,设置是否让他们获取自己的电子名片,有效的保护用户隐私和信息安全。

1.4 国内外研究现状

目前国内做的比较好的一款Android电子名片管理器是名片全能王,可快速、精准识别多种语言名片,自动存入通讯录;为名片添加图文、视频,让名片立体展示个人、产品、公司。随时更新的商务人脉库,帮助拜访客户,进行客户关系管理。但是它有很大的缺点,电子名片管理还是脱离不了传统通讯录的束缚,不能快捷的看到用户的个人信息,操作比较繁琐;另外电子名片信息简单,缺少QQ、微信、微博等新兴社交方式。

今年备受关注的Android5.0 Lollipop[5]棒棒糖 被Google发布,而以“卡片”为设计原型的Material Design[5],希望在虚拟世界中模拟出物理世界当中纸质材质的感觉,但又具备灵活伸缩、扩展的特性,让它显得既灵动,又整齐。Google在虚拟世界里构建了几个突出,让卡片、按钮等视觉元素铺在上面,而且还运用阴影以及空间来突出内容。Android5.0原声的通讯录则完全采用这样的设计,使得通讯录更具人性化,纸质化,电子卡片化。

文献[5]指出,Android5.0最大的变化在于UI用户界面的设计,全新的UI界面采用了“Material Design”设计规范。这也是Android5.0最重要的一部分,Lollipop标志着Google在用户界面上已经完全拥抱了Material Design的理念,新的用户界面更加简洁,色彩更加丰富,动画效果更加合理生动,同时加入实时阴影的3D视图,更多地使用卡片风格的显示效果,这样的效果就像是翻阅一本赏心悦目的画册,在明亮纯净的底色之上是简单而优雅的文字,让上面的内用有一种跃然纸上的感觉。


2可行性研究

2.1技术可行性

2.1.1硬件可行性

软件的硬件配置要求:支持Android操作系统的嵌入式平台设备,支持wifi功能,带触摸屏功能。

2.1.2软件可行性

本软件是基于Android系统的一款手机应用,在Android4.0及以上版本的安卓智能手机上运行。

2.1.3人员可行性

对Java开发语言相对比较熟悉

熟悉Eclipse的操作

熟悉MySQL和Android SQLite数据库并有过开发经验

2.2经济可行性

2.2.1 经济效益

本软件适用于商务人士等交换名片,管理名片等情况,为提高工作效率、降低人力物力成本为目的,间接方面能带来一定的经济收益,并且本软件的开发成本相对较低,无需购置额外硬件支持,总体来说效益远大于成本。

2.2.2 社会效益

本软件主要服务于社交频繁的商务人士,在提高工作效率的同时并能实现名片交换和管理全程“绿色无纸化”,是一种快捷、新型、经济的处理手段,响应国家的节能环保政策。

2.3操作可行性

用户在首次进入本软件的时候,可以通过浏览欢迎引导界面之后便能够熟练掌握本软件的主要功能和使用操作;另外软件也加入了目前市场主流的软件中侧边导航元素,用户可以一目了然地看到软件的四大模块,并且根据提示,快速上手使用。

2.4法律可行性

本软件是在老师的指导下完全由本人设计和完成。提交的毕业设计《安卓电子名片管理器的设计与实现》及相关设计内容是本人在指导教师指导下独立研究、编写、完成的,在开发时所利用的相关资料均已在参考文献中列出。


3需求分析

3.1概述

3.1.1 用户特征

使用本软件的用户群非常广泛,它非常适用于具有如下特点的人员:

(1)工作中与外界联系非常频繁;

(2)可无限工作比较繁忙,惜时如金;

(3)与外界的联系成为开展工作的关键因素,信息丢失或损坏可能带来严重损失;

(4)社交账户多,需要账户信息管理。

3.1.2 条件和限制

考虑到本软件使用的广泛性,在设计时应注意软件可适配目前市场上主流的480*800、720*1280、1280*1920三大屏幕分辨率的安卓智能手机。

因为本软件管理的信息属个人隐私信息,必须注意信息的安全防范。

同时应以标准的数据形式来实现软件功能,以方便数据的共享。

3.2功能需求

3.2.1 用例图

用例图是由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的动态视图。用例图展示了用例之间以及同用例参与者之间是怎样相互联系的。用例图用于对系统、子系统或类的行为进行可视化,使用户能够理解如何使用这些元素,并使开发者能够实现这些元素。

本软件的用例图如图3.1会员用例图和图3.2游客用例图所示:软件的使用人员主要包括2种:会员和游客。

会员的功能主要有:浏览电子名片夹信息功能;登录功能;登录后可以对个人信息进行管理,包括生成二维码名片、获取用户专属ID号用于电子名片互传共享等;对电子名片信息进行管理,包括增加、删除、编辑、查询电子名片功能等;电子名片夹的云备份和云恢复功能;拍照识别名片功能;二维码名片识别和生成功能。

游客的功能主要有:注册成为会员的功能;浏览电子名片夹信息功能;电子名片信息管理功能;拍照识别名片功能;二维码名片识别和生成功能。

图3.1 会员用例图 图3.2 游客用例图

3.2.2 功能描述

根据用户特征分析以及用例分析,本软件主要包括12个功能模块,分别为:浏览功能,查看详细资料功能,电子名片信息管理功能(增加、删除、修改、查询功能),拍照识别纸质名片功能,二维码识别和生成功能,登录注册功能,电子名片夹云备份和云恢复功能,电子名片的互传共享功能,帮助功能。

(1)浏览功能

①以列表的方式列出所有的记录(每项记录只列出姓名、职位、单位、头像);

②可点击选定一项记录,下拉显示该记录的所有域。

(2)查看详细资料功能

显示用户选定记录的详细信息。

(3)查询功能

①用户可以通过姓名匹配查询;

②精确查询或模糊查询;

③单项查询或组合查询;

(4)增加功能

增加一条新的记录,四种方式:

①扫二维码添加;

②ID添加;

③拍照识别名片添加;

④手动添加;

(5)删除功能

删除一条记录,并且提供确认机制。

(6)修改功能

修改任意一条记录的所有域,其中姓名不能为空。

(7)拍照识别纸质名片功能

用户通过安卓手机拍照纸质名片,快速获取纸质名片信息,并保存为电子名片。

(8)二维码名片的生成和识别功能

软件可以通过用户输入个人信息后,在线生成自己的二维码名片,并可以让其他用户通过扫描添加。

(9)登录注册功能

对登录用户的身份进行验证,通过者可以使用软件云备份和云回复功能,以及挂载个人电子名片到云端供其他用户下载。

(10)电子名片夹的云备份和云恢复功能

用户可以把本地的电子名片夹数据在线备份到服务器中,更换设备或者丢失数据后,也可以在线恢复电子名片夹数据。

(11)电子名片的互传共享功能

用户之间可是通过互相扫描二维码交换电子名片,也可以通过用户账户ID一键获取对方电子名片,便捷绿色无纸化的互传共享。

(12)帮助功能

为用户提供帮助,快捷便捷了解软件功能和使用操作。

3.3性能需求

3.3.1 数据准确性

查询时应保证查全率,所有相应域包含查询关键字的记录都应能查到;

查询时应保证查准率,查到的记录应与给定的单项或组合查询条件完全匹配。

3.3.2 时间特性

一般操作的响应时间应在1-2秒内,对扫描二维码名片和拍照纸质名片的操作,以及电子名片夹数据的备份和恢复也应在可接受的时间内完成。

3.3.2 适应性

满足个人使用的需求;

对前面提到的运行环境要求不应存在困难。


4系统设计

4.1技术架构设计

安卓电子名片管理器选用MVC架构,使用Java语言。采用三层设计模式,通过Eclipse技术、JDBC技术、MySQl技术、SQlite技术、Servlet技术进行设计。系统三层设计架构如图4.1所示。

图4.1 软件三层架构

本软件技术架构具体设计如图4.2所示。

在本软件中,软件数据主要由实体层实现面向对象思想中的“封装”,核心实体类设计了用户注册实体类RegisterActivity、编辑信息实体类PersonInfoActivity、名片夹实体类MainFragment、个人卡实体类PersonalCenterFragment、云同步实体类ShareFragment、设置实体类SettingFragment等。

系统表示层主要由xml技术实现,核心页面上有用户登录页面login_fragment.xml、用户注册页面register_fragment.xml、电子名片夹页面main_fragment.xml、个人卡页面person_center_fragment.xml、设置页面setting_fragment.xml、云同步页面share_card_fragment.xml等。

图4.2 软件技术架构

4.2功能概要设计

根据安卓电子名片管理器的需求分析和功能设计分析,软件取名为万友,即万千朋友,也指这款软件包括一个好友所有的联系方式,每张电子名片上可以浏览到好友相关的联系方式,同时方便用户互相推荐使用 。

安卓电子名片管理器(以下简称万友)的功能概要设计,如图4.3所示。

图4.3 功能概要设计图

根据功能概要设计图得知,本软件需设计四个模块:万友电子名片夹模块、个人电子卡模块、同步模块、设置模块。

(1)万友电子名片夹模块

万友电子名片夹模块主要包括添加、编辑、删除电子名片(下称万有卡)、电子名片列表四个子模块。

在论文的功能需求分析中,四种添加电子名片的方式是本设计的重点也是难点,其中的一种方式是拍照识别名片,用到的是OCR光学识别字符技术;另外一种是通过ID添加,用户通过注册获得用户ID,这个ID是唯一标识用户身份的标志,在这里称为万友号,用户可以根据这个ID用来获取其他注册用户的电子名片信息。

(2)个人电子卡模块

个人电子卡模块主要包括编辑个人电子卡信息、个人电子卡展示、获取万友号、生成二维码信息四个子模块。

(3)同步模块

同步模块主要包括备份电子名片夹、恢复电子名片夹、上传个人电子名片三个子模块。

(4)设置模块

设置模块主要包括注册账户、登录账户、切换账户、帮助、推荐分享、万友号开关等六个子模块。

4.3功能详细设计

本软件涉及到的部分基础数据相关类图如图所示。

图4.4 名片信息封装类 图4.5 名片夹适配器类

图4.6个人卡类 图4.7 设置类

4.4数据库设计

本软件涉及到的相关数据库表设计如下所示。

(1)客户端电子名片信息资料表:该表主要用于存放名片的基本信息。设计如表4.1所示。

表4.1电子名片信息资料表(cardmsg)

字段名名称类型
索引_id(unsigned)integer
姓名namevarchar(20)
职位postvarchar(20)
手机mobilePhonevarchar(20)
邮箱emlvarchar(20)
QQqqvarchar(20)
个人网址urlvarchar(20)

续表4.1电子名片信息资料表(cardmsg)

字段名名称类型
微博weibovarchar(20)
微信wechatvarchar(20)
公司名称companyvarchar(20)
座机号码telPhonevarchar(20)
地址addressvarchar(20)
头像保存路径headUrlvarchar(20)

(2)服务端用户管理表:该表主要用于存放用户的账户信息和基本信息。设计如表4.2所示。

表4.2服务端用户管理表(cardinfo)

字段名名称类型
用户号user_namechar10
密码pass_wordchar8
是否分享信息给其他用户isSharechar8
姓名namevarchar(20)
职位postvarchar(20)
手机mobilePhonevarchar(20)
邮箱emlvarchar(20)
QQqqvarchar(20)
个人网址urlvarchar(20)
微博weibovarchar(20)
微信wechatvarchar(20)
公司名称companyvarchar(20)
座机号码telPhonevarchar(20)
地址addressvarchar(20)

5软件实现

5.1服务端数据库连接实现

利用JDBC来实现对数据库的连接和一般处理。具体实现数据库连接的主要代码如下:

(1)调用Class.forName()方法加载驱动程序:

Class.forName("com.mysql.jdbc.Driver");

(2)定义数据库连接的地址,不同数据库连接地址不一样:

String mysqlURL="jdbc:mysql://localhost:port/dbname";

(3)调用getConnection()方法建立连接:

Connection conn=DriverMannager.getConnection(URL,"数据库用户名","数据库密码");

(4)使用createStatement方法创建Statement语句对象。

(5)执行数据库语句:Statement提供了executeQuery、executeUpdate和execute三个方法,分别用于查询语句、插入删除修改语句和通用语句(既可查询又可增删改)。

(6)对数据库返回的结果集ResultSet进行处理。

(7)关闭连接,释放资源。

5.2软件功能实现

软件界面设计整体色调朴素大方,标题栏深灰蓝色给人沉稳大方的商务感觉,符合本应用目标人群;底色则采用8%灰色,给人最舒适的视觉感受。侧边导航栏设计符合用户的使用习惯,方便用户操作使用。

5.2.1用户注册登录模块实现

(1)用户注册

软件注册界面如图5.1、5.2所示。

图5.1 注册(输入法不可见)界面 图5.2 注册(输入法可见)注册界面

注册界面各控件及其功能说明如表5.1所示。

表5.1注册界面各控件及其功能说明表

控件控件名称控件功能
万友号-EditText控件user_name_Et输入注册万友号(用户名)
密码-EditText控件pass_word_Et1输入注册密码
确认密码-EditText控件pass_word_Et2输入注册确认密码
完成-Button按钮ok_Bt完成注册

用户想使用软件的备份、恢复电子名片夹功能,需要先注册。注册时需要填写万友号即用户名,密码,确认密码,三项全部填写完成后并通过验证后,点击完成按钮进行注册验证,如果验证通过,则提示注册成功并跳转到登录界面,如果认证失败则提示错误信息。

注册功能的逻辑实现为:客户端获取用户的输入内容,并通过HttpGet方式把用户输入的万友号和密码发送给服务器Servlet,服务器获取客户端传送过来的万友号和密码,从数据库中查询万友号是否被注册过,如果没有找到相应的数据,则认为注册成功,返回注册成功信息;如果找到有对应的记录,则认为注册失败,返回注册失败信息。客户端HttpResponse接收并解析服务端返回来的数据,通过判断返回数据提示用户是否注册成功。用户注册成功后,客户端自动跳转到登录界面。

(2)用户登录

软件登录界面如图5.3、5.4所示。

图5.3 登录(输入法不可见)界面 图5.4 登录(输入法可见)界面

登录界面各控件及其功能说明如表5.2所示。

表5.2登录界面各控件及其功能说明表

控件控件名称控件功能
万友号-EditText控件user_name_Et输入登录万友号(用户名)
密码-EditText控件pass_word_Et输入登录密码
登录-Button按钮login_Bt完成登录
新注册-Button按钮register_Bt跳转到注册界面

用户在注册成功后或者使用其他功能的时候,需要进行登录。用户输入万友号和密码,点击登录按钮进行登录认证,如果认证通过则可以使用软件的备份和恢复等功能,如果认证失败则会提示错误信息。

登录功能的逻辑实现与注册的逻辑实现类似,在此做简要概述,也是通过HttpGet方式携带登录参数并发出登录请求给服务器,服务器接受并处理请求数据并返回给客户端登录结果。

通过登录注册可以看到,软件做了人性化的设置,当用户使用登录注册功能时,当弹出输入法的时候,输入框会自动向上移动,避免遮输入法挡住输入框,使得用户输入更加快捷方便。

5.2.2侧边导航栏模块实现

软件侧边导航界面如图5.5所示。

图5.5 侧边导航界面

侧边导航界面各控件及其功能说明如表5.3所示。

表5.3侧边导航界面各控件及其功能说明表

控件控件名称控件功能
侧边导航-ResideMenu控件resideMenu控件显示侧边导航
万友夹-ResideMenuItem控件mainItem显示导航:万友夹
个人卡-ResideMenuItem控件personalCenterItem显示导航:个人卡
设置-ResideMenuItem控件settingItem显示导航:设置
同步-ResideMenuItem控件shareItem显示导航:同步

用户通过左滑或者点击显示侧边导航按钮可看到整款软件的四大部分:万友夹、个人卡、设置、同步。点击每个条目,加载相应的功能界面。

左侧导航主题主要是用的是ResideMenu框架控件,属于自定义控件,继承FrameLayout,通过自定义编写实现效果。

左侧导航四个子模块主题主要是用的是ResideMenuItem控件,属于自定义控件,继承LinearLayout,通过自定义编写实现效果。

核心代码如下:

resideMenu = new ResideMenu(this);

resideMenu.setBackground(R.drawable.menu_background);//设置背景

resideMenu.attachToActivity(this);

resideMenu.setScaleValue(0.6f);//设置侧滑左右显示比例

mainItem = new ResideMenuItem(this,

R.drawable.menu_item_icon_wanyoujia, "万友夹");

mainItem.setOnClickListener(itemListener);

personalCenterItem = new ResideMenuItem(this,

R.drawable.menu_item_icon_person, "个人卡");

personalCenterItem.setOnClickListener(itemListener);

settingItem = new ResideMenuItem(this,

R.drawable.menu_item_icon_set,"设 置");

settingItem.setOnClickListener(itemListener);

shareItem = new ResideMenuItem(this,

R.drawable.menu_item_icon_share,"同 步");

shareItem.setOnClickListener(itemListener);

5.2.3电子名片夹(万友夹)模块实现

软件电子名片夹如图5.6、5.7所示。

图5.6 万友夹界面1 图5.7 万友夹界面2

电子名片夹界面各控件及其功能说明如表5.4所示。

表5.4电子名片夹界面各控件及其功能说明表

控件控件名称控件功能
侧边导航按钮-ImageView控件img_ResideMenu点击显示侧边导航
搜索按钮-ImageView控件img_Search搜索电子名片
添加按钮-ImageView控件img_More显示4种添加电子名片方式
扫码按钮-ImageButton按钮barcode_Bt跳转到扫描二维码界面
万友号按钮-ImageButton按钮wanyoumaAdd_Bt跳转到万友号添加界面
拍照按钮-ImageButton按钮takephoto_Bt跳转到拍照名片界面
手动添加按钮-ImageButton按钮manuallyAdd_Bt跳转到手动添加界面
名片夹列表-ListView控件mListView显示电子名片夹列表
字母提示框-TextView控件dialog屏幕中间显示姓名首字母
字母列-SideBar控件sideBar屏幕右边显示姓名首字母列

用户在首次进入电子名片夹(万友夹)中时候,由于本地没有名片数据,界面显示无数据,并提示用户点击添加按钮img_More,点击后弹出选择框,分别为是扫码添加按钮barcode_Bt、万友号添加按钮wanyoumaAdd_Bt、拍照名片添加按钮takephoto_Bt、手动添加按钮manuallyAdd_Bt,用户根据相应的方式添加电子名片,万友夹界面如图5.8所示,四种添加方式如图5.9所示。

图5.8 万友夹界面 图5.9 四种添加方式

用户添加电子名片信息后,将名片信息保存到数据库电子名片信息资料表cardmsg中(可在表4.1中查看表结构),在重新加载万友夹界面的时候,从数据库中cardmsg表读取数据显示名片夹列表mListView上,显示万友夹效果,效果如图5.6所示。

核心代码如下:

impl_card = BeanFactory.getImpl(CardMsgDao.class);

new Thread(new Runnable() {

@Override

public void run() {

cardMsgPO = new CardMsgPO(0, name, post, mobilephone,

email, qq, url, weibo, wechat, address,company, "", tellphone, "");

if (photoUrl != null && !"".equals(photoUrl)) {

cardMsgPO.setHeadUrl(photoUrl);

}

long insert = impl_card.insert(cardMsgPO);

Message msg = mHandler.obtainMessage();

if (insert > 0) {

msg.what = 1;

msg.obj = impl_card.findAll();

mHandler.sendMessage(msg);

} else {

msg.what = 2;

mHandler.sendMessage(msg);

}

}

}).start();

用户点击万友夹中的每张电子名片时,会下拉弹出电子名片详情,用户可以查看好友的电子名片信息,并选择相应的联系方式与好友进行联系。

万友夹中每张电子名片点击下拉伸缩效果实现逻辑:

通过查询文献和网络检索后,基于第三方开源库 ListViewAnimation ,加入自定义设计和改编来实现带有点击下拉伸缩效果的电子卡片的效果,使用步骤如下:

(1)导入第三方库,设置Library

(2)创建MyExpandableListItemAdapter继承ExpandableListItemAdapter<CardMsgPO>,其中CardMsgPo是封装好的电子名片姓名,地址,电话等信息属性类,并且这些信息与本地SQLite的名片夹表连接和一一对应

(3)方法调用如下

mExpandableListItemAdapter=new MyExpandableListItemAdapter(

mContext,MyApplication.getInstance().currentCardList);

alphaInAnimationAdapter = new AlphaInAnimationAdapter(mExpandableListItemAdapter);

alphaInAnimationAdapter.setAbsListView(mListView);

mExpandableListItemAdapter.setLimit(1);

mListView.setAdapter(alphaInAnimationAdapter);

5.2.4同步模块实现

软件同步模块界面如图5.10所示。

图5.10 同步主界面

同步界面各控件及其功能说明如表5.5所示。

表5.5同步界面各控件及其功能说明表

控件控件名称控件功能
备份-RelativeLayout控件rl_upLoad备份万友夹
恢复-RelativeLayout控件rl_downLoad恢复万友夹
备份个人-RelativeLayout控件rl_share_person分享个人名片供其他用户下载

用户在使用上述三个功能前,必须先登录成功或者是登录成功状态的,如果没有登录进行认证,不能使用此功能。这三个功能实现方式类似,在此介绍恢复功能如何实现。

同步功能逻辑为:客户端查询本地数据库中所有电子名片信息和万友号,并通过HttpPost方式把用户的电子名片信息和万友号发送给服务器Servlet,服务器获取客户端传送过来的数据,从数据库中查询万友号是否被注册过,如果找到有对应的万友号,则把数据解析并插入到服务器用户管理表cardinfo中(表结构如表4.2所示),再返回是否同步成功信息。客户端HttpResponse接收并解析服务端返回来的数据,通过判断返回数据提示用户是否同步成功。

核心代码如下:

new Thread(new Runnable() {

@Override

public void run() {

CardMsgDao impl = BeanFactory.getImpl(CardMsgDao.class);

//查询数据库获得所有的电子名片信息

List<CardMsgPO> findAll = impl.findAll();

f (findAll.size() <= 0) {

mHandler.sendEmptyMessage(5);

impl.close();

return;

}

impl.close();

try {

HttpParams params = new BasicHttpParams();

// 超时设置

/* 从连接池中取连接的超时时间 */

ConnManagerParams.setTimeout(params, 1000);

/* 连接超时 */

HttpConnectionParams.setConnectionTimeout(params, 2000);

/* 请求超时 */

HttpConnectionParams.setSoTimeout(params, 4000);

DefaultHttpClient client = new DefaultHttpClient(params);

HttpPost post = new HttpPost(path);

List<BasicNameValuePair> nvps = new

ArrayList<BasicNameValuePair>();

nvps.add(new BasicNameValuePair("user_name", user_name));

nvps.add(new BasicNameValuePair("content", json_cards));

post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

HttpResponse response = client.execute(post);

HttpEntity entity = response.getEntity();

if (response.getStatusLine().getStatusCode() == 200) {

//解析上传成功数据

} else {

//解析上传失败数据

}

}

}).start();

5.2.5欢迎引导模块实现

软件欢迎引导界面如图5.11所示。

图5.11 欢迎引导界面

用户首次打开软件时会出现四个欢迎界面,是专门为用户设计的快速了解软件的 防骚扰功能、UI设计理念,使用户能在美感中查看软件特色并快速学习软件的使用方法。

欢迎引导界面各控件及其功能说明如表5.6所示。

表5.6欢迎引导界面各控件及其功能说明表

控件控件名称控件功能
滑动页面容器-ViewPager控件pager显示控制欢迎引导界面
页面适配器-GuideAdapter控件adapter装载欢迎引导数据

核心代码如下:

// 获取页面实例

pager = (ViewPager) findViewById(R.id.pager);

// 设置页面滑动监听器

pager.setOnPageChangeListener();

// 创建页面适配器

adapter = new GuideAdapter(this);

// 添加第一页

adapter.addPage(R.drawable.guide1);

// 添加第二页

adapter.addPage(R.drawable.guide2);

// 添加第三页

adapter.addPage(R.drawable.guide3);

// 添加第四页

adapter.addPage(R.drawable.guide);

pager.setAdapter(adapter);

5.2.6拍照纸质名片识别信息功能

本软件为用户提供了通过使用拍照纸质名片识别并快速获取信息的功能,使用的技术是光学字符识别技术。

软件拍照识别纸质名片信息功能如图5.12所示。

图5.12 拍照识别功能

光学字符识别(Optical Character Recognition,OCR),其工作原理为通过扫描仪、照相机等光学设备,将整页文本图像输入计算机,将文档资料转换成黑白点阵的图像文件,然后通过OCR识别软件将图像中的文本转换成文本格式,以便进一步信息处理。

实现OCR识别功能,需要转换拍摄的影响,将影像内的图像继续保存,将表格内的资料及影像内的文字一律变成计算机文字,减少影像资料的存储量,对于识别出的文字可再次分析与使用,节省了因键盘输入的人力和时间。从影像到结果输出,需要经过图像文字转换、图像的二值化、单字切割、文字特征抽取、对比识别、以及人工校正,最后将识别结果输出[9]。

本软件中,通过拍照纸质名片,获取名片上的文字信息正是通过以上原理实现的。实现逻辑为:当点击拍照后,调用Android系统照相机Camera.PictureCallback类,并重写onPictureTaken(byte[] data, Camera camera)方法,data为拍照的数据流,在该方法中启动线程recThread = new RecThread(data, handler, ocrManager);传入数据流,随后在线程中调用本地写好的libnamecardrec.so的方法,libnamecardrec.so是已经写好的C语言库,用来处理data数据,并返回经过识别处理后的数据。

5.2.7二维码的生成和识别

本软件为用户提供了二维码生成和识别功能,当前二维码名片已经开始流行,用户可以使用此功能,快速精准的获取名片信息。

二维码的生成和识别用的是QR Code编码解码jar包:ZXing。ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码。

ZXing库二维码识别主要的类以及这些类的作用:

CaptureActivity。这个是启动Activity 也就是扫描器。

CaptureActivityHandler 解码处理类,负责调用另外的线程进行解码。

DecodeThread 解码的线程。

com.google.zxing.client.android.camera 包,摄像头控制包。

ViewfinderView 自定义的View,扫描二维码时中间的扫描框。

二维码生成核心代码:

Hashtable<EncodeHintType, String> hints = new

Hashtable<EncodeHintType, String>();

hints.put(EncodeHintType.CHARACTER_SET, "utf-8");

// 把输入的文本转为二维码

BitMatrix bitMatrix = new QRCodeWriter().encode(text,

BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints);


6软件测试

6.1软件测试概述

6.1.1软件测试目的

因为在程序中往往存在着许多预料不到的问题,可能会被疏漏,许多隐藏的错误只有在特定的环境下才可能暴露出来。如果不把着眼点放在尽可能查找错误这样一个基础上,这些隐藏的错误和缺陷就查不出来,会遗留到运行阶段中去。如果站在用户的角度替他们设想,就应当把测试活动的目标对准揭露程序中存在的错误。在选取测试用例时,考虑那些易于发现程序错误的数据。

下面这些规则也可以看作是测试的目的或定义:

(1)测试是为了发现程序中的错误而执行程序的过程;

(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;

(3)成功的测试是发现了至今为止尚未发现的错误的测试。

从上述规则可以看出,测试的正确定义是“为了发现程序中的错误而执行程序的过程”。

6.1.2软件测试的原则

软件测试,从不同的角度出发会派生出两种不同的测试原则。从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷;从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求。

为了达到上述的原则,需要注意以下几点:

(1)应当把“尽早和不断地测试”作为开发者的座右铭。

(2)程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。

(3)设计测试用例时,应该考虑到合法的输入和不合法的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。

(4)一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。

(5)对测试错误结果一定要有一个确认的过程。一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。

(6)制定严格的测试计划,并把测试时间安排得尽量宽松,不要希望在极短的时间内完成一个高水平的测试。

(7)回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见。

(8)妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。

6.2软件测试环境

本软件采用Android虚拟机Genymotion。genymotion安卓模拟器其实不是普通的模拟器,严格来说,genymotion是虚拟机,被网传定义为模拟器,genymotion虚拟机希望能够给测试人员带来最好的Android模拟体验。选用测试虚拟机为Google Galaxy Nexus、Google Nexus S、Google Nexus 5三个屏幕分辨率的手机,由于需要对二维码扫描和拍照名片识别做测试,所以需要真机作为测试,选用真机为vtelX1手机。具体参数入下表6.1所示:

表6.1手机参数规格

手机Google Nexus SGoogle Galaxy NexusGoogle Nexus 5vtelX1
操作系统Android 4.1.1Android 4.1.1Android 4.4.4Android 4.2.2
手机尺寸5英寸5英寸5英寸5英寸
屏幕分辨率480*800像素720*1280像素1080*1920720*1280像素
API16161919

6.3测试用例

6.3.1功能测试

由于本软件的功能和子功能比较多,在此只列举出用户登录模块功能和用户备份电子名片夹模块功能的测试数据及结果。

(1)用户登录测试,如表6.2所示。

表6.2用户登录测试

方案操作期望结果测试结果结论
测试1输入用户名“a”密码“234”并且网络正常登录成功登录成功结果符合
测试2输入用户名“a”密码“234”并且网络异常提示网络异常网络异常结果符合
测试3输入用户名“a”密码“123”并且网络正常提示用户账户密码有误账户或密码错误结果符合
测试4输入用户名“b”密码“234”并且网络正常提示用户账户密码有误账户或密码错误结果符合

在本软件中,用户只有输入正确的用户名、密码并且网络正常的情况下才能使用本软件的备份万友夹功能、恢复万友夹功能、共享个人名片等功能。

(2)用户备份电子名片夹测试,如表6.3所示。

表6.3用户备份电子名片夹测试

方案操作期望结果测试结果结论
测试1登录情况:已登录本地网络状态:网络正常服务器连接情况:成功服务器响应状态:True提示备份成功备份成功结果符合
测试2登录情况:已登录本地网络状态:网络正常服务器连接情况:成功服务器响应状态:False提示备份失败备份失败结果符合
测试3登录情况:已登录本地网络状态:网络正常服务器连接情况:失败服务器响应状态:T/F提示用户服务器连接失败服务器连接失败结果符合
测试4登录情况:已登录本地网络状态:网络异常服务器连接情况:成功服务器响应备份状:T/F提示用户网络异常网络异常结果符合

6.4测试结论

使用了大量测试,测试了安卓电子名片管理器的基本功能,分不同权限的用户分别使用了不同的测试用例对软件进行了测试,测试结果与预期结果基本一致。


7结论与展望

7.1结论

本文主要根据电子名片管理器的研究背景与现状,完成对系统需求的分析,对功能进行设计,对模块进行实现。

在本系统中,选用MVC设计模式,使用Java语言,采用三层设计模式,通过Eclipse技术、JDBC技术、MySQl技术、SQlite技术、Servlet技术进行设计。本软件用户通过首次安装浏览欢迎引导界面后进入软件。进入软件后,用户先进入的是电子名片夹模块,并提示用户可以使用右上角的添加按钮,选择添加电子名片的四种方式:扫码添加、万友号添加、拍照添加、手动添加。用户根据添加提示,成功添加名片信息后,将数据保存到数据库中,并返回到电子名片夹中,此时名片夹中显示出电子名片列表,用户可以点击电子名片进行编辑、删除、查看并选择相应的联系方式与好友联系。用户通过左滑,可以看到侧边导航的四大模块:万友夹、个人卡、设置、同步功能模块,用户根据需求查看各个模块,根据提示使用电子名片夹备份、恢复、编辑个人电子名片、生成二维码名片等功能。至此,本软件的基本功能已经实现,基本完成了任务书中所列出的任务。

7.2完成内容

(1)万友夹(电子名片夹)模块

该模块的子模块:扫二维码码添加电子名片功能、根据万友号添加电子名片功能、拍照添加电子名片功能、手动添加电子名片功能、搜索功能、电子名片列表显示和管理功能,全部按照预期结果完成。

(2)个人卡模块

该模块的子模块:个人电子名片管理功能、获取万友号功能、生成个人二维码电子名片功能,全部按照预期结果完成。

(3)设置模块

该模块的子模块:注册登录功能、通知栏常驻功能、万友号开启功能、检查更新功能、推荐分享功能、关于模块、帮助模块,全部按照预期结果完成。

(4)同步模块

该模块的子模块:备份万友夹功能、恢复万友夹功能、个人名片分享功能,全部按照预期结果完成。

7.3尚存在的问题

在实现本软件的基本功能后,用户可以查看在电子名片上的QQ、微信等信息,通过点击可以直接复制账户跳转到相应的应用中,但是由于时间紧迫,还没有实现通过调用QQ、微信、微博API可以直接通过万友添加QQ好友,给QQ好友留言等。另外,拍照名片的识别率不够高,电子名片分组和搜索等功能有待优化。

7.4展望

在本文和本软件不断完善的过程中,安卓电子名片管理器(万友)将会成为一个更高效、更方便的软件。

随着手机通讯录功能的不断加强与完善,手机通讯录对于人们的意义,已不仅仅像记事簿一样显示通讯地址,而是向着个性化、人性化的方向发展。通讯录从无到有,从英文到中文,经过了十几年的发展历程,今后的发展趋势就是从通讯录发展为名片夹,也就是在一个人名下,可以存储座机、手机、单位、地址、电子邮件、QQ、微信、微博等内容。万友在电话薄的基础上,大大丰富了内容,同时结构也发生了革命性变化,而且随着手机的发展,相信万友会越来越受到社会各层人士的喜爱。


参考文献

[1] 郭宏志. Android应用开发详解[M].电子工业出版社,2010.

[2] 杨丰盛. Android应用开发揭秘[M].机械工业出版社,2012.

[3] 柯元旦. Android内核剖析[M].电子工业出版社,2011.

[4] 夏伟. 电子名片掘金新商务时代[J] .大众商务, 2007,15:01-02.

[5] 阿离. Android5.0棒棒糖轻度体验[J].电脑迷,2015,01:01-02.

[6] 陈晨. 揭秘Android5.0有史以来最开放的安卓[J].计算机与网络,2014,21:01-02.

[7] 朱怀中. 基于Android的手机OCR识别技术设计与实现[J].电子科技,2012, 25(09):01-05.

[8] 臧国全.文本数字化图像OCR识别的准确度测度实验与提高 [J].图书情报知识,2010,(3):62-66.

[9] 刘岩,薛涛,李周,等.图像处理和文字识别技术在手机软件自动化测试系统中的应用[J].现代电信科技,2009(7):50-53.

[10] 张白一. 面向对象的程序设计-JAVA[M].西安电子科技大学出版社,2008.

[11] 靳岩,姚尚朗. Google Android 开发入门与实战[M]. 北京: 人民邮电出版社, 2009: 1-12.

[12] 景保玉. 2010中国移动应用开发现状与趋势大调查[M]. 北京: 人民邮电出版社, 2011: 2-19.

[13] 公磊,周聪. Android的移动应用终端应用程序开发与研究[J]. 南昌: 计算机与现代化, 2008: 8: 85-89.

[14] 高峰. 二维条形码手机识别系统的设计与实现[D].北京邮电大学,2008.

[15] 王毅. 二维条码技术应用及标准化状况介绍[J].中国标准化,2006,(05):25-26.

[16] 周晓伟.二维条码识别技术研究[D].上海:上海交通大学,2007.

[17] KATO H,TANK.T.2D barcodes for mobile phones[A].Washing,DC:IEEE Computer Society,2005.48-55.

[18] RUSSA.Two dimensional bar codes[J].Adams Communications,2002,(04):15-18.


致谢

在论文写作期间,通过张麟华老师细心的指导,我顺利完成了毕业设计。从在我不知道如何开始着手的时候,到有了基本思路并构思出系统结构,张老师殷勤的指导让我醍醐灌顶,茅塞顿开。至此,没有张老师的指导,我的毕业论文也不会完成。在这里首先对张老师表示深深的谢意。

其次,也同样感谢同学和一切对我的关心和帮助的人们,在我写作期间,各位同学积极给予我帮助,帮助我查阅资料,调试软件,提出建议,舍友也为我提供了安静的学习氛围。也同样感谢太原工业学院和图书馆给了我一个自我学习的良好环境。

最后,感谢这四年来教过我的老师们,老师们对我的谆谆教诲。是他们给了我良好的专业知识,让我充实了大学四年,也为我的毕业设计积累了扎实的基础。

在临近毕业离校之际,在此再次感谢帮助过我的老师和同学们。谢谢你们!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90136.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

789. 数的范围

目录 题目&#xff1a;​编辑 题目思路&#xff1a; 解释&#xff1a; 方法&#xff1a; 对于k值所在左边界&#xff1a; 对于k值所在右边界&#xff1a; 代码详解&#xff1a; 题目&#xff1a; 链接&#xff1a;789. 数的范围 - AcWing题库https://www.acwing.com/prob…

【在SpringBoot项目中执行修改相册数据--MSC层】

目录 1. 编辑相册--执行修改--Mapper层 2. 编辑相册--执行修改--Service层 3. 编辑相册--执行修改--Controller层 1. 编辑相册--执行修改--Mapper层 执行修改相册使用已有的update()即可。 另外&#xff0c;还需要检查“提交修改的名称&#xff0c;是不是其它数据的名称”…

基于Pyqt5和PaddleOCR实现PDF转DOC

在上一篇文章《基于Pyqt5实现笔记本摄像头拍照及PaddleOCR测试》的基础上&#xff0c;继续做了个简单的扩展&#xff1a; 将PDF文档转换为DOC文档。 一、界面增加一个按钮&#xff0c;如下图&#xff1a; 二、源码修改 1、paddleocr.py文件直接拷贝 Github下载的源码PaddleO…

DBCO-PEG-Cholesterol,Cholesterol-PEG-DBCO,胆固醇-聚乙二醇-二苯并环辛炔

DBCO-PEG-Cholesterol属于高分子点击试剂&#xff0c;胆固醇PEG-DBCO是一种具有DBCO反应基团的亲脂性PEG衍生物。DBCO-PEG试剂在水缓冲液中具有快速动力学和稳定性&#xff0c;可用于标记具有高特异性和反应性的叠氮化物修饰的生物分子。 西安凯新生物科技有限公司​点击类化学…

写了个tooltip的切换动画,个人感觉比一些组件库的渐变动画好看

最近修改了个语言切换框的tooltip的切换动画&#xff0c;感觉比element-plus或者其他组件库的tooltip的切换动画好看一些&#xff0c;看起来比较灵动&#xff0c;下面将代码分享出来。 <!DOCTYPE html> <html lang"en"><head><meta charset&quo…

Linux内核调试技术之kprobes(1)基本原理与使用

概述 Linux kprobes技术是一种可以跟踪内核函数执行状态的轻量级内核调试技术&#xff0c;利用kprobes技术可以在运行的内核中动态的插入探测点&#xff0c;当内核运行到该探测点后可以执行用户预定义的回调函数&#xff0c;以收集所需的调试状态信息而基本不影响内核原有的执…

XXL-JOB详解(整合springboot)保姆级教程

文章目录XXL-JOB简介XXL-JOB是什么为什么需要任务调度平台&#xff0c;而不用传统的 Timer 与 Quartz为什么选择XXL-JOB&#xff0c;不选择elasticjob学习之前必看&#xff0c;少走很多弯路安装XXL-JOB一、源码编译&#xff08;Windows&#xff09;1、拉取源码&#xff1a;[xxl…

NR HARQ(二) CBG HARQ-ACK codebook

这篇开始看下HARQ-ACK codebook的相关内容&#xff0c;先看CBG-based HARQ-ACK codebook。那第一个关注点就是CBG 的划分规则&#xff0c;这部分内容主要在38.213 9.1.1章节中&#xff0c;PDSCH和PUSCH 的CBG 划分规则基本是一样的&#xff0c;这里以PDSCH为例介绍。 PDSCH 和P…

MyBatis-Plus之通用枚举

系列文章目录 Mybatis-PlusSpringBoot结合运用_心态还需努力呀的博客-CSDN博客MyBaits-Plus中TableField和TableId用法_心态还需努力呀的博客-CSDN博客 MyBatis-Plus分页查询&#xff08;快速上手运用&#xff09;_心态还需努力呀的博客-CSDN博客_mybatis plus分页查询 MyBa…

CyclicBarrier 多线程处理数据

文章目录前言需求环境准备单线程处理多线程处理总结前言 开发中&#xff0c;我们经常会遇到处理批量数据&#xff0c;最后把处理成功和失败的数据结果记录下来。普通方法一个循环就可以搞定这个需求&#xff0c;但是面临大量数据单个线程去处理可能面临很大的瓶颈&#xff0c;…

怎么进行视频配音?建议收藏这些配音方法

最近我的朋友向我求助&#xff0c;他想要自己制作一个视频&#xff0c;但是视频里面有些片段需要配音&#xff0c;可是他又不想用自己的声音来配音。一方面担心容易NG&#xff0c;需要录制很多遍&#xff0c;会浪费较多的时间&#xff1b;另一方面是&#xff0c;如果视频录制和…

​单张图像三维人脸重建必备入门face3d—3DMM

作者&#xff1a;小灰灰 来源&#xff1a;投稿 编辑&#xff1a;学姐 本次的例子是将pipeline生成的图片作用于3DMM&#xff0c;重新拟合成新的图片。 load model 3DMM的表达式&#xff1a; &#x1d446;̅ ∈ &#x1d445;3&#x1d45b;是平均人脸形状&#xff0c;&#x…

国产网关apisix安装

1、安装docker 参考&#xff1a;centos7安装docker_代码手艺人老羊的博客-CSDN博客 2、下载包&#xff08;从github&#xff09; # Download the Docker image of Apache APISIX git clone https://github.com/apache/apisix-docker.git 3、安装 # Switch the current di…

单点登录设计

01 单系统登录机制 1、http无状态协议 web应用采用browser/server架构&#xff0c;http作为通信协议。http是无状态协议&#xff0c;浏览器的每一次请求&#xff0c;服务器会独立处理&#xff0c;不与之前或之后的请求产生关联&#xff0c;这个过程用下图说明&#xff0c;三…

JavaScript高级 |彻底搞懂原型对象

本文已收录于专栏⭐️ 《JavaScript》⭐️ 学习指南&#xff1a;对象的原型函数的原型new操作符将方法放原型里constructor总结梳理原型对象内存表现完结散花参考文献对象的原型 JavaScript 当中每个对象都有一个特殊的内置属性[[prototype ]] ,这个特殊的对象可以指向另外一个…

科技云报道:畅想无人化运维的AIOps,还有多远的路要走?

科技云报道原创。 在IT行业&#xff0c;运维人常常自我调侃“赚着5k的月薪&#xff0c;操着5千万的心&#xff0c;名下挂着5亿的资产”。 机房的暖通、网络、综合布线&#xff0c;系统的监控告警、故障响应等一大堆繁杂琐碎的工作&#xff0c;充斥着运维人的日常。 与开发和产…

自定义Feign的配置

SpringBoot虽然帮我们实现了自动装配&#xff0c;但是也是支持自定义配置的。 Feign运行自定义配置来覆盖默认配置&#xff0c;可以修改的默认配置如下&#xff1a; 配置Feign日志有两种方式 方式一&#xff1a;配置文件方式 1&#xff09;全局生效 feign:client:config:defa…

【愚公系列】2022年12月 Elasticsearch数据库-ELK添加SQL插件和浏览器插件(二)

文章目录前言一、ELK添加SQL插件和浏览器插件1.配置插件2.浏览器插件3.Elasticsearch术语介绍4.测试SQL插件和浏览器插件前言 下载SQL插件地址&#xff1a;https://github.com/NLPchina/elasticsearch-sql 我们选择7.15.2版本&#xff0c;ES页选择7.15.2版本把最后面的下载链…

车间调度|基于遗传算法的柔性车间调度(Matlab代码实现)

目录 1 概述 2 遗传优化算法 3 车间调度 4 运行结果 5 参考文献 6 Matlab代码实现 1 概述 调度通过合理安排生产资源,以缩短生产时间和提高资源利用率为目的,在生产系统中扮演着重要的角色。作业车间调度问题(Job-shop Schedu-ling Problem&#xff0c;JSP)是一类经典…

1996-2020年全国31省农村电力和农田水利建设相关数据

1996-2020年全国31省农村电力和农田水利建设相关数据 1、1996-2020年 2、范围&#xff1a;31省 3、指标包括&#xff1a; 乡村办水电站、装机容量、发电量、农村用电量、有效灌溉面积、旱涝保收面积、机电排灌面积、实际耕地灌溉面积、新增耕地灌溉面积、节水灌溉面积、新增…