脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - python编写学生成绩管理系统的逻辑结构及功能实现

python编写学生成绩管理系统的逻辑结构及功能实现

2022-12-07 10:51南风不竞: Python

这篇文章主要为大家介绍了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('你选择的操作无效,请重新输入!:')

 

三 、学生信息录入功能

逻辑结构图

python编写学生成绩管理系统的逻辑结构及功能实现

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

 

四 、学生信息查找功能

逻辑结构图

python编写学生成绩管理系统的逻辑结构及功能实现

代码

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

 

五 、删除学生信息

逻辑结构图

python编写学生成绩管理系统的逻辑结构及功能实现

代码

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

 

六 、学生信息修改功能

逻辑结构图

python编写学生成绩管理系统的逻辑结构及功能实现

代码

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('输入错误,即将返回主界面!')

 

七 、学生成绩排序

逻辑结构图

python编写学生成绩管理系统的逻辑结构及功能实现

代码

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('学生信息文件不存在!')

 

八 、 学生人数统计

逻辑结构图

python编写学生成绩管理系统的逻辑结构及功能实现

代码

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('暂无学生信息文件')

 

九 、显示所有学生信息

逻辑结构图

python编写学生成绩管理系统的逻辑结构及功能实现

代码

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编写学生成绩管理系统的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/qq_44001342/article/details/124352657

延伸 · 阅读

精彩推荐
  • Pythonpython 将列表中的字符串连接成一个长路径的方法

    python 将列表中的字符串连接成一个长路径的方法

    今天小编就为大家分享一篇python 将列表中的字符串连接成一个长路径的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    JNingWei9602021-04-12
  • PythonPython编程中的反模式实例分析

    Python编程中的反模式实例分析

    这篇文章主要介绍了Python编程中的反模式,详细讲述了反模式的害处并以实例形式具体分析了容易造成的易错点,对于Python学习来说具有一定的参考借鉴价值...

    脚本之家4762020-05-17
  • PythonPython实战爬虫之女友欲买文胸不知何色更美

    Python实战爬虫之女友欲买文胸不知何色更美

    实践来源于理论,做爬虫前肯定要先了解相关的规则和原理,网络爬虫又称为网页蜘蛛,网络机器人,更经常的称为网页追逐者,是一种按照一定的规则,...

    Dream丶Killer10812022-01-17
  • PythonPython爬虫+Tkinter制作一个翻译软件的示例

    Python爬虫+Tkinter制作一个翻译软件的示例

    这篇文章主要介绍了Python爬虫+Tkinter制作一个翻译软件的示例,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...

    酸菜鱼编程8422021-09-07
  • Pythonpython中global与nonlocal比较

    python中global与nonlocal比较

    这篇文章主要介绍了python中global与nonlocal比较,global关键字用来在函数或其他局部作用域中使用全局变量,nonlocal关键字用来在函数或其他作用域中使用外层...

    脚本之家3862020-05-14
  • PythonTensorflow 自带可视化Tensorboard使用方法(附项目代码)

    Tensorflow 自带可视化Tensorboard使用方法(附项目代码)

    这篇文章主要介绍了Tensorflow 自带可视化Tensorboard使用方法(附项目代码),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看...

    傲慢灬5892021-01-14
  • PythonWindows下实现pytorch环境搭建

    Windows下实现pytorch环境搭建

    这篇文章主要介绍了Windows下实现pytorch环境搭建,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面...

    芒芒芒芒芒芒果5742021-10-03
  • Pythonpython 接口_从协议到抽象基类详解

    python 接口_从协议到抽象基类详解

    下面小编就为大家带来一篇python 接口_从协议到抽象基类详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    demon894372020-12-04