【一起python】使用python实现学生管理系统
文章目录
📝前言
🌠主函数man
def main():
"""
入口函数
"""
#通过控制台和用户进行交互
print('---------------------------------')
print(' 欢迎来到学生管理系统 ')
print('---------------------------------')
while True:
#通过 menu 函数调用load 即可
choice = menu()
if choice == '1':
#新增学生
insert()
elif choice == '2':
#显示所有学生
show()
elif choice == '3':
#查找学生
find()
elif choice == '4':
#删除学生
delete()
elif choice == '0':
#退出程序
result = exitprint()
else:
print('无效选择,请重试!')
if __name__ == "__main__":
main()
在 Python 中,每个脚本文件都有一个特殊的内置变量 name。当一个 Python 文件被直接运行时,name 的值会被设置为 “main”。但是如果这个 Python 文件被当作模块导入到其他程序中,那么 name 的值就会是模块名称。
🌉菜单menu
def menu():
print(' 1. 新增学生')
print(' 2. 显示学生')
print(' 3. 查找学生')
print(' 4. 删除学生')
print(' 0. 退出程序')
choice = input(' 请输入你的选择:')
return choice
🌉添加学生信息
def insert():
print('[新增学生] 开始!')
studentId = input('请输入学生的学号:')
name = input('请输入学生的姓名:')
gender = input('请输入学生的性别:')
if gender not in ('man', 'girl'):
print('性别输入的内容不符合要求, 新增失败!')
return
className = input('请输入学生的班级:')
# 使用一个字典把上述的信息给聚合起来.
student = {
'studentId': studentId,
'name': name,
'gender': gender,
'className': className
}
global students
students.append(student)
# 增加保存操作
save()
print('[新增学生] 完毕!')
🌉展示目前学生信息
def show():
#遍历全局变量的这个列表,把每个学生的信息给打印出来
print('[显示学生] 开始!')
for s in students:
print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
print(f'[显示学生] 完毕!,共显示了 {len(students)} 条数据')
🌉查找学生
def find():
#根据学生姓名,来查找
print('[查找学生] 开始!')
name = input("请输入要查找的同学姓名:")
count = 0
for s in students:
if name == s['name']:
print(f'{s['student']}\t{s['name']}\t{s['gender']}\t{s['className']}')
count += 1
print(f'[查找学生] 结束! 共找到了{count}个匹配的同学!')
🌉删除同学信息
def delete():
print('[删除学生] 开始!')
studentId = input('请输入要删除的学生学号:')
for s in students:
if s['studentId'] == studentId:
print(f'删除{s['name']}同学的信息!')
students.remove(s)
save()
print('[删除学生] 结束!')
🌉退出程序
def exitprint():
print('''
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ 你真的要离开学生管理系统吗? ┃
┃ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
''')
confirm = input("输入 ‘yes’ 确认退出:")
if confirm.lower() == 'yes':
print('''
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ 学生管理系统即将关闭,再见! ┃
┃ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
''')
sys.exit() # 直接退出程序
else:
print("继续使用学生管理系统")
🌠python完整代码
# -*- coding: utf-8 -*-
import sys
#实现一个命令行版本的学生管理系统
import os.path
#使用这个全局变量,来管理所有的学生信息
# 这个列表的每一个元素都是一个"字典",每个字典就分别表示一个同学
students = []
def save():
"""
用于存档
"""
#此处的路径不是以 d: 开头的“绝对路径”,而是相对路径
# 此时这个写法的含义就是让 recode.txt 和当前 的 code66.py在同一个目录
with open('recode.txt','w',encoding='utf8') as f:
for s in students:
f.write(f'{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}')
print(f'[存档成功] 共存储了 {(len)(students)} 条记录!')
def load():
"""
用于读档
"""
# 如果存档文件不存在,则直接跳过读档流程
# 为了避免读方式打开文件的时候,文件不存在引起的异常
if not os.path.exists('recode.txt'):
return
# 读档的时候要保证先把旧的数据清理干净!
global students
students = []
with open('recode.txt','r',encoding='utf8') as f:
for line in f:
#针对这一行数据,按照 \t 进行切分操作
#切分之前,要去除末尾的换行\n
line = line.strip()#去除字符串两端的空白字符(空格、换行、制表符等)
tokens = line.split('\t')#处理后的字符串(line)按照制表符 \t 进行切分,生成一个字符串列表
# 1001 Alice Female ClassA
if len(tokens) != 4:
print(f'当前格式存在问题! line = {line}')
continue
student = {
'studentId': tokens[0],
'name': tokens[1],
'gender': tokens[2],
'className': tokens[3]
}
students.append(student)
print('f[读档成功] 共读取了 {len(students)} 条记录!')
def menu():
print(' 1. 新增学生')
print(' 2. 显示学生')
print(' 3. 查找学生')
print(' 4. 删除学生')
print(' 0. 退出程序')
choice = input(' 请输入你的选择:')
return choice
def insert():
print('[新增学生] 开始!')
studentId = input('请输入学生的学号:')
name = input('请输入学生的姓名:')
gender = input('请输入学生的性别:')
if gender not in ('man', 'girl'):
print('性别输入的内容不符合要求, 新增失败!')
return
className = input('请输入学生的班级:')
# 使用一个字典把上述的信息给聚合起来.
student = {
'studentId': studentId,
'name': name,
'gender': gender,
'className': className
}
global students
students.append(student)
# 增加保存操作
save()
print('[新增学生] 完毕!')
def show():
#遍历全局变量的这个列表,把每个学生的信息给打印出来
print('[显示学生] 开始!')
for s in students:
print(f"[{s['studentId']}]\t{s['name']}\t{s['gender']}\t{s['className']}")
print(f'[显示学生] 完毕!,共显示了 {len(students)} 条数据')
def find():
#根据学生姓名,来查找
print('[查找学生] 开始!')
name = input("请输入要查找的同学姓名:")
count = 0
for s in students:
if name == s['name']:
print(f'{s['student']}\t{s['name']}\t{s['gender']}\t{s['className']}')
count += 1
print(f'[查找学生] 结束! 共找到了{count}个匹配的同学!')
def delete():
print('[删除学生] 开始!')
studentId = input('请输入要删除的学生学号:')
for s in students:
if s['studentId'] == studentId:
print(f'删除{s['name']}同学的信息!')
students.remove(s)
save()
print('[删除学生] 结束!')
def exitprint():
print('''
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ 你真的要离开学生管理系统吗? ┃
┃ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
''')
confirm = input("输入 ‘yes’ 确认退出:")
if confirm.lower() == 'yes':
print('''
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ 学生管理系统即将关闭,再见! ┃
┃ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
''')
sys.exit() # 直接退出程序
else:
print("继续使用学生管理系统")
def main():
"""
入口函数
"""
#通过控制台和用户进行交互
print('---------------------------------')
print(' 欢迎来到学生管理系统 ')
print('---------------------------------')
while True:
#通过 menu 函数调用load 即可
choice = menu()
if choice == '1':
#新增学生
insert()
elif choice == '2':
#显示所有学生
show()
elif choice == '3':
#查找学生
find()
elif choice == '4':
#删除学生
delete()
elif choice == '0':
#退出程序
result = exitprint()
else:
print('无效选择,请重试!')
if __name__ == "__main__":
main()
🚩总结
作者:阿森要自信