基于Android的点餐系统设计与实现

目 录
摘 要 2
ABSTRACT 3
目 录 1
1 绪 论 1
1.1课题研究背景和意义 1
1.2课题可行性分析 2
1.3论文框架安排 3
2 开发语言说明 4
2.1 开发工具及环境简介 4
2.2 Android系统 5
2.2.1 Android Features特性 5
2.2.2 Android系统的四大组件 6
3 点餐系统分析 8
3.1概述 8
3.1.1系统分析的原则 8
3.1.2系统分析的方法 8
3.2系统需求分析 9
3.3系统流程分析 10
4 点餐系统详细设计 12
4.1 系统设计原则 12
4.2 系统设计目标 13
4.3系统总体结构设计 13
4.4服务端数据库设计 13
5系统实现与测试 16
5.1 搭建Android开发环境 16
5.2系统实现 18
5.2.1 登录模块实现 18
5.2.2 大全模块实现 19
5.2.3 在线下单模块 21
5.2.4 我的订单模块 23
5.2.5 服务端模块模块 26
5.3 系统测试 27
5.3.1 软件测试 27
5.3.2 测试用例 28
5.3.3 测试总结 28
6 总结 30
致 谢 31
参考文献 32
附录 33
3 点餐系统分析
本章首先介绍了基于Android点餐系统的可行性,确立了开发基础,直接详细阐述了系统各个模块的详细需求分析,接着分析了系统的研究路线和系统的流程设计,最后对系统的运作流程做了分析。
3.1概述
系统分析是在总体规划的指导下,对某个或若干个子系统进行深入仔细地调查研究,确定新系统逻辑功能的过程。这一阶段的主要任务是由系统分析员了解每个业务流程,工作流程,广大用户的需求,运用系统开发理论、开发方法和开发技术设计出一个智能化的软件系统。
3.1.1系统分析的原则
在系统分析中存在很多困难,为了克服困难,做好分析工作,在进行系统分析时应遵循系统分析的原则,这样才能保证分析工作能够顺利进行,系统分析的原则有:
1.逻辑设计与物理设计分开的原则
2.面向用户的原则
3.结构化分析的原则
通过实际调查并与相关用户交流后,分析基于Android点餐系统的具体的要求,确定本系统的逻辑功能,以满足用户的各项要求,完成相应的各项功能,提高网站的实用水平。在近期目标完成后,该系统应该有很强的扩充性,便于在此基础上进行扩充式开发,为以后的发展及扩充打好基础。
3.1.2系统分析的方法
该系统采用以抽象和分解为手段,并且采用结构化分析方法进行系统分析,根据实际调查研究,对系统进行自顶向下的逐层分解,逐步细分,逐步求精,建立新系统的逻辑模型,这个逻辑模型将尽可能避免使用计算机术语,让其尽可能的简单化、通俗化,便于设计者和浏览者的沟通与交流经验。
结构化分析方法的基本思想是该系统采用结构化分析方法,以抽象和分解为手段,对系统进行自顶向下的逐层分解,逐步细分,逐步求精,从而达到易于理解的目的。
3.2系统需求分析
客户端功能需求分析:
登录、注册:用户使用系统时需要先登录,如果没有账号可以通过注册模块注册一个账号;
菜谱查询:查询目前店菜谱列表信息;
详情查询:可以查询一个菜的详细信息,包括价格、介绍和数量;
在线点餐:支持用户在线下单点餐;
选择座位:支持用户在手机上选择座位;
我的订单:用户可以查看自己已经下单的信息,可以删除掉自己的订单;
人工服务:客户端可以呼叫服务员;
服务端功能分析:
登录模块:管理员登录使用系统;
菜谱管理:管理员可以查看当前系统的信息,可以添加、修改或者删除一个菜谱信息;
用户管理:管理员可以查看到当前系统已经注册的用户信息,可以删除掉一个用户信息;
原材料管理:管理员可以查看当前系统的原材料信息,可以添加、修改或者删除一个原材料信息,原材料库存较低时会警报;
订单管理:管理员可以查看到当前的所有订单信息,可以修改订单状态,例如把一个进行中的订单修改为已经完成;
在这里插入图片描述

图3.1系统功能框架图
3.3系统流程分析
在系统分析和开发系统过程中,采用了一些相对比较成熟、安全性较高、运行比较稳定的技术。这些技术贯穿了整个系统的设计与开发过程,是设计和实现各个模块的基础技术,只有运用先进的设计模式和开发技术,本文转载自http://www.biyezuopin.vip/onews.asp?id=13603才能保证开发工作顺利地进行,才能保证系统设计的合理性和灵活性,才能保证各个功能模块的稳定性。
首先本系统用户在使用系统前都必须经过用户登录验证,只有验证通过的用户才能进入系统, 整个系统的流程图如图3.1所示。
在这里插入图片描述

图3.1 系统流程图

package com.mm.mealapp.adapter;

import java.util.List;

import android.content.Context;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.miebo.utils.AsyncImageLoader;
import com.mm.mealapp.activity.AppConstant;
import com.mm.mealapp.activity.R;
import com.mm.mealapp.api.orders;

public class OrdersAdapter extends BaseAdapter {
    
    
	private List<orders> list = null;
	private final Context context;
	private LayoutInflater infater = null;
	private final AsyncImageLoader asyncImageLoader;
	private final String serverUrl;

	public OrdersAdapter(Context context, List<orders> list) {
    
    
		this.infater = LayoutInflater.from(context);
		this.list = list;
		this.context = context;
		asyncImageLoader = new AsyncImageLoader(BitmapFactory.decodeResource(context.getResources(),
				R.drawable.pc_loading_fali));
		serverUrl = AppConstant.getRootUrl(context);
	}

	@Override
	public int getCount() {
    
    

		return list.size();
	}

	@Override
	public Object getItem(int position) {
    
    

		return null;
	}

	@Override
	public long getItemId(int position) {
    
    

		return 0;
	}

	@Override
	public View getView(final int position, View convertview, ViewGroup parent) {
    
    
		ViewHolder holder = null;
		if (convertview == null) {
    
    
			holder = new ViewHolder();
			convertview = infater.inflate(R.layout.listview_item_shop, null);
			holder.imageView1 = (ImageView) convertview.findViewById(R.id.imageView1);
			holder.tvTitle = (TextView) convertview.findViewById(R.id.tvTitle);
			holder.tvPrice = (TextView) convertview.findViewById(R.id.tvPrice);
			holder.tvIntro = (TextView) convertview.findViewById(R.id.tvIntro);

			convertview.setTag(holder);
		} else {
    
    
			holder = (ViewHolder) convertview.getTag();
		}
		holder.tvTitle.setText(list.get(position).getUsername());
		holder.tvPrice.setText("数量:" + list.get(position).getAmount() + " 单价:" + list.get(position).getPrice());
		String intro = "\n下单时间" + list.get(position).getCreatetime();
		if (1 == list.get(position).getStatus()) {
    
    
			intro += "\n订单状态:已经完成";
		} else if (0 == list.get(position).getStatus()) {
    
    
			intro += "\n订单状态:进行中";
		} else {
    
    
			intro += "\n订单状态:已取消";
		}
		holder.tvIntro.setText(intro);

		asyncImageLoader.loadBitmap(serverUrl + "UploadFile/" + list.get(position).getImg_url(), holder.imageView1);
		return convertview;
	}

	class ViewHolder {
    
    
		private ImageView imageView1;
		private TextView tvTitle;
		private TextView tvPrice;
		private TextView tvIntro;

	}

}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/newlw/article/details/127345054