码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python学生成绩管信息理系统(面向对象)(成绩管理篇)


    任务描述

    项目组接到一个新项目,要为某学校开发一个“学生信息管理系统”,经过与客户沟通交流,确定该系统的主要功能如下图所示。

    整个学生信息管理系统主要包括两大模块:基本信息管理和学生成绩管理。

    基本信息管理模块的主要功能有学生信息的添加、删除、修改、显示和学生数据的导入导出,、

    学生成绩管理模块的主要功能有统计课程最高分、最低分和平均分。

    上篇我们已经完成了学生信息管理的功能模块。

    Python学生成绩管信息理系统(面向对象)(学生信息篇)_李威威wiwi的博客-CSDN博客项目组接到一个新项目,要为某学校开发一个“学生信息管理系统”,经过与客户沟通交流,确定该系统的主要功能如下图所示。整个学生信息管理系统主要包括两大模块:基本信息管理和学生成绩管理。基本信息管理模块的主要功能有学生信息的添加、删除、修改、显示和学生数据的导入导出,、学生成绩管理模块的主要功能有统计课程最高分、最低分和平均分。https://blog.csdn.net/agelee/article/details/126664530

    接下来我们先完善下学生信息管理功能,增加文件导入和导出学习信息的功能,同时增加学生成绩管理子菜单功能。

    文件导入和导出

    在学生信息管理类StudentList下面继续添加文件导入和导出的两个函数功能:

    1. class StudentList:
    2. def __init__(self):
    3. self.stulist = []
    4. ...
    5. #以下增加导入和导出学生信息功能
    6. def load(self,fn):
    7. #导入学生信息
    8. if os.path.exists(fn):
    9. try:
    10. with open(fn,'r',encoding = 'utf-8') as fp:
    11. while True:
    12. fs = fp.readline().strip('\n')
    13. if not fs:
    14. break
    15. else:
    16. stu = Student(*fs.split(','))
    17. if self.__exists(stu.no):
    18. print('该学号已存在')
    19. else:
    20. self.stulist.append(stu)
    21. print('导入完毕')
    22. except:
    23. print('error...') #要导入的文件不是utf-8编码,或是字段数不匹配等
    24. else:
    25. print('要导入的文件不存在')
    26. def save(self,fn):
    27. #导出学生信息
    28. with open(fn,'w',encoding = 'utf-8') as fp:
    29. for stu in self.stulist:
    30. fp.write(stu.no + ',')
    31. fp.write(stu.name + ',')
    32. fp.write(str(stu.chinese) + ',')
    33. fp.write(str(stu.math) + ',')
    34. fp.write(str(stu.english) + '\n')
    35. print("导出完毕")

    我们新建一个csv文件输入如下内容:

    005,TEST02,87,65,99

    006,TEST03,90,85,85

    然后运行程序,通过如下菜单导入此文件数据

    导入完成后输入show命令我们可以看到相关导入数据:

    接着我们输入save命令来导出文件:

    打开文档如下:

    学生成绩管理模块

    根据我们整体的系统架构,我们先改造下主菜单,增加score菜单对应学生统计的函数

    1. scoreprocess():
    2. def main(self):
    3. #主控函数
    4. while True:
    5. print('学生信息管理系统V1.0'.center(24,'='))
    6. print('info -------学生基本信息管理')
    7. print('score -------学生成绩统计')
    8. print('exit -------退出系统')
    9. print(''.center(32,'='))
    10. s = input('main>').strip().lower()
    11. if s == 'info':
    12. self.infoprocess()
    13. elif s == 'score':
    14. self.scoreprocess()
    15. elif s == 'exit':
    16. break
    17. else:
    18. print('输入错误')

    接着我们定义函数scoreprocess()用于学生成绩统计:

    1. def scoreprocess(self):
    2. #学生成绩统计
    3. print('学生成绩统计'.center(24,'='))
    4. print('avg --------课程平均分')
    5. print('max --------课程最高分')
    6. print('min --------课程最低分')
    7. print('return --------返回')
    8. print(''.center(30,'='))
    9. while True:
    10. s = input('score>').strip().lower()
    11. if s == 'avg':
    12. self.scoreavg()
    13. elif s == 'max':
    14. self.scoremax()
    15. elif s == 'min':
    16. self.scoremin()
    17. elif s == 'return':
    18. break
    19. else:
    20. print('输入错误')

    最后定义三个函数统计平均,最高和最低分:

    1. def scoreavg(self):
    2. #求课程平均分
    3. length = len(self.stulist)
    4. if length > 0:
    5. chinese_avg = sum([stu.chinese for stu in self.stulist])/length
    6. math_avg = sum([stu.math for stu in self.stulist])/length
    7. english_avg = sum([stu.english for stu in self.stulist])/length
    8. print('语文成绩平均分是:%.2f'%chinese_avg)
    9. print('数学成绩平均分是:%.2f'%math_avg)
    10. print('英语成绩平均分是:%.2f'%english_avg)
    11. else:
    12. print('尚没有学生成绩...')
    13. def scoremax(self):
    14. #求课程最高分
    15. if len(self.stulist) > 0:
    16. chinese_max = max([stu.chinese for stu in self.stulist])
    17. math_max = max([stu.math for stu in self.stulist])
    18. english_max = max([stu.english for stu in self.stulist])
    19. print('语文成绩最高分是:%d'%chinese_max)
    20. print('数学成绩最高分是:%d'%math_max)
    21. print('英语成绩最高分是:%d'%english_max)
    22. else:
    23. print('尚没有学生成绩...')
    24. def scoremin(self):
    25. #求课程最低分
    26. if len(self.stulist) > 0:
    27. chinese_min = min([stu.chinese for stu in self.stulist])
    28. math_min = min([stu.math for stu in self.stulist])
    29. english_min = min([stu.english for stu in self.stulist])
    30. print('语文成绩最低分是:%d'%chinese_min)
    31. print('数学成绩最低分是:%d'%math_min)
    32. print('英语成绩最低分是:%d'%english_min)
    33. else:
    34. print('尚没有学生成绩...')

    运行程序:

    输入score:

    平均分:

    最高分

    最低分

  • 相关阅读:
    用工具实现 Mock API 的整个流程
    Word2Vec
    探索多态的本质【C++】
    PHP Curl请求封装
    如何用 Solidity 创建一个“Hello World”智能合约
    【npm run dev 报错:error:0308010C:digital envelope routines::unsupported】
    私有化轻量级持续集成部署方案--05-持续部署服务-Drone(上)
    设计模式:02观察者模式--labview实现
    立体匹配入门指南(8):视差图、深度图、点云
    sqllab第十七关通关笔记
  • 原文地址:https://blog.csdn.net/agelee/article/details/126725221
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号