count = 0
for j in range(1, len(l2)-i):
if int(l2[j - 1]) > int(l2[j]):
temp = l2[j]
l2[j] = l2[j - 1]
l2[j - 1] = temp
count = count + 1
if count == 0: # 算法优点 当已经有序时就不再进行排序
return l2
return l2 # 返回排好序的 列表
按学号从小到大排序并打印学生信息
def GetAllStudentById(): # 按学号排序打印出学生信息(升序)
l = [] # 建立一个空的列表
wb = load_workbook('StudentList.xlsx')
sheet = wb.active
for column in list(sheet.columns)[0]:
l.append(column.value) # 将学号插入到列表中 得到一个学号列表
l2 = l[1:] # 由于第一个是表头 将第二个位置以后的范围 拷贝给 l2
l3 = BubbleSort(l2) # 进行 学号排序
# 3 是排好序的列表
for i in range(1, 10):
print(sheet.cell(1, i).value, end=" ") # 打印出表头的信息
print()
for i in range(0, len(l3)): # 依次找到排好序的学号或年级对应的学生信息即可
r = FindId(l3[i]) # 找到该行
for j in range(1, 10):
print(sheet.cell(r, j).value, end=" ") # 打印出该id对应的信息
print()
注意 :因为学号是唯一的,因此可以通过找道该行,然后通过行号进行某一行的定向信息打印,但是像年级 ,月薪信息是有可能重复的,就不能再像学号一样查找,打印了,但是我们可以先将年级的列
表排好序,然后进行一个去重,这样,就可以将符合满足,排好序的年级列表中的年级对应的学生,信息全部打印出来
6. 删除毕业生信息
非常简单,只需要将要删除的学生的学号输入,然后学号校验合法且存在之后,找到对应的该行,然后将这一行的数据删除就可以了。
def DeleteStudent(): # 删除学生信息
PrintAll()
id = input("请输入要删除学生的学号:")
if not CheckIdIsRight(id): # 判断学号为id的学生是否在StudentList.xlsx中
print("学号正确!")
id = int(id)
row = FindId(id) # 查找其所在的行
wb = load_workbook('StudentList.xlsx')
sheet = wb.active
isdelete = input("是否删除该学生信息?输入是或否:")
if isdelete == '是':
sheet.delete_rows(row, 1) # 删除该行
wb.save('StudentList.xlsx')
print("删除成功!")
else:
print("删除失败!")
else:
print("学号输入错误!")
三、三、 测试测试
1. 查询搜索测试
评论0