|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
import os
filename='student.txt'
def menu():#主菜单界面
print("============================学生信息管理系统===========================")
print('--------------------------------主菜单-------------------------------')
print('\t\t\t\t\t1.录入学生信息')
print('\t\t\t\t\t2.查找学生信息')
print('\t\t\t\t\t3.删除学生信息')
print('\t\t\t\t\t4.修改学生信息')
print('\t\t\t\t\t5.排序')
print('\t\t\t\t\t6.统计学生总人数')
print('\t\t\t\t\t7.显示学生信息')
print('\t\t\t\t\t0.退出系统')
print('--------------------------------------------------------------------')
print("====================================================================")
#******************************************************此模块功能已实现******************************************************************
def main():
while True:
menu()
number=int(input("请选择功能:"))
if number in [0,1,2,3,4,5,6,7]:
if number == 0:
end=input("请确认是否退出(y/s)")
if end == 'y' or end == 'Y':
print("成功退出,感谢您的使用!!")
break
else:
continue
elif number == 1:
insert()#插入
elif number == 2:
find()#查找
elif number == 3:
delete()#删除
elif number == 4:
modify()#修改
elif number == 5:
sort()#排序
elif number == 6:
total()#统计总数
elif number == 7:
show()#显示学生信息
#******************************************此模块功能已实习********************************************************
def insert():#录入学生数据
stulist=[]#保存学生信息的列表
while True:
try:
stu_id=int(input('请录入学生ID(如:1001)'))
except:#输入错误格式会要求重新输入
print("没有输入正确格式的学生id,返回至主菜单")
break
stu_name=input('请输入学生姓名:')
if not stu_name:#如果名字输入的是空字符
print("学生姓名输入为空,返回至主菜单")
break
stu_chinese=int(input('请输入学生的语文成绩:'))
stu_math = int(input('请输入学生的数学成绩:'))
stu_english = int(input('请输入学生的英语成绩:'))
student_dic={'id':stu_id,'name':stu_name,'chinese':stu_chinese,'math':stu_math,'english':stu_english}#将学生信息存放到字典里
stulist.append(student_dic)#将字典里的学生信息存放到列表中
answer=input("是否继续录入学生信息(y/n)")
if answer == 'y' or answer == 'Y':
continue
else:
break
save(stulist)
def save(lit):#保存
file_stu=open(filename,'a',encoding="utf-8")
for i in lit:
file_stu.write(str(i)+'\n')
file_stu.close()
#**********************************************此模块功能已实现*********************************************************************
def delete():
while True:
id=input("请输入要删除的学生的ID:")
if id != '':#如果输入的id不为空
if os.path.exists(filename):#如果文件不为空,表示这个文件存在
with open(filename,'r',encoding='utf-8') as file:#只读打开文件,utf-8编码
student_old=file.readline()#按行读取
else:
student_old=[]
# else:continue#为空就直接重新循环
flag=False #删除标志初始化为False
if student_old != '':
with open(filename,'w',encoding='utf-8') as wfile:#只写打开文件,打开时会覆盖之前的内容
zidian={} #定义一个空字典,用来暂时存储文件中的每一行内容
for i in student_old: #遍历列表,每个i就是每个学生的信息
zidian = dict(eval(i)) #************显示此处出错!!!************
# 希望实现功能:先将str类型的i转为代码,再转为字典。
if zidian['id'] == id:
flag=True
else:
wfile.write(str(zidian)+'\n')
if flag == True:
print("学号为%s的学生信息已经删除"% id)
else:
print("没有找到学号为%s的学生信息"% id)
answer=input("请问是否继续删除(y/n)")
if answer=='y' or answer == 'Y':
continue
else:break
#*************************************此模块功能有问题*********************************************************
def find():
pass
def modify():#修改
pass
def sort():
pass
def total():#统计总数
pass
def show():
pass
if __name__ == '__main__':
main()
'''zidian = dict(eval(i)) #************显示此处出错!!!************
也不能正常的实现功能。python初学者。找不到问题。只好把写的代码全发上来了
谢谢大家。'''
本帖最后由 jackz007 于 2020-11-28 11:16 编辑
文件没读完先被清空。
函数 delete() 中的这一句
- student_old=file.readline()
复制代码
改为
|
|