基于字典与文件存储的学生管理系统
1.学生数据按照字典数据存储
2.学生数据缓存在列表中,实现增删改查操作
3.最终结果存储在文件中,并能从文件中读入数据到列表中,实现数据维护
#coding=utf8
def readfile(mfn):
'''
以“只读”⽅式打开⽂件,读取文件所有行(直到结束符 EOF)
:param mfn: 文件路经与文件名
:return: 返回列表数据类型
'''
fp=open(mfn,'r',encoding ='utf-8')
wls = fp.readlines() #readlines把文本文件按行分割,并产生一个以每一行文本为一个元素的列表
fp.close()
return wls
def writefile(mfn,words):
'''
以“只写”⽅式打开⽂件,如有旧文件则替换
:param mfn: 文件路经与文件名
:param words: 字符串序列
:return: 无返回值
'''
fp = open(mfn, 'w',encoding ='utf-8')
fp.writelines(words)
fp.close()
def appendfile(mfn,str):
'''
以“只写”⽅式打开⽂件,文件指针指向文件尾,便于添加操作
:param mfn: 文件路经与文件名
:param str: 字符串序列
:return: 无返回值
'''
fp = open(mfn, 'a')
fp.writelines(str)
fp.close()
#coding=utf-8
def add_stu(student_list):
print('*********添加学员**********')
name = input('请输入学员姓名:')
age = input('请输入学员的年龄:')
sex = input('请输入学员性别(男/女):')
phone = input('请输入手机号:')
student = {'name':name,'age':age,'sex':sex,'phone':phone}
student_list.append(student)
def query_stu(student_list,type):
print('*************%s学员**************'%type)
print('1.查询所有学员')
print('2.输入学员姓名查询 ')
num = int(input('选择操作:'))
if num == 1:
for x in range(0, len(student_list)):
student = student_list[x]
name = student['name']
age = student['age']
sex = student['sex']
phone = student['phone']
print('序号:%s 姓名:%s 年龄:%s 性别:%s 手机号:%s' % (x, name,age,sex,phone))
else:
name = input('请输入学员姓名:')
while 1:
rs = False
for student in student_list:
if student['name'] == name:
index = student_list.index(student,0,len(student_list))
print('序号:%s 姓名:%s 年龄:%s 性别:%s 手机号:%s' % (index,student_list[index]['name'],student_list[index][
'age'],student_list[index]['sex'],student_list[index]['phone']))
rs = True
if rs == False:
name = input('未找到学员,请重输:')
else:
break
def select_num(student_list,type):
index = input('请选择要%s的学员序号:'%type)
index = int(index)
while index not in range(0, len(student_list)):
index = int(input('选择的学员不存在,请重选:'))
#返回选择的序号
return index
def alter_stu(student_list):
if len(student_list) == 0:
print('没有学员信息,无法进行修改操作!')
#强制结束函数的执行,return下面的代码都不会再执行
return
query_stu(student_list,'修改')
index = int(select_num(student_list,'修改'))
student = student_list[index]
student['name'] = input('请输入修改后的姓名(%s):'%student['name'])
student['age'] = input('请输入修改后的年龄(%s):'%student['age'])
student['sex'] = input('请输入修改后的性别(%s):'%student['sex'])
student['phone'] = input('请输入修改后的手机号(%s):'%student['phone'])
print('修改学员成功')
def dele_stu(student_list ):
print('1.通过序号删除学员')
print('2.删除全部学员')
print('3.根据学员姓名删除')
num = input('请选择操作:')
num = int(num)
while num not in range(1, 4):
num = int(input('所输选项不存在,请重输:'))
if num == 1:
query_stu(student_list,'删除')
index = select_num(student_list,'删除')
rs = input('是否真的删除(y/n):')
if rs == 'y':
student_list.pop(index)
print('删除成功')
else:
print('删除数据操作已取消!')
elif num == 2:
rs = input('是否真的删除(y/n):')
if rs == 'y':
student_list.clear()
print('删除成功')
else:
print('删除数据操作已取消!')
else:
name = input('请输入想要删除学员的姓名:')
rs = input('是否真的删除(y/n):')
if rs == 'y':
while 1:
# 创建一个空列表存放不符合情况的信息
list = []
for student in student_list:
# 判断姓名是否存在列表中
if student['name'] != name:
# 取出不符合情况的学员的索引
index = student_list.index(student)
# 将不符合情况的学员添加到list[]
list.append(student_list[index])
# 将学员列表总长度与list的长度比较,
if len(student_list) == len(list):
# 若相等,则没有符合的姓名
name = input('序号不存在,请重新输入:')
else:
# 若不相等,说明有符合情况的,则清除大列表,
student_list.clear()
# 再把list中所有不符合的学员添加到大列表中
for dict in list:
student_list.append(dict)
break
print('删除成功!')
else:
print('删除数据操作已取消!')
#coding=utf-8
from stu_man import *
from file_tools import *
student_list = [] #声明一个列表,存放学员字典
while 1:
print('****************学员管理系统*****************')
print('*****************1.添加学员*****************')
print('*****************2.修改学员*****************')
print('*****************3.查询学员*****************')
print('*****************4.删除学员*****************')
print('*****************5.写入文件*****************')
print('*****************6.读出文件*****************')
print('*****************0.退出程序*****************')
num = input('请选择你的操作:')
num = int(num)
while num not in range(0,7):
num =int(input('您选择的选项不存在,请重选:'))
if num == 1:
#添加学员
add_stu(student_list)
elif num == 2:
#修改学员
alter_stu(student_list)
elif num == 3:
#查询学员
query_stu(student_list,'查询')
elif num == 4:
#删除学员
dele_stu(student_list)
elif num == 5:
filename = "word.txt"
i=0;
for student in student_list:
if i==0:
writefile(filename, str(student))
if len(student_list) > 1:
appendfile(filename, '*')
else:
appendfile(filename, str(student))
if i != len(student_list) - 1:
appendfile(filename, '*')
i=i+1
print("保存成功")
elif num == 6:
filename = "word.txt"
fl = [];
fl = readfile(filename)
student_temp = []
student_temp = fl[0].split('*')
student_list = []
for student in student_temp:
student = student.replace("'", '"')
print(student)
student_list.append(eval(student))
print(student_list)
else:
print('退出程序')
break
博文最后更新时间: