中级篇
注意
本篇题目,建议创建不同的模块进行实现,方便后面上交代码。
# 1. 集合:HashSet
# 1.1 需求描述
中国福利彩票双色球投注区分为红色球号码区和蓝色球号码区,红色球号码区由 1-33 共三十三个号码组成,蓝色球号码区由 1-16 共十六个号码组成,如下所示:
投注时选择 6 个红色号码和 1 个蓝色号码组成一注进行单式投注,每注金额 2 元。
现在要求通过 Java 程序模拟双色球随机生成一注号码,程序运行结果如下:
提示
- 生成的双色球号码不能重复,因此可以考虑用
HashSet
集合存储双色球号码 - 针对红球的生成,需要生成多次,因此可以考虑使用循环
# 1.2 实现代码
# 2. IO 流
# 2.1 需求描述
某公司年会需要举办抽奖活动以感谢公司员工一年的辛勤付出,要求当某一个员工已经被抽取到,再抽取下一个奖项的时候该员工不能再次被抽到,请编写 Java 程序模拟该抽奖活动,程序的运行效果如下:
提示
- 使用
BufferedReader
读取employee_names.txt
文件中的数据,并将其存储到一个集合中 - 生成一个随机数,作为集合元素的索引
- 根据该索引从集合中获取一个员工姓名,并将该员工姓名从集合中移除掉
- 将集合中剩余的员工姓名通过
BufferedWriter
再一次写入到employee_names.txt
文件中
# 2.2 实现代码
# 3. 多线程
# 3.1 需求描述
某家庭聚会组织了抢红包活动,现在决定发 3 个定额红包(每个红包 20 元),现由 5 个家庭成员进行快抢,请使用多线程模拟该活动!实现效果如下:
提示
- 5 个家庭成员相当于 5 个线程
- 3 个红包是共享数据
- 每一个成员抢到一个红包后,红包的总数量要减 1
- 存在多个线程访问共享数据的情况,因此需要考虑线程安全问题
- 红包金额在控制台直接输出 20 即可
# 3.2 实现代码
# 4. MyBatis
# 4.1 需求描述
现有如下所示的store
(商铺)表中的数据列表,请按要求使用 MyBatis 的 Mapper 代理方式完成如下需求的开发。
向表中添加一条数据:
"黄蓉","441322199511114212","蓉儿叫花鸡","美食","北京市朝阳区","18933283299",1,"2020-08-08 10:00:30"
1查询
id = 1
的数据,并将数据封装到实体类对象中查询表中所有数据,并封装到集合中
删除
id = 2
的数据将
id = 1
的数据area
字段值修改为北京市昌平区
,phone
字段值修改为13629224217
要求
- 创建一个名为
store-demo
的Maven模块,在pom.xml
中导入对应依赖坐标 - 定义一个
Store
实体类,放置在com.itheima.pojo
包下 - 实体类中的属性名如果是多个单词需要使用驼峰命名
- 定义一个
StoreMapper
类,放置在com.itheima.mapper
包下
# 4.2 素材
store表的建表及数据初始化语句如下:
create table store (
id int primary key auto_increment,
shop_owner varchar(32) comment "店主姓名",
id_number varchar(18) comment "身份证号",
name varchar(100) comment "店铺名称",
industry varchar(100) comment "行业分类",
area varchar(200) comment "店铺区域",
phone varchar(11) comment "手机号码",
status int default 0 comment "审核状态。 0:待审核 1:审核通过 2:审核失败 3:重新审核 ",
audit_time datetime comment "审核时间"
);
insert into store values (null,"张三丰","441322199309273014","张三丰包子铺","美食","北京市海淀区","18933283299","0","2017-12-08 12:35:30");
insert into store values (null,"令狐冲","441322199009102104","华冲手机维修","电子维修","北京市昌平区","18933283299","1","2019-01-020 20:20:00");
insert into store values (null,"赵敏","441322199610205317","托尼美容美发","美容美发","北京市朝阳区","18933283299","2","2020-08-08 10:00:30");
2
3
4
5
6
7
8
9
10
11
12
13
14
15
注意
需求 5不是修改所有的数据,所以需要用动态 SQL实现修改部分字段功能,set
标签和if
标签
# 4.3 实现代码
# 5. SQL 语句
# 5.1 前置准备
当前有三张表,分别是:学生表、教师表、课程表。
学生表student
表结构如下:
字段名称 | 字段说明 | 字段类型 | 字段长度 | 约束 |
---|---|---|---|---|
s_id | 学号 | 数值 | 11 | primary key auto_increment |
s_name | 学生姓名 | 字符 | 50 | not null |
s_age | 学生年龄 | 数值 | 3 | not null |
s_sex | 学生性别 | 字符(1 代表男, 0 代表女) | 1 | not null |
教师表teacher
表结构如下:
字段名称 | 字段说明 | 字段类型 | 字段长度 | 约束 |
---|---|---|---|---|
t_id | 教师编号 | 数值 | 11 | primary key auto_increment |
t_name | 教师姓名 | 字符 | 50 | not null |
课程表course
表结构如下:
字段名称 | 字段说明 | 字段类型 | 字段长度 | 约束 |
---|---|---|---|---|
c_id | 课程编号 | 数值 | 11 | primary key auto_increment |
c_name | 课程名称 | 字符 | 50 | not null |
t_id | 教师编号 | 数值 | 11 | not null foreign key |
成绩表score
表结构如下:
字段名称 | 字段说明 | 字段类型 | 字段长度 | 约束 |
---|---|---|---|---|
id | 表主键 | 数值 | 11 | primary key auto_increment |
s_id | 学号 | 数值 | 11 | not null foreign key |
c_id | 课程编号 | 数值 | 11 | not null foreign key |
score | 成绩 | 数值 | 3 | not null |
学生表、教师表、课程表、_成绩表_等E-R
图如下:
# 5.2 需求一:创建表
根据5.1描述内容,在MySQL数据库中创建_学生表_、教师表、课程表、_成绩表_四张表,SQL语句:
# 5.3 需求二:维护表关系
根据5.1中E-R
图,维护_学生表_、教师表、课程表、_成绩表_四张表表关系,SQL语句:
# 5.4 需求三:初始化数据
请按照上图中的数据对_学生表_、教师表、课程表、_成绩表_等四张表的数据进行初始化,SQL语句:
# 5.5 需求四
查询男、女学生人数,SQL语句:
# 5.6 需求五
查询平均成绩大于70分的学生的学号和平均成绩,SQL语句:
# 5.7 需求六
查询所有学生的学号、姓名、选课数以及总成绩,SQL语句:
# 5.8 需求七
查询学过赵老师所教的所有课的学生的学号、姓名,SQL语句:
# 5.9 需求八
查询没有学全所有课的同学的学号、姓名,SQL语句:
← 练习题