实现功能
- 添加学生
- 删除学生
- 修改学生
- 查询学生
- 显示所有学生信息
- 菜单
- 文件读取
- 文件写入
简述
在之前通过类和列表设计学生管理系统的基础上添加了文件读写的功能,这样一来我们就不用再去烦恼数据无法保存的问题了,代码如下。
运行截图
代码
#列表
stuList = []
#类定义
class Student:
#学生基本属性 - 以下做初始化
id = "1"
name = "张三"
sex = "男"
age = 19
depart = "计算机"
classname = "软件2001"
def __init__(self, id, name, sex, age, depart,classname):
self.id = id
self.name = name
self.sex = sex
self.age = age
self.depart = depart
self.classname = classname
#对象复制
def copy(self,aim):
self.id = aim.id
self.name = aim.name
self.sex = aim.sex
self.age = aim.age
self.depart = aim.depart
self.classname = aim.classname
#重写方法,直接打印对应的对象信息
def __str__(self):
return '%s %s %s %s %s %s' % (self.id, self.name,self.sex,str(self.age),self.depart,self.classname)
def toString(self):
return '%s %s %s %s %s %s' % (self.id, self.name,self.sex,str(self.age),self.depart,self.classname)
# 操作
#添加学生
def addStu():
print("请输入要添加的学生信息")
id = input("学号:")
name = input("姓名:")
sex = input("性别:")
age = input("年龄:")
depart = input("院系:")
classname = input("专业:")
student = Student(id,name,sex,age,depart,classname) #对象
stuList.append(student)
print("录入成功!")
#删除学生
def delStu():
print("请输入要查询的学生编号")
id = input("学号:")
index = seaStu(id)
if index == None:
print("未查找到相关数据!")
return
stuList.remove(index)
print("删除成功!")
#查找学生 - 根据id(该方法对查询模块进行封装和简化,便于调用)
def seaStu(id):
for student in stuList:
if student.id == id:
return student
else:
return None
#查找学生 - 调用方法
def seaStuById(id):
for student in stuList:
if student.id == id:
print(student)
return
print("未查找到!")
#修改学生 - 根据id
def modStu():
print("请输入要查询的学生编号")
id = input("学号:")
index = seaStu(id)
if index == None:
print("未查找到相关数据!")
return
print("请输入要修改的学生信息")
id = input("学号:")
name = input("姓名:")
sex = input("性别:")
age = input("年龄:")
depart = input("院系:")
classname = input("专业:")
student = Student(id,name,sex,age,depart,classname) #对象
index.copy(student)
print("修改成功!")
#打印学生
def showStu():
print("学号 姓名 性别 年龄 院系 专业")
for student in stuList:
print(student)
#菜单
def menu():
while True:
print("---------------------------")
print(" 1:添加学生")
print(" 2:删除学生")
print(" 3:修改学生")
print(" 4:查询学生")
print(" 5:显示所有学生")
print(" 6:退出系统")
print("---------------------------")
x = input("请输入你的选择:")
# 添加学生
if x == '1':
addStu()
# 删除学生
elif x == '2':
delStu()
# 修改学生
elif x == '3':
modStu()
# 查询学生
elif x == '4':
print("请输入要查询的学生编号")
id = input("学号:")
seaStuById(id)
# 显示所有学生
elif x == '5':
showStu()
# 退出学生管理系统,返回上一层登录界面系统
elif x == '6':
print("成功退出学生管理系统!")
break
else:
print("输入错误,请重新输入")
save() # 及时写入文件
import os
os.system("cls")
# 文件读写
def read():
file = open("students.txt", "r",encoding='UTF-8')
if file == OSError:
print("读取失败")
exit(0)
lines = file.readlines()
i = 0
#构建学生对象添加到列表中
for line in lines:
list = line.strip().split() #采用默认分隔符分割文件
student = Student(list[0],list[1],list[2],list[3],list[4],list[5])
stuList.append(student)
print("读取完成!")
# 文件读写
def save():
file = open("students.txt", "w+",encoding='UTF-8')
if file == OSError:
print("读取失败")
exit(0)
str = ""
#将程序现有的数据保存到文件中
for list in stuList:
str += list.toString()
str += "\n"
file.write(str)
print("*** 写入完成! ***")
# 主函数
read() #首先读取数据文件
menu()
总结
经过以上3个版本的迭代,我们总算拿到了一份可以真正帮助我们有效管理数据且具有现实意义的程序。但是,对于现如今的开发水平而言,该程序仍然处于初学者水平,接下来我们考虑使用数据库编程,为管理系统添加数据库,以期得到更好地数据管理水平和效果。