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


Posted in Python onApril 05, 2020

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

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

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

系统运行效果

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

主菜单的代码方法:

# Author: dry
# 开发时间:2019/9/11
# 开发工具:PyCharm
import 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
# 开发工具:PyCharm
import 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 相关文章推荐
Python用GET方法上传文件
Mar 10 Python
Python使用metaclass实现Singleton模式的方法
May 05 Python
Python中pygame安装方法图文详解
Nov 11 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
Flask框架配置与调试操作示例
Jul 23 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
对python判断ip是否可达的实例详解
Jan 31 Python
python发送多人邮件没有展示收件人问题的解决方法
Jun 21 Python
使用django和vue进行数据交互的方法步骤
Nov 11 Python
Python print不能立即打印的解决方式
Feb 19 Python
django自带的权限管理Permission用法说明
May 13 Python
Python数据分析之pandas读取数据
Jun 02 Python
Python字符串大小写转换拼接删除空白
Sep 19 #Python
python BlockingScheduler定时任务及其他方式的实现
Sep 19 #Python
python实现简单成绩录入系统
Sep 19 #Python
淘宝秒杀python脚本 扫码登录版
Sep 19 #Python
基于python的selenium两种文件上传操作实现详解
Sep 19 #Python
Python分割训练集和测试集的方法示例
Sep 19 #Python
python Dijkstra算法实现最短路径问题的方法
Sep 19 #Python
You might like
php中JSON的使用与转换
2015/01/14 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
javascript 简练的几个函数
2009/08/29 Javascript
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
关于javascript事件响应的基础语法总结(必看篇)
2016/12/26 Javascript
详解JS中的快速排序与冒泡
2017/01/10 Javascript
jQuery排序插件tableSorter使用方法
2017/02/10 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
Vue 中的compile操作方法
2018/02/26 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
js代码实现轮播图
2020/05/04 Javascript
js实现滑动滑块验证登录
2020/07/24 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
python self,cls,decorator的理解
2009/07/13 Python
使用Python下载Bing图片(代码)
2013/11/07 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
印度民族服装购物网站:BIBA
2019/08/05 全球购物
哈曼俄罗斯官方网上商店:Harman.club
2020/07/24 全球购物
关于随地扔垃圾的检讨书
2014/09/30 职场文书
工程安全生产协议书
2014/11/21 职场文书
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang
JS前端可视化canvas动画原理及其推导实现
2022/08/05 Javascript