點(diǎn)餐系統(tǒng)設(shè)計(jì)[互聯(lián)網(wǎng)+]_第1頁
點(diǎn)餐系統(tǒng)設(shè)計(jì)[互聯(lián)網(wǎng)+]_第2頁
點(diǎn)餐系統(tǒng)設(shè)計(jì)[互聯(lián)網(wǎng)+]_第3頁
點(diǎn)餐系統(tǒng)設(shè)計(jì)[互聯(lián)網(wǎng)+]_第4頁
點(diǎn)餐系統(tǒng)設(shè)計(jì)[互聯(lián)網(wǎng)+]_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 題目:點(diǎn)餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)學(xué) 號 2015122103498 姓 名:鞏金明(40%)專 業(yè): 15信管一班 負(fù)責(zé)內(nèi)容:大部分代碼編寫(含關(guān)鍵部分)學(xué) 號 2015122103523 姓 名:樓軒宇(30%) 專 業(yè): 15信管一班 負(fù)責(zé)內(nèi)容:需求分析以及總體設(shè)計(jì) 學(xué) 號 2015122103539 姓 名:郭新波(30%) 專 業(yè): 15信管一班 負(fù)責(zé)內(nèi)容:詳細(xì)設(shè)計(jì)以及小部分代碼編寫論文完成日期:二一七年六月四日1、系統(tǒng)需求分析客戶端功能需求分析:登錄、注冊:使用者想要運(yùn)行系統(tǒng)必須登錄,如果未申請賬號能夠通過注冊模塊申請;菜譜查詢:查詢目前餐廳店菜單列表數(shù)據(jù);詳情查詢:可以查詢一個(gè)菜的全部

2、數(shù)據(jù),有價(jià)格、介紹和數(shù)量;在線點(diǎn)餐:支持用戶在線下單點(diǎn)餐;選擇座位:支持使用者在Android手機(jī)上選座位;我的訂單:支持使能夠查看自己已經(jīng)下單的數(shù)據(jù),能夠刪掉自己的訂單;人工服務(wù):客戶端可以呼叫服務(wù)員;服務(wù)端功能分析:登錄模塊:管理員登錄使用系統(tǒng);菜譜管理:管理員能夠查看當(dāng)前界面的數(shù)據(jù),能夠添加、修改或者刪除一個(gè)菜譜數(shù)據(jù);用戶管理:管理員能夠查看到當(dāng)前系統(tǒng)已經(jīng)存在的用戶信息,能夠刪掉一個(gè)用戶信息;原材料管理:管理員可以查看當(dāng)前系統(tǒng)的原材料信息,可以添加、修改或者刪除一個(gè)原材料信息,原材料庫存較低時(shí)會警報(bào);訂單管理:管理員可以查看到當(dāng)前的所有訂單信息,可以修改訂單狀態(tài),例如把一個(gè)進(jìn)行中的訂單修

3、改為已經(jīng)完成;具體的系統(tǒng)功能全部作用如下圖:點(diǎn)餐系統(tǒng)后臺部分前臺部分點(diǎn)餐個(gè)人信息我的訂單人工服務(wù)登錄注冊人工服務(wù)管理菜譜管理訂單管理用戶信息管理原材料管理登錄退出2、目標(biāo)可行性分析智能手機(jī)的出現(xiàn)減少了很多方面的限制,具有很多優(yōu)勢,人們可以隨時(shí)隨地的傳遞信息,訂購商品,不論時(shí)間不論地點(diǎn),正是這個(gè)優(yōu)點(diǎn)使得智能手機(jī)能夠受到越來越多人是喜愛,比如,用戶智能手機(jī)點(diǎn)餐速度迅速比傳統(tǒng)的點(diǎn)餐要快的多,大大提高了效率。1.經(jīng)濟(jì)可行性由于世界經(jīng)濟(jì)水平的突飛猛進(jìn),科技水平得到了前所未有的巨大發(fā)展,社會正步入一個(gè)嶄新的網(wǎng)路信息時(shí)期。因?yàn)樯鐣掷m(xù)發(fā)展的生活與工作水平,人們的非物質(zhì)需求正在逐漸增加,伴隨出現(xiàn)的就是網(wǎng)絡(luò)技術(shù)

4、的持續(xù)進(jìn)步,當(dāng)代社會網(wǎng)絡(luò)應(yīng)用變得愈加廣泛,人們之間的相互溝通日趨廣泛、交流也愈加簡便,所有這些,使得人們的生產(chǎn)生活方式發(fā)生了巨大轉(zhuǎn)變。是故,由于網(wǎng)絡(luò)技術(shù)的進(jìn)步,電商領(lǐng)域逐漸發(fā)展,極大程度上改變了人們的購物方式。在如今這個(gè)年代,幾乎所有計(jì)算機(jī)使用者都能夠進(jìn)行網(wǎng)上購物的操作,而且往往樂此不疲。從長久的角度來想,安卓點(diǎn)餐系統(tǒng)的開發(fā)與應(yīng)用還是存在很大的經(jīng)濟(jì)前景。2.技術(shù)可行性技術(shù)可行性一般是因?yàn)楝F(xiàn)在已經(jīng)存在的的技術(shù)因素而控制的,比如,是否可以進(jìn)行平穩(wěn)的功能開發(fā),軟、硬件功能會不會達(dá)到系統(tǒng)所規(guī)定的條件。如今這個(gè)時(shí)代,是網(wǎng)絡(luò)資源化的時(shí)代,網(wǎng)絡(luò)資源爆發(fā)式增長,這引起了所有其他相關(guān)技術(shù)的進(jìn)步,所以對于技術(shù)條件

5、來說是能夠?qū)崿F(xiàn)的。本系統(tǒng)單個(gè)用java語言,使用ssh技術(shù)與MySQL數(shù)據(jù)庫進(jìn)行開發(fā),上述技術(shù)在現(xiàn)在已經(jīng)很廣泛且很成熟,已經(jīng)無數(shù)次被應(yīng)用于軟件與系統(tǒng)研究中,所有,這個(gè)系統(tǒng)對科學(xué)水平來說是能夠?qū)崿F(xiàn)的。3、系統(tǒng)流程分析為了使得完成的軟件能夠平穩(wěn)運(yùn)行,完善了系統(tǒng)流程的所有環(huán)節(jié)。對每個(gè)流程要用到的關(guān)鍵技術(shù)也做了充分準(zhǔn)備,如下圖:4、總體設(shè)計(jì)4.1 系統(tǒng)設(shè)計(jì)原則系統(tǒng)設(shè)計(jì)和系統(tǒng)編碼是一個(gè)統(tǒng)一的整體,每一部分都不可缺少。在系統(tǒng)設(shè)計(jì)中制定良好的編碼規(guī)范和開發(fā)流程,能夠確保無二義性,使得開發(fā)順利進(jìn)行,這也能提高開發(fā)這的開發(fā)效率。此外,在進(jìn)行系統(tǒng)設(shè)計(jì)過程中,還應(yīng)該遵循的主要原則如下。1、適用性原則好的系統(tǒng)開發(fā)出來

6、首先要能夠完成基本的功能,即滿足用戶的要求,這是軟件開發(fā)的首要目的。如果開發(fā)出來的軟件不能滿足用戶的需求,那么此軟件注定是失敗的開發(fā)。在此基礎(chǔ)上還要考慮軟件的的操作性,要能保證軟件在運(yùn)行環(huán)境下沒有bug,能讓用戶操作起來簡單,明了,還要功能全面易用化。不應(yīng)該只考慮軟件的收益,否則必將面臨很大的問題。2、可靠性安全性原則隨著計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,網(wǎng)絡(luò)除了帶人人們便利之外也帶開了很多安全隱患,如,隱私安全、個(gè)人財(cái)產(chǎn)安全等等,雖然此次開發(fā)的系統(tǒng)簡單,但是安全問題是每個(gè)系統(tǒng)都必須考慮的問題。網(wǎng)上訂餐系統(tǒng)中既要保護(hù)用戶個(gè)人信息的安全,保證不被泄露,還要保證他們的財(cái)產(chǎn)安全。只有具備安全措施的系統(tǒng)才能夠讓用戶放

7、心。3、可擴(kuò)展性原則現(xiàn)在的科技發(fā)展速度之快,不僅是研發(fā)的快,更新?lián)Q代的速度也令人驚訝,科技技術(shù)不斷退陳舊新,因此,為了適應(yīng)時(shí)代的發(fā)展速度,系統(tǒng)的可擴(kuò)展能力也是開發(fā)過程中要考慮的事情。那么如何提高系統(tǒng)的可擴(kuò)展性呢?這里就充分體現(xiàn)了設(shè)計(jì)在開發(fā)中的重要作用。在軟件設(shè)計(jì)的過程中,將網(wǎng)上訂餐系統(tǒng)劃分成不同的功能模塊,并降低模塊之間的耦合度來提高系統(tǒng)的擴(kuò)展性。4.2 系統(tǒng)設(shè)計(jì)目標(biāo)在系統(tǒng)開發(fā)之前要對系統(tǒng)進(jìn)行需求分析,功能概括,難點(diǎn)解析等等的工作,之后對于系統(tǒng)大概要完成什么目標(biāo),系統(tǒng)的界面和設(shè)計(jì)等問題的思考來滿足用戶的要求。系統(tǒng)設(shè)計(jì)過程中將系統(tǒng)分解為很多不同的小的系統(tǒng),然后對分成的小的系統(tǒng)的功能、技術(shù)進(jìn)行分析

8、討論,制定規(guī)定,在之后的開發(fā)中,先開發(fā)小的系統(tǒng)之后進(jìn)行整合,逐步完成開發(fā)。本系統(tǒng)是設(shè)計(jì)目標(biāo)是建立一個(gè)基于Android技術(shù)的點(diǎn)餐系統(tǒng),可以滿足用戶對手機(jī)訂餐的需求。根據(jù)需求分析還有自己的生活體會,在線點(diǎn)餐系統(tǒng)一定要有以下基本的要求。(1)界面看著新穎活力、大方美觀,吸引用戶。(2)具有易調(diào)試性和沒有bug性。(3)用戶能夠方便的查看所有的食品信息和單個(gè)用戶的詳細(xì)信息內(nèi)容。 (4)具有操作方便、功能完善的管理功能。4.3 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)系統(tǒng)的總體結(jié)構(gòu)設(shè)計(jì)是在軟件開發(fā)之前必須要做好的一件基本工作,作為一個(gè)優(yōu)秀的程序員不僅要有很強(qiáng)的編碼能力,對于系統(tǒng)的總體結(jié)構(gòu)的設(shè)計(jì)也要很精通。做好系統(tǒng)的總體結(jié)構(gòu)設(shè)

9、計(jì)會讓系統(tǒng)開發(fā)順利進(jìn)行,做到事半功倍。在此次系統(tǒng)的總體結(jié)構(gòu)設(shè)計(jì)過程中,系統(tǒng)分為客戶端和服務(wù)端,客戶端是可以在安卓智能手機(jī)上使用的,服務(wù)端采用Servlet提供服務(wù),持久化層采用MySQL,因?yàn)镸ySQL的安裝和配置都適合小型的系統(tǒng)。在進(jìn)行系統(tǒng)的總體設(shè)計(jì)之后緊接著就是數(shù)據(jù)庫的需求設(shè)計(jì)。系統(tǒng)整體框架采用C/S模式,即客戶端/服務(wù)器模式,其中客戶端一方面與用戶交互,提供良好的用戶界面,另一方面與服務(wù)器端進(jìn)行數(shù)據(jù)交換。服務(wù)器端向客戶端提供數(shù)據(jù)。管理員可以對數(shù)據(jù)進(jìn)行增,刪,改,查等操作。5、系統(tǒng)詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)5.1登模塊的實(shí)現(xiàn)本系統(tǒng)使用前用戶需要登錄驗(yàn)證,在登錄界面中,通過繼承一個(gè)Activity來實(shí)現(xiàn)

10、,界面上的控件用到了EditText、Button和CheckBox等等組件, EditText主要用來實(shí)現(xiàn)用戶帳號和密碼的輸入。登錄過程中用戶需要輸入賬號與密碼,并且經(jīng)由登錄按鈕來表達(dá)登錄意圖,意圖表達(dá)完成,系統(tǒng)會經(jīng)由HTTP的過程將帳號與密碼發(fā)送到服務(wù)器端驗(yàn)證,并返回服務(wù)端的驗(yàn)證結(jié)果,如果驗(yàn)證正確那么提示使用者登錄完成,然后自行轉(zhuǎn)入主界面;如果錯(cuò)誤,那么提示使用者登錄失敗。該界面具有保存密碼成功,假如使用者在登錄時(shí)勾選了“保存密碼”復(fù)選框,則下次再進(jìn)入到本界面用戶將不需要再次輸入密碼,而只需要點(diǎn)擊登錄按鈕即可實(shí)現(xiàn)登錄操作,記住密碼的過程是通過Android平臺提供的SharedPrefer

11、ences來實(shí)現(xiàn)的。當(dāng)然如果用戶還沒有登錄賬號,則能夠通過“注冊”選項(xiàng)鏈接到用戶注冊界面,從而注冊一個(gè)新號碼;具體的實(shí)現(xiàn)效果如圖所示:實(shí)現(xiàn)的核心代碼如下:loginActivity 的 doInBackground 的方法發(fā)起url請求,發(fā)送用戶名,密碼protected String doInBackground(String. params) String urlString = AppConstant.getUrl(getApplicationContext() + ServletService?Action=login; urlString += &loginid= + etLogin

12、ID.getText() + &passwords= + etPassword.getText();String json = httpHelper.HttpRequest(urlString);return json;loginActivity 的 onPostExecute 的方法 獲取服務(wù)器返回json,驗(yàn)證密碼是否正確loginActivity 的 dealLogin 是當(dāng)密碼驗(yàn)證成功后 跳轉(zhuǎn)到DishesListActivityOnLineUser model = new OnLineUser();/設(shè)置登陸成功的用戶屬性model.setId(jsonObject.getInt(i

13、d);model.setLoginid(etLoginID.getText().toString();model.setName(jsonObject.getString(name);application.setLoginUser(model);/彈出提示框toastUtil.show(model.getName() + ,登錄成功);/跳轉(zhuǎn)到登陸成功頁面intent = new Intent(LoginActivity.this, DishesListActivity.class);startActivity(intent);5.2菜譜模塊的實(shí)現(xiàn)用戶成功登陸進(jìn)入系統(tǒng)之后可以查看到當(dāng)前系統(tǒng)所

14、有菜譜信息,包括菜譜的圖片、名稱、單價(jià)和詳細(xì)介紹信息,系統(tǒng)用了一個(gè)ListView組件來顯示系統(tǒng)的菜譜信息,同時(shí)用戶也可以通過界面左上角的搜索按鈕來搜索菜譜信息,用戶點(diǎn)擊一條信息之后可以查看一個(gè)菜譜的詳細(xì)介紹。具體的實(shí)現(xiàn)效果如圖所示:實(shí)現(xiàn)的核心代碼如下:/請求獲取列表數(shù)據(jù)的代碼Overrideprotected String doInBackground(String. params) String json = null;serverUrl = AppConstant.getUrl(getApplicationContext() + ServletService?Action=getdish

15、eslist&shopid=+ shopid;BaseUtil.LogII(serverUrl);json = httpHelper.HttpRequest(serverUrl);return json;/解析列表數(shù)據(jù),并設(shè)置適配器的代碼list = new ArrayList();if (!TextUtils.isEmpty(result.trim() list = gson.fromJson(result, new TypeTokenList() .getType(); else toastUtil.show(沒有數(shù)據(jù));adapter = new DishesAdapter(Dishes

16、ListActivity.this, list);listview1.setAdapter(adapter);點(diǎn)擊listview中的一項(xiàng),會跳轉(zhuǎn)到詳情頁面,這其中會根據(jù)id去調(diào)用webservice查詢數(shù)據(jù)庫獲取到詳情數(shù)據(jù)/界面點(diǎn)擊跳轉(zhuǎn)的代碼listview1.setOnItemClickListener(new OnItemClickListener() Overridepublic void onItemClick(AdapterView parent, View view, int position, long id) intent = new Intent(DishesListAct

17、ivity.this, GoodDetailActivity.class);intent.putExtra(id, list.get(position).getId();startActivity(intent););menu的實(shí)現(xiàn),設(shè)置menu按鍵的彈出事件public boolean onCreateOptionsMenu(Menu menu) super.onCreateOptionsMenu(menu);menu.add(0, 99, 0, 人工服務(wù)).setIcon(R.drawable.icon_application);menu.add(0, 100, 0, 注銷登錄).setI

18、con(R.drawable.icon_application);menu.add(0, 101, 0, 個(gè)人信息).setIcon(R.drawable.icon_application);menu.add(0, 106, 0, 我的訂單).setIcon(R.drawable.icon_application);menu.add(0, 102, 0, 退出).setIcon(R.drawable.icon_application);return true;menu選中觸發(fā)的事件參考o(jì)nOptionsItemSelected 方法選中 人工服務(wù) 按鈕后,會執(zhí)行humanServices方法p

19、rivate void humanServices() final String arg = new String6;for (int i = 0; i 0) try jsonArray = new JSONArray(result);jsonObject = jsonArray.getJSONObject(0);(TextView) findViewById(R.id.tvTopTitleCenter).setText(jsonObject.getString(title);(TextView) findViewById(R.id.tvTopTitleCenter).setTextSize(

20、16);if (!TextUtils.isEmpty(jsonObject.getString(img_url) asyncImageLoader.loadBitmap(serverUrl + UploadFile/ + jsonObject.getString(img_url),imageView1);String intro = 單價(jià):¥ + jsonObject.getString(price) + n;intro += 數(shù)量: + jsonObject.getString(amount) + n;intro += 簡介: + jsonObject.getString(intro) +

21、n配料: + jsonObject.getString(burdennames);tvIntro.setText(intro); catch (JSONException e) e.printStackTrace();下單操作 使用post請求,提交數(shù)據(jù),實(shí)現(xiàn)代碼如下/提交訂單的代碼protected String doInBackground(String. params) String urlString = AppConstant.getUrl(getApplicationContext() + ServletService;Map map = new HashMap();map.put

22、(Action, createorder);map.put(dishesid, id);map.put(userid, user.getId();map.put(username, user.getName();map.put(amount, etAmount.getText();String result = httpHelper.HttpPost(urlString, map);return result;/判斷訂單提交后,webservice的返回值,提示訂單是否提交成功protected void onPostExecute(String result) super.onPostExe

23、cute(result);dialog.dismiss();if (result != null & result.trim().equals(1) toastUtil.show(下單成功); else if (result.trim().equals(-1) toastUtil.show(原料不足,下單失敗); else toastUtil.show(下單失敗);5.4用戶訂單模塊的實(shí)現(xiàn)用戶的下單信息將會被記錄到服務(wù)端中,用戶可以隨時(shí)通過智能手機(jī)菜單鍵來打開查看自己已經(jīng)下過的訂單信息,包括菜式信息、下單數(shù)量、選擇的座位、下單時(shí)間和當(dāng)前的訂單狀態(tài),同時(shí)用戶也可以長按一條訂單信息來彈出刪除菜單,

24、用戶可以刪除一條訂單信息。實(shí)現(xiàn)的核心代碼如下:/通過url請求獲取我的訂單數(shù)據(jù)protected String doInBackground(String. params) String json = null;serverUrl = AppConstant.getUrl(getApplicationContext() + ServletService?Action=getmyorderslist&userid=+ user.getId();json = httpHelper.HttpRequest(serverUrl);return json;/解析返回的json字符串,把數(shù)據(jù)展示到界面上j

25、sonArray = new JSONArray(result);for (int i = 0; i 0) toastUtil.show(取消成功);new loadAsyncTask().execute(); else toastUtil.show(取消失敗);5.5服務(wù)端模塊的實(shí)現(xiàn)服務(wù)端模塊具有兩方面作用,其一是給客戶端提供數(shù)據(jù)服務(wù)接口,客戶端調(diào)用服務(wù)端的接口來得到數(shù)據(jù)庫里面的菜譜、訂單等所有數(shù)據(jù),然后顯示在客戶端界面上。服務(wù)端存在另外一個(gè)作用:保證信息的動(dòng)態(tài)維護(hù),比如菜譜信息維護(hù)、用戶信息維護(hù)、訂單信息維護(hù)以及菜譜類型信息維護(hù)。比如管理員能夠于服務(wù)端依據(jù)真實(shí)狀況增加一個(gè)菜式數(shù)據(jù)、刪除一個(gè)

26、菜式數(shù)據(jù)等操作。5.5.1人工服務(wù)模塊的實(shí)現(xiàn)使用者在前臺呼叫人工服務(wù)的操作不可以馬上執(zhí)行,需要管理員于后臺進(jìn)行信息管理審核以確認(rèn)它的操作性,管理員單擊后臺界面中的“人工服務(wù)”進(jìn)入用戶人工服務(wù)處理頁面,該頁面會顯示近期所以的用戶呼叫的人工服務(wù)。人工服務(wù)處理頁面顯示的是呼叫人,呼叫時(shí)間等信息。人工服務(wù)主要通過從humanservices表中查詢對應(yīng)的用戶信息并顯示在頁面中,管理員審核后再對服務(wù)狀態(tài)進(jìn)行修改,系統(tǒng)會根據(jù)提交的操作更新數(shù)據(jù)表。人工服務(wù)信息頁面如圖所示。5.5.2菜譜管理模塊的實(shí)現(xiàn)菜譜管理模塊用來完成對菜譜信息的添加,修改,刪除等功能,菜譜管理模塊流程如圖20所示,展示了管理員對菜譜的操作過程和系統(tǒng)處理過程。運(yùn)行情況如圖所示:5.5.3用戶管理模塊的實(shí)現(xiàn)用戶管理模塊用來完成對用戶信息的修改,刪除等功能,用戶管理模塊流程如圖所示,展示了管理員對用戶信息的操作過程和系統(tǒng)處理過程。運(yùn)行情況如圖所示:5.5.4訂單管理模塊的實(shí)現(xiàn)訂單管理模塊主要完成對訂單狀態(tài)的修改和刪除,訂單管理模塊作用流程如下。運(yùn)行情況如圖所示:6、系統(tǒng)測試6.1 測試內(nèi)容“登錄測試”用例與結(jié)果如下表:“登錄測試

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論