Python 学生信息管理系统:面向对象编程实践
Python 学生信息管理系统:面向对象编程实践
本项目使用 Python 面向对象编程实现了一个简单的学生信息管理系统,涵盖添加、修改、删除、查找、浏览等基本功能,并通过文件存储实现学生数据的持久化。
1. 定义学生类
class Student:
def __init__(self, id, name, classname, phone, address, dorm):
self.id = id
self.name = name
self.classname = classname
self.phone = phone
self.address = address
self.dorm = dorm
Student 类代表一个学生,包含学号 (id)、姓名 (name)、班级 (classname)、电话 (phone)、家庭住址 (address) 和宿舍号 (dorm) 等属性。
2. 定义管理类
class Manage:
def __init__(self):
self.filename = 'students.txt' # 存储学生信息的文件名
self.students = [] # 学生列表
# 从文件中加载学生信息到列表中
def load_data(self):
try:
with open(self.filename, 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
if line:
id, name, classname, phone, address, dorm = line.split(',')
student = Student(id, name, classname, phone, address, dorm)
self.students.append(student)
except FileNotFoundError:
pass
# 将学生列表中的信息保存到文件中
def save_data(self):
with open(self.filename, 'w', encoding='utf-8') as f:
for student in self.students:
line = '{},{},{},{},{},{}
'.format(student.id, student.name, student.classname, student.phone, student.address, student.dorm)
f.write(line)
# 添加学生信息
def add_student(self):
id = input('请输入学号:')
name = input('请输入姓名:')
classname = input('请输入班级:')
phone = input('请输入电话:')
address = input('请输入家庭住址:')
dorm = input('请输入宿舍号:')
student = Student(id, name, classname, phone, address, dorm)
self.students.append(student)
self.save_data()
print('添加成功!')
# 修改学生信息
def modify_student(self):
id = input('请输入要修改信息的学生学号:')
for student in self.students:
if student.id == id:
print('学号 姓名 班级 电话 家庭住址 宿舍号')
print('{} {} {} {} {} {}'.format(student.id, student.name, student.classname, student.phone, student.address, student.dorm))
choice = input('请选择要修改的信息(1-班级 2-电话 3-家庭住址 4-宿舍号 0-取消):')
if choice == '1':
classname = input('请输入新的班级:')
student.classname = classname
self.save_data()
print('修改成功!')
elif choice == '2':
phone = input('请输入新的电话:')
student.phone = phone
self.save_data()
print('修改成功!')
elif choice == '3':
address = input('请输入新的家庭住址:')
student.address = address
self.save_data()
print('修改成功!')
elif choice == '4':
dorm = input('请输入新的宿舍号:')
student.dorm = dorm
self.save_data()
print('修改成功!')
elif choice == '0':
print('取消修改!')
else:
print('输入有误!')
return
print('没有找到该学生!')
# 删除学生信息
def delete_student(self):
id_or_name = input('请输入要删除信息的学生学号或姓名:')
for student in self.students:
if student.id == id_or_name or student.name == id_or_name:
self.students.remove(student)
self.save_data()
print('删除成功!')
return
print('没有找到该学生!')
# 查找学生信息
def search_student(self):
id_or_name = input('请输入要查找信息的学生学号或姓名:')
for student in self.students:
if student.id == id_or_name or student.name == id_or_name:
print('学号 姓名 班级 电话 家庭住址 宿舍号')
print('{} {} {} {} {} {}'.format(student.id, student.name, student.classname, student.phone, student.address, student.dorm))
return
print('没有找到该学生!')
# 浏览所有学生信息
def show_students(self):
if not self.students:
print('没有学生信息')
else:
print('学号 姓名 班级 电话 家庭住址 宿舍号')
for student in self.students:
print('{} {} {} {} {} {}'.format(student.id, student.name, student.classname, student.phone, student.address, student.dorm))
# 启动管理系统
def start(self):
self.load_data()
while True:
print('===== 学生信息管理系统 =====' )
print('1. 录入学生信息')
print('2. 修改学生信息')
print('3. 删除学生信息')
print('4. 查找学生信息')
print('5. 浏览所有学生信息')
print('6. 退出系统')
choice = input('请选择功能(1-6):')
if choice == '1':
self.add_student()
elif choice == '2':
self.modify_student()
elif choice == '3':
self.delete_student()
elif choice == '4':
self.search_student()
elif choice == '5':
self.show_students()
elif choice == '6':
confirm = input('确定退出系统吗?(y/n):')
if confirm == 'y':
print('谢谢使用!')
break
else:
print('输入有误!')
if __name__ == '__main__':
manage = Manage()
manage.start()
Manage 类负责管理学生信息,包含文件名 (filename)、学生列表 (students) 和一系列方法,例如加载数据 (load_data)、保存数据 (save_data)、添加学生 (add_student)、修改学生 (modify_student)、删除学生 (delete_student)、查找学生 (search_student)、浏览学生 (show_students) 等。
3. 系统启动
在 if __name__ == '__main__': 代码块中,实例化 Manage 类并调用 start() 方法启动学生信息管理系统。
4. 运行结果
运行程序后,系统会显示菜单,用户可以选择相应的功能进行操作。例如,选择“1. 录入学生信息”后,系统会提示用户输入学生信息,并将信息保存到文件中。
5. 面向对象编程的优势
本项目使用面向对象编程的思想,将学生信息管理系统分解成不同的类和对象,每个类负责特定的功能,使代码结构清晰、易于理解和维护。
- 封装性: 将数据和行为封装在类中,提高代码的安全性和可维护性。
- 抽象性: 使用抽象类和接口定义公共行为,提高代码的可扩展性和可重用性。
- 继承性: 通过继承可以创建新的类,复用父类的属性和方法,提高代码的开发效率。
- 多态性: 通过多态可以实现代码的灵活性和可扩展性。
本项目是一个简单的学生信息管理系统的示例,通过学习和实践,可以更好地理解面向对象编程的思想和应用,并将其应用到实际项目中。
原文地址: https://www.cveoy.top/t/topic/ozTd 著作权归作者所有。请勿转载和采集!