Android(安卓)订餐APP(Sqlite数据库,完整的增删改查)

一.背景

首先说说项目的背景,基于地铁口鸡蛋饼的一个小项目,APP中固定设置的鸡蛋饼搭配,顾客也可以自己搭配

二.开发环境

  • AndroidStudio3.0.1
  • JDK1.8
  • 语言:JAVA
  • 数据存储:Sqlite

三.功能

  • 注册、登录、管理员、普通用户
  • 首页:鸡蛋饼食材搭配
  • 订单:购买订单展示
  • 个人/管理:个人信息、用户信息、机器信息、订单管理、食材管理、退出登录等
  • 技术知识:Sqlite增删改查、glide图片加载、Spinner、EventBus、butterknife等等

四.功能图

                    

                    

                 

五.Sqlite数据库存储(增删改查)

字段值 数据类型 说明
id text 主键值
nickName text 用户名
password text 密码
path text 头像
qianming text 签名
phone text 手机号
birthday text 生日
sex text 性别
type text 用户类型

用户表

代码如下:

public class DbSqliteHelper extends SQLiteOpenHelper {public DbSqliteHelper(Context ctx) {super(ctx, "JianBin", null, 1);}@Overridepublic void onCreate(SQLiteDatabase db) {//用户数据表db.execSQL("CREATE TABLE if not exists user(id integer PRIMARY KEY autoincrement,"+ " nickName text, password text, path text, qianming text, phone text, birthday text, sex text, beizhu text,type text)");//鸡蛋饼订单信息数据表db.execSQL("CREATE TABLE if not exists jiqidingdan(id integer PRIMARY KEY autoincrement,"+ "dingdanbianhao  text,userNmae text, binName text, lajiao text, salajiang text, fanqie text, zuoliao text, xiangcong text, bianhao text, price text, shuliang text, time text,zhuangtai text,huitui text,wanzi text,jidan text)");db.execSQL("CREATE TABLE if not exists jiqibin(id integer PRIMARY KEY autoincrement,"+ "jiqiname text, jiqiweizhi text)");//机器存储数据表db.execSQL("CREATE TABLE if not exists jiqi(id integer PRIMARY KEY autoincrement,"+ " title text,jiqitupian text, jiqiname text, jiqiweizhi text,lajiao text,salajiang text,fanqie text,xiangcong text)");}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}private static DbSqliteHelper dbManager;public static DbSqliteHelper getInstance(Context ctx) {if (dbManager == null) {synchronized (DbSqliteHelper.class) {if (dbManager == null) {dbManager = new DbSqliteHelper(ctx);}}}return dbManager;}public boolean saveUser(UserBean bean) {SQLiteDatabase db = getWritableDatabase();if (db != null) {//注册之前先查询是否重复注册Cursor cursor = db.rawQuery("SELECT * FROM user WHERE nickName = ?", new String[]{bean.getNickName()});boolean hasUser = false;if (cursor.moveToNext()) {hasUser = true;}cursor.close();if (hasUser) {return true;}//如果不重复则注册db.execSQL("INSERT INTO user(nickName , password , path , qianming , phone , birthday , sex , beizhu,type) " +"VALUES ('" + bean.getNickName()+ "', '" + bean.getPassword()+ "', '" + bean.getPath()+ "', '" + bean.getQianming()+ "', '" + bean.getPhone()+ "', '" + bean.getBirthday()+ "', '" + bean.getSex()+ "', '" + bean.getBeizhu()+ "', '" + bean.getType()+ "')");}return false;}/*** 查找用户(登录操作)** @return 用户*/public UserBean findUser(String[] args) {UserBean bean = new UserBean();SQLiteDatabase db = getWritableDatabase();if (db != null) {Cursor cursor = db.query("user", null, "nickName = ?", args, null, null, null);if (cursor.moveToNext()) {bean.setId(cursor.getInt(cursor.getColumnIndex("id")));bean.setNickName(cursor.getString(cursor.getColumnIndex("nickName")));bean.setPassword(cursor.getString(cursor.getColumnIndex("password")));bean.setPath(cursor.getString(cursor.getColumnIndex("path")));bean.setQianming(cursor.getString(cursor.getColumnIndex("qianming")));bean.setPhone(cursor.getString(cursor.getColumnIndex("phone")));bean.setBirthday(cursor.getString(cursor.getColumnIndex("birthday")));bean.setSex(cursor.getString(cursor.getColumnIndex("sex")));bean.setBeizhu(cursor.getString(cursor.getColumnIndex("beizhu")));bean.setType(cursor.getString(cursor.getColumnIndex("type")));}cursor.close();}return bean;}/*** 更新用户信息** @param record*/public void updateUser(UserBean record) {SQLiteDatabase db = getWritableDatabase();ContentValues contentValues = new ContentValues();contentValues.put("id", record.getId());contentValues.put("nickName", record.getNickName());contentValues.put("password", record.getPassword());contentValues.put("path", record.getPath());contentValues.put("qianming", record.getQianming());contentValues.put("phone", record.getPhone());contentValues.put("birthday", record.getBirthday());contentValues.put("sex", record.getSex());contentValues.put("beizhu", record.getBeizhu());contentValues.put("type", record.getType());if (db != null) {db.update("user", contentValues, "id = ?", new String[]{record.getId()+""});}}/*** 查询用户数据** @return*/public List<UserBean> getuser(String name) {List<UserBean> userBeanList = new ArrayList<UserBean>();SQLiteDatabase db = getWritableDatabase();if (db != null) {//查询记录String[] selectioinArgs = {"%"+name+"%"};//注意:这里没有单引号String sql = "SELECT * FROM user" + " where nickName like ? ";Cursor cursor = db.rawQuery(sql, selectioinArgs);while (cursor.moveToNext()) {UserBean bean = new UserBean();bean.setId(cursor.getInt(cursor.getColumnIndex("id")));bean.setNickName(cursor.getString(cursor.getColumnIndex("nickName")));bean.setPassword(cursor.getString(cursor.getColumnIndex("password")));bean.setPath(cursor.getString(cursor.getColumnIndex("path")));bean.setQianming(cursor.getString(cursor.getColumnIndex("qianming")));bean.setPhone(cursor.getString(cursor.getColumnIndex("phone")));bean.setBirthday(cursor.getString(cursor.getColumnIndex("birthday")));bean.setSex(cursor.getString(cursor.getColumnIndex("sex")));bean.setBeizhu(cursor.getString(cursor.getColumnIndex("beizhu")));bean.setType(cursor.getString(cursor.getColumnIndex("type")));userBeanList.add(bean);}cursor.close();}return userBeanList;}/*** 获取所有用户* @return*/public List<UserBean> getAllUser() {List<UserBean> userBeanList = new ArrayList<UserBean>();SQLiteDatabase db = getWritableDatabase();if (db != null) {Cursor cursor = db.rawQuery("SELECT * FROM user ", null);while (cursor.moveToNext()) {UserBean bean = new UserBean();bean.setId(cursor.getInt(cursor.getColumnIndex("id")));bean.setNickName(cursor.getString(cursor.getColumnIndex("nickName")));bean.setPassword(cursor.getString(cursor.getColumnIndex("password")));bean.setPath(cursor.getString(cursor.getColumnIndex("path")));bean.setQianming(cursor.getString(cursor.getColumnIndex("qianming")));bean.setPhone(cursor.getString(cursor.getColumnIndex("phone")));bean.setBirthday(cursor.getString(cursor.getColumnIndex("birthday")));bean.setSex(cursor.getString(cursor.getColumnIndex("sex")));bean.setBeizhu(cursor.getString(cursor.getColumnIndex("beizhu")));bean.setType(cursor.getString(cursor.getColumnIndex("type")));userBeanList.add(bean);}cursor.close();}return userBeanList;}/*** 删除用户** @param id*/public void deleteUser(int id) {SQLiteDatabase db = getWritableDatabase();if (db != null) {db.execSQL("DELETE FROM user WHERE id = " + id);}}//存储机器数据public void saveJiQi(JiQiBean bean) {SQLiteDatabase db = getWritableDatabase();db.execSQL("INSERT INTO jiqi(title,jiqitupian , jiqiname , jiqiweizhi,lajiao ,salajiang ,fanqie ,xiangcong ) " +"VALUES ('" + bean.getTitle()+ "', '" + bean.getJiqitupian()+ "', '" + bean.getJiqiname()+ "', '" + bean.getJiqiweizhi()+ "', '" + bean.getLajiao()+ "', '" + bean.getSalajiang()+ "', '" + bean.getFanqie()+ "', '" + bean.getXiangcong()+ "')");}/*** 获取所有jiq数据** @return*/public List<JiQiBean> getAllJiQi() {List<JiQiBean> records = new ArrayList<JiQiBean>();SQLiteDatabase db = getWritableDatabase();if (db != null) {Cursor cursor = db.rawQuery("SELECT * FROM jiqi ", null);while (cursor.moveToNext()) {JiQiBean bean = new JiQiBean();bean.setId(cursor.getInt(cursor.getColumnIndex("id")));bean.setTitle(cursor.getString(cursor.getColumnIndex("title")));bean.setJiqitupian(cursor.getInt(cursor.getColumnIndex("jiqitupian")));bean.setJiqiname(cursor.getString(cursor.getColumnIndex("jiqiname")));bean.setJiqiweizhi(cursor.getString(cursor.getColumnIndex("jiqiweizhi")));bean.setLajiao(cursor.getString(cursor.getColumnIndex("lajiao")));bean.setSalajiang(cursor.getString(cursor.getColumnIndex("salajiang")));bean.setFanqie(cursor.getString(cursor.getColumnIndex("fanqie")));bean.setXiangcong(cursor.getString(cursor.getColumnIndex("xiangcong")));records.add(bean);}cursor.close();}return records;}/*** 查询鸡蛋饼数据** @return*/public List<JiQiBean> getJiQi(String name) {List<JiQiBean> jiQiBeanList = new ArrayList<JiQiBean>();SQLiteDatabase db = getWritableDatabase();if (db != null) {//查询记录String[] selectioinArgs = {"%"+name+"%"};//注意:这里没有单引号String sql = "SELECT * FROM jiqi" + " where jiqiname like ? ";Cursor cursor = db.rawQuery(sql, selectioinArgs);while (cursor.moveToNext()) {JiQiBean bean = new JiQiBean();bean.setId(cursor.getInt(cursor.getColumnIndex("id")));bean.setTitle(cursor.getString(cursor.getColumnIndex("title")));bean.setJiqitupian(cursor.getInt(cursor.getColumnIndex("jiqitupian")));bean.setJiqiname(cursor.getString(cursor.getColumnIndex("jiqiname")));bean.setJiqiweizhi(cursor.getString(cursor.getColumnIndex("jiqiweizhi")));bean.setLajiao(cursor.getString(cursor.getColumnIndex("lajiao")));bean.setSalajiang(cursor.getString(cursor.getColumnIndex("salajiang")));bean.setFanqie(cursor.getString(cursor.getColumnIndex("fanqie")));bean.setXiangcong(cursor.getString(cursor.getColumnIndex("xiangcong")));jiQiBeanList.add(bean);}cursor.close();}return jiQiBeanList;}/*** 更新机器信息** @param jiQiBean*/public void updateQiji(JiQiBean jiQiBean) {SQLiteDatabase db = getWritableDatabase();ContentValues contentValues = new ContentValues();contentValues.put("id", jiQiBean.getId());contentValues.put("title", jiQiBean.getTitle());contentValues.put("jiqitupian", jiQiBean.getJiqitupian());contentValues.put("jiqiname", jiQiBean.getJiqiname());contentValues.put("jiqiweizhi", jiQiBean.getJiqiweizhi());contentValues.put("lajiao", jiQiBean.getLajiao());contentValues.put("salajiang", jiQiBean.getSalajiang());contentValues.put("fanqie", jiQiBean.getFanqie());contentValues.put("xiangcong", jiQiBean.getXiangcong());if (db != null) {db.update("jiqi", contentValues, "id = ?", new String[]{jiQiBean.getId()+""});}}/*** 删除机器信息** @param id*/public void deleteJiQi(int id) {SQLiteDatabase db = getWritableDatabase();if (db != null) {db.execSQL("DELETE FROM jiqi WHERE id = " + id);}}//存储鸡蛋饼信息数据public void saveJiQiBing(BingBean bean) {SQLiteDatabase db = getWritableDatabase();db.execSQL("INSERT INTO jiqibin(jiqiname , jiqiweizhi) " +"VALUES ('" + bean.getJiqiname()+ "', '" + bean.getJiqiweizhi()+ "')");}/*** 更新机器信息** @param jiQiBean*/public void updateJiQiBing(BingBean jiQiBean) {SQLiteDatabase db = getWritableDatabase();ContentValues contentValues = new ContentValues();contentValues.put("id", jiQiBean.getId());contentValues.put("jiqiname", jiQiBean.getJiqiname());contentValues.put("jiqiweizhi", jiQiBean.getJiqiweizhi());if (db != null) {db.update("jiqibin", contentValues, "id = ?", new String[]{jiQiBean.getId()+""});}}//模糊查询机器信息public List<BingBean> getJiQiBean(String name) {List<BingBean> jiQiBeanList = new ArrayList<BingBean>();SQLiteDatabase db = getWritableDatabase();if (db != null) {//查询记录String[] selectioinArgs = {"%"+name+"%"};//注意:这里没有单引号String sql = "SELECT * FROM jiqibin" + " where jiqiname like ? ";Cursor cursor = db.rawQuery(sql, selectioinArgs);while (cursor.moveToNext()) {BingBean bean = new BingBean();bean.setId(cursor.getInt(cursor.getColumnIndex("id")));bean.setJiqiname(cursor.getString(cursor.getColumnIndex("jiqiname")));bean.setJiqiweizhi(cursor.getString(cursor.getColumnIndex("jiqiweizhi")));jiQiBeanList.add(bean);}cursor.close();}return jiQiBeanList;}/*** 获取所有鸡蛋饼数据** @return*/public List<BingBean> getAllJiQiBing() {List<BingBean> records = new ArrayList<BingBean>();SQLiteDatabase db = getWritableDatabase();if (db != null) {Cursor cursor = db.rawQuery("SELECT * FROM jiqibin ", null);while (cursor.moveToNext()) {BingBean bean = new BingBean();bean.setId(cursor.getInt(cursor.getColumnIndex("id")));bean.setJiqiname(cursor.getString(cursor.getColumnIndex("jiqiname")));bean.setJiqiweizhi(cursor.getString(cursor.getColumnIndex("jiqiweizhi")));records.add(bean);}cursor.close();}return records;}/*** 删除机器信息** @param id*/public void deleteJiQiBean(int id) {SQLiteDatabase db = getWritableDatabase();if (db != null) {db.execSQL("DELETE FROM jiqibin WHERE id = " + id);}}//存储鸡蛋饼订单信息数据public void saveJiQiBingDingDan(DingDanBean bean) {SQLiteDatabase db = getWritableDatabase();db.execSQL("INSERT INTO jiqidingdan(dingdanbianhao,userNmae , binName , lajiao , salajiang , fanqie, zuoliao, xiangcong, bianhao, price, shuliang, time,zhuangtai,huitui,wanzi,jidan) " +"VALUES ('" + bean.getDingdanbianhao()+ "', '" + bean.getUserNmae()+ "', '" + bean.getBinName()+ "', '" + bean.getLajiao()+ "', '" + bean.getSalajiang()+ "', '" + bean.getFanqie()+ "', '" + bean.getZuoliao()+ "', '" + bean.getXiangcong()+ "', '" + bean.getBianhao()+ "', '" + bean.getPrice()+ "', '" + bean.getShuliang()+ "', '" + bean.getTime()+ "', '" + bean.getZhuangtai()+ "', '" + bean.getHuitui()+ "', '" + bean.getWanzi()+ "', '" + bean.getJidan()+ "')");}/*** 获取所有鸡蛋饼订单数据** @return*/public List<DingDanBean> getAllJiQiBingDingDan(String user) {List<DingDanBean> records = new ArrayList<DingDanBean>();SQLiteDatabase db = getWritableDatabase();if (db != null) {Cursor cursor=null;if (TextUtils.isEmpty(user)){cursor = db.rawQuery("SELECT * FROM jiqidingdan", null);}else {cursor = db.rawQuery("SELECT * FROM jiqidingdan  WHERE  userNmae = ?", new String[]{user});}while (cursor.moveToNext()) {DingDanBean bean = new DingDanBean();bean.setId(cursor.getInt(cursor.getColumnIndex("id")));bean.setDingdanbianhao(cursor.getString(cursor.getColumnIndex("dingdanbianhao")));bean.setUserNmae(cursor.getString(cursor.getColumnIndex("userNmae")));bean.setBinName(cursor.getString(cursor.getColumnIndex("binName")));bean.setLajiao(cursor.getString(cursor.getColumnIndex("lajiao")));bean.setSalajiang(cursor.getString(cursor.getColumnIndex("salajiang")));bean.setFanqie(cursor.getString(cursor.getColumnIndex("fanqie")));bean.setZuoliao(cursor.getString(cursor.getColumnIndex("zuoliao")));bean.setXiangcong(cursor.getString(cursor.getColumnIndex("xiangcong")));bean.setBianhao(cursor.getString(cursor.getColumnIndex("bianhao")));bean.setPrice(cursor.getString(cursor.getColumnIndex("price")));bean.setShuliang(cursor.getString(cursor.getColumnIndex("shuliang")));bean.setTime(cursor.getString(cursor.getColumnIndex("time")));bean.setZhuangtai(cursor.getString(cursor.getColumnIndex("zhuangtai")));bean.setHuitui(cursor.getString(cursor.getColumnIndex("huitui")));bean.setWanzi(cursor.getString(cursor.getColumnIndex("wanzi")));bean.setJidan(cursor.getString(cursor.getColumnIndex("jidan")));records.add(bean);}cursor.close();}return records;}/*** 获取订单数据** @return*/public List<DingDanBean> getDingDan(String name) {List<DingDanBean> records = new ArrayList<DingDanBean>();SQLiteDatabase db = getWritableDatabase();if (db != null) {//查询记录String[] selectioinArgs = {"%"+name+"%"};//注意:这里没有单引号String sql = "SELECT * FROM jiqidingdan" + " where dingdanbianhao like ? ";Cursor cursor = db.rawQuery(sql, selectioinArgs);            while (cursor.moveToNext()) {DingDanBean bean = new DingDanBean();bean.setId(cursor.getInt(cursor.getColumnIndex("id")));bean.setDingdanbianhao(cursor.getString(cursor.getColumnIndex("dingdanbianhao")));bean.setUserNmae(cursor.getString(cursor.getColumnIndex("userNmae")));bean.setBinName(cursor.getString(cursor.getColumnIndex("binName")));bean.setLajiao(cursor.getString(cursor.getColumnIndex("lajiao")));bean.setSalajiang(cursor.getString(cursor.getColumnIndex("salajiang")));bean.setFanqie(cursor.getString(cursor.getColumnIndex("fanqie")));bean.setZuoliao(cursor.getString(cursor.getColumnIndex("zuoliao")));bean.setXiangcong(cursor.getString(cursor.getColumnIndex("xiangcong")));bean.setBianhao(cursor.getString(cursor.getColumnIndex("bianhao")));bean.setPrice(cursor.getString(cursor.getColumnIndex("price")));bean.setShuliang(cursor.getString(cursor.getColumnIndex("shuliang")));bean.setTime(cursor.getString(cursor.getColumnIndex("time")));bean.setZhuangtai(cursor.getString(cursor.getColumnIndex("zhuangtai")));bean.setHuitui(cursor.getString(cursor.getColumnIndex("huitui")));bean.setWanzi(cursor.getString(cursor.getColumnIndex("wanzi")));bean.setJidan(cursor.getString(cursor.getColumnIndex("jidan")));records.add(bean);}cursor.close();}return records;}/*** 删除订单** @param id*/public void deleteDingDan(int id) {SQLiteDatabase db = getWritableDatabase();if (db != null) {db.execSQL("DELETE FROM jiqidingdan WHERE id = " + id);}}
}

本项目当毕业设计,如果需要定制开发可加QQ:2258629201

体验APK链接:链接:https://pan.baidu.com/s/1o0qNI04n7diqh9K1ZmREqw
                         提取码:in0n

成品源码   链接:https://m.tb.cn/h.3i6yhV2?sm=78a5f7

联系QQ:2258629201

Android(安卓)订餐APP(Sqlite数据库,完整的增删改查)相关推荐

  1. sqlite数据库的基本增删改查操作

    2019独角兽企业重金招聘Python工程师标准>>> 效果图示例 1.在清单里添加相应的权限 <uses-permission android:name="andr ...

  2. IOS开发基础之SQLite3数据库的使用增删改查

    IOS开发基础之SQLite3数据库的使用增删改查 ios开发我们可能会使用到数据库进行持久化存储.sqlite3 是轻量级的数据库. 今天我们来介绍sqlite3 数据库.此方法跟java的增删改查 ...

  3. thinkphp连mysql增删改查_ThinkPHP5.1框架数据库链接和增删改查操作示例

    本文实例讲述了ThinkPHP5.1框架数据库链接和增删改查操作.分享给大家供大家参考,具体如 本文实例讲述了ThinkPHP5.1框架数据库链接和增删改查操作.分享给大家供大家参考,具体如下: 一. ...

  4. Flask框架——数据库操作命令(增删改查)

    目录 创建数据表 添加数据 插入单条数据 插入多条数据 查询数据 全部查询 精确查询 模糊查询 主键查询 排序 修改数据 删除数据 删除数据表 上篇文章我们学习了Flask框架--数据库配置及迁移同步 ...

  5. java调用oracle删除,使用IDEA对Oracle数据库进行简单增删改查操作

    1.1 java中的数据存储技术 在java中,数据库存取技术可分为如下几类: 1.jdbc直接访问数据库 2.jdo(java data object)是java对象持久化的新的规范,也是一个用于存 ...

  6. python数据库教程_Python连接mysql数据库及简单增删改查操作示例代码

    1.安装pymysql 进入cmd,输入 pip install pymysql: 2.数据库建表 在数据库中,建立一个简单的表,如图: 3.简单操作 3.1查询操作 #coding=utf-8 #连 ...

  7. jaba窗体连接mysql增删改查_知识实现——Java使用jdbc连接MySql数据库,实现增删改查...

    Java使用jdbc连接MySql数据库,实现增删改查 首先,导入MySql连接数据库的jar包,我用的是 mysql连接jar包 DB类,用于获得数据库连接 import java.sql.Driv ...

  8. 数据库的操作 增删改查 mysql

    数据库的操作 增删改查 mysql 登陆数据库 查看全部的数据库 系统提供的库,除了 test 是给我们练手的 其它的不要碰 mysql库,保存了系统重要内容,比如帐户 root帐户的用户名,密码,就 ...

  9. mysql创建数据表列子,MySQL 创建数据库及简单增删改查

    MySQL 创建数据库及简单增删改查 我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: CREATE DATABASE 数据库名; 登入: Enter passwor ...

最新文章

  1. 英特尔成立物联网视频事业部,这届IESS还揭露了哪些信息?
  2. 用Python实现归并排序
  3. VMware与KVM全方面对比
  4. Angular 依赖注入的一个常见错误 NullInjectorError, No provider for XXX
  5. windows installer 3.2搞定
  6. 基于matlab的车牌定位算法设计与实现,matlab车牌定位系统设计(源码+文档)
  7. 软件公司为什么要加密源代码,而且是前前后后,反反复复
  8. linux中config文件怎么打开,linux-如何使用CoreOS的cloud-config文件启动Dock...
  9. Powershell 美化,FluentTerminal.Package_0.6.1.0_Test安装设置及卸载教程
  10. 鼎捷软件ERP,MES等系统构筑制造企业信息化系统
  11. 消息队列原理和应用场景总结
  12. 【Unity Shaders】ShadowGun系列之二——雾和体积光
  13. NOIP2016普及组复赛全国一等奖名单及排名(续表_919~1419名)
  14. 也谈谈内卷化、996和程序员的发展
  15. 修改MFC程序的图标
  16. 【密码学】七、密钥管理
  17. Gos —— 实现系统调用
  18. android高德地图关键字搜索,关键字搜索-POI搜索-示例中心-JS API 示例 | 高德地图API...
  19. 云服务器ECS(一)
  20. [仅ESP32] BT AT命令

热门文章

  1. flink worldcount
  2. tcping扫描所有端口_批量Tcping ip 加 端口
  3. java计算机毕业设计校园跳蚤市场源码+系统+mysql数据库+lw文档
  4. UG NX10.0安装教程
  5. lvds 屏点亮的过程记录
  6. Jquery简单实现2048小游戏
  7. 浅谈薄膜行业MES解决方案
  8. 关于卷积神经网络中(函数或变量 ‘vl_simplenn_tidy‘ 无法识别)与(尝试将 SCRIPT vl_nnconv 作为函数执行)等问题的远程在线调试解决方案
  9. 基于Django的租房数据展示系统设计与实现
  10. 油猴脚本改善浏览器字体显示效果(自用)