基于Android系统的电子书阅读器的设计与实现
更新时间:2023-04-27 04:14:01 阅读量: 实用文档 文档下载
4.3.2 建表语句
1)创建:
1、创建书的表:
create table IF NOT EXISTS book(bid integer primary key autoincrement,bpath varchar(255) not null);
2、创建书签的表:
create table IF NOT EXISTS bookmark(bmid integer primary key autoincrement, bpath varchar(50) not null,bmname varchar(50) not null,bmoffset integer not
null,bmsavetime varchar(20) not null);
3、创建用户管理的表:
create table IF NOT EXISTS user(userid integer primary key autoincrement, username varchar(20) not null,password varchar(20) not null, telephone varchar(20) not null);
4、创建最近阅读的表
create table IF NOT EXISTS nearlyread(bookid integer primary key autoincrement, bookname varchar(50) not null,bookreadtime varchar(20) not null); 5、创建下载管理的表
create table IF NOT EXISTS down(downid integer primary key autoincrement, downuser varchar(20) not null,downbook varchar(20) not null, downtime varchar(20) not null);
2)SQlite3 数据库使用方法:
选择:select from bookmark where bmid=1;
插入:insert (bookmark,null,values);
删除:delete from bookmark where bmid=3 ;
查找:query(table, columns, selection, selectionArgs, groupBy, having, orderBy) 4.3.3 数据表分析
本数据库用的是一个轻量级嵌入型数据库sqlite3 ,即创建了一个数据库reader.db, 在数据库中创建了几张数据表。
在建设网站系统或者软件之前,我们必须对系统所用到的数据进行大致的分
类和具体的结构设计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑混乱,保证关键数据在意外情况下不会被破坏,可以说数Book表(用来存放书籍,如表4-1):
字段名称数据类型条件约束
bid in teger primary key
bpath varchar (255) not n ull
表4-1书籍数据表
Bookmark表(管理书签,如表4-2):
字段名称数据类型条件约束
Bmid In teger primary key
Bpath varchar(50) not n ull
Bmn ame varchar(50) not n ull
bmoffset In teger not n ull
msavetime varchar(20) not n ull
表4-2书签数据表
User表(用户数据,如表4-3):
字段名称数据类型条件约束
Userid In teger primary key
user name varchar(50) not n ull
password varchar(50) not n ull
teleph one varchar(20) not n ull
表4-3用户数据表
Nearlyread 表(最近阅读,如表4-4):
字段名称数据类型条件约束
Bookid In teger primary key
book name varchar(50) not n ull
bookreadtime varchar(20) not n ull
表4-4最近阅读数据表
Down表(下载,如表4-
??
5)
字段名称数据类型条件约束
Dow nid In teger primary key
varchar(50) varchar(20) 表4-5下载数据表
Downu
ser dow
ntime not n ull not n ull
541 获取sd卡上的txt文本
由于一个An droid模拟器或者是一个手机客户终端上只会配置一个sdcard , 所以一步移动设备上有各种各样的应用App,而且各种App都可能会由数据或者
文件存储到移动设备的sdcard上,故而有各式各样的文件类型是该款软件不需要的。也是用户选择本款软件时所不需要的信息文件,于是通过构造一个过滤式的方法让软件只接受来自sdcard上的TXT格式的文本文件。该方法是先通过判断是否存储路径是sdcard,通过getRecordFiles ()方法过滤掉其他无用文件,将剩余的TXT文件放置集合AirrayList 中,然后通过An droid的空间Listview 将其目录结构文件给显示出来。代码如下:
private void getRecordFiles() {
recordFiles = n ewArrayListvStri ng>();
if ( isSdcard ) {
File files[] = txtDir」istFiles();
if (files != null ) {
for ( int i = 0; i < files. length ; i++) {
if (files[i].getName().indexOf( "." ) >= 0) {
/*只取.txt文件*/
Stri ng file =
files[i].getName().substri ng(files[i].getName().i ndexOf( "?"));
if (file.toLowerCase().equals( ".txt"))
recordFiles .add(files[i].getName());
}
}
}
}
图5-1文件过滤流程图 542长按选项删除
户获会在,,sdcard 里面积累十分多的TXT 文 该功能通 可能在漫长的使用软件生活中, 件数量,所以这里提供一个删除功能供用户删除一些很久不用的文件。
过获取到An droid 控件ListView 上每一条Item 的长按事件进行绑定事件监听, card 里面文件的操作权限来对 ()的部分代 通过该行为进行功能描述,通过获取系 对于文 于sdcard 里面的TXT 文件进行删除。下面是删除的方法 delFile 码实现: 是 public void delFile(String filePathAndName)^ try { 过滤 Stri ng filePath = "/sdcard/" +filePathA ndName;
newjava.io.File(filePath);
java.io.File myDelFile =
myDelFile.delete();
}
catch (Exception e) {
Toast. makeText( this , " 删除文件操作出错", 1000).show();
e.printStackTrace();
}
}
5.4.3 阅读文本界面的实现这是该款软件最基本也是最重要的功能——对于TXT 文本文件的可视化读取。由于软件中对于sdcard 里面的文件的读取可以是从各种各样的界面上获取要读取的TXT文件资源,比如可以从本地管理列表直接读取,也可以从最近阅读列表读取,或者是从阅读界面来读取该文本的书签从而读取文本文件的某一段。所以,通过Android 的Intent (意图方式)传递数据,数据包括了实现本界面的Activity 类名,也包括了要阅读文本的书名,还有就是要读取文件的开始页码比例。如果是非进度跳转功能,或者是书签的功能则默认进度读取开始页码也第一页。而这些数据则通过封装到某个对象中,用bundle 传递给Intent ,再通过Intent 转发数据。以下便是通过BitmapFactory 工厂封装了一些绘制阅读背景的方法的部分代码实现:
mPageWidge.tsetBitmaps( mCurPageBitmap, mNextPageBitmap);
mPageWidge.tsetOnTouchListener( newOnTouchListener() { @Override public boolean onTouch(View v, MotionEvent e) {
boolean ret= false ;
if (v == mPageWidge)t {
if (e.getAction() == MotionEvent. ACTION_DOW) {N
mPageWidge.tabortAnimation();
mPageWidge.tcalcCornerXY(e.getX(), e.getY());
pagefactory .onDraw( mCurPageCanva)s;
if ( mPageWidge.tDragToRight()) {
try {
pagefactory .prePage();
} catch (IOException e1) { e1.printStackTrace(); }
if ( pagefactory .isfirstPage()) return
pagefactory .onDraw( mNextPageCanva)s;
} else {
try { pagefactory .nextPage();
} catch (IOException e1)
{ e1.printStackTrace();
}
if ( pagefactory .islastPage()) return
pagefactory .onDraw( mNextPageCanva)s;
}
mPageWidge.tsetBitmaps( mCurPageBitmap, mNextPageBitmap);
}
ret = mPageWidge.tdoTouchEvent(e); return ret;
}
return false ;
}
});false ; false ;
正在阅读:
当卢浮宫遇见紫禁城 考试实用影评范文05-20
医院科教述职报告2013 (1)03-20
医学基础(解剖生理)复习整理资料12-14
练习五禽戏的心得体会10-29
爱与责任 融铸师魂03-14
江西省赣州市兴国县第六中学2022—2022学年第一学期期末考试七年04-05
石室中学2010年外地生入学考试数学题01-11
河南省交通厅关于进一步规范公路工程招投标活动的通知 豫交工[2005-02
麻醉生理学 重点08-17
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 阅读器
- 电子书
- 基于
- Android
- 实现
- 设计
- 系统
- 植根生态教育之树 绽放素质教育之花-2019年精选文档
- 结案案卷格式文书1--附件3:受援人权利、义务及风险告知书
- 浙教版科学新版八年级下册《模型、符号的建立与作用》精品教案2 新版
- 高中语文课堂导入精彩集锦
- 道德与法治《我的家在这里》教学反思
- 成人礼时给儿子的一封信
- 四年级美丽的公园作文400字
- 高中信息技术选修2多媒体技术全册教案
- 2013年高考英语词汇辨析_易错点全归纳
- 怎么去黑头粉刺 八大方法帮你快速恢复小清新
- 2021年下半年七年级英语教学工作计划
- 2020年岚皋县事业单位(教育类)招聘试题及答案解析
- (完整word版)中药的替代
- 二年级《小鲤鱼跳龙门》课后阅读练习测试题及答案
- 普通高中生物学课程标准(2017年版2020年修订)目录
- 新员工入职自我介绍范文4篇
- 校企合作协议书(样本)
- 药物临床试验不良事件和严重不良事件处理的标准操作规程
- Constant-Murley肩关节功能评分
- 成长类高考命题作文:期待成长