计算机课程设计---学生管理系统(Python实现)
·
1.需求分析
1.使用Python中的字符串、列表、字典、文件等知识点来完成一个学生管理系统.
2.针对学生,该系统具有添加、修改、删除、查询所有学生、查询某个学生、保存信息、退出系统等操作.
2.角色分析
1.学生管理系统-----(studentcms.py)
2.学生-----------------(student.py)
注意事项:
① 为了方便维护代码,一般一个角色一个程序文件
② 项目要有主程序入口,习惯为(main.py)
3.## 学生类文件(student.py)
对于学生类,属性有姓名、年龄、性别、联系方式、描述信息等.
步骤:需要完成输出学生对象的功能:
在文件中定义一个学生类;
在类中使用__init__()初始化学生的属性;
在类中使用__str__()方法输出对象信息。
#定义学生类
class Student:
#定义魔法方法,初始化学生类
def __init__(self):
self.name = name
self.gender = gender
self.age = age
self.phone = phone
self.desc = desc
#定义魔法方法,打印学生信息
def __str__(self):
'''
该魔法方法用于打印学生信息
'''
return f'姓名: {self.name}, 性别: {self.gender}, 年龄: {self.age}, 手机号: {self.phone}, 描述信息: {self.desc}'
#测试
if __name__== '__main__':
s = Student('张三', '男', 19, '131234567', '校园歌手')
print(s)
4.## 学生管理系统文件(studentcms.py)
需求:
创建学生管理系统类
存储数据的形式:列表存储学员对象
显示界面
系统功能
添加学员信息
删除学员信息
修改学员信息
查询学员信息
显示所有学员信息
保存学员信息
退出系统
from student import Student
# 1. 创建学生管理系统类.
class StudentCMS(object):
# 2. 通过魔法方法init, 初始化属性信息.
def __init__(self):
# 创建一个空列表, 用于存储学生信息.
self.stu_list = [] # [学生对象, 学生对象, 学生对象] -> [Student(...), Student(...)...]
# 3. 定义函数, 实现打印 管理系统的界面.
def show_view(self):
print('*' * 23)
print('学生管理系统V2.0版')
print('\t1.添加学生信息')
print('\t2.删除学生信息')
print('\t3.修改学生信息')
print('\t4.查询单个学生信息')
print('\t5.查询所有学生信息')
print('\t6.保存学生信息')
print('\t0.退出系统')
print('*' * 23)
# 4. 定义函数, 实现添加学生信息功能.
def add_student(self):
#4.1提示用户输入学生信息,并接收
name = input('请输入学生姓名')
gender = input('请输入学生性别:')
age = int(input('请输入学生年龄:'))
phone = input('请输入学生电话:')
desc = input('请输入学生描述信息:')
#4.2把上述的信息封装成学生对象
stu = Student(name,gender,age,phone,desc)
#4.3把学生信息添加到列表中
self.stu_list.append(stu)
#4.4提示
print(f'添加{name}学生信息成功\n')
# 5. 定义函数, 实现删除学生信息功能.
def del_student(self):
#5.1提示用户需要删除的学生姓名
del_name = input('请输入要删除的学生姓名:')
#5.2遍历列别,找到要删除的学生,并删除
for stu in self.stu_list:
#5.3如果当前的学生行ing和要删除的学生姓名相同,就删除该学生信息
if stu.name == del_name:
self.stu_list.remove(stu)
print(f'学员{del_name}信息删除成功\n')
break
else:#走到这里说明没有找到该信息.
print('查无此人,请检查后重新删除!\n')
# 6. 定义函数, 实现修改学生信息功能.
def update_student(self):
#6.1 提示用户输入要修改的学生的姓名,并接收
upd_name = input('请输入要修改的学生姓名:')
#6.2遍历列表,找到要修改的学生
for stu in self.stu_list:
#6.3 如果能找到
if stu.name==upd_name:
# 提示用户录入该学生的信息
stu.gender = input('请录入修改后的性别: ')
stu.age = int(input('请录入修改后的年龄: '))
stu.phone = input('请录入修改后的电话: ')
stu.desc = input('请录入修改后的描述信息: ')
print(f'学员 {upd_name} 信息修改成功!\n')
break
else:#说明没有找到
print('查无此人,请检查后重新输入')
# 7. 定义函数, 实现查询单个学生信息功能.
def search_one_student(self):
#7.1 提示用户输入要查找的学生的姓名, 并接收.
search_name = input('请输入要查找的学生姓名:')
# 7.2 遍历列表, 找到要查找的学生, 并打印信息.
for stu in self.stu_list:
# 7.3 如果当前学生的姓名 和 要查找的学生相同, 就打印该学生信息
if stu.name == search_name:
print(stu, end='\n\n')
break
else:
# 走到这里, 说明没有走break, 即: 没有找到这个学生.
print('查无此人, 请检查后重新操作!\n')
# 8. 定义函数, 实现查询所有学生信息功能.
def search_all_student(self):
#8.1 判断列表长度是否为空,若为空,则提示暂无学生信息,请添加后查询
if len(self.stu_list)==0:
print('暂无学生信息,请添加后查询')
else:
#8.2长度不为零,遍历列表,打印所有学生信息
for stu in self.stu_list:
print(stu)
print()
# 9. 定义函数, 实现保存学生信息功能.
def save_student(self):
#9.1关联学生信息文件
with open('data.txt','w',encoding = 'utf-8') as dest_f:
#9.2 把 [学生对象, 学生对象...] -> [字典, 字典...]
stu_dict = [stu.__dict__ for stu in self.stu_list]
#把字典列表,记录到文件中
dest_f.write(str(stu_dict))
# 10. 定义函数, 实现加载学生信息.
def load_student(self):
#10.1加入异常处理,可能文件不存在
try:
#10.2 关联学生信息文件
with open(data.txt,'r','encoding='utf-8'') as src_f:
#10.3一次性读取所有数据
stu_data = src_f.read()
#10.4将上述字符串转换成列表
stu_list = eval(stu_data)
# 10.5 判断如果列表为空, 就赋予空列表.
if len(stu_list) == 0:
stu_list = []
# 10.6 把stu_list(列表套字典) 转成 [学生对象, 学生对象...], 并赋值给 self.stu_list
self.stu_list = [Student(**stu_dict) for stu_dict in stu_list]
except:
#走这里说明文件不存在,创建
with open('data.txt,'w','encoding='utf-8') as src_f:
pass
# 11.定义函数,把上述的所有业务逻辑泡桐
def start(self):
# 11.1 加载学生信息.
self.load_student()
while True:
#打印学生管理系统的页面
self.show_view()
#提示用户录入要操作的编号,并接收.
input_num = import('请输入你要操作的编号:')
if input_num =='1':
# 添加学生信息
print('添加学生信息\n')
self.add_student()
elif input_num == '2':
# 删除学生信息
print('删除学生信息\n')
self.del_student()
elif input_num == '3':
# 修改学生信息
print('修改学生信息\n')
self.update_student()
elif input_num == '4':
# 查询单个学生信息
print('查询单个学生信息\n')
self.search_one_student()
elif input_num == '5':
# 查询所有学生信息
print('查询所有学生信息\n')
self.search_all_student()
elif input_num == '6':
# 保存学生信息
print('保存学生信息\n')
self.save_student()
elif input_num =='0':
#退出系统,做二次校验
result = input('您确定要退出吗?(Y/N)')
if result.lower() =='y':
print('谢谢您的使用,期待下次再会!')
break
else:
#输入错误
print('录入有误,请重新录入\n')
#在main中测试.
if __name__ == '__main__':
# 创建学生管理系统对象.
cms = StudentCMS()
# 调用学生管理系统对象的start()函数, 启动学生管理系统.
cms.start()
5.## 程序主入口文件(main.py)
from studentcms import StudentCMS
#程序主入口
if __name__ == '__main__':
# 1. 创建学生管理系统对象.
stu_cms = StudentCMS()
# 2. 启动程序即可.
stu_cms.start()
更多推荐


所有评论(0)