2018年春季学期-面向对象程序设计与实践(C++2)-大作业题目 (1)

2018-10-19 10:51

“面向对象程序设计与实践2”2018年春季学期上机作业

注意事项:

必须提交:3个程序(电子版),1份程序说明(电子版),1份课程设计报告封面(单人版)(纸版)。程序说明是word文件,内容至少包含:整个程序的总体结构说明,以及实现中的想法、经验、教训等,要求组织结构合理,格式不限; ● ●

交给各小班学委,由小班学委统一上交;

每个人一个目录,每个目录下3个zip或rar压缩文件,每个文件对应一个作业题目;另外还有一个word文档,是相应的程序说明; ● ● ● ●

个人目录的命名格式:班级--学号--姓名; 压缩文件命名格式:程序X--学号--姓名; 不要提交obj等中间文件,太占空间。

注意完成题目要求,先有系统的整体设计方案,再去分三阶段逐步实现系统,避免后期程序改动巨大。 ● ●

若能对系统功能进行完善,或代码结构良好的,可适当加分。

同学们需在第11周(5月18日)、第13周(6月1日)、第16周(6月22日)分别完成三个题目的验收,以减轻临近期末时验收程序的压力,过时不候。 ●

上机地点:机房沙D-N01/03,时间:每周五上午08:00—09:50(即本课程上课时间,排除课堂教学、放假及运动会时间),验收地点:机房沙D-N01/03。对题目有疑问的(题意或者实现思路等),欢迎与任课教师及助教沟通和讨论。 ●

本课程交流QQ群: ? 群名:面向对象2018春 ? 群号:601420712

程序一:学生成绩管理系统(初级版)(45分,抄袭或被抄袭为0分)

?

目的

通过学生成绩管理系统的设计,培养学生综合利用C++语言进行程序设计的能力,提高

1

软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计的能力。 ?

功能要求(实现下列所有功能)

1、 实现两种用户角色:学生、教师。

a) 学生角色有学号、姓名、学院、班级等信息; b) 教师角色有工号、姓名、学院、任课课程等信息。 2、 实现两种课程:必修课、选修课。

a) 必修课和选修课的公共属性包括:课程编号、课程名称、课程学分等;

b) 必修课和选修课的不同属性包括:绩点计算方式,两者不同,但必修课的权重更高。

可自行设计计算公式,或者使用题目提示中的公式。

3、 实现登录和注销功能。

a) 学生、老师分别可以登录系统,使用各自可用的系统功能; b) 注销后,程序返回登录页面,供其他人使用。 4、 实现选修课的选课功能,仅学生可用。

a) 学生可查看所有可选的选修课,并从中选择自己的选修课; b) 学生可放弃某门已选的选修课,但成绩已提交后不可弃选。 c) 必修课的选课学生为预先设置,不能选择。 5、 实现课程的查看功能,学生和教师的功能有所不同。

a) 学生可查看自己的所有课程,包括必修课和选修课(但呈现方式要区分开); b) 教师可查看自己的所有课程,包括必修课和选修课(但呈现方式要区分开); c) 教师可查看自己课程的所有选课学生名单,以及查看指定选课学生的学生信息; d) 学生和教师均可查看所有课程,包括必修课和选修课(但呈现方式要区分开)。 6、 实现课程成绩的录入、修改、提交操作,仅老师可用。

a) 任课教师录入、修改、提交指定选课学生的课程成绩; b) 课程成绩在提交后不可修改; c) 课程成绩在提交后,才可被学生看到。

7、 实现课程成绩和绩点的计算和查看功能,仅学生可用。

a) 学生可查看自己每门课程的成绩和绩点;

b) 课程绩点:由课程成绩、课程学分的加权计算结果,必修课和选课修的计算公式不

同;公式可自定义,或者参考下面的公式。

8、 教师数不少于3人,学生数不少于4人,必修课和选修课各自不少于3门。每个必修课

的学生不少于2人,每个学生必修课和选修课均不少于两门。 9、 要求提供字符操作界面。若提供图形界面的,将适当加分。 10、

尽可能降低类的耦合度,特别要注意界面与业务逻辑的解耦,以及学生/教室与课

程之间的解耦。

2

? 考核点

1、 采用面向对象的设计思想,定义相关的类,并使用继承、多态、虚函数等语法知识进行

设计和实现;

2、 使用容器类来保存和管理内部数据;

3、 代码中使用异常处理机制,即try/catch机制,并能演示出异常产生和处理情况; 4、 必须使用分离式编译,各个类实现于自身的.h和.cpp文件中。 ?

提示

1. 可设计课程类Course,以及两个子类:必修课、选修课,自行命名。课程绩点的计算,

可设计为虚函数。

2. 课程绩点计算公式(供参考,也可自行定义,但必修课和选修课应不同)。

a) 必修课绩点 b) 选修课绩点

本人成绩

课程成绩选课学生

课程学分

本人成绩

课程学分

3. 本题不要求保存程序内部数据状态,即重启后数据可重置。 4. 异常的产生场景可自行设计,两种场景可供参考。

a) 使用bad_cast异常,C++标准中定义,在dynamic_cast转换引用类型失败时产

生;

b) 使用自定义异常,可自定义异常类、异常产生场景,如被零除等,但场景应当合

理。

程序二:学生成绩管理系统(高级版)(40分,抄袭或被抄袭为0分)

?

目的

在程序一的功能基础之上,继续完善和丰富学生成绩管理系统的功能,并在完善过程中学习和体会程序设计和代码重构等思想和实践过程。 ?

功能要求(实现下列所有功能)

1、 实现所有数据的文件存取功能,即重启程序以后可以访问上次使用后的数据。

a) 数据包括:学生信息、教师信息、课程信息、选课信息、课程成绩等。 2、 实现排序功能,教师和学生的功能有所不同。

a) 教师在查看任课课程的成绩时,可查看按“升序”或“降序”排序后的学生名单和

成绩等信息,可对学号或成绩进行排序;

b) 学生在查看自己的课程时,可查看按“升序”或“降序”排序后的课程列表、成绩、

绩点等信息,可对成绩或绩点进行排序。

3、 要求提供字符操作界面。若提供图形界面的,将适当加分。 ?

考核点

3

1、 本题目代码必须在程序一的代码基础上修改完成;

2、 文件存取操作通过重载运算符“>>”和“<<”来完成; 3、 文件存取操作应进行异常处理; 4、 排序操作通过泛型算法来完成。 ?

提示

1、 文件格式可自选,文本文件或二进制文件均可。

程序三:学生成绩管理系统(网络版)(15分,抄袭或被抄袭为0分)

?

目的

在程序二的功能基础之上,继续完善和丰富学生成绩管理系统的功能,并在完善过程中学习和体会程序设计和代码重构等思想和实践过程。 ?

功能要求(实现下列所有功能)

1、 实现程序的网络访问功能;

2、 要求提供字符操作界面。若提供图形界面的,将适当加分。 3、 若支持多用户操作,且多用户操作结果可实时同步,将适当加分。 ?

考核点

1、 本题目代码必须在程序二的代码基础上修改完成; 2、 网络访问功能应进行异常处理。 ?

提示

1、 网络访问功能可使用Socket API,具体概念和用法自行搜索和学习; 2、 可采用客户端/服务器(C/S)处理模型。

a) 客户端主要完成界面交互功能,如接收用户输入数据、显示服务端处理结果等; b) 服务端主要完成存储和计算等处理功能,如完成登录/注销操作、存取数据、处理

排序等。

4


2018年春季学期-面向对象程序设计与实践(C++2)-大作业题目 (1).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:课程基本理论与课程改革档

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: