首页云计算Python ------ 实现学生管理器

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

时间2024-07-26 08:34:58发布ongwu分类云计算浏览82

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

一、开始界面实现

1. 定义主函数

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

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

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

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

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

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

def menu(): print(1. 新增学生) print(2. 显示学生) print(3. 查找学生) print(4. 删除学生) print(0. 退出程序) choice = input(请输入你的选择: ) return choice 12345678
运行
运行
# 定义主函数 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 1234567891011121314151617181920212223242526
运行
运行

效果展示:

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

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

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([新增学生] 完毕!) 123456789101112131415161718192021222324
运行
运行

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)}数据!) 12345
运行
运行

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}个匹配的同学.) 12345678910
运行
运行

4. 删除学生信息

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

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

5. 退出程序

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

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

三、 把信息存入文件

由于上述的插入学生信息操作删除学生信息操作都保存在内存中,一旦我们结束程序,我们插入或删除的信息就全都不见了。为了让我们插入的信息可以一直保存下去,我们就需要定义两个函数: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)} 条记录!) 12345678
运行
运行

因此,每当我们修改一个数据时,就可以调用 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)} 条记录!) 1234567891011121314151617181920212223242526
运行
运行

四、整理代码

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() 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142

2. 运行过程

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

Ongwu博客 版权声明:以上内容未经允许不得转载!授权事宜或对内容有异议或投诉,请联系站长,将尽快回复您,谢谢合作!

展开全文READ MORE
边缘计算网关:一种高效安全的工业物联网解决方案-天拓四方 7月26日星期五,农历六月廿一,工作愉快,平安喜乐

游客 回复需填写必要信息