私廚--課設報告

 

 

 

 

 

 

 

Android應用程序開發java

課程設計報告android

2019—2020學年 第Ⅰ學期)sql

基於Android的家庭菜譜系統數據庫

 

 

               信息與控制工程           app

              計算機科學與技術          eclipse

                   1701                 數據庫設計

                 榮瑞瑞                ide

指導教師                                佈局

 

 

 

 

 

 

目錄測試

TOC \o "1-2" \h \u 1、摘要 1

2、課設題目 1

3、系統設計 2

4、系統測試 6

5、系統實現 9

附件                                        22

 

 

 

 

 

1、摘要

近些年,美團外賣、餓了麼等一些訂餐軟件席捲而來,訂餐彷佛成爲了人們解決吃飯問題的最重要途徑。可是當消費者在不熟悉地區時,訂餐的弊端就凸顯了出來,消費者難以尋找適合本身的餐館、仍是必需要進入到實體的飯店內點餐,這時,訂餐軟件就如同一個不太美觀的圖標用着龐大的內存資料卻無用武之地。

本款私廚APP主要是一款移動菜譜。主要用於家庭間的菜譜分享與教學,咱們主張一個家庭申請一個帳號,家人們共同分享資源,共同留言交流。它脫離龐大的信息羣,讓一個小家成爲一個私人的小圈,經過分享菜譜的方式增強親人們之間的交流。本移動軟件連接了SQLite數據庫用於存放數據,搭建在eclipse環境上開發。

2、課設題目

(一)選題目的

目前我國餐飲行業的訂餐、點菜等服務大多數仍採用傳統的訂餐模式,以人力和物理菜單爲主。這種傳統訂餐模式具備如下幾個方面的缺陷:一是餐飲企業的工做人員重複勞動量大,頻繁的往返於客人,前臺與廚房之間,稍有不慎還會出現漏單、錯單。二是消費者在不熟悉的地區難以尋找附近適合本身喜愛的餐館。三是隻在餐館內才能夠看到菜譜並開始點菜,點菜以後又要進行漫長的等待,大大浪費了消費者的時間。四是靜態的物理菜單並不能即時更新,更不能反映菜譜上各種菜餚的具體評價。綜上,在現代城市生活快節奏和建設智慧城市的背景下,傳統的訂餐模式已經不能知足消費者的需求,也將制約餐飲業的發展。

(二)UML需求用例圖及用例分析說明

用例分析說明

登陸:登陸頁面用戶輸入帳號和密碼進行登陸

首頁:首頁能夠看到最新推出的活動,以及用戶們分享的傳家菜

 

添加信息:在個人菜譜頁面,用戶須要添加菜譜名、菜譜詳情,這些數據會被存儲到SQLite數據庫中

查詢信息:在個人菜譜頁面,用戶能夠輸入菜譜名查詢菜譜,這些數據會從數據庫中調取出來

刪除信息:在個人菜譜頁面,用戶能夠刪除已添加的菜譜信息,這些數據會從數據庫中刪除

 

 

 

3、系統設計

(一)系統整體設計

 

 

 

(二)系統數據庫設計

名稱

數據類型

長度

約束

id

INTEGER

 

PRIMARY KEY AUTOINCREMENT

name

VARCHAR

20

 

Details

VARCHAR

20

 

 

id

Name

Details

1

龍鬚麪

1.和麪。面軟適度,搋揉光滑、柔韌;

2.溜條、抻條。抓面兩頭,均勻用力,上下抖動。交叉換位,反覆交叉,把面溜、溜順;長條上案,兩手按條,左手向裏、右手向外,搓條上勁,提起兩頭,一抖一抻,再上案板,對摺兩根、撒上醭面,條不粘連,以此...

3.油炸。要注意油溫不要高、操做要三輕即將抻好的面絲輕放油鍋,用筷子輕撥面絲,炸至硬挺,呈淺乳黃色,輕撈出鍋,制鹹的龍鬚麪。面絲均勻,不併條,不斷條,香甜脆爽。

 

2

餃子

1.通常餃1號 作法: 1.餃子皮攤平放在桌上 2.將餡料放入 3.將兩邊的餃子皮從中間捏緊 4.兩邊再捏好便可。

2.通常餃2號 作法: 1.將餃子皮攤平,放入餡料 2. 對摺,不要黏在一塊,用手託着 3.而後順着一邊捏出皺紋 4.一直到捏好爲止。

3.波波餃 作法: 1.將餃子皮攤平,放入餡料 2.將餃子兩邊對摺,按好 3.用刮板將餃子壓出波紋(還有一種是手壓,但刮板更方便一些) 4.壓好的餃子。

4.蛤蜊餃 作法: 1.將餃子皮攤平,放入餡料 2.將兩邊的皮對摺,並向中間靠攏 3.再將兩邊捏緊了 4.再捏成波紋這個餃子花紋的捏法在這裏。

5.馬蹄餃: 作法: 1.將餃子皮攤平,放入餡料 2.將兩邊捏好 3.將餃子兩邊彎曲後,向中間靠攏 4.再捏緊便可。

 

3

胡辣湯

起鍋燒油放入肉絲翻炒1分鐘,再放入醬油和海帶翻炒出香味,以後加水燒開,放入千張絲和鹽攪拌均勻。最後等鍋內再次燒開後,加入調至好的生粉水和蛋液攪拌燒開,倒入盤內撒上蔥花和香油,一份美味的胡辣湯就作好了。

(三)系統詳細設計
1.登陸界面

編號

輸入

處理

輸出

1

帳號和密碼

與設定值相等

登錄成功進入首頁

2

帳號和密碼

與設定值不等

登錄失敗

 

編號

輸入

處理

輸出

1

首頁查看詳情

跳轉到詳情頁面

顯示詳情頁面

 

(四)各模塊實現

登陸模塊:登陸頁面上會顯示帳戶和密碼,使用EditText組件,讓用戶輸入帳戶和密碼,經過設置setOnClickListener()監聽按鈕事件,使用onCreat方法,經過調用Intent類展現用戶「意圖」實現頁面跳轉,設置原始密碼後,若是用戶輸入的密碼和帳戶與其相同,則觸發跳轉動做,若不一樣,則經過Toast彈出框顯示「登錄失敗」

首頁模塊:主要用到ImageView組件,LieanerLayout佈局嵌套實現詞條與底部導航,這一部分是實現點擊按鈕跳轉到對應的頁面的功能

個人菜譜模塊:使用了SQLite數據庫,實現了用戶對信息的添加、查詢、修改、刪除的功能,同時經過Listview顯示用戶信息時

菜譜詳情模塊:實現了Activity之間的跳轉,顯示了菜譜的具體實現步驟

(五)UML設計
1.UML時序圖

 

 

 

2. 系統類圖

 

 

 

4、系統測試

本次課程設計所用的開發環境爲:eclipse

開發技術:Android

數據庫:SQLite數據庫

(一)測試登陸頁面

點擊登陸,顯示登錄成功或登錄失敗

 

 

 

(二)測試主界面
1. 首頁

 

 

 

2. 添加測試

添加信息後顯示「添加成功」

 

 

 

 

3. 刪除測試

刪除信息,顯示「已刪除」

 

 

 

4.查詢測試

 

 

 

5、系統實現        

)界面佈局

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.example.sichu"

    android:versionCode="1"

    android:versionName="1.0" >

 

    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="18" />

 

    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name="com.example.sichu.login"

            android:label="@string/login_name">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

 

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        <activity

            android:name="com.example.sichu.MainActivity"

            android:label="@string/app_name">

        </activity>

        <activity

            android:name="com.example.sichu.upload"

            android:label="@string/app_name"></activity>

        <activity

            android:name="com.example.sichu.MyActiviity"

            android:label="@string/app_name">

            

        </activity>

    </application>

 

</manifest>

btn_shape  

//定義一個樣式,實現按鈕圓角

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle">

    <solid

        android:color="#eeeeee"/>

    <stroke android:color="#eeeeee" android:width="0dp"/>

    <corners android:radius="80dp"/>

    <padding

        android:bottom="3dp"

        android:left="3dp"

        android:right="3dp"

        android:top="3dp"/>

 

</shape>

1.登陸頁面

 

 

 

 

 

代碼:

//相對佈局

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    android:background="@drawable/login" >

    

    <ImageView

        android:id="@+id/login_icon"

        android:src="@drawable/icon"

        android:layout_height="70dp"

        android:layout_width="70dp"

        android:layout_marginTop="100dp"

        android:layout_marginLeft="140dp" />

 

 

    <EditText

        android:id="@+id/login_et"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_marginTop="190dp"

        android:editable="true"

        android:hint="請輸入帳號" />

    <EditText

        android:id="@+id/login_ps"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_marginTop="250dp"

        android:editable="true"

        android:hint="請輸入密碼"

        android:password="true" />

 

    <Button

        android:id="@+id/login_bt"

        android:layout_width="200dp"

        android:layout_height="50dp"

        android:layout_marginTop="320dp"

        android:background="@drawable/btn_shape"

        android:layout_marginLeft="80dp"

        android:text="登    錄"

        android:textColor="#ffa54f"

        android:textSize="15dp"

        /></RelativeLayout>

2.首頁

 

 

 

 

 

代碼:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >

    <ImageView

        android:id="@+id/index_image"

        android:layout_height="190dp"

        android:layout_width="match_parent"

        android:layout_below="@+id/tab_title"

        android:src="@drawable/index"

        android:padding="0dp"

        android:layout_margin="0dp"/>

    <TextView

        android:id="@+id/wodecaipu"

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:layout_below="@+id/index_image"

        android:text="個人傳家菜譜"

        android:gravity="center"

        android:textColor="#ffa54f"/>

    <View

            android:layout_width="match_parent"

            android:layout_height="1dp"

            android:layout_below="@+id/wodecaipu"

            android:background="#eeeeee"/>

    <LinearLayout

        android:id="@+id/show"

        android:layout_width="match_parent"

        android:layout_height="80dp"

        android:orientation="horizontal"

        android:layout_below="@+id/wodecaipu">

        <ImageView

         android:id="@+id/index_img"

         android:layout_width="0dp"

          android:layout_height="110dp"

          android:layout_weight="2"

         android:layout_below="@+id/wodecaipu"

         android:src="@drawable/ganguo"/>

     <TextView

         android:id="@+id/index_tv"

         android:layout_width="wrap_content"

         android:layout_height="wrap_content"

         android:text="幹鍋土豆"

         android:layout_marginTop="30dp"

         android:textSize="22sp"

         android:ems="4"

         android:layout_weight="3"

         android:gravity="center"

         android:textColor="#ffa54f"

        />

    </LinearLayout>

    <Button

        android:id="@+id/index_btn"

         android:layout_width="wrap_content"

         android:layout_height="30dp"

         android:text="查看詳情"

         android:layout_marginLeft="240dp"

         android:textColor="#ffa54f"

         android:layout_below="@+id/show"

         android:textSize="10dp"

         android:background="@drawable/btn_shape"/>

     <View

            android:layout_width="match_parent"

            android:layout_height="1dp"

            android:layout_below="@+id/index_btn"

            android:background="#eeeeee"/>

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="56dp"

        android:orientation="horizontal"

        android:layout_alignParentBottom="true">

 

        <TextView

            android:id="@+id/txt_index"

            android:layout_width="0dp"

            android:layout_height="match_parent"

            android:layout_weight="1"

            android:background="#ffffff"

            android:drawablePadding="3dp"

            android:gravity="center"

            android:textColor="#ffa54f"

            android:text="首頁"/>

 

        <TextView

            android:id="@+id/txt_my"

            android:layout_width="0dp"

            android:layout_height="match_parent"

            android:layout_weight="1"

            android:background="#ffffff"

            android:drawablePadding="3dp"

            android:gravity="center"

            android:textColor="#111111"

            android:text="個人菜譜"/>

       

</LinearLayout>

</RelativeLayout>

3.菜譜詳情

 

 

 

 

 

代碼:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

    

    <TextView

        android:id="@+id/upload_null"

        android:layout_height="wrap_content"

        android:layout_width="wrap_content"

        android:text="返回"

        android:layout_margin="10dp"

        android:textSize="20sp"

        android:textColor="#ffa54f" />

 

    <ImageView

        android:id="@+id/upload_img"

        android:layout_width="230dp"

        android:layout_height="150dp"

        android:layout_gravity="center"

        android:src="@drawable/ganguo" />

    <TextView

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:text="烹飪步驟"

        android:gravity="center"

        android:textColor="#ffa54f"

        android:textStyle="bold" />

    <TextView

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:text="1.把全部的菜洗淨 用水抄一下 瀝乾水分"

        android:gravity="center"

        android:textColor="#778899" />

    <TextView

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:text="2.鍋裏放油最好多放一些,將喜歡吃的菜倒入鍋中 加少量水 加入豆瓣醬 屢次翻抄"

        android:gravity="center"

        android:textColor="#778899" />

    <TextView

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:text="小貼士"

        android:gravity="center"

        android:textColor="#ffa54f"

        android:textStyle="bold" />

    <TextView

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:text="放入本身喜歡的蔬菜便可 沒有多大講究 本身喜歡吃什麼就放什麼"

        android:gravity="center"

        android:textColor="#778899" />

     

    

</LinearLayout>

4.個人菜譜

 

 

 

 

代碼:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    android:background="#ffffff" 

    android:layout_marginTop="5dp">

    <LinearLayout

        android:layout_width="wrap_content"

        android:layout_height="100dp"

        android:orientation="horizontal">

        <ImageView

            android:layout_width="70dp"

            android:layout_height="70dp"

            android:layout_margin="5dp"

            android:background="@drawable/btn_shape"

            android:src="@drawable/head_icon" />

        <TextView

            android:layout_width="0dp"

            android:layout_height="90dp"

            android:gravity="center"

            android:text="暮小晨"

            android:textColor="#ffa54f"

            android:layout_weight="1"

            android:textSize="22sp"

            />

    </LinearLayout>

     <TextView

        android:id="@+id/wodecaipu"

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:layout_below="@+id/index_image"

        android:text="個人菜譜管理"

        android:gravity="center"

        android:textColor="#ffa54f"/>

    <EditText

            android:id="@+id/et_name"

            android:layout_height="wrap_content"

            android:layout_width="match_parent"

            android:hint="請輸入菜譜名"/>

    <EditText

            android:id="@+id/et_details"

            android:layout_height="wrap_content"

            android:layout_width="match_parent"

            android:hint="請輸入步驟"/>

    

    <LinearLayout

        android:id="@+id/sql_layout"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal">

        <Button

            android:id="@+id/btn_add"

            android:layout_height="wrap_content"

            android:layout_width="0dp"

            android:layout_weight="1"

            android:textColor="#ffa54f"

            android:text="添加"/>

        <Button

            android:id="@+id/btn_query"

            android:layout_height="wrap_content"

            android:layout_width="0dp"

            android:layout_weight="1"

            android:textColor="#ffa54f"

            android:text="查詢"/>

        <Button

            android:id="@+id/btn_delect"

            android:layout_height="wrap_content"

            android:layout_width="0dp"

            android:layout_weight="1"

            android:textColor="#ffa54f"

            android:text="刪除"/>

    </LinearLayout>

    <ListView

        android:id="@+id/lvshow"

        android:layout_width="wrap_content"

        android:layout_height="145dp"/>

    

        <LinearLayout

        android:id="@+id/tab_menu"

        android:layout_width="match_parent"

        android:layout_height="56dp"

        android:orientation="horizontal"

        android:layout_marginTop="180dp">

 

        <TextView

            android:id="@+id/txt_index"

            android:layout_width="0dp"

            android:layout_height="match_parent"

            android:layout_weight="1"

            android:background="#ffffff"

            android:drawablePadding="3dp"

            android:gravity="center"

            android:textColor="#111111"

            android:text="首頁"/>

 

 

        <TextView

            android:id="@+id/txt_my"

            android:layout_width="0dp"

            android:layout_height="match_parent"

            android:layout_weight="1"

            android:background="#ffffff"

            android:drawablePadding="3dp"

            android:gravity="center"

            android:textColor="#ffa54f"

            android:text="個人菜譜"/>

    </LinearLayout>

    

 

</LinearLayout>

5.item ListView內容填充

 

代碼:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="horizontal" >

    <LinearLayout

        android:layout_width="wrap_content"

        android:layout_height="match_parent"

        android:orientation="vertical">

        

    <TextView

        android:id="@+id/itemName"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_gravity="center"

        android:layout_margin="5dp"

        android:layout_marginLeft="10dp"

        android:textSize="18sp"

        android:textColor="#444444"

        android:textStyle="bold"

        android:ems="10"/>

    <TextView

        android:id="@+id/itemContent"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_gravity="center"

        android:layout_marginLeft="10dp"

        android:maxLines="1"

        android:ellipsize="end"

        />

    </LinearLayout>

 

</LinearLayout>

 

附件:

1、課設題目

基於Android的家庭菜譜系統

、技術說明

1.Activity之間的跳轉

引用Intent類,實現Activity之間的跳轉以及數據的傳遞與回傳

2. Sqlite數據庫

導入SQLiteDatabase,SQLiteOpenHelper包,調用安卓內嵌數據庫進行數據傳遞,實現數據的添加,查詢,修改,刪除功能

3.控件的使用

Textview 、Button、Edittext、ImageView Listview

4.Listview的使用

在使用ListView進行添加數據時,會用到數據適配器,用來搭建數據與視圖之間的橋樑,將複雜的數據轉換成用戶能夠接受的方式進行呈現

5.事件的監聽

SetOnClickListener()方法監聽事件,多用在跳轉時

6.頁面佈局

使用線性佈局(LinearLayout)、相對佈局(RelativeLayout)

7.Toast彈窗

輕量級信息提醒機制,向用戶提示及時信息,用於登陸頁及數據增刪改查時

3、UML類圖

 

 

 

4、代碼

 

清單文件(即AndroidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.example.sichu"

    android:versionCode="1"

    android:versionName="1.0" >

 

    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="18" />

 

    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name="com.example.sichu.login"

            android:label="@string/login_name">

            <intent-filter>  //設置初始界面

                <action android:name="android.intent.action.MAIN" />

 

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        <activity

            android:name="com.example.sichu.MainActivity"

            android:label="@string/app_name">

        </activity>

        <activity

            android:name="com.example.sichu.upload"

            android:label="@string/app_name"></activity>

        <activity

            android:name="com.example.sichu.MyActiviity"

            android:label="@string/app_name">

            

        </activity>

    </application>

 

</manifest>

佈局文件:

  1. 佈局文件

 

 

 

2.Java文件

 

 

 

Java源碼

 

 

 

Caipiadapter.java文件 設置適配器

//設置listview

package adapter;

 

import java.util.List;

 

import org.eclipse.jdt.annotation.NonNull;

import org.eclipse.jdt.annotation.Nullable;

 

import com.example.sichu.R;

 

import entity.caipu;

 

import android.content.Context;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.TextView;

 

public class caipiadapter extends BaseAdapter {

    private List<caipu> list;

    private LayoutInflater layoutInflater;

    public caipiadapter(Context context, List<caipu> list){

        this.layoutInflater = LayoutInflater.from(context);

        this.list = list;

    }

    @Override

    public int getCount() {

        Log.e("yanwenhua","list.size()--"+list.size());

        return list.size();

    }

 

    @Override

    public Object getItem(int position) {

        return null;

    }

 

    @Override

    public long getItemId(int position) {

        return 0;

    }

 

    @Override

    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder viewHolder;

        if (convertView==null){

            convertView=layoutInflater.inflate(R.layout.item,null);

            viewHolder=new ViewHolder(convertView);

            convertView.setTag(viewHolder);

        }else {

            viewHolder=(ViewHolder) convertView.getTag();

        }

        caipu caipu = list.get(position);

        viewHolder.tv_name.setText("菜譜:"+caipu.getConName());

        viewHolder.tv_details.setText("菜譜詳情:"+caipu.getCondetails());

        Log.e("yanwenhua","cartBean.getName()-"+caipu.getConName()+"  "+caipu.getCondetails()+"  ");

        return convertView;

    }

    class ViewHolder{

        TextView tv_name;

        TextView tv_details;

        public ViewHolder(View view){

            tv_name = (TextView) view.findViewById(R.id.itemName);

            tv_details = (TextView) view.findViewById(R.id.itemContent);

        }

    }

 

}

Caipu.java //設置實體類,用於數據的獲取與傳遞

package entity;

 

public class caipu {

private Integer conId;

    private String conName;

    private String condetails;

    public caipu(Integer conId, String conName, String condetails) {

super();

this.conId = conId;

this.conName = conName;

this.condetails = condetails;

}

 

public caipu() {

// TODO Auto-generated constructor stub

}

 

    

public Integer getConId() {

return conId;

}

public void setConId(Integer conId) {

this.conId = conId;

}

public String getConName() {

return conName;

}

public void setConName(String conName) {

this.conName = conName;

}

public String getCondetails() {

return condetails;

}

public void setCondetails(String condetails) {

this.condetails = condetails;

}

 

 

 

 

 

}

Login.java //對應登陸頁面

package com.example.sichu;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Toast;

 

public class login extends Activity {

@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_login);

        

        Button Login =(Button) findViewById(R.id.login_bt);

Login.setOnClickListener(new View.OnClickListener(){

 

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

            EditText admin= (EditText) findViewById(R.id.login_et);

            EditText password= (EditText) findViewById(R.id.login_ps);

            String admin1=admin.getText().toString().trim();

            String password1=password.getText().toString().trim();

            // TODO Auto-generated method stub

            if("123456".equals(admin1)&&"123".equals(password1)){

                Intent intent=new Intent(login.this,MainActivity.class);

                startActivity(intent);

            }else{

                Toast.makeText(login.this,"登陸失敗",Toast.LENGTH_LONG).show();

            }

        }

    });

// Intent intent=new Intent(login.this,MainActivity.class);

//         startActivity(intent);

// }

// });

    

// Button Login =(Button) findViewById(R.id.login_bt);

//    Login.setOnClickListener(new View.OnClickListener() {

//        TextView textView;

//        @Override

//        public void onClick(View view) {

 

}

 

 

}  

MainActivity.java //對應主頁

package com.example.sichu;

 

import java.util.ArrayList;

import java.util.List;

 

import entity.caipu;

 

import adapter.caipiadapter;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.Menu;

import android.view.View;

import android.widget.Button;

import android.widget.ListView;

import android.widget.TextView;

 

public class MainActivity extends Activity {

 

 

 

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        

        TextView my =(TextView) findViewById(R.id.txt_my);

my.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

Intent intent=new Intent(MainActivity.this,MyActiviity.class);

        startActivity(intent);

}

});

Button btn =(Button) findViewById(R.id.index_btn);

btn.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

Intent intent=new Intent(MainActivity.this,upload.class);

        startActivity(intent);

}

});

        

        

    }

 

    

}

MyActiviity.java //對應個人菜譜頁

package com.example.sichu;

 

import java.util.ArrayList;

import java.util.List;

 

 

import entity.caipu;

import adapter.caipiadapter;

import android.app.Activity;

import android.content.ContentValues;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.Toast;

 

public class MyActiviity extends Activity implements View.OnClickListener{

private List<caipu> consList = new ArrayList();

MyHelper helper;

private EditText et_name,et_details;

    private ListView listView;

    private String name,details;

    private SQLiteDatabase db;

 

@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.my);

        

        et_name = (EditText)findViewById(R.id.et_name);

        et_details =  (EditText)findViewById(R.id.et_details);

        listView = (ListView)findViewById(R.id.lvshow);

        Button add = (Button)findViewById(R.id.btn_add);

        Button query =(Button) findViewById(R.id.btn_query);

        Button delete = (Button)findViewById(R.id.btn_delect);

        add.setOnClickListener(this);

        query.setOnClickListener(this);

        delete.setOnClickListener(this);

        helper = new MyHelper(this);

        

        

        TextView my =(TextView) findViewById(R.id.txt_index);

my.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

Intent intent=new Intent(MyActiviity.this,MainActivity.class);

        startActivity(intent);

}

});

}

 

 

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

switch (v.getId()){

        case R.id.btn_add:

            db = helper.getWritableDatabase();

            name = et_name.getText().toString();

            details = et_details.getText().toString();

            ContentValues values = new ContentValues();        //建立ContentValues對象

            values.put("name", name);             //將數據添加到ContentValues對象

            values.put("details", details);

            db.insert("info", null, values);

            db.close();

            Toast.makeText(this, "菜譜已添加", Toast.LENGTH_SHORT).show();

            break;

        case R.id.btn_query:

            Log.e("yanwenhua","123");

            List<caipu> list = new ArrayList();

            db = helper.getWritableDatabase();

            Cursor cursor = db.query("info", null, null, null, null,

                    null, null);

            if (cursor.getCount() == 0) {

                Toast.makeText(this, "尚未編輯沒法查看", Toast.LENGTH_SHORT).show();

            } else {

                while (cursor.moveToNext()) {

                    caipu caipu = new caipu();

                    int nameIndex = cursor.getColumnIndex("name");

                    int detailsIndex = cursor.getColumnIndex("details");

                    String name = cursor.getString(nameIndex);

                    String details = cursor.getString(detailsIndex);

                    Log.e("yanwenhua","cursor.getCount();--"+cursor.getCount()+"name-"+name+"  "+details+"  ");

                    caipu.setConName(name);

                    caipu.setCondetails(details);

                    list.add(caipu);

                }

                caipiadapter adapter = new caipiadapter(MyActiviity.this,list);

                listView.setAdapter(adapter);

                adapter.notifyDataSetChanged();

            }

            cursor.close();

            db.close();

            break;

        case R.id.btn_delect:

            db = helper.getWritableDatabase();

            db.delete("info", null, null);

            List<caipu> list2 = new ArrayList();

            caipiadapter adapter = new caipiadapter(MyActiviity.this,list2);

            listView.setAdapter(adapter);

            adapter.notifyDataSetChanged();

            db.close();

            Toast.makeText(this, "菜譜已刪除", Toast.LENGTH_SHORT).show();

            break;

    }

 

 

}

}

Upload.java//對應菜譜詳情頁

package com.example.sichu;

 

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.TextView;

 

public class upload extends Activity{

@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.upload);

        

        TextView canel =(TextView) findViewById(R.id.upload_null);

canel.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

Intent intent=new Intent(upload.this,MainActivity.class);

        startActivity(intent);

}

});

        

}

}

MyHelper.java// SQLite數據庫實現

package com.example.sichu;

 

import android.content.ContentValues;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

 

public class MyHelper extends SQLiteOpenHelper{

private SQLiteDatabase sqLiteDatabase;

        public MyHelper(Context context){

            super(context,"caipu.db",null,1);

            sqLiteDatabase=this.getWritableDatabase();

        }

 

@Override

public void onCreate(SQLiteDatabase db) {

// TODO Auto-generated method stub

db.execSQL("create table info(id integer primary key autoincrement,name varchar(20),details varchar(300))");

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){}

}

類說明

Caipiadapter.java——定義適配器

Caipu.java——封裝實體類對象

Login.java——設置登陸頁面

MainActivity.class——設置首頁

MyActiviity.java——設置個人菜譜頁面

upload.java——設置菜譜詳情頁面

MyHelper.java——SQLite數據庫的定義以及數據表、字段及類型的建立

 

 

3、系統設計

(一)系統整體設計

 

(二)系統數據庫設計

名稱

數據類型

長度

約束

id

INTEGER

 

PRIMARY KEY AUTOINCREMENT

name

VARCHAR

20

 

Details

VARCHAR

20

 

 

id

Name

Details

1

龍鬚麪

1.和麪。面軟適度,搋揉光滑、柔韌;

2.溜條、抻條。抓面兩頭,均勻用力,上下抖動。交叉換位,反覆交叉,把面溜、溜順;長條上案,兩手按條,左手向裏、右手向外,搓條上勁,提起兩頭,一抖一抻,再上案板,對摺兩根、撒上醭面,條不粘連,以此...

3.油炸。要注意油溫不要高、操做要三輕即將抻好的面絲輕放油鍋,用筷子輕撥面絲,炸至硬挺,呈淺乳黃色,輕撈出鍋,制鹹的龍鬚麪。面絲均勻,不併條,不斷條,香甜脆爽。

 

2

餃子

1.通常餃1號 作法: 1.餃子皮攤平放在桌上 2.將餡料放入 3.將兩邊的餃子皮從中間捏緊 4.兩邊再捏好便可。

2.通常餃2號 作法: 1.將餃子皮攤平,放入餡料 2. 對摺,不要黏在一塊,用手託着 3.而後順着一邊捏出皺紋 4.一直到捏好爲止。

3.波波餃 作法: 1.將餃子皮攤平,放入餡料 2.將餃子兩邊對摺,按好 3.用刮板將餃子壓出波紋(還有一種是手壓,但刮板更方便一些) 4.壓好的餃子。

4.蛤蜊餃 作法: 1.將餃子皮攤平,放入餡料 2.將兩邊的皮對摺,並向中間靠攏 3.再將兩邊捏緊了 4.再捏成波紋這個餃子花紋的捏法在這裏。

5.馬蹄餃: 作法: 1.將餃子皮攤平,放入餡料 2.將兩邊捏好 3.將餃子兩邊彎曲後,向中間靠攏 4.再捏緊便可。

 

3

胡辣湯

起鍋燒油放入肉絲翻炒1分鐘,再放入醬油和海帶翻炒出香味,以後加水燒開,放入千張絲和鹽攪拌均勻。最後等鍋內再次燒開後,加入調至好的生粉水和蛋液攪拌燒開,倒入盤內撒上蔥花和香油,一份美味的胡辣湯就作好了。

(三)系統詳細設計
1.登陸界面

編號

輸入

處理

輸出

1

帳號和密碼

與設定值相等

登錄成功進入首頁

2

帳號和密碼

與設定值不等

登錄失敗

 

編號

輸入

處理

輸出

1

首頁查看詳情

跳轉到詳情頁面

顯示詳情頁面

 

(四)各模塊實現

登陸模塊:登陸頁面上會顯示帳戶和密碼,使用EditText組件,讓用戶輸入帳戶和密碼,經過設置setOnClickListener()監聽按鈕事件,使用onCreat方法,經過調用Intent類展現用戶「意圖」實現頁面跳轉,設置原始密碼後,若是用戶輸入的密碼和帳戶與其相同,則觸發跳轉動做,若不一樣,則經過Toast彈出框顯示「登錄失敗」

首頁模塊:主要用到ImageView組件,LieanerLayout佈局嵌套實現詞條與底部導航,這一部分是實現點擊按鈕跳轉到對應的頁面的功能

個人菜譜模塊:使用了SQLite數據庫,實現了用戶對信息的添加、查詢、修改、刪除的功能,同時經過Listview顯示用戶信息時

菜譜詳情模塊:實現了Activity之間的跳轉,顯示了菜譜的具體實現步驟

(五)UML設計
1.UML時序圖

 

2. 系統類圖

 

4、系統測試

本次課程設計所用的開發環境爲:eclipse

開發技術:Android

數據庫:SQLite數據庫

(一)測試登陸頁面

點擊登陸,顯示登錄成功或登錄失敗

 

(二)測試主界面
1. 首頁

 

2. 添加測試

添加信息後顯示「添加成功」

 

3. 刪除測試

刪除信息,顯示「已刪除」

 

4.查詢測試

 

5、系統實現        

)界面佈局

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.example.sichu"

    android:versionCode="1"

    android:versionName="1.0" >

 

    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="18" />

 

    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name="com.example.sichu.login"

            android:label="@string/login_name">

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

 

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        <activity

            android:name="com.example.sichu.MainActivity"

            android:label="@string/app_name">

        </activity>

        <activity

            android:name="com.example.sichu.upload"

            android:label="@string/app_name"></activity>

        <activity

            android:name="com.example.sichu.MyActiviity"

            android:label="@string/app_name">

            

        </activity>

    </application>

 

</manifest>

btn_shape  

//定義一個樣式,實現按鈕圓角

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle">

    <solid

        android:color="#eeeeee"/>

    <stroke android:color="#eeeeee" android:width="0dp"/>

    <corners android:radius="80dp"/>

    <padding

        android:bottom="3dp"

        android:left="3dp"

        android:right="3dp"

        android:top="3dp"/>

 

</shape>

1.登陸頁面

 

 

 

代碼:

//相對佈局

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    android:background="@drawable/login" >

    

    <ImageView

        android:id="@+id/login_icon"

        android:src="@drawable/icon"

        android:layout_height="70dp"

        android:layout_width="70dp"

        android:layout_marginTop="100dp"

        android:layout_marginLeft="140dp" />

 

 

    <EditText

        android:id="@+id/login_et"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_marginTop="190dp"

        android:editable="true"

        android:hint="請輸入帳號" />

    <EditText

        android:id="@+id/login_ps"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_marginTop="250dp"

        android:editable="true"

        android:hint="請輸入密碼"

        android:password="true" />

 

    <Button

        android:id="@+id/login_bt"

        android:layout_width="200dp"

        android:layout_height="50dp"

        android:layout_marginTop="320dp"

        android:background="@drawable/btn_shape"

        android:layout_marginLeft="80dp"

        android:text="登    錄"

        android:textColor="#ffa54f"

        android:textSize="15dp"

        /></RelativeLayout>

2.首頁

 

 

 

代碼:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >

    <ImageView

        android:id="@+id/index_image"

        android:layout_height="190dp"

        android:layout_width="match_parent"

        android:layout_below="@+id/tab_title"

        android:src="@drawable/index"

        android:padding="0dp"

        android:layout_margin="0dp"/>

    <TextView

        android:id="@+id/wodecaipu"

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:layout_below="@+id/index_image"

        android:text="個人傳家菜譜"

        android:gravity="center"

        android:textColor="#ffa54f"/>

    <View

            android:layout_width="match_parent"

            android:layout_height="1dp"

            android:layout_below="@+id/wodecaipu"

            android:background="#eeeeee"/>

    <LinearLayout

        android:id="@+id/show"

        android:layout_width="match_parent"

        android:layout_height="80dp"

        android:orientation="horizontal"

        android:layout_below="@+id/wodecaipu">

        <ImageView

         android:id="@+id/index_img"

         android:layout_width="0dp"

          android:layout_height="110dp"

          android:layout_weight="2"

         android:layout_below="@+id/wodecaipu"

         android:src="@drawable/ganguo"/>

     <TextView

         android:id="@+id/index_tv"

         android:layout_width="wrap_content"

         android:layout_height="wrap_content"

         android:text="幹鍋土豆"

         android:layout_marginTop="30dp"

         android:textSize="22sp"

         android:ems="4"

         android:layout_weight="3"

         android:gravity="center"

         android:textColor="#ffa54f"

        />

    </LinearLayout>

    <Button

        android:id="@+id/index_btn"

         android:layout_width="wrap_content"

         android:layout_height="30dp"

         android:text="查看詳情"

         android:layout_marginLeft="240dp"

         android:textColor="#ffa54f"

         android:layout_below="@+id/show"

         android:textSize="10dp"

         android:background="@drawable/btn_shape"/>

     <View

            android:layout_width="match_parent"

            android:layout_height="1dp"

            android:layout_below="@+id/index_btn"

            android:background="#eeeeee"/>

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="56dp"

        android:orientation="horizontal"

        android:layout_alignParentBottom="true">

 

        <TextView

            android:id="@+id/txt_index"

            android:layout_width="0dp"

            android:layout_height="match_parent"

            android:layout_weight="1"

            android:background="#ffffff"

            android:drawablePadding="3dp"

            android:gravity="center"

            android:textColor="#ffa54f"

            android:text="首頁"/>

 

        <TextView

            android:id="@+id/txt_my"

            android:layout_width="0dp"

            android:layout_height="match_parent"

            android:layout_weight="1"

            android:background="#ffffff"

            android:drawablePadding="3dp"

            android:gravity="center"

            android:textColor="#111111"

            android:text="個人菜譜"/>

       

</LinearLayout>

</RelativeLayout>

3.菜譜詳情

 

 

 

代碼:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

    

    <TextView

        android:id="@+id/upload_null"

        android:layout_height="wrap_content"

        android:layout_width="wrap_content"

        android:text="返回"

        android:layout_margin="10dp"

        android:textSize="20sp"

        android:textColor="#ffa54f" />

 

    <ImageView

        android:id="@+id/upload_img"

        android:layout_width="230dp"

        android:layout_height="150dp"

        android:layout_gravity="center"

        android:src="@drawable/ganguo" />

    <TextView

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:text="烹飪步驟"

        android:gravity="center"

        android:textColor="#ffa54f"

        android:textStyle="bold" />

    <TextView

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:text="1.把全部的菜洗淨 用水抄一下 瀝乾水分"

        android:gravity="center"

        android:textColor="#778899" />

    <TextView

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:text="2.鍋裏放油最好多放一些,將喜歡吃的菜倒入鍋中 加少量水 加入豆瓣醬 屢次翻抄"

        android:gravity="center"

        android:textColor="#778899" />

    <TextView

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:text="小貼士"

        android:gravity="center"

        android:textColor="#ffa54f"

        android:textStyle="bold" />

    <TextView

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:text="放入本身喜歡的蔬菜便可 沒有多大講究 本身喜歡吃什麼就放什麼"

        android:gravity="center"

        android:textColor="#778899" />

     

    

</LinearLayout>

4.個人菜譜

 

 

代碼:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    android:background="#ffffff" 

    android:layout_marginTop="5dp">

    <LinearLayout

        android:layout_width="wrap_content"

        android:layout_height="100dp"

        android:orientation="horizontal">

        <ImageView

            android:layout_width="70dp"

            android:layout_height="70dp"

            android:layout_margin="5dp"

            android:background="@drawable/btn_shape"

            android:src="@drawable/head_icon" />

        <TextView

            android:layout_width="0dp"

            android:layout_height="90dp"

            android:gravity="center"

            android:text="暮小晨"

            android:textColor="#ffa54f"

            android:layout_weight="1"

            android:textSize="22sp"

            />

    </LinearLayout>

     <TextView

        android:id="@+id/wodecaipu"

        android:layout_width="match_parent"

        android:layout_height="35dp"

        android:layout_below="@+id/index_image"

        android:text="個人菜譜管理"

        android:gravity="center"

        android:textColor="#ffa54f"/>

    <EditText

            android:id="@+id/et_name"

            android:layout_height="wrap_content"

            android:layout_width="match_parent"

            android:hint="請輸入菜譜名"/>

    <EditText

            android:id="@+id/et_details"

            android:layout_height="wrap_content"

            android:layout_width="match_parent"

            android:hint="請輸入步驟"/>

    

    <LinearLayout

        android:id="@+id/sql_layout"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:orientation="horizontal">

        <Button

            android:id="@+id/btn_add"

            android:layout_height="wrap_content"

            android:layout_width="0dp"

            android:layout_weight="1"

            android:textColor="#ffa54f"

            android:text="添加"/>

        <Button

            android:id="@+id/btn_query"

            android:layout_height="wrap_content"

            android:layout_width="0dp"

            android:layout_weight="1"

            android:textColor="#ffa54f"

            android:text="查詢"/>

        <Button

            android:id="@+id/btn_delect"

            android:layout_height="wrap_content"

            android:layout_width="0dp"

            android:layout_weight="1"

            android:textColor="#ffa54f"

            android:text="刪除"/>

    </LinearLayout>

    <ListView

        android:id="@+id/lvshow"

        android:layout_width="wrap_content"

        android:layout_height="145dp"/>

    

        <LinearLayout

        android:id="@+id/tab_menu"

        android:layout_width="match_parent"

        android:layout_height="56dp"

        android:orientation="horizontal"

        android:layout_marginTop="180dp">

 

        <TextView

            android:id="@+id/txt_index"

            android:layout_width="0dp"

            android:layout_height="match_parent"

            android:layout_weight="1"

            android:background="#ffffff"

            android:drawablePadding="3dp"

            android:gravity="center"

            android:textColor="#111111"

            android:text="首頁"/>

 

 

        <TextView

            android:id="@+id/txt_my"

            android:layout_width="0dp"

            android:layout_height="match_parent"

            android:layout_weight="1"

            android:background="#ffffff"

            android:drawablePadding="3dp"

            android:gravity="center"

            android:textColor="#ffa54f"

            android:text="個人菜譜"/>

    </LinearLayout>

    

 

</LinearLayout>

5.item ListView內容填充

 

代碼:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="horizontal" >

    <LinearLayout

        android:layout_width="wrap_content"

        android:layout_height="match_parent"

        android:orientation="vertical">

        

    <TextView

        android:id="@+id/itemName"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_gravity="center"

        android:layout_margin="5dp"

        android:layout_marginLeft="10dp"

        android:textSize="18sp"

        android:textColor="#444444"

        android:textStyle="bold"

        android:ems="10"/>

    <TextView

        android:id="@+id/itemContent"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_gravity="center"

        android:layout_marginLeft="10dp"

        android:maxLines="1"

        android:ellipsize="end"

        />

    </LinearLayout>

 

</LinearLayout>

 

附件:

1、課設題目

基於Android的家庭菜譜系統

、技術說明

1.Activity之間的跳轉

引用Intent類,實現Activity之間的跳轉以及數據的傳遞與回傳

2. Sqlite數據庫

導入SQLiteDatabase,SQLiteOpenHelper包,調用安卓內嵌數據庫進行數據傳遞,實現數據的添加,查詢,修改,刪除功能

3.控件的使用

Textview 、Button、Edittext、ImageView Listview

4.Listview的使用

在使用ListView進行添加數據時,會用到數據適配器,用來搭建數據與視圖之間的橋樑,將複雜的數據轉換成用戶能夠接受的方式進行呈現

5.事件的監聽

SetOnClickListener()方法監聽事件,多用在跳轉時

6.頁面佈局

使用線性佈局(LinearLayout)、相對佈局(RelativeLayout)

7.Toast彈窗

輕量級信息提醒機制,向用戶提示及時信息,用於登陸頁及數據增刪改查時

3、UML類圖

 

4、代碼

 

清單文件(即AndroidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.example.sichu"

    android:versionCode="1"

    android:versionName="1.0" >

 

    <uses-sdk

        android:minSdkVersion="8"

        android:targetSdkVersion="18" />

 

    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >

        <activity

            android:name="com.example.sichu.login"

            android:label="@string/login_name">

            <intent-filter>  //設置初始界面

                <action android:name="android.intent.action.MAIN" />

 

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        <activity

            android:name="com.example.sichu.MainActivity"

            android:label="@string/app_name">

        </activity>

        <activity

            android:name="com.example.sichu.upload"

            android:label="@string/app_name"></activity>

        <activity

            android:name="com.example.sichu.MyActiviity"

            android:label="@string/app_name">

            

        </activity>

    </application>

 

</manifest>

佈局文件:

  1. 佈局文件

 

2.Java文件

 

Java源碼

 

 

 

Caipiadapter.java文件 設置適配器

//設置listview

package adapter;

 

import java.util.List;

 

import org.eclipse.jdt.annotation.NonNull;

import org.eclipse.jdt.annotation.Nullable;

 

import com.example.sichu.R;

 

import entity.caipu;

 

import android.content.Context;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ArrayAdapter;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.TextView;

 

public class caipiadapter extends BaseAdapter {

    private List<caipu> list;

    private LayoutInflater layoutInflater;

    public caipiadapter(Context context, List<caipu> list){

        this.layoutInflater = LayoutInflater.from(context);

        this.list = list;

    }

    @Override

    public int getCount() {

        Log.e("yanwenhua","list.size()--"+list.size());

        return list.size();

    }

 

    @Override

    public Object getItem(int position) {

        return null;

    }

 

    @Override

    public long getItemId(int position) {

        return 0;

    }

 

    @Override

    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder viewHolder;

        if (convertView==null){

            convertView=layoutInflater.inflate(R.layout.item,null);

            viewHolder=new ViewHolder(convertView);

            convertView.setTag(viewHolder);

        }else {

            viewHolder=(ViewHolder) convertView.getTag();

        }

        caipu caipu = list.get(position);

        viewHolder.tv_name.setText("菜譜:"+caipu.getConName());

        viewHolder.tv_details.setText("菜譜詳情:"+caipu.getCondetails());

        Log.e("yanwenhua","cartBean.getName()-"+caipu.getConName()+"  "+caipu.getCondetails()+"  ");

        return convertView;

    }

    class ViewHolder{

        TextView tv_name;

        TextView tv_details;

        public ViewHolder(View view){

            tv_name = (TextView) view.findViewById(R.id.itemName);

            tv_details = (TextView) view.findViewById(R.id.itemContent);

        }

    }

 

}

Caipu.java //設置實體類,用於數據的獲取與傳遞

package entity;

 

public class caipu {

private Integer conId;

    private String conName;

    private String condetails;

    public caipu(Integer conId, String conName, String condetails) {

super();

this.conId = conId;

this.conName = conName;

this.condetails = condetails;

}

 

public caipu() {

// TODO Auto-generated constructor stub

}

 

    

public Integer getConId() {

return conId;

}

public void setConId(Integer conId) {

this.conId = conId;

}

public String getConName() {

return conName;

}

public void setConName(String conName) {

this.conName = conName;

}

public String getCondetails() {

return condetails;

}

public void setCondetails(String condetails) {

this.condetails = condetails;

}

 

 

 

 

 

}

Login.java //對應登陸頁面

package com.example.sichu;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Toast;

 

public class login extends Activity {

@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_login);

        

        Button Login =(Button) findViewById(R.id.login_bt);

Login.setOnClickListener(new View.OnClickListener(){

 

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

            EditText admin= (EditText) findViewById(R.id.login_et);

            EditText password= (EditText) findViewById(R.id.login_ps);

            String admin1=admin.getText().toString().trim();

            String password1=password.getText().toString().trim();

            // TODO Auto-generated method stub

            if("123456".equals(admin1)&&"123".equals(password1)){

                Intent intent=new Intent(login.this,MainActivity.class);

                startActivity(intent);

            }else{

                Toast.makeText(login.this,"登陸失敗",Toast.LENGTH_LONG).show();

            }

        }

    });

// Intent intent=new Intent(login.this,MainActivity.class);

//         startActivity(intent);

// }

// });

    

// Button Login =(Button) findViewById(R.id.login_bt);

//    Login.setOnClickListener(new View.OnClickListener() {

//        TextView textView;

//        @Override

//        public void onClick(View view) {

 

}

 

 

}  

MainActivity.java //對應主頁

package com.example.sichu;

 

import java.util.ArrayList;

import java.util.List;

 

import entity.caipu;

 

import adapter.caipiadapter;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.Menu;

import android.view.View;

import android.widget.Button;

import android.widget.ListView;

import android.widget.TextView;

 

public class MainActivity extends Activity {

 

 

 

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        

        TextView my =(TextView) findViewById(R.id.txt_my);

my.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

Intent intent=new Intent(MainActivity.this,MyActiviity.class);

        startActivity(intent);

}

});

Button btn =(Button) findViewById(R.id.index_btn);

btn.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

Intent intent=new Intent(MainActivity.this,upload.class);

        startActivity(intent);

}

});

        

        

    }

 

    

}

MyActiviity.java //對應個人菜譜頁

package com.example.sichu;

 

import java.util.ArrayList;

import java.util.List;

 

 

import entity.caipu;

import adapter.caipiadapter;

import android.app.Activity;

import android.content.ContentValues;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.Toast;

 

public class MyActiviity extends Activity implements View.OnClickListener{

private List<caipu> consList = new ArrayList();

MyHelper helper;

private EditText et_name,et_details;

    private ListView listView;

    private String name,details;

    private SQLiteDatabase db;

 

@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.my);

        

        et_name = (EditText)findViewById(R.id.et_name);

        et_details =  (EditText)findViewById(R.id.et_details);

        listView = (ListView)findViewById(R.id.lvshow);

        Button add = (Button)findViewById(R.id.btn_add);

        Button query =(Button) findViewById(R.id.btn_query);

        Button delete = (Button)findViewById(R.id.btn_delect);

        add.setOnClickListener(this);

        query.setOnClickListener(this);

        delete.setOnClickListener(this);

        helper = new MyHelper(this);

        

        

        TextView my =(TextView) findViewById(R.id.txt_index);

my.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

Intent intent=new Intent(MyActiviity.this,MainActivity.class);

        startActivity(intent);

}

});

}

 

 

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

switch (v.getId()){

        case R.id.btn_add:

            db = helper.getWritableDatabase();

            name = et_name.getText().toString();

            details = et_details.getText().toString();

            ContentValues values = new ContentValues();        //建立ContentValues對象

            values.put("name", name);             //將數據添加到ContentValues對象

            values.put("details", details);

            db.insert("info", null, values);

            db.close();

            Toast.makeText(this, "菜譜已添加", Toast.LENGTH_SHORT).show();

            break;

        case R.id.btn_query:

            Log.e("yanwenhua","123");

            List<caipu> list = new ArrayList();

            db = helper.getWritableDatabase();

            Cursor cursor = db.query("info", null, null, null, null,

                    null, null);

            if (cursor.getCount() == 0) {

                Toast.makeText(this, "尚未編輯沒法查看", Toast.LENGTH_SHORT).show();

            } else {

                while (cursor.moveToNext()) {

                    caipu caipu = new caipu();

                    int nameIndex = cursor.getColumnIndex("name");

                    int detailsIndex = cursor.getColumnIndex("details");

                    String name = cursor.getString(nameIndex);

                    String details = cursor.getString(detailsIndex);

                    Log.e("yanwenhua","cursor.getCount();--"+cursor.getCount()+"name-"+name+"  "+details+"  ");

                    caipu.setConName(name);

                    caipu.setCondetails(details);

                    list.add(caipu);

                }

                caipiadapter adapter = new caipiadapter(MyActiviity.this,list);

                listView.setAdapter(adapter);

                adapter.notifyDataSetChanged();

            }

            cursor.close();

            db.close();

            break;

        case R.id.btn_delect:

            db = helper.getWritableDatabase();

            db.delete("info", null, null);

            List<caipu> list2 = new ArrayList();

            caipiadapter adapter = new caipiadapter(MyActiviity.this,list2);

            listView.setAdapter(adapter);

            adapter.notifyDataSetChanged();

            db.close();

            Toast.makeText(this, "菜譜已刪除", Toast.LENGTH_SHORT).show();

            break;

    }

 

 

}

}

Upload.java//對應菜譜詳情頁

package com.example.sichu;

 

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.TextView;

 

public class upload extends Activity{

@Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.upload);

        

        TextView canel =(TextView) findViewById(R.id.upload_null);

canel.setOnClickListener(new View.OnClickListener(){

@Override

public void onClick(View view) {

// TODO Auto-generated method stub

Intent intent=new Intent(upload.this,MainActivity.class);

        startActivity(intent);

}

});

        

}

}

MyHelper.java// SQLite數據庫實現

package com.example.sichu;

 

import android.content.ContentValues;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

 

public class MyHelper extends SQLiteOpenHelper{

private SQLiteDatabase sqLiteDatabase;

        public MyHelper(Context context){

            super(context,"caipu.db",null,1);

            sqLiteDatabase=this.getWritableDatabase();

        }

 

@Override

public void onCreate(SQLiteDatabase db) {

// TODO Auto-generated method stub

db.execSQL("create table info(id integer primary key autoincrement,name varchar(20),details varchar(300))");

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){}

}

類說明

Caipiadapter.java——定義適配器

Caipu.java——封裝實體類對象

Login.java——設置登陸頁面

MainActivity.class——設置首頁

MyActiviity.java——設置個人菜譜頁面

upload.java——設置菜譜詳情頁面

MyHelper.java——SQLite數據庫的定義以及數據表、字段及類型的建立

相關文章
相關標籤/搜索