学校的数据库实验中有 studentcoursegrade 三张表,后面的题目需要向这三张表中填入大量数据,同时老师要求使用 JDBC 向数据库插入数据。所以我在这次实验中一并使用 Java 来产生随机数据

1. 随机生成姓名

中文名是由姓 + 名组成的,而且一般为 2 ~ 3 个字。我们维护 3 个数组分别保存姓,男名和女名:

    static private final List<String> first_name = Arrays.asList("王", "李", "张", "刘", "陈", "杨", "黄", "赵", "吴", "周", "徐","孙", "马", "朱", "胡", "郭", "何", "高", "林", "郑", "谢", "罗","梁", "宋", "唐", "许", "韩", "冯", "邓", "曹", "彭", "曾", "萧","田", "董", "袁", "潘", "于", "蒋", "蔡", "余", "杜", "叶", "程","苏", "魏", "吕", "丁", "任", "沈", "姚", "卢", "姜", "崔", "钟","谭", "陆", "汪", "范", "金", "石", "廖", "贾", "夏", "韦", "付","方", "白", "邹", "孟", "熊", "秦", "邱", "江", "尹", "薛", "闫","段", "雷", "侯", "龙", "史", "陶", "黎", "贺", "顾", "毛", "郝", "龚", "邵", "万", "钱", "严", "覃", "武", "戴", "莫", "孔", "向","汤");static private final List<String> girl_name = Arrays.asList("秀英", "桂英", "玉兰", "桂兰", "秀珍", "凤英", "玉珍", "玉英", "兰英","秀英", "桂英", "英", "玉兰", "萍", "秀兰", "玉梅", "红", "敏", "丽","艳", "敏", "芳", "霞", "红梅", "燕", "红", "英", "静", "丽", "娟", "艳","燕", "敏", "娜", "芳", "丹", "玲", "婷", "婷婷", "丹", "倩", "婷", "欣怡","婷婷", "悦", "敏", "佳怡", "雪", "颖", "雨欣", "欣怡", "梓涵", "诗涵","梓宣", "子涵", "紫涵", "佳怡", "雨涵", "雨欣", "一诺");static private final List<String> boy_name = Arrays.asList("建国", "建华", "国华", "和平", "明", "建平", "军", "平", "志明", "徳明","军", "勇", "强", "斌", "军", "伟", "强", "刚", "建军", "斌", "波", "辉","伟", "磊", "勇", "超", "强", "鹏", "军", "波", "杰", "超", "涛", "杰","鹏", "磊", "强", "鑫", "涛", "浩", "杰", "鑫", "俊杰", "磊", "帅", "宇","鹏", "浩宇", "浩然", "宇轩", "子轩", "宇航", "皓轩", "子豪", "浩轩","俊杰", "子涵");

创建好这些数组后使用 Random 产生随机下标选取姓和名进行拼接即可,在拼接的同时还可以得到性别信息

2. 抓取课程名

如果使用上面产生随机姓名的方法来生成课程名,最终得到的结果并不好,谁知道会拼出啥课程名所以我使用爬虫的方法爬出1000门课程。

首先要选择数据来源。自家教务处的课程数据当然可以爬,课也多,学分课时之类的信息也比较全,但是可能需要登陆比较麻烦。所以我选择从中国大学 MOOC上爬,具体的课程列表来自大学-国家精品,这里有 1300 多门课,够用了

当然,自己写爬虫程序挺麻烦的,我使用 curlconverter 来辅助生成代码。详细步如下:

  1. 在 MOOC 网站上通过 F12 找到课程列表所在的请求报文

在“全部课程”里随便选一页后会抓到下面 xhr 类型的报文

  1. 复制 cURL 内容,右键选择复制即可(如下图)
  1. 到 curlconverter 中将复制的内容粘贴后就能够生成对应的代码了,这个网站支持的语言还是蛮多的

生成出来的 Java 代码是被放在 Main 函数里面的,我们将它改成函数并将 response 作为返回值即可得到抓取的 json 数据,后面就可以使用 fastjson 等 json 库对其处理,这里不再详述。

一次抓到更多课程

你可能会注意到,上面的程序一次只能抓到 20 门课程的数据,那可不可以一次就把 1000 门课程都抓到吗?其实是可以的,我们会注意到代码中有如下片段:

httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("mocCourseQueryVo=%7B%22categoryId%22%3A-1%2C%22categoryChannelId%22%3A2001%2C%22orderBy%22%3A0%2C%22stats%22%3A30%2C%22pageIndex%22%3A2%2C%22pageSize%22%3A20%7D");
writer.flush();
writer.close();

尤其注意 write.write() 里面出现了 pageIndex%22%3A2%2C%22pageSize%22%3A20 这个字样,显然,修改这两处的值就可以控制一次抓取的课程数量了。这串内容是这么分解的:

"pageIndex%22%3A" + "2" + "%2C%22pageSize%22%3A" + "20"

这个 2 和 20 的意思就是选择第 2 页,每页有 20 门课。将其改为 1,1000 就可以一次抓出 1000 门课了(总共就只有 1300 个课程别超了,而且这里选择第几页的第 0 页和第 1 页经过测试都一样)

数据库实验|姓名,课程的随机生成相关推荐

  1. 数据库实验 : 学生-课程-选修

    目录 实验目的 实验内容 实验步骤: 一. 数据库的建立: 二. 表的建立: 三. 表数据的添加: 四. 表数据的修改: 五. 表数据的删除: 实验目的 熟练掌握建立数据库和表,向数据库输入数据.修改 ...

  2. 软件工程实验一--编程随机生成30个四则运算,算数包括100以内的整数和真分数。...

    软件工程实验一: --编程随机生成30个四则运算,算数包括100以内的整数和真分数. 实验思路:先利用rand()函数随机生成两个算数,包括100以内的整数和真分数,生成100以内的整数,用rand( ...

  3. 【Sql Server】数据库变量表和临时表的区别,并运用变量表遍历和随机生成姓名记录

    作者:小5聊 简介:一只喜欢全栈方向的程序员,欢迎咨询,尽绵薄之力答疑解惑 公众号:有趣小馆,一个有趣的关键词回复互动功能 目录 1.表变量 1.1.表变量基本信息 1.2.表变量使用场景 1.3.表 ...

  4. 查询选修c语言课程的学生学号和姓名,数据库实验(学生信息表)

    目录 数据库实验(学生信息表) 实验一 实验二 实验三 实验四 数据库实验(学生信息表) 实验一 创建数据库以及学生信息表.课程信息表.选课表 create Table student (Sno ch ...

  5. 按学号和姓名进行查询c语言,数据库实验4 数据查询(答案)

    数据库技术与应用实验 实验4 数据查询 实验4 数据查询 学号:18103317 专业:电子信息工程 一.实验内容和步骤 1.在studentsdb数据库中,使用下列SQL语句将输出什么?并说明语句中 ...

  6. 随机生成元素升序向量_实验二MATLAB运算基础 -

    持这段文字的格式: 在英式用法中,引号通常是单引号,如'Fire!'. In GB usage quotation marks are usually single: 'fire!'. 6. 用结构体 ...

  7. java随机生成中文昵称_使用java随机生成中文姓名

    将字符串形式的名字转换为数组形式 private static String names= "碧凡.夏菡.曼香.若烟.半梦.雅绿.冰蓝.灵槐.平安.书翠.翠风.香巧.代云." + ...

  8. 使用java随机生成中文姓名

    将字符串形式的名字转换为数组形式 private static String names= "碧凡.夏菡.曼香.若烟.半梦.雅绿.冰蓝.灵槐.平安.书翠.翠风.香巧.代云." + ...

  9. python随机生成数据库数据之一步一步教你数据造假成为道德主席-取名器-.-xswl-pydbgen || Faker

    简介 自己为了测试框架的正确性,就需要点数据做测试,一人扛下前后端.....不能重复的叫什么科学,丢人 开始 原理 基本上每种编程语言都自带伪随机数生成器,因此可以随机产生整形.浮点型数据,借助数组思 ...

  10. 利用python随机生成姓名的实例教程

    本篇文章主要讲解:利用python随机生成姓名的实例教程 作者:任聪聪 整体思路 在我们生成姓名的时候,一般我们要考虑的是姓名的组合构成,姓+名,姓是固定的,名是随机的,故此我们可以通过随机调用常用汉 ...

最新文章

  1. OpenStack环境搭建(三:Computer与Controller节点的安装及配置)
  2. 分享丨李飞飞、吴恩达、Bengio等人的顶级深度学习课程
  3. 皮一皮:所以说...哪里的程序猿最能吃辣?
  4. Jenkins: 执行 PowerShell 命令
  5. oracle无法重建em,ORACLE 11g, EM 无法启动的问题和重建
  6. 西门子ddc_铁门关西门子两通电动阀VVF42.25-10C+SKD60西
  7. JavaScript | 演示函数中按值调用的示例
  8. 移动应用可以通过微信沟通接口连接公众号 微信涨粉多了一个新通道
  9. STL_set/vector/deque
  10. python保存数据db_python存储数据到mongodb
  11. 2021年中国单输入K型温度计市场趋势报告、技术动态创新及2027年市场预测
  12. 【Matlab取整函数】
  13. 让电脑假装蓝屏的C语言,如何自己手动让电脑假装死机
  14. plm系统服务器,PLM产品全生命周期管理 - 产品数据服务系统
  15. 夜神模拟器+Burp抓包(简直是后端复现调试的福音)
  16. Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现
  17. R语言解决数学题江苏高考理科数学2018填空压轴题
  18. 为什么DDOS攻击是服务器的最大危害?
  19. 正样本/反(负)样本/易区分样本/难区分样本
  20. mysql中的广播是什么意思_Android中的广播、服务、数据库、通知、包等术语的原理和介绍(图解)...

热门文章

  1. css中设置字体下划线,css如何设置字体下划线
  2. Android函数插桩,Android 代码插桩 ~ Misaki’s Blog
  3. 发布了一个几行代码的作品,不过挺实用的:),有关fastreport的
  4. HDU5144 NPY and shot BestCoder Round #22 1003
  5. Linux内核ncsi驱动源码分析(二)
  6. 如何把微信消息或者短信实时转发到另一个手机上
  7. 微信小程序前端微信支付功能 支付流程
  8. edge浏览器被恶意插件劫持,不能删除由组织安装的扩展,提示您的浏览器由您的组织管理
  9. Python 百度智能云文字识别 实现手写文字识别
  10. 阿里云文字转语音接口