数据库实验|姓名,课程的随机生成
学校的数据库实验中有 student
,course
和 grade
三张表,后面的题目需要向这三张表中填入大量数据,同时老师要求使用 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 来辅助生成代码。详细步如下:
- 在 MOOC 网站上通过 F12 找到课程列表所在的请求报文
在“全部课程”里随便选一页后会抓到下面 xhr
类型的报文
- 复制 cURL 内容,右键选择复制即可(如下图)
- 到 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 页经过测试都一样)
数据库实验|姓名,课程的随机生成相关推荐
- 数据库实验 : 学生-课程-选修
目录 实验目的 实验内容 实验步骤: 一. 数据库的建立: 二. 表的建立: 三. 表数据的添加: 四. 表数据的修改: 五. 表数据的删除: 实验目的 熟练掌握建立数据库和表,向数据库输入数据.修改 ...
- 软件工程实验一--编程随机生成30个四则运算,算数包括100以内的整数和真分数。...
软件工程实验一: --编程随机生成30个四则运算,算数包括100以内的整数和真分数. 实验思路:先利用rand()函数随机生成两个算数,包括100以内的整数和真分数,生成100以内的整数,用rand( ...
- 【Sql Server】数据库变量表和临时表的区别,并运用变量表遍历和随机生成姓名记录
作者:小5聊 简介:一只喜欢全栈方向的程序员,欢迎咨询,尽绵薄之力答疑解惑 公众号:有趣小馆,一个有趣的关键词回复互动功能 目录 1.表变量 1.1.表变量基本信息 1.2.表变量使用场景 1.3.表 ...
- 查询选修c语言课程的学生学号和姓名,数据库实验(学生信息表)
目录 数据库实验(学生信息表) 实验一 实验二 实验三 实验四 数据库实验(学生信息表) 实验一 创建数据库以及学生信息表.课程信息表.选课表 create Table student (Sno ch ...
- 按学号和姓名进行查询c语言,数据库实验4 数据查询(答案)
数据库技术与应用实验 实验4 数据查询 实验4 数据查询 学号:18103317 专业:电子信息工程 一.实验内容和步骤 1.在studentsdb数据库中,使用下列SQL语句将输出什么?并说明语句中 ...
- 随机生成元素升序向量_实验二MATLAB运算基础 -
持这段文字的格式: 在英式用法中,引号通常是单引号,如'Fire!'. In GB usage quotation marks are usually single: 'fire!'. 6. 用结构体 ...
- java随机生成中文昵称_使用java随机生成中文姓名
将字符串形式的名字转换为数组形式 private static String names= "碧凡.夏菡.曼香.若烟.半梦.雅绿.冰蓝.灵槐.平安.书翠.翠风.香巧.代云." + ...
- 使用java随机生成中文姓名
将字符串形式的名字转换为数组形式 private static String names= "碧凡.夏菡.曼香.若烟.半梦.雅绿.冰蓝.灵槐.平安.书翠.翠风.香巧.代云." + ...
- python随机生成数据库数据之一步一步教你数据造假成为道德主席-取名器-.-xswl-pydbgen || Faker
简介 自己为了测试框架的正确性,就需要点数据做测试,一人扛下前后端.....不能重复的叫什么科学,丢人 开始 原理 基本上每种编程语言都自带伪随机数生成器,因此可以随机产生整形.浮点型数据,借助数组思 ...
- 利用python随机生成姓名的实例教程
本篇文章主要讲解:利用python随机生成姓名的实例教程 作者:任聪聪 整体思路 在我们生成姓名的时候,一般我们要考虑的是姓名的组合构成,姓+名,姓是固定的,名是随机的,故此我们可以通过随机调用常用汉 ...
最新文章
- OpenStack环境搭建(三:Computer与Controller节点的安装及配置)
- 分享丨李飞飞、吴恩达、Bengio等人的顶级深度学习课程
- 皮一皮:所以说...哪里的程序猿最能吃辣?
- Jenkins: 执行 PowerShell 命令
- oracle无法重建em,ORACLE 11g, EM 无法启动的问题和重建
- 西门子ddc_铁门关西门子两通电动阀VVF42.25-10C+SKD60西
- JavaScript | 演示函数中按值调用的示例
- 移动应用可以通过微信沟通接口连接公众号 微信涨粉多了一个新通道
- STL_set/vector/deque
- python保存数据db_python存储数据到mongodb
- 2021年中国单输入K型温度计市场趋势报告、技术动态创新及2027年市场预测
- 【Matlab取整函数】
- 让电脑假装蓝屏的C语言,如何自己手动让电脑假装死机
- plm系统服务器,PLM产品全生命周期管理 - 产品数据服务系统
- 夜神模拟器+Burp抓包(简直是后端复现调试的福音)
- Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现
- R语言解决数学题江苏高考理科数学2018填空压轴题
- 为什么DDOS攻击是服务器的最大危害?
- 正样本/反(负)样本/易区分样本/难区分样本
- mysql中的广播是什么意思_Android中的广播、服务、数据库、通知、包等术语的原理和介绍(图解)...
热门文章
- css中设置字体下划线,css如何设置字体下划线
- Android函数插桩,Android 代码插桩 ~ Misaki’s Blog
- 发布了一个几行代码的作品,不过挺实用的:),有关fastreport的
- HDU5144 NPY and shot BestCoder Round #22 1003
- Linux内核ncsi驱动源码分析(二)
- 如何把微信消息或者短信实时转发到另一个手机上
- 微信小程序前端微信支付功能 支付流程
- edge浏览器被恶意插件劫持,不能删除由组织安装的扩展,提示您的浏览器由您的组织管理
- Python 百度智能云文字识别 实现手写文字识别
- 阿里云文字转语音接口