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学习笔记_数据排序方法
May 22 Python
Python实现网站文件的全备份和差异备份
Nov 30 Python
python解决字符串倒序输出的问题
Jun 25 Python
使用pandas实现csv/excel sheet互相转换的方法
Dec 10 Python
Python中super函数用法实例分析
Mar 18 Python
Django  ORM 练习题及答案
Jul 19 Python
python实现桌面气泡提示功能
Jul 29 Python
将数据集制作成VOC数据集格式的实例
Feb 17 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
Python类及获取对象属性方法解析
Jun 15 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
python某漫画app逆向
Mar 31 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
Terran魔法科技
2020/03/14 星际争霸
php堆排序(heapsort)练习
2013/11/13 PHP
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
js实现页面跳转的几种方法小结
2016/05/16 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
深入理解ES6中let和闭包
2018/02/22 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
2018/06/28 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
Python Socket传输文件示例
2017/01/16 Python
python实现感知机线性分类模型示例代码
2019/06/02 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
opencv 查找连通区域 最大面积实例
2020/06/04 Python
python Paramiko使用示例
2020/09/21 Python
Python 开发工具通过 agent 代理使用的方法
2020/09/27 Python
PyQt5中QSpinBox计数器的实现
2021/01/18 Python
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
韩国商务邀请函
2014/01/14 职场文书
小学教师寄语大全
2014/04/03 职场文书
工作建议书范文
2014/05/13 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
2014年教研室工作总结
2014/12/06 职场文书
新人入职感言
2015/07/31 职场文书
办公室管理规章制度
2015/08/04 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers