订餐系统实验报告
课程名称: Android程序设计
班 级:
学 号:
姓 名:
任课教师:
程序功能与环境(服务器,手机实物照片,自己拍)
程序功能
餐厅订餐系统服务器,提供订餐服务
餐厅订餐系统客户端,用户用来提交订单
环境
带有tomcat服务器的PC机一台,发布订餐服务支持
安卓手机一部,测试客户端
局域网环境,用来测试程序功能
MVC架构用例,类图,(类图可以将文档页面放大了看)
数据与设计
food.test.domain
Food.java
此类用于封装用户购买菜品的信息
public int foodId; //菜品编号
public String foodName; //菜品名称
public float foodPrice; //菜品价格
public int foodType; //菜品类型
public String foodDescri; //菜品描述
public String foodImage; //菜品图片——暂定为String类型用于存储图片名
food.test.hyl
OrderListActivity.java
此类为用户填写订购信息的Activity,用来处理订购信息,与用户进行交互,是连接用户和服务器的桥梁
protected void onCreate(Bundle); //创建activity
在onCreate函数中定义了两个按钮,并设置了监听函数:
bsubmit.setOnClickListener(new OnClickListener() {//提交清单按钮被按下
public void onClick(View v) {} //按钮被按下时触发
private void callPost(Object[][] foods, String address,
String email, String telephone, String suggest,String userId,String userName) {}//创建post方法,用来像服务端发送post请求
};
bcancel.setOnClickListener(new OnClickListener() {//取消按钮被按下。
//用intent调用返回购物车界面
Intent intent = new Intent(OrderListActivity.this,ShopCartShowAll.class);
startActivity(intent);
});
protected Dialog onCreateDialog(int id); //创建对话框,用来显示用户提交信息的状态
void onResume();//在视图按home键退出后,然后恢复时调用
food.test.ld
ActivityComment.java
此Activity是用来给用户填写对菜品的评论信息的,并提交到服务器
设置了两个按钮bdone和brevert并设置监听,被点击时触发
Bdone,提交信息
Brever,重写信息
ActivityMainInterface.java
此类创建了选择菜单,用来选择对菜品进行评论
@Override
public boolean onCreateOptionsMenu(Menu menu) {}//创建选择菜单
@Override
public boolean onOptionsItemSelected(MenuItem item) {}//菜单项被点击时调用
ActivityRegister.java
此Activity类用来进行用户注册
bdone.setOnClickListener(new OnClickListener();设置用户信息完成时提交信息按钮监听
在public void onClick(View v);中测试用户名及密码是否为空,为空时给出提示,并判断两次输入的密码是否相同
,并设置相同时跳转到用户登录界面即主界面
OrderFoodLogin.java
此类用于用户登录,并将用户信息提交到服务器进行匹配,并提示登录信息
方法与上面的类似
mp = new MediaPlayer();//播放音乐
接下来的几个函数用来控制播放音乐
food.test.sfp
UserLogin.java
此类用来创建显示用户登录状态的对话框,并通过toast给出登录状态信息
private Dialog createLoginDialog(Context context){}//创建登录对话框
@Override
protected Dialog onCreateDialog(int id); //重写创建对话框函数
food.test.util
DButil.java
此类为数据库工具类,用于对数据库的操作
public DButil(Context context);//DButil的构造函数
private void init();//数据库初始化函数
public long addFood(ShopCart food); // 新增一条购买商品记录
public Cursor getAllCartCursor();//查询所有的游标
public ArrayList getAllShopCart();//得到购物车表里的所有数据
public ArrayList<ShopCart> getFoodFromCart();//返回所有shopCart类型的ArrayList
public int ModifyShopcart(int foodId,int foodnum,float foodsumprices ); //修改购物车中所有的数据
public int deleteAllShopcart();//删除购物车中所有的数据
public int deleteFood(String whereparam); //删除不需要的商品
public ShopCart findFood(int foodid); //查找需要的商品
public SQLiteDatabase getDB();//获取数据库连接
public void close();//关闭数据库
class MySQLiteHelper extends SQLiteOpenHelper{};//内部类,创建数据库辅助类
HttpCallUtil.java
此类封装了HTTP的连接
public String getConntionPost(String url, String name,String psw,List data);// post请求
public List putParam(List data);// 传递给服务端的数据,用Map进行封装
public String getConntionGet(String url);// get请求
public void getConntionImage(String url,ImageView iv);// 取得图片
Util.java
此类为工具类
public Adapter initAdapter(Context context,ArrayList list,Cursor cur,int layout,String[] from,int[] to);// 实例化不同的适配器
food.test.wjf
ModifyListCart.java
此类用于修改购物车中的信息,比如订购的数量等
Intent intent = getIntent(); //获取从购物车中传过来的信息
foodid = intent.getIntExtra("foodid", 0); //拿到购物车中传过来的食品编号 foodID
foodname = intent.getStringExtra("foodname");//拿到购物车中传过来的食品名称foodname
foodnum=intent.getIntExtra("foodnum", 1); //拿到购物车中传过来的食品订购数量
foodprice = intent.getFloatExtra("foodprice", 1.0f); //拿到购物车中传过来的食品单价foodpricce
bmodify.setOnClickListener(new OnClickListener() {//设置修改按钮监听函数,设置当按钮被点击时修改食品的订购信息,并返回到购物车
db.ModifyShopcart(foodid, foodnum, sumfoodprices); //对购物车中的食品进行修改
Intent intent = new Intent(ModifyListCart.this, ShopCartShowAll.class);// //回到购物车界面
startActivity(intent);
ShopCart.java
定义一个购物车的类,封装购物车的信息
private int foodId;// 商品id
private String foodName;// 商品名称
private float foodPrice;// 商品单价
private int foodNum;// 商品数量
private float sumPrices;// 商品金额
private int image;// 商品图片
下面为每个变量设置set和get方法
ShopCartAdd.java
此类用于添加购物车,并设置跳转到购物车界面
ShopCartShowAll.java
此类用来显示购物车中的所有食品,并对食品进行增删操作
db=new DButil(this); //初始化数据库
shopcur=db.getAllCartCursor();//获得购物车中所有的游标
shopcartList=db.getAllShopCart();//获取数据库中所有的数据
for(int i=0;i<shopcartList.size();i++){
food=(HashMap) shopcartList.get(i);
Float prices= (Float) food.get("foodsumprices");
//得到所有餐品总的金额
totalprices+=prices;
}
private Dialog builder1(Context ctx) ;//创建修改,删除对话框,设置按钮监听
private Dialog builder2(Context ctx);//创建确认删除对话框
public boolean onCreateOptionsMenu(Menu menu);创建菜单功能,按菜单键弹出
public boolean onOptionsItemSelected(MenuItem item);选择菜单项时触发
ShowListCart.java
显示购物车列表
food.test.zqz
util
FoodType.java
默认为“肉食”FOOD_MEAT类
GetNetWorkData.java
从服务器获取有关主界面的所有数据
public final static StringBuffer getConnectionPost(String url,
HashMap<String, String> params);// url服务器端的URI地址, params发给服务端的请求参数,以键值对的形式封装名字和对应的值,其中params的名字键位应该跟服务端保持一致
public final static ArrayList<Food> decodeResponseData(String sb);// 对服务器端的响应数据进行“解码”, sb服务器端的响应数据
public static ArrayList<Foo