最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

安卓APP源碼和設(shè)計(jì)報(bào)告——快遞查詢(xún)錄入系統(tǒng)

2022-12-06 23:56 作者:考研保研直通車(chē)  | 我要投稿

《多媒體通信技術(shù)》

題 目:快遞

完 成 日 期?2022年05月

目 錄

1 緒論1

2 設(shè)計(jì)方案2

2.1 設(shè)計(jì)思路和方案2

2.2 功能要求2

2.3 設(shè)計(jì)的流程圖2

3 設(shè)計(jì)過(guò)程3

3.1 界面布局3

3.2 功能實(shí)現(xiàn)3

4 運(yùn)行結(jié)果與分析4

4.1 設(shè)計(jì)的使用步驟4

4.2 運(yùn)行結(jié)果與分析4

5 總結(jié)5

附錄6

1 緒論

快遞業(yè)務(wù)有兩個(gè)基本的特點(diǎn),一個(gè)是快件運(yùn)轉(zhuǎn)的速度快,另外一個(gè)特點(diǎn)是對(duì)快件進(jìn)行全程跟蹤為用戶(hù)提供服務(wù)。業(yè)務(wù)之所以能快速運(yùn)轉(zhuǎn),能在最短的時(shí)間內(nèi)為用戶(hù)提點(diǎn)對(duì)點(diǎn)的服務(wù),一個(gè)很重要的因素就是有強(qiáng)大的信息系統(tǒng)做支撐,而且信息流必須領(lǐng)先于實(shí)物流。實(shí)物流在運(yùn)轉(zhuǎn)的過(guò)程中,信息系統(tǒng)如果不能對(duì)下一個(gè)環(huán)節(jié)提供前置信息,下一個(gè)環(huán)節(jié)就很難及時(shí)有效地調(diào)配資源,如調(diào)配航空資源,車(chē)輛等運(yùn)力資源以及人力資源為實(shí)物流流向下一個(gè)環(huán)節(jié)做好準(zhǔn)備??蛻?hù)之所以選擇快遞公司,除了速度與價(jià)格上的因素之外,另外一個(gè)重要的因素是所提供服務(wù),強(qiáng)大的管理系統(tǒng)是快遞公司提升服務(wù)質(zhì)量的唯一選擇。另外一方面信息系統(tǒng)是快遞公司運(yùn)行效率的保證,快遞物品在運(yùn)輸過(guò)程中希望以最高效、最經(jīng)濟(jì)的方式流向下一個(gè)環(huán)節(jié),如果不能提供及時(shí)有效的實(shí)物流信息,就有可能造成公司資源的浪費(fèi)或者是造成快遞物品的投遞時(shí)效性的降低。

2 設(shè)計(jì)方案

2.1 設(shè)計(jì)思路和方案

在移動(dòng)互聯(lián)網(wǎng)的時(shí)代,快遞企業(yè)開(kāi)發(fā)快遞APP軟件,可以幫助企業(yè)節(jié)省人力物力、簡(jiǎn)化操作程序、降低成本費(fèi)用、加強(qiáng)與用戶(hù)的信息交流。開(kāi)發(fā)快遞APP就能在移動(dòng)互聯(lián)網(wǎng)時(shí)代搶占到主動(dòng)權(quán),開(kāi)拓更廣闊的市場(chǎng)。

本次課題設(shè)計(jì)開(kāi)發(fā)了一個(gè)快遞查詢(xún)錄入系統(tǒng),用戶(hù)可以在注冊(cè)登入之后進(jìn)行快遞的查詢(xún)、輸入、刪除和修改。

系統(tǒng)需要包含注冊(cè)、登入功能,保存賬號(hào)和密碼到SharedPreferences。按鈕實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)和彈窗提示。利用SQLite進(jìn)行增刪查改的實(shí)現(xiàn),實(shí)例化四個(gè)Button,兩個(gè)EditText,兩個(gè)TextView,連接數(shù)據(jù)庫(kù)。按鈕增加監(jiān)聽(tīng)點(diǎn)擊事件,editText用來(lái)獲取輸入,TextView來(lái)展示成果。

2.2 功能要求

本設(shè)計(jì)是快遞查詢(xún)錄入系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),應(yīng)具備的功能包括:

  1. 登陸;

  2. 注冊(cè);

(3)查詢(xún);

(4)輸入;

(5)刪除;

(6)修改。

2.3 設(shè)計(jì)的流程圖

本設(shè)計(jì)中用戶(hù)操作的流程圖如圖2.2所示。

圖2.2 流程圖

由圖2.2可見(jiàn),該設(shè)計(jì)首先要運(yùn)行小手機(jī)然后會(huì)顯示登錄界面,如果是新用戶(hù)就直接登錄,如果不是需要注冊(cè)一個(gè)賬號(hào)進(jìn)行登錄。登錄后可對(duì)快遞訂單輸入/查詢(xún),還有選擇快遞公司。

3 設(shè)計(jì)過(guò)程

3.1 界面布局

本設(shè)計(jì)的登錄界面布局如圖3.1所示。

圖3.1 登錄界面布局

本設(shè)計(jì)的登錄后快遞輸入/查詢(xún)界面布局如圖3.2所示。

圖3.2 快遞查詢(xún)錄入界面布局

3.2功能實(shí)現(xiàn)

1界面的實(shí)現(xiàn)

登入注冊(cè)界面設(shè)計(jì),包括用戶(hù)名和密碼的輸入框,頁(yè)面的輸入框和按鈕均采用了自定義樣式,加入圓角的設(shè)計(jì)和顏色的漸變,視覺(jué)上看起來(lái)更舒適美觀。

2菜單界面實(shí)現(xiàn)

登入成功后跳轉(zhuǎn)到導(dǎo)航頁(yè)面,每個(gè)按鈕都會(huì)有對(duì)應(yīng)的文字提示,對(duì)應(yīng)要跳轉(zhuǎn)到的各個(gè)子頁(yè)面。

3各模塊詳細(xì)實(shí)現(xiàn)

增刪查改詳細(xì)設(shè)計(jì)包括輸入、更新、查詢(xún)、刪除快遞單號(hào)。

4快遞公司頁(yè)面實(shí)現(xiàn)

程序功能還包括登入和注冊(cè)兩個(gè)重要功能,用戶(hù)的用戶(hù)名和密碼存放在sharedpreferences數(shù)據(jù)類(lèi)中。

4 運(yùn)行結(jié)果與分析

4.1 設(shè)計(jì)的使用步驟

本設(shè)計(jì)的使用步驟為:

  1. 首先打開(kāi)模擬器運(yùn)行小手機(jī)

  2. 已有賬號(hào)直接登陸

  3. 沒(méi)有賬號(hào)注冊(cè)一個(gè)賬號(hào)然后登陸

  4. 點(diǎn)擊訂單輸入/查詢(xún)進(jìn)行查詢(xún)

  5. 可以輸入,更新,查詢(xún),刪除

  6. 查看寄快遞公司

4.2 運(yùn)行結(jié)果與分析

效果注冊(cè)和登錄如圖4.1注冊(cè)界面和4.2登錄界面所示。

圖4.1 注冊(cè)界面

圖4.2 登錄界面

若賬號(hào)沒(méi)有注冊(cè)過(guò),將會(huì)顯示此用戶(hù)名不存在。如圖4.3登陸失敗界面所示。

圖4.3 登陸失敗界面

快遞錄入查詢(xún)和快遞公司界面如圖4.4所示。

圖4.4 快遞錄入查詢(xún)和快遞公司界面

點(diǎn)擊訂單輸入/查詢(xún),頁(yè)面跳轉(zhuǎn),在此頁(yè)面可以對(duì)訂單進(jìn)行輸入更新查詢(xún)刪除,效果如圖4.5訂單輸入/查詢(xún)頁(yè)面所示。

圖4.5 訂單輸入/查詢(xún)界面

點(diǎn)擊快遞公司,可對(duì)快遞公司進(jìn)行查詢(xún),下拉還有其他快遞公司可供選擇。如圖4.6快遞公司界面所示。


圖4.6 快遞公司界面

5 總結(jié)

本設(shè)計(jì)主要完成了快遞查詢(xún)錄入系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)?;仡櫞舜握n程報(bào)告感慨頗多,在這次移動(dòng)終端開(kāi)發(fā)課程設(shè)計(jì)過(guò)程中,我發(fā)現(xiàn)平時(shí)學(xué)習(xí)的知識(shí)與實(shí)踐環(huán)節(jié)所用到的有一定的差距,往往我覺(jué)得自己掌握的很好或者自認(rèn)為熟練的技術(shù)卻在此次實(shí)踐環(huán)節(jié)中往往出問(wèn)題,書(shū)本上的知識(shí)只提供方法的借鑒,實(shí)踐中自己必須摸索出適合具體工作的方法,這一切都離不開(kāi)鉆研精神與勤學(xué)好問(wèn)的精神.在人與人相處過(guò)程中我收獲更大,首先要謙虛謹(jǐn)慎,不能自以為是,認(rèn)為自己懂得很多,而僅僅埋頭苦干,而不向他人請(qǐng)教,工作不但是實(shí)踐與應(yīng)用的過(guò)程,同時(shí)也是學(xué)習(xí)的過(guò)程。在這短短的時(shí)間里,讓我深深的感覺(jué)到自己在實(shí)際應(yīng)用中所學(xué)專(zhuān)業(yè)知識(shí)的匱乏。讓我真真領(lǐng)悟到“學(xué)無(wú)止境”這句話的涵義。而老師在專(zhuān)業(yè)認(rèn)識(shí)周中所講的,都是課本上沒(méi)有而對(duì)我們又非常實(shí)用的東西,這又給我們的實(shí)訓(xùn)增加了濃墨淡采的光輝。我懂得了實(shí)際生活中,專(zhuān)業(yè)知識(shí)是怎樣應(yīng)用與實(shí)踐的。

在Android studio調(diào)試過(guò)程中我也遇到了很多問(wèn)題,比如圖片的選擇,我剛開(kāi)始選擇的圖片過(guò)于清晰,導(dǎo)致程序無(wú)法運(yùn)行。后來(lái)選擇大小較小的圖片發(fā)現(xiàn)還是出錯(cuò),回顧老師的課堂回放視頻才發(fā)現(xiàn)老師講過(guò),需要將圖片的格式也進(jìn)行更改。

附錄

  1. 登入實(shí)現(xiàn)代碼
    public class?LoginActivity?extends?AppCompatActivity {
    private?TextView?tv_main_title;//標(biāo)題
    private?TextView?tv_back,tv_register,tv_find_psw;//返回鍵,顯示的注冊(cè),找回密碼
    private?Button?btn_login;//登錄按鈕
    private?String?userName,psw,spPsw;//獲取的用戶(hù)名,密碼,加密密碼
    private?EditText?et_user_name,et_psw;//編輯框
    @Override
    protected void?onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    //設(shè)置此界面為豎屏
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    init();
    }
    //獲取界面控件
    private void?init() {
    //從main_title_bar中獲取的id
    tv_main_title=findViewById(R.id.tv_main_title);
    tv_main_title.setText("登錄");
    tv_back=findViewById(R.id.tv_back);
    //從activity_login.xml中獲取的
    tv_register=findViewById(R.id.tv_register);
    tv_find_psw=findViewById(R.id.tv_find_psw);
    btn_login=findViewById(R.id.btn_login);
    et_user_name=findViewById(R.id.et_user_name);
    et_psw=findViewById(R.id.et_psw);
    //返回鍵的點(diǎn)擊事件
    tv_back.setOnClickListener(new?View.OnClickListener() {
    @Override
    public void?onClick(View v) {
    //登錄界面銷(xiāo)毀
    LoginActivity.this.finish();
    }
    });
    //立即注冊(cè)控件的點(diǎn)擊事件
    tv_register.setOnClickListener(new?View.OnClickListener() {
    @Override
    public void?onClick(View v) {
    //為了跳轉(zhuǎn)到注冊(cè)界面,并實(shí)現(xiàn)注冊(cè)功能
    Intent intent=new?Intent(LoginActivity.this,RegisterActivity.class);
    startActivityForResult(intent, 1);
    }
    });
    //找回密碼控件的點(diǎn)擊事件
    tv_find_psw.setOnClickListener(new?View.OnClickListener() {
    @Override
    public void?onClick(View v) {
    //跳轉(zhuǎn)到找回密碼界面
    }
    });
    //登錄按鈕的點(diǎn)擊事件
    btn_login.setOnClickListener(new?View.OnClickListener() {
    @Override
    public void?onClick(View v) {
    //開(kāi)始登錄,獲取用戶(hù)名和密碼 getText().toString().trim();
    userName=et_user_name.getText().toString().trim();
    psw=et_psw.getText().toString().trim();
    //對(duì)當(dāng)前用戶(hù)輸入的密碼進(jìn)行MD5加密再進(jìn)行比對(duì)判斷, MD5Utils.md5( ); psw 進(jìn)行加密判斷是否一致
    String md5Psw= MD5Utils.md5(psw);
    // md5Psw ; spPsw 為 根據(jù)從SharedPreferences中用戶(hù)名讀取密碼
    // 定義方法 readPsw為了讀取用戶(hù)名,得到密碼
    spPsw=readPsw(userName);
    // TextUtils.isEmpty
    if(TextUtils.isEmpty(userName)){
    Toast.makeText(LoginActivity.this,?"請(qǐng)輸入用戶(hù)名", Toast.LENGTH_SHORT).show();
    return;
    }else if(TextUtils.isEmpty(psw)){
    Toast.makeText(LoginActivity.this,?"請(qǐng)輸入密碼", Toast.LENGTH_SHORT).show();
    return;
    // md5Psw.equals(); 判斷,輸入的密碼加密后,是否與保存在SharedPreferences中一致
    }else if(md5Psw.equals(spPsw)){
    //一致登錄成功
    Toast.makeText(LoginActivity.this,?"登錄成功", Toast.LENGTH_SHORT).show();
    //保存登錄狀態(tài),在界面保存登錄的用戶(hù)名 定義個(gè)方法 saveLoginStatus boolean 狀態(tài) , userName 用戶(hù)名;
    saveLoginStatus(true,?userName);
    //登錄成功后關(guān)閉此頁(yè)面進(jìn)入主頁(yè)
    Intent data=new?Intent();
    //datad.putExtra( ); name , value ;
    data.putExtra("isLogin",true);
    //RESULT_OK為Activity系統(tǒng)常量,狀態(tài)碼為-1
    // 表示此頁(yè)面下的內(nèi)容操作成功將data返回到上一頁(yè)面,如果是用back返回過(guò)去的則不存在用setResult傳遞data值
    setResult(RESULT_OK,data);
    //銷(xiāo)毀登錄界面
    LoginActivity.this.finish();
    //跳轉(zhuǎn)到主界面,登錄成功的狀態(tài)傳遞到 MainActivity 中
    startActivity(new?Intent(LoginActivity.this,Classification.class));
    return;
    }else if((spPsw!=null&&!TextUtils.isEmpty(spPsw)&&!md5Psw.equals(spPsw))){
    Toast.makeText(LoginActivity.this,?"輸入的用戶(hù)名和密碼不一致", Toast.LENGTH_SHORT).show();
    return;
    }else{
    Toast.makeText(LoginActivity.this,?"此用戶(hù)名不存在", Toast.LENGTH_SHORT).show();
    }
    }
    });
    }
    /**
    *從SharedPreferences中根據(jù)用戶(hù)名讀取密碼
    */
    private?String readPsw(String userName){
    //getSharedPreferences("loginInfo",MODE_PRIVATE);
    //"loginInfo",mode_private; MODE_PRIVATE表示可以繼續(xù)寫(xiě)入
    SharedPreferences sp=getSharedPreferences("loginInfo",?MODE_PRIVATE);
    //sp.getString() userName, "";
    return?sp.getString(userName ,?"");
    }
    /**
    *保存登錄狀態(tài)和登錄用戶(hù)名到SharedPreferences中
    */
    private void?saveLoginStatus(boolean?status,String userName){
    //saveLoginStatus(true, userName);
    //loginInfo表示文件名 SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
    SharedPreferences sp=getSharedPreferences("loginInfo",?MODE_PRIVATE);
    //獲取編輯器
    SharedPreferences.Editor editor=sp.edit();
    //存入boolean類(lèi)型的登錄狀態(tài)
    editor.putBoolean("isLogin", status);
    //存入登錄狀態(tài)時(shí)的用戶(hù)名
    editor.putString("loginUserName", userName);
    //提交修改
    editor.commit();
    }
    /**
    * 注冊(cè)成功的數(shù)據(jù)返回至此
    *?@param requestCode?請(qǐng)求碼
    *?@param resultCode?結(jié)果碼
    *?@param data?數(shù)據(jù)
    */
    @Override
    //顯示數(shù)據(jù), onActivityResult
    //startActivityForResult(intent, 1); 從注冊(cè)界面中獲取數(shù)據(jù)
    //int requestCode , int resultCode , Intent data
    // LoginActivity -> startActivityForResult -> onActivityResult();
    protected void?onActivityResult(int?requestCode,?int?resultCode, Intent data) {
    //super.onActivityResult(requestCode, resultCode, data);
    super.onActivityResult(requestCode, resultCode, data);
    if(data!=null){
    //是獲取注冊(cè)界面回傳過(guò)來(lái)的用戶(hù)名
    // getExtra().getString("***");
    String userName=data.getStringExtra("userName");
    if(!TextUtils.isEmpty(userName)){
    //設(shè)置用戶(hù)名到 et_user_name 控件
    et_user_name.setText(userName);
    //et_user_name控件的setSelection()方法來(lái)設(shè)置光標(biāo)位置
    et_user_name.setSelection(userName.length());
    }
    }
    }
    }

  2. 注冊(cè)實(shí)現(xiàn)代碼
    public class?RegisterActivity?extends?AppCompatActivity {
    private?TextView?tv_main_title;//標(biāo)題
    private?TextView?tv_back;//返回按鈕
    private?Button?btn_register;//注冊(cè)按鈕
    //用戶(hù)名,密碼,再次輸入的密碼的控件
    private?EditText?et_user_name,et_psw,et_psw_again;
    //用戶(hù)名,密碼,再次輸入的密碼的控件的獲取值
    private?String?userName,psw,pswAgain;
    //標(biāo)題布局
    private?RelativeLayout?rl_title_bar;
    @Override
    protected void?onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //設(shè)置頁(yè)面布局 ,注冊(cè)界面
    setContentView(R.layout.activity_register);
    //設(shè)置此界面為豎屏
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    init();
    }
    private void?init() {
    //從main_title_bar.xml 頁(yè)面布局中獲取對(duì)應(yīng)的UI控件
    tv_main_title=findViewById(R.id.tv_main_title);
    tv_main_title.setText("注冊(cè)");
    tv_back=findViewById(R.id.tv_back);
    //布局根元素
    rl_title_bar=findViewById(R.id.title_bar);
    rl_title_bar.setBackgroundColor(Color.TRANSPARENT);
    //從activity_register.xml 頁(yè)面中獲取對(duì)應(yīng)的UI控件
    btn_register=findViewById(R.id.btn_register);
    et_user_name=findViewById(R.id.et_user_name);
    et_psw=findViewById(R.id.et_psw);
    et_psw_again=findViewById(R.id.et_psw_again);
    tv_back.setOnClickListener(new?View.OnClickListener() {
    @Override
    public void?onClick(View v) {
    //返回鍵
    RegisterActivity.this.finish();
    }
    });
    //注冊(cè)按鈕
    btn_register.setOnClickListener(new?View.OnClickListener() {
    @Override
    public void?onClick(View v) {
    //獲取輸入在相應(yīng)控件中的字符串
    getEditString();
    //判斷輸入框內(nèi)容
    if(TextUtils.isEmpty(userName)){
    Toast.makeText(RegisterActivity.this,?"請(qǐng)輸入用戶(hù)名", Toast.LENGTH_SHORT).show();
    return;
    }else if(TextUtils.isEmpty(psw)){
    Toast.makeText(RegisterActivity.this,?"請(qǐng)輸入密碼", Toast.LENGTH_SHORT).show();
    return;
    }else if(TextUtils.isEmpty(pswAgain)){
    Toast.makeText(RegisterActivity.this,?"請(qǐng)?jiān)俅屋斎朊艽a", Toast.LENGTH_SHORT).show();
    return;
    }else if(!psw.equals(pswAgain)){
    Toast.makeText(RegisterActivity.this,?"輸入兩次的密碼不一樣", Toast.LENGTH_SHORT).show();
    return;
    /**
    *從SharedPreferences中讀取輸入的用戶(hù)名,判斷SharedPreferences中是否有此用戶(hù)名
    */
    }else if(isExistUserName(userName)){
    Toast.makeText(RegisterActivity.this,?"此賬戶(hù)名已經(jīng)存在", Toast.LENGTH_SHORT).show();
    return;
    }else{
    Toast.makeText(RegisterActivity.this,?"注冊(cè)成功", Toast.LENGTH_SHORT).show();
    //把賬號(hào)、密碼和賬號(hào)標(biāo)識(shí)保存到sp里面
    /**
    * 保存賬號(hào)和密碼到SharedPreferences中
    */
    saveRegisterInfo(userName,?psw);
    //注冊(cè)成功后把賬號(hào)傳遞到LoginActivity.java中
    // 返回值到loginActivity顯示
    Intent data =?new?Intent();
    data.putExtra("userName",?userName);
    setResult(RESULT_OK, data);
    //RESULT_OK為Activity系統(tǒng)常量,狀態(tài)碼為-1,
    // 表示此頁(yè)面下的內(nèi)容操作成功將data返回到上一頁(yè)面,如果是用back返回過(guò)去的則不存在用setResult傳遞data值
    RegisterActivity.this.finish();
    }
    }
    });
    }
    /**
    * 獲取控件中的字符串
    */
    private void?getEditString(){
    userName=et_user_name.getText().toString().trim();
    psw=et_psw.getText().toString().trim();
    pswAgain=et_psw_again.getText().toString().trim();
    }
    /**
    * 從SharedPreferences中讀取輸入的用戶(hù)名,判斷SharedPreferences中是否有此用戶(hù)名
    */
    private boolean?isExistUserName(String userName){
    boolean?has_userName=false;
    //mode_private SharedPreferences sp = getSharedPreferences( );
    // "loginInfo", MODE_PRIVATE
    SharedPreferences sp=getSharedPreferences("loginInfo",?MODE_PRIVATE);
    //獲取密碼
    String spPsw=sp.getString(userName,?"");//傳入用戶(hù)名獲取密碼
    //如果密碼不為空則確實(shí)保存過(guò)這個(gè)用戶(hù)名
    if(!TextUtils.isEmpty(spPsw)) {
    has_userName=true;
    }
    return?has_userName;
    }
    private void?saveRegisterInfo(String userName,String psw){
    String md5Psw = MD5Utils.md5(psw);//把密碼用MD5加密
    //loginInfo表示文件名, mode_private SharedPreferences sp = getSharedPreferences( );
    SharedPreferences sp=getSharedPreferences("loginInfo",?MODE_PRIVATE);
    //獲取編輯器, SharedPreferences.Editor editor -> sp.edit();
    SharedPreferences.Editor editor=sp.edit();
    //以用戶(hù)名為key,密碼為value保存在SharedPreferences中
    //key,value,如鍵值對(duì),editor.putString(用戶(hù)名,密碼);
    editor.putString(userName, md5Psw);
    //提交修改 editor.commit();
    editor.commit();
    }

  3. 增刪查改代碼實(shí)現(xiàn)

public class DictActivity extends AppCompatActivity {

private Button insertButton, updateButton, searchButton, deleteButton;

private Button btn_xl1;

private EditText name, age;

private TextView show, showAge;

final DatabaseHelper dbHelper = new DatabaseHelper(DictActivity.this);

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_dict);

btn_xl1 = findViewById(R.id.btn_xl);

btn_xl1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

//創(chuàng)建Intent 對(duì)象

Intent intent = new Intent(DictActivity.this, Classification.class);

//啟動(dòng)Activity

startActivity(intent);

}

});

insertButton = findViewById(R.id.btn_insert);

updateButton = findViewById(R.id.btn_update);

searchButton = findViewById(R.id.btn_search);

deleteButton = findViewById(R.id.btn_delete);

name = findViewById(R.id.name);

age = findViewById(R.id.age);

show = findViewById(R.id.tv_show);

showAge = findViewById(R.id.tv_showAge);

SQLiteDatabase db = dbHelper.getReadableDatabase();

myShow();

insertButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase();

ContentValues values = new ContentValues();

values.put("name", name.getText().toString());

values.put("age", age.getText().toString());

long id = db.insert("information", null, values);

Log.d("myDeBug", "insert");

myShow();

db.close();

name.setText(null);

age.setText(null);

}

});

updateButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase();

ContentValues values = new ContentValues();

values.put("age", age.getText().toString());

db.update("information", values, "name=?", new String[]{name.getText().toString()});

myShow();

db.close();

Log.d("myDebug", "update");

name.setText(null);

age.setText(null);

}

});

searchButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase();

String name1 = name.getText().toString();

show.setText(null);

if (name1.equals("")) {

// show.setText("姓名");

// showAge.setText("單號(hào)");

// Cursor cursor = db.rawQuery("select * from information",null);

//

// while (cursor.moveToNext()) {

// String newName = cursor.getString(cursor.getColumnIndex("name"));

// int newAge = cursor.getInt(cursor.getColumnIndex("age"));

// show.setText(show.getText() + "\n" + newName);

// showAge.setText(showAge.getText()+"\n" + newAge);

// }

myShow();

db.close();

} else {

show.setText("姓名");

showAge.setText("單號(hào)");

Cursor cursor = db.rawQuery("select * from information where name = ? ", new String[]{name1});

while (cursor.moveToNext()) {

String newName = cursor.getString(cursor.getColumnIndex("name"));

int newAge = cursor.getInt(cursor.getColumnIndex("age"));

// show.setText(show.getText() + "\n" + newName + "\t" + newAge);

show.setText(show.getText() + "\n" + newName);

showAge.setText(showAge.getText() + "\n" + newAge);

}

cursor.close();

db.close();

name.setText(null);

age.setText(null);

}

}

});

deleteButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase();

db.delete("information", "name=?", new String[]{name.getText().toString()});

myShow();

db.close();

Log.d("myDeBug", "DeleteSuccess");

name.setText(null);

age.setText(null);

}

});

}

public void myShow() {

SQLiteDatabase db = dbHelper.getReadableDatabase();

show.setText("姓名");

showAge.setText("單號(hào)");

Cursor cursor = db.rawQuery("select * from information", null);

while (cursor.moveToNext()) {

String newName = cursor.getString(cursor.getColumnIndex("name"));

int newAge = cursor.getInt(cursor.getColumnIndex("age"));

show.setText(show.getText() + "\n" + newName);

showAge.setText(showAge.getText() + "\n" + newAge);

}

cursor.close();

}

}

public class?DatabaseHelper?extends?SQLiteOpenHelper {

public?DatabaseHelper(Context context){super(context,"Test.db",null,1);}

//第一個(gè)參數(shù)是上下文,第二個(gè)參數(shù)是數(shù)據(jù)庫(kù)名稱(chēng),

//第三個(gè)參數(shù)是CursorFactory對(duì)象,一般設(shè)置為null,第四個(gè)參數(shù)是數(shù)據(jù)庫(kù)的版本

public void?onCreate(SQLiteDatabase db) {

db.execSQL("CREATE TABLE information(_id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(20),age INTEGER)");

}

//創(chuàng)建表 表名information 表結(jié)構(gòu) 自增id,字符串姓名,int年齡

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

Log.d("myDeBug","數(shù)據(jù)庫(kù)版本已更新");

}

//數(shù)據(jù)庫(kù)版本發(fā)生變化時(shí)調(diào)用

}


安卓APP源碼和設(shè)計(jì)報(bào)告——快遞查詢(xún)錄入系統(tǒng)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
内黄县| 恩平市| 和政县| 北票市| 巨野县| 来凤县| 武冈市| 上高县| 胶南市| 抚松县| 鄂尔多斯市| 高唐县| 康平县| 五峰| 灌阳县| 长沙市| 阿拉善右旗| 宁国市| 鹿泉市| 洛浦县| 淅川县| 三河市| 惠来县| 霍山县| 永昌县| 广水市| 津南区| 丹棱县| 沁源县| 建始县| 汨罗市| 佳木斯市| 蒲城县| 句容市| 天峻县| 湖北省| 桑日县| 沭阳县| 黄梅县| 海晏县| 稷山县|