基于Android的失物寻找失主寻找的APP

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

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

目录

源码下载:

一、项目介绍

二、运行环境

三、使用技术

四、数据库设计

五、部分代码

1:失物信息列表

六、浏览更多Android毕业设计

七、源码下载


源码下载:

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

一、项目介绍

1:注册模块,用户在使用软件前需要进行用户信息的注册
2:用户登录:用户通过自己的注册信息进行软件的登录
3:查看信息:用户可查看失物启事、校园资讯、拾物启事数据信息
4:拾物信息:发布拾物信息以及可以点赞评论分享,增删改查,以及发布信息最后可以增加积分
5:失物信息:发布失物信息以及可以点赞评论分享,增删改查,以及对失物信匹配
6:积分兑换:通过自己发布的拾物信息积分可以兑换礼品信息
7:个人信息:用户可以浏览个人信息,以及对密码进行修改;
 

二、运行环境

1:客户端使用Android stuido进行开发;
2:服务端后台使用Myeclipse2014进行开发;
3:mysql数据库进行数据存储;
4:需要jdk1.7以上
5:使用雷电模拟器或者Androidstuio自带的模拟器进行运行

三、使用技术

总体设计逻辑和思路:
1:先设计数据库表文件
2:写服务端jsp页面以及写api接口给客户端提供数据
3:完成后台服务端的数据交互,也就是jsp页面数据的存储和显示
4:进行客户端页面的开发;
5:进行客户端对api接口的调用,也就是获取数据库的数据以及在客户端进行显示

移动端:
1:使用android原生控件以及xml布局文件来完成界面的显示
2:使用java代码完成功能的数据和逻辑交互
3:使用http网络请求完成数据的请求;
4:使用json数据解析完成客户端数据的回调和显示

服务端后台:
1:使用mysql完成数据的存储
2:使用jdbc完成数据库和代码的逻辑交互
3:使用jsp完成网页数据的显示
4:使用java代码完成api接口的编写以及以及数据的回调

四、数据库设计

/*
Navicat MySQL Data Transfer

Source Server         : mysql
Source Server Version : 50537
Source Host           : localhost:3306
Source Database       : lostdb

Target Server Type    : MYSQL
Target Server Version : 50537
File Encoding         : 65001

Date: 2017-03-29 14:49:27
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `contact`
-- ----------------------------
DROP TABLE IF EXISTS `contact`;
CREATE TABLE `contact` (
  `cId` int(50) NOT NULL AUTO_INCREMENT,
  `cLId` varchar(50) NOT NULL,
  `cLUserId` varchar(50) NOT NULL,
  `cUserId` varchar(50) NOT NULL,
  `cUserPhone` varchar(100) NOT NULL,
  `cMessage` varchar(200) NOT NULL,
  PRIMARY KEY (`cId`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of contact
-- ----------------------------
INSERT INTO `contact` VALUES ('2', '9', '1', '2', '15249246666', '墨迹老K了');
INSERT INTO `contact` VALUES ('6', '15', '4', '1', '555', '喇叭');
INSERT INTO `contact` VALUES ('7', '17', '5', '1', '15249245656', '谢谢你,联系我');

-- ----------------------------
-- Table structure for `lost`
-- ----------------------------
DROP TABLE IF EXISTS `lost`;
CREATE TABLE `lost` (
  `lId` int(50) NOT NULL AUTO_INCREMENT,
  `lName` varchar(100) NOT NULL,
  `lTime` varchar(100) NOT NULL,
  `lMessage` varchar(300) NOT NULL,
  `lUserId` varchar(100) NOT NULL,
  `lUserName` varchar(100) NOT NULL,
  `lLongitude` varchar(100) NOT NULL,
  `lLatitude` varchar(100) NOT NULL,
  `lCreateTime` varchar(100) NOT NULL,
  `choiceType` varchar(100) NOT NULL,
  PRIMARY KEY (`lId`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of lost
-- ----------------------------
INSERT INTO `lost` VALUES ('1', '衣服', '2017-03-28', '我默默哦哦', '1', 'pony', '108.931568', '34.226001', '2017-03-28 17:02', '1');
INSERT INTO `lost` VALUES ('7', '电脑', '2017-03-29', '我我默默', '1', 'pony', '108.93261', '34.223486', '2017-03-29 10:38', '1');
INSERT INTO `lost` VALUES ('8', 'pony', '2017-03-29', '哦了了了了', '1', 'pony', '108.93002', '34.223619', '2017-03-29 10:39', '1');
INSERT INTO `lost` VALUES ('9', '水杯', '2017-03-28', '我Mook', '1', 'pony', '108.92314', '34.218848', '2017-03-29 10:44', '1');
INSERT INTO `lost` VALUES ('11', '银行卡', '2017-03-29', '墨迹咯', '1', 'pony', '108.92390', '34.213106', '2017-03-29 10:46', '1');
INSERT INTO `lost` VALUES ('12', '燕妮', '2017-03-29', '我的齐鲁台', '1', 'pony', '108.93812', '34.232066', '2017-03-29 10:57', '1');
INSERT INTO `lost` VALUES ('13', '身份证', '2017-03-29', '我Mook', '1', 'pony', '108.93138', '34.230711', '2017-03-29 11:08', '2');
INSERT INTO `lost` VALUES ('14', '我的手机', '2017-03-29', '哦了了了了', '3', 'jack', '108.92584', '34.233026', '2017-03-29 14:23', '1');
INSERT INTO `lost` VALUES ('15', '我的手机丢失了', '2017-03-29', '我的iphone7,谢谢大家', '4', 'zhangsan', '108.92783', '34.217449', '2017-03-29 14:26', '1');
INSERT INTO `lost` VALUES ('16', '我的银行卡', '2017-03-29', '谢谢大家', '5', 'lisi', '108.931594', '34.226008', '2017-03-29 14:41', '1');
INSERT INTO `lost` VALUES ('17', '捡到手机', '2017-03-29', '给大家', '5', 'lisi', '108.93413', '34.233393', '2017-03-29 14:41', '2');

-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `uid` int(50) NOT NULL AUTO_INCREMENT,
  `uname` varchar(100) NOT NULL,
  `upswd` varchar(100) NOT NULL,
  `uphone` varchar(100) DEFAULT NULL,
  `utime` varchar(100) NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'pony', '123456', '15249243002', '2017-02-17 15:16');
INSERT INTO `user` VALUES ('2', 'Tom', '123456', '15249246666', '2017-02-17 18:34');
INSERT INTO `user` VALUES ('3', 'jack', '123456', '15249245656', '2017-03-29 14:22');
INSERT INTO `user` VALUES ('4', 'zhangsan', '123456', '15249248989', '2017-03-29 14:25');
INSERT INTO `user` VALUES ('5', 'lisi', '123456', '15249245689', '2017-03-29 14:40');
 

五、部分代码

1:失物信息列表


public class MessageFragment extends BaseFragment {

  
    private View rootView;

    private ListviewForScrollView mListMessage;
    LookListAdapter messageAdapter;
    View convertView;
    private int incomeTotalMoney = 0;
    private int costTotalMoney = 0;
    private TextView mtvName;
    private TextView mtvNo;
    private DialogMsg dialogMsg;
    private List<JobModel> list_result;
    StudentLoginModel userModel;
    private CourseModel courseModelPos;
    private Button mbtnLeave;
    TeacherAdapter studentAdapter ;
    private int numPos = -1;
     List<CourseModel> mListcourse;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rootView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_person, null);
        initWidget();
        initData();
        return rootView;
    }

    @Override
    public void initWidget() {
        mbtnLeave = (Button) rootView.findViewById(R.id.mbtnLeave);
        dialogMsg = new DialogMsg(getActivity());
        mListMessage = (ListviewForScrollView) rootView.findViewById(R.id.mListMessage);
        View convertView = LayoutInflater.from(getActivity()).inflate(R.layout.course_top_student, null);
        mtvName = (TextView) convertView.findViewById(R.id.mtvName);
        mtvNo = (TextView) convertView.findViewById(R.id.mtvNo);
        mListMessage.addHeaderView(convertView);
        mbtnLeave.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.mbtnLeave:
            Intent intent = new Intent(getActivity(), CreateLostMessageActivity.class);
            intent.putExtra("courseMsg", (Serializable) userModel);
            startActivity(intent);
            break;
        }
    }

    @Override
    public void initData() {
        StudentAction(true);
        mListMessage.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) {
                numPos = pos - 1;
                courseModelPos = userModel.getCourse().get(pos - 1);
                dialogMsg.Show();
            }
        });
        dialogMsg.submit_ok().setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                SignAction(true, courseModelPos.getcTeacherName(), courseModelPos.getcTeacherId(),
                        courseModelPos.getCid()+"", courseModelPos.getCname());
                dialogMsg.Close();
            }
        });

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

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

    /**
     * 
     * @param isShow
     */
    private void StudentAction(boolean isShow) {
        AjaxParams params = new AjaxParams();
        params.put("action_flag", "loginMessage");
        params.put("stuNo", MemberUserUtils.getUid(getActivity()));
        httpPost(Consts.URL + Consts.APP.StudentAction, params, Consts.actionId.resultFlag, isShow, "ÕýÔڵǼ...");
    }

    // sStuName,sStuId,sTeaNams,sTeaId,sTime
    /**
     * 
     * @param isShow
     */
    private void SignAction(boolean isShow, String sTeaNams, String sTeaId, String courseId, String courseName) {

        AjaxParams params = new AjaxParams();
        params.put("action_flag", "addMessage");
        params.put("sStuName", userModel.getStudent().getStuName());
        params.put("sStuId", userModel.getStudent().getStuId());
        params.put("sTeaNams", sTeaNams);
        params.put("sTeaId", sTeaId);
        params.put("courseId", courseId);
        params.put("courseName", courseName);
        httpPost(Consts.URL + Consts.APP.SignAction, params, Consts.actionId.resultCode, isShow, "");
    }

    @Override
    protected void callBackSuccess(ResponseEntry entry, int actionId) {
        super.callBackSuccess(entry, actionId);

        switch (actionId) {
        case Consts.actionId.resultFlag:
            if (null != entry.getData() && !TextUtils.isEmpty(entry.getData())) {

                userModel = mGson.fromJson(entry.getData(), StudentLoginModel.class);
                android.util.Log.i("pony_log", "login:" + userModel.getStudent().getStuName());

                try {
                    mListcourse  = userModel.getCourse();
                    studentAdapter= new TeacherAdapter(getActivity(), mListcourse);
                    mListMessage.setAdapter(studentAdapter);

                    mtvName.setText(userModel.getStudent().getStuName());
                    mtvNo.setText("ѧºÅ£º" + userModel.getStudent().getStuNo());
                } catch (Exception e) {
                    e.printStackTrace();
                }

            }
            break;

        case Consts.actionId.resultCode:
            courseModelPos.setSignState("true");
            mListcourse.set(numPos, courseModelPos);
            studentAdapter.notifyDataSetChanged();
            ToastUtil.show(getActivity(), entry.getRepMsg());
            break;
        default:
            break;
        }

    }

    @Override
    protected void callBackAllFailure(String strMsg, int actionId) {
        super.callBackAllFailure(strMsg, actionId);
        ToastUtil.show(getActivity(), strMsg);

    }

}
 

2:个人信息界面


public class MeFragment extends BaseFragment {

    // view
    private View rootView;
    private Button mExit;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rootView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_msg, null);
        initWidget();
        return rootView;
    }

    @Override
    public void initWidget() {
        mExit = (Button) rootView.findViewById(R.id.mExit);
        mExit.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

        switch (v.getId()) {
        case R.id.mExit:
            FinanceApplication.getInstance().messageFlag=false;
            Intent intent = new Intent(getActivity(), LoginActivity.class);
            startActivity(intent);
            getActivity().finish();
            break;

        default:
            break;
        }

    }

    @Override
    public void initData() {
        // TODO Auto-generated method stub

    }
}
 

六、浏览更多Android毕业设计

毕业设计-基于android的租房信息发布平台的APP_信息发布app源码_Android毕业设计源码的博客-CSDN博客

毕业设计-基于android选课系统的设计与实现_android学生选课系统_Android毕业设计源码的博客-CSDN博客

毕业设计之校园一卡通管理系统的设计与实现_一卡通管理系统实现_Android毕业设计源码的博客-CSDN博客

基于Android的校园二手闲置物品交易系统设计与实现_基于android的二手交易平台_Android毕业设计源码的博客-CSDN博客

基于androidstudio校园快递APP系统的设计与实现_android studio论文_Android毕业设计源码的博客-CSDN博客

基于android的商城购物定制APP_安卓开发购物app_Android毕业设计源码的博客-CSDN博客

更多毕业设计可以浏览我的个人主页哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Android毕业设计源码

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

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

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

打赏作者

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

抵扣说明:

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

余额充值