1、郑州大学现远程教育面向对象程序设计郑州大学现代远程教育面向对象程序设计(计算机科学与技术本科)课程作业 请保存为WORD格式的文档,登陆学习平台(要求:建议13选一题,4-7选一题,8-10任选一题,且所有学生题目要相同。1、 编写一个程序模拟超市的收银系统。具体要求如下:(1)提示输入顾客买的商品名称和单价(以元为单位),直到所有购买商品输入完毕(空格键表示输入完毕)。(2)在屏幕上输出顾客购买的所有商品的名称和单价,每种商品的总价,顾客应付钱数;(3)提示输入实际交的钱数,计算应找钱数并显示。(4)按回车键返回第一步,按ESC 键推出程序运行。程序运行结果如下所示:输入商品名称:薯片输入单
2、价:1.00输入数量:10输入商品名称:洗衣粉输入单价:9.8输入数量:1(按空格键,退出输入过程)商品名称 单价 数量 总价薯片 1.00 10 10洗衣粉 9.8 1 9.8应付: 19.8(元)输入实际付: 20元找零:0.2元(按回车键返回第一行)商品名称:。(按ESC 则退出)2、 编写一个程序实现24小时计时转换为12进制计时。具体要求:以四位整数表示24小时计时法时间,pm表示下午,am表示上午运行示例:例1:输入24小时计时法时间: 174312小时计时法时间:1743 是 5.43 p.m.例2:输入24小时计时法时间: 090412小时计时法时间:0904 is 9.04
3、a.m.3、 编写一个简单的加密程序:输入四位整数,按照以下加密算法处理后,生成加密后的四位整数输出。加密算法:(每一位的数字8)mod 10,处理后的数字中第1位和第四位交换,第2位和第3位交换。运行示例:输入四位整数: 7523加密后的四位整数是: 10354、 编写一个简单的学生成绩管理系统。具体要求如下:建立两个类 StudentList 和StudentListTester. StudentList类用数组存放一组Student对象,记录当前数组中记录的学生数量。.设计方法:在数组中增加一个Student对象 ;检查数组是否已满,是否空;获得数组中某个位置的Student对象,获得S
4、tudent对象的众数。其他具体内容请看下图:StudentListTester类用于测试StudentList类.程序首先提示输入数组大小,然后创建指定大小的StudentList类。程序允许用户从下面的菜单中连续选择:1 增加一个学生2 显示数组中所有的学生以及他们的成绩3 显示数组中平均成绩40的学生以及他们的成绩4 显示数组中姓张的学生以及他们的成绩5 退出如果选择1,提示用户输入学生的姓名,学号,以及数学,英语和程序设计三门课的成绩。如果选择2,显示当前数组中所有学生的名字,数量,每个人的各门课程的成绩和平均成绩如果选择3和4显示那些满足条件的学生的情况。选择5,显示退出信息后退出程
5、序。程序运行示例:输入学生最大数量: 31 增加一个学生2 显示数组中所有的学生以及他们的成绩3 显示数组中平均成绩40的学生以及他们的成绩4 显示数组中姓张的学生以及他们的成绩5 退出输入选择 1-5: 1输入学生名字: 张三输入学号: 9908输入 张三 的成绩数学? 48英语? 62程序设计? 55* 张三已经加入学生名单 *1 增加一个学生2 显示数组中所有的学生以及他们的成绩3 显示数组中平均成绩40的学生以及他们的成绩4 显示数组中姓张的学生以及他们的成绩5 退出输入选择 1-5: 1输入学生名字: 李四输入学号: 9904输入 李四 的成绩数学? 67英语? 53程序设计? 75
6、* 李四已经加入学生名单 *输入选择 1-5: 1输入学生名字: 人似惊鸿输入学号: 9811输入人似惊鸿的成绩数学? 25英语? 30程序设计? 35*人似惊鸿已经加入学生名单 *1 增加一个学生2 显示数组中所有的学生以及他们的成绩3 显示数组中平均成绩40的学生以及他们的成绩4 显示数组中姓张的学生以及他们的成绩5 退出输入选择 1-5: 1* 不能增加,学生数量已满 *1 增加一个学生2 显示数组中所有的学生以及他们的成绩3 显示数组中平均成绩40的学生以及他们的成绩4 显示数组中姓张的学生以及他们的成绩5 退出输入选择 1-5: 2* 学生信息 *张三: 9908数学: 48 英语:
7、 62 程序设计: 55 平均成绩: 55.0李四: 9904数学: 67 英语: 53 程序设计: 75 平均成绩: 65.0人似惊鸿: 9811数学: 25 英语: 30 程序设计: 35 平均成绩: 30.01 增加一个学生2 显示数组中所有的学生以及他们的成绩3 显示数组中平均成绩40的学生以及他们的成绩4 显示数组中姓张的学生以及他们的成绩5 退出输入选择 1-5: 3* 学生信息 *人似惊鸿: 9811数学: 25 英语: 30 程序设计: 35 平均成绩: 30.01 增加一个学生2 显示数组中所有的学生以及他们的成绩3 显示数组中平均成绩40的学生以及他们的成绩4 显示数组中姓
8、张的学生以及他们的成绩5 退出输入选择 1-5: 4* 学生信息 *张三: 9908数学: 48 英语: 62 程序设计: 55 平均成绩: 55.0 1 增加一个学生2 显示数组中所有的学生以及他们的成绩3 显示数组中平均成绩40的学生以及他们的成绩4 显示数组中姓张的学生以及他们的成绩5 退出输入选择 1-5: 5* 再见 *5、 编写一个自动点歌系统具体要求:创建两个类PlayList 和 JukeBox.。PlayList类用数组放一组字符串,还记录了当前字符串的个数。这个类中要设计方法完成以下功能:增加一个字符串,删除一个字符串,获得指定位置的字符串,获得当前字符串的个数,检查字符串
9、数组是否为空,是否已满。其他内容见UML图:JukeBox类用来测试PlayList类,,它模拟点歌操作。每一个字符串代表歌名。程序首先提示用户输入歌曲的最大个数,然后创建Pllayist对象。接着程序允许用户选择:1 增加一首歌曲2 播放第一首3 显示歌曲列表4 退出选项 1, 输入歌曲的名字和歌手的名字选项 2 显示第一首歌的名字,然后删除选项 3 显示当前所有歌曲列表选项4:显示:再见,退出程序程序运行示例:* 点歌台 *歌曲最大个数: 21 增加歌曲2 播放第一首3 显示歌曲列表4 退出选择 1-4: 3* 没有歌曲 *1 增加歌曲2 播放第一首3 显示歌曲列表4 退出选择 1-4:
10、1输入歌曲名称和歌手名字 周杰伦:听妈妈的话* 加入歌曲 *周杰伦:听妈妈的话1 增加歌曲2 播放第一首3 显示歌曲列表4 退出选择 1-4: 1输入歌曲名称和歌手名字 S.H.E:Super Star* 加入歌曲 *S.H.E:Super Star1 增加歌曲2 播放第一首3 显示歌曲列表4 退出选择 1-4: 1* 不能增加,歌曲表已满 *1 增加歌曲2 播放第一首3 显示歌曲列表4 退出选择 1-4: 2*现在播放 *周杰伦:听妈妈的话1 增加歌曲2 播放第一首3 显示歌曲列表4 退出选择 1-4: 3*当前歌曲列表 *S.H.E:Super Star1 增加歌曲2 播放第一首3 显示歌
11、曲列表4 退出选择 1-4: 1输入歌曲名称和歌手名字 周杰伦:发如雪* 加入歌曲 *周杰伦:发如雪1 增加歌曲2 播放第一首3 显示歌曲列表4 退出选择 1-4: 3* 当前歌曲列表 *S.H.E:Super Star周杰伦:发如雪1 增加歌曲2 播放第一首3 显示歌曲列表4 退出选择 1-4: 2* 现在播放 *S.H.E:Super Star1 增加歌曲2 播放第一首3 显示歌曲列表4 退出选择 1-4: 6* 无效操作 *1 增加歌曲2 播放第一首3 显示歌曲列表4 退出选择 1-4: 4* 欢迎再次光临,再见 *6、 编写一个简单的工资管理系统。具体要求:设计三个类Employee类
12、,Manager类和HourlyWorker类。Manager类和HourlyWorker类是Employee类的子类。Emloyee类记录职工的姓名和编号,Manager类增加了经理的工资属性;Hwourlyworker记录钟点工每小时的工资数和一个月的工作小时数。每一个类中必须包含构造函数,析构函数,修改和获取所有数据成员的函数,计算职工工资,显示职工姓名和编号的虚函数。主函数中设计一个数组存放所有职工对象。提示用户选择:1 增加一个职工2 显示数组中所有的职工以及他们的工资3 显示数组中所有的经理以及他们的工资4 显示数组中钟点工以及他们的工资5 退出选择1时,输入职工名字,编号,职工类
13、别,工资情况选择2时,显示数组中所有职工的姓名,编号和工资选择3时,显示数组中所有经理的姓名,编号和工资选择4时,显示数组中所有钟点工的姓名,编号和工资选择5,提示“谢谢使用,再会”后,退出。程序运行示例:1 增加一个职工2 显示数组中所有的职工以及他们的工资3 显示数组中所有的经理以及他们的工资4 显示数组中钟点工以及他们的工资5 退出输入选择:1输入职工信息:姓名:张三编号:9904类别:经理月工资:2000*增加一个职工*张三 9904 20001 增加一个职工2 显示数组中所有的职工以及他们的工资3 显示数组中所有的经理以及他们的工资4 显示数组中钟点工以及他们的工资5 退出输入选择:
14、1输入职工信息:姓名:李四编号:9905类别:经理月工资:1000*增加一个职工*李四 9905 10001 增加一个职工2 显示数组中所有的职工以及他们的工资3 显示数组中所有的经理以及他们的工资4 显示数组中钟点工以及他们的工资5 退出输入选择:1输入职工信息:姓名:王五编号:9906类别:钟点工小时工资:10月工作小时数:50*增加一个职工*王五 9906 小时工资:10, 月工作小时数:50 1 增加一个职工2 显示数组中所有的职工以及他们的工资3 显示数组中所有的经理以及他们的工资4 显示数组中钟点工以及他们的工资5 退出输入选择:2*职工工资表*张三 9904 2000李四 990
15、5 1000王五 9906 5001 增加一个职工2 显示数组中所有的职工以及他们的工资3 显示数组中所有的经理以及他们的工资4 显示数组中钟点工以及他们的工资5 退出输入选择:3*经理工资表*张三 9904 2000李四 9905 10001 增加一个职工2 显示数组中所有的职工以及他们的工资3 显示数组中所有的经理以及他们的工资4 显示数组中钟点工以及他们的工资5 退出输入选择:4*钟点工工资表*王五 9906 10 50 5001 增加一个职工2 显示数组中所有的职工以及他们的工资3 显示数组中所有的经理以及他们的工资4 显示数组中钟点工以及他们的工资5 退出输入选择:5*谢谢使用,再会
16、*7、 定义如下整数链表的函数成员class LIST struct NODE int value;NODE *next;NODE (int, NODE *); *head;public:LIST(void);LIST (const LIST &);int find(int value) const;/查找元素value, 若找到返回1, 否则返回0int operator (int k) const; /取表的第k个元素virtual LIST operator+(const LIST&);/ 表的合并运算virtual LIST operator+(int value);/ 插入一个元素v
17、irtual LIST operator-(int value);/ 删除一个元素virtual LIST &operator+=(const LIST&);/ 表的合并运算virtual LIST &operator+=(int value);/ 插入一个元素virtual LIST &operator-=(int value);/ 输出一个元素virtual LIST &operator=(const LIST&);/ 赋值virtual LIST (void); 8、 定义如下集合类的函数成员class SET int *elem; 存放集合元素的动态内存 int count, tota
18、l;目前元素个数及最大元素个数public:SET(int total);SET (const SET &);int find(int val) const; /查找元素val, 若找到返回1, 否则返回0int full(void)const;/集合满时返回1, 否则返回0int empty(void)const;/集合空时返回1, 否则返回0virtual SET operator+(const SET &);/集合的并集virtual SET operator-(const SET &);/集合的差集virtual SET operator*(const SET &);/集合的交集vir
19、tual SET operator(int value);/删除一个元素virtual SET &operator+=(const SET &);/集合的并集virtual SET &operator-=(const SET &);/集合的差集virtual SET &operator*=(const SET &);/集合的交集virtual SET &operator=(const SET &);/删除一个元素virtual SET &operator=(const SET &);virtual SET (void);9、 定义类描述有限状态自动机,状态的输入和输出关系可以描述为链表数据成员
20、:class STATE;class LISTLIST *next;char input;STATE *output;LIST(char in, STATE *out); /私有,仅供STATE使用LIST();friend STATE;class STATE char *name ;/状态名LIST *list; /输入及输出列表static STATE *error;/自动机陷阱public:void enlist (char in, STATE *out);/插入listconst STATE *next(char in) const; /输入in转移到下一个状态const STATE
21、start (char)const;/启动有限自动机STATE(char *name);STATE();使用有限自动机编程解决如下问题:有一人带着狼,羊和草来到河的左岸,左岸只有一条无人摆渡的船。这个人要从左岸过河到右岸,可是这条船最多只能装一个人河其他三者之一,否则便会沉没。如果没有人看管,狼会吃掉羊,或者羊会吃掉草。问如何过河才能保证羊和草的安全。提示:作为有限状态自动机的输入,人单独过河用字符m表示,人带狼过河用字符w表示,人带羊过河用字符s表示,人带草过河用字符g表示,声明有限自动机夫人start,stop以及error状态对象,如果start.start(“smwsgms”)=&stop,则过河成功,否则如果start.start(“smwsgms”)=&error,则过河失败。10、 在二维坐标系上定义GRAPH抽象类,该类具有基点坐标和图形显示等纯虚函数。从该类派生出三角形,圆形,和四边形等特定图形类,从圆类和三角形类派生出圆内接三角形类,并为特定图形类定义相应纯虚函数。定义每一个类的构造函数,析构函数,绘图函数以及相应的数据成员。设计Draw类,其中设计一个数组数据成员存放各种图形对象,设计一个方法绘出每个图形的形状。