Python实现超简易的学生信息管理系统
这里直接用data里存储的信息做数据库,当然也可以另外从文件里读取数据,操作并存储会更好,这里就这样将(hu)就(nong)一下吧O(∩_∩)O~
import pandas as pd
data = [{
"ID":1001,"Name":"Mary","English_score":100,"Python_score":99,"C_score":96},
{
"ID":1002,"Name":"Jack","English_score":98,"Python_score":92,"C_score":98},
{
"ID":1003,"Name":"Lily","English_score":93,"Python_score":96,"C_score":94},
{
"ID":1004,"Name":"Mike","English_score":95,"Python_score":96,"C_score":90},
{
"ID":1005,"Name":"Rose","English_score":97,"Python_score":94,"C_score":92}]
subject_dic = {
'1':'English_score','2':'Python_score','3':'C_score','4':'Total_score'}
def insert(): #录入学生信息
mark = True
while mark:
ID = int(input('请输入要添加的学生ID:'))
if ID in [data[i]['ID'] for i in range(len(data))]:
print('ID:{}已经存在,请重新输入!'.format(ID))
res = input("是否继续添加学生信息?(Y/N):").title()
if res == 'Y':
continue
elif res == 'N':
break
else:
print('请输入正确的格式!')
continue
try:
Name = input('请输入要添加的学生姓名:').title()
English_score = int(input('请输入要添加的学生英语成绩:'))
Python_score = int(input('请输入要添加的学生Python成绩:'))
C_score = int(input('请输入要添加的学生C语言成绩:'))
except:
print('请输入正确的格式!')
continue
Total_score = English_score + Python_score + C_score
data.append({
"ID":ID,"Name":Name,"English_score":English_score,\
"Python_score":Python_score,"C_score":C_score,"Total_score":Total_score})
print('{}号学生信息添加成功!'.format(ID))
while True:
res = input("是否继续添加学生信息?(Y/N):").title()
if res == 'Y':
break
elif res == 'N':
mark = False
break
else:
print('请输入正确的格式!')
continue
def search(): #查找学生信息
mark = True
while mark:
search_method = input('请输入查询方式:1-ID,2-姓名:')
if search_method == '1':
ID = input('请输入学生ID:')
if ID not in [str(data[i]['ID']) for i in range(len(data))]:
print('您查找的ID不存在!')
else:
search_lst = [item for item in data if str(item["ID"]) == ID]
search_lst[0]['Total_score'] = search_lst[0]['English_score'] + search_lst[0]['Python_score'] +\
search_lst[0]['C_score']
print("您要查询的学生信息为:\n{}".format(search_lst[0]))
search_lst.clear()
elif search_method == '2':
Name = input('请输入学生姓名:').title()
if Name not in [data[i]['Name'] for i in range(len(data))]:
print('您查找的姓名不存在!')
else:
search_lst = [item for item in data if item["Name"] == Name]
for item in search_lst:
item['Total_score'] = item['English_score'] + item['Python_score'] + item['C_score']
print("您要查询的学生信息为:\n{}".format(item))
search_lst.clear()
else:
print("您输入的方式有误,请重新查询!")
while True:
res = input("是否继续查询学生信息?(Y/N):").title()
if res == 'Y':
break
elif res == 'N':
mark = False
break
else:
print('请输入正确的格式!')
continue
def delete(): #删除学生信息
mark = True
while mark:
ID = input('请输入要删除信息对应的学生ID:')
if ID not in [str(data[i]['ID']) for i in range(len(data))]:
print('您要删除的ID不存在!')
else:
delete_lst = [item for item in data if str(item["ID"]) == ID]
data.remove(delete_lst[0])
print('{}号学生的信息删除成功!'.format(ID))
while True:
res = input("是否继续删除学生信息?(Y/N):").title()
if res == 'Y':
break
elif res == 'N':
mark = False
break
else:
print('请输入正确的格式!')
continue
def modify(): #修改学生信息
mark = True
while mark:
ID = input('请输入要修改信息对应的学生ID:')
if ID not in [str(data[i]['ID']) for i in range(len(data))]:
print('您要修改的ID不存在!')
else:
subject = input('请输入要修改的科目(1-English_score,2-Python_score,3-C_score):')
modified_score = input('请输入修改后的分数:')
if subject in ['1','2','3'] and modified_score.isdigit():
modify_lst = [index for index,item in enumerate(data) if item['ID'] == int(ID)]
data[modify_lst[0]][subject_dic[subject]] = int(modified_score)
print('{}号学生的{}成绩修改成功!'.format(ID,subject_dic[subject]))
else:
print('请输入正确的科目代码或分数!')
while True:
res = input("是否继续修改学生信息?(Y/N):").title()
if res == 'Y':
break
elif res == 'N':
mark = False
break
else:
print('请输入正确的格式!')
continue
def sort(): #成绩排序
mark = True
while mark:
subject = input('请输入按哪一个科目排序(1-English_score,2-Python_score,3-C_score,4-Total_score):')
data_ = pd.DataFrame(data)
data_['Total_score'] = data_['English_score'] + data_['Python_score'] + data_['C_score']
print(data_.sort_values(by = subject_dic[subject],ascending = False))
while True:
res = input("是否继续排序学生信息?(Y/N):").title()
if res == 'Y':
break
elif res == 'N':
mark = False
break
else:
print('请输入正确的格式!')
continue
def show(): #显示所有学生信息
print(update())
def update():
data_ = pd.DataFrame(data)
data_['Total_score'] = data_['English_score'] + data_['Python_score'] + data_['C_score']
return data_
Mark = True #管理系统构架
while Mark:
print('''
''')
print('='*10,'功能菜单','='*10)
print('''
1、录入学生信息
2、查找学生信息
3、删除学生信息
4、修改学生信息
5、排序
6、显示所有学生信息
0、退出
''')
print('='*30)
res = int(input('请输入您想要执行的功能:'))
if res == 0:
Mark = False
elif res == 1:
insert()
elif res == 2:
search()
elif res == 3:
delete()
elif res == 4:
modify()
elif res == 5:
sort()
elif res == 6:
show()
else:
print('请输入正确的功能!')
运行结果:
========== 功能菜单 ==========
1、录入学生信息
2、查找学生信息
3、删除学生信息
4、修改学生信息
5、排序
6、显示所有学生信息
0、退出
==============================
请输入您想要执行的功能:6
ID Name English_score Python_score C_score Total_score
0 1001 Mary 100 99 96 295
1 1002 Jack 98 92 98 288
2 1003 Lily 93 96 94 283
3 1004 Mike 95 96 90 281
4 1005 Rose 97 94 92 283
还有几个小练习,后面继续码出来!