中小学教育资源及组卷应用平台
第二单元挑战
实现学校学生健康情况登记表的操作
?教材分析
本节的主要内容是实现学校学生健康情况登记表的操作。本项目开展的学习、讨论和实践,让学生对学校学生健康情况登记表进行操作,根据所学的数据结构知识,实现学生信息的添加和删除操作。提升信息意识,提高数据素养,肩负起信息社会责任,从容应对数据时代的各项挑战。
?教学目标
1.巩固数据结构知识;
2.程序设计的基本思想、原理和算法描述;
3.编写删除操作函数;
4.编写插入操作函数。
?教学重点
1.程序设计的基本思想、原理和算法描述;
2.编写删除操作函数;
3.编写插入操作函数。
?教学难点
1.编写操作函数;
?教学方法
体验法、讲授法、讨论法、示例法
?教学准备
计算机教室、多媒体设备、多媒体广播软件、教学课件、安装Python编程的相关软件、学生上机练习的程序文件,学生工作单等。
?教学过程
一、新课导入
复习本单元所学知识,引出本单元挑战的主题——实现学校学生健康情况登记表的操作。
二、项目任务
现有某学校的学生健康情况登记表如表2-6所,表中每个学生的情况为一个记录它由姓名、性别、年龄、班级和健康状况等5个数据项组成。
表2-6学生健康情况登记表
姓名
性别
年龄
班级
健康状况
李林
男
17
高二6班
良好
汤晨
女
16
高二6班
良好
王平平
男
17
高二6班
一般
陈小莉
女
17
高二6班
良好
……
……
……
……
……
若用数组存储表中数据,假设班级人员变化,新进来“常龙”同学(男生、17岁,高二6班、健康状况良好),需要添加在“王平平”和“陈小莉”之间;又由于“李林”转学,需要将他的记录删除,请编程实现相应的操作。
三、项目指引
1.给出程序设计的基本思想、原理和算法描述。
2.画出流程图,并编写程序。
(1)编写删除操作函数。
(2)编写插入操作函数
(3)实现以下功能
①调用插入操作函数,在上表中“王平平”和“陈小莉”之间插入“常龙”同学
②调用删除操作函数,删除表中“李林”同学
③输出最终的表。
3.给源程序添加注释,保存并打印出程序及运行结果。
#完整代码如下:
class
student(object):
#学生健康的类定义
def
_init_(self,
name="
",
sex="
",
age=0,
grade="
",health=””):
self.
name=name
self.
sex=sex
self.
age
=age
self.
grade=grade
self.health=
health
class
SeqList
object):#线性表的数组实现
def
_init_(self,
max=
10):
self.max=max
#默认顺序表最多容纳10个元素
#初始化顺序表数组
self.
num=
0
self.data=[None]
self.max
def
getLoc(self,
value):#根据学生的名字,找学生所在的位置
n=0
for
j
in
range(
self.
num):
if
self.data
[
j].name
is
value:
return
j
if
j
==
self.
num:
return-1#如果遍历顺序表还未找到
value值相同的元素,则返回1表示顺序表中没有
value值的元素
def
insert_sq(
self,i,elem):#数组任意位置插入操作:
if
not
isinstance(i,
int):
raise
TypeError
if
i<0
and
i
>
self.num:
raise
IndexError
#self.data.append(student)
for
j
in
range(
self.num,
i-I,-1):
Self.data[j]=
self.
Data[j-1]
self.data[i]=
elem
self.num
+=
1
#
print(“插入完成”)
def
delete_sq(
self,
i):
#删除某一位置的操作
if
not
isinstance(
i,
int):
raise
TypeError
if
i<
0
and
i
>=
self.num:
raise
IndexError
for
j
in
range(i,
self.
num-1):#此处是
self.num-1,因为循环中是j+1
#print(j,self.
data[j],self.data[
j+1])
self.data[j]=
self.data[j+
1]
del
self.data[
self.num-1]
self.num-=
1
print("删除完成”)
def
printlist(self):#输出操作
for
i
in
range(0,
self.
num):
#print(
self.data[
i])
stu
=self.data[i]
print(
stu.name,
stu.sex,
stu.age,
stu.grade,
stu.health)
print(“-------------------输出完成------------------”)
s1=
student("李林”,"男”,17,”高二(6)班”,”良好”)
s2=
student(“汤晨”,"女”,16,”高二(6)班”,"良好”)
s3=
student(“王平平”,"男”,17,”高二(6)班”,“一般")
s4=
student("陈小莉",”女”,17,"高二(6)班","良好”)
seq=Seqlist()
seq.insert_sq(0,
s1)
seq.
insert_sq(
I,
s2)
seq.
insert_sq(2,s3)
seq.
insert_sq(3,
s4)
seq.
printlist()
x=seq.getloc("陈小莉”)
s5=
student("常龙”)
if
x!=
-1:
seq.
Insert_sq(x,s5)#调用插入函数,插入常龙同学
else:
print("插入位置出错”)
seq
printlist()
If
x!=
-1:
Seq.delete_sq(seq.getloc(“李林”))
#调用除函数,删除林同学
Else:
Print(“插入位置出错")
seq.printList()
四、交流评价与反思
以自己熟悉的信息表达工具(如演示文稿等)制作电子作品,通过网络或课堂展示交流自己的程序,并对他人的程序进行评价。
21世纪教育网
www.21cnjy.com
精品试卷·第
2
页
(共
2
页)
HYPERLINK
"http://21世纪教育网(www.21cnjy.com)
"
21世纪教育网(www.21cnjy.com)(共21张PPT)
实现学校学生健康情况登记表的操作
信息技术沪教版
选择性必修1
第二单元挑战
一、新课导入
二、项目任务
四、交流评价与反思
三、项目指引
一、新课导入
复习本单元所学知识,引出本单元挑战的主题——实现学校学生健康情况登记表的操作。
二、项目任务
现有某学校的学生健康情况登记表如表2-6所,表中每个学生的情况为一个记录它由姓名、性别、年龄、班级和健康状况等5个数据项组成。
姓名
性别
年龄
班级
健康状况
李林
男
17
高二6班
良好
汤晨
女
16
高二6班
良好
王平平
男
17
高二6班
一般
陈小莉
女
17
高二6班
良好
……
……
……
……
……
若用数组存储表中数据,假设班级人员变化,新进来“常龙”同学(男生、17岁,高二6班、健康状况良好),需要添加在“王平平”和“陈小莉”之间;又由于“李林”转学,需要将他的记录删除,请编程实现相应的操作。
三、项目指引
01
02
给出程序设计的基本思想、原理和算法描述。
画出流程图,并编写程序。
编写删除操作函数。
01
02
编写插入操作函数
03
实现以下功能
①
调用插入操作函数,在上表中“王平平”和“陈小莉”之间插入“常龙”同学
②
调用删除操作函数,删除表中“李林”同学
③
输出最终的表
03
给源程序添加注释,保存并打印出程序及运行结果。
#完整代码如下:
class
student(object):
#学生健康的类定义
def
_init_(self,
name="
",
sex="
",
age=0,
grade="
",health=””):
self.
name=name
self.
sex=sex
self.
age
=age
self.
grade=grade
self.health=
health
class
SeqList
object):#线性表的数组实现
def
_init_(self,
max=
10):
self.max=max
#默认顺序表最多容纳10个元素
#初始化顺序表数组
self.
num=
0
self.data=[None]
self.max
03
给源程序添加注释,保存并打印出程序及运行结果。
def
getLoc(self,
value):#根据学生的名字,找学生所在的位置
n=0
for
j
in
range(
self.
num):
if
self.data
[
j].name
is
value:
return
j
if
j
==
self.
num:
return-1#如果遍历顺序表还未找到
value值相同的元素,则返回1表示顺序表中没有
value值的元素
def
insert_sq(
self,i,elem):#数组任意位置插入操作:
if
not
isinstance(i,
int):
raise
TypeError
if
i<0
and
i
>
self.num:
raise
IndexError
#self.data.append(student)
for
j
in
range(
self.num,
i-I,-1):
self.data[j]=
self.
Data[j-1]
03
给源程序添加注释,保存并打印出程序及运行结果。
self.data[i]=
elem
self.num
+=
1
#
print(“插入完成”)
def
delete_sq(
self,
i):
#删除某一位置的操作
if
not
isinstance(
i,
int):
raise
TypeError
if
i<
0
and
i
>=
self.num:
raise
IndexError
for
j
in
range(i,
self.
num-1):#此处是
self.num-1,因为循环中是j+1
#print(j,self.
data[j],self.data[
j+1])
self.data[j]=
self.data[j+
1]
del
self.data[
self.num-1]
self.num-=
1
print("删除完成”)
03
给源程序添加注释,保存并打印出程序及运行结果。
def
printlist(self):#输出操作
for
i
in
range(0,
self.
num):
#print(
self.data[
i])
stu
=self.data[i]
print(
stu.name,
stu.sex,
stu.age,
stu.grade,
stu.health)
print(“-------------------输出完成------------------”)
s1=
student("李林”,"男”,17,”高二(6)班”,”良好”)
s2=
student(“汤晨”,"女”,16,”高二(6)班”,"良好”)
s3=
student(“王平平”,"男”,17,”高二(6)班”,“一般")
s4=
student("陈小莉",”女”,17,"高二(6)班","良好”)
seq=Seqlist()
seq.insert_sq(0,
s1)
seq.
insert_sq(
I,
s2)
seq.
insert_sq(2,s3)
seq.
insert_sq(3,
s4)
03
给源程序添加注释,保存并打印出程序及运行结果。
seq.
printlist()
x=seq.getloc("陈小莉”)
s5=
student("常龙”)
if
x!=
-1:
seq.
Insert_sq(x,s5)#调用插入函数,插入常龙同学
else:
print("插入位置出错”)
seq
printlist()
If
x!=
-1:
seq.delete_sq(seq.getloc(“李林”))
#调用除函数,删除林同学
else:
print(“插入位置出错")
seq.printList()
四、交流评价与反思
以自己熟悉的信息表达工具(如演示文稿等)制作电子作品,通过网络或课堂展示交流自己的程序,并对他人的程序进行评价。
谢谢
21世纪教育网(www.21cnjy.com)
中小学教育资源网站
有大把高质量资料?一线教师?一线教研员?
欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!
详情请看:
https://www.21cnjy.com/help/help_extract.php