版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、太原工業(yè)學院畢業(yè)設(shè)計(論文)4.3.2 建表語句1)創(chuàng)建:1、創(chuàng)建書的表:create table IF NOT EXISTS book(bid integer primary key autoincrement,bpath varchar(255) not null); 2、創(chuàng)建書簽的表:create table IF NOT EXISTS bookmark(bmid integer primary key autoincrement, bpath varchar(50) not null,bmname varchar(50) not null,bmoffset integer not nu
2、ll,bmsavetime varchar(20) not null);3、創(chuàng)建用戶管理的表: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、創(chuàng)建最近閱讀的表create table IF NOT EXISTS nearlyread(bookid integer primary key autoincreme
3、nt, bookname varchar(50) not null,bookreadtime varchar(20) not null);5、創(chuàng)建下載管理的表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數(shù)據(jù)庫使用方法:選擇:select from bookmark where bmid=1;插
4、入:insert (bookmark,null,values);刪除:delete from bookmark where bmid=3 ;查找:query(table, columns, selection, selectionArgs, groupBy, having, orderBy)4.3.3 數(shù)據(jù)表分析本數(shù)據(jù)庫用的是一個輕量級嵌入型數(shù)據(jù)庫sqlite3 ,即創(chuàng)建了一個數(shù)據(jù)庫reader.db,在數(shù)據(jù)庫中創(chuàng)建了幾張數(shù)據(jù)表。在建設(shè)網(wǎng)站系統(tǒng)或者軟件之前,我們必須對系統(tǒng)所用到的數(shù)據(jù)進行大致的分類和具體的結(jié)構(gòu)設(shè)計,既要做到清晰明了,又要能適應系統(tǒng)各項功能的調(diào)用,而不至于產(chǎn)生結(jié)構(gòu)上的邏輯混亂,保
5、證關(guān)鍵數(shù)據(jù)在意外情況下不會被破壞,可以說數(shù)Book表(用來存放書籍,如表4-1):字段名稱數(shù)據(jù)類型條件約束bidintegerprimary keybpathvarchar(255)not null表 4-1 書籍數(shù)據(jù)表Bookmark表(管理書簽,如表4-2):字段名稱數(shù)據(jù)類型條件約束BmidIntegerprimary keyBpathvarchar(50)not nullBmnamevarchar(50)not nullbmoffsetIntegernot nullmsavetimevarchar(20)not null表 4-2 書簽數(shù)據(jù)表User表(用戶數(shù)據(jù),如表4-3):字段名稱數(shù)
6、據(jù)類型條件約束UseridIntegerprimary keyusernamevarchar(50)not nullpasswordvarchar(50)not nulltelephonevarchar(20)not null表 4-3 用戶數(shù)據(jù)表Nearlyread表(最近閱讀,如表4-4):字段名稱數(shù)據(jù)類型條件約束BookidIntegerprimary keybooknamevarchar(50)not nullbookreadtimevarchar(20)not null表 4-4 最近閱讀數(shù)據(jù)表Down表(下載,如表4-5):字段名稱數(shù)據(jù)類型條件約束DownidIntegerprim
7、ary keyDownuservarchar(50)not nulldowntimevarchar(20)not null表 4-5下載數(shù)據(jù)表 5.4.1 獲取sd卡上的txt文本由于一個Android模擬器或者是一個手機客戶終端上只會配置一個sdcard,所以一步移動設(shè)備上有各種各樣的應用App,而且各種App都可能會由數(shù)據(jù)或者文件存儲到移動設(shè)備的sdcard上,故而有各式各樣的文件類型是該款軟件不需要的。也是用戶選擇本款軟件時所不需要的信息文件,于是通過構(gòu)造一個過濾式的方法讓軟件只接受來自sdcard上的TXT格式的文本文件。該方法是先通過判斷是否存儲路徑是sdcard,通過getReco
8、rdFiles()方法過濾掉其他無用文件,將剩余的TXT文件放置集合AirrayList中,然后通過Android的空間Listview將其目錄結(jié)構(gòu)文件給顯示出來。代碼如下:private void getRecordFiles() recordFiles= new ArrayList<String>(); if (isSdcard) File files = txtDir.listFiles();if (files != null) for (int i = 0; i < files.length; i+) if (filesi.getName().indexOf(&quo
9、t;.") >= 0) /* 只取.txt文件 */String file = filesi.getName().substring(filesi.getName().indexOf(".");if (file.toLowerCase().equals(".txt")recordFiles.add(filesi.getName(); 41獲取文件名開始獲取文件TXT文件?過濾存放至集合結(jié)束是否圖5-1 文件過濾流程圖5.4.2 長按選項刪除可能在漫長的使用軟件生活中,用戶會在sdcard里面積累十分多的TXT文件數(shù)量,所以這里提供一個刪除
10、功能供用戶刪除一些很久不用的文件。該功能通過獲取到Android控件ListView上每一條Item的長按事件進行綁定事件監(jiān)聽,通過該行為進行功能描述,通過獲取系統(tǒng)對于sdcard里面文件的操作權(quán)限來對于sdcard里面的TXT文件進行刪除。下面是刪除的方法delFile()的部分代碼實現(xiàn):public void delFile(String filePathAndName) try String filePath ="/sdcard/"+filePathAndName; filePath = filePath.toString(); java.io.File myDelF
11、ile = new java.io.File(filePath); myDelFile.delete(); catch (Exception e) Toast.makeText(this, "刪除文件操作出錯", 1000).show(); e.printStackTrace(); 5.4.3 閱讀文本界面的實現(xiàn)這是該款軟件最基本也是最重要的功能對于TXT文本文件的可視化讀取。由于軟件中對于sdcard里面的文件的讀取可以是從各種各樣的界面上獲取要讀取的TXT文件資源,比如可以從本地管理列表直接讀取,也可以從最近閱讀列表讀取,或者是從閱讀界面來讀取該文本的書簽從而讀取文本文
12、件的某一段。所以,通過Android的Intent(意圖方式)傳遞數(shù)據(jù),數(shù)據(jù)包括了實現(xiàn)本界面的Activity類名,也包括了要閱讀文本的書名,還有就是要讀取文件的開始頁碼比例。如果是非進度跳轉(zhuǎn)功能,或者是書簽的功能則默認進度讀取開始頁碼也第一頁。而這些數(shù)據(jù)則通過封裝到某個對象中,用bundle傳遞給Intent,再通過Intent轉(zhuǎn)發(fā)數(shù)據(jù)。以下便是通過BitmapFactory工廠封裝了一些繪制閱讀背景的方法的部分代碼實現(xiàn):mPageWidget.setBitmaps(mCurPageBitmap, mNextPageBitmap); mPageWidget.setOnTouchListene
13、r(new OnTouchListener() Overridepublic boolean onTouch(View v, MotionEvent e) boolean ret=false;if (v = mPageWidget) if (e.getAction() = MotionEvent.ACTION_DOWN) mPageWidget.abortAnimation();mPageWidget.calcCornerXY(e.getX(), e.getY();pagefactory.onDraw(mCurPageCanvas);if (mPageWidget.DragToRight()
14、try pagefactory.prePage(); catch (IOException e1) e1.printStackTrace();if(pagefactory.isfirstPage()return false;pagefactory.onDraw(mNextPageCanvas); else try pagefactory.nextPage(); catch (IOException e1) e1.printStackTrace();if(pagefactory.islastPage() return false;pagefactory.onDraw(mNextPageCanva
15、s);mPageWidget.setBitmaps(mCurPageBitmap, mNextPageBitmap); ret = mPageWidget.doTouchEvent(e);return ret;return false;); 開始獲取文件名初始頁面是否為%1?隨機I/O流打開結(jié)束I/O流打開是否圖5-2 隨機流打開文件流程圖5.4.4 menu按鈕功能的實現(xiàn) 添加書簽功能作為一款電子書閱讀器軟件,這個功能是個輕松快捷而且不可避免的功能,它能夠?qū)㈤L篇的文本文件斷點記錄。如果用戶在長時間的閱讀過程中感覺到疲乏,但是文件依然沒法短時間內(nèi)看完,為了方便下次閱讀則將當前頁面記錄,下次則可
16、以直接點擊進入需要的頁面閱讀。該功能通過記錄了文件的總字節(jié)長度及當前的閱讀長度進行百分比計算。當前頁面的字節(jié)則是通過之前已經(jīng)計算好了的字體大小,每頁會大概的存放多少字節(jié)數(shù)。 private void saveBookMarkDialog() final Dialog d = new Dialog(turntest.this);d.setTitle("添加書簽");d.setContentView(R.layout.bookmark_dialog);final EditText et = (EditText) d.findViewById(R.id.bmet);final B
17、utton sure = (Button) d.findViewById(R.id.bmsure);final Button cancel = (Button) d.findViewById(R.id.bmcancel);/ 確定動作sure.setOnClickListener(new View.OnClickListener() public void onClick(View v) String bmn = et.getText().toString();if (bmn.length() < 1) d.dismiss();d.show(); else if (bmn.length(
18、) > 10) bmn.substring(0, 10);BookMark bm = new BookMark();bm.setBookPath(txtname);bm.setMarkName(bmn);bm.setCurrentOffset(pagefactory.m_mbBufEnd);bm.setSaveTime(DateUtil.dateToString(new Date();mHelper = new CRDBHelper(getApplicationContext();operateResult = mHelper.addBookMark(bm);mHelper.close(
19、);if (operateResult) Toast.makeText(turntest.this,"添加成功",1000).show(); else Toast.makeText(turntest.this,"添加失敗",1000).show();d.dismiss(););以下是查找書簽及實現(xiàn)跳轉(zhuǎn)的部分代碼實現(xiàn):list=new ArrayList<String>();for (int i = 0; i < mBookMarkList.size(); i+) String mark=mBookMarkList.get(i).getM
20、arkName()+" "+mBookMarkList.get(i).getSaveTime(); list.add(mark);list_tag=(ListView)findViewById(R.id.list_tag);adapter=new ArrayAdapter(ShowBookmark.this,list_tag.setAdapter(adapter);/ 短按跳到書簽list_tag.setOnItemClickListener(new OnItemClickListener() Overridepublic void onItemClick(AdapterV
21、iew<?> arg0, View arg1, int arg2,long arg3) / 獲取到所點擊的書簽的 定位int Offset=mBookMarkList.get(arg2).getCurrentOffset();Intent mIntent=new Intent(ShowBookmark .this, turntest.class);Bundle mB=new Bundle();mB.putString("Activity", "ShowBookmarkActivity");mB.putInt("Offset"
22、;, Offset);mIntent.putExtras(mB);startActivity(mIntent);finish();); 刪除書簽:該功能就是簡單的運用對于書簽的SQLite數(shù)據(jù)庫操作,通過對于ListView組件的長按事件添加監(jiān)聽,程序自動生成對話框。以下是部分代碼實現(xiàn):list_tag.setOnItemLongClickListener (new OnItemLongClickListener() Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1,int arg2, lo
23、ng arg3) final int pos=arg2;new AlertDialog.Builder(ShowBookmark.this).setTitle("提示").setMessage("刪除該書簽").setPositiveButton("確定", new OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) boolean b = mHelper.deleteBookMark(mBookMarkList.get(po
24、s).getBookMarkId();if (b && mBookMarkList.size() > 0) list.remove(pos); adapter.notifyDataSetChanged();).setNegativeButton("取消", new OnClickListener() Overridepublic void onClick(DialogInterface dialog, int which) dialog.dismiss();).show();return false;); /退出 6.1功能界面打開軟件,會從Logo界
25、面自動跳轉(zhuǎn)到該功能界面,該功能的實現(xiàn)只是簡單的通過Android系統(tǒng)的界面設(shè)計,通過對其TabHost選項卡組件的運用將界面縱向平行的設(shè)計為三個覆蓋的界面,點擊則切換成指定的選項界面,如圖5-1:圖5-1 功能界面6.2書籍選擇主界面打開軟件,軟件就自動加載sd卡上的txt文檔,該列表通過獲取Android系統(tǒng)的Sdcard的路徑然后獲取到里面的所有文件,然后通過文件名后綴來判別是否為.TXT結(jié)尾的文件將其添加進入數(shù)據(jù)庫,然后通過數(shù)據(jù)庫查詢列出所有該書籍表里面的集合從而列出要選擇的文檔,如圖5-2:圖 5-2 書籍選擇界面6.3用戶閱讀界面用戶左鍵單擊要閱讀的電子書籍,進入由Android的畫
26、筆類,通過調(diào)用BitmapFactory工廠方法onDraw繪制動態(tài)頁面效果,畫面產(chǎn)生獲取頁面坐標事件,根據(jù)坐標來判斷是向前翻頁還是向后翻頁,如圖5-3是向后翻頁: 圖 5-3 用戶閱讀界面6.4菜單點擊menu按鈕,就回出現(xiàn)選擇界面,增加書簽、查看書簽、退出閱讀。如圖5-4: 圖5-4 Menu菜單功能6.5書簽操作點擊添加書簽,會出現(xiàn)一個添加書簽的界面,如圖5-5圖 5-5 添加書簽點擊查看標簽就會出現(xiàn)相應文檔的標簽列表,如圖5-6 圖5-6 書簽列表長按某個選項就會刪除標簽。如圖5-6圖 5-7 刪除書簽如果取消則返回標簽界面,如果確定則刪除書簽。6.6書籍操作刪除文檔界面,從5-1圖中
27、刪除xyy2.txt長按菜單鍵,該功能是對于Android組件ListView的長按事件的添加監(jiān)聽功能,如圖5-8:圖5-8 刪除書籍6.7最近閱讀在閱讀過得書籍會添加進最近閱讀數(shù)據(jù)庫,方便用戶后期直接點擊進入閱讀,如圖5-9:圖5-9 最近閱讀列表6.8用戶登錄通過與服務器的連接獲取服務器提供了最新最熱的書籍推薦,先登陸可以記錄該用戶的下載記錄。如圖:圖5-10 在線登陸界面6.9在線中心圖5-11 服務器獲取的最新資源6.10性能分析6.10.1 概述及方案特點本軟件是利用java語言在android平臺上實現(xiàn)的一款閱讀軟件,使用起來方便,非常容易使用,也方便用戶的操作,最重要的特點就是實現(xiàn)簡單,沒有過于復雜冗余的操作。數(shù)據(jù)庫是使用sqlite3來進行存數(shù)。方案特點: (1)系統(tǒng)先進性本系統(tǒng)的先進性主要體現(xiàn)在能觸屏翻頁,能顯示已經(jīng)閱讀的進度,大大減少了占用用戶的時間,而且閱讀起來比較方便快捷。(2)系統(tǒng)可擴展性由于本系統(tǒng)是基于android系統(tǒng)手機開發(fā)的軟件,用java語言實現(xiàn),無論是可讀性,可維護性,還是可擴展性,都是比較優(yōu)越的。(3) 智能性增加列表顯示功能
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度影視制作合同(電影項目)
- 2024-2030年車座套公司技術(shù)改造及擴產(chǎn)項目可行性研究報告
- 2024-2030年船用錨鏈公司技術(shù)改造及擴產(chǎn)項目可行性研究報告
- 2024-2030年線形散流器公司技術(shù)改造及擴產(chǎn)項目可行性研究報告
- 2024年生物醫(yī)藥產(chǎn)品買賣合同
- 2024-2030年版中國多肽行業(yè)需求狀況及投資價值研究報告
- 2024-2030年版中國中央商務區(qū)建設(shè)行業(yè)發(fā)展形勢及投資戰(zhàn)略規(guī)劃分析報告
- 2024-2030年清洗及保潔服務公司技術(shù)改造及擴產(chǎn)項目可行性研究報告
- 2024年生態(tài)環(huán)保型室內(nèi)門采購合作協(xié)議范本3篇
- 2024年特色果樹種植與果實加工合同范本3篇
- 中職生家訪記錄內(nèi)容
- Q∕GDW 10250-2021 輸變電工程建設(shè)安全文明施工規(guī)程
- 客運企業(yè)雙重預防體系培訓(57頁)
- 新概念 二 Lesson 75 SOS
- 鋁合金壓鑄件的標準
- 吹風機成品過程質(zhì)量控制檢查指引
- 固定資產(chǎn)情況表
- 瀝青路面施工監(jiān)理工作細則
- 《彩色的中國》音樂教學設(shè)計
- 人教版八年級上冊英語單詞表默寫版(直接打印)
- 4.初中物理儀器配備目錄清單
評論
0/150
提交評論