当前位置: 首页 > news >正文

Python学生成绩管信息理系统(面向对象)(学生信息篇)

目录

任务描述

系统业务流程设计

学生基本信息管理模块

学生类的设计与实现

学生管理类的设计与实现

结语


任务描述

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

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

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

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

系统业务流程设计

学生信息管理系统启动后,首先进入系统主界面,等待用户输入命令选择相应的功能。

如果用户输入“info”命令,则进入学生基本信息管理子功能模块。

在学生基本信息管理界面,用户通过输入相应的命令进行学生基本信息的增、删、改、显示等操作。

如果用户输入“score”命令,则进入学生成绩管理子功能模块。

在学生成绩管理界面用户可选择相应的功能进行成绩处理。

学生基本信息管理模块

学生类的设计与实现

学生信息管理模块中每个学生的基本信息有学号、姓名、语文成绩、数学成绩和英语成绩,设计一个学生类,包含学号、姓名、语文成绩、数学成绩和英语成绩等数据成员,然后添加一个构造方法,用于实例化时可直接传入相应的参数来创建学生对象,代码如下:

class Student:
    def __init__(self,no,name,chinese,math,english):
        self.no = no
        self.name = name
        self.chinese = int(chinese)
        self.math = int(math)
        self.english = int(english)   

学生管理类的设计与实现

设计一个学生信息管理类StudentList用于实现对所有学生信息的管理,如学生信息的添加、删除、修改和显示等功能。

class StudentList:
    def __init__(self):
        self.stulist = []

    def show(self):
        #显示学生信息
        print('{:8}\t{:8}\t{:8}\t{:8}\t{:8}'
              .format('学号','姓名','语文','数学','英语'))
        for stu in self.stulist:            
            print('{:8}\t{:8}\t{:<8}\t{:<8}\t{:<8}'
              .format(stu.no,stu.name,stu.chinese,stu.math,stu.english))
            

    def insert(self):
        #添加学生信息
        while True:
            no = input('学号:')
            name = input('姓名:')
            chinese = input('语文成绩:')
            math = input('数学成绩:')
            english = input('英语成绩:')
            stu = Student(no,name,chinese,math,english)
            self.stulist.append(stu)
            choice = input('继续添加(y/n)?').lower()
            if choice == 'n':
                break


    def delete(self):
        #删除学生信息
        while True:
            no = input('请输入要删除的学生学号:')
            for stu in self.stulist[::]:
                if stu.no == no:
                    self.stulist.remove(stu)
                    print('删除成功')
                    break
            else:
                print('该学号不存在')
            choice = input('继续删除(y/n)?').lower()
            if choice == 'n':
                break


    def update(self):
        #修改学生信息
        while True:
            no = input('请输入要修改的学生学号:')
            for stu in self.stulist:
                if stu.no == no:
                    stu.name = input('姓名:')
                    stu.chinese = input('语文成绩:')
                    stu.math = input('数学成绩:')
                    stu.english = input('英语成绩:')
                    print('修改成功')
                    break
            else:
                print('该学号不存在')
            choice = input('继续修改(y/n)?').lower()
            if choice == 'n':
                break

然后定义一个打印菜单的模块:

 def print_menu(self):
        #打印菜单
        print('学生基本信息管理'.center(20,'-'))
        print('insert--------添加学生信息')
        print('delete--------删除学生信息')
        print('update--------修改学生信息')
        print('show----------显示学生信息')
        print('return--------返回')
        print('-'*28)

最后定义主函数:

def main(self):
        #主控函数
        self.print_menu()
        while True:
            s = input('info>').strip().lower()
            if s == 'show':
                self.show()
            elif s == 'insert':
                self.insert()
            elif s == 'delete':
                self.delete()
            elif s == 'update':
                self.update()
            elif s =='return':
                break
            else:
                print('输入错误')

if __name__ == '__main__':
    st = StudentList()
    st.main()
完成之后的完整代码如下:

class Student:
    def __init__(self,no,name,chinese,math,english):
        self.no = no
        self.name = name
        self.chinese = int(chinese)
        self.math = int(math)
        self.english = int(english)    


class StudentList:
    def __init__(self):
        self.stulist = []

    def show(self):
        #显示学生信息
        print('{:8}\t{:8}\t{:8}\t{:8}\t{:8}'
              .format('学号','姓名','语文','数学','英语'))
        for stu in self.stulist:            
            print('{:8}\t{:8}\t{:<8}\t{:<8}\t{:<8}'
              .format(stu.no,stu.name,stu.chinese,stu.math,stu.english))
            

    def insert(self):
        #添加学生信息
        while True:
            no = input('学号:')
            name = input('姓名:')
            chinese = input('语文成绩:')
            math = input('数学成绩:')
            english = input('英语成绩:')
            stu = Student(no,name,chinese,math,english)
            self.stulist.append(stu)
            choice = input('继续添加(y/n)?').lower()
            if choice == 'n':
                break


    def delete(self):
        #删除学生信息
        while True:
            no = input('请输入要删除的学生学号:')
            for stu in self.stulist[::]:
                if stu.no == no:
                    self.stulist.remove(stu)
                    print('删除成功')
                    break
            else:
                print('该学号不存在')
            choice = input('继续删除(y/n)?').lower()
            if choice == 'n':
                break


    def update(self):
        #修改学生信息
        while True:
            no = input('请输入要修改的学生学号:')
            for stu in self.stulist:
                if stu.no == no:
                    stu.name = input('姓名:')
                    stu.chinese = input('语文成绩:')
                    stu.math = input('数学成绩:')
                    stu.english = input('英语成绩:')
                    print('修改成功')
                    break
            else:
                print('该学号不存在')
            choice = input('继续修改(y/n)?').lower()
            if choice == 'n':
                break


    def print_menu(self):
        #打印菜单
        print('学生基本信息管理'.center(20,'-'))
        print('insert--------添加学生信息')
        print('delete--------删除学生信息')
        print('update--------修改学生信息')
        print('show----------显示学生信息')
        print('return--------返回')
        print('-'*28)
    
    def main(self):
        #主控函数
        self.print_menu()
        while True:
            s = input('info>').strip().lower()
            if s == 'show':
                self.show()
            elif s == 'insert':
                self.insert()
            elif s == 'delete':
                self.delete()
            elif s == 'update':
                self.update()
            elif s =='return':
                break
            else:
                print('输入错误')

if __name__ == '__main__':
    st = StudentList()
    st.main()

运行程序:

学生基本信息菜单

添加学生信息

删除学生信息

修改学生信息

显示学生信息

结语

本篇我们完成了学生成绩管理系统的学习信息部分,新建了一个学生基本信息和学生管理类,实现了面向对象的学生信息管理。

通过学生基本信息管理菜单,我们可以实现学生信息的添加,删除,修改和显示。

下篇我们将完善学生基本信息功能,增加外部文件导入和导出成外部文件的功能。

同时,我们也将实现学生成绩管理系统的成绩统计相关功能。

 

相关文章:

  • 国稻种芯百团计划行动 丰收节贸促会·袁隆平:水稻国际竞争
  • 面试精选:3、史上最详细的Linux精选面试题(二)
  • 2.21 haas506 2.0开发教程 - TTS - Text To Speech (320开发板)
  • Promethues-如何监控容器
  • 测试人生 | 从小团队的业务到独角兽的测开,涨薪超过60%,90后小哥哥凤凰涅槃了
  • 技术门槛高?来看 Intel 机密计算技术在龙蜥社区的实践
  • 532. 数组中的 k-diff 数对
  • 通过mybatis自定义参数类型转换器,进行数据库字段加密脱敏
  • Win10修复IPv6优先访问
  • 盘点市面上七款好用的代码加密混淆工具,你都用过哪款?
  • STC15单片机-按键检测单击或长按(外部中断)
  • 卷积神经网络工作原理图,图卷积神经网络原理
  • 猿创征文 |【C++】C向C++知识的过度(下)
  • 期货行业首批信创试点单位转型实践|信创专题
  • Ambari升级Atlas1.1.0到2.2.0
  • 03Go 类型总结
  • 2017-08-04 前端日报
  • Hexo+码云+git快速搭建免费的静态Blog
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • MaxCompute访问TableStore(OTS) 数据
  • overflow: hidden IE7无效
  • V4L2视频输入框架概述
  • vue的全局变量和全局拦截请求器
  • 机器学习 vs. 深度学习
  • 模型微调
  • 排序(1):冒泡排序
  • 前端技术周刊 2019-01-14:客户端存储
  • 区块链技术特点之去中心化特性
  • 我的业余项目总结
  • 一天一个设计模式之JS实现——适配器模式
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • ​2020 年大前端技术趋势解读
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (区间dp) (经典例题) 石子合并
  • (十五)使用Nexus创建Maven私服
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)甲方乙方——赵民谈找工作
  • .libPaths()设置包加载目录
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 药厂业务系统 CPU爆高分析
  • .Net程序帮助文档制作
  • .Net的C#语言取月份数值对应的MonthName值
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • 。Net下Windows服务程序开发疑惑
  • [20140403]查询是否产生日志
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]