小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
前言
大家好,今天将手把手给大家分享一个简单的学员信息管理系统,并将信息保存到文件中。
准备
开发环境:Windows 7
开发工具:pycharm
开发语言:python3.7
思路及功能分析
- 创建一个学生类Student,并定义初始化__init__方法,学生信息包含姓名,年龄,性别,数学成绩,python成绩,学号属性
- 定义一个初始化学员信息的方法init_student,即默认添加一些测试数据。
- 定义一个读取文件的方法,用于将文件中的学员信息读取出来并保存的类的属性students中,用于后续操作只用
- 定义一个写文件的方法,用于将类属性students中的学员信息重新写入到文件中
- 定义一个检查学号是否存在的方法,用于在操作学员时检查
- 定义添加学员信息的方法,首先判断学号是否已经存在,如果存在则一直提示重新输入,直到学号不存在时将信息保存到类属性students中并调用写文件的方法将数据写入文件
- 定义删除,更新,查询和显示所有学员信息的方法
- 在主函数中创建学生对象并调用初始化方法添加默认数据
- 循环打印提示信息,接收用户输入并执行对应操作
代码实现
import datetime
class Student():
'''
清华大学
'''
students = []
def __init__(self,name='',age='',sex='',math=0,python=0,num =''):
self.name = name
self.age = age
self.sex = sex
self.math = math
self.python = python
self.num = num
def __str__(self):
msg = "学生信息:name=%s, age=%s, sex=%s, math=%s, python=%s, num=%s" % (self.name,self.age,self.sex,self.math,self.python,self.num)
return msg
#初始化学员信息并保存到文件中,即添加几条默认数据
def init_students(self):
array = [
['小米',18,'女 ',78,76,180815],
['小红',19,'女',87,68,180817],
['小明',18,'男',98,89,180801],
['小花',19,'女',67,68,180805],
['小霞',17,'女',76,87,180809]]
with open('write_data.txt','w', encoding='utf-8') as f:
for row in array:
f.write('%s,%s,%s,%s,%s,%s'%(row[0],row[1],row[2],row[3],row[4],row[5]))
f.write('\n')
self.read_students_from_file()
def read_students_from_file(self):
with open('write_data.txt','r', encoding='utf-8') as f:
for s in f:
stu = s.split(',')
self.students.append(Student(stu[0],stu[1],stu[2],stu[3],stu[4],stu[5]))
def write_students_to_file(self):
with open('write_data.txt','w', encoding='utf-8') as f:
for stu in self.students:
f.write('%s,%s,%s,%s,%s,%s'%(stu.name,stu.age,stu.sex,stu.math,stu.python,stu.num))
f.write('\n')
def check_stuno(self,num):
no_exists = False
for stu in self.students:
if num == stu.num:
no_exists = True
break
return no_exists
def add_student(self):
num = input("请输入要添加的学员学号:")
while self.check_stuno(num):
num = input("该学号已存在,请重新输入:")
name = input("请输入学生姓名:")
age = input("请输入学生年龄:")
sex = input("请输入学生性别:")
math = input("请输入学生数学成绩:")
python = input("请输入学生python成绩:")
stu = Student(name,age,sex,math,python,num)
self.students.append(stu)
self.write_students_to_file()
def remove_student(self):
num = input("请输入要删除的学员学号:")
for stu in self.students:
if stu.num == num:
self.students.remove(stu)
print('学员%s已被删除'%num)
self.write_students_to_file()
break
else:
print('学员不存在')
def update_student(self):
num = input("请输入要修改的学员学号:")
for stu in self.students:
if num == stu.num:
stu.name = input("请输入学生姓名:")
stu.age = input("请输入学生年龄:")
stu.sex = input("请输入学生性别:")
stu.math = input("请输入学生数学成绩:")
stu.python = input("请输入学生python成绩:")
self.students[self.students.index(stu)] = stu
self.write_students_to_file()
print('修改成功')
break
else:
print("学员不存在")
def select_student(self):
num = input("请输入要查询的学员学号:")
for stu in self.students:
if num == stu.num:
print("查询到的学生信息:",stu)
break
else:
print("学员不存在")
def print_student_info(self):
for stu in self.students:
print(stu)
if __name__ == "__main__":
day = datetime.datetime.now()
print("---------------------------------------------")
print("当前的时间:",day)
print("---------------------------------------------")
print("欢迎登录学生管理系统")
print("***************************")
stu = Student()
stu.init_students()#添加默认数据
while True:
step = input(
"""====================================
1.添加学生信息
2.删除学生信息
3.修改学生信息
4.查询学生信息
5.显示所有学员信息
6.退出系统
====================================
请选择操作:""")
step = int(step)
if step == 1:
stu.add_student()
stu.print_student_info()
elif step == 2:
stu.remove_student()
stu.print_student_info()
elif step == 3:
stu.update_student()
stu.print_student_info()
elif step == 4:
stu.select_student()
elif step == 5:
stu.print_student_info()
elif step == 6:
print('退出系统')
break
else:
print('指令有误,请重新输入')