Python - 学生选课系统思路讲解

时间:2024-03-01 10:44:39

选课系统

当你看到这的时候,恭喜你,Python重要的基础课程已经学习完毕。而面向对象部分则是基础课程中的一个重要转折点。从面向对象开始,你要试着从面向对象的思想出发,来编写程序,尤其是将来开发一些功能复杂的系统。而本章的系统则是精心设计而成的。我们学过的内容都能在该系统中体现。所以,要用心完成本系统。

在完成系统的时候,请务必回顾之前章节所学,让我们在实现系统的过程中更加得心应手。

7.1 功能概述

“学生选课系统”,顾名思义,本系统必须实现的需求就是选课。

7.2 需求分析

既然我们主要实现的功能是“选课”,那么我们要实现的核心逻辑都要围着选课展开。

7.2.1 角色设计

首先我们来思考:学生选课,那么学生由谁来创建?课程由谁来创建?学生能否创建课程?很明显,从我们现实角度来说,学生只能选择课程而不能创建课程!那么,课程应该由那个“谁”来创建。而学生也不能是凭空而来的。这里我们也让那个“谁”来创建学生。所以,我们在这里可以确定三个角色:

  • 可以选择课程的——学生
  • 可供学生选择的——课程
  • 可以创建学生和课程的那个“谁”——管理员

7.2.2 功能设计

这里考虑到大家都是初学者,所以,尽量的选择一些简单的功能实现。

  • 登录,管理员和学生都可以登录,并且登录后可以自动区分身份。

  • 选课,学生可以*的浏览课程信息,并挑选课程。

  • 信息的创建,无论是学生信息还是课程信息,或是其他的信息,都由管理员创建。

  • 查看选课情况,学生可以查看自己的选课情况,而管理员可以查看所有的学生信息(包括选课情况)。

7.2.3 流程设计

有了角色和基本的功能,那么整个系统该是怎么样的一个呈现?先干什么后干什么?就是我们要考虑的事情了。

这个系统的流程可以是这样的:

  • 登录,用户输入用户名和密码。
  • 判断身份,在登录成功的时候,就应该可以直接判断出登录用户的身份,是学生还是管理员。

对于学生用户来说,登录之后有四个功能选项:

  • 查看所有课程
  • 选择课程
  • 查看所选择的课程
  • 退出程序

对于管理员用户来说,管理员除了要是实现基本的查看功能,还有很多创建工作要做。

  • 创建课程

  • 创建学生信息(创建学生账号)

  • 查看所有课程信息

  • 查看所有学生

  • 查看所有学生的选课情况

  • 退出程序

7.2.4 程序设计

对于相对的复杂的功能实现,我们优先选择使用面向对象编程,而选择面向对象编程之后,就要时刻思考如何设计类和对象的关系,让程序结构更加清晰明朗。

前面的分析中,我们需要实现三个角色。那么可以对应用三个类来实现。根据角色的不同,我们有针对性的为类设计属性和方法。

  • 课程类,课程类并没有什么动作,只有一些必要的属性。

    属性:课程名称、价格、周期。

    方法:暂无

  • 学生,学生就要有必要的属性和方法了。

    属性:姓名、所选课程。

    方法:查看所有课程、选择课程、查看选择的课程、退出程序。

  • 管理员,管理员的属性可以仅有一个姓名就好了,其他的就是方法设计了。

    属性:姓名。

    方法:创建课程、创建学生信息(创建学生账号)、查看所有课程、查看所有学生、查看所有学生的选课情况、退出程序。

这里需要说明的是,课程属性缺少一个任教老师属性,但仔细分析你会发现,老师也是一个角色,为了不增加难度,这里课程属性这里,不再添加老师属性,但你可以当成一个升级功能来拓展实现。

7.2.5 流程图

根据上述分析,我们将主要功能汇总成流程图。

上述流程图,清晰的展示了程序的执行流程及具体的功能。所以,为了更方便系统的实现,请画出你的流程图。

7.2.6 数据库设计

现在,不得不考虑一个尴尬的事情了,当我们创建完学生或课程信息之后,存在哪?是的,目前我们没有学习数据库。所以,暂时我们只能想办法把数据存储到普通文件中。那么该怎么构建文件呢,我们在后面会详细说明。