android课程设计-旅游助手app系统(Android期末作业,Android课设,AndroidStudio毕业设计)

博主介绍:本人专注于Android/java/数据库/微信小程序技术领域的开发,以及有好几年的计算机毕业设计方面的实战开发经验和技术积累;尤其是在安卓(Android)的app的开发和微信小程序的开发,很是熟悉和了解;本人也是多年的Android开发人员;希望我发布的此篇文件可以帮助到您;

🍅文章末尾获取源码下载方式🍅

目录

源码下载:

一、项目介绍

二、运行环境

三、功能运行演示

四、部分代码

1:添加景点信息

2:查看景点信息

五、更多Android课程设计

六、注意事项

七、源码获取


源码下载:

https://download.csdn.net/download/u014388322/88070364

一、项目介绍

管理员身份功能介绍:

1:用户登录:用户通过账号信息进行软件的登录
2:景点管理:用户可以对景点信息进行添加的修改
3:城市管理:用户可以对城市信息进行添加的修改

用户功能介绍:
1:注册模块,用户在使用软件前需要进行用户信息的注册
2:用户登录:用户通过自己的注册信息进行软件的登录
3:景点查询:用户登录之后可以查询发布的景点信息
4:景点详情:用户可以查看景点的详情信息
5:城市信息:用户可以查看城市信息,以及通过城市信息对景点进行查询
6:我的收藏:用户可以对自己感兴趣的景点进行收藏
7:个人信息:用户可以浏览个人信息,以及对密码进行修改;

二、运行环境

1:软件使用Android stuido进行开发;
2:使用sqlite本地数据库进行数据的存储;

3:需要jdk1.7以上

4:使用雷电模拟器或者Androidstuio自带的模拟器进行运行

三、功能运行演示

四、部分代码

1:添加景点信息

public class CreatSceneryActivity extends BaseActivity {
    // 标题
    private TextView mTvTitle;
    // 返回
    private ImageView mIvBack,guide_image;

    private Button mSubmit;

    private EditText et1,et2,et3,et4;
    private TextView mtvchoice;

    private List<City> mlistData = new ArrayList<City>();
    private DialogListMsg dialogListMsg;
    private ChoiceTypeAdapter listaAdapter;

    private DialogMsg dialogMsg;
    private static final int REQUEST_CODE_SCAN_GALLERY = 100;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_box);
        initWidget();
        initData();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.mIvBack:
                finish();
                break;
            case R.id.mtvchoice:
                dialogListMsg.Show();
                break;

            case R.id.mSubmit:

                Scenery box=new Scenery();
                box.setCityId(mlistData.get(posIndex).getId());
                box.setCityName(mlistData.get(posIndex).getCityTitle());
                box.setSceneryTitle(et1.getText().toString());
                box.setSceneryMoney(et2.getText().toString());
                box.setSceneryAddress(et3.getText().toString());
                box.setSceneryMsg(et4.getText().toString());
                box.setSceneryImage(imagePath);
                box.save();

                CustomToast.showToast(this, "添加成功");
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        CreatSceneryActivity.this.finish();
                    }
                }, 1000);

                break;

            case R.id.guide_image:
                Intent innerIntent = new Intent(Intent.ACTION_GET_CONTENT); //"android.intent.action.GET_CONTENT"
                innerIntent.setType("image/*");
                startActivityForResult(innerIntent, REQUEST_CODE_SCAN_GALLERY);
                break;

        }
    }

    @Override
    public void initWidget() {


        et1 =(EditText) findViewById(R.id.et1);
        et2 =(EditText) findViewById(R.id.et2);
        et3 =(EditText) findViewById(R.id.et3);
        et4 =(EditText) findViewById(R.id.et4);


        et1.setText("");
        et2.setText("50");
        et3.setText("西安市雁塔区");
        et4.setText("大雁塔位于唐长安城晋昌坊(今陕西省西安市南)的大慈恩寺内,又名“慈恩寺塔”。唐永徽三年(652年),玄奘为保存由天竺经丝绸之路带回长安的经卷佛像主持修建了大雁塔,最初五层,后加盖至九层,再后层数和高度又有数次变更,最后固定为所看到的七层塔身,通高64.517米,底层边长25.5米。");

        mdialog = new LoadingDialog(this, "上传图片...");
        mSubmit = (Button) findViewById(R.id.mSubmit);
        mIvBack = (ImageView) findViewById(R.id.mIvBack);
        mTvTitle = (TextView) findViewById(R.id.mTvTitle);
        mTvTitle.setText("添加景区信息");
        mIvBack.setVisibility(View.VISIBLE);
        mIvBack.setOnClickListener(this);
        mSubmit.setOnClickListener(this);


        mtvchoice = (TextView) findViewById(R.id.mtvchoice);
        mtvchoice.setOnClickListener(this);

        guide_image = (ImageView) findViewById(R.id.guide_image);
        guide_image.setOnClickListener(this);

    }



    private int posIndex;
    @Override
    public void initData() {

        dialogMsg = new DialogMsg(this);
        dialogListMsg = new DialogListMsg(this);
        dialogListMsg.setTitle().setText("请选择所在城市");
        listaAdapter = new ChoiceTypeAdapter(this);

        mlistData = City.listAll(City.class);
        listaAdapter.setData(mlistData);
        dialogListMsg.show_listview().setAdapter(listaAdapter);

        dialogListMsg.show_listview().setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                posIndex = i;
                mtvchoice.setText(mlistData.get(posIndex).getCityTitle());
                dialogListMsg.Close();
            }
        });

        dialogListMsg.submit_no().setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                dialogListMsg.Close();
            }
        });


    }


    Uri uriInfor;
    String imagePath;
    public void onActivityResult(final int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
                case REQUEST_CODE_SCAN_GALLERY:
                    uriInfor = data.getData();
                    imagePath  = getRealPathFromUri(this, data.getData());

                    String cameraPath = imagePath;
                    Bitmap bitmap = BitmapFactory.decodeFile(cameraPath);
                    guide_image.setImageBitmap(bitmap);

                    Log.i("pony_log","imagePath:"+imagePath);

                    break;
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
    /**
     * 根据图片的Uri获取图片的绝对路径(已经适配多种API)
     *
     * @return 如果Uri对应的图片存在, 那么返回该图片的绝对路径, 否则返回null
     */
    public static String getRealPathFromUri(Context context, Uri uri) {
        int sdkVersion = Build.VERSION.SDK_INT;
        if (sdkVersion < 11) {
            // SDK < Api11
            return getRealPathFromUri_BelowApi11(context, uri);
        }
        if (sdkVersion < 19) {
            // SDK > 11 && SDK < 19
            return getRealPathFromUri_Api11To18(context, uri);
        }
        // SDK > 19
        return getRealPathFromUri_AboveApi19(context, uri);
    }

    /**
     * 适配api19以上,根据uri获取图片的绝对路径
     */
    private static String getRealPathFromUri_AboveApi19(Context context, Uri uri) {
        String filePath = null;
        String wholeID = DocumentsContract.getDocumentId(uri);

        // 使用':'分割
        String id = wholeID.split(":")[1];

        String[] projection = {MediaStore.Images.Media.DATA};
        String selection = MediaStore.Images.Media._ID + "=?";
        String[] selectionArgs = {id};

        Cursor cursor = context.getContentResolver().query(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection,
                selection, selectionArgs, null);
        int columnIndex = cursor.getColumnIndex(projection[0]);

        if (cursor.moveToFirst()) {
            filePath = cursor.getString(columnIndex);
        }
        cursor.close();
        return filePath;
    }

    /**
     * 适配api11-api18,根据uri获取图片的绝对路径
     */
    private static String getRealPathFromUri_Api11To18(Context context, Uri uri) {
        String filePath = null;
        String[] projection = {MediaStore.Images.Media.DATA};

        CursorLoader loader = new CursorLoader(context, uri, projection, null,
                null, null);
        Cursor cursor = loader.loadInBackground();

        if (cursor != null) {
            cursor.moveToFirst();
            filePath = cursor.getString(cursor.getColumnIndex(projection[0]));
            cursor.close();
        }
        return filePath;
    }

    /**
     * 适配api11以下(不包括api11),根据uri获取图片的绝对路径
     */
    private static String getRealPathFromUri_BelowApi11(Context context, Uri uri) {
        String filePath = null;
        String[] projection = {MediaStore.Images.Media.DATA};
        Cursor cursor = context.getContentResolver().query(uri, projection,
                null, null, null);
        if (cursor != null) {
            cursor.moveToFirst();
            filePath = cursor.getString(cursor.getColumnIndex(projection[0]));
            cursor.close();
        }
        return filePath;
    }


}
2:查看景点信息

public class SceneryMessageActivity extends BaseActivity {
    // title
    private TextView mTvTitle, mIvStu;
    // 返回
    private ImageView mIvBack;
    // 查询按钮
    private TextView mtvtitle;
    private TextView mtvcontentZhuSu;
    private Scenery sceneryModel;

    private TextView mtvtime;
    private RelativeLayout mllbottom;
    private Button mbtnPay,mbtndelete;
    private TextView mtvShopPrice;
    private TextView courseLength;

    private ImageView guide_image;





    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_projectlistview);

        initWidget();
        initData();
    }

    @Override
    public void initWidget() {
        guide_image = (ImageView) findViewById(R.id.guide_image);
        guide_image.setOnClickListener(this);
        mIvStu = (TextView) findViewById(R.id.mIvStu);

        mIvStu.setVisibility(View.VISIBLE);
        mIvStu.setOnClickListener(this);


        mbtnPay = (Button) findViewById(R.id.mbtnPay);


        mbtndelete = (Button) findViewById(R.id.mbtndelete);
        mbtndelete.setOnClickListener(this);

        mllbottom = (RelativeLayout) findViewById(R.id.mllbottom);

        mtvcontentZhuSu = (TextView) findViewById(R.id.mtvcontentZhuSu);
        mtvtitle = (TextView) findViewById(R.id.mtvtitle);

        mIvBack = (ImageView) findViewById(R.id.mIvBack);
        mTvTitle = (TextView) findViewById(R.id.mTvTitle);
        mTvTitle.setText("详情信息");
        mIvBack.setVisibility(View.VISIBLE);
        mIvBack.setOnClickListener(this);
        mbtnPay.setOnClickListener(this);

        mtvShopPrice = (TextView) findViewById(R.id.mtvShopPrice);

    }

    @Override
    public void onClick(View v) {

        switch (v.getId()) {
            case R.id.mIvBack:
                SceneryMessageActivity.this.finish();
                break;
            case R.id.mbtnPay:
                Intent mbtnPay = new Intent(this, UpdateSceneryActivity.class);
                mbtnPay.putExtra("msg",sceneryModel);
                startActivity(mbtnPay);
                finish();
                break;
            case R.id.mbtndelete:
                Scenery delete = Scenery.findById(Scenery.class, sceneryModel.getId());
                delete.delete();
                ToastUtil.ShowToast(this, "删除成功");
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        finish();
                    }
                }, 1000);
                break;

            case R.id.mIvStu:


                if (collectState.size()==0) {
                    Collect box=new Collect();
                    box.setCityId(sceneryModel.getCityId());
                    box.setCityName(sceneryModel.getCityName());
                    box.setSceneryTitle(sceneryModel.getSceneryTitle());
                    box.setSceneryMoney(sceneryModel.getSceneryMoney());
                    box.setSceneryAddress(sceneryModel.getSceneryAddress());
                    box.setSceneryMsg(sceneryModel.getSceneryMsg());
                    box.setSceneryImage(sceneryModel.getSceneryImage());
                    box.setSceneryId(sceneryModel.getId());
                    box.setUserId(Long.valueOf(MemberUserUtils.getUid(this)));
                    box.save();

                    ToastUtil.ShowToast(this, "收藏成功");
                    mIvStu.setText("已收藏");
                }else{

                    Collect collect = Collect.findById(Collect.class, collectState.get(0).getId());
                    collect.delete();
                    ToastUtil.ShowToast(this, "取消收藏");
                    mIvStu.setText("未收藏");

                }



                break;


        }
    }
    List<Collect> collectState;
    @Override
    public void initData() {

        sceneryModel = (Scenery) this.getIntent().getSerializableExtra("msg");
        mtvtitle.setText(sceneryModel.getSceneryTitle());
        mtvcontentZhuSu.setText("景区地址:" + sceneryModel.getSceneryAddress()+"\n景区介绍:" + sceneryModel.getSceneryMsg());
        mtvShopPrice.setText(sceneryModel.getSceneryMoney());

        Bitmap bitmap = BitmapFactory.decodeFile(sceneryModel.getSceneryImage());
        guide_image.setImageBitmap(bitmap);


        collectState = Collect.findWithQuery(Collect.class, "Select * from Collect where userId = " + MemberUserUtils.getUid(this) + " and sceneryId= " + sceneryModel.getId());
        if (collectState.size()==0) {
            mIvStu.setText("未收藏");
        }else{
            mIvStu.setText("已收藏");
        }

    }



}

五、更多Android课程设计

AndroidStudio课程设计-通讯录系统(高分毕设,Android期末作业,Android课设,AndroidStudio资源-CSDN文库https://download.csdn.net/download/u014388322/88063330?spm=1001.2014.3001.5503
AndroidStudio的智慧校园系统(高分毕设,Android期末作业,Android课设)资源-CSDN文库https://download.csdn.net/download/u014388322/88062241?spm=1001.2014.3001.5503
AndroidStudio实现的天气预报系统(高分毕设,Android期末作业,Android课设)_android期末资源-CSDN文库https://download.csdn.net/download/u014388322/87938777?spm=1001.2014.3001.5503
AndroidStudio期末大作业校园快递领取系统(Android课设,新手小白必看)_androidstudio期末大作业资源-CSDN文库https://download.csdn.net/download/u014388322/87929440?spm=1001.2014.3001.5503

六、注意事项

如果遇到数据库未初始化的情况,解决办法如下:

1:Android Studio的Settings

2:在Android Studio在搜索框输入Instant Run(或者File——Settings——Build, Execution,Deployment——Instant Run

3:可以看到如下信息,第一排的Enable Instant Run to hot swap code/resource changes on deploy(default enabled)默认是有√的

4)现在将√去掉就OK了!

七、源码获取

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取联系方式👇🏻👇🏻👇🏻

1:V信搜索“毕业设计小码哥”,也可以关注下方公众号,然后点击菜单栏“源码说明-源码下载”

2:点击小程序下面截图​

3:选择Android就可以看到下载源码

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Android毕业设计源码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值