• 基于Android的教室预约系统


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

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

    一、项目介绍

    主要功能:学生通过系统实现网上选座功能,预约晚自习期间计算机教室座位进行自主学习

    具体功能

    一、预约功能:

    1.学生通过网页进入自主选座系统预约自习室,不可通过网站直接预订具体座位,确定选座后后台会收到预约并减少教室内的可预约座位数量,教室预约人数满该教室则不可再次进行预约(一个教室内的可预约数量为40,共20个教室)

    2.预约系统的开放预约时间为早7点到下午6点,预约期限仅限当日的晚自习时间(18.30-20.30)

    二、签到功能:

    1.学生到达教室后要通过网页进行签到,并记录自己的机器号(为了出现机器故障等问题找到对应学生进行处理),后台存储记录学生的预约过往记录,学生个人主页也可看到

    2.如果预约教室后的学生未到达教室进行自习,则对该学生进行违规处罚,一周内不可预约自习室

    3。如果学生在自习期间破坏了计算机设备由管理员备注记录,则该学生不可再次预约计算机教室

    三、网站开放人员

    1.学生(登录帐号为学号,密码最低限制6位),教室管理员

    四、主页内容

    (1)、学生

    1.预约自习室

    2.进行签到界面(签到时间,签到机器)

    3.修改个人信息(专业 、入学时间、姓名、学号、班级、辅导员)

    4.查看历史预约记录

    (2)、管理人员

    1.修改个人信息(密码)

    2.查看学生信息

    3.查看学生历史预约记录      

    4.修改学生违规栏信息并选择处罚措施(未签到、破坏教学设施)

    二、运行环境

    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接口的编写以及以及数据的回调

    四:部分代码

    1:查看教室信息

    public class RoomMessageActivity extends BaseActivity {
        RoomModel intersetModel;
        // title
        private TextView mTvTitle;
        // 返回
        private ImageView mIvBack;

        private TextView mtv1, mtv2, mtv3, mtv4, mtvMessagetitle;
        private Button mbtnPay;

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

        @Override
        public void initWidget() {

            mtv1 = (TextView) findViewById(R.id.mtv1);
            mtv2 = (TextView) findViewById(R.id.mtv2);
            mtv3 = (TextView) findViewById(R.id.mtv3);
            mtv4 = (TextView) findViewById(R.id.mtv4);
            mtvMessagetitle = (TextView) findViewById(R.id.mtvMessagetitle);

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

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


        }

        @Override
        public void onClick(View v) {

            switch (v.getId()) {
                case R.id.mIvBack:
                    RoomMessageActivity.this.finish();
                    break;

                case R.id.mbtnPay:
                    Intent intent = new Intent(this, PayMessageActivity.class);
                    intent.putExtra("msg",intersetModel);
                    startActivity(intent);
                    break;

            }
        }

        @SuppressLint("SetTextI18n")
        @Override
        public void initData() {

            intersetModel = (RoomModel) this.getIntent().getSerializableExtra("msg");
            mtvMessagetitle.setText(intersetModel.getRoomName());
            mtv1.setText(intersetModel.getRoomAddress());
            mtv2.setText(intersetModel.getRoomNumber() + "人");
            mtv3.setText(intersetModel.getRoomMessage());
            mtv4.setText(intersetModel.getRoomTime());


        }


    }
     

    2:预约信息

    public class ApplyMessageActivity extends BaseActivity {
        ApplyModel intersetModel;
        // title
        private TextView mTvTitle;
        // 返回
        private ImageView mIvBack;

        private TextView mtv1, mtv2, mtv3, mtv4,mtvMessagetitle,mtv5;
        private Button mbtnPay;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_applyessage);
            initWidget();
            initData();
        }

        @Override
        public void initWidget() {

            mtv1 = (TextView) findViewById(R.id.mtv1);
            mtv2 = (TextView) findViewById(R.id.mtv2);
            mtv3 = (TextView) findViewById(R.id.mtv3);
            mtv4 = (TextView) findViewById(R.id.mtv4);
            mtvMessagetitle = (TextView) findViewById(R.id.mtvMessagetitle);
            mtv5 = (TextView) findViewById(R.id.mtv5);

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

            mbtnPay = (Button) findViewById(R.id.mbtnPay);
            mbtnPay.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {

            switch (v.getId()) {
                case R.id.mIvBack:
                    ApplyMessageActivity.this.finish();
                    break;
                case R.id.mbtnPay:
                    deleteApply(false);
                    break;
            }
        }

        @SuppressLint("SetTextI18n")
        @Override
        public void initData() {

            intersetModel = (ApplyModel) this.getIntent().getSerializableExtra("msg");
            mtvMessagetitle.setText(intersetModel.getApplyMessageName());
            mtv1.setText(intersetModel.getApplyStartMsg()+"至"+intersetModel.getApplyEndMsg());
            mtv2.setText(intersetModel.getApplyTheme() + "人");
            mtv3.setText(intersetModel.getApplyPerson());
            mtv5.setText(intersetModel.getApplyUserName());
            if(intersetModel.getApplyState().equals("1")){
                mtv4.setText("预约状态:待审核");
            }else if(intersetModel.getApplyState().equals("2")){
                mtv4.setText("预约状态:已批准");
            }else if(intersetModel.getApplyState().equals("3")){
                mtv4.setText("预约状态:已拒绝");
            }

        }

        private void deleteApply(boolean isShow) {
            AjaxParams params = new AjaxParams();
            params.put("action_flag", "deleteApply");
            params.put("applyId", intersetModel.getApplyId()+"");
            httpPost(Consts.URL + Consts.APP.MessageAction, params, Consts.actionId.resultFlag, isShow, "正在更新...");
        }

        @Override
        protected void callBackSuccess(ResponseEntry entry, int actionId) {
            super.callBackSuccess(entry, actionId);
            CustomToast.showToast(ApplyMessageActivity.this, entry.getRepMsg());
            ApplyObservable.getInstance().notifyStepChange("ok");
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    ApplyMessageActivity.this.finish();
                }
            }, 1000);
        }

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

        }
    }
     

    五、更多Android课程设计

    七、源码获取

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

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

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

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

  • 相关阅读:
    LeetCode 2656.K个元素的最大和
    齐次坐标与投影几何
    【广州华锐互动】数字孪生智慧楼宇3D可视化系统:掌握实时运行状态,优化运营管理
    Intel 高性能库之IPP信号处理简介及下载(版本5.1、6.1,含32位和64位及注册)
    【Linux kernel/cpufreq】framework ----cpufreq governor
    设计模式:外观模式(Facade Pattern),理解为小爱同学模式
    全网最全!!Qt实现图片旋转及图片旋转动画的几种方式
    提高工作效率的有效途径:五分钟快速学会搭建悟空CRM内网穿透
    Linux——程序地址空间
    灰度何以跌下神坛?
  • 原文地址:https://blog.csdn.net/u014388322/article/details/128138710