Python ------ 实现学生管理器

avatar
作者
筋斗云
阅读量:0

欢迎各位大佬的到来,今天所要分享的文章是关于如何实现学生管理系统,有需要的朋友可以参考一下,希望可以帮到大家!

文章目录

一、开始界面实现

1. 定义主函数

定义一个主函数main,在通过定义一个menu函数对学生管理系统的菜单进行打印。

# 定义menu()函数 def menu():     print('1. 新增学生')     print('2. 显示学生')     print('3. 查找学生')     print('4. 删除学生')     print('0. 退出程序')  # 定义主函数 def main():     print('--------------------------------')     print('        欢迎来到学生管理系统       ')     print('-------------------------------')     menu()   main() 

2. 运用循环,获取用户需求

1)使用 while True 循环:让菜单一直保持循环,直到用户选择退出操作时才结束循环操作。

2)变量 choice:获取到的用户需要实现的功能进行存储。

3)if 循环:使用多个分支循环语句,分别实现各个模块的功能。

def menu():     print('1. 新增学生')     print('2. 显示学生')     print('3. 查找学生')     print('4. 删除学生')     print('0. 退出程序')     choice = input('请输入你的选择: ')     return choice 
# 定义主函数 def main():     print('--------------------------------')     print('        欢迎来到学生管理系统       ')     print('-------------------------------')     while True:         choice = menu()         if choice == '1':             # 新增学生             pass         elif choice == '2':             # 显示学生             pass         elif choice == '3':             # 查找学生             pass         elif choice == '4':             # 删除学生             pass         elif choice == '0':             # 退出程序             pass         else:             print('您的输入有误,请重新输入!')             # 需要进入下次循环,让用户输入             continue 

效果展示:
在这里插入图片描述

二、函数实现各个模块功能

下面,就需要完成上述代码所需要实现的各个功能操作

1. 添加学生信息

1)studentId,name,gender,className: 分别用来存储学生的学号、姓名、性别、班级的信息。
2)student: 定义一个字典,用来存储上述全部信息。
3)append(): 列表添加操作,将当前的字典存入列表,作为列表的一个元素。
4)students[ ]: 定义了一个列表用来存储所有的学生信息。该列表中的每个元素都属于一个"字典",而每个字典就分别表示一个同学!

# 使用这个全局变量,来管理所有学生的信息. students = []   def insert():     print('[新增学生] 开始!')     studentId = input('请输入学生的学号:')     name = input('请输入学生的姓名:')     gender = input('请输入学生的性别:')     if gender not in ('男', '女'):         print('性别输入的内容不符合要求,新增失败!')         return     className = input('请输入学生的班级:')     # 使用一个字典把上述的信息给聚合起来.     student = {         'studentId': studentId,         'name': name,         'gender': gender,         'className': className     }     # 将上述信息添加到全局变量students列表中     global students     students.append(student)     print('[新增学生] 完毕!') 

2. 展示学生信息

遍历全局变量这个列表,把每个学生的信息进行打印。

def show():     print('[显示学生] 开始!')     for s in students:         print(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}")     print(f'[显示学生] 完毕! 共显示了{len(students)}条数据!') 

3. 查找学生信息

我们假设根据学生的姓名来进行查找。使用 count 变量完成计数功能操作。

def find():     # 根据学生姓名,来进行查找     print('[查找学生] 开始!')     name = input('请输入要查找的同学姓名:')     count = 0     for s in students:         if name == s['name']:             print(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}")             count += 1     print(f'[查找学生] 完毕! 共找到了{count}个匹配的同学.') 

4. 删除学生信息

假设按照学生的学号进行删除操作。通过学号来确定该学生属于哪一个“字典”,然后把这个字典从列表中进行删除即完成该操作。

def delete():     print('[删除学生] 开始!')     # 按照学号进行删除     studentId = input('请输入要删除学生的学号:')     # 看看这个学号对应的同学是哪个字典,然后把这个字典从列表中进行删除     for s in students:         if studentId == s['studentId']:             print(f"删除 {s['name']} 同学的信息!")             students.remove(s)     print('[删除学生] 结束!') 

5. 退出程序

使用内建函数 sys.exit (0) 退出程序即可。

        elif choice == '0':             # 退出程序             print('GoodBye!')             sys.exit(0) 

三、 把信息存入文件中

由于上述的插入学生信息操作和删除学生信息操作都保存在内存中,一旦我们结束程序,我们插入或删除的信息就全都不见了。为了让我们插入的信息可以一直保存下去,我们就需要定义两个函数:save() 函数和 load() 函数。

1. save() 函数

这个函数是用于存档学生信息的。把信息存储在和当前文件同级的目录中。存档的文件定义为文本文件。

def save():     # 用于存档     # 此处的路径不是以d: 开头的"绝对路径",而是"相对路径"     # 这个写法的含义就是让 record.txt 和当前的文件在同一个目录里.     with open('record.txt', 'w', encoding='utf8') as f:         for s in students:             f.write(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}\n")         print(f'[存档成功] 共存储了 {len(students)} 条记录!') 

因此,每当我们修改一个数据时,就可以调用 save 函数对这个信息进行保存操作。
在这里插入图片描述

2. load() 函数

该函数是用于读取文档的操作。使用此函数,就可以实现当我们关闭程序再次运行程序时,可以读取到上次我们所保存的学生信息。
1)os.path.exists (): 该内建函数用来判断某一个文件是否存在。
2)line.strip (): 该功能是去掉一个字符串开头和末尾的空白符。
空白符包括:空格,换行,回车,制表符等等。
3)line.split (): 用于将字符串按照指定的分隔符分割成若干个字符串。

def load():     # 用于读档     # 如果存档文件不存在,则直接跳过读档操作     if not os.path.exists('record.txt'):         return      # 读档的时候要保证先把旧的数据先清理干净!     global students     students = []     with open('record.txt', 'r', encoding='utf8') as f:         for line in f:             # 针对这一行数据,按照 \t 对其进行切分操作!             # 切分之前要去除末尾的换行             line = line.strip()             tokens = line.split('\t')             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)} 条记录!') 

四、整理代码

1. 代码展示

import os.path import sys  # 使用这个全局变量,来管理所有学生的信息. # 这个列表的每个元素都是一个"字典",每个字典就分别表示一个同学! students = []   def save():     # 用于存档     with open('record.txt', 'w', encoding='utf8') as f:         for s in students:             f.write(f"{s['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}\n")         print(f'[存档成功] 共存储了 {len(students)} 条记录!')  def load():     # 用于读档     # 如果存档文件不存在,则直接跳过读档操作     if not os.path.exists('record.txt'):         return      # 读档的时候要保证先把旧的数据先清理干净!     global students     students = []     with open('record.txt', 'r', encoding='utf8') as f:         for line in f:             # 针对这一行数据,按照 \t 对其进行切分操作!             # 切分之前要去除末尾的换行             line = line.strip()             tokens = line.split('\t')             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 ('男', '女'):         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['studentId']}\t{s['name']}\t{s['gender']}\t{s['className']}")             count += 1     print(f'[查找学生] 完毕! 共找到了{count}个匹配的同学.')   def delete():     print('[删除学生] 开始!')     # 按照学号进行删除     studentId = input('请输入要删除学生的学号:')     # 看看这个学号对应的同学是哪个字典,然后把这个字典从列表中进行删除     for s in students:         if studentId == s['studentId']:             print(f"删除 {s['name']} 同学的信息!")             students.remove(s)     # 增加保存操作     save()     print('[删除学生] 结束!')   def main():     # 通过控制台和命令进行交互     print('--------------------------------')     print('        欢迎来到学生管理系统       ')     print('-------------------------------')     load()     while True:         # 通过 menu 函数打印出菜单项         choice = menu()         if choice == '1':             # 新增学生             insert()         elif choice == '2':             # 显示学生             show()         elif choice == '3':             # 查找学生             find()         elif choice == '4':             # 删除学生             delete()         elif choice == '0':             # 退出程序             print('GoodBye!')             sys.exit(0)         else:             print('您的输入有误,请重新输入!')             # 需要进入下次循环,让用户输入             continue  main() 

2. 运行过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上就是今天所要分享的内容,如果感觉内容不错,记得一键三连噢。创作不易,感谢大家的支持,我们下次再见!ヾ( ̄▽ ̄)ByeBye

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!