一、系统要求
在B站上自学了python,简单练习一下。系统要求:功能方面实现登记学生ID、成绩等信息;能够实现查找学生信息、修改、删除学生信息;统计学生总人数;显示所有的学生信息;退出系统功能。
二、实现过程
student.py做为主程序,student_function.py作为副程序
##student.py
from student_function import *
def main():#主函数实现选择逻辑
while True:
master()
choice = int(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':
print("程序退出!")
break
else:
continue
elif choice==1:
insert()
elif choice==2:
search()
elif choice==3:
delete()
elif choice==4:
change()
elif choice==5:
key = input("升序还是降序?up/down:")
if key.upper() =='UP' :
sort()
break
elif key.upper()=='DOWN':
sort()
break
else:
print('输入错误,返回主界面',master())
elif choice==6:
total()
elif choice==7:
display()
else:
print("输入错误")
def master():#实现交互显示的界面
print('-------------------学生信息管理系统---------------------')
print("___________________功能菜单____________________________")
print("\t\t\t\t1.登记学生信息")
print("\t\t\t\t2.查找学生信息")
print("\t\t\t\t3.删除学生信息")
print("\t\t\t\t4.修改学生信息")
print("\t\t\t\t5.成绩排序")
print("\t\t\t\t6.统计学生人数")
print("\t\t\t\t7.显示所有学生信息")
print("\t\t\t\t0.退出")
print("-----------------------------------------------------")
if __name__=="__main__":
main()
student_function.py实现学生信息的输入、和存储:
#信息录入和存储功能
import os,re
file_name = 'student.txt'
format = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^10}'
def insert(): #录入信息
student_list=[]
while True:
id = input("请输入学生ID:")
if not id:
break
name = input("请输入姓名:")
if not name:
break
try:
english = int(input("输入英语成绩:"))
python = int(input("输入python成绩:"))
java =int(input("输入Java成绩:"))
except:
print("输入无效,不是整数类型,请重新输入!!")
continue
student={"id":id,"name":name,"english":english,"java":java}
student_list.append(student)
answer = input("是否再次添加:y/n\n")
if answer.upper()=='Y':
continue
else:
break
save(student_list)
print("信息录入完毕!")
def save(list):#存储学生信息
try:
stud = open(file_name,'a',encoding='utf-8')
except:
stud = open(file_name,'w',encoding='utf-8')
for item in list:
stud.write(str(item)+'\n')
stud.close()
student_function.py实现学生信息的查询、删除修改:
##删除
def delete():
while True:
Student_ID=input("请输入需要删除学生的ID!\n")
flag=False
if Student_ID !='':
if os.path.exists(file_name):
with open(file_name,'r',encoding='utf-8') as a:
student_first=a.readlines()
#print(student_first)
else:
student_first=[]
flag = False #标记是否删除数据
if student_first:
with open(file_name,'w',encoding='utf-8') as b:
student_second={}
for item in student_first:
student_second=dict(eval(item))
if student_second['id'] !=Student_ID: #如果id相同,就删除,不相同就重新写入
b.write(str(student_second)+'\n')
else:
flag =True
if flag:
print(f'id 为{Student_ID}的学生已经删除!')
else:
print(f'id 为{Student_ID}的学生不存在!')
else:
print("未找到学生信息!")
break
display() #显示删除后的学生信息
answer = input("是否继续删除学生信息?y/n\n")
if answer.upper()=='Y':
continue
else:
break
##修改
def change():
if os.path.exists(file_name):
with open(file_name,'r',encoding='utf-8') as a:
student_first=a.readlines()
else:
print('文件不存在')
while True:
Student_ID=input('请输入需要修改信息的学生ID!\n')
if Student_ID:
for item in student_first:
item=dict(eval(item))
if Student_ID==item['id']:
print('找到对应的学生信息!')
item['id']=input("请输入学生ID\n")
item['name']=input('输入新的姓名\n')
item['english']=int(input('输入english成绩\n'))
item['java']=int(input('输入Java成绩\n'))
item['python']=int(input('输入python成绩\n'))
else:
print('没有找到学生信息!')
student_second=item
with open(file_name,'w',encoding='utf-8') as b:
b.write(str(student_second)+'\n')
else:
print('输入错误!')
answer=input('是否继续删除?y/n\n')
if answer.upper()=='Y':
continue
else:
display()
break
student_function.py人数统计、显示所有的学生信息:
##显示所有信息
def show(item):
item=dict(eval(item))
print(format.format(item['id'],
item['name'],
item['english'],
item['python'],
item['java'],
int(item['python'] + item['english'] + item['java'])
))
def display():
if os.path.exists(file_name):
with open(file_name,'r',encoding='utf-8') as a:
content_txt=a.readlines()
print(format.format('ID', '姓名', '英语成绩', 'python', 'Java', '总成绩'))
for item in content_txt:
show(item)
def total():
i=0
if os.path.exists(file_name):
with open(file_name,'r',encoding='utf-8') as a:
for item in a.readlines():
i+=1
print("学生人数为:\n",i)
else:
print("数据库文件不存在!")
实现结果:
python菜鸡还需加油