侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python实现简易学生信息管理系统

Python  /  管理员 发布于 7年前   400

本文实例为大家分享了python实现学生信息管理系统的具体代码,供大家参考,具体内容如下

简易学生信息管理系统主要功能有

1 录入学生信息
2 查找学生信息
3 删除学生信息
4 修改学生信息
5 排序
6 统计学生总人数
7 显示所有学生信息
0 退出系统

系统运行效果

主菜单的代码方法:

# Author: dry# 开发时间:2019/9/11# 开发工具:PyCharmimport re # 导入正则表达式模块import os # 导入操作系统模块filename = "student.txt" # 学生信息保存文件def menu(): # 输出菜单 print('''  ---------------学生信息管理系统------------  ==================功能菜单================     1 录入学生信息     2 查找学生信息     3 删除学生信息     4 修改学生信息     5 排序     6 统计学生总人数     7 显示所有学生信息     0 退出系统  =======================================      说明:通过数字选择菜单  ======================================= ''')

系统主方法:

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 = False   elif 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 insert(): studentList = [] # 保存学生信息的列表 mark = True # 是否继续添加 while mark:  id = input("请输入学生ID(如1001):")  if not id:   break  name = input("请输入名字:")  if not name:   break  try:   english = int(input("请输入英语成绩:"))   python = int(input("请输入python成绩:"))   c = int(input("请输入C语言成绩:"))  except:   print("输入无效,不是整型数值,请重新输入信息")   continue   # 将输入的学生信息保存到字典  student = {"id": id, "name": name, "english": english, "python": python, "c": c}  studentList.append(student) # 将学生字典添加到列表中  inputList = input("是否继续添加?(y/n):")  if inputList == 'y': # 继续添加   mark = True  else:   mark = False  save(studentList) # 将学生信息保存到文件  print("学生信息录入完毕!!!")

保存学生信息方法:

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

查询学生信息方法:

'''查询学生信息'''def search(): mark = True student_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 "":      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 = True    else:     mark = False  else:   print("暂未保存数据信息...")   return

显示学生信息方法

'''将保存在列表中的学生信息显示出来'''def show_student(studentList): if not studentList:  print("无效的数据")  return format_title = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:10}" print(format_title.format("ID", "名字", "英语成绩", "python成绩", "C语言成绩", "总成绩")) format_data = "{:^6}{:^12}\t{:^10}\t{:^10}\t{:^10}\t{:10}" 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)))

删除学生信息方法:

'''删除学生信息'''def delete(): mark = True # 标记是否循环 while mark:  studentId = input("请输入要删除的学生ID:")  if studentId is not "": # 判断要删除的学生ID是否存在   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:  return studentid = 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:  return ascORdesc = input("请选择(0升序;1降序)") if ascORdesc == "0":  ascORdescBool = False # 标记变量,为False时表示升序,为True时表示降序 elif ascORdesc == "1":  ascORdescBool = 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("暂未保存数据信息")

开始函数:

if __name__ == '__main__': main()

完整代码如下:

# Author: dry# 开发时间:2019/9/11# 开发工具:PyCharmimport re # 导入正则表达式模块import os # 导入操作系统模块filename = "student.txt" # 学生信息保存文件def menu(): # 输出菜单 print('''  ---------------学生信息管理系统------------  ==================功能菜单================     1 录入学生信息     2 查找学生信息     3 删除学生信息     4 修改学生信息     5 排序     6 统计学生总人数     7 显示所有学生信息     0 退出系统  =======================================      说明:通过数字选择菜单  ======================================= ''')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 = False   elif 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 insert(): studentList = [] # 保存学生信息的列表 mark = True # 是否继续添加 while mark:  id = input("请输入学生ID(如1001):")  if not id:   break  name = input("请输入名字:")  if not name:   break  try:   english = int(input("请输入英语成绩:"))   python = int(input("请输入python成绩:"))   c = int(input("请输入C语言成绩:"))  except:   print("输入无效,不是整形数值,请重新输入信息")   continue   # 将输入的学生信息保存到字典  student = {"id": id, "name": name, "english": english, "python": python, "c": c}  studentList.append(student) # 将学生字典添加到列表中  inputList = input("是否继续添加?(y/n):")  if inputList == 'y': # 继续添加   mark = True  else:   mark = False  save(studentList) # 将学生信息保存到文件  print("学生信息录入完毕!!!")'''将学生信息保存到文件'''def save(student): try:  student_txt = open(filename, 'a') # 以追加模式打开 except Exception as e:  student_txt = open(filename, 'w') # 文件不存在,创建文件并打开 for info in student:  student_txt.write(str(info) + "\n") # 执行存储,添加换行符 student_txt.close() # 关闭文件'''查询学生信息'''def search(): mark = True student_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 "":      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 = True    else:     mark = False  else:   print("暂未保存数据信息...")   return'''将保存在列表中的学生信息显示出来'''def show_student(studentList): if not studentList:  print("无效的数据")  return format_title = "{:^6}{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:10}" print(format_title.format("ID", "名字", "英语成绩", "python成绩", "C语言成绩", "总成绩")) format_data = "{:^6}{:^12}\t{:^10}\t{:^10}\t{:^10}\t{:10}" 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)))'''删除学生信息'''def delete(): mark = True # 标记是否循环 while mark:  studentId = input("请输入要删除的学生ID:")  if studentId is not "": # 判断要删除的学生ID是否存在   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:  return studentid = 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:  return ascORdesc = input("请选择(0升序;1降序)") if ascORdesc == "0":  ascORdescBool = False # 标记变量,为False时表示升序,为True时表示降序 elif ascORdesc == "1":  ascORdescBool = 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("暂未保存数据信息")if __name__ == '__main__': main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


  • 上一条:
    python openvc 裁剪、剪切图片 提取图片的行和列
    下一条:
    Python字符串大小写转换拼接删除空白
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客