C++程序设计上机实验.ppt_第1页
C++程序设计上机实验.ppt_第2页
C++程序设计上机实验.ppt_第3页
C++程序设计上机实验.ppt_第4页
C++程序设计上机实验.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华北电力大学计算机系 实验一考试成绩信息系统 华北电力大学计算机系 一 实验目的通过用C 编写一个学生考试成绩信息系统 强化面向对象程序设计思想 使学生能够将C 程序设计中的面向对象 重载 模板 文件等各种概念 灵活的运用到实际的程序设计中去 华北电力大学计算机系 二 实验要求1 录入课程和选课学生的信息 2 录入成绩3 学生信息和成绩的修改 4 统计学生成绩 5 成绩排序 按成绩排序6 统计成绩分布功能 即各成绩段学生的数量 优 90 100 良 80 90 中 70 80 及格 60 70 不及格 60 并输出统计分布结果 7 查找 能够查找指定学生的各门成绩和平均分及其名次 华北电力大学计算机系 三 实验原理实验使用面向对象的设计思想 在学生成绩考试系统中 主要涉及的是学生和课程 对于所有的学生 都具有共性 因此可以抽象为一个学生类 同理可以得到课程类 华北电力大学计算机系 1 类的设计 实验首先设计两个类 学生类和课程类 并根据面向对象的信息隐蔽原则 设置相应的类成员的访问属性 1 学生类 a 属性 主要包括学生的个人信息 包括学号 姓名 班级 成绩等 b 操作 学生信息的输入 输入函数 学生成绩的设置和获取函数 2 课程类 a 属性 主要包括课程号 课序号 学分 任课教师 选课人数 学生成绩表 b 操作 包括课程信息的录入 录入选课学生信息 录入选课学生的成绩 若成绩为 1表示缺考 成绩分析 成绩排序 显示课程及选课学生信息等 华北电力大学计算机系 2 类模板和函数模板的设计 1 数组类模板的设计 对于某一门课 选课的学生很多 可定义一个数组模板 并将数组模板实例化为学生对象数组 2 无论对什么数据类型的排序 使用的排序算法都是一样的 因此需要定义一个函数模板 用学生类实例化 实现学生的成绩排序 排序算法可选用插入排序 冒泡排序或者选择排序等 华北电力大学计算机系 3 运算符重载的设计 1 学生的信息和成绩以及选课信息要求写入文件并在需要时从文件中读出 需要重载插入 提取运算符 2 学生成绩排序要对学生对象进行比较 赋值等操作 而类实际上是一种复杂数据类型 因此上述这些操作要通过运算符重载 来实现 华北电力大学计算机系 四 实验所需仪器 设备 材料 试剂 本实验基于window平台 使用VC 为开发工具 五 实验预习要求 实验条件 方法及步骤1 理解C 面向对象编程的基本概念 包括类和对象 模板 运算符重载等 2 根据实验要求 画出相应的类图 3 按照类图 编程并实现 华北电力大学计算机系 实验二公司计薪系统 华北电力大学计算机系 一 实验目的类的封装 派生和继承 多态性是C 面向对象程序设计三大特征 本实验通过编写一个简单的公司计薪系统 使学生能够将上述三大特征灵活的运用到实际的编程当中去 提高程序的复用性 华北电力大学计算机系 二 实验要求1 问题描述某公司 员工的薪水每月发一次 每月1日 上报上月个人工作信息 这些信息由会计将信息输入计薪系统 对于该系统要求如下 1 公司主要分为三种员工 经理 时薪人员 销售人员 2 对于任何一位员工 计薪系统都能够 a 计算工资 b 打印该员工的工资单 c 员工也可以查询自己的工资 3 三种员工的薪金计算方式不同 a 经理 固定月薪 b 时薪人员 时薪 每月工时 c 销售人员 时薪 每月工时 佣金 销售额 4 总经理拥有特殊权利 可以更改某人时薪和佣金 华北电力大学计算机系 2 研究计薪系统的问题域 根据研究对象的共性抽取出类 并抽象出各个类之间的派生关系 并画出类图 3 确定哪些类为基类 哪些为派生类 并分别确定基类和派生类的成员属性和操作 华北电力大学计算机系 三 实验原理1 类和派生的使用在公司计薪系统中 主要涉及的是三类雇员 对于所有的雇员 都具有共性普通员工的基本信息 包括个人信息 薪金等 只是计算方法和相应的操作不同 如下图所示 华北电力大学计算机系 classEmployee private charm name 30 public Employee Employee constchar nm Employee Employee m name 0 0 Employee Employee constchar nm strcpy m name nm 华北电力大学计算机系 classManager publicEmployee private floatm salary public Manager constchar nm voidsetSalary floatcomputePay Manager Manager constchar nm Employee nm m salary 15000 0 voidManager setSalary floatsalary m salary salary floatManager computePay returnm salary 华北电力大学计算机系 classWage publicEmployee private floatm wage floatm hours public Wage constchar nm voidsetWage floatwg voidsetHours floathrs floatcomputePay Wage Wage constchar nm Employee nm m wage 250 0 m hours 40 0 voidWage setWage floatwg m wage wg voidWage setHours floathrs m hours hrs floatWage computePay returnm wage m hours 华北电力大学计算机系 classSales publicWage private floatm comm floatm sales public Sales constchar nm voidsetCommission floatcomm voidsetSales floatsale floatcomputePay Sales Sales constchar nm Wage nm m comm m sale 0 0 voidSales setCommission floatcomm m comm comm voidSales setSales floatsale m sales sale floatSales computePay Wage computePay m comm m sales 华北电力大学计算机系 考察Sales类具有的成员charm name 30 floatm wage floatm hours floatm comm floatm sales voidsetWage floatwg voidsetHours floathrs voidsetCommission floatcomm voidsetSales floatsale voidcomputePay 华北电力大学计算机系 2 多态的使用我们会想以一个通用指针表示所有可能的职员类型 Employee pEmployee WageaWager 陈大 SalesaSales 陈二 ManageraManager 陈三 pEmployee 可以把职员指针指向任何一种职员 好处 程序设计的巨大弹性 譬如 设计一个职员链表 职员指针数组 各个元素都是职员 我们会想以一个循环处理所有职员的computePay 华北电力大学计算机系 虚拟函数与一般化可以体会 上述的while循环其实就是把操作一般化 一般化之所以重要 在于它可以把现在的 未来的情况统统纳入考虑 将来即使有另一种名曰 顾问 的成员 上述计薪循环仍然能够正常 我们需要的是什么呢 依旧以Employee指针代表每一种职员 而又能够在实际指向不同种类之职员调用到不同版本之computePay的能力 华北电力大学计算机系 修改 利用多态性 将computePay函数提到基类Employee中 并在前面加上virtual使之成为虚拟函数 然后Employee的派生类中根据各个具体的雇员类型重新定义computePay函数 这样 定义一个Employee类型的指针代表每一种雇员 通过动态联编 能够在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论