《移动互联网开发技术》大作业报告

合集下载

移动互联网的实训报告

移动互联网的实训报告

一、实训目的随着移动互联网技术的飞速发展,各行各业对移动互联网应用的需求日益增长。

为了提升自身在移动互联网领域的实践能力和创新能力,本次实训旨在通过理论学习和实际操作,使我对移动互联网的基本原理、开发流程、技术框架及市场应用有深入的了解,培养我独立分析问题和解决问题的能力。

二、实训环境实训地点:XX大学计算机学院实训室实训时间:2023年X月X日至2023年X月X日实训设备:Windows操作系统、Android开发环境、iOS开发环境、MySQL数据库、Java编程语言、Python编程语言等。

三、实训原理移动互联网是基于无线通信技术,通过互联网提供各种服务的一种新型信息交流方式。

其核心原理包括:1. 无线通信技术:如4G、5G、Wi-Fi等,为移动互联网提供高速稳定的网络连接。

2. 移动操作系统:如Android、iOS等,为移动设备提供用户界面和应用程序开发环境。

3. 移动应用开发:利用Java、Python、Objective-C等编程语言,开发适用于移动设备的各类应用程序。

4. 移动支付与安全:通过移动支付平台,实现移动设备上的便捷支付,同时保障用户信息安全。

四、实训过程1. 理论学习:- 学习移动互联网的基本概念、发展历程和未来趋势。

- 研究移动操作系统的工作原理和常用开发工具。

- 了解移动应用开发流程、技术框架和编程语言。

2. 实践操作:- 使用Android和iOS开发环境,学习开发移动应用的基本步骤。

- 通过编写Java和Python代码,实现移动应用的核心功能。

- 利用MySQL数据库,实现移动应用的数据存储和查询。

- 学习移动支付和安全技术的应用,保障用户数据安全。

3. 项目实践:- 参与开发一个移动应用项目,如健康管理系统、在线教育平台等。

- 在项目中,负责移动应用的前端开发、后端开发和数据库设计。

- 与团队成员沟通协作,确保项目按时完成。

五、实训结果1. 理论掌握:通过本次实训,我对移动互联网的基本原理、开发流程、技术框架及市场应用有了深入的了解。

移动互联网应用开发技术研究

移动互联网应用开发技术研究

移动互联网应用开发技术研究随着移动互联网的迅速发展和普及,移动互联网应用成为了人们生活中不可或缺的一部分。

从传统的信息获取到在线购物、游戏娱乐、社交聊天等各种应用的迅速发展,移动互联网应用已经成为了人们生活的一部分。

本文将从移动互联网应用开发技术的角度对移动互联网应用进行研究和探讨。

一、移动互联网应用开发技术的发展随着移动互联网的快速普及,移动互联网应用的开发技术也在不断发展。

从最开始的HTML5、CSS、JavaScript等基本前端技术到后来出现的React Native、Flutter等跨平台框架技术,移动互联网应用的开发技术已经不断发展和创新。

1. HTML5、CSS、JavaScript等基本前端技术HTML5、CSS、JavaScript等基本前端技术是一种传统的移动应用开发技术。

使用这些技术可以创建简单、轻量级的应用程序,通常用于创建简单的互联网应用或进行简单的网页设计。

虽然这些技术已经被不断完善和优化,但是由于限制较多,对于开发更加复杂的应用程序还是会存在一定的局限性。

2. React Native技术React Native是由Facebook公司推出的一种跨平台应用开发框架技术。

使用React Native,开发者可以使用JavaScript语言创建出类似本地应用的程序,并且可以在iOS和Android等不同平台上进行自动渲染。

这种技术的好处是可以节约开发时间,并且可以兼容各种不同的移动端平台,不需要为每个平台分别编写代码。

3. Flutter技术Flutter是由Google公司推出的一种开源的移动应用开发框架技术。

Flutter采用自己独特的语言Dart编程,并且提供了完整的框架和开发工具,使得开发者可以快速构建出高质量的移动应用。

Flutter可以直接生成本地的ARM代码,并且可以在各种不同的移动端平台上进行自动渲染。

二、移动互联网应用开发技术的应用场景随着移动互联网应用的迅速发展,各种不同的应用场景也在不断涌现。

《移动互联网开发技术》大作业报告

《移动互联网开发技术》大作业报告

XXX大学《移动互联网开发技术》大作业报告题目:电子书APP-《书屋》学生姓名:学号:学院:专业班级:完成日期:2020年10 月20 日成绩(百分制):授课教师:目录目录 (2)1功能描述 (1)1.1总体界面 (1)1.2书架模块 (2)1.2.1显示目录 (3)1.2.2设置主题 (3)1.2.3设置翻页效果 (4)1.2.4设置字体样式 (4)1.2.5调节字体大小 (5)1.2.6设置字体颜色 (6)1.2.7添加书签 (6)1.2.8显示书签列表 (7)1.2.9清空书签列表 (7)1.3用户模块 (8)1.3.1用户注册 (8)1.3.2用户登录 (9)2程序结构 (10)2.1整个工程包含的所有JA V A文件 (10)2.2整个工程包含的所有布局文件 (11)3详细设计 (12)3.1主模块设计 (12)3.1.1主模块流程图 (12)3.1.2主模块关键代码 (12)3.2书架模块设计 (13)3.2.1书架模块流程图 (13)3.2.2书架模块关键代码 (13)3.3用户模块设计 (17)3.1.1用户模块流程图 (17)3.1.2用户模块关键代码 (18)3.4数据库设计 (20)4运行效果 (22)5总结 (30)1功能描述这款电子书APP主要有三个大模块,我的、书城、书架。

分别的功能是用户中心,网上书城,我的书架。

APP截图:图1.1 电子书APP运行在手机上的效果1.1总体界面书城:可阅读网上的电子书图1.2 APP整体样式1.2书架模块点击书架跳转到书架,初始界面有很多本地电子书图1.3 书架界面打开任意一本电子书,所具有的功能:主要有目录、设置、字体、书签几个模块图1.4 电子书界面1.2.1显示目录点击目录按钮,显示目录。

点击目录可跳转到对应章节图1.5 电子书的目录显示1.2.2设置主题点击设置按钮里面有四种主题样式,点击可更换主题。

点击护眼主题查看效果颜色换成了偏绿色,点击夜间主题颜色就会换成黑色,对应主题都会有对应样式。

移动互联实习报告

移动互联实习报告

一、实习背景随着移动互联网的快速发展,移动应用市场日益繁荣,为我国经济发展注入了新的活力。

为了更好地了解移动互联行业,提高自身实践能力,我选择了在一家移动互联公司进行为期两个月的实习。

实习期间,我主要负责移动应用开发、产品运营和市场营销等工作。

二、实习单位简介实习单位是一家专注于移动互联领域的科技公司,主要从事移动应用开发、智能硬件研发、大数据分析等业务。

公司拥有完善的技术团队和丰富的行业经验,产品涵盖生活服务、教育娱乐、金融等多个领域。

三、实习内容及过程1. 移动应用开发实习初期,我在导师的指导下,学习了移动应用开发的相关知识,包括Android和iOS平台的开发技能。

在实习过程中,我参与了多个项目的开发,积累了以下经验:(1)熟练掌握Android和iOS平台的开发工具,如Android Studio、Xcode等;(2)熟悉移动应用开发流程,包括需求分析、设计、编码、测试和上线等环节;(3)具备一定的前端和后端开发能力,能够独立完成移动应用的开发工作。

2. 产品运营在实习期间,我还参与了产品运营工作,包括以下内容:(1)了解产品市场定位,制定产品运营策略;(2)分析用户需求,优化产品功能;(3)监控产品数据,分析用户行为,调整运营策略。

3. 市场营销为了提高公司产品的市场知名度,我还参与了以下市场营销工作:(1)策划线上推广活动,包括微博、微信、抖音等社交平台;(2)撰写推广文案,制作宣传素材;(3)与合作伙伴沟通,拓展市场渠道。

四、实习收获与体会1. 技能提升通过实习,我在移动应用开发、产品运营和市场营销等方面取得了显著进步。

熟练掌握了移动应用开发技能,了解了产品运营和市场推广的策略,为今后的职业发展奠定了基础。

2. 团队协作在实习过程中,我深刻体会到团队协作的重要性。

与团队成员共同解决问题、分享经验,使我更加懂得了如何与他人合作,提高了沟通能力和团队协作能力。

3. 职业素养实习期间,我学会了如何面对工作中的压力和挑战,培养了良好的职业素养。

苏州科技学院移动互联网开发技术大作业任务

苏州科技学院移动互联网开发技术大作业任务

苏州科技学院电子与信息工程学院移动互联网开发技术大作业报告专业年级班级学号姓名成绩2015年6月19日大作业任务完成以下任务(时间一周)。

1、剪刀石头布游戏要求:(1)人-机对弈;(2)人-人对弈;2、新闻阅读软件要求:(1)读取新浪国内新闻栏目的新闻列表;(2)阅读指定列表项的新闻;【任务1】1 需求分析1.1用户需求不同年龄段的人都可以玩这款游戏界面友好、简单易用1.2功能需求人和人之间能进行对战人和计算机之间能进行对战人人对战和人机对战界面可以切回主界面2 系统分析与建模2.1概要设计2.1.1系统用例图2.1.2系统类图2.1.3系统时序图2.1.4系统活动图3 系统设计与实现3.1界面设计3.2模块设计3.2.1模式选择模块本模块是用户进入程序的入口。

可以选择人机对战或者人人对战。

3.2.2人机对战模块为了保证公平性,人人对战模块只有一个界面,点击"开始游戏"按钮人人对战的双方同时由系统随机出拳,其中一人点击"结束"按钮结束本局游戏并计算比分3.2.3人人对战模块点击剪刀/石头/布按钮后人出相应的拳,系统随机出拳,双方出拳后本局游戏自动结束并计算比分,"结束"按钮变成"开始"按钮【任务2】1 需求分析1.1用户需求使人们随时了解国内新闻;简单易用;1.2功能需求读取新浪国内新闻栏目的新闻列表;阅读指定列表项的新闻;2 系统分析与建模2.1概要设计2.1.1系统用例图2.1.2系统类图2.1.3系统时序图2.1.4系统活动图3 系统设计与实现3.1界面设计主界面Activity_main.xml News_item.xml阅读新闻界面Activity_show_news.xml3.2 模块设计3.2.1读取新闻列表模块读取新闻列表模块通过解析新浪新闻的XML文件获取新闻标题3.2.2 阅读新闻模块阅读新闻模块通过解析新浪新闻的XML文件读取新闻的部分内容,并提供新闻原文链接供用户查阅,另有返回按钮可返回主界面查看其他新闻3.3 核心模块的实现代码MainActivity.javapackage com.example.sinanews;import java.io.ByteArrayInputStream;import java.util.List;import com.example.sinanews.R;import com.loopj.android.http.AsyncHttpClient;import com.loopj.android.http.AsyncHttpResponseHandler;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {public final String RSS_URL ="/news/china/focus15.xml";private ListView lv_news;private List<NewsInfo> newsInfos;private class NewsAdapter extends BaseAdapter{@Overridepublic int getCount() {return newsInfos.size();}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroupparent) {View view=View.inflate(MainActivity.this, yout.news_item, null);TextView tv_title=(TextView) view.findViewById(_title);NewsInfo newsInfo=newsInfos.get(position);tv_title.setText(newsInfo.getTitle());return view;}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);lv_news=(ListView) findViewById(R.id.lv_news);//创建AsyncHttpClient实例AsyncHttpClient asyncHttpClient = new AsyncHttpClient();//使用GET方式请求asyncHttpClient.get(RSS_URL,new AsyncHttpResponseHandler() {public void onSuccess(String content) {//访问成功super.onSuccess(content);byte[] bytes = content.getBytes();//将Byte数组转换成输入流ByteArrayInputStream bais = new ByteArrayInputStream(bytes);//调用NewsInfoService工具类解析xml文件newsInfos = NewsInfoService.getNews(bais);if (newsInfos == null) {// 解析失败弹出toastToast.makeText(MainActivity.this,"解析失败", 0).show();} else {// 更新界面lv_news.setAdapter(new NewsAdapter());lv_news.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent,View view, int position, long id) {Intent intent = newIntent(MainActivity.this,ShowActivity.class);Bundle b = new Bundle();b.putString("title",newsInfos.get(position).getTitle());b.putString("discription", newsInfos.get(position).getDescription());b.putString("link",newsInfos.get(position).getLink());b.putString("pubdate", newsInfos.get(position).getPubdate());intent.putExtras(b);startActivity(intent);}});}}//请求失败public void onFailure(Throwable error, String content) {super.onFailure(error, content);Log.e("error",RSS_URL);Log.e("error", error.toString());Toast.makeText(MainActivity.this, "请求失败", 0).show();}});}private void fillData() {//创建AsyncHttpClient实例AsyncHttpClient asyncHttpClient = new AsyncHttpClient();//使用GET方式请求asyncHttpClient.get(RSS_URL,new AsyncHttpResponseHandler() {public void onSuccess(String content) {//访问成功super.onSuccess(content);byte[] bytes = content.getBytes();//将Byte数组转换成输入流ByteArrayInputStream bais = new ByteArrayInputStream(bytes);//调用NewsInfoService工具类解析xml文件newsInfos = NewsInfoService.getNews(bais);if (newsInfos == null) {// 解析失败弹出toastToast.makeText(MainActivity.this,"解析失败", 0).show();} else {// 更新界面lv_news.setAdapter(new NewsAdapter());}}//请求失败public void onFailure(Throwable error, String content){super.onFailure(error, content);Log.e("error",RSS_URL);Log.e("error", error.toString());Toast.makeText(MainActivity.this, "请求失败", 0).show();}});}}NewsInfo.javapackage com.example.sinanews;public class NewsInfo {private String title;// 标题private String description;// 描述private String link;// 链接private String pubdate;// 出版时间public NewsInfo() {super();}public NewsInfo(String title, String description, String link, String pubdate) {super();this.title = title;this.description = description;this.link = link;this.pubdate = pubdate;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getDescription() {return description;}public void setDescription(String description) { this.description = description;}public String getLink() {return link;}public void setLink(String link) {this.link = link;}public String getPubdate() {return pubdate;}public void setPubdate(String pubdate) { this.pubdate = pubdate;}}NewsInfoServices.javapackage com.example.sinanews;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import org.xmlpull.v1.XmlPullParserFactory;public class NewsInfoService {public static List<NewsInfo> getNews(InputStream is) {NewsInfo i = null;List<NewsInfo> list = null;XmlPullParserFactory factory;try{factory = XmlPullParserFactory.newInstance();XmlPullParser parser;parser = factory.newPullParser();parser.setInput(is, "UTF-8");int eventType = parser.getEventType(); //产生第一个事件while (eventType != XmlPullParser.END_DOCUMENT){// 只要不是文档结束String name = parser.getName(); // 获取解析器当前指向的元素名称switch (eventType){case XmlPullParser.START_DOCUMENT:list = new ArrayList<NewsInfo>();break;case XmlPullParser.START_TAG:if ("item".equals(name)){i = new NewsInfo();}if (i != null){if ("title".equals(name)){i.setTitle(parser.nextText());}if ("link".equals(name)){i.setLink(parser.nextText());}if ("pubDate".equals(name)){i.setPubdate(parser.nextText());}if ("description".equals(name)){i.setDescription(parser.nextText());}}break;case XmlPullParser.END_TAG:if ("item".equals(name)){list.add(i);i = null;}}eventType = parser.next();// 进入下一个元素}}catch (XmlPullParserException e){e.printStackTrace();}catch (IOException e){e.printStackTrace();}return list;}}ShowActivity.javapackage com.example.sinanews;import com.example.sinanews.R;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.Button;import android.widget.TextView;public class ShowActivity extends Activity { private TextView textView;private Button backbutton;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(yout.activity_show_news);textView = (TextView) findViewById(_content);String content = null;Intent intent = getIntent();if (intent != null) {Bundle bundle = intent.getExtras();if (bundle == null) {content = "程序错误";} else {content = bundle.getString("title") + "\n\n"+ bundle.getString("pubdate") + "\n\n"+bundle.getString("discription")+"\n\n"+ "\n\n详情:\n"+ bundle.getString("link");}} else {content = "程序错误";}textView.setText(content);backbutton = (Button) findViewById(R.id.btn_back);backbutton.setOnClickListener(new Button.OnClickListener() {public void onClick(View v) {finish();}});}}4 测试.。

移动互联网开发报告

移动互联网开发报告

目录一、章节知识点总结 (3)1.1 第一章:Android入门基础 (3)1.1.1 Android开发环境搭建 (3)1.1.2 Android程序结构 (3)1.2 第二章:Activity与Intent (3)1.2.1 Activity (3)1.2.2 Intent (4)1.3 第三章:Android UI开发 (4)1.3.1 布局Layout (4)1.3.2 常用控件View (5)1.3.3 用户交互 (5)1.4 第四章:Android数据存储技术 (6)1.4.1 ShardPreferences (6)1.4.2 文件存储 (6)1.4.3 SQLite数据库 (7)1.4.4 ContentProvider (7)二、整体总结 (7)一、章节知识点总结经过这段时间以来的学习,让我对Android移动应用开发有了一定的了解。

1.1 第一章:Android入门基础1.1.1 Android开发环境搭建安装JDK,配置环境变量。

安装并熟悉使用开发工具Android Studio,包括SDK与模拟器的安装。

1.1.2 Android程序结构app文件夹中存放工程代码,是源代码和资源文件的存放位置;build文件夹存放编译后的文件,并且最终生成的apk文件也是存放在这里;libs文件夹存放.jar,.rar等第三方依赖包;配置清单AndroidManifest.xml是整个项目的配置文件,所有的Activity、Service、Broadcast 等都要在这里定义。

通过这个文件可以清晰的查看项目的大致结构。

Logcat调试,可以打印一些程序中的日志信息,方便开发调试。

Logcat日志分为5个级别:Log.v()全部信息、Log.d()调试信息、Log.i()一般信息、Log.w()警告信息、Log.e()错误信息。

1.2 第二章:Activity与Intent1.2.1 ActivityActivity是四大组件之一,也是最基本的组件,每个Activity都表示一个页面。

移动互联应用技术实践报告

移动互联应用技术实践报告

移动互联应用技术实践报告一、引言随着移动互联技术的发展,移动互联应用在我们的日常生活中扮演着越来越重要的角色。

为了更好地了解和应用移动互联技术,我们进行了一次移动互联应用技术实践。

在这次实践中,我们主要学习了移动应用开发的基础知识,并实现了一个简单的移动应用程序。

二、实践内容1.移动应用开发基础知识学习我们首先学习了移动应用开发的基础知识,包括移动应用的发展历程、不同的移动应用平台、移动应用开发的常用工具及其使用方法等。

通过学习这些基础知识,我们对移动应用开发的整个流程有了更清晰的了解。

2.移动应用程序设计与实现在学习了基础知识后,我们开始设计和实现一个简单的移动应用程序。

我们选择了一个热门的主题,并设计了一个符合用户需求的应用程序。

然后,我们使用开发工具进行编码和调试,最终实现了该应用程序的基本功能。

3.移动应用程序测试与优化完成应用程序的编码后,我们对其进行了测试。

通过测试,我们发现了一些潜在的问题并进行了修复。

同时,我们还进行了性能优化,提高了应用程序的响应速度和用户体验。

三、实践结果通过这次实践,我们掌握了移动应用开发的基础知识,并成功实现了一个简单的移动应用程序。

该应用程序具备良好的用户体验和稳定的性能,可以满足用户的基本需求。

四、实践心得通过这次实践,我们深刻认识到移动互联应用技术的重要性和发展潜力。

移动互联应用已经成为了我们日常生活的一部分,为我们的生活带来了便利和创新。

在未来的发展中,移动互联应用技术将继续迎来新的机遇和挑战。

因此,我们要不断学习和深入研究移动互联应用技术,以应对这些机遇和挑战。

五、结论通过这次移动互联应用技术的实践,我们对移动应用开发有了更深入的了解,并成功实现了一个简单的移动应用程序。

在今后的学习和工作中,我们将继续加强对移动互联应用技术的学习和应用,为推动移动互联应用技术的发展做出更大的贡献。

移动互联网实验报告

移动互联网实验报告

实验报告学年学期:2015-2016 学年第一学期课程名称:移动互联网技术实验指导老师:xxxxxxxx学院:xxxxxxxxx班级:xxxxxxxxx学号:xxxxxxxxxx姓名:xxxxxxxxxxxxxxxxxxxxxxxxxx实验报告第 13 周实验名称移动互联网应用开发平台实验性质必修实验类型设计实验课时 2 实验日期、时间周四12节实验消耗器材实验仪器设备台式计算机Window 7实验目的熟悉并掌握移动互联网应用开发平台,确定实验项目的应用开发平台。

实验内容(实验原理、运用的理论知识和数据、算法、程序、步骤和方法)预想:由于学校食堂根本不能满足学生们的需求,我们预想搭建个美食外卖的移动应用,方便于个位同学就餐,这里面可以根据学生对美食的需求进行点餐,快速送餐,优惠体验等功能。

该功能预想做成网站或者移动终端的app的形式,应用的名字叫做“美食美刻”。

前期熟悉并掌握移动互联网应用开发平台。

课题初步设想的几大模块:一、商家模块外卖的应用就是为学生和商家的交易建立便利的平台,所以商家就是这个应用的血和肉的存在,没有商家,我们的平台就是个骨架,没有任何的意义。

当然商家中也分为很多的模块,下面就针对商家进行分模块的分析。

1.商家管理:这是针对后台的模块,这是后台的开发人员对加入平台商家的商家信息和商家的类型登记到后台数据库中。

在前台的应用中会对商家的类型进行分类,保证应用搜索的目的性。

2.商家食品:作为一个没事的平台,最重要的就是商家的食品,对于食品的登记要事先进行调查,食品的安全性才是最重要的,后台中,食品先登记到数据库中,在前台的应用中,开发人员进行分类:快餐类,粉面类,甜品类,水果类,零食类等,同时也会有区域特产美食的模块。

3.商家优惠:这是一种促销方式,这要通过与商家协商优惠条件,当然会有短期大优惠和长期的小优惠。

应用中我们加入了“免费试吃“的优惠模块,这是要限时限购的优惠。

具体的优惠要通过策划之后才能实行的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

XXX大学《移动互联网开发技术》大作业报告题目:电子书APP-《书屋》学生姓名:学号:学院:专业班级:完成日期:2020年10 月20 日成绩(百分制):授课教师:目录目录 (2)1功能描述 (1)1.1总体界面 (1)1.2书架模块 (2)1.2.1显示目录 (3)1.2.2设置主题 (3)1.2.3设置翻页效果 (4)1.2.4设置字体样式 (4)1.2.5调节字体大小 (5)1.2.6设置字体颜色 (6)1.2.7添加书签 (6)1.2.8显示书签列表 (7)1.2.9清空书签列表 (7)1.3用户模块 (8)1.3.1用户注册 (8)1.3.2用户登录 (9)2程序结构 (10)2.1整个工程包含的所有JA V A文件 (10)2.2整个工程包含的所有布局文件 (11)3详细设计 (12)3.1主模块设计 (12)3.1.1主模块流程图 (12)3.1.2主模块关键代码 (12)3.2书架模块设计 (13)3.2.1书架模块流程图 (13)3.2.2书架模块关键代码 (13)3.3用户模块设计 (17)3.1.1用户模块流程图 (17)3.1.2用户模块关键代码 (18)3.4数据库设计 (20)4运行效果 (22)5总结 (30)1功能描述这款电子书APP主要有三个大模块,我的、书城、书架。

分别的功能是用户中心,网上书城,我的书架。

APP截图:图1.1 电子书APP运行在手机上的效果1.1总体界面书城:可阅读网上的电子书图1.2 APP整体样式1.2书架模块点击书架跳转到书架,初始界面有很多本地电子书图1.3 书架界面打开任意一本电子书,所具有的功能:主要有目录、设置、字体、书签几个模块图1.4 电子书界面1.2.1显示目录点击目录按钮,显示目录。

点击目录可跳转到对应章节图1.5 电子书的目录显示1.2.2设置主题点击设置按钮里面有四种主题样式,点击可更换主题。

点击护眼主题查看效果颜色换成了偏绿色,点击夜间主题颜色就会换成黑色,对应主题都会有对应样式。

图1.6 更改阅读主题1.2.3设置翻页效果点击设置按钮,显示翻页效果的设置,这里有三种翻页效果的设置分别是,仿真翻页、覆盖翻页、无效果。

选择仿真翻页查看效果。

仿真翻页的效果就类似真实翻书的翻页的效果。

图1.7 更改翻页效果1.2.4设置字体样式点击字体按钮,可以更改显示的字体样式,显示现在使用的是默认字体。

我们可以点击其他字体。

图1.8 字体样式点击切换字体样式使用幼圆字体,查看显示效果和默认字体不一样图1.9 更改字体样式1.2.5调节字体大小点击设置按钮,显示设置字体大小的功能,拖动设置字体的字体条来改变字体的大小,现在是拖到了最大。

图1.10 调节字体大小1.2.6设置字体颜色点击字体按钮,看到有设置字体颜色选择蓝色样式,查看效果字体颜色变成了蓝色。

图1.11 更改字体颜色1.2.7添加书签点击书签按钮,给当前阅读也添加书签图1.12 添加书签1.2.8显示书签列表长按书签按钮,显示书签列表和每个书签添加的时间,列表里是阅读是添加的书签。

图1.13 查看书签列表1.2.9清空书签列表长按书签按钮,点击书签列表的垃圾桶样式按钮即可清空书签列表,查看效果。

图1.14 清空书签列表1.3用户模块点击用户按钮,跳转到用户模块。

图1.15 用户模块1.3.1用户注册点击用户登录跳转到用户登录页面,点击页面上的注册按钮注册用户。

图1.16 用户注册1.3.2用户登录点击用户登录,用注册过的用户进行登录。

图1.17 用户登录2程序结构2.1整个工程包含的所有JAVA文件图2.1 整个工程所有JA V A文件的功能2.2整个工程包含的所有布局文件图2.2 整个工程所有布局文件3详细设计3.1主模块设计3.1.1主模块流程图整体模块分为三个模块,主模块的功能主要是让我们可以进入不同的模块,去阅读线上的电子书籍。

图3.1 整体模块流程图3.1.2主模块关键代码@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);WebView webView = findViewById(R.id.id_webView);webView.getSettings().setJavaScriptEnabled(true);webView.setWebViewClient(new WebViewClient());webView.loadUrl("/");}public void doBookrack(View v){Intent intent = new Intent(MainActivity.this,ShelfActivity.class);startActivity(intent);}public void doUser(View v){Intent intent = new Intent(MainActivity.this,UserActivity.class);startActivity(intent);}3.2书架模块设计3.2.1书架模块流程图图3.2 书架模块流程图3.2.2书架模块关键代码电子书阅读显示@Overrideprotected void setScreen() {//全屏getWindow().setFlags(youtParams.FLAG_FULLSCREEN, youtParams.FLAG_FULLSCREEN);}功能菜单的四个功能按钮@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.button_content://设置出现动画和位置mContentPopup.setAnimationStyle(R.style.pop_window_anim_style);mContentPopup.showAsDropDown(mBottomBar, 0, -mContentPopup.getHeight());lightOff();break;case R.id.button_setting:int xOff = (mBottomBar.getWidth() - mSettingPopup.getWidth()) / 2;int yOff = -mSettingPopup.getHeight() - mBottomBar.getHeight() / 6;mSettingPopup.setAnimationStyle(R.style.pop_window_anim_style);mSettingPopup.showAsDropDown(mBottomBar, xOff, yOff);break;case R.id.button_font:mFontPopup.setAnimationStyle(R.style.pop_window_anim_style);mFontPopup.showAsDropDown(mBottomBar, 0, -mFontPopup.getHeight());lightOff();break;case R.id.button_label:saveLabel();Toast.makeText(mContext, "书签已添加,长按显示书签列表",Toast.LENGTH_SHORT).show();break;}}书签存入数据库private void saveLabel() {Time time = new Time();time.setToNow(); // 取得系统时间。

String timeStr = time.year + "/" + time.month + "/" + time.monthDay;ReadInfo readInfo = mBookPageFactory.getReadInfo();String objectStr = SaveHelper.serObject(readInfo);Label label = new Label();label.setBookId(mBookId);label.setDetails(mBookPageFactory.getCurContent());label.setProgress(mBookPageFactory.getPercentStr());label.setTime(timeStr);label.setPrePageOver(mFlipView.isPrePageOver());label.setReadInfoStr(objectStr);label.save();}目录功能主要实现代码private class ContentsAdapter extends RecyclerView.Adapter<ContentsHolder> {private List<String> mBookContents;public ContentsAdapter(List<String> bookContents) {mBookContents = bookContents;}@Overridepublic ContentsHolder onCreateViewHolder(ViewGroup parent, int viewType) {LayoutInflater inflater = LayoutInflater.from(mContext);View view = inflater.inflate(yout.simple_list_item_1, parent, false);return new ContentsHolder(view);}@Overridepublic void onBindViewHolder(ContentsHolder holder, int position) {holder.bind(mBookContents.get(position), position);}@Overridepublic int getItemCount() {return mBookContents.size();}}public void setBackgroundColor(int color) {mLinearLayout.setBackgroundColor(color);}设置功能主要实现代码private void setCurThemeBtn() {Button usedButton = mThemeBtns[mTheme];for (int i = 0; i < mThemeBtns.length; i++) {// 设置背景填充颜色GradientDrawable drawable = (GradientDrawable) mThemeBtns[i].getBackground();drawable.setColor(mPopupColors[i]);//设置边框颜色if (mThemeBtns[i].getId() == usedButton.getId()) {int strokeColor = mStrokeColors[i];drawable.setStroke(5, strokeColor);} else {drawable.setStroke(5, mPopupColors[i]); //未选择button的边框颜色和填充颜色一致}}}private void setCurSeekBarStyle() {for (SeekBar seekBar : mSeekBars) {//获取seekBar的layer-list drawable对象LayerDrawable layerDrawable = (LayerDrawable) seekBar.getProgressDrawable();//层次包括背景图和进度,所以进度直接设为1,获取并设置进度条背景Drawable drawable = layerDrawable.getDrawable(1);drawable.setColorFilter(mStrokeColors[mTheme], PorterDuff.Mode.SRC);//获取thumb背景Drawable thumb = seekBar.getThumb();thumb.setColorFilter(mStrokeColors[mTheme], PorterDuff.Mode.SRC);}}字体功能主要实现代码private void initViews() {mTextColors = new int[]{0xff121111, //黑0x8A000000, //常规0xffa9a8a8, //夜间0xfbe6e3e3, //白0xff486c94, //蓝};@Overridepublic void onClick(View v) {int typeIndex = mTypeIndex;int color = 0;for (int i = 0; i < mButtons.length; i++) {if (v.getId() == mButtons[i].getId()) {typeIndex = i;break;}}for (int i = 0; i < mFabs.length; i++) {if (v.getId() == mFabs[i].getId()) {color = mTextColors[i];break;}}//改变字体if (typeIndex != mTypeIndex) {mTypeIndex = typeIndex;setUsedButton();if (mListener != null)mListener.onTypefaceSelected(mTypeIndex);}//改变颜色if (color != 0) {if (mListener != null)mListener.onColorSelected(color);}}3.3用户模块设计3.1.1用户模块流程图图3.3 用户模块流程图3.1.2用户模块关键代码用户管理类方法主要实现代码,增加用户,检测用户//增加public boolean insertUser(String name,String password){User user = new User();user.setName(name);user.setPassword(password);//创建数据库LitePal.getDatabase();return user.save();}//通过用户名查找用户是否存在public boolean findUserByName(String name){List<User> users = LitePal.findAll(User.class);for(User person: users){if(name.trim().equals(person.getName())){return false;}}return true;}//查找密码是否正确public boolean findUser(String password){List<User> users = LitePal.findAll(User.class);for(User person: users){if(password.trim().equals(person.getPassword())){return false;}}return true;}用户注册private void register_check() {if(isUserNameAndPwdValid()){boolean flag;String name = mAccount.getText().toString().trim();String password = mPwd.getText().toString().trim();String rePassword = mPwdCheck.getText().toString().trim();flag = userManager.findUserByName(name);if(!flag){Log.d("tag","注册失败");Toast.makeText(this, "用户名已经存在",Toast.LENGTH_SHORT).show();return ;}if(!password.equals(rePassword)){Toast.makeText(this, "输入的密码不同",Toast.LENGTH_SHORT).show();return ;}else {flag=userManager.insertUser(name,password);if(!flag){Toast.makeText(this,"注册失败",Toast.LENGTH_LONG).show();return ;}Toast.makeText(this,"注册成功",Toast.LENGTH_LONG).show();List<User> people = LitePal.findAll(User.class);for(User person: people){Log.d("RegisterActivity","person name is"+person.getName());Log.d("RegisterActivity","person password is"+person.getPassword());}Intent intent_Register_to_Login = newIntent(RegisterActivity.this,LoginActivity.class) ; //切换User Activity至Login Activity startActivity(intent_Register_to_Login);finish();}}}用户登录if(isUserNameAndPwdValid()){boolean flag,flag2;// 取得用户界面输入String username = name.getText().toString();String password = pass.getText().toString();flag = userManager.findUserByName(username);flag2 = userManager.findUser(password);if(flag){Toast.makeText(this, "该用户不存在",Toast.LENGTH_SHORT).show();return ;}if(flag2){Toast.makeText(this, "输入的密码不正确",Toast.LENGTH_SHORT).show();return ;}//进入主界面Intent intent = new Intent(LoginActivity.this,MainActivity.class);intent.putExtra("username",username);startActivity(intent);finish();}}3.4数据库设计数据库利用了第三方数据库框架LitePal,LitePal是一款开源的Android数据库框架采用对象关系映射(ORM)模式,将常用的数据库功能进行封装,可以不用写一行SQL语句就可以完成创建表、增删、改、查的操作。

相关文档
最新文档