学生信息管理系统
一、程序功能
1.创建一个可进可退的多级学生信息管理系统
2.思维导图
二、学生实体
1.思维导图
2.关系模式
学生(学号, 姓名, 性别, 年龄, 班级, 专业, 系部, 电话)
3.学生文件
先将学生信息保存到文本文件里,用空格来隔开每个字段
三、读取学生文件
1.用元组的列表保存多个学生信息
创建“用元组的列表保存多个学生信息.py”
'''
用元组列表保存多个学生信息
'''
# 定义6个学生元组
student1 = ('2021001', '李晓红', '女', '19', '软件技术', '人工智能与大数据学院', '15945456780')
student2 = ('2021002', '王晓刚', '男', '18', '软件技术', '人工智能与大数据学院', '13890904567')
student3 = ('2021003', '唐雨涵', '女', '19', '软件技术', '人工智能与大数据学院', '18878789023')
student4 = ('2021101', '张三丰', '男', '18', '大数据技术', '人工智能与大数据学院', '15945456780')
student5 = ('2021102', '肖雨林', '男', '18', '大数据技术', '人工智能与大数据学院', '18890904560')
student6 = ('2021103', '郑小翠', '女', '19', '大数据技术', '人工智能与大数据学院', '15890904567')
# 创建学生元组构建的列表
students = []
students.append(student1)
students.append(student2)
students.append(student3)
students.append(student4)
students.append(student5)
students.append(student6)
# 遍历学生列表
for student in students:
for i in range(len(student)):
print(student[i],end=' ')
print()
运行程,序查看结果
2.读取学生文件数据,保存到元组的列表里
首先产看学生文件位置
创建“读取学生文件,保存到元素的列表里.py”
'''
读取学生文件,保存到元组列表
'''
# 创建空学生列表
students = []
# 以只读方式打开文件
f = open('学生.txt')
# 以行的方式遍历文件对象
for line in f:
# 去掉每一行的换行符
line = line.replace('\n', '')
# 以空格作为分隔符拆分每一行
student = tuple(line.split(' '))
#将学生元组添加到学生列表
students.append(student)
# 格式化输出学生列表
for student in students:
for i in range(len(student)):
print(student[i],end=' ')
print()
运行程序,查看结果
3.学生操作遇到问题
将文件的编码改为上图所示,就不会出现文件操作问题。读取文件就不会出现报错现象。要读取文件记得将创建的程序与文件放在同一个文件夹内。
四、对学生元组的列表进行增删改查操作
1.增加学生记录
'''
添加学生元组到列表
'''
# 创建空学生列表
students = []
# 以只读方式打开文件
f = open('学生.txt')
# 以行的方式遍历文件对象
for line in f:
# 去掉每一行的换行符
line = line.replace('\n', '')
# 以空格作为分隔符拆分每一行
student = tuple(line.split(' '))
#将学生元组添加到学生列表
students.append(student)
# 添加一个学生元组
new_student = ('2121004', '吴文燕', '女', '18', '2021级软件4班', '软件技术', '人工智能与大数据学院', '12345678901')
students.append(new_student)
# 输出更新之后的学生元组列表
for student in students:
for i in range(len(student)):
print(student[i], end=' ')
print()
运行程序,查看结果
2、查询学生记录
(1)按学号查询学生记录
'''
按学号查询学生记录
'''
# 创建空学生列表
students = []
# 以只读方式打开文件
f = open('学生.txt')
# 以行的方式遍历文件对象
for line in f:
# 去掉每一行的换行符
line = line.replace('\n', '')
# 以空格作为分隔符拆分每一行
student = tuple(line.split(' '))
#将学生元组添加到学生列表
students.append(student)
# 用户从键盘输入学号
id = input('请输入查找学生的学号:')
found = False
for student in students:
if (student[0] == id ):
found = True
for i in range(len(student)):
print(student[i], end=' ')
break
if not found:
print('温馨提示:查询的学生不存在!'.format(id))
运行程序,查看结果
(2).按姓名查询
'''
按姓名查询
'''
# 创建空学生列表
students = []
# 以只读方式打开文件
f = open('学生.txt')
# 以行的方式遍历文件对象
for line in f:
# 去掉每一行的换行符
line = line.replace('\n', '')
# 以空格作为分隔符拆分每一行
student = tuple(line.split(' '))
#将学生元组添加到学生列表
students.append(student)
# 用户从键盘输入学号
name = input('请输入查找学生的姓名:')
found = False
for student in students:
if (student[1] == name ):
found = True
for i in range(len(student)):
print(student[i],end= ' ')
if not found:
print('温馨提示:查询的学生不存在!'.format(name))
运行程序,查看结果
3.修改学生记录
'''
修改学生记录
'''
# 创建空学生列表
students = []
# 以只读方式打开文件
f = open('学生.txt')
# 以行的方式遍历文件对象
for line in f:
# 去掉每一行的换行符
line = line.replace('\n', '')
# 以空格作为分隔符拆分每一行
student = tuple(line.split(' '))
#将学生元组添加到学生列表
students.append(student)
# 输入待改学生的学号
id = input('输入待改学生的学号:')
found = False
for student in students:
if (student[0] == id):
found = True
# 将学生元组转成列表
student = list(student)
new_age = input('输入修改后的年龄:')
new_telephone = input('输入新的号码:')
# 修改学生元组指定属性的值
student[3] = new_age
student[7] = new_telephone
# 列表还原成元组
student = tuple(student)
print('恭喜:学生记录修改成功!')
for i in range(len(student)):
print(student[i], end=' ')
break
if not found:
print('学号为{}的学生没找到!'.format(id))
运行程序,查看结果
4.删除学生记录
'''
删除学生记录
'''
# 创建空学生列表
students = []
# 以只读方式打开文件
f = open('学生.txt')
# 以行的方式遍历文件对象
for line in f:
# 去掉每一行的换行符
line = line.replace('\n', '')
# 以空格作为分隔符拆分每一行
student = tuple(line.split(' '))
#将学生元组添加到学生列表
students.append(student)
# 输入待删学生的学号
id = input('输入待删学生的学号:')
found = False
for student in students:
if (student[0] == id):
found = True
# 按值删除列表元素
students.remove(student)
print('恭喜:学生记录删除成功!')
break
if not found:
print('学号为{}的学生没找到!'.format(id))
else:
for student in students:
for i in range(len(student)):
print(student[i], end=' ')
print()
运行程序,查看结果
五、将学生元组的列表写入文件
编写“将学生元组的列表写入文件.py”
'''
将学生元组的列表写入文件
'''
# 定义6个学生元组
student1 = ('2021001', '李晓红', '女', '90', '软件技术', '人工智能与大数据学院', '15945456780')
student2 = ('2021002', '王晓刚', '男', '18', '软件技术', '人工智能与大数据学院', '13890904567')
student3 = ('2021003', '唐雨涵', '女', '19', '软件技术', '人工智能与大数据学院', '18878789023')
student4 = ('2021101', '张三丰', '男', '18', '大数据技术', '人工智能与大数据学院', '15945456780')
student5 = ('2021102', '肖雨林', '男', '18', '大数据技术', '人工智能与大数据学院', '18890904560')
student6 = ('2021103', '郑小翠', '女', '19', '大数据技术', '人工智能与大数据学院', '15890904567')
# 创建学生元组构建的列表
students = []
students.append(student1)
students.append(student2)
students.append(student3)
students.append(student4)
students.append(student5)
students.append(student6)
# 输出学生列表
print(students)
# 创建可写的文件
f = open('学生.txt', 'w')
for student in students:
student_line = ' '.join(student) + '\n'
f.write(student_line)
# 关闭文件
f.close()
print('学生元组的列表写入文件成功!')
运行程序,查看结果
然后我们刷新一下学生文件有没有写入成功。
成功写入!
六、构建学生信息管理多级菜单系统
构建完整的多级菜单系统
编写程序 - 学生信息管理.py
把增、删、改、查等所有功能全部完善,并完整运行。
def add_student():
students = []
f = open('学生.txt')
for line in f:
line = line.replace('\n', '')
student = tuple(line.split(' '))
students.append(student)
id = input('学号:')
name = input('姓名:')
gender = input('性别:')
age = input('年龄:')
grade = input('班级:')
major = input('专业:')
department = input('系部:')
telephone = input('电话:')
students.append([id, name, gender, age, grade, major, department, telephone])
f = open('学生.txt', 'w')
for i in range(len(students)):
student = ' '. join(students[i]) + '\n'
f.write(student)
f.close()
print('\n恭喜,学生记录添加成功!\n')
def query_student():
while True:
print('查询学生记录')
print('=' * 12)
print('1.按学号查询学生记录')
print('2.按姓名查询学生记录')
print('3.查询全部学生记录')
print('4.返回上级菜单')
print('=' * 12)
mc3 = int(input('输入菜单号:'))
if mc3 == 1:
students = []
f = open('学生.txt')
for line in f:
line = line.replace('\n', '')
student = tuple(line.split(' '))
students.append(student)
id = input('请输入查找学生的学号:')
found = False
for student in students:
if (student[0] == id):
found = True
for i in range(len(student)):
print(student[i], end=' ')
break
if not found:
print('温馨提示:查询的学生不存在!'.format(id))
elif mc3 == 2:
students = []
f = open('学生.txt')
for line in f:
line = line.replace('\n', '')
student = tuple(line.split(' '))
students.append(student)
name = input('请输入查找学生的姓名:')
found = False
for student in students:
if (student[1] == name):
found = True
for i in range(len(student)):
print(student[i], end=' ')
if not found:
print('温馨提示:查询的学生不存在!'.format(name))
elif mc3 == 3:
students = []
f = open('学生.txt')
for line in f:
line = line.replace('\n', '')
student = tuple(line.split(' '))
students.append(student)
for student in students:
for i in range(len(student)):
print(student[i], end=' ')
print()
else:
break
def modify_student():
students = []
f = open('学生.txt')
for line in f:
line = line.replace('\n', '')
student = tuple(line.split(' '))
students.append(student)
id = input('输入待改学生的学号:')
found = False
for student in students:
if (student[0] == id):
found = True
student = list(student)
new_age = input('输入修改后的年龄:')
new_telephone = input('输入新的号码:')
student[3] = new_age
student[7] = new_telephone
student = tuple(student)
print('恭喜:学生记录修改成功!')
for i in range(len(student)):
print(student[i], end=' ')
break
if not found:
print('学号为{}的学生没找到!'.format(id))
f = open('学生.txt', 'w')
for i in range(len(students)):
student = ' '.join(students[i]) + '\n'
f.write(student)
f.close()
def delete_student():
students = []
f = open('学生.txt')
for line in f:
line = line.replace('\n', '')
student = tuple(line.split(' '))
students.append(student)
id = input('输入待删学生的学号:')
found = False
for student in students:
if (student[0] == id):
found = True
students.remove(student)
print('恭喜:学生记录删除成功!')
break
if not found:
print('学号为{}的学生没找到!'.format(id))
else:
for student in students:
for i in range(len(student)):
print(student[i], end=' ')
print()
f = open('学生.txt', 'w')
for i in range(len(students)):
student = ' '.join(students[i]) + '\n'
f.write(student)
f.close()
def login():
username = input('输入用户名:')
password = input('输入密码:')
if username == 'XT' and password == '2021':
while True:
print('\n学生管理系统')
print('=' * 13)
print('1.增加学生记录')
print('2.查询学生记录')
print('3.修改学生记录')
print('4.删除学生记录')
print('5.返回上级菜单')
print('=' * 13)
mc2 = int(input('输入菜单号:'))
if mc2 == 1:
add_student()
elif mc2 == 2:
query_student()
elif mc2 == 3:
modify_student()
elif mc2 == 4:
delete_student()
else:
break
else:
print('\n用户名或密码输入错误,请重新登录!\n')
# 主程序
while True:
print('用户登录')
print('=' * 8)
print('1.登录')
print('2.退出')
print('=' * 8)
mc1 = int(input('输入菜单号:'))
if mc1 == 1:
login()
elif mc1 == 2:
print('\n谢谢使用本程序!\n')
break
七、总结
对于这个学生管理系统还是有些难度的,而且写的时候你要仔细,不然很容易出错。按照自己擅长的方式写,方便后续的改错。
python说难不难说简单不简单,主要是大家1要坚持去做才行。