1-Python - 学生选课系统思路讲解
选课系统
当你看到这的时候,恭喜你,Python重要的基础课程已经学习完毕。而面向对象部分则是基础课程中的一个重要转折点。从面向对象开始,你要试着从面向对象的思想出发,来编写程序,尤其是将来开发一些功能复杂的系统。而本章的系统则是精心设计而成的。我们学过的内容都能在该系统中体现。所以,要用心完成本系统。
在完成系统的时候,请务必回顾之前章节所学,让我们在实现系统的过程中更加得心应手。
7.1 功能概述
“学生选课系统”,顾名思义,本系统必须实现的需求就是选课。
7.2 需求分析
既然我们主要实现的功能是“选课”,那么我们要实现的核心逻辑都要围着选课展开。
7.2.1 角色设计
首先我们来思考:学生选课,那么学生由谁来创建?课程由谁来创建?学生能否创建课程?很明显,从我们现实角度来说,学生只能选择课程而不能创建课程!那么,课程应该由那个“谁”来创建。而学生也不能是凭空而来的。这里我们也让那个“谁”来创建学生。所以,我们在这里可以确定三个角色:
- 可以选择课程的——学生
- 可供学生选择的——课程
- 可以创建学生和课程的那个“谁”——管理员
7.2.2 功能设计
这里考虑到大家都是初学者,所以,尽量的选择一些简单的功能实现。
-
登录,管理员和学生都可以登录,并且登录后可以自动区分身份。
-
选课,学生可以自由的浏览课程信息,并挑选课程。
-
信息的创建,无论是学生信息还是课程信息,或是其他的信息,都由管理员创建。
-
查看选课情况,学生可以查看自己的选课情况,而管理员可以查看所有的学生信息(包括选课情况)。
7.2.3 流程设计
有了角色和基本的功能,那么整个系统该是怎么样的一个呈现?先干什么后干什么?就是我们要考虑的事情了。
这个系统的流程可以是这样的:
- 登录,用户输入用户名和密码。
- 判断身份,在登录成功的时候,就应该可以直接判断出登录用户的身份,是学生还是管理员。
对于学生用户来说,登录之后有四个功能选项:
- 查看所有课程
- 选择课程
- 查看所选择的课程
- 退出程序
对于管理员用户来说,管理员除了要是实现基本的查看功能,还有很多创建工作要做。
-
创建课程
-
创建学生信息(创建学生账号)
-
查看所有课程信息
-
查看所有学生
-
查看所有学生的选课情况
-
退出程序
7.2.4 程序设计
对于相对的复杂的功能实现,我们优先选择使用面向对象编程,而选择面向对象编程之后,就要时刻思考如何设计类和对象的关系,让程序结构更加清晰明朗。
前面的分析中,我们需要实现三个角色。那么可以对应用三个类来实现。根据角色的不同,我们有针对性的为类设计属性和方法。
-
课程类,课程类并没有什么动作,只有一些必要的属性。
属性:课程名称、价格、周期。
方法:暂无
-
学生,学生就要有必要的属性和方法了。
属性:姓名、所选课程。
方法:查看所有课程、选择课程、查看选择的课程、退出程序。
-
管理员,管理员的属性可以仅有一个姓名就好了,其他的就是方法设计了。
属性:姓名。
方法:创建课程、创建学生信息(创建学生账号)、查看所有课程、查看所有学生、查看所有学生的选课情况、退出程序。
这里需要说明的是,课程属性缺少一个任教老师属性,但仔细分析你会发现,老师也是一个角色,为了不增加难度,这里课程属性这里,不再添加老师属性,但你可以当成一个升级功能来拓展实现。
7.2.5 流程图
根据上述分析,我们将主要功能汇总成流程图。
上述流程图,清晰的展示了程序的执行流程及具体的功能。所以,为了更方便系统的实现,请画出你的流程图。
7.2.6 数据库设计
现在,不得不考虑一个尴尬的事情了,当我们创建完学生或课程信息之后,存在哪?是的,目前我们没有学习数据库。所以,暂时我们只能想办法把数据存储到普通文件中。那么该怎么构建文件呢,我们在后面会详细说明。