网络编程
位置:首页>> 网络编程>> Python编程>> python编写学生成绩管理系统的逻辑结构及功能实现

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

作者:南风不竞:  发布时间:2021-08-23 18:32:21 

标签: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文件位置,若无特殊显示,则在当前目录父文件下

来源:https://blog.csdn.net/qq_44001342/article/details/124352657

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com