本文所呈现的是一个基于 Python 与 MySQL 交互连接而构建的信息管理系统,其设计围绕教师与授课之间的关系表展开。这是我此前课程中的一份期末作业,最终成绩高达 90 多分。一直以来,这份作业静静地躺在那里,似乎发挥不了太大的作用,于是我重新回顾并梳理了一番,现在将其分享给各位伙伴们。希望它能够为你们的学习之路带来有益的启示和切实的帮助!若有存在不足和不懂之处,可私信或者留言哦~
难度:简单
闪光点:创建了Course表和Teachers表,其中课程表有受到教师的影响约束!
优势:特别详细(上万字)!资源里附带视频!(不信你就划走吧,等着后悔啊哈哈哈!)
本文主要只需导入一个模块库即可顺利运行整个程序。倘若各位伙伴没有安装好 pymysql 库,可以执行以下这行代码进行安装。通过这种方式,能够确保程序的顺利进行,为大家带来更加便捷的使用体验。
pip install pymysql
pymysql 库在本文所构建的信息管理系统中起着至关重要的作用,它为 Python 与 MySQL 的交互连接搭建了坚实的桥梁。
# 1.导入pymsql
from pymysql import *
# 2.连接MySQL数据库
conn = connect(host='xxxx', port=xxxx, # host:主机 ; port:端口
user='xxxx', password='xxxx', # root:用户名 ; password:密码
db='xxxx', charset='utf8') # db:数据库名称 ; charset:编码格式
详细解释一下:
在连接数据库时,务必依据自己所创建好的数据库信息来进行操作。这一步骤至关重要,因为只有准确地输入相应的数据库信息,才能够成功地建立起连接。每个人所创建的数据库可能会因具体需求和设计的不同而有所差异,所以在进行连接时,一定要仔细核对自己所创建的数据库的各项信息,包括数据库名称、用户名、密码、主机地址等。只有确保这些信息的准确性,才能够顺利地实现 Python 与 MySQL 数据库的交互连接,从而奠定为后续的信息管理系统的运行。
当成功连接好数据库之后,如果尚未创建好所需的数据库,可以选择手动进行创建表的操作;当然,也能够通过代码来实现创建。手动创建表的方式相对直观,能够让我们更加清晰地了解数据库表的结构和设计。而通过代码进行创建则具有更高的效率和可重复性,可以快速地在不同的环境中创建出相同结构的数据库表。无论选择哪种方式,都需要对数据库的结构和需求有清晰的认识,以便能够准确地创建出满足信息管理系统要求的数据库表。
注意:“数据表创建”的代码要在MySQL环境里运行,不是Python环境下!
# 3.数据表创建
'''
-- 创建 教师的信息系统表
create table Teachers(
t_num int(3) primary key not null , -- 教师的工号(主键唯一)
t_name varchar(4) not null , -- 教师的姓名
t_gender char(1) check (t_gender = 'male' OR t_gender = 'female'), -- 教师的性别
t_tiebie varchar(3) check (t_tiebie = '数学' OR t_tiebie = '物理' or t_tiebie = '新能源' or
t_tiebie = '教技' or t_tiebie = '信息') -- 教师所属的专业系别
);
-- 创建 教师的授课时间表
create table Course(
t_num int(3) not null , -- 教师的工号
c_name varchar(10) not null , -- 教师授课的课程名称
c_time date not null , -- 教师授课的上课日期
c_lesson int(1) not null CHECK (c_lesson > 0 AND c_lesson < 6) , -- 教师上课第几节
foreign key (t_num) references Teachers(t_num)
);
/*
说明:
1.创建了2个表,其中course表有受到teacher的影响约束,目的为了更好体现关联
2.c_lesson中数字的解释:
8:00 - 9:40 为第一节课;10:00-11:40为第二节课;
14:40-16:10 为第三节课;16:20-17:50为第四节课;
19:40-21:20 为第五节课
*/
'''
详细解释一下:
创建了教师的信息系统表(Teachers),其中包含教师的工号(t_num)作为主键且唯一,教师的姓名(t_name),教师的性别(t_gender)并通过检查约束限定为 'male' 或 'female',以及教师所属的专业系别(t_tiebie),并通过检查约束限定为 ' 数学 '、' 物理 '、' 新能源 '、' 教技 ' 或' 信息 '。
创建了教师的授课时间表(Course),其中包括教师的工号(t_num),教师授课的课程名称(c_name),教师授课的上课日期(c_time)以及教师上课的节次(c_lesson),并通过检查约束限定为大于 0 且小于 6 的整数。同时,Course 表中的教师工号(t_num)设置为外键,参照 Teachers 表中的教师工号,这使得 Course 表受到 Teachers 表的影响约束,其目的在于更好地体现两者之间的关联。
总的来说,这里创建了两个表,一个是课程表(Course),一个是教师表(Teachers),其中course表有受到teacher的影响约束,目的为了更好体现关联;而教师的工号成为两表连接的标准。
# 4.游标对象创建
cur = conn.cursor()
详细解释一下:
在此步骤中,创建了一个游标对象。通过 “cur = conn.cursor ()” 这行代码,将数据库连接对象 “conn” 的游标进行实例化,得到游标对象 “cur”。游标在数据库操作中起着至关重要的作用,它就像是一个指针,可以在数据库结果集中进行遍历和操作。
在完成了上述步骤之后,便正式步入本文最为重要的内容环节。原本曾设想为页面菜单构建一个前端网页,然而由于当时的作业并无此项要求,且彼时事务较为繁多,因此仅仅制作了一个极为简单且稍显简陋的页面,在此还望各位多多包涵。在后续的时间里,将会更新一个全新的菜单页面网页,以提升体验和界面美观度啊哈哈哈~
# 5.定义页面菜单
def main():
while True:
menm() # 菜单页面
try:
choice = int(input('请选择以上对应号码:(1/2/3/4/5)'))
if choice in [1,2,3,4,5]:
if choice==5:
answer = input('确定是否退出系统?(是/否):')
if answer == '是':
print('系统退出成功,GoodBuy!')
break #退出系统
elif answer == '否':
print('您已拒绝退出系统!')
continue
else:
print('输入有误!系统退出失败!')
continue
elif choice == 1:
insert() # 增加
elif choice == 2:
modify() # 修改
elif choice == 3:
delete() # 删除
elif choice == 4:
search() # 查找
else:
print('输入有误!')
except:
print('输入错误')
详细解释一下:
定义了一个名为
main
的函数,在这个函数中通过一个无限循环来持续展示菜单页面并接收用户的操作选择。首先调用menm()
函数展示菜单页面,接着使用try-except
结构来处理用户的输入。如果用户输入的是整数且在 [1,2,3,4,5] 范围内,那么根据不同的选择执行相应的操作。如果选择为 5,会询问用户是否确定退出系统,若用户回答 “是”,则打印 “系统退出成功,GoodBuy!” 并跳出循环;若回答 “否”,则打印 “您已拒绝退出系统!” 并继续循环;若输入错误,则打印 “输入有误!系统退出失败!” 并继续循环。如果选择为 1,则执行insert()
函数进行增加操作;如果选择为 2,则执行modify()
函数进行修改操作;如果选择为 3,则执行delete()
函数进行删除操作;如果选择为 4,则执行search()
函数进行查找操作;若输入不在规定范围内,则打印 “输入有误!”。若用户输入不是整数,会捕获异常并打印 “输入错误”。
看吧~这个页面菜单确实非常简单甚至有些丑陋呢,实在是很抱歉呀!可能有些人光看这段文字和代码还想象不到具体的样子。好啦~那我就放一张运行时的截图给你们看,这样大家就啥都明白了!后期会更新出新的菜单页面,让这个简单的项目更加perfer!若有大佬有想法,也欢迎评论,嘻嘻!
说明一下:
>? 这位置后面是需要你输入1-5里的任何一个数字,其中他们所对应的就是增加/修改/删除/查找/退出等功能,然后enter回车,这样就能实现执行功能了哈!
说完上面的这些基础内容,现在来到了正文了,从增加/修改/删除/查找/退出等功能一个一个编写代码和细说!
# 6.增加数据信息
def insert():
try:
print('请对下面选项做出选择:\n 1.增加教师的信息\n 2.增加教师授课的时间信息')
select_num = int(input('您的选择是:(1/2):'))
if select_num == 1:
num = input('请输入增加的教师工号(后3位):')
# python 和 MySQL 交互连接
sql = 'select t_num,t_name from Teachers where t_num = %s'
params = (num)
cur.execute(sql , params) # 语句参数化
result = cur.fetchone() # 输出一条信息
if result != None :
print('该教师工号的信息已记录在数据库,该教师的信息如下:\n',result)
else:
try:
name = input('请输入该工号对应的教师姓名:')
gender = input('请输入该工号对应的教师性别(男/女):')
tiebie = input('请输入该工号对应的教师专业系别(数学/物理/地理/教技/信息/新能源):')
sql = 'insert into Teachers(t_num ,t_name , t_gender , t_tiebie) value (%s ,%s ,%s ,%s)'
params = (num , name , gender , tiebie)
cur.execute(sql,params)
conn.commit() # 对数据库的修改保存到数据库中
print(f'工号为{num}的教师的数据信息 添加成功!')
except:
conn.rollback() # 报错回滚
print('输入的信息存在有误!请认真输入!!!\n教师的数据信息 添加失败!')
elif select_num == 2:
try:
num = int(input('请输入教师的工号(后3位):'))
# python 和 MySQL 交互连接
sql = 'select * from Teachers where t_num = %s'
params = (num)
cur.execute(sql , params)
result = cur.fetchone()
if result == None:
print('抱歉,数据库里没有该教师的信息,无法录入授课时间表里!')
else:
print('查找到该教师的信息:\n',result,'\n请输入该教师增加的授课时间:')
names = input('请输入教师的教学课程:')
time = input('请输入教师的上课日期(输入格式:xxxx-xx-xx):')
lesson = input('请输入教师的上课节数(1/2/3/4/5):')
sql = 'insert into Course (t_num , c_time , c_lesson , c_name) value (%s ,%s ,%s ,%s )'
params = (num , time , lesson ,names)
cur.execute(sql,params)
conn.commit()
print(f'工号为{num}的教师的授课时间 添加成功!')
except:
conn.rollback() # 报错回滚
print('输入的信息存在有误!请认真输入!!!添加失败!')
else:
print('输入的信息存在有误!请认真输入!!!添加失败!')
except:
conn.rollback() # 报错回滚
print('输入的信息存在有误!请认真输入!!!添加失败!')
详细解释一下:
定义了一个名为
insert
的函数,用于实现数据的增加操作。首先在函数内部通过try-except
结构来处理可能出现的异常。打印提示信息让用户在 “增加教师的信息” 和 “增加教师授课的时间信息” 两个选项中做出选择,将用户输入的选择赋值给select_num
变量。如果
select_num
等于 1,表示用户选择增加教师的信息。要求用户输入增加的教师工号,然后通过 SQL 查询语句和参数化的方式在数据库中查找该工号对应的教师信息。如果查询结果不为空,则打印该教师信息;如果查询结果为空,则要求用户依次输入该工号对应的教师姓名、性别和专业系别。接着使用 SQL 插入语句和参数化的方式将新的教师信息插入到Teachers
表中,并通过conn.commit()
将对数据库的修改保存到数据库中。如果出现异常,则通过conn.rollback()
进行报错回滚,并提示用户输入的信息有误,添加失败。如果
select_num
等于 2,表示用户选择增加教师授课的时间信息。要求用户输入教师工号,通过 SQL 查询语句和参数化的方式在Teachers
表中查找该教师信息。如果查询结果为空,则提示数据库里没有该教师的信息,无法录入授课时间表;如果查询结果不为空,则打印该教师信息,并要求用户依次输入教师的教学课程、上课日期和上课节数。然后使用 SQL 插入语句和参数化的方式将新的授课时间信息插入到Course
表中,并通过conn.commit()
保存修改。如果出现异常,则进行报错回滚,并提示用户输入的信息有误,添加失败。如果
select_num
既不等于 1 也不等于 2,则提示用户输入的信息有误,添加失败。如果在整个过程中出现任何异常,都会进行报错回滚,并提示用户输入的信息有误,添加失败。
# 7.修改数据信息
def modify():
try:
print('请对下面选项做出选择:\n 1.修改教师的信息\n 2.修改教师授课的时间信息')
select_num = int(input('您的选择是(1/2):'))
num = input('请输入需要修改信息的教师工号(后3位):')
sql = 'select * from Teachers where t_num = %s'
params = (num)
cur.execute(sql, params) # 语句参数化
result = cur.fetchone() # 输出一条信息
if select_num == 1:
if result == None :
print('抱歉!数据库里没有该教师工号的信息!无法修改!')
else:
print('该教师工号的信息已记录在数据库,该教师的信息如下:\n',result)
try:
name = input('请输入修改后 教师的姓名:')
gender = input('请输入修改后 教师的性别(男/女):')
tiebie = input('请输入修改后 教师的专业系别(数学/物理/地理/教技/信息/新能源):')
sql = 'update Teachers set t_name = %s , t_gender = %s , t_tiebie = %s where t_num = %s'
params = (name, gender, tiebie,num)
cur.execute(sql, params)
conn.commit() # 对数据库的修改保存到数据库中
print(f'工号为{num}的教师的数据信息 修改成功!')
except:
conn.rollback() # 报错回滚
print('输入的信息存在有误!请认真输入!!!\n教师的数据信息 修改失败!')
elif select_num == 2:
if result == None:
print('抱歉,没有该教师的信息,无法修改授课时间里的数据库!')
else:
sql = 'select t.t_num,t.t_name,t_tiebie,c.c_time,c.c_lesson,c.c_name from Teachers t inner join Course c on t.t_num = c.t_num and t.t_num = %s '
params = (num)
cur.execute(sql , params)
result = cur.fetchall()
if len(result) == 0:
print(f'工号为{num}的教师目前没有安排授课时间,无法修改!')
else:
print(f'工号为{num}的教师的授课时间表如下:')
for i in result:
print(i)
try:
names = input('请输入修改的 原课程是:') # 用于定位
sql = 'select * from Course where c_name = %s'
params =(names)
cur.execute(sql,params)
result = cur.fetchone()
if result == None:
print(f'工号为{num}的教师没有该课程授课任务!')
else:
time = input('请输入 修改后的上课日期(输入格式:xxxx-xx-xx):')
lesson = input('请输入 修改后的上课节数(1/2/3/4/5):')
sql = 'update Course set c_time = %s , c_lesson = %s where t_num = %s and c_name =%s'
params = (time,lesson,num,names)
cur.execute(sql, params)
conn.commit()
print(f'工号为{num}的教师授课时间修改成功')
except:
conn.rollback() # 报错回滚
print('输入的信息存在有误!请认真输入!!!\n 修改失败!')
else:
print('输入的信息存在有误!请认真输入!!!')
except:
conn.rollback() # 报错回滚
print('输入的信息存在有误!请认真输入!!!')
详细解释一下:
此部分定义了一个名为
modify
的函数,用于实现数据的修改操作。首先在函数内部通过try-except
结构处理可能出现的异常。打印提示信息让用户在 “修改教师的信息” 和 “修改教师授课的时间信息” 两个选项中做出选择,并将用户输入的选择赋值给select_num
变量。接着要求用户输入需要修改信息的教师工号,并通过 SQL 查询语句和参数化的方式在Teachers
表中查找该教师信息。如果查询结果不为空,则将结果赋值给result
变量;如果查询结果为空,则提示数据库里没有该教师工号的信息,无法修改。如果
select_num
等于 1,表示用户选择修改教师的信息。如果result
为空,则提示无法修改;如果不为空,则打印该教师信息,并要求用户依次输入修改后的教师姓名、性别和专业系别。然后使用 SQL 更新语句和参数化的方式更新Teachers
表中对应教师的信息,并通过conn.commit()
将修改保存到数据库中。如果出现异常,则通过conn.rollback()
进行报错回滚,并提示用户输入的信息有误,修改失败。如果
select_num
等于 2,表示用户选择修改教师授课的时间信息。如果result
为空,则提示无法修改授课时间;如果不为空,则通过 SQL 多表连接查询语句和参数化的方式查找该教师的授课时间表。如果查询结果长度为 0,表示该教师目前没有安排授课时间,无法修改;如果有授课时间,则打印授课时间表,并要求用户输入要修改的原课程名称用于定位。通过 SQL 查询语句和参数化的方式查找该课程信息,如果查询结果为空,则提示该教师没有该课程授课任务;如果不为空,则要求用户输入修改后的上课日期和上课节数。然后使用 SQL 更新语句和参数化的方式更新Course
表中对应教师和课程的授课时间信息,并通conn.commit()
保存修改。如果出现异常,则进行报错回滚,并提示用户输入的信息有误,修改失败。如果
select_num
既不等于 1 也不等于 2,则提示用户输入的信息有误。如果在整个过程中出现任何异常,都会进行报错回滚,并提示用户输入的信息有误。
# 8.删除数据信息
def delete():
try:
print('请对下面选项做出选择:\n 1.删除教师的信息\n 2.删除教师授课的时间信息')
select_num = int(input('您的选择是(1/2):'))
num = input('请输入教师的工号(后3位):')
sql = 'select * from Teachers where t_num = %s'
params = (num)
cur.execute(sql, params) # 语句参数化
result = cur.fetchone() # 输出一条信息
if select_num == 1:
if result == None:
print('抱歉!数据库里没有该教师工号的信息!无法删除!')
else:
print(f'工号为{num}的教师工号的信息已记录在数据库,该教师的信息如下:\n', result)
sql = 'select * from Course where t_num = %s'
params = (num)
cur.execute(sql,params)
result = cur.fetchall()
if len(result) == 0:
del_num = input(f'工号为{num}的教师没有授课安排,可以对教师的信息进行删除。是否删除该教师的信息?(是/否)')
if del_num == '是':
sql = "delete from Teachers where t_num = %s"
params = (num)
cur.execute(sql,params)
conn.commit()
print(f'工号为{num}的教师的信息删除成功!')
elif del_num == '否':
print('选择了拒绝删除!该教师的数据仍存在!')
else:
print('输入错误!删除失败!')
else:
del_num = input(f'工号为{num}的教师有授课时间的安排,需要删除授课时间的数据,方可删除该教师的信息,是否删除该教师的信息?(是/否)')
if del_num == '否':
print('选择了拒绝删除!该教师的数据仍存在!')
elif del_num == '是':
sql = "delete from Course where t_num = %s"
params = (num)
cur.execute(sql, params)
conn.commit()
sql = "delete from Teachers where t_num = %s"
params = (num)
cur.execute(sql, params)
conn.commit()
print(f'工号为{num}的教师的信息删除成功!')
else:
print('输入有误!删除失败!')
elif select_num == 2:
names = input('请输入需要删除的教师所授的科目:')
sql = 'select * from Course where t_num = %s and c_name = %s'
params = (num, names)
cur.execute(sql, params)
result = cur.fetchone()
if result == None:
print('抱歉!数据库无该教师授这课程的数据!无法删除!')
else:
sure = input('是否确定删除:(是/否)')
if sure == '是':
sql = "delete from Course where t_num = %s and c_name = %s"
params = (num, names)
cur.execute(sql, params)
conn.commit()
print('删除成功!')
elif sure == '否':
print('选择了拒绝删除!')
else:
print('输入错误!删除失败!')
else:
print('输入错误!删除失败!')
except:
print('输入有误!')
详细解释一下:
此部分定义了一个名为
delete
的函数,用于实现数据的删除操作。首先在函数内部通过try-except
结构处理可能出现的异常。打印提示信息让用户在 “删除教师的信息” 和 “删除教师授课的时间信息” 两个选项中做出选择,并将用户输入的选择赋值给select_num
变量。接着要求用户输入教师工号,并通过 SQL 查询语句和参数化的方式在Teachers
表中查找该教师信息。如果查询结果不为空,则将结果赋值给result
变量;如果查询结果为空,则提示数据库里没有该教师工号的信息,无法删除。如果
select_num
等于 1,表示用户选择删除教师的信息。如果result
为空,则提示无法删除;如果不为空,则再次通过 SQL 查询语句和参数化的方式查找该教师在Course
表中的授课安排。如果没有授课安排,则询问用户是否删除该教师的信息,根据用户的回答执行相应的 SQL 删除语句和conn.commit()
操作来删除教师信息或者不进行删除操作;如果有授课安排,则提示用户需要先删除授课时间的数据方可删除教师信息,同样根据用户的回答执行相应的删除操作或者不进行删除操作。如果用户输入错误,则提示输入错误,删除失败。如果
select_num
等于 2,表示用户选择删除教师授课的时间信息。要求用户输入需要删除的教师所授的科目,通过 SQL 查询语句和参数化的方式在Course
表中查找该教师教授该科目的信息。如果查询结果为空,则提示数据库无该教师授这课程的数据,无法删除;如果不为空,则询问用户是否确定删除,根据用户的回答执行相应的 SQL 删除语句和conn.commit()
操作来删除授课时间信息或者不进行删除操作。如果用户输入错误,则提示输入错误,删除失败。如果
select_num
既不等于 1 也不等于 2,则提示输入错误,删除失败。如果在整个过程中出现任何异常,会打印 “输入有误!”。
# 9.查询数据信息
def search():
try:
print('请对下面选项做出选择:\n 1.查询所有教师的信息以及授课信息 \n 2.查询某教师授课的时间信息')
select_num = int(input('您的选择是(1/2):'))
if select_num == 1:
sql = 'select t.t_num,t.t_name,t.t_gender,t.t_tiebie,c.c_time,c.c_lesson,c.c_name from Teachers t left outer join Course c on t.t_num = c.t_num'
cur.execute(sql) # 语句参数化
result = cur.fetchall() # 输出全部信息
for i in result:
print(i)
print('查询结束!')
elif select_num == 2:
num = input('请输入教师的工号(后3位):')
sql = 'select t.t_num,t.t_name,t.t_tiebie,c.c_time,c.c_lesson,c.c_name from Teachers t inner join Course c ' \
'on t.t_num = c.t_num and t.t_num = %s '
params = (num)
cur.execute(sql, params) # 语句参数化
result = cur.fetchall()
if result == ():
print('抱歉!数据库里没有该教师工号的授课信息!无法查询!')
else:
print(f'工号为{num}的教师工号的授课信息已记录在数据库,查询结果如下:')
for i in result:
print(i)
print('查询结束!')
except:
print('输入有误!')
详细解释一下:
此部分定义了一个名为
search
的函数,用于实现数据的查询操作。首先在函数内部通过try-except
结构处理可能出现的异常。打印提示信息让用户在 “查询所有教师的信息以及授课信息” 和 “查询某教师授课的时间信息” 两个选项中做出选择,并将用户输入的选择赋值给select_num
变量。如果
select_num
等于 1,表示用户选择查询所有教师的信息以及授课信息。通过 SQL 左外连接查询语句查询Teachers
表和Course
表中的相关信息,并使用cur.fetchall()
获取全部结果。然后通过循环遍历结果集并打印每一条信息,最后打印 “查询结束!”。如果
select_num
等于 2,表示用户选择查询某教师授课的时间信息。要求用户输入教师工号,通过 SQL 内连接查询语句和参数化的方式查询该教师的授课信息。如果查询结果为空,则提示数据库里没有该教师工号的授课信息,无法查询;如果不为空,则打印该教师的授课信息,并在最后打印 “查询结束!”。如果在整个过程中出现任何异常,会打印 “输入有误!”。
好了!以上就是增加/修改/删除/查找/退出等功能的代码和代码的解释,相信各位看完后有部分大佬可以轻松理解,有部分小白可能懵懵懂懂吧,其实那些解释主要都是靠部分印象写的阿哈哈哈,但大概意思是差不多,不过有部分核心的内容没有说出来,后期会把运行和注意的视频放在资源里,这点你们也可以自己摸索哈,也是有点独特之处吧,嘻!嘻!嘻!
# 10.主程序运行
if __name__ == '__main__':
main()
详细解释一下:
当这个脚本作为主程序运行时,会执行以下操作:
如果当前模块的名称是
__main__
,这意味着该脚本是直接被运行而不是被作为模块导入到其他脚本中。在这种情况下,调用main()
函数。
main()
函数负责展示菜单并根据用户的选择执行相应的操作,如增加数据、修改数据、删除数据、查询数据或退出系统等。通过这种方式,整个程序的运行流程得以启动,用户可以通过菜单与程序进行交互,对教师和授课信息进行管理。
说明一下:
以上是视频图的截图!关于该项目的代码运行的视频和相关创新的点我后期会放到资源里给各位免费下载!之前其实录过了,因为涉及到一些个人信息和隐私的问题,所以要做一些马赛克或者重新录制的可能,请谅解没有及时上传,Sorry!你们也可以自己去摸索~
至此,本文的项目代码展示与解释便暂告一段落。若其中存在任何不足之处,诚挚地欢迎大家踊跃评论。我并非计算机专业人士,因而对各位小白在学习过程当中或者完成相关作业之际所遭遇的种种困境感同身受。诸如对代码一知半解、毫无头绪不知从何入手、代码运行不起来以及全然不清楚哪里出现了错误等等。这些情况于我而言都不陌生,我也曾亲身经历过。所以,真心地感激你能够如此耐心,一直看到了这里。
最后,若对这篇文章能对您的学习和工作有所帮助,请动动你的宝贵的小手指,点赞+收藏+关注!谢谢!!!