基于蓝牙的考勤系统


    






    基蓝牙考勤系统户界面设计








    基蓝牙考勤系统

    着教育普学生数量越越初高中理学更偏学高校流行选分制度班级流动性增强学生获更课程选择度班级概念弱化学生着充裕时间做喜欢项目喜欢项目放异彩种情况学院理难度变学生放导致课产生厌倦情绪产生逃课代名互相顶等行老师淡化理进步容种行传统考勤方式口头点名学生数太情况难效检测行杜绝种行基蓝牙考勤系统广泛应起
    设计然基蓝牙考勤系统蓝牙负责签连接信息交互方面功数交互app服务端完成文描述设计工作原理模块容设计数库服务端交互作核心学生蓝牙名称改学号设备进行搜寻定位确定学生状态mysql服务端数库处理登录注册收发通知sqlite数库存储蓝牙通讯签请假数缺勤学生做出特殊标记显示出勤率事包信息传送相关理员种方法提高学生出勤率改善教学质量口头点名更加现代


    关键词:蓝牙考勤数库服务端











    Bluetooth Management System Based on User Interface Design

    Abstract
    With the popularization of education the number of college students is increasing Different from the management of junior and senior high schools universities prefer autonomous learning In addition the class mobility of the popular selection and scoring system in colleges is enhanced so college students have more freedom in course selection and class concept is weakened Although there is plenty of time to do the projects they like so as to shine in the projects they like in this case the school management becomes more difficult Some students are so indulgent that they get bored of classes so they skip classes and substitute for each other And some teachers downplay the management further condoning this kind of behavior In traditional attendance methods such as oral roll call it is difficult to detect these behaviors effectively when there are too many students Therefore in order to eliminate this kind of behavior bluetooth based attendance system is widely usedAlthough this design is called a bluetoothbased attendance system bluetooth is only responsible for checkin connection information interaction other data interaction as long as the app and the server to complete This paper mainly describes the working principle in the design and the content of each module The design of the database and server side of the interaction and as the core let the students' bluetooth name changed to their student number let the device to search and locate so as to determine the status of students Mysql is a serverside database mainly used to handle login registration send and receive notification sqlite is a local database mainly used to store the bluetooth communication checkin and leave data Students who are absent from school are specially marked and their attendance is displayed The information is then packaged and sent to the relevant management This method can improve student attendance and the quality of teaching And it's more modern than a verbal roll callKeywords DatabaseBluetooth Managerment SystemClinetside System



    目 录

    1前言 1
    11设计目意义应达技术求 1
    12设计国外发展概况存问题 1
    13设计应解决问题 2
    2搭建环境工具 2
    21关Android Studio 2
    211介绍 2
    212环境搭建 2
    22 关MyEclipse 2
    221 介绍 2
    23关Mysql 2
    231介绍 2
    232环境搭建 3
    24操作系统选择 3
    241关Android 3
    242Android架构 3
    243Andr应程序oid开发四模块 4
    25语言JAVA 4
    3设计原理 5
    4户界面设计 5
    41户界面设计原 5
    411界面整洁 5
    412通性 5
    413合理界面布局 5
    414界面设计布局属性 6
    5教师学生界面设计 10
    51注册界面 10
    52欢迎界面 10
    53查询请假界面 10
    54工具栏界面 11
    55 登录界面 11
    56关系统界面 11
    57左滑菜单 11
    58教师功界面 11
    59学生功界面 12
    6接口设计 12
    7考勤签设计原理 13
    8总结工作展 13
    参考文献 14
    谢 辞 16















    1 前言
    现代化信息理时代 教育工作者蓝牙考勤系统进行签学生进行请假进更安排学计划老师端仅通考勤检查学生勤状况发布群消息仅节省工成提高效率设计基蓝牙考勤系统基app服务端交互蓝牙间连接课题针户界面设计意做出互动性强界面[1]

    11设计目意义应达技术求
    目前考勤签采占时间长效率口头签样易造成课堂学生学时间减少时间花考勤造良教学环境设计易完成先进高效蓝牙考勤系统Android设计致性高受众广易手界面切换迅速字体颜色分布着舒适界面选择色调作APP题色操作达简单舒适范畴合理传达视觉元素达信息户说目然

    12设计国外发展概况存问题
    年着学生数量增考勤务变越越兼巨拖延时间长教师节必点名样引起学生侥幸心理学生学发展疑种巨影响改变机制点名时间幅度减少效率变高户界面设计缺环考勤利否会影响积极性(户体验)优化户感受量户感受傻瓜式体验企业学追求效率时间金钱种基础蓝牙考勤系统越越普国国外久口头点名类效率低方式终淘汰[4]
    国外app设计更加性化户体验作终目标造许爱释手appapp载率高居见趣十分减压许元素组成譬俏皮文字适宜画面完美组合成app次视觉手法引发鸣
    户体验户app直观感受夸张说良互动确确影响户积极性引发系列相关连锁问题设计安卓台点名app媒介找符合众视觉需求界面样式舒适简洁出发
    受限某限制国设计操作系统验性国外定差距手机户界面没国外性化缺少良性互动缺少实性应该想方设法增加客户粘
    13设计应解决问题
    造户喜欢户界面根户惯设计界面阅读惯信息语言否恰数齐排列屏幕类图标摆放适宜减少app中广告植入广告植入户享受范围app应该简单减少复杂操作页数拉app客户距离应该针该app专群添加该群熟悉元素
    21关Android Studio
    211介绍
    Android StudioGoogle家技术公司推出Android需合适工作环境工具开发应调试集成工具
    212环境搭建
    载安装Android Studio(选择安装Virtual Device)设定Custom喜设置安装路径出现中文Android Studio默认语言中没中文根喜选择存第次安装会动配置gradle
    22 关MyEclipse
    221介绍
    MyEclipse包含Java学特殊功体开发环境高效开发选择Java SpringREST Web服务Maven均MyEclipse中统开发着强Java EE优势WebSphereWebLogicTomcatGlassfish种种应系列服务器
    该软件没什特殊处带tomcat没需安装7x导入路启动服务器 方Console显示容相关信息
    23关Mysql
    231介绍
    MYsql数存放仓库方便理数库中数数早编写规律存放数库数理户日常操作更加效组织化更加易理5部分组合成数库服务器数库数表字段行SQL结构化查询程序应设计语言种着寻常目编程语言存取查询更新理数库系统
    232环境搭建
    Mysql安装路径配置Path环境变量中安装时候避免中文路径设置端口3306字符集设置值默认字符集
    24操作系统选择
    241关Android
    2007年刚成立22月Android公司Google收购11月份Google纳入OHA(Open Handest Ailance)谓手机开放联盟Linux系统建立开发现Android操作系统直保持着思议进步速率相操作系统优势便完全开放代码2008年第台基Android智手机面世次事件Android着优势势挡进入电子设备开发领域2011年第季度成全球操作系统2013年Android成领域愧霸
    242Android架构
    Android架构具体分4部分Android操作系统基Linux核基底开发层Linux Kernel层中C语言开发设备驱动程序驱动程序均基础核心功功相较简答进程存理服务功需linux驱动显示蓝牙相机音频驱动层面LIibararies虚拟机构成Library包含C++C语言程序包程序包许功异组件利开发者开发程中更加便捷方便程序图片视频录制功解码媒体文件功媒体库标准系统C语言库AndroidJava编程语言拥安卓核心系统运行库2D底层图处理库SGLSGLSurface子系统理图处理更建树 Dalvik虚拟机部分重组成鹅部分移动电子设备板智手机着设备天独厚优势说限组装空间里芯片储存空间快速响应力层应程序框架(Application Framework)作连接程序linux驱动层基础开发应程序说开发员想开发应程序必须基开发应程序框架Android程序框架中必须建立保证框架整结构没良影响方便开发员程序访问部分核心重代码开放开发员开发应程序时便捷互相提供思路重复组件减少想换模块中组件更加简单容提供器通知理器 层户直接接触程序层(Application)日常生活中丰富功异应程序基础电话短信功备忘录时间网页浏览功Google play载应程序中包括许开发员开发程序语言JAVA程序较灵活会死板着程度户开发Android身核心层次构建安卓系统应程序接口
    243Android应程序开发四模块
    Activity屏幕组件Service服务组件Broadcast Receiver广播接受组件Content Receiver容提供者
    Activity 时种包含户界面组件户唯进行交互界面应程序包含着零组件活动组件包含控件Textview显示文EditText顾名思义户程序编辑信息组件Button予户监听事件活动功具体点理解Activity程序屏幕Activity四种活动模式设计采默认standard模式
    Service 属独立进程属户见界面Android实现台运行方案较适直长时间运行户进行交互务点类似电脑台进程需户界面帮助户开切换应程序时会造成影响
    Broadcaster Receiver 接收系统者身应程序广播注册软件时短信提醒电提醒功闹铃提醒功等Android广泛选择中选择更加感兴趣程序进行广播广播分序广播标准广播标准广播完全异步接收器时接收效率高拦截序广播等逻辑执行完步先序优先级高先接受拦截广播
    Content Provider 应程序通常访问应储存数享数外提供容提供者实现跨程序间数享整套完健全机制权限程序访问程序中属数时保证数操创建供数访问接口
    25语言JAVA
    目前Java应中间件开发 明Java适合pc应程序开发发展逐渐变成开发手持设备互联网信息站车载计算机开发 Java语法C++语法类似 Java完全彻底面象中提出GC(Garbage Collector)垃圾处理机制防止存溢出
    优点:JAVA语言健壮安全servlet机制编程更加高效易崩溃时线程工作模式移植性
    3设计原理
    老师学生间传递信息蓝牙媒介服务端利Servlet处置服务器响应程序轻量级框架进行HTTP请求响应响应教师端学生端发起服务端进行处理返回学生教师端蓝牙作设备独址中模块种载体
    4户界面设计
    设计研究容基Android较方便系统设计出界面容XML格式存储研发程中需解析XML文件然中信息补充进相界面中负责户项功见界面设计界面接口设计位会着重讲Activity相关组件
    41户界面设计原
    存意义机器交互进行信息交互话中间体着高科技发展机交互方式方法更加样化种元素构成视觉听觉交互户时操作逻辑界面设计说时款软件门面性化设计应该涵盖方面[1]
    411界面整洁
    保持界面整齐简洁界面定户轻松掌握方法量达户感觉复杂界面存快速区分信息重性
    412通性
    应app较起体布局应该相似整体界面中应该高度致特字体应方块颜色放置位置样户会更加舒适整洁户熟悉界面效率更高工作转战app
    413合理界面布局
    Android中种组件位置放置非常讲究界面起舒适排版应均匀元素放置应该全聚集处稀疏合理运颜色纹理度光效制造美感引导户注意力重点事物文字某种意义传达文化符号种信息文字进行艺术效果处理增强联系结构重点想描述部分加粗者黑体划线特说明应认真思考重点文字字体放置位置提高读性舒适性非想造种样风格增加视觉感然阅读舒适性流众符合阅读惯左齐文字图片搭配文字图片辅图形较种素材常传达信息户头代表方箭头定程度减少文字表达app更加样化趣时注意应分辨率情况app严格设计规定时候空间限应适剪裁留重部分颜色选高辨识度[2] 进行排版设计中仅虑户实际需求想表达题信息视觉素适合融洽方法联系起巴塞卢罗庞培法布拉学心理学教授葛思达研究类视觉规律时提佳视域概念版面中左部分轻松容易接收信息部分设计时候注意两部分构造强调重复性重复元素仅吸引户注意力着重强调某种特殊信息般类似似图片搭建律动放置位置者方位细微调整单枯燥重复构建界面时注意衡性两联系元素保持视觉衡衡定完全样某微特真改动体保持衡联系性
    户色彩十分敏感选择正确颜色影响客户心理程序设计学相关app冷静墨绿色消防栓灭火器种户十分敏感刺激视觉马注意啊颜色文化颜色文字样西方13代表恶魔中国 忌讳谐音色调统代表开发者app旨符合设计心灵学[5]
    414界面设计布局属性
    线性布局:Android操作系统布局中较常简易布局方式种布局里子布局横线者竖线排布分配权重
    1中orientation设置水者竖直排列方式
    2 gravity里面控件者字体齐方式子容器相父容器布局左齐者底部齐layout_gravity指该元素身布局理width控制控件文宽度layout_width控制控制该元素身宽度heightlayout_height样layout_weight指布局占重通更改属性调整屏幕占
    3 Android中组件需int值表示接收int该类型值格式必须@开头果s@+表示修改完某布局文件中生成相应int值例@+idbzzb变量名面值果文件中已存相名字变量会直接已存值常输入文输入id者密码
    4 background组件生成背景图全颜色
    5 divider分割线drawable中图片shape定义showDividers设置分割线位置none(分割线)middle(两控件中间设置分割线)begining(顶端设置)end(末端设置分割线)
    6 fill_parentwrap_contentmatch_parent三属性视图容尺寸布局作调整fill_parent强制性组件尺寸填满该布局空间wrap_content完整显示整布局match_parentfill_parent样
    7 drawable图片资源通@drawable获取已放置里面图片资源许app定义图标背景图开发者图片转xml文件里放drawable中储存
    8 valuesvalues存放colors常默认颜色值时调颜色专代码Dimen屏幕中素设计dpStrings字符串提前写直接调Stylenames设计某控件风格总说已整合资源库时出调
    9 layout_margin指距离父控件距离Padding控制容距离四 边界距离Visibility设置控件否见设置见见见占布局Scrollbar设置滚动条法设置否见滚动方背景色否轨道褪色方
    10 Edittext文编辑Hint输入提示信息输入账号者密码时候常numericintegerdecimal特殊需求输入整数者数时候singleLinetrue设置输入单行TextColour字体颜色Textstyle字体TextColourHint默认字体颜色Typefacemonospace字体间距Background背景设置null默认没MaxLengtht限制文长度CusorVisivle设置光标否见Capitalize设置英文字母写类型设置AutoText动纠正文错误Editable否编辑ElipiseTextScaleX15控制字字间距离设置文字长时该控件该显示值设置:start—省略号显示开头end——省略号显示结尾middle—省略号显示中间marquee ——跑马灯方式显示(动画横移动)
    11 Textview:androidtext设置显示文androidtextappearan设置文字外观androidtextcolor设置文颜色androidtextcolorhighligh选中文字底色默认蓝色androidtextcolorhint 设置提示信息文字颜色默认灰色androidtextcolorlink文字链接颜色 textscalex设置文字间间隔默认10fandroidtextsize 设置文字推荐度量单位textstyle设置字形androidautolin设置否文url链接email电话号码map时文显示点击链接选值(nonewebemailphonemapall)androidautotext设置动执行输入值拼写纠正时效果显示输入法输入时候起作androidbuffertyp指定gettext()方式取文类androidcapitalize设置英文字母写类型需弹出输入法androidcursorvisible设定光标显示隐藏默认显示androiddigits设置允许输入字符1234567890+* ()androiddrawablebottom text方输出drawable图片果指定颜色话会text背景设该颜色时background时覆盖者androiddrawablelefttext左边输出drawableandroidellipsize 设置文字长时该控件该显示值设置:start—省略号显示开头end ——省略号显示结尾middle—省略号显示中间marquee ——跑马灯方式显示(动画横移动)androidfreezestext 设置保存文容光标位置androidgravity 设置文位置设置成center文居中显示androidhinttex空时显示文字提示信息通textcolorhint设置提示信息颜色androidimpositions附加功设置右角ime动作编辑框相关动作actiondone右角显示完成设置默认回车符号androidincludefontpadding设置文否包含顶部底部额外空白inputmethod文指定输入法需完全限定名(完整包名)androidinputtype设置文类型帮助输入法显示合适键盘类型androidlinksclickable 设置链接否点击连接设置autolinkandroidems设置textview宽度n字符宽度里测试汉字字符宽度
    12ListView数集合起动态滚动方式展示户界面View具体容 列表形式展示够适应数容然通适配器加载屏幕说AdapterView数间传递
    13Button普通钮ImageButton图钮Textview字类属性应Button通drawable里资源StateListDrawable钮设置成颜色弹起颜色drawable引Drawable位图放前面表示组件正常状态 state_focused否获焦点state_window_focused否获窗口焦state_enabled控件否state_checkable控件否勾选state_checked控件否勾选state_selected控件否选择针滚轮情况state_pressed控件否state_active控件否处活动状态 state_single控件包含子控件时确定否显示子控件state_first控件包含子控件时确定第子控件否处显示状态state_middle控件包含子控件时确定中间子控件否处显示状态state_last控件包含子控件时确定子控件否处显示状态
    14 ImageView图视图显示图组件值注意background背景通常填充屏幕进行拉伸图试图属容会进行拉伸原图片直接进行填充调整缩放时候配合maxWIdth宽度maxHeight长度两属性起会成功调整fitXY图横进行独立缩放该图片完全适应ImageView图片横会发生改变fitStart保持横缩放图片知道较长边Image编程相等缩放完成图片放ImageView左角fitCenter缩放放中间fitEnd缩放放右角center保持原图显示ImageView中心原图sizeImageViewsize超部分裁剪处理centerCrop保持横缩放图片知道完全覆盖ImageView会出现图片显示完全centerInside保持横缩放图片直ImageView够完全显示图片matrix默认值改变原图ImageView左角开始绘制原图 原图超ImageView部分作裁剪处理
    15 fragment作型Activity组件理麻烦时fragment进行模块化理fragment单独会收宿Activity生命周期影响Fragment生命周期Activity点类似三种状态Resumed允许中Fragment见PausedActivity见焦点Stoped ①调addToBackStack()Fragment添加Bcak栈 ②该Activity转台者该Fragment换删停止状态fragment然活着 户见
    16 progressbar安卓进度条加载画面时候者视频时候进场
    相布局:Android界面设计里常种布局顾名思义相父元素者兄弟组件参布置子元素
    5教师学生界面设计
    次设计教师功:登录注册蓝牙设置蓝牙连接分享第三方查考勤查请假发布通知开校园官网关退出系统
    次设计学生功:登录注册蓝牙设置蓝牙连接分享第三方蓝牙签蓝牙请假吊起qq联系老师接收通知关系统退出系统
    设计建立Activity
    介绍APP应添加通知界面登录界面查请假查签界面注册加载界面学生老师操作界面方便理fragment
    51注册界面
    学生者老师app时首先应注册账号RegisteActivity采线性布局界面垂直排布界面占满整屏幕调drawable里背景图作背景调放layout里面考勤签注册布局整体长方形里元素采竖直线性结构具体里面采相关布局元素较包含工具栏toolbar显目框bold字体符合题颜色作题目户分清框填应什hint提示文字配应图标左齐更清晰户清填东西背景色设置null文左齐layout_marginLeft布局central_vertical垂直居中服务器址需限制输入文Digits 01234567890方提交BUTTONbutton放块设置输入键稍
    52欢迎界面
    背景布局全绿色开场动画先弹出string里面第串字符串考勤签app然弹出第二串字符串毕设作品然进入界面
    53查询请假界面
    先设置item项目规格查询请假时学生请假信息然ListView加载果没项目TestView显示暂数记录
    查询签界面 项目界面查询签界面样
    54工具栏界面
    Toolbar界面端方便户存界面端采相布局界面方存工具栏
    55 登录界面
    整体设置理相布局界面方加载图标ImageView户填写完账户弹出左方设置半圆图标提示户现学生端教师端方Textview设置2020 毕业设计作品提示字样然include登录表格布局注册中样方添加注册登录Button
    发布通知界面:方背景图学校缩略图三EditText分发布容姓名时间中发布容占板块较带hint提示字符方发布提交Button
    56关系统界面
    关系统介绍工具app拥功开发团队版号均TextView展示
    57左滑菜单
    学生老师功界面fragment展示学校背景两TextView分学校官网退出系统现移动户端中采种形式仅众群体惯关整操作程变更加滑户操作更加具流畅性拥挤屏幕节省时间户整洁度提高
    58教师功界面
    fragment登陆界面左角切换学生端键中间深色底白色字体显示界面标题符合行业标准蓝牙址账号密码图标必须特色需字体快速分辨出应图标登录成功次记忆次账号密码面两功注册登录方字体标明产品源登录界面背景图选app题颜色相互搭配图片
    点击登录教师端开蓝牙期间现实加载图案方许常规app样显示前界面方便户查明界面方教师发布公告公告需放置仅标题字体放滚动提醒作显示蓝牙状态重状态显示功生活种红色代表失连接绿色代表已连接状态显示消息窗口现实位学生连接显示蓝牙址连接成功灰底黑字框提示登陆界面切换学生端改显示教师名字发布Tips该页面功较蓝牙设置考勤签查签查请假发布通知关系统介绍排版紧凑流出舒适空间功均采圆形图标图标符合审美例字体界面相应功图标界面例符合审美做基础量简洁良户界面设计应户显示世界感官相贴
    学生进行请假时会白底黑字弹窗提示方选择拒绝意时操作会通知更新关系统介绍北京采北理珠图片作品介绍工具方涵盖功教师学生端均登陆注册蓝牙设置蓝牙连接分享第三方查考勤查请加发通知校园官网关系统通出系统学生端蓝牙签请假接收通知开发工具AndroidStudioMyEclipseMy'SqlTomcatNavicat for MySQL等开发工具开发员版号者更解功界面右角第三方分享方便
    59学生功界面
    样fragment开启考勤换成学生开连接 学生端界面改面注释标发布通知换成联系老师查签查请假换成应查请假均教师端基相
    提示界面:提示界面转瞬逝通常fragment加载界面TextView显示正加载Progressbar进度条分显示网络延迟正加载正玩命加载界面提示户现情况没更提示户浏览界面已头出现错误出错界面面加猫表情拉开发者户距离
    6接口设计
    界面接口设计指机交互形式然控件做精美界面仅仅界面已法户进行互动Android频繁监听机制户填写完基信点击注册钮时候开始服务器发送登录请求实屏幕面户交互时见动作
    流程:开始先事件源注册监听器般组件然户外部动作触发然触发事件源事件事件源受影响会生成应事件时事件监听器会事件参数记录数进行数分析分析事件处理方法事件源事件事件监听器
    方法:
    1 直接匿名部类通常次复性高设计监听方法
    2 部类处该类中进行复直接访问界面组件
    3外部类种形式较少见创建JAVA文件通常会导致代码够简洁
    4 Activity作事件监听器
    5 直接绑定标签layout布局文件中应Activity中定义事件处理方法 相应组件触发事件组件

    7考勤签设计原理
    老师学生间传递信息蓝牙媒介服务端利Servlet处置服务器响应程序轻量级框架进行HTTP请求响应响应教师端学生端发起服务端进行处理返回学生教师端蓝牙作设备独址中模块种载体
    8总结工作展
    文针设计考勤签系统交互界面设计优点足进行总结
    优点:必功健全操作方便Android系统较灵活UI界面互动良教师发布通知查考勤情况学生进行互动
    缺点:然手机端操作方便电脑端开服务器户界面较拥挤接口项目限学生时连接存丢失情况
    展:拓展更功签排名学生发弹幕增加学生学生学生老师间良性互动蓝牙考勤系统普关系定越越高app已广社会着技术更新换代机交互形式必然更加户感身受




    参考文献
    [1] 王鹏飞移动设备应软件交互界面设计[D]工业设计工程2013
    [2] 王延盼基安卓App界面视觉艺术元素分析探究[D]艺术设计学院2013
    [3] 葛会会基蓝牙考勤系统设计实现[D]电子通信工程2016
    [4] 琼李敏蒲昱霖刘海燕基蓝牙通信高校课堂手机考勤理系统[R]长沙医学院2018
    [5] 王曦关软件中户界面设计探讨[N]山东工业技术20181025(10)

















































    附 录

    MyEclipse代码: Foodjava
    package combsbean
    功说明:
    public class Food {

    public String id
    public String uuid
    public String name
    public String state
    public String time

    }

    Likejava
    package combsbean

    public class Like {

    public String id
    public String num
    public String name
    public String like

    }

    NotifyInfojava
    package combsbean

    public class NotifyInfo {
    通知



    public String id
    public String name 姓名
    public String content 空
    public String type 类型
    public String time 时间


    public NotifyInfo(String name String content) {
    super()

    thisname name
    thiscontent content
    }
    }

    RatingBarjava
    package combsbean

    **
    *
    * 功说明:
    *
    *
    public class RatingBar {

    public String id
    public String uuid
    public String name
    public String state
    public String time

    }

    Suggestionjava
    package combsbean

    **
    *
    * 功说明:
    *
    *
    public class Suggestion {

    public String id
    public String uuid
    public String name
    public String state
    public String time

    }

    Userjava
    package combsbean

    public class User {

    public String uuid
    public String name
    public String psd
    public String type
    public String logourl
    public String chineseName 中文名字

    }

    FunctionServletjava
    package combsservlet

    import javaioBufferedWriter
    import javaioIOException
    import javaioOutputStream
    import javaioOutputStreamWriter
    import javaioPrintWriter
    import javautilList

    import javaxservletServletException
    import javaxservlethttpHttpServlet
    import javaxservlethttpHttpServletRequest
    import javaxservlethttpHttpServletResponse

    import comalibabafastjsonJSONArray
    import comalibabafastjsonJSONObject
    import combsbeanNotifyInfo
    import combsutilDBUtil
    import combsutilReqType
    import combsutilRspType
    import combsutilT

    **
    * 项目名称:bs002 功说明:功理类
    *
    @SuppressWarnings(serial)
    public class FunctionServlet extends HttpServlet {
    private String tag FunctionServlet
    private HttpServletResponse response
    private boolean result
    private List datalist
    private String requestType 请求参数集

    @Override
    protected void doGet(HttpServletRequest req HttpServletResponse resp)
    throws ServletException IOException {

    doPost(req resp)
    }

    @Override
    protected void doPost(HttpServletRequest request
    HttpServletResponse response) throws ServletException IOException {
    thisresponse response
    requestsetCharacterEncoding(UTF8)
    responsesetCharacterEncoding(UTF8)
    responsesetContentType(textplaincharsetutf8)
    responsesetHeader(Pragma NoCache)
    responsesetDateHeader(Expires 0)

    requestType new String(requestgetParameter(param)getBytes(
    iso88591) utf8)
    if (requestTypecontains(QueryNotify)) {
    Systemoutprintln(TgetDateTime() + + tag
    + 正请求获取: + requestType)
    }

    if (requestTypestartsWith(Add) || requestTypestartsWith(Remove)) {
    addTypeRequest(requestType)
    } else if (requestTypestartsWith(Query)) {
    queryTypeRequest(requestType)
    } else if (requestTypestartsWith(Delete)) {
    deleteTypeRequest(requestType)
    }
    }

    **
    * 新增数接口
    *
    private void addTypeRequest(String requestType) {
    if (requestTypestartsWith(ReqTypeAdd_Notify)) { 发布通知
    String[] params requestTypesplit()
    NotifyInfo notify new NotifyInfo(params[1] params[2])
    result DBUtiladdNotify(notify)
    } else {
    return
    }

    if (result) {
    returnResponseStringData(RspTypeSUCC)
    } else {
    returnResponseStringData(RspTypeFAIL)
    }
    Systemoutprintln(add result + result)
    }

    **
    * 查询数接口
    *
    private void queryTypeRequest(String requestType) {
    if (requestTypestartsWith(ReqTypeQuery_Notify)) {
    List notify DBUtilgetFirstNotify()
    returnResponseListData(notify notify)
    }
    }


    **
    * 删数接口
    *
    private void deleteTypeRequest(String requestType) {

    }

    private void returnResponseStringData(String result) {

    PrintWriter out
    try {
    out responsegetWriter()
    outprint(result)
    outflush()
    outclose()
    } catch (IOException e) {
    eprintStackTrace()
    }

    }

    private void returnResponseListData(List datalist String type) {
    try {
    JSONObject object new JSONObject()
    JSONArray array new JSONArray(datalist)
    objectput(type array)

    OutputStream os

    os responsegetOutputStream()
    OutputStreamWriter osw new OutputStreamWriter(os utf8)
    BufferedWriter bw new BufferedWriter(osw)

    bwwrite(new String(objecttoJSONString()getBytes()))
    bwflush()
    } catch (IOException e) {

    eprintStackTrace()
    }

    }

    }

    LoginServletjava
    package combsservlet

    import javaioIOException
    import javaioPrintWriter

    import javaxservletServletException
    import javaxservlethttpHttpServlet
    import javaxservlethttpHttpServletRequest
    import javaxservlethttpHttpServletResponse

    import combsbeanUser
    import combsutilDBUtil

    **
    *
    * 功说明:登录校验
    *
    * 创建时间:201861 午33529
    *
    @SuppressWarnings(serial)
    public class LoginServlet extends HttpServlet {
    private String Tag LoginServlet
    private User user

    @Override
    protected void doGet(HttpServletRequest req HttpServletResponse resp)
    throws ServletException IOException {

    doPost(req resp)
    }

    @Override
    protected void doPost(HttpServletRequest request
    HttpServletResponse response) throws ServletException IOException {
    requestsetCharacterEncoding(UTF8)
    responsesetCharacterEncoding(UTF8)
    responsesetContentType(textplaincharsetutf8)
    responsesetHeader(Pragma NoCache)
    responsesetDateHeader(Expires 0)
    String param new String(requestgetParameter(param)getBytes(
    iso88591) utf8)
    String[] reqArray paramsplit()
    user new User()
    username reqArray[0]
    userpsd reqArray[1]

    String result DBUtilcheckUser(user)
    String[] reStrings resultsplit()
    responsesetCharacterEncoding(UTF8)
    responsesetCharacterEncoding(UTF8)
    responsesetContentType(textplaincharsetutf8)
    responsesetHeader(Pragma NoCache)
    responsesetDateHeader(Expires 0)

    PrintWriter out responsegetWriter()
    outprint(result)
    outflush()
    outclose()
    switch (IntegerparseInt(reStrings[0])) {
    case 1
    户名存
    responsegetWriter()print(户名存)
    Systemoutprintln(Tag + 户名存: + username)
    break
    case 0 登录成功
    responsegetWriter()print(登录成功)
    Systemoutprintln(Tag + 登录成功: + username)

    break
    case 1 密码错误
    responsegetWriter()print(密码错误)
    Systemoutprintln(Tag + 密码错误: + username)
    break
    case 2 查询异常
    responsegetWriter()print(查询异常)
    Systemoutprintln(Tag + 查询异常: + username)
    break

    }

    }
    }

    RegisteServletjava
    package combsservlet

    import javaioIOException
    import javaioPrintWriter

    import javaxservletServletException
    import javaxservlethttpHttpServlet
    import javaxservlethttpHttpServletRequest
    import javaxservlethttpHttpServletResponse

    import combsbeanUser
    import combsutilDBUtil

    **
    *
    * 功说明:注册
    *
    * 创建时间:201861 午33529
    *
    @SuppressWarnings(serial)
    public class RegisteServlet extends HttpServlet {
    private String Tag RegisteServlet
    private User user

    @Override
    protected void doGet(HttpServletRequest req HttpServletResponse resp)
    throws ServletException IOException {

    doPost(req resp)
    }

    @Override
    protected void doPost(HttpServletRequest request
    HttpServletResponse response) throws ServletException IOException {
    requestsetCharacterEncoding(UTF8)
    responsesetCharacterEncoding(UTF8)
    responsesetContentType(textplaincharsetutf8)
    responsesetHeader(Pragma NoCache)
    responsesetDateHeader(Expires 0)
    String param new String(requestgetParameter(param)getBytes(
    iso88591) utf8)
    Systemoutprintln(Tag + 收请求: + param)
    String[] reqArray paramsplit()
    user new User()
    username reqArray[0]
    userpsd reqArray[1]
    userchineseName reqArray[2]
    boolean result DBUtiladdUser(user)

    responsesetCharacterEncoding(UTF8)
    responsesetCharacterEncoding(UTF8)
    responsesetContentType(textplaincharsetutf8)
    responsesetHeader(Pragma NoCache)
    responsesetDateHeader(Expires 0)

    PrintWriter out responsegetWriter()

    if (result) {
    Systemoutprintln(Tag + 注册成功: + username)
    outprint(0 + userchineseName)
    } else {
    Systemoutprintln(Tag + 户名已存: + username)
    outprint(1)
    }
    outflush()
    outclose()
    }
    }

    DBUtiljava
    package combsutil

    import javasqlConnection
    import javasqlDriverManager
    import javasqlPreparedStatement
    import javasqlResultSet
    import javasqlSQLException
    import javautilArrayList
    import javautilList
    import javautilUUID

    import combsbeanNotifyInfo
    import combsbeanUser

    **
    *
    * 数库连接工具
    *
    public class DBUtil {

    private static Connection con
    private static PreparedStatement ps
    private static ResultSet rs

    static {
    try {
    ClassforName(commysqljdbcDriver)
    con DriverManager
    getConnection(
    jdbcmysqllocalhost3306bs002elmcharacterEncodingutf8
    root 123)

    } catch (ClassNotFoundException e) {
    eprintStackTrace()
    } catch (SQLException e) {
    eprintStackTrace()
    }

    }

    **
    * 户注册
    *
    * @param name
    * @param psd
    * @return
    *
    public static Boolean addUser(User u) { TODO
    Boolean result null
    List list DBUtilgetAllUsers()
    for (User user list) {
    if (unameequals(username)) {
    return false
    }
    }
    String sql insert into user(uuidnamepsdchinese_name) values()
    try {
    ps conprepareStatement(sql)
    pssetString(1 UUIDrandomUUID()toString())
    pssetString(2 uname)
    pssetString(3 upsd)
    pssetString(4 uchineseName)
    result psexecute()

    } catch (SQLException e) {
    Systemoutprintln([addUser Exception] + etoString())
    }
    return result
    }

    **
    * 户登录校验
    *
    * @param uu
    * @return
    *
    public static String checkUser(User user) {
    String result 1
    String sql select * from user where name
    try {
    ps conprepareStatement(sql)
    pssetString(1 username)
    rs psexecuteQuery()

    while (rsnext()) {
    if (userpsdequals(rsgetString(4))) {
    result 0 + + rsgetString(6) 返回移动端 中文名字
    } else {
    result 1
    }
    }
    } catch (SQLException e) {
    eprintStackTrace()
    result 2
    }
    return result
    }


    **
    * 添加通知
    *
    * @param name
    * @param psd
    * @return
    *
    public static Boolean addNotify(NotifyInfo notify) {
    Boolean result null
    String sql insert into notify(contentnametime) values()
    try {
    ps conprepareStatement(sql)
    pssetString(1 notifycontent)
    pssetString(2 notifyname)
    pssetString(3 TgetCurrentTimeMillis())
    result psexecute()

    } catch (SQLException e) {
    Systemoutprintln([addNotify Exception] + etoString())
    }
    return result
    }


    **
    * 获取通知
    *
    * @return
    *
    public static List getFirstNotify() {

    List list null
    NotifyInfo m null
    String sql select * from notify order By id desc limit 1
    try {
    ps conprepareStatement(sql)
    rs psexecuteQuery()
    while (rsnext()) {
    if (list null) {
    list new ArrayList()
    }
    m new NotifyInfo( rsgetString(name)rsgetString(content))
    listadd(m)
    }
    } catch (SQLException e) {
    Systemoutprintln([getNotifyInfo Exception] + etoString())
    }
    return list
    }


    **
    * 修改密码
    *
    public static Boolean updatePsd(String uuid String psd) {
    Boolean result false
    String sql update user set password where id
    try {
    ps conprepareStatement(sql)
    pssetString(1 psd)
    pssetString(2 uuid)
    result psexecute()
    result true
    } catch (SQLException e) {
    eprintStackTrace()
    }
    return result
    }

    **
    * 获取注册户列表
    *
    * @return
    *
    public static List getAllUsers() { TODO
    User user
    List list null
    String sql select * from user
    try {
    ps conprepareStatement(sql)
    rs psexecuteQuery()

    while (rsnext()) {
    if (list null) {
    list new ArrayList()
    }
    user new User()
    useruuid rsgetString(uuid)
    username rsgetString(name)
    userpsd rsgetString(psd)
    userchineseName rsgetString(chinese_name)
    listadd(user)
    }
    } catch (SQLException e) {
    Systemoutprintln([getAllUsers Exception] + etoString())
    }
    return list
    }

    }

    JsonUtilsjava
    package combsutil

    import comsunorgapachebcelinternalgenericNEW

    import testStudent

    public class JsonUtils {
    public static void main(String[] args) {

    }

    public static String toJson(RspType r) {
    1JSONObject
    JSONObject json JSONObjectfromObject(r)
    String result jsontoString()
    return result
    }

    public static String toJson2() {
    Student stu new Student()
    stusetName(JSON)
    stusetAge(23)
    stusetAddress(北京市西城区)

    1JSONObject
    JSONObject json JSONObjectfromObject(stu)
    2JSONArray
    JSONArray array JSONArrayfromObject(stu)

    String jsonString comalibabafastjsonJSONObjecttoJSONString(stu)
    Systemoutprintln(jsonString)
    String strJson jsontoString()
    String strArray arraytoString()

    Systemoutprintln(strJson + strJson)
    Systemoutprintln(strArray + strArray)

    strJson{address北京市西城区age23nameJSON}
    strArray[{address北京市西城区age23nameJSON}]
    return jsonString
    }

    public void test2() {

    }

    public void test3() {

    }
    }

    ReqTypejava

    package combsutil

    public class ReqType {

    public static final String Query_RatingBar QueryRatingBar
    public static final String Query_Suggestion QuerySuggestion
    public static final String Query_FoodOrder QueryFoodOrder
    public static final String Query_Notify QueryNotify
    public static String Add_RatingBar AddRatingBar
    public static String Add_Suggestion AddSuggestion
    public static String Add_FoodOrder AddFoodOrder
    public static String Add_Like AddLike
    public static String Add_Notify AddNotify
    public static String Remove_Like RemoveLike
    public static String Query_Favorite QueryFavorite
    }

    RspTypejava

    package combsutil

    public class RspType {
    返回移动端状态值
    public static String SUCC true
    public static String FAIL false

    private int code

    public RspType(int code) {
    thiscode code
    }

    @Override
    public String toString() {
    return ResponseCode{ + code + code + '}'
    }
    }
    Tjava
    *

    *
    package combsutil

    import javaioByteArrayInputStream
    import javatextSimpleDateFormat
    import javautilDate

    **
    * 功介绍:功工具类
    *
    * @author JianRong
    * @date20161230午110900
    *
    public class T {

    public static String getDateTime() {
    SimpleDateFormat farmatter new SimpleDateFormat(yyyyMMdd HHmmss) 获取日期时间
    return farmatterformat(SystemcurrentTimeMillis())
    }

    public static String getCurrentTimeMillis() {
    return StringvalueOf(SystemcurrentTimeMillis())
    }

    public static void log(String log) {
    Systemoutprintln( + log)
    }

    public static boolean strIsNumber(String str) {
    String reg [09]+([09]+)
    return strmatches(reg)
    }
    }

    test
    Studentjava
    package test

    public class Student {
    姓名
    private String name
    年龄
    private String age
    住址
    private String address

    public String getName() {
    return name
    }

    public void setName(String name) {
    thisname name
    }

    public String getAge() {
    return age
    }

    public void setAge(String age) {
    thisage age
    }

    public String getAddress() {
    return address
    }

    public void setAddress(String address) {
    thisaddress address
    }

    @Override
    public String toString() {
    return Student [name + name + age + age + address
    + address + ]
    }

    }

    发送蓝牙连接
    package comappbskqqdbluetoothapirequest


    import orgjsonJSONException
    import orgjsonJSONObject


    public class RequestMessage extends comappbskqqdbluetoothapiRequest {

    public RequestMessage() {
    super(REQ_MSG)
    }

    public RequestMessage(int cmd String msg) {
    super(REQ_MSG)
    thiscmdId cmd
    thismsg msg
    }

    @Override
    public RequestMessage newInstance() {
    return new RequestMessage()
    }

    @Override
    public JSONObject toJsonObject(JSONObject jsonObject) throws JSONException {
    jsonObjectput(CMD cmdId)
    jsonObjectput(MSG msg)
    return jsonObject
    }

    @Override
    public void fromJsonObject(JSONObject jsonObject) throws JSONException {
    jsonObjectgetInt(CMD)
    jsonObjectgetString(MSG)
    }
    }

    适配器
    package comappbskqqdadapter


    import androidcontentContext
    import androidviewViewGroup

    import comappbskqqdmodelGanHuo
    import comjudeeasyrecyclerviewadapterBaseViewHolder
    import comjudeeasyrecyclerviewadapterRecyclerArrayAdapter

    **
    *
    *
    public class GanHuoAdapter extends RecyclerArrayAdapter {

    public GanHuoAdapter(Context context) {
    super(context)
    }

    @Override
    public BaseViewHolder OnCreateViewHolder(ViewGroup parent int viewType) {
    return new GanHuoViewHolder(parent)
    }
    }



    package comappbskqqdadapter

    import androidgraphicsdrawableDrawable
    import androidviewViewGroup
    import androidwidgetTextView

    import comappbskqqdR
    import comappbskqqdmodelGanHuo
    import comappbskqqdutilTimeUtil
    import comjudeeasyrecyclerviewadapterBaseViewHolder

    **
    *
    *
    public class GanHuoViewHolder extends BaseViewHolder {
    private TextView title
    private TextView type
    private TextView who
    private TextView time

    public GanHuoViewHolder(ViewGroup parent) {
    super(parent Rlayoutganhuo_item)
    title (Ridtitle)
    type (Ridtype)
    who (Ridwho)
    time (Ridtime)
    }

    @Override
    public void setData(GanHuoResult data) {
    supersetData(data)
    标题
    titlesetText(datagetDesc())
    干货类型
    typesetText(datagetType())
    根干货类型动态换干货图标
    if (datagetType()equals(Android)){
    setDrawableLeft(Rdrawableic_android_black_24dp)
    }else if (datagetType()equals(iOS)){
    setDrawableLeft(Rdrawableic_whatshot_black_24dp)
    }else {
    setDrawableLeft(Rdrawableic_play_circle_filled_black_24dp)
    }
    干货贡献者
    whosetText(datagetWho())
    干货提交时间
    timesetText(TimeUtilgetFormatTime(datagetPublishedAt()))
    }

    public void setDrawableLeft(int imageId){
    Drawable drawable getContext()getResources()getDrawable(imageId)
    drawablesetBounds(00drawablegetMinimumWidth()drawablegetMinimumHeight())
    typesetCompoundDrawables(drawablenullnullnull)
    }
    }




    package comappbskqqdadapter

    import androidcontentContext
    import androidviewViewGroup

    import comappbskqqdmodelGanHuo
    import comjudeeasyrecyclerviewadapterBaseViewHolder
    import comjudeeasyrecyclerviewadapterRecyclerArrayAdapter

    **
    *
    *
    public class MeiZhiAdapter extends RecyclerArrayAdapter {

    public MeiZhiAdapter(Context context) {
    super(context)
    }

    @Override
    public BaseViewHolder OnCreateViewHolder(ViewGroup parent int viewType) {
    return new MeiZhiViewHolder(parent)
    }
    }




    package comappbskqqdadapter

    import androidcontentContext
    import androidviewViewGroup

    import comappbskqqdmodelGanHuo
    import comjudeeasyrecyclerviewadapterBaseViewHolder
    import comjudeeasyrecyclerviewadapterRecyclerArrayAdapter

    **
    *
    *
    public class MeiZhiAdapter extends RecyclerArrayAdapter {

    public MeiZhiAdapter(Context context) {
    super(context)
    }

    @Override
    public BaseViewHolder OnCreateViewHolder(ViewGroup parent int viewType) {
    return new MeiZhiViewHolder(parent)
    }
    }
    App注册响应请求
    package comappbskqqdbluetoothapi

    import comappbskqqdbluetoothapirequestRequestMessage
    import comappbskqqdbluetoothapirequestResponseMessage
    import comappbskqqdbluetoothapirequestUnknownReq

    import javautilHashMap
    import javautilMap

    public class CmdFactory {
    private static CmdFactory instance
    private Map requestMap new HashMap<>()
    private Map responseMap new HashMap<>()

    private CmdFactory() {
    register(new RequestMessage())
    register(new ResponseMessage())
    }

    public static CmdFactory getInstance() {
    if (null instance) {
    synchronized (CmdFactoryclass) {
    if (null instance) {
    instance new CmdFactory()
    }
    }
    }
    return instance
    }

    public void register(Request req) {
    requestMapput(reqgetCmdId() req)
    }

    public void register(Response rsp) {
    responseMapput(rspgetCmdId() rsp)
    }

    public Request createRequest(int cmd) {
    Request request requestMapget(cmd)
    if (null request) {
    return requestnewInstance()
    }
    return new UnknownReq()
    }

    public Response createResponse(int cmd) {
    Response response responseMapget(cmd)
    if (null response) {
    return responsenewInstance()
    }
    return new Response(RequestREQ_UNKNOWN)
    }
    }



    app请求响应处理

    package comappbskqqdbluetoothapi

    import orgjsonJSONException
    import orgjsonJSONObject

    public class Response {
    public static final int SUCCESS_CODE 0
    public static final String CMD cmd
    public static final String CODE code
    public static final String MSG msg
    public int cmdId
    public int code
    public String msg

    public Response(int cmdId) {
    thiscmdId cmdId
    }

    public int getCmdId() {
    return cmdId
    }

    public boolean isOK() {
    return code SUCCESS_CODE
    }

    public JSONObject toJsonObject(JSONObject jsonObject) throws JSONException {
    jsonObjectput(CMD cmdId)
    jsonObjectput(CODE code)
    jsonObjectput(MSG msg)
    return jsonObject
    }

    public void fromJsonObject(JSONObject jsonObject) throws JSONException {
    jsonObjectgetInt(CMD)
    jsonObjectgetInt(CODE)
    jsonObjectgetString(MSG)
    }

    public Response newInstance() {
    return new Response(cmdId)
    }
    }



    蓝牙连接
    package comappbskqqdbluetoothapi

    import javaioIOException
    import javautilconcurrentTimeoutException

    public interface Connector {
    void startServer()

    void stopServer()

    boolean isServerOK()

    void connect() throws TimeoutException IOException

    boolean isConnected()

    void send(byte[] b) throws IOException

    int recv(byte[] b) throws IOException

    int recv(byte[] b int offset int count) throws IOException

    void disconnect()

    }


    未知请求信息
    package comappbskqqdbluetoothapirequest


    import comappbskqqdbluetoothapiRequest

    public class UnknownReq extends Request {
    public UnknownReq() {
    super(RequestREQ_UNKNOWN)
    }

    @Override
    public UnknownReq newInstance() {
    return new UnknownReq()
    }
    }


    调蓝牙进行匹配连接
    package comappbskqqdbluetoothapi





    import androidbluetoothBluetoothAdapter
    import androidbluetoothBluetoothDevice
    import androidbluetoothBluetoothServerSocket
    import androidbluetoothBluetoothSocket

    import javaioIOException
    import javaioInputStream
    import javaioOutputStream
    import javautilSet
    import javautilUUID

    public class BluetoothConnector implements Connector {
    public final static String MOS_UUID 6c12a3270e0b43448137c41e2a79a50d

    private String deviceAddress
    BluetoothServerSocket serverSocket
    private boolean stopServerFlag

    private BluetoothSocket localSocket
    private BluetoothSocket remoteSocket

    private BluetoothSocket connectedSocket
    private InputStream inputStream
    private OutputStream outputStream

    public BluetoothConnector() {
    }

    public BluetoothConnector remoteDeviceAddress(String deviceAddress) {
    thisdeviceAddress deviceAddress
    return this
    }

    public void startServer() {
    new Thread(new Runnable() {
    @Override
    public void run() {
    BluetoothAdapter bluetoothAdapter BluetoothAdaptergetDefaultAdapter()
    if (null bluetoothAdapter) {
    return
    }
    try {
    serverSocket bluetoothAdapterlistenUsingRfcommWithServiceRecord(MOS_SERVICE UUIDfromString(MOS_UUID))
    } catch (IOException e) {
    serverSocket null
    return
    }
    stopServerFlag false
    while (stopServerFlag) {
    try {
    remoteSocket serverSocketaccept()
    connectedSocket remoteSocket
    inputStream connectedSocketgetInputStream()
    outputStream connectedSocketgetOutputStream()
    } catch (IOException e) {
    }
    }
    stopServer()
    }
    } Bluetooth Server)start()
    }

    public void stopServer() {
    disconnect()
    stopServerFlag true
    if (null serverSocket) {
    try {
    serverSocketclose()
    } catch (IOException e) {
    eprintStackTrace()
    }
    serverSocket null
    }
    }

    @Override
    public boolean isServerOK() {
    if (null serverSocket) {
    return false
    }
    return true
    }

    @Override
    public void connect() throws IOException {
    BluetoothAdapter bluetoothAdapter BluetoothAdaptergetDefaultAdapter()
    Set bondedDevices bluetoothAdaptergetBondedDevices()
    boolean deviceFound false
    for (BluetoothDevice device bondedDevices) {
    if (devicegetAddress()equals(deviceAddress)) {
    deviceFound true
    localSocket devicecreateRfcommSocketToServiceRecord(UUIDfromString(MOS_UUID))
    localSocketconnect()
    connectedSocket localSocket
    if (null connectedSocket) {
    inputStream connectedSocketgetInputStream()
    outputStream connectedSocketgetOutputStream()
    }
    break
    }
    }
    if (deviceFound) {
    throw new IOException(bluetooth device not found)
    }
    }

    @Override
    public boolean isConnected() {
    if (null connectedSocket) {
    return false
    }
    return connectedSocketisConnected()
    }

    @Override
    public void send(byte[] b) throws IOException {
    if (null outputStream) {
    outputStreamwrite(b)
    }
    }

    @Override
    public int recv(byte[] b) throws IOException {
    return recv(b 0 blength)
    }

    @Override
    public int recv(byte[] b int offset int count) throws IOException {
    if (null inputStream) {
    return inputStreamread(b offset count)
    }
    return 0
    }

    @Override
    public void disconnect() {
    if (null connectedSocket) {
    try {
    inputStream null
    outputStream null
    connectedSocketclose()
    connectedSocket null
    } catch (IOException e) {
    eprintStackTrace()
    }
    }
    }
    }



































    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 60 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    基于蓝牙技术的照明控制系统

    摘要: 随着21世纪信息时代的互联网应用技术和互相联系应用技术的不断进步,家用的人工机械不是手动操控的化已经成为未来发展的必然趋势,人工机械不是手动操控的电灯光照亮作为人工机械不是手动操控的家用...

    4年前   
    848    0

    基于JAVA WEB的考勤系统设计与实现

    基于 JAVA WEB 的考勤系统设计和实现Design and Implementation of Attendance System Based on JAVA WEB摘要科技的发展,带动...

    11个月前   
    364    0

    基于通信的系统的影响

    基于通信的系统的影响如上文所述,信息服务的趋势正朝着分散和分布式数据处理(DDP)方向发展。分散的信息服务工作并不意味着数据通信,但是多数是基于通信的。依照定义,所有分布式数据处理(DDP)系...

    12年前   
    725    0

    电子信息工程基于单片机和蓝牙APP的环境温湿度监测系统设计与实现

    基于单片机和蓝牙APP的环境温湿度监测系统设计与实现 内容摘要根据家庭生活和工业生产的需要,结合国内外研究现状,进行相关调研。利用嵌入式微控制器技术,传感器技术和无线蓝牙传输技术,设计了一...

    1年前   
    330    0

    基于Linux的广告机系统

    基于Linux的广告机系统基于Linux的广告机系统摘 要一般来说,广告系统,被称为广告系统是在网络信息技术时代的飞速发展中产生的新类型的网络多媒体信息发布系统。在这个系统的基础上,用户可以...

    2年前   
    616    0

    IkaoQin考勤管理系统

    IkaoQin考勤管理系统使用手册北京分形科技 目录一 简介 31 系统简介 32 主要特点 33 主要功能 3二 快速上手 41 初次使用 41.1 登录系统 41....

    2年前   
    367    0

    门禁考勤系统-一

    Castle门禁考勤软件使用说明书〔VNT9.0 〕一.系统介绍:○1.使用先进的信息组织技术使相关业务流程在一个操作界面内能迅速完成多种信息的记录操作与查阅,使用方便;○2.所有事件数据都能...

    2年前   
    414    0

    指纹考勤系统开题报告

    指纹考勤系统开题报告注:下表中各项可加页。一、 课题来源 源于学校实际需求。二、 研究目的和意义2.1 研究目的在大多的验证身份的生物技术当中,指纹验证应该是最简单、方便、可靠的一种技术手...

    3年前   
    930    0

    基于安卓系统的点餐系统毕业设计

     本科毕业论文(设计) 题 目: 基于安卓系统的点餐系统 专 业: 姓 名: 指导教师: ...

    5年前   
    1690    0

    基于BS的在线考试系统

     摘 要传统考试方式一直都是C/S结构,即客户机和服务器结构。随着互联网技术的飞速发展,C/S结构已经不足以满足用户的需求,基于B/S(浏览器/服务器)结构的在线考试系统随之出现。基于浏...

    3年前   
    785    0

    基于SpringBoot博客系统的设计与实现

     基于SpringBoot博客系统的设计与实现Design and implementation of bl...

    2年前   
    971    0

    基于JSP技术的物流系统的实现

    基于JSP技术的物流系统的实现Realization of logistics system based on JSP technology ...

    10个月前   
    227    0

    基于web的图书管理系统

    基于Web的图书管理系统目前,信息时代是这个社会的主旋律,社会的各个区域和领域都因为信息的技术改革而发生了新的变化。跟上时代的步伐,因为整个科技社会的变化和发展很快,增强信息化公司的竞争能力,...

    3年前   
    797    0

    基于博客系统的测试与实践

    当代是互联网时代,是一个信息高度发达的信息时代,在信息时代快速发展的过程中催生了很多优秀的网络信息交流平台,其中个人博客系统以它独特的魅力吸引着众多的博主。

    3年前   
    587    0

    基于Web的学生信息管理系统

    在现如今这个网络技术高度普及和信息全球化的年代,信息化的程度和互联网技术在国际竞争中充当着重要的角色,华为5G的实例告诉我们,谁先掌握技术谁就有话语权。

    3年前   
    738    0

    基于LabVIEW的数据采集系统设计

    基于LabVIEW的数据采集系统设计--图像采集基于LabVIEW的数据采集系统设计 ——图像采集摘 要数字图像处理技术的应用越来越广泛,在国防建设、工农业生产、人们的日常生活中,都用到了数...

    2年前   
    671    0

    基于CS框架的学生选课系统

     ...

    5年前   
    1264    0

    基于java的学生信息管理系统

    科技带动计算机行业不断地发展,计算机行业的发展也给每个行业带来了巨大的收益,使其工作效率得到提高,同时方便了人们的生活。本系统使用SSM框架,主要采用自顶向下的相关研究的方法。

    3年前   
    791    0

    基于MATLABSimulink的M-PAM系统的仿真

    通信工程专业《通信原理》课程设计题 目 基于MATLAB/Simulink的DPSK系统仿真 学生姓名 学号 所在院(系) 物理与电...

    2年前   
    530    0

    蓝牙测试标准

    标题蓝牙测试项目和限值内容 本文档描述了蓝牙模块的测试项目和限值,符合蓝牙标准1.2。DIFFUSION

    4年前   
    565    0

    文档贡献者

    平***苏

    贡献于2022-01-19

    下载需要 60 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档