python编写学生成绩管理系统的逻辑结构及功能实现
目录
学生信息系统一、功能界面二 、主函数三 、学生信息录入功能四 、学生信息查找功能五 、删除学生信息六 、学生信息修改功能七 、学生成绩排序八 、 学生人数统计九 、显示所有学生信息程序打包学生信息系统
提示:python编写的学生成绩管理系统,包括8个功能和打包教程
一、功能界面
def menum(): print("==================student_manger=================") print("---------------------功能界面---------------------") print("\t\t1.录入学生信息") print("\t\t2.查找学生信息") print("\t\t3.删除学生信息") print("\t\t4.修改学生成绩") print("\t\t5.排序") print("\t\t6.统计学生总人数") print("\t\t7.显示所有学生信息") print("\t\t8.显示功能介绍按钮") print("\t\t0.退出") print("================================================")
二 、主函数
def main(): menum() while True: try: choice = int(input("请选择你想进行的操作: ")) except ValueError: print("输入的数据存在错误,只能输入0到7的整数!") try: choice = int(input("请重新输入: ")) except ValueError: print("重复输入错误,退出系统!") break if choice in [0, 1, 2, 3, 4, 5, 6, 7, 8]: if choice == 0: answer = input("你确定要退出系统吗?(Y/N): ") if answer == "Y" or answer == "y": print("谢谢使用!") break elif answer == "N" or answer == "n": print("即将返回上一步操作!") continue else: input("输入错误,即将返回主界面!") continue elif choice == 1: insert() elif choice == 2: search() elif choice == 3: delete() elif choice == 4: modify() elif choice == 5: sort() elif choice == 6: total() elif choice == 7: show() else: menum() else: print("你选择的操作无效,请重新输入!:")
三 、学生信息录入功能
逻辑结构图
def insert(): student_list = [] id_list = [] while True: id = input("请输入ID: ") if not id: break name = input("请输入姓名:") if not name: break try: english = float(input("请输入英语成绩:")) math = float(input("请输入数学成绩:")) python = float(input("请输入Python成绩:")) except ValueError: print("数据输入错误!") continue # 将录入的学生信息存放到字典中 student = {"id": id, "name": name, "english": english, "math": math, "Python": python} # 将每个学生的信息存放在列表中 if student["id"] in id_list: # student["id"] = value(id) print("已存在相同ID:") for i in range(len(student_list)): if student_list[i][id] == student[id]: # 输出重复id元素 print(student_list[i].items()) break print("请重新录入!") else: id_list.append(str(student["id"])) student_list.append(student) # 是否继续添加学生信息 answer = input("是否继续添加学生信息?(Y/N): ") if answer == "Y" or answer == "y": continue elif answer == "N" or answer == "n": # 存储学生信息 save(student_list, filename) print("学生信息录入完毕!") break else: print("输入错误,即将返回主界面!") break
四 、学生信息查找功能
逻辑结构图
代码
def search(): while True: if os.path.exists(filename): with open(filename, "r", encoding = "utf-8") as s_file: student_qurey = s_file.readlines() # 将学生信息全部取出 id_list = [] name_list = [] for i in student_qurey: d = dict(eval(i)) id_list.append(d["id"]) # 将所有学生的id存放在id_list中 name_list.append(d["name"]) # 将所有学生的name存放在id_list中 try: mode = int(input("请选择查询模式: 1.按照ID查询 / 2.按照姓名查询 ")) except ValueError: print("数据类型输入错误!请重新输入!") else: if mode == 1: # 按照ID查询 id = input("请输入学生id: ") if id in id_list: print("已经查找到该名学生:") print("ID\t\t\t姓名:\t\t英语成绩:\t\t数学成绩:\t\tPython成绩:\t\t总成绩:") for item in student_qurey: if dict(eval(item))["id"] == id: p = dict(eval(item)) print("{0}\t\t{1}\t\t {2}\t\t {3}\t\t {4}\t\t {5}".format( p["id"], p["name"], p["english"], p["math"], p["Python"], float(p["english"])+float(p["math"])+float(p["Python"]))) else: print("查无此人!") elif mode == 2: # 按照姓名查询 name = input("请输入学生姓名: ") if name in name_list: print("已经查找到该名学生:") print("ID\t\t\t姓名:\t\t英语成绩:\t\t数学成绩:\t\tPython成绩:\t\t总成绩:") for item in student_qurey: if dict(eval(item))["name"] == name: p = dict(eval(item)) print("{0}\t\t{1}\t\t {2}\t\t {3}\t\t {4}\t\t {5}".format( p["id"], p["name"], p["english"], p["math"], p["Python"], float(p["english"]) + float(p["math"]) + float(p["Python"]))) else: print("查无此人!") else: print("输入错误,只能选择1/2两种模式!") answer = input("是否继续查询? (Y/N)") if answer == "Y" or answer == "y": continue elif answer == "N" or answer == "n": print("正在退出查询..") break else: print("输入错误,即将返回主界面!") break else: print("无学生信息文件!") return
五 、删除学生信息
逻辑结构图
代码
def delete(): while True: student_id = input("请输入想要删除的学生的ID: ") if student_id != "": if os.path.exists(filename): with open(filename, "r", encoding = "utf-8") as file: student_old = file.readlines() else: student_old = [] flag = False # 标记是否删除 if student_old: with open(filename, "w", encoding = "utf-8") as wfile: for item in student_old: d = dict(eval(item)) # 转化为字典类型 if d["id"] != student_id: wfile.write(str(d)+"\n") else: flag = True if flag: print(f"id为{student_id}的学生信息已被删除!") else: print(f"没有找到id为{student_id}的学生信息!") else: print("无学生信息") break show() # 显示更新后的文件信息 answer = input("是否继续删除学生信息?(Y/N): ") if answer == "Y" or answer == "y": continue elif answer == "N" or answer == "n": break else: print("输入错误,即将返回主界面!") break
六 、学生信息修改功能
逻辑结构图
代码
def modify(): show() if os.path.exists(filename): with open(filename, "r", encoding = "utf-8") as rfile: student_old = rfile.readlines() # 直接将文本文件的内容整行读取到列表中 else: print("学生文件信息不存在!") student_id = input("请输入想要修改的学生的ID: ") with open(filename, "w", encoding = "utf-8") as just_file: # 判断学生是否在该系统中 id_list = [] for i in student_old: d = dict(eval(i)) id_list.append(d["id"]) # 将所有学生的id存放在id_list中 if student_id in id_list: # 要修改的学生存在时 for item in student_old: e = dict(eval(item)) if e["id"] == student_id: print("已找到该名学生!") while True: try: e["name"] = input("请输入姓名: ") e["english"] = input("请输入英语成绩: ") e["math"] = input("请输入数学成绩: ") e["Python"] = input("请输入Python成绩: ") except ValueError: print("数据类型输入错误!请重新输入!") else: break # try...except..else: 输入为出错时,执行else语句 just_file.write(str(e) + "\n") print("修改成功!") else: just_file.write(str(e) + "\n") else: answer1 = input("查无此人!,是否执行插入操作? (Y/N)") if answer1 == "Y" or answer1 == "y": insert() else: print("结束当前操作") answer = input("是否继续修改其余学生信息?(Y/N): ") if answer == "Y" or answer == "y": modify() elif answer == "N" or answer == "n": print("结束修改,即将返回主界面..") else: print("输入错误,即将返回主界面!")
七 、学生成绩排序
逻辑结构图
代码
def sort(): student_new = [] if os.path.exists(filename): with open(filename, "r", encoding = "utf-8") as sort_file: student_list = sort_file.readlines() # 无序的学生信息列表 for item in student_list: d = dict(eval(item)) student_new.append(d) # 列表元素转化为字典 while True: try: sort_choice = int(input("请选择排序方式: 0:升序 / 1:降序\t")) except ValueError: print("输入的数据类型错误,请重新输入") else: if sort_choice == 0: Flag = False break elif sort_choice == 1: Flag = True break else: print("输入错误,只能在0/1中选择!") continue while True: try: asc_choice = int(input("请选择按照哪一门成绩进行排序: 英语:0 / 数学:1 / python:2\t\t")) except ValueError: print("输入的数据类型错误,请重新输入") else: if asc_choice == 0: student_new.sort(key = lambda x: int(x["english"]), reverse = Flag) # 根据列表中的元素进行排序 show() break elif asc_choice == 1: student_new.sort(key = lambda x: int(x["math"]), reverse = Flag) show() break elif asc_choice == 2: student_new.sort(key = lambda x: int(x["Python"]), reverse = Flag) show() break elif asc_choice == 3: student_new.sort(key = lambda x: int(x["Python"])+int(x["english"])+int(x["math"]), reverse = Flag) show() break else: print("输入错误,只能在0/1/2中选择!") continue else: print("学生信息文件不存在!")
八 、 学生人数统计
逻辑结构图
代码
def total(): nums = 0 if os.path.exists(filename): with open(filename, "r", encoding = "utf-8") as t_file: len_list = t_file.readlines() for i in range(len(len_list)): if len_list[i] != "": nums += 1 print("当前学生总人数为: ", nums) print("请选择你想进行的下一步操作: ") else: print("暂无学生信息文件")
九 、显示所有学生信息
逻辑结构图
代码
def show(): if os.path.exists(filename): with open(filename, "r", encoding = "utf-8") as show_file: student_list = show_file.readlines() if student_list: print("----全部学生信息如下----") print("ID\t\t\t姓名:\t\t英语成绩:\t\t数学成绩:\t\tPython成绩:\t\t总成绩:") for item in student_list: p = dict(eval(item)) print("{0}\t\t{1}\t\t {2}\t\t {3}\t\t {4}\t\t {5}".format( p["id"], p["name"], p["english"], p["math"], p["Python"], float(p["english"]) + float(p["math"]) + float(p["Python"]))) else: print("暂无学生信息!") else: print("暂无学生信息!")
程序打包
在 pycharm 终端 或者 python命令界面, 使用:
pip install PyInstaller
下载python打包程序,下载完成后, 执行以下操作:
pyinstaller —F F:\xxxx\xxx\xx\x.py
其中:
-F 代表将程序打包为单个exe文件,F:\xxx\xxx\xx.py 为你的学生成绩管理系统文件的绝对地址打包完成后,提示信息倒数第二行:Appending语句后面即为exe文件位置,若无特殊显示,则在当前目录父文件下
以上就是python编写学生成绩管理系统实现八个功能示例的详细内容,更多关于python编写学生成绩管理系统的资料请关注脚本之家其它相关文章!
X 关闭
X 关闭