欢迎各位大佬的到来,今天所要分享的文章是关于如何实现学生管理系统,有需要的朋友可以参考一下,希望可以帮到大家!
文章目录
一、开始界面实现
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