中级篇


2022-12-25 ItCastCourse

注意

本篇题目,建议创建不同的模块进行实现,方便后面上交代码。

# 1. 集合:HashSet

# 1.1 需求描述

中国福利彩票双色球投注区分为红色球号码区和蓝色球号码区,红色球号码区由 1-33 共三十三个号码组成,蓝色球号码区由 1-16 共十六个号码组成,如下所示:

""

投注时选择 6 个红色号码和 1 个蓝色号码组成一注进行单式投注,每注金额 2 元。

现在要求通过 Java 程序模拟双色球随机生成一注号码,程序运行结果如下:

""

提示

  • 生成的双色球号码不能重复,因此可以考虑用HashSet集合存储双色球号码
  • 针对红球的生成,需要生成多次,因此可以考虑使用循环

# 1.2 实现代码


1

# 2. IO 流

# 2.1 需求描述

某公司年会需要举办抽奖活动以感谢公司员工一年的辛勤付出,要求当某一个员工已经被抽取到,再抽取下一个奖项的时候该员工不能再次被抽到,请编写 Java 程序模拟该抽奖活动,程序的运行效果如下:

""

提示

  • 使用BufferedReader读取employee_names.txt文件中的数据,并将其存储到一个集合中
  • 生成一个随机数,作为集合元素的索引
  • 根据该索引从集合中获取一个员工姓名,并将该员工姓名从集合中移除掉
  • 将集合中剩余的员工姓名通过BufferedWriter再一次写入到employee_names.txt文件中

# 2.2 实现代码


1

# 3. 多线程

# 3.1 需求描述

某家庭聚会组织了抢红包活动,现在决定发 3 个定额红包(每个红包 20 元),现由 5 个家庭成员进行快抢,请使用多线程模拟该活动!实现效果如下:

""

提示

  • 5 个家庭成员相当于 5 个线程
  • 3 个红包是共享数据
  • 每一个成员抢到一个红包后,红包的总数量要减 1
  • 存在多个线程访问共享数据的情况,因此需要考虑线程安全问题
  • 红包金额在控制台直接输出 20 即可

# 3.2 实现代码


1

# 4. MyBatis

# 4.1 需求描述

现有如下所示的store(商铺)表中的数据列表,请按要求使用 MyBatis 的 Mapper 代理方式完成如下需求的开发。

""

  1. 向表中添加一条数据:

    "黄蓉","441322199511114212","蓉儿叫花鸡","美食","北京市朝阳区","18933283299",1,"2020-08-08 10:00:30"
    
    1
  2. 查询id = 1的数据,并将数据封装到实体类对象中

  3. 查询表中所有数据,并封装到集合中

  4. 删除id = 2的数据

  5. id = 1的数据area字段值修改为北京市昌平区phone字段值修改为13629224217

要求

  1. 创建一个名为store-demoMaven模块,在pom.xml中导入对应依赖坐标
  2. 定义一个Store实体类,放置在com.itheima.pojo包下
  3. 实体类中的属性名如果是多个单词需要使用驼峰命名
  4. 定义一个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");
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

注意

需求 5不是修改所有的数据,所以需要用动态 SQL实现修改部分字段功能,set标签和if标签

# 4.3 实现代码


1

# 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语句:

上次更新: 2022/12/30 17:28:40