目录

  • main函数
  • 菜单界面
  • 录入学生信息
    • 保存信息
  • 查找学生信息
  • 删除学生信息
  • 修改学生信息
  • 排序
  • 统计学生总人数
  • 显示所有学生信息
    • 显示信息
import re  # 导入正则表达式模块
import os  # 导入操作系统模块filename = "students.txt"  # 定义保存学生信息的文件名

main函数

def main():ctrl = True  # 标记是否退出系统while (ctrl):menu()  # 显示菜单option = input("请选择:")  # 选择菜单项option_str = re.sub("\D", "", option)  # 提取数字if option_str in ['0', '1', '2', '3', '4', '5', '6', '7']:option_int = int(option_str)if option_int == 0:  # 退出系统print('您已退出学生成绩管理系统!')ctrl = Falseelif option_int == 1:  # 录入学生成绩信息insert()elif option_int == 2:  # 查找学生成绩信息search()elif option_int == 3:  # 删除学生成绩信息delete()elif option_int == 4:  # 修改学生成绩信息modify()elif option_int == 5:  # 排序sort()elif option_int == 6:  # 统计学生总数total()elif option_int == 7:  # 显示所有学生信息show()

菜单界面

def menu():# 输出菜单print('''╔———————---------学生信息管理系统———--------——╗=============== 功能菜单 ===============   1 录入学生信息                             2 查找学生信息                             3 删除学生信息                             4 修改学生信息                             5 排序                                   6 统计学生总人数                           7 显示所有学生信息                          0 退出系统                                ========================================说明:通过数字或↑↓方向键选择菜单                ╚———————————————————————-------------------╝''')

录入学生信息

def insert():stdentList = []        # 保存学生信息的列表mark = True  # 是否继续添加while mark:id = input("请输入ID(如 1001):")if not id:  # ID为空,跳出循环breakname = input("请输入名字:")if not name:  # 名字为空,跳出循环breaktry:english = int(input("请输入英语成绩:"))python = int(input("请输入Python成绩:"))c = int(input("请输入C语言成绩:"))except:print("输入无效,不是整型数值....重新录入信息")continuestdent = {"id": id, "name": name, "english": english, "python": python, "c": c}  # 将输入的学生信息保存到字典stdentList.append(stdent)  # 将学生字典添加到列表中inputMark = input("是否继续添加?(y/n):")if inputMark == "y":  # 继续添加mark = Trueelse:  # 不继续添加mark = Falsesave(stdentList)  # 将学生信息保存到文件print("学生信息录入完毕!!!")

保存信息

# 将学生信息保存到文件
def save(student):try:students_txt = open(filename, "a")  # 以追加模式打开except Exception as e:students_txt = open(filename, "w")  # 文件不存在,创建文件并打开for info in student:students_txt.write(str(info) + "\n")  # 按行存储,添加换行符students_txt.close()  # 关闭文件

查找学生信息

def search():mark = Truestudent_query = []  # 保存查询结果的学生列表while mark:id = ""name = ""if os.path.exists(filename):  # 判断文件是否存在mode = input("按ID查输入1;按姓名查输入2:")if mode == "1":id = input("请输入学生ID:")elif mode == "2":name = input("请输入学生姓名:")else:print("您的输入有误,请重新输入!")search()  # 重新查询with open(filename, 'r') as file:  # 打开文件student = file.readlines()  # 读取全部内容for list in student:d = dict(eval(list))  # 字符串转字典if id is not "":  # 判断是否按ID查if d['id'] == id:student_query.append(d)  # 将找到的学生信息保存到列表中elif name is not "":  # 判断是否按姓名查if d['name'] == name:student_query.append(d)  # 将找到的学生信息保存到列表中show_student(student_query)  # 显示查询结果student_query.clear()  # 清空列表inputMark = input("是否继续查询?(y/n):")if inputMark == "y":mark = Trueelse:mark = Falseelse:print("暂未保存数据信息...")return

删除学生信息

def delete():mark = True  # 标记是否循环while mark:studentId = input("请输入要删除的学生ID:")if studentId is not "":  # 判断要删除的学生是否存在if os.path.exists(filename):  # 判断文件是否存在with open(filename, 'r') as rfile:  # 打开文件student_old = rfile.readlines()  # 读取全部内容else:student_old = []ifdel = False  # 标记是否删除if student_old:  # 如果存在学生信息with open(filename, 'w') as wfile:  # 以写方式打开文件d = {}  # 定义空字典for list in student_old:d = dict(eval(list))  # 字符串转字典if d['id'] != studentId:wfile.write(str(d) + "\n")  # 将一条学生信息写入文件else:ifdel = True  # 标记已经删除if ifdel:print("ID为 %s 的学生信息已经被删除..." % studentId)else:print("没有找到ID为 %s 的学生信息..." % studentId)else:  # 不存在学生信息print("无学生信息...")break  # 退出循环show()  # 显示全部学生信息inputMark = input("是否继续删除?(y/n):")if inputMark == "y":mark = True  # 继续删除else:mark = False  # 退出删除学生信息功能

修改学生信息

def modify():show()  # 显示全部学生信息if os.path.exists(filename):  # 判断文件是否存在with open(filename, 'r') as rfile:  # 打开文件student_old = rfile.readlines()  # 读取全部内容else:returnstudentid = input("请输入要修改的学生ID:")with open(filename, "w") as wfile:  # 以写模式打开文件for student in student_old:d = dict(eval(student))  # 字符串转字典if d["id"] == studentid:  # 是否为要修改的学生print("找到了这名学生,可以修改他的信息!")while True:  # 输入要修改的信息try:d["name"] = input("请输入姓名:")d["english"] = int(input("请输入英语成绩:"))d["python"] = int(input("请输入Python成绩:"))d["c"] = int(input("请输入C语言成绩:"))except:print("您的输入有误,请重新输入。")else:break  # 跳出循环student = str(d)  # 将字典转换为字符串wfile.write(student + "\n")   # 将修改的信息写入到文件print("修改成功!")else:wfile.write(student)  # 将未修改的信息写入到文件mark = input("是否继续修改其他学生信息?(y/n):")if mark == "y":modify()  # 重新执行修改操作

排序

def sort():show()  # 显示全部学生信息if os.path.exists(filename):  # 判断文件是否存在with open(filename, 'r') as file:  # 打开文件student_old = file.readlines()  # 读取全部内容student_new = []for list in student_old:d = dict(eval(list))  # 字符串转字典student_new.append(d)  # 将转换后的字典添加到列表中else:returnascORdesc = input("请选择(0升序;1降序):")if ascORdesc == "0":  # 按升序排序ascORdescBool = False           # 标记变量,为False表示升序排序elif ascORdesc == "1":  # 按降序排序ascORdescBool = True          # 标记变量,为True表示降序排序else:print("您的输入有误,请重新输入!")sort()mode = input("请选择排序方式(1按英语成绩排序;2按Python成绩排序;3按C语言成绩排序;0按总成绩排序):")if mode == "1":  # 按英语成绩排序student_new.sort(key=lambda x: x["english"], reverse=ascORdescBool)elif mode == "2":  # 按Python成绩排序student_new.sort(key=lambda x: x["python"], reverse=ascORdescBool)elif mode == "3":  # 按C语言成绩排序student_new.sort(key=lambda x: x["c"], reverse=ascORdescBool)elif mode == "0":  # 按总成绩排序student_new.sort(key=lambda x: x["english"] + x["python"] + x["c"], reverse=ascORdescBool)else:print("您的输入有误,请重新输入!")sort()show_student(student_new)  # 显示排序结果

统计学生总人数

def total():if os.path.exists(filename):  # 判断文件是否存在with open(filename, 'r') as rfile:  # 打开文件student_old = rfile.readlines()  # 读取全部内容if student_old:print("一共有 %d 名学生!" % len(student_old))else:print("还没有录入学生信息!")else:print("暂未保存数据信息...")

显示所有学生信息

def show():student_new = []if os.path.exists(filename):  # 判断文件是否存在with open(filename, 'r') as rfile:  # 打开文件student_old = rfile.readlines()  # 读取全部内容for list in student_old:student_new.append(eval(list))  # 将找到的学生信息保存到列表中if student_new:show_student(student_new)else:print("暂未保存数据信息...")

显示信息

def show_student(studentList):if not studentList:print("(o@.@o) 无数据信息 (o@.@o) \n")returnformat_title = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^10}"print(format_title.format("ID", "名字", "英语成绩", "Python成绩", "C语言成绩", "总成绩"))format_data = "{:^6}{:^12}\t{:^12}\t{:^12}\t{:^12}\t{:^12}"for info in studentList:print(format_data.format(info.get("id"), info.get("name"), str(info.get("english")), str(info.get("python")),str(info.get("c")),str(info.get("english") + info.get("python") + info.get("c")).center(12)))
if __name__ == "__main__":main()

python学生信息管理系统相关推荐

  1. python 学生信息管理系统(二)

    完整的代码放在<python 学生信息管理系统(一)>里,这里记录我学习中遇到的新问题. 附:编写好的部分学生信息文件 stu.txt如下: {'id': '0101', 'name': ...

  2. python综合管理系统代码_《python学生信息管理系统》[52KB]PDF代码版下载-码农之家...

    <python学生信息管理系统>是一本python相关的电子书资源,介绍了关于python.学生管理系统方面的内容,格式为PDF,资源大小52 KB,由26622451 提供,目前在&qu ...

  3. python学生信息管理系统项目总结_学生信息管理系统案例小结

    周末拿最近学习的知识 (JDBC, Servlet, JSP) 做一个小案例, 本来周末就应该整理笔记的, 但是打球也不能耽误啊, 所以只好赶着在今天下班的时间, 做下记录. 技术准备 Java 基础 ...

  4. python学生成绩管理系统实验报告_【python 学生信息管理系统】

    1. 简述 本文讲述的是用 python 语言写一个简单的学生信息管理系统,系统包含学生信息的增删查改功.同时使用了 mysql5.7.14 来存储数据. 2.准备工作 首先,先搭建好自己的 MySQ ...

  5. 宇文成 Python 学生信息管理系统

    #!/usr/bin/python -- coding:utf-8 -- @Author : Yu Wencheng @Time : 2020/10/4 20:23 学生信息管理系统 学生信息至少包含 ...

  6. python学生信息管理系统(GUI界面+mysql数据库)

    python编写的学生信息管理系统(GUI界面+mysql数据库) 实现了增删改查和另存(txt的形式) 有需要的可以自行下载 可以先观看教学视频再决定是否下载 注意:输入数据库的用户名和密码就可以直 ...

  7. Python学生信息管理系统的开发

    # 第一题:设计一个全局变量,来保存很多个学生信息:学生(学号, 姓名,年龄):思考要用怎样的结构来保存:# 第二题:在第一题基础上,完成:让用户输入一个新的学生信息(学号,姓名,年龄):你将其保存在 ...

  8. python学生信息管理系统课程设计报告_学生信息管理系统课程设计报告

    一. 引言(简要说明设计题目的目的.意义.内容.主要任务等) 1 实验目的 在全面掌握< C 语言程序设计>课程的知识点的前提下,培养了我们分析实际问题的能力,并能够自己编写程序 实现对实 ...

  9. python学生信息管理系统-增删改查-根据姓名查询

    学生信息管理系统 增删改查,求平均年龄,退出系统,根据姓名查询 def show_menu():print('*******欢迎使用学生管理系统*************')print('****** ...

最新文章

  1. Linux上部署、安装nodejs
  2. 细分tf.multiply()、tf.matmul()、tf.scalar_mul()函数
  3. 编码不一致问题-Illegal mix of collations
  4. 全球及中国盘式削片机行业运营模式与“十四五”投资规划建议报告2022-2027年版
  5. C#面向对象基础(六) 继承
  6. LeetCode 916. 单词子集(计数)
  7. Labview-隧道 移位寄存器
  8. 锦江公司 nginx 转发
  9. [SPOJGCJ1C09C] Bribe the Prisoners
  10. 人生一知己,足以慰风尘吗?
  11. Oracle学习总结2-数据处理
  12. 解决办法:无法解析的外部符号 __imp_RegCloseKey
  13. 无线通信设备安装工程概预算编制_深圳电气安装造价培训-如何计算电气设备安装工程预算定额?...
  14. 大数据-经典案例手机号码分区
  15. 使用 TF-IDF 算法将文本向量化
  16. 深度学习之跟学霹雳吧啦Wz笔记
  17. 租用游艇,Clear And Present Danger S,Heat Wave G,单源最短路径(弱化版)
  18. 秋招总结帖,还愿牛客
  19. java看不起c语言,为什么我感觉Java比C语言难呢?总觉得逻辑上没有C语言好理解。比如各种继承介面。包之间的关系。...
  20. 如何正确的撰写软文的结尾?

热门文章

  1. 配置tomcat tomcat与nginx的整合
  2. 软件工程导论 00章数据流图与数据字典
  3. IPython系统相关内容及其配置信息
  4. ## CSP 201409-1相邻数对(C语言)(100分)
  5. LaTeX学习笔记(legacy)~
  6. flask中的static_path和static_path_url和static_folder
  7. 如何下载B站视频到本地?
  8. 机器学习(西瓜书)读书难点参考资料
  9. Pycharm配置Anaconda
  10. oracle中对排序的总结(按照拼音、部首、笔画排序功能 )