学生选课系统 —— 作业需求
引言
亲爱的同学们,当你们打开这篇作业的时候,恭喜你们,python的基础课程你们已经学完一半了。面向对象是大家在学习过程中的一个重要转折,从这里开始,你们需要切换成另外一种思维来编写程序,这将非常有利于你们未来开发功能复杂的项目,所以请大家一定要用心来完成这部分的作业。
从这部分开始,我们的作业说明也变得更加复杂,因为所有的程序开发都是从核心功能出发的,所以我们在开发的时候首先要完成的总是最主要的功能,以后大家还要慢慢学会自己提取“核心的功能”、进行“需求分析”,“程序设计”等工作来保证你们能够顺利成长为一个优秀的程序员。但是由于各位是初学者,所以先由我们来替你们完成这些基础工作,你们只管写代码就好了。
核心功能
功能概述
学生选课
需求分析
从“学生选课系统” 这几个字就可以看出来,我们最核心的功能其实只有 选课。
角色
学生、管理员
功能
登陆 : 管理员和学生都可以登陆,且登陆之后可以自动区分身份
选课 : 学生可以自由的为自己选择课程
创建用户 : 选课系统是面向本校学生的,因此所有的用户都应该由管理员完成
查看选课情况 :每个学生可以查看自己的选课情况,而管理员应该可以查看所有学生的信息
工作流程
登陆 :用户输入用户名和密码
判断身份 :在登陆成果的时候应该可以直接判断出用户的身份 是学生还是管理员
学生用户 :对于学生用户来说,登陆之后有三个功能
1、查看所有课程
2、选择课程
3、查看所选课程
4、退出程序
管理员用户:管理员用户除了可以做一些查看功能之外,还有很多创建工作
1、创建课程
2、创建学生学生账号
3、查看所有课程
4、查看所有学生
5、查看所有学生的选课情况
6、退出程序
程序设计
对于复杂的功能,我们首先就应该想到面向对象编程。而要想将面向对象的程序开发好,就应该做好类和对象的分析工作。
选课系统简单的划分其实只有两个角色:管理员和学生。
仔细思考,你会发现有很多想不通的地方,比如学生选课,课从哪里来?
这样一想就会发现,其实课程应该可以由管理员创造出来,那么课程又会有很多属性:价格、周期、课程名、授课老师等等
那么课程也应该是一个类。
综上,本程序最基础的分析已经完毕。接下来我们要把所有的类以及其中的属性、方法设计出来
课程
属性:课程名、价格、周期、老师
*课程并没有什么动作,所以我们只设计属性不设计方法。其实这里还可以设计很多属性,比如课程的开始时间、结束时间、教室等等,只要你需要,这些都可以记录下来,但是这里我们为了简化代码,就先不设计这些了。
学生
属性:姓名、所选课程
方法:查看可选课程、选择课程、查看所选课程、退出程序
管理员
属性:姓名
方法:创建课程、创建学生学生账号、查看所有课程、查看所有学生、查看所有学生的选课情况、退出程序
流程图
采分点
1.类的创建和规划 30分
2.登陆自动识别身份 10分
3.管理员创建各种信息 20分
4.学生选课 20分
5.将内存中的数据保存到文件中 10分
6.代码简洁、调理清晰10分