python管理系统项目首选_Python练手项目--学生管理系统

主函数:

#菜单函数

def menu():

print('***************************学生信息管理系统*********************************')

print('-------------------------------功能菜单-------------------------------------')

print('\t\t\t\t\t\t1、录入学生信息')

print('\t\t\t\t\t\t2、查找学生信息')

print('\t\t\t\t\t\t3、删除学生信息')

print('\t\t\t\t\t\t4、修改学生信息')

print('\t\t\t\t\t\t5、排序')

print('\t\t\t\t\t\t6、统计学生总数')

print('\t\t\t\t\t\t7、显示所有学生信息')

print('\t\t\t\t\t\t0、退出')

print('***************************************************************************')

#主函数

def main():

while True:

menu() #调用菜单函数

choice = input('请输入你选择的功能:')

if choice in [0,1,2,3,4,5,6,7]:

if choice == '0':

answer = input('您确定要退出系统吗? y/n')

if answer == 'y' or answer == 'Y':

break

elif answer =='n' or answer =='N':

continue

else:

print('您的输入有误!请重新输入')

elif choice == '1':

insert()

elif choice == '2':

search()

elif choice == '3':

delete()

elif choice == '4':

modify()

elif choice == '5':

sort()

elif choice == '6':

total()

elif choice == '7':

show()

else:

print('您的输入有误,请重新输入!')

if __name__ == '__main__':

main()

插入函数

def insert():

student_list[] #初始化空列表

while True:

id = input('请输入学生id(如1001):')

if not id : #如果id为空

break

try:

name = input('请输入姓名')

english = input('请输入英语成绩')

python = input('请输入python成绩')

java = input('请输入java成绩')

except:

print('输入无效,请输入整数')

continue

student = {'id':id,'name':name,'english':english,'python':python,'java':java}

studnet_list.append(student)

answer = input('是否继续添加学生信息,y/n')

if answer == 'y' or answer == 'Y':

continue

elif answer == 'n' or answer == 'N':

break

else:

print('您的输入有误,请重新输入')

save(student_list)

print('学生信息保存成功')

def save(lst):

try:

stu_txt=open(filename,'a',encoding='utf-8') #如果没有文件会追加改文件,filename是全局变量

except:

stu_txt=open(filename,'w',encoding='utf-8')

for item in lst:

stu_txt.write(str(item)+'\n')

stu_txt.close()

删除函数

def delete():

while True:

student_id=input('请输入要删除的学生id:')

if studnet_id != '':

if os.path.exists(filename):

with open(filename,'r',encoding='utf-8') as rfile:

student_lst=rfile.readlines()

else:

student_lst=[]

flag=False

if student_lst:

d={}

for item in student_lst:

d=dict(eval(item))

if d[id] == studnet_id:

flag=True

else:

with open(filename,'w',encoding='utf-8') as wfile:

wfile.write(str(d)+'\n)'

if flag:

print(f'id为{student_id}的学生信息已经被删除')

else:

print(f'没有找到id为{student_id}的学生信息')

else:

print('您的输入有误,请重新输入')

delete()

show() #重新显示所有学生信息

answer= input('是否继续删除? y/n')

if answer == 'y' or answer=='y':

continue

else:

break

修改学生信息

def modify():

show()

with open(filename,'r',encoding='utf-8') as rflie:

student=rflie.readlines()

student_id=input('请输入要修改的学生id')

with open(filename,'w',encoding='utf-8') as wfile:

for item in student:

d=dict(eval(item))

if d['id'] == student_id:

while True:

try:

d['name']=input('请输入学生姓名')

d['english']=input('请输入学生英语成绩:')

d['python']=input('请输入学生python成绩:')

d['java']=input('请输入学生java成绩:')

except:

print('您的输入有误!')

else:

break

wfile.write(str(d)+'\n')

else:

wfile.write(str(d)+'\n')

answer=input('是否继续修改 y/n')

if answer=='y' or answer== 'n':

modify()

查找学生信息

def search():

student_querry=[]

while True:

id=''

name=''

if os.path.exists(filename):

mode=input('按id查找请输入1,按name查找请输入2')

if mode == '1'

id=input('请输入学生的的id:')

elif mode == '2':

name=input('请输入学生的的姓名:')

else:

print('您的输入有误,请重新输入')

search()

with open(filename,'r',encoding='utf-8')as rfile:

students=rfile.readlines

for item in studnets:

d=dict(eval(item))

if d['id'] ==id :

student_querry.append(d)

elif d['name']==name:

studnet_querry.append(d)

else:

print('查无此人')

show_sutdent(studnet_querry)

studnet_querry.clear()

answer=input('是否继续,y/n ')

if answer=='y' or answer=='Y':

continue

else:

break

else:

return

def show_student(list):

format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^8}'

format_date = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^8}'

if len(list) == 0:

print("查无此人")

return

print(format_title.format('ID', '姓名', '英语成绩', 'python成绩', 'java成绩', '总成绩'))

for item in list:

print(format_date.format(item.get('id'),

item.get('name'),

item.get('english'),

item.get('python'),

item.get('java'),

item.get('english') + item.get('python') + item.get('java')

))

统计学生信息

def total():

if os.path.exists(filename):

with open(filename,'r',encoding='utf-8') as rfile:

students=rfile.readlines()

if students:

print(f'一共有{len(students)}名学生')

else:

print('无学生信息')

else:

print('无学生信息')

学生成绩排序

def sort():

show()

with open(filename,'r',encoding='utf-8') as rfile:

student_list=rfile.readlines()

student_new=[]

for item in student_list:

d=dict(eval(item))

student_new.append(d)

asc_or_desc=input('升序or降序,1/2')

if asc_or_desc=='1':

asc_or_desc_bool=False

elif asc_or_desc=='2':

asc_or_desc_bool=True

else:

print('您的输入有误,请重新输入')

sort()

mode=input('请选择排序方式,1、按英语成绩排序;2、按python成绩排序; 3、按java成绩排序')

if mode=='1':

student_new.sort(key=lambda x: int(x['english']) ,reverse=asc_or_desc_bool)

elif mode=='2':

student_new.sort(key=lambda x: int(x['python']), reverse=asc_or_desc_bool)

elif mode=='3':

student_new.sort(key=lambda x: int(x['python']), reverse=asc_or_desc_bool)

else:

print('您的输入有误,请重新输入')

sort()

show_student(student_new)

显示所有学生信息

def show():

sutdnet_list[]

if os.path.exists(filename):

with open(filename,'r',encoding='utf-8') as rfile:

studnets=rfile.readlines()

for item in students:

student_list.append(eval(item))

if student_list:

show_student(student_list)

else:

print('无学生信息')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值