HIT暑假python作业一《学生信息管理系统》
运行确保同目录下要有一个homework1.txt文件,
这样程序才有内容来源读取
初始化时homework1.txt中内容应为{}
本地运行效果

生成exe文件后运行效果

# -*- coding: utf-8 -*-
import json
def readin():
global info
with open('homework1.txt','r',encoding='utf-8-sig') as f:
info = json.load(f)
def printmenu():
print ("""
╔———————学生信息管理系统————————╗
│ │
│ =============== 功能菜单 =============== │
│ │
│ 1 录入学生信息 │
│ 2 查找学生信息 │
│ 3 删除学生信息 │
│ 4 修改学生信息 │
│ 5 排序 │
│ 6 统计学生总人数 │
│ 7 显示所有学生信息 │
│ 0 退出系统 │
│ ========================================== │
│ 说明:通过数字选择菜单 │
╚———————————————————————╝
""")
x = input('请选择: ')
return x
def beforeexit():
with open('homework1.txt','w',encoding='utf-8') as f:
json.dump(info, f, ensure_ascii=False)
def insert(x,y):
circle = 'y'
while circle == 'y':
while True:
if y==0:
x = input('请输入ID(如1001):')
x1 = input('请输入名字:')
x2 = input('请输入英语成绩:')
if not x2.isnumeric():
print("输入无效,不是整型数值....重新录入信息")
continue
x3 = input('请输入Python成绩:')
if not x3.isnumeric():
print("输入无效,不是整型数值....重新录入信息")
continue
x4 = input('请输入C语言成绩:')
if not x4.isnumeric():
print("输入无效,不是整型数值....重新录入信息")
continue
break
info[x] = [x1,x2,x3,x4,str(int(x2)+int(x3)+int(x4))]
circle=input("是否继续添加?(y/n): ")
else:
print('学生信息录入完毕!!!')
beforeexit()
def find():
circle = 'y' # 判断是否需要继续查询
while (circle == 'y'):
x = input('按ID查找输入1;按姓名查找输入2: ')
k = 0
if x=='1':
y = input('请输入学生ID: ')
try:
show([(y,info[y])])
k = 1
except:
pass
elif x=='2':
y = input('输入名字:')
for z in info.items():
if z[1][0] == y:
show([(z[0], z[1])])
k = 1
if k == 0:
print('(o@.@o) 无数据信息 (o@.@o)')
circle = input("是否继续查询?(y/n): ")
def delete():
a = 'y'
while a == 'y':
x= input('请输入要删除的学生ID: ')
try:
del info[x]
print('ID为 {} 的学生信息已经被删除...'.format(x))
except:
print('没有找到ID为{}的学生信息'.format(x))
show(info.items())
a = input('是否继续删除?(y/n): ')
else:
beforeexit()
def change():
show(list(info.items()))
a = 'y'
while a == 'y':
x = input('请输入要修改的学生ID: ')
if x in info.keys():
print('找到了这名学生,可以修改他的信息!')
x1 = input('请输入名字:')
x2 = input('请输入英语成绩:')
if not x2.isnumeric():
print("输入无效,不是整型数值....重新录入信息")
continue
x3 = input('请输入Python成绩:')
if not x3.isnumeric():
print("输入无效,不是整型数值....重新录入信息")
continue
x4 = input('请输入C语言成绩:')
if not x4.isnumeric():
print("输入无效,不是整型数值....重新录入信息")
info[x] = [x1, x2, x3, x4, str(int(x2) + int(x3) + int(x4))]
else:
print('未查询到该学生')
a = input('是否继续修改其他学生信息?(y/n): ')
else:
beforeexit()
def mysort():
show(list(info.items()))
x = input('请选择排序方式(1按英语成绩排序;2按Python成绩排序;3按C语言成绩排序;0按总成绩排序): ')
y = input('请选择(0升序;1降序): ')
if x == '0' :
x = '4'
z = sorted(info.items(),key = lambda t:int(t[1][int(x)]),reverse=int(y))
show(z)
def shownum():
print("一共有 %d 名学生!"%len(info))
def show(preinfo):#preinfo是列表的,每个元素是元组(ID,[名字,成绩1,成绩2,成绩3,总成绩])
print('\t'+'ID'.ljust(7," ")+'\t'+'名字'.ljust(9," ")+'英语成绩'+'\t'+' Python成绩'+'\t'+' C语言成绩'+'\t'+' 总成绩')
for i in preinfo:
print('\t'+i[0].ljust(7," ")+'\t'+i[1][0].ljust(10," ")+i[1][1].ljust(12," ")+'\t'+i[1][2].ljust(12," ")+'\t'+i[1][3].ljust(12," ")+'\t'+i[1][4])
if __name__ == '__main__':
readin()
# for i in info.items():
# info[i[0]][4]=str(int(info[i[0]][1])+int(info[i[0]][2])+int(info[i[0]][3]))
while(True):
select = printmenu()
if select == '0':
print('您已退出学生成绩管理系统!')
break
elif select == '1':
insert(0,0)
elif select =='2':
find()
elif select =='3':
delete()
elif select =='4':
change()
elif select =='5':
mysort()
elif select =='6':
shownum()
elif select =='7':
show(list(info.items()))
else:
pass
这是一个使用Python实现的学生信息管理系统,具备录入、查找、删除、修改学生信息等功能,并能进行成绩排序及统计学生总数。系统通过文本文件存储数据。
4975

被折叠的 条评论
为什么被折叠?



