文章目录
- 📝前言
- 🌠主函数man
- 🌉菜单menu
- 🌉添加学生信息
- 🌉展示目前学生信息
- 🌉查找学生
- 🌉删除同学信息
- 🌉退出程序
- 🌠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('性别输入的内容不符合要求, 新增失败!')returnclassName = input('请输入学生的班级:')# 使用一个字典把上述的信息给聚合起来.student = {'studentId': studentId,'name': name,'gender': gender,'className': className}global studentsstudents.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 = 0for s in students:if name == s['name']:print(f'{s['student']}\t{s['name']}\t{s['gender']}\t{s['className']}')count += 1print(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 studentsstudents = []with open('recode.txt','r',encoding='utf8') as f:for line in f:#针对这一行数据,按照 \t 进行切分操作#切分之前,要去除末尾的换行\nline = line.strip()#去除字符串两端的空白字符(空格、换行、制表符等)tokens = line.split('\t')#处理后的字符串(line)按照制表符 \t 进行切分,生成一个字符串列表# 1001 Alice Female ClassAif len(tokens) != 4:print(f'当前格式存在问题! line = {line}')continuestudent = {'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 choicedef insert():print('[新增学生] 开始!')studentId = input('请输入学生的学号:')name = input('请输入学生的姓名:')gender = input('请输入学生的性别:')if gender not in ('man', 'girl'):print('性别输入的内容不符合要求, 新增失败!')returnclassName = input('请输入学生的班级:')# 使用一个字典把上述的信息给聚合起来.student = {'studentId': studentId,'name': name,'gender': gender,'className': className}global studentsstudents.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 = 0for s in students:if name == s['name']:print(f'{s['student']}\t{s['name']}\t{s['gender']}\t{s['className']}')count += 1print(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()