1. 个人工具开发【卡片式记忆面试题开发】v.1.0.3

目的:主要是供个人地铁或公交路上,做一些自己整理的面试题。
例如目前比较感兴趣的java、android、算法、系统、正则表达式相关的面试题。方便地铁利用手机记忆用途

  • 下载地址:https://download.csdn.net/download/su749520/71935309

2. 思路:卡片记忆法

2.1 交互

  1. 分上下2页,上页显示题目,下页显示答案。
  2. 点击上页切换到下一个题目,同时清空下页内容
    具体为点击上页就去查询下一个题目的数据库内容
  3. 下页默认不显示内容,点击则显示该题目答案。

可能的拓展:
v1.0 暂时做成固定数据库

  1. 做成可以自定义新增或删除的功能
  2. 类似百词斩可以进行斩掉,下次重新背的时候再出现
  3. 数据库变大时的性能优化
    当然这个只是个人的一些想法,基本上是看下自己的需求程度,满足需求就行,不打算做得太复杂,万一哪天自己不想用了,岂不白白浪费时间。
    毕竟工具制作只是个人爱好,要是有报酬的工具单子可以接,也是很快乐的事情。不过这种事情想想就好。

2.2 功能

  1. 经典Java面试题
  2. 经典Android面试题
  3. 经典算法题
  4. 经典Android系统题
  5. 正则表达式

3. 本次开发情况

  • v.1.0.0 先将简单的UI绘制处理(https://blog.csdn.net/su749520/article/details/122143883)
  • v.1.0.1 申请SD卡读写权限,新建数据库到Sdcard做准备(https://blog.csdn.net/su749520/article/details/122149684?spm=1001.2014.3001.5501)
  • v.1.0.2 建立自定义路径的数据库,对功能进行简单填充(https://blog.csdn.net/su749520/article/details/122163189?spm=1001.2014.3001.5501)
  • v.1.0.3 读取数据库,调试数据库题库和UI(本文)
  • v.1.0.4 填充数据库的脚本,将题库建立起来

4. 数据库的结构设计

  1. 建立数据库名称:ReciteData.db

  2. 根据不同的背诵类别,新建不同的表名
    a. 表名:java
    b. 表名:android
    c. 表名:android_system
    d. 表名:recite_algorithm
    e. 表名:regular_expression

  3. 每张表的数据库字段
    a. 自增的id(可作为题目的序号): _id
    b. 题目内容: question
    c. 题目答案: answer
    d. 题目出现次数(拓展功能): show_count
    e. 题目是否已背(拓展功能,后续不要显示用途): recitedStatus

上述的前提是需要申请访问 SdCard 读写权限

5. 软件编码

5.1 查询数据库中某张表的数量

主要使用sql语句:select count(*) from 表名

    /*** count() 是个聚合函数 作用是求表的所有记录数* select * from 表名          这个是查询表的所有记录* select count(*) from 表名   这个是查询表的所有记录数 换句话说就是该表的总行数*/fun getTableSize(type : Int): Int {val tableName = getTableName(type)val cursor: Cursor? = dateBase?.rawQuery("Select count(*) from $tableName;", null)if (cursor!!.moveToNext()) {return cursor.getInt(0)}cursor.close()return 0}

5.2 查询数据库中某张表的信息

主要使用sql语句:select * from $tableName WHERE ${Constans.DB_KEY_ID}=?

    /*** Android sqlite 采用execSQL和rawQuery方法完成数据的添删改查操作* https://blog.csdn.net/qq156036678/article/details/84483839*/fun getTableItem(type: Int, index: Int): ReciteInfo? {var result: ReciteInfo? = nullval tableName = getTableName(type)val cursor: Cursor? = dateBase?.rawQuery("select * from $tableName WHERE ${Constans.DB_KEY_ID}=?", arrayOf(index.toString())) ?: nullif (cursor!!.moveToNext()) {val id = cursor.getInt(cursor.getColumnIndex(Constans.DB_KEY_ID))val question = cursor.getString(cursor.getColumnIndex(Constans.DB_KEY_QUESTION))val answer = cursor.getString(cursor.getColumnIndex(Constans.DB_KEY_ANSWER))Log.d(Constans.TAG, "queryFormTable $tableName id=$id, question=$question, answer=$answer")result = ReciteInfo(id, question, answer)}cursor.close()return result}

5.3 更新界面显示

    private fun initValue() {dbHelper = DBHelper(this)type = intent.getIntExtra(Constans.TYPE, Constans.TYPE_JAVA)size = dbHelper.getTableSize(type)path_info.text = "数据库存放的路径:${Constans.DB_PTAH}${Constans.DB_NAME}"if (size == 0) {tv_question.text = "没有题目哦,当前数据库大小为:$size"tv_question.isEnabled = falsetv_answer.isEnabled = false} else {updateUI()}Log.d(Constans.TAG, "getTableSize: $size")}private fun initListeners() {tv_question.setOnClickListener(this)tv_answer.setOnClickListener(this)}override fun onClick(v: View?) {when(v?.id) {R.id.tv_question -> nextQuestion()R.id.tv_answer -> showAnswer()}}private fun updateUI() {if (size <= 0) {return}val mReciteInfo = dbHelper.getTableItem(type, curIndex)mReciteInfo?.let {tv_question.text = "($curIndex/$size)" + it.questionanswerInfo = it.answertv_answer.text = "点击本区域可显示答案"}}private fun nextQuestion() {if (curIndex < size) {curIndex ++} else {curIndex = 0}updateUI()}private fun showAnswer() {tv_answer.text = answerInfo}

个人工具开发【卡片式记忆面试题开发】v.1.0.3相关推荐

  1. 个人工具开发【卡片式记忆-面试题】v.1.0.0

    1. 个人工具开发[卡片式记忆-面试题]v.1.0.0 目的:主要是供个人地铁或公交路上,做一些自己整理的面试题.例如目前比较感兴趣的java\android相关的面试题.方便地铁利用手机记忆用途 2 ...

  2. 个人工具开发【卡片式记忆面试题开发】v.1.0.2

    1. 个人工具开发[卡片式记忆面试题开发]v.1.0.2 目的:主要是供个人地铁或公交路上,做一些自己整理的面试题. 例如目前比较感兴趣的java.android.算法.系统.正则表达式相关的面试题. ...

  3. 卡片式记忆工具:Studies Mac版

    Studies Mac版是学习必备的卡片式记忆工具,你可以使用Studies for mac激活版记录学习笔记,文本.图像.音频.视频都能记录在内,studies for mac版还支持从文本.Exc ...

  4. java GUI开发中关于卡片式布局详细步骤讲解

    java GUI开发中关于卡片式布局详细步骤讲解 JFrame frame = new JFrame("调课");//首先要申明一个JFrame. JPanel p1 = new ...

  5. Android开发:使用CardView实现卡片式设计

    开头引用一段官网的介绍 A FrameLayout with a rounded corner background and shadow. CardView uses elevation prope ...

  6. Android开发学习之卡片式布局的简单实现

    GoogleNow是Android4.1全新推出的一款应用,它可以全面了解你的使用习惯,并为你提供现在或者未来可能用到的各种信息,GoogleNow提供的信息关联度较高,几乎是瞬间返回答案,总而言之, ...

  7. web前端卡片样式_css完成卡片式图片结果_WEB前端开发

    起首我们来看一下结果图: (引荐教程:CSS教程) html代码: 突破企业间壁垒,供应便利的接入体式格局,完成不企业,差别品牌.差别范例间的家电的数据互联互通和数据协同 css代码: .card i ...

  8. iOS开发——BAT网易笔试面试题参考答案

    阿里B2B - 一面 1,load方法执行顺序,分类和主类的load方法顺序,两个分类的load方法顺序,跟main函数的顺序 2,sqllite的跟orcale这些大型的数据库的机制有什么不同的? ...

  9. 白盒测试有哪些方法_QA测试开发常考的面试题+答案汇总(持续更新)

    最近很多朋友都在说今年的互联网行情不好,面试很难,不知道怎么复习,我最近总结了一份在测试开发面试中比较常见的面试题合集,希望对大家有帮助. 本文共 4800 字,预计阅读时间 13 分钟,建议点赞+收 ...

最新文章

  1. 2021年大数据ELK(四):Lucene的美文搜索案例
  2. OpenCV-Python绑定如何工作及如何扩展新模块到Python
  3. python与鸭子类型
  4. 规则引擎QLExpress的简单应用
  5. android 定位修改坐标系_数控编程G52局部坐标系的建立及使用
  6. did双重差分法_Stata中双重差分操流程及代码
  7. python 工具箱_Python交易工具箱:通过指标子图增强图表
  8. 炫酷实用 7款jQuery/HTML5图片应用
  9. 4-3 组件参数校验与非props特性
  10. 使用github+hexo搭建静态博客
  11. python项目结构图_python 项目目录结构设置
  12. PCB贴片元器件手工焊接技巧及要点
  13. leaflet 常用方法总结
  14. win10 + Ubuntu 20.04 LTS 双系统 引导界面美化
  15. MyEclipse 2014 破解失败,cracker.jar文件打开闪退
  16. Learning to Reconstruct 3D Manhattan Wireframes from a Single Image 翻译
  17. 电商战决胜在物流 聚美优品破瓶颈发展
  18. 动态规划——背包问题01背包
  19. vmware workstation 8序列号
  20. Cannot access ‘phone‘ before initialization

热门文章

  1. 如何利用SEO技术设置文章网页标题
  2. 长华化学IPO过会:上半年营收降近20% 顾仁发家族色彩浓厚
  3. 美国正式启动“201”调查 遏制中国光伏是主因
  4. steam启动不了的原因
  5. 同一局域网下Windows电脑和IOS设备共享文件,不需要安装软件
  6. 【Mysql】大批量(百万级)数据插入数据库应该怎么做(提高效率)?
  7. DevExpress xtraGrid控件的使用
  8. matlab的三相电源在哪,Matlab-Three-Phase Source(三相电源)
  9. 备忘录怎么显示在手机桌面
  10. 音乐竞品分析:酷狗、QQ音乐、网易云、酷我、汽水音乐