计算机毕业设计之android平台的出租打车软件app

基于安卓平台出租打车软件app

背景需求:

城市生活中,出租车已经成为人们日常出行经常使用的交通工具。但城市里每天上下班时间人流较大,给人的出行带来不便,有些偏远的地区也许只有少数的公交车,上下班时人数又比较多,上不了公交,而这些地方招出租车也比较困难。针对上下班高峰期以及偏远地区打的难的情况推出的一款基于android平台的打车软件,并提供打车功能,节约时间和出行成本。


本系统可分为三个端: 用户端,车主端,管理远端
(用户端):

登录,注册,发布订单,我的订单,支付(微信,支付宝),公告,修改密码,反馈意见,个人中心
在这里插入图片描述
在这里插入图片描述
(车主端):

登录,注册,接单,我的接单列表,个人中心,对用户订单反馈意见,公告,个人信息,修改密码
在这里插入图片描述

(管理员端):

登录,注册,用户管理,反馈管理(收入,支出),统计管理,公告管理
在这里插入图片描述
在这里插入图片描述

核心代码:

发布订单

/**
 * 发布订单
 */
public class PushActivity extends BaseActivity<ActivityPushBinding> {

    @Override
    protected ActivityPushBinding getViewBinding() {
        return ActivityPushBinding.inflate(getLayoutInflater());
    }

    @Override
    protected void setListener() {


        mBinding.push.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String startAddress = mBinding.startAdress.getText().toString().trim();
                String endAddress = mBinding.endAdress.getText().toString().trim();
                String push_time = mBinding.timepicker.getText().toString().trim();
                if (TextUtils.isEmpty(startAddress) || TextUtils.isEmpty(endAddress) || TextUtils.isEmpty(push_time)) {
                    showToast("请完善信息");
                } else {
                    String price = Tools.getPrice();
                    AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
                    builder.setTitle("确定要发布吗?");
                    builder.setMessage("预计" + price + "元");
                    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {

                        }
                    });
                    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            push(startAddress, endAddress, price, push_time);
                        }
                    });
                    builder.show();
                }


            }
        });

        Calendar startDate = Calendar.getInstance();
        Calendar endDate = Calendar.getInstance();
        //正确设置方式 原因:注意事项有说明
        endDate.set(2100, 11, 31);
        mBinding.timepicker.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                TimePickerView pvTime = new TimePickerBuilder(mContext, new OnTimeSelectListener() {
                    @Override
                    public void onTimeSelect(Date date, View v) {
                        mBinding.timepicker.setText(getTime(date));

                    }
                })
                        .setType(new boolean[]{false, true, true, true, true, false})// 默认全部显示
                        .setLabel("年", "月", "日", "时", "分", "秒")//默认设置为年月日时分秒
                        .setRangDate(startDate, endDate)//起始终止年月日设定
                        .build();

                pvTime.show();
            }
        });

    }

    /**
     * 发布
     */
    public void push(String start_address, String end_address, String order_price, String push_time) {
        UserInfo userInfo = ApiConstants.getUserInfo();
        if (null != userInfo) {
            OkGo.<String>get(ApiConstants.PUSH_URL)
                    .params("push_username", userInfo.getUsername())
                    .params("mobile", userInfo.getMobile())
                    .params("start_address", start_address)
                    .params("end_address", end_address)
                    .params("order_price", order_price)
                    .params("push_state", 0)
                    .params("push_time", push_time)
                    .execute(new HttpStringCallback(this) {
                        @Override
                        protected void onSuccess(String msg, String response) {
                            showToast(msg);
                            setResult(1000);
                            finish();
                        }

                        @Override
                        protected void onError(String response) {
                            showToast(response);
                        }
                    });
        }

    }


    @Override
    protected void initData() {

    }

    private String getTime(Date date) {//可根据需要自行截取数据显示
        Log.d("getTime()", "choice date millis: " + date.getTime());
        SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:ss");
        return format.format(date);
    }

}

支付页面

/**
 * 支付页面
 */
public class PayDialogActivity extends BaseActivity<ActivityPayDialogBinding> {
    private OrderInfo orderInfo;

    @Override
    protected ActivityPayDialogBinding getViewBinding() {
        return ActivityPayDialogBinding.inflate(getLayoutInflater());
    }

    @Override
    protected void setListener() {
        mBinding.cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
        mBinding.confirmButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (null != orderInfo) {
                    payOrder(orderInfo.getUid());
                }
            }
        });
    }

    private void payOrder(int _uid) {
        OkGo.<String>get(ApiConstants.PAY_ORDER_URL)
                .params("uid", _uid)
                .params("order_state", 1)
                .execute(new HttpStringCallback(this) {
                    @Override
                    protected void onSuccess(String msg, String response) {
                        showToast(msg);
                        setResult(3000);
                        finish();

                    }

                    @Override
                    protected void onError(String response) {
                        showToast(response);
                    }
                });
    }

    @Override
    protected void initData() {
        orderInfo = (OrderInfo) getIntent().getSerializableExtra("orderInfo");
        if (null != orderInfo) {
            mBinding.discountPrice.setText("¥" + orderInfo.getOrder_price());
        }
    }
}

统计管理

/**
 * 统计管理
 */
public class StatisticalActivity extends BaseActivity<ActivityStatisticalBinding> {
    private String[] titles = {"乘客订单", "乘客支出", "车主收入"};
    private List<Fragment> fragmentList = new ArrayList<>();

    @Override
    protected ActivityStatisticalBinding getViewBinding() {
        return ActivityStatisticalBinding.inflate(getLayoutInflater());
    }

    @Override
    protected void setListener() {

    }

    @Override
    protected void initData() {
        //造数据
        fragmentList.add(new OrderListFragment());
        fragmentList.add(new SpendingFragment());
        fragmentList.add(new InComeFragment());
        //如果处理成懒加载的话,其实很简单,只要是这个方法setOffscreenPageLimit不去设置,就可以了。
//        mBinding.viewPager.setOffscreenPageLimit(fragmentList.size());
        mBinding.viewPager.setAdapter(new FragmentStateAdapter(this) {
            @NonNull
            @Override
            public Fragment createFragment(int position) {
                return fragmentList.get(position);
            }

            @Override
            public int getItemCount() {
                return fragmentList.size();
            }
        });
        mBinding.tabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                mBinding.viewPager.setCurrentItem(tab.getPosition(), false);
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });

        TabLayoutMediator tabLayoutMediator = new TabLayoutMediator(mBinding.tabs, mBinding.viewPager, new TabLayoutMediator.TabConfigurationStrategy() {
            @Override
            public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
                tab.setText(titles[position]);
            }
        });
        //这句话很重要
        tabLayoutMediator.attach();
    }
}
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
随着互联网和智能手机的普及,打车软件成为人们日常生活中的必需品。市场上已经出现了众多的打车软件,例如滴滴、Uber、快滴等。这些软件不仅提供了便捷的出行服务,也极大地改善了城市交通拥堵问题。因此,对打车软件需求分析的重要性不言而喻。 首先,对于用户而言,打车软件最重要的功能是快速、方便地调度出租车。在需求分析的过程中,需要考虑如何提高软件的响应速度,并优化用户的使用体验。此外,用户对安全性的要求也非常高。因此,软件需要在安全、信任和保密等方面做出充分的保障。 其次,对于司机而言,打车软件也提供了便捷的服务。在需求分析中,需要考虑如何提高司机的配对率,并提供更加公正、透明的收费方式。此外,软件需要充分考虑路况、天气等因素,实现智能调度,提高司机的收益和工作效率。 最后,为了确保软件的可持续发展,还需要对市场需求做出充分的分析。例如,需要进行竞争分析,了解市场上其他打车软件的特点和竞争优势。同时,需要考虑用户的需求变化和市场趋势,及时调整软件的策略和功能,提高市场占有率。 综上所述,打车软件需求分析对于软件的设计和运营具有极为重要的意义。只有充分理解用户需求和市场趋势,才能提供更加优质的服务,增强软件的竞争力和市场影响力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩宇软件开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值