freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

android安卓畢業(yè)論文-資料下載頁(yè)

2025-08-25 07:13本頁(yè)面

【導(dǎo)讀】手機(jī)圖書(shū)搜索系統(tǒng)的分析和設(shè)計(jì)

  

【正文】 元素的位置(通過(guò) ID 指定)。因此,可以以右對(duì)齊,或上下,或置于屏幕中央的形式來(lái)排列兩個(gè)元素。元素按順序排列,因此如果第一個(gè)元素在屏幕的中央,那么相對(duì)于這個(gè)元素的其它元素將以屏幕中央的相對(duì)位置來(lái)排列。如果使用 XML 來(lái)指定這個(gè) layout ,在你定義它之前,被關(guān)聯(lián)的元素必須定義。如圖 44 所示: android 安卓畢業(yè)論文 26 圖 44 RelativeLayout 效果圖 圖書(shū)信息管理模塊的活動(dòng)圖如圖 45 所示: 圖 45 圖書(shū)信息管理模塊活動(dòng)圖 圖書(shū)信息管理功能界面 當(dāng)數(shù)據(jù)庫(kù)里沒(méi)有圖書(shū)數(shù)據(jù)時(shí)圖書(shū)信息管理功能的界面運(yùn)行效果如 46, 47 所示: android 安卓畢業(yè)論文 27 圖 46 圖書(shū)信息管理系統(tǒng)界面 圖 47 按下 menu 按鈕以后的效果 public boolean onMenuItemSelected(int featureId, MenuItem item) { switch (()) { case INSERT_ID: createBook()。 return true。 case DELETE_ID: (getListView().getSelectedItemId())。 renderListView()。 return true。 android 安卓畢業(yè)論文 28 case FINSH: Intent i2 = new Intent(, )。 startActivity(i2)。 } return (featureId, item)。 } 上述代碼實(shí)現(xiàn)的功能是,點(diǎn)模擬器上的 menu按鈕以后,會(huì)在屏幕下方顯示一個(gè)菜單,菜單上有 3 個(gè)功能,第一個(gè)是添加一條圖書(shū)信息,第二個(gè)是刪除一條圖書(shū)信息,第三個(gè)是返回,即返回到系統(tǒng)的主界面。 public void renderListView() { mBookCursor = ()。 startManagingCursor(mBookCursor)。 String[] from = new String[] { , }。 int[] to = new int[] { , }。 SimpleCursorAdapter notes = new SimpleCursorAdapter(this, , mBookCursor, from, to)。 setListAdapter(notes)。 } 若數(shù)據(jù)庫(kù)里已經(jīng)存在圖書(shū)數(shù)據(jù),則這個(gè)方法可以把這些數(shù)據(jù)都顯示在界面上。代碼通過(guò) query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit)方法來(lái)查詢數(shù)據(jù)然后把查詢到的數(shù)據(jù)放到一個(gè) Cursor 當(dāng)中,這個(gè) Cursor 里封裝了數(shù)據(jù)表 book的所有條目。 Query方法包含了 7 個(gè)參數(shù),各個(gè)參數(shù)的說(shuō)明如下: table:表名。相當(dāng)于 select 語(yǔ)句 from關(guān)鍵字后面的部分。如果是多表聯(lián)合查詢,可以用 逗號(hào)將兩個(gè)表名分開(kāi)。 columns:要查詢出來(lái)的列名。相當(dāng)于 select 語(yǔ)句 select 關(guān)鍵字后面的部分。 selection:查詢條件子句,相當(dāng)于 select 語(yǔ)句 where 關(guān)鍵字后面的部分,在條件子句允許使用占位符 ―?‖ selectionArgs:對(duì)應(yīng)于 selection語(yǔ)句中占位符的值,值在數(shù)組中的位置與占位符在語(yǔ)句中的位置必須一致,否則就會(huì)有異常。 groupBy:相當(dāng)于 select 語(yǔ)句 group by關(guān)鍵字后面的部分 android 安卓畢業(yè)論文 29 having:相當(dāng)于 select 語(yǔ)句 having關(guān)鍵字后面的部分 orderBy:相當(dāng)于 select 語(yǔ)句 order by關(guān)鍵字后面的部分,如: personid desc, age asc。 Cursor 是結(jié)果集游標(biāo),用于對(duì)結(jié)果集進(jìn)行隨機(jī)訪問(wèn), Cursor 與 JDBC 中的 ResultSet作用很相似。使用 moveToNext()方法可以將游標(biāo)從當(dāng)前行移動(dòng)到下一行,如果已經(jīng)移過(guò)了結(jié)果集的最后一行,返回結(jié)果為 false,否則為 true。另外 Cursor 還有常用的 moveToPrevious()方法(用于將游標(biāo)從當(dāng)前行移動(dòng)到上一行,如果已經(jīng)移過(guò)了結(jié)果集的第一行,返回值為false,否則為 true)、 moveToFirst()方法(用于將游標(biāo)移動(dòng)到結(jié)果集的第一行,如果結(jié)果集為空,返回值為 false,否則為 true)和 moveToLast()方法(用于將游標(biāo)移動(dòng)到結(jié)果集的最后一行,如果結(jié)果集為空,返回值為 false,否則為 true)。 創(chuàng)建表和數(shù)據(jù)庫(kù) private static final String DATABASE_CREATE = create table book (_id integer primary key autoincrement, + title text not null, author text not null, publish text not null, price1 text not null, price2 text not null, tip text not null, created text not null)。 public void onCreate(SQLiteDatabase db) { (DATABASE_CREATE)。} 在上述代碼中, DatabaseHelper繼承了 SQLiteOpenHelper類,并重寫(xiě)了 onCreate和onUpgrade方法。在 onCreate()方法里,首先我們構(gòu)造一條 SQL語(yǔ)句,然后調(diào)用 ( sql)方法執(zhí)行 SQL語(yǔ)句。這條 SQL語(yǔ)句為我們生成一張數(shù)據(jù)表。目前我們還不需要升級(jí)數(shù)據(jù)庫(kù),所以我們?cè)?onUpgrade()函數(shù)里沒(méi)有執(zhí)行任何操作。 SQLiteOpenHelper是一個(gè)輔助類,此類主要用于生成一個(gè)數(shù)據(jù)庫(kù),并對(duì)數(shù)據(jù)庫(kù)的版本進(jìn)行管理。當(dāng)在程序當(dāng)中調(diào)用這個(gè)類的 getWritableDatabase()方法或者 getReadableDatabase()方法時(shí),如果當(dāng)時(shí)沒(méi)有數(shù)據(jù),那么 Android系統(tǒng)就會(huì)自動(dòng)生成一個(gè)數(shù)據(jù)庫(kù)。SQLiteOpenHelper是一個(gè)抽象類,我們通常需要繼承它,并且實(shí)現(xiàn)里邊的 3個(gè)函數(shù),以下是各個(gè)函數(shù)的具體說(shuō)明: onCreate( SQLiteDatabase):早數(shù)據(jù)庫(kù)第一次生成的時(shí)候會(huì)調(diào)用這個(gè)方法,一般我們?cè)谶@個(gè)方法里生成數(shù)據(jù)庫(kù)表。 onUpgrade( SQLiteDatabase, int, int):當(dāng)數(shù)據(jù)庫(kù)需要升級(jí)的時(shí)候, Android系統(tǒng)會(huì)主動(dòng)調(diào)用這個(gè)方法。一般我們?cè)谶@個(gè)方法里變刪除數(shù)據(jù)表,并建立新的數(shù)據(jù)表,當(dāng)然是否 還需要做其他的操作,完全取決于應(yīng)用的需求。 onOpen( SQLiteDatabase):這是打開(kāi)數(shù)據(jù)庫(kù)時(shí)的回調(diào)函數(shù),一般也不會(huì)用到。 android 安卓畢業(yè)論文 30 添加數(shù)據(jù) 點(diǎn) menu 然后選擇 ―添加 ‖就能進(jìn)入添加頁(yè)面,輸入圖書(shū)的相關(guān)信息點(diǎn)確定完成操作,添加完一條信息以后該條信息中的書(shū)名就會(huì)顯示在圖書(shū)信息管理的界面上,書(shū)名后面還有該條信息被創(chuàng)建的時(shí)間。添加數(shù)據(jù)功能的運(yùn)行效果如圖 48, 49, 410 所示。 圖 48 添加功能界面 圖 49 添加一條圖書(shū)信息 android 安卓畢業(yè)論文 31 410 添加的圖書(shū)信息顯示在圖書(shū)信息管理的界面上 public long createBook(String title, String author,String publish,String price1,String price2,String tip) { ContentValues initialValues = new ContentValues()。 (KEY_TITLE, title)。 (KEY_AUTHOR ,author)。 (KEY_PUBLISH ,publish)。 (KEY_PRICE1 ,price1)。 (KEY_PRICE2, price2)。 (KEY_TIP, tip)。 Calendar calendar = ()。 String created = () + 年 + () + 月 + () + 日 + () + 時(shí) + () + 分 。 (KEY_CREATED, created)。 return (DATABASE_TABLE, null, initialValues)。 } 上述代碼添加了一條圖書(shū)信息,包括圖書(shū)的書(shū)名、作者、出版社、原價(jià)、現(xiàn)價(jià)、注備和創(chuàng)建的時(shí)間。 Insert()方法用于添加數(shù)據(jù) ,各個(gè)字段的數(shù)據(jù)使用 ContentValues進(jìn)行存放。ContentValues類似于 MAP,相對(duì)于 MAP,它提供了存取數(shù)據(jù)對(duì)應(yīng)的 put(String key, Xxx value)android 安卓畢業(yè)論文 32 和 getAsXxx(String key)方法 ,key為字段名稱 ,value為字段值 ,Xxx指的是各種常用的數(shù)據(jù)類型,如 :String、 Integer等。 不管第三個(gè)參數(shù)是否包含數(shù)據(jù),執(zhí)行 Insert()方法必然會(huì)添加一條記錄,如果第三個(gè)參數(shù)為空,會(huì)添加一條除主鍵之外其他字段值為 Null 的記錄。 Insert()方法內(nèi)部實(shí)際上通過(guò)構(gòu)造 insert SQL 語(yǔ)句完成數(shù)據(jù)的添加, Insert()方法的第二個(gè)參數(shù)用于指定空值字段的名稱,相信大家對(duì)該參數(shù)會(huì)感到疑惑,該參數(shù)的作用是:如果第三個(gè)參數(shù) values 為 Null 或者元素個(gè)數(shù)為 0,由于 Insert()方法要求必須添加一條除了主鍵之外其它字段為 Null 值的記錄,為了滿足 SQL 語(yǔ)法的需要, insert 語(yǔ)句必須給定一個(gè)字段名,如: insert intoperson(name) values(NULL),倘若不給定字段名, insert 語(yǔ)句就成了這樣: insert into person() values(),顯然這不滿足標(biāo)準(zhǔn) SQL 的語(yǔ)法。對(duì)于字段名,建議使用主鍵之外的字段,如果使用了INTEGER 類型的主鍵字段,執(zhí)行類似 insert into person(personid) values(NULL)的 insert 語(yǔ)句后,該主鍵字段值也不會(huì)為 NULL。如果第三個(gè)參數(shù) values 不為 Null 并且元素的個(gè)數(shù)大于 0,可以把第二個(gè)參數(shù)設(shè)置為 null。 刪除數(shù)據(jù) 選 擇一條數(shù)據(jù),然后點(diǎn) menu選擇刪除選項(xiàng)就能刪除選中的一條數(shù)據(jù)。刪除數(shù)據(jù)功能的運(yùn)行效果如圖 411, 412所示。 圖 411 選中一條數(shù)據(jù) android 安卓畢業(yè)論文 33 圖 412 刪除數(shù)據(jù) public boolean deleteBook(long rowId) { return (DATABASE_TABLE, KEY_ROWID + = + rowId, null) 0。} 在上述代碼中,通過(guò) (String table, String whereClause, String [] whereArgs)語(yǔ)句刪除了一條編號(hào)為 rowID的數(shù)據(jù)。當(dāng)然,如果有很多條數(shù)據(jù)的編號(hào)都為 rowID,那么一并刪除。本系統(tǒng)中編號(hào)是圖書(shū)表的主鍵并且自動(dòng)增長(zhǎng),不會(huì)出現(xiàn)兩個(gè)相同的編號(hào)。 Delete方法各個(gè)參數(shù)的具體說(shuō)明如下: 第 1個(gè)參數(shù)是數(shù)據(jù)庫(kù)表名,在這里是 DATABASE_TABLE,也就是 book。 第 2個(gè)參數(shù),相當(dāng)于 SQL語(yǔ)句當(dāng)中的 where部分,也就是刪除的條件。 如果在第 2個(gè)參數(shù)當(dāng)中有問(wèn)號(hào)(?),那么第 3個(gè)參數(shù)中的字符串會(huì)依次替換第 2個(gè)參數(shù)中出現(xiàn)的問(wèn)號(hào)(?)。 修改數(shù)據(jù) 修改 數(shù)據(jù)功能的實(shí)現(xiàn)是依靠添加數(shù)據(jù)功能來(lái)完成的。點(diǎn)擊圖書(shū)信息管理界面上的一條圖書(shū)數(shù)據(jù),然后會(huì)進(jìn)入添加界面,但是該界面的文本框中的值不再是空的,而是填充的該書(shū)相應(yīng)的信息。修改文本框中的數(shù)據(jù)然后點(diǎn)確定完成修改操作,被修改的相關(guān)數(shù)據(jù)和圖書(shū)信息管理界面上顯示的時(shí)間都會(huì)被更新。數(shù)據(jù)修改功能的運(yùn)行效果如圖 413, 414 所示: android 安卓畢業(yè)論文 34 圖 413 修改圖書(shū)信息 圖 414 時(shí)間發(fā)生了變化 查詢及顯示結(jié)果模塊的實(shí)現(xiàn) 本模塊的功能是在系統(tǒng)的 , , 三個(gè)類中定義和實(shí)現(xiàn)的,模塊的界面為 , 和 。 采用了 LinearLayout 布局, 采用了 RelativeLayout 布局, 采用了TableLayout 布局。查詢界面如圖 415 所示。 android 安卓畢業(yè)論文 35 圖 415 查詢界面 TableLayout 將子元素的位置分配到行或列中。一個(gè) TableLayout 由許多的 TableRow 組成,每個(gè) TableRow 都會(huì)定義一個(gè) row ( 事實(shí)上,你可以定義其它的子對(duì)象,這在下面會(huì)解釋到)。 TableLay
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1