C++定义一个教师类和一个学生类
(完整word版)C++练习题
C++练习题一、编程题:所有的题需要在主函数中定义对象并测试类的功能。
1、编写一个三角形类,有计算面积,显示面积的功能等。
要求有无参数的和带参数的构造函数。
2、设计一个立方体类Box,它能计算并输出立方体的体积和表面积。
要求有无参数的和带参数的构造函数。
3、定义一个国家基类Country,包含国名、首都、人口等属性,派生出省类Province,增加省会城市、人口数量属性.4、利用Clock类,派生一个带“AM”、“PM"的新时钟类NewClock。
5、建立一个基类Building ,用来存储一座楼房的层数、房间数以及它的总平方英尺数。
建立派生类Housing,继承Building,并存储下面的内容:卧室和浴室的数量,另外,建立派生类Office,继承Building,并存储灭火器和电话的数目。
然后,编制应用程序,建立住宅楼对象和办公楼对象,并输出它们的有关数据.6、设计一个建筑物类Building,由它派生出教学楼Teach-Building和宿舍楼类Dorm—Building,前者包括教学楼编号、层数、教室数、总面积等基本信息,后者包括宿舍楼编号、层数、宿舍数、总面积和容纳学生总人数等基本信息.7、定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩.8、声明一个Shape基类,在此基础上派生出Rectangle和Circle类,二者都有GetArea()函数计算对象的面积.使用Rectangle类创建一个派生类Square。
9、使用虚函数编写程序求球体和圆柱体的体积及表面积.由于球体和圆柱体都可以看作由圆继承而来,所以可以定义圆类circle作为基类。
在circle类中定义一个数据成员radius和两个虚函数area()和volume()。
由circle类派生sphere类和column类。
在派生类中对虚函数area()和volume()重新定义,分别求球体和圆柱体的体积及表面积.二、写出程序结果1、某学校对教师每月工资的计算公式如下:固定工资+课时补贴。
C中类与类定义及具体使用方法
C中类与类定义及具体使用方法在C语言中,没有像C++那样的类的概念。
然而,我们可以通过一些技巧和约定来模拟类的行为。
在本文中,我将向您介绍如何在C语言中定义和使用类。
首先,让我们来看看如何定义一个类。
1.结构体定义:在C语言中,可以使用结构体来表示一个类的成员变量。
结构体是一种将不同类型的数据组合在一起的数据类型。
可以通过为该结构体添加成员来定义类的属性。
```ctypedef structint member_variable;//添加其他成员变量} MyClass;```在上面的例子中,我们定义了一个名为MyClass的结构体,并给它添加了一个名为member_variable的成员变量。
您可以根据需要添加其他成员变量。
2.方法定义:在C语言中,方法通常是作为函数来实现的。
我们可以为每个类定义一组特定的函数,这些函数将操作类的实例。
```cvoid init(MyClass *object)object->member_variable = 0;//初始化其他成员变量void set_member_variable(MyClass *object, int value)object->member_variable = value;int get_member_variable(MyClass *object)return object->member_variable;```在上述例子中,我们定义了三个函数:init、set_member_variable 和get_member_variable。
init函数用于初始化类的实例,set_member_variable函数用于设置成员变量的值,get_member_variable函数用于获取成员变量的值。
接下来,让我们看看如何使用定义的类。
1.实例化对象:要创建类的实例,我们需要声明一个结构体变量,并使用init函数对其进行初始化。
大学C 上机实验题目(版)
20XX年复习资料大学复习资料专业:班级:科目老师:日期:实验前言(建议认真阅读)一、上机实验的目的上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解C++语言的基本结构和程序设计方法。
通过亲手编程掌握C++语言编程的方法。
二、实验基本内容为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了五个实验。
学生在课内机时先完成指导书中标有“*”号的程序,理解所学的知识,在此基础上再编写其他应用程序。
指导书中的五个个实验如下:1. 函数与编译处理2. 指针与引用3. 类和对象4. 继承和派生类5. 多态性三、实验提交(特别提醒)1. 实验题目以附件形式提交,每个附件限一个源程序,附件以实验编号-题号-自己学号.cpp命名;如学号为20XXXX20XXXX20XXXX34的同学提交实验1的第5题,则附件命名方式为:1-5-20XXXX20XXXX20XXXX34.cpp,错误提交的将视为未提交。
2. 提交时间定为该次实验课的一周内,过期不再接收。
四、评分和作弊处理1. 要求提交实验题总数为6题(带“*”号),占期末总评成绩的20XX%;2. 存在抄袭和被抄袭的作业,无论抄袭与被抄袭者,本门课程平时成绩以零分记。
存在两次及两次以上抄袭和被抄袭者,本门课程以不及格记。
五、实验课要求(重点强调)1. 严禁QQ、MSN等即时软件工具聊天;2. 严紧接听手机、发送短信;3. 严紧玩游戏。
实验1 函数与编译处理一、实验目的1. 掌握函数声明、定义和使用的方法;2. 掌握形参与实参之间的对应关系;3. 掌握函数调用时,形参、实参之间的“值传递”和“引用传递”的区别;4. 掌握函数递归调用的方法;5. 掌握全局变量、局部变量、静态变量的使用方法;6. 掌握文件包含的使用方法。
二、实验内容1. 定义两个函数swap1和swap2,目的是实现两个整数的次序交换,其中swap1的参数是传递值参数,swap2的参数是引用参数,在程序中分别调用这两个函数,其输出结果如下所示:初始值:x=1,y=2调用swap1后的结果:x=1 y=2调用swap2后的结果:x=2 y=12. 编写一个函数,用来计算从键盘上输入的整数的阶乘。
Visual C++ 6.0实验五类和对象、继承和派生
上海电力学院实验报告课程名称Visual C++ 实验项目类和对象、继承和派生姓名储昊学号20132234 班级2013112 专业通信工程同组人姓名指导教师姓名实验日期实验内容程序Ex_Class:定义一个人员类CPerson,包括的数据成员有姓名、编号、性别和用于输入/输出的成员函数。
在此基础上派生出学生类Cstudent(增加成绩)和教师类Cteacher(增加教龄),并实现对学生和教师信息的输入/输出。
编写一个完整的测试程序,并将Ex_Class 所有的类定义保存在Ex_Class.h中,将类的成员函数实现代码保存在Ex_Class.cpp中。
实验准备和说明(1)在学习完第2章的“继承和派生”内容之后进行本次试验。
(2)编写本次上机所需要的程序。
实验步骤1.创建工作文件夹打开计算机,在“D:\Visual C++程序\LiMing\5”文件夹中创建一个新的子文件夹“5”。
2.输入程序Ex_Class.h(1)启动Visual C++6.0。
(2)单击标准工具栏上的“New Test File”按钮,在新打开的文档窗口中输入下列程序代码:#include<iostream.h>#include<string.h>class CPerson{public:CPerson(){strcpy(pName,"");strcpy(pID,"");}CPerson(char*name,char*id,bool isman=1){Input(name,id,isman);}void Input(char*name,char*id,bool isman) {setName(name);setID(id);setSex(isman);}void Output(){cout<<"姓名:"<<pName<<endl;cout<<"编号:"<<pID<<endl;char*str=bMan?"男":"女";cout<<"性别:"<<str<<endl;}public://姓名属性操作char*getName()const{return(char*)pName;}void setName(char*name){int n=strlen(name);strncpy(pName,name,n);pName[n]='\0';}//编号属性操作char*getID()const{return(char*)pID;}void setID(char*id){int n=strlen(id);strncpy(pID,id,n);pID[n]='\0';}//性别属性操作bool getSex(){return bMan;}void setSex(bool isman){bMan=isman;}private:char pName[20];char pID[20];bool bMan;};class CStudent:public CPerson{public:CStudent(char*name,char*id,bool isman=1);~CStudent(){}void InputScore(double score1,double score2,double score3);void Print();CPerson student;private:double dbScore[3];};class CTeacher:public CPerson{public:CTeacher(char*name,char*id,bool isman=1,int years=10);~CTeacher(){}void Print();private:int nTeachYears;};(3)单击标准工具栏上的“Save”按钮,弹出“保存为”文件对话框。
VC++实验指导书
Visual C++程序设计实验指导书实验1 认识Visual C++6.05中文版开发环境实验内容(1)熟悉VisualC++6。
05的开发环境。
(2)操作工具栏和项目工作区窗口。
(3)用应用程序向导创建一个控制台应用项目Ex_Hello。
(4)输入并执行一个新的C++程序Ex_Simple.实验准备和说明(1)建议在本教材第一次上课时进行本次实验。
(2)熟悉Windows 2000或XP操作系统的环境和基本操作。
(3)熟悉实验报告的书写格式,这里给出一下建议:实验报告采用A4纸,封面一般包括实验目次.实验题目,班级,姓名,日前和机构名称.报告内容一般包括实验目的和要求。
实验步骤,实验思考和总结。
需要指出的是,实验步骤不是书本内容的重复,而是自己结合实验内容进行探索的过程,教师也可根据具体情况提出新的实验报告格式和新的要求.(4)阅读以下关于VisualC++的说明:Visual C++是Microsoft公司推出的目前使用极为广泛的基于WINDOUWS平台的可视化编程环境。
是在以往的版本不断更新的基础上形成的,其功能强大,灵活性好,完全可以扩展以及具有强有力的Internet支持,在各种c++语言开发工具中脱颖而出,成为目前最为流行的C++语言集成开发环境。
Visual C++6。
0分为标准版,企业版和专业版3种,但其基本功能是相同。
Visual C++6。
5中文版是在Visual C++6。
0基础上进行汉化的以一个版本,本书以此版本作为编程环境。
为统一起见,我们仍称之为Visual C++6.0。
实验步骤1。
打开计算机,启动windouws2000操作系统2。
建工作文件夹3。
启动Visual C++6.04。
创建一个控制台应用项目5。
认识开发环境界面6。
认识工具栏7。
工具栏的显示和隐藏8.工具栏的浮动与停泊9。
项目工作区窗口10。
修改代码,编译运行11。
输入一个新的C++程序12。
修正语法错误13.退出Visual C++6。
C++_II_练习题(2)
C++ II 练习题(2)一.单项选择题(每题2分,共20分)1.在C++中,有关类和对象正确说法是( A )。
A.对象是类的一个实例 B.对象是类的存储空间C.一个类只能有一个对象 D.类是程序包,对象是存储空间2.在类定义中,称为接口的成员是( C )。
A. 所有类成员B. private或protected的类成员C. public的类成员D. public或private的类成员3. 一个类的友员函数能够通过( D )访问该类的所有成员。
A.静态数据 B.析构造函数 C.this指针 D.类对象参数4. 下面描述错误的是( B )。
A.自定义构造函数应该是公有成员函数 B.构造函数可以是虚函数C.构造函数在建立对象时自动调用执行 D.构造函数可以重载5. 在类的继承关系中,基类的(B)成员在派生类中可见。
A. 所有B. public和protectedC. 只有publicD. 只有protected6.设B类是A类的派生类,有说明语句A a, *ap;B b, *bp;则以下正确语句是(C)。
A. a=b;B. b=a;C. ap=&b;D. bp=&a;7.C++中,以下( D )语法形式不属于运行时的多态。
A. 根据if语句的求值决定程序流程B. 根据基类指针指向对象调用成员函数C. 根据switch语句的求值决定程序流程D. 根据参数个数、类型调用重载函数8. 假设对A类定义一个重载“+”号运算符的成员函数,以便实现两个A类对象的加法,并返回相加结果,则该成员函数的函数原型为( B )。
A.A operator +( const A &A1, const A &A2 ); B.A A:: operator +( const A &A2 );C.A::operator +( A &A2 ); D.A A::operator +( );9. 一个类模板定义了静态数据成员,则( A )。
《面向对象程序设计》实验指导书 (1-6个实验,含参考代码)要点
面向对象程序设计实验指导书(适用:电子信息11级)彭召意陶立新编写计算机与通信学院2014.9目录实验一 C++基础的应用 (1)实验二类和对象的应用 (3)实验三类的构造函数、析构函数的应用 (4)实验四友员和运算符重载 (5)实验五类的继承与派生 (6)实验六类的多态性与虚函数 (7)附录:各实验的程序代码 (8)实验一 C++基础的应用(实验课时:2 实验性质:设计)实验名称: C++基础的应用实验目的: (1)进一步学习VC++6.0开发环境及程序调试方法。
(2)练习C++函数的定义及使用;(3)练习C++数组的定义及使用;(4)练习C++指针的定义及使用;(5)练习C++结构体的定义及使用;(6)练习多文件的程序的编译和运行方法;实验设备:(1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual C++6.0。
实验内容: (1)熟悉Visual C++6.0编译系统的常用功能,特别是debug调试功能;(2)编程1:编写一个程序c1.cpp,用来求2个或3个整数的最大数。
要求:用重载函数的方法来求最大数;函数原型:int max( int a, int b) 和int max( int a, int b,int c)。
(3)编程2:编写一个程序c2.cpp,求:a!+ b! + c!的值。
要求:使用递归函数。
主程序和函数分开到两个源程序文件中,分别进行编译后,再运行;(4)编程3:有一个3*4的矩阵,要求编程求出其中值最大的那个元素的值,以及其所在的行号和列号;(5)编程4:建立一个动态链表并进行输出和删除管理。
链表的每个节点为学生信息,包括:学号,姓名,性别,下一学生信息的指针。
程序的工作:(a)建立三个学生信息的节点,然后顺序输出该三个学生信息;(b)删除中间的节点,再顺序输出学生信息。
面向对象程序设计课程设计
面向对象程序设计课程设计本课程设计是在学习面向对象程序设计之后的实践教学环节。
该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。
要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。
学生通过课程设计在下述各方面得到锻炼:1、能根据实际问题的具体情况,结合面向对象的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。
2、提高程序设计和调试能力。
学生通过上机实习,验证自己设计的算法和程序的正确性。
学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。
课程设计内容1、了解并掌握中小型综合应用程序的一般设计方法,具备初步的独立分析和设计能力;2、初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3、提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4、训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;5、课题的代码要求达到一定工作量,并具有一定的深度和难度;6、根据课题程序的分析和设计过程,撰写课程设计报告。
课程设计要求课程设计结束应提交程序源代码、课程设计报告的电子稿和打印稿,以作为整个课程设计评分的书面依据和存档材料。
课程设计报告以规定的格式书写、打印并装订,排版及图、表要清楚、工整。
课程设计报告的内容如下:1.封面:题目、班级、学号、姓名、指导教师和完成日期。
2.正文包括以下内容:1、根据实现的功能,划分出合理的对象类,明确对象类间的关系。
2、为每个对象类设计正确的域和方法,为每个方法设计合理的方法体。
同时,为对象类及内部的域和方法运用正确的修饰符,如访问控制符等。
3、编程简练,程序功能齐全,能正确运行。
4、说明书、流程图要清楚,规范。
5、总结和体会:程序编写和调试过程中遇到了哪些问题,是如何解决的,以及对设计与实现过程的回顾和分析;经验和体会等。
C++定义与实现
习C++ -> 类(Classes)的定义与实现一、"类" 的介绍在C++中, 用 "类" 来描述 "对象", 所谓的"对象"是指现实世界中的一切事物。
那么类就可以看做是对相似事物的抽象, 找到这些不同事物间的共同点, 如自行车和摩托车, 首先他们都属于"对象", 并且具有一定得相同点, 和一些不同点, 相同点如他们都有质量、都有两个轮子, 都是属于交通工具等。
"都有质量"、"两个轮子"属于这个对象的属性, 而"都能够当做交通工具"属于该对象具有的行为, 也称方法。
类是属于用户自定义的数据类型, 并且该类型的数据具有一定的行为能力, 也就是类中说描述的方法。
通常来说, 一个类的定义包含两部分的内容, 一是该类的属性, 另一部分是它所拥有的方法。
以 "人类" 这个类来说, 每个人都有自己的姓名、年龄、出生日期、体重等, 为人类的属性部分, 此外, 人能够吃饭、睡觉、行走、说话等属于人类所具有的行为。
上面举例中所描述的 "人" 类仅仅是具有人这种对象的最基础的一些属性和行为, 可以称之为人的"基类"。
再说说一些具有一些职业的人, 例如学生, 一个学生还具有"基类"中所没有的属性, 如学校、班级、学号; 也可以具有基类所不具有的行为, 如每天需要去上课, 需要考试等。
学生类可以看做是基类的一个扩展, 因为他具有基类的所有属性和行为, 并且在此基础上增加了一些基类所没有的属性和行为, 像"学生"这样的类称为"人类"这个基类的"派生类"或者"子类"。
在学生的基础上海可以进一步的扩展出其他更高级的类, 如"研究生"类。
python编程练习题
Python编程练习题一、基础语法篇1. 编写一个Python程序,输出“Hello, World!”。
2. 计算并输出1+2+3++100的和。
3. 编写一个程序,交换两个变量的值。
4. 输出当前日期和时间。
5. 编写一个判断闰年的程序,输入年份,输出是否为闰年。
6. 输出九九乘法表。
7. 编写一个程序,计算并输出一个整数列表的平均值。
8. 将字符串中的所有小写字母转换为大写字母。
9. 编写一个程序,统计字符串中字母、数字和其他字符的数量。
10. 输出斐波那契数列的前20项。
二、函数与模块篇1. 编写一个函数,计算两个数的最大公约数。
2. 编写一个函数,实现字符串的反转。
3. 编写一个函数,判断一个数是否为素数。
4. 导入math模块,计算并输出e的平方根。
5. 编写一个模块,实现计算圆的面积和周长。
6. 定义一个装饰器,统计函数运行时间。
7. 编写一个器,实现斐波那契数列的。
8. 使用lambda表达式编写一个求两个数最大值的函数。
9. 编写一个递归函数,计算阶乘。
10. 定义一个类,实现一个简单的计算器功能(加、减、乘、除)。
三、列表、元组与字典篇1. 创建一个包含110的整数列表。
2. 输出列表中的最大值和最小值。
3. 将列表中的每个元素乘以2。
4. 删除列表中的偶数。
5. 输出列表中的元素及其索引。
6. 编写一个程序,实现列表的冒泡排序。
7. 创建一个元组,包含姓名、年龄和性别信息。
8. 输出元组中的第二个元素。
9. 将元组转换为列表。
10. 编写一个程序,统计字符串中每个字母的出现次数(使用字典)。
四、文件操作篇1. 编写一个程序,读取文件内容并输出。
2. 将一段文字写入到文件中。
4. 读取一个文本文件,统计其中的单词数量。
5. 编写一个程序,复制一个文件到指定目录。
6. 读取一个CSV文件,并输出其中的数据。
7. 将一个列表写入到JSON文件中。
8. 读取一个JSON文件,并转换为Python对象。
C++程序设计上机考试题库
江西财经大学10-11第一学期期末考试上机考试100题一、第一类题目(20道,每题7分,在word中保留代码并将输出结果窗口保留)1.定义盒子Box类,要求具有以下成员:长、宽、高分别为x,y,z,可设置盒子形状;可计算盒子体积;可计算盒子的表面积。
2.有两个长方柱,其长、宽、高分别为:(1)30,20,10;(2)12,10,20。
分别求他们的体积。
编一个基于对象的程序,在类中用带参数的构造函数。
3.有两个长方柱,其长、宽、高分别为:(1)12,20,25;(2)10,30,20。
分别求他们的体积。
编一个基于对象的程序,且定义两个构造函数,其中一个有参数,一个无参数。
4.声明一个类模板,利用它分别实现两个整数、浮点数和字符的比较,求出大数和小数。
5.建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。
初值自拟。
6.建立一个对象数组,内放5个学生的数据(学号、成绩),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。
初值自拟。
7.用new建立一个动态一维数组,并初始化int[10]={1,2,3,4,5,6,7,8,9,10},用指针输出,最后销毁数组所占空间。
8.定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。
将运算符函数重载为非成员、非友元的普通函数。
编写程序,求两个复数之和。
初值自拟。
9.定义一个复数类Complex,重载运算符“+”,“—”,使之能用于复数的加,减运算,运算符重载函数作为Complex类的成员函数。
编程序,分别求出两个复数之和,差。
初值自拟。
10.定义一个复数类Complex,重载运算符“*”,“/”,使之能用于复数的乘,除。
运算符重载函数作为Complex类的成员函数。
编程序,分别求出两个复数之积和商。
初值自拟。
提示:两复数相乘的计算公式为:(a+bi)*(c+di)=(ac-bd)+(ad+bc)i。
C++继承与派生类习题
第九章继承与派生类9.2 典型例题分析与解答例题1:下列对派生类的描述中,()是错误的。
A.一个派生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类成员D.派生类中继承的基类成员的访问权限到派生类保持不变答案:D分析:一个派生类可以作为另一个派生类的基类。
无论是单继承还是多继承,派生类至少有一个基类。
派生类的成员除了它自己的成员外,还包含了它的基类成员。
派生类中继承的基类成员的访问权限到派生类受继承方式影响的,对于私有继承,基类的public,protected成员在派生类中作为private成员;对于公有继承,基类的public,protected成员在派生类中访问属性不变;对于保护继承,基类的public、protected成员在派生类中作为protected成员。
例题2:派生类的对象对它的哪一类基类成员是可以访问的?()A.公有继承的基类的公有成员 B. 公有继承的基类的保护成员C. 公有继承的基类的私有成员D. 保护继承的基类的公有成员答案:A分析:公有继承的基类的公有成员在派生类中保持公有访问权限,所以派生类对象可以访问它;公有继承的基类的保护成员在派生类中保持保护访问权限,所以派生类对象不可以访问它;基类的私有成员不能被派生到派生类中,所以派生类对象不可以访问它;保护继承的基类的公有成员在派生类中变成保护的访问权限,所以派生类对象不可以访问它。
例题3:关于多继承二义性的描述,()是错误的。
A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性B.一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性C.解决二义性最常用的方法是作用域运算符对成员进行限定D.派生类和它的基类中出现同名函数时,将可能出现二义性答案:D分析:出现二义性有两种情况:调用不同基类的相同成员时可能出现二义性;访问共同基类的成员时可能出现二义性。
上机实践C++题
开发一个简单的大学人员管理程序。
该程序可以管理大学的一些基本人员信息:学生(student)和教师(teacher)。
提示:先设计一个虚基类person,通过该类描述人员的基本信息:姓名(name)、年龄(age)和性别(sex)等。
然后使用该类派生出学生类student和教师类teacher,在其中添加各自的特征。
如在student类中添加专业(speciality),在teacher类中添加院系(department)等。
还有部分教师在工作的同时,在职攻读学位,因此具有教师和学生双重身份,由student类和teacher类再次派生出strTeacher类。
为每个类定义一个输出函数print,输出该类的相关信息。
#include <iostream.h>class person{protected:int num; //编号char name[8]; //姓名char sex[2]; //性别public:void getdata(){cout<<" 编号:";cin>>num;cout<<" 姓名:";cin>>name;}void dispdata(){cout<< " 编号:"<<num<<endl;cout<< " 姓名:"<<name<<endl;}};class teacher:public person{protected:char prof[10]; //职称char depart[10]; //院系public:void getdata(){cout<< "输入一个教师数据:"<<endl;person::getdata();cout<< "职称:" ;cin>>prof;cout<< "院系:";cin>>depart;}void dispdata(){cout<< "输出一个教师数据:"<<endl;person::dispdata();cout<< "职称:"<<prof<<endl;cout<< "院系:"<<depart<<endl;}};class student :public person{protected:char cname[10]; //班级编号char speciality[15]; //所在专业public:void getdata(){person::getdata();cout<< "班号:";cin>>cname;cout<< "专业:";cin>>speciality;}void dispdata(){person::dispdata();cout<< "班号:"<<cname<<endl;cout<< "专业:"<<speciality<<endl;}};class unstudent:public student{private:int degree1;int degree2;int degree3;public:void getdata(){cout<<" 输入一个大学生数据:"<<endl;student::getdata();cout<<" 英语:";cin>>degree1;cout<<" 高数:";cin>>degree2;cout<<" 数据结构:";cin>>degree3;}void dispdata(){cout<<"输入一个大学生数据:"<<endl;student::dispdata();cout<<" 英语:"<<degree1<<endl;cout<<" 高数:"<<degree2<<endl;cout<<" 数据结构:"<<degree3<<endl;cout<<" 平均分:"<<(degree1+degree2+degree3)/3<<endl;}} ;class strTeacher:public student ,teacher{private:int degree1;int degree2;int degree3;public:void getdata(){cout<<" 输入一个老师学生数据:"<<endl;student::getdata();cout<<" 英语:";cin>>degree1;cout<<" 高数:";cin>>degree2;cout<<" 数据结构:";cin>>degree3;}void dispdata(){cout<<"输入一个老师学生数据:"<<endl;student::dispdata();cout<<" 英语:"<<degree1<<endl;cout<<" 高数:"<<degree2<<endl;cout<<" 数据结构:"<<degree3<<endl;cout<<" 平均分:"<<(degree1+degree2+degree3)/3<<endl;}} ;void main(){teacher t;t.getdata();unstudent s1;s1.getdata();strTeacher s2;s2.getdata();t.dispdata();s1.dispdata();s2.dispdata(); }。
C中类与类定义及具体使用方法
C中类与类定义及具体使用方法C语言是过程式语言,它并不直接支持面向对象编程(OOP)。
然而,我们可以通过结构体和函数指针来模拟类和类的实例。
本文将介绍在C语言中如何定义类和使用具体的类来实现面向对象编程。
1.类的定义在C语言中,我们可以使用结构体来定义一个类。
结构体可以包含数据成员和函数指针成员。
```ctypedef struct Personchar name[50];int age;void (*sayHello)(struct Person*);} Person;```上述代码定义了一个名为Person的结构体,它包含了一个字符数组name、一个整数age和一个函数指针sayHello。
2.类的实例化在C语言中,我们可以使用结构体变量来实例化一个类的对象。
```cPerson p1;```上述代码创建了一个名为p1的Person对象。
3.类的方法定义在C语言中,类的方法可以通过函数指针成员来定义。
```cvoid sayHello(struct Person* self)printf("Hello, my name is %s.\n", self->name);```上述代码定义了一个名为sayHello的函数,它接受一个指向Person对象的指针作为参数,并打印出对象的名称。
4.类的方法赋值在实例化类的对象后,我们可以将方法赋值给对象的函数指针成员。
```cp1.sayHello = sayHello;```上述代码将sayHello函数赋值给p1对象的sayHello函数指针成员。
5.类的方法调用在C语言中,我们可以通过对象的函数指针成员来调用类的方法。
```c```上述代码通过调用p1对象的sayHello函数指针成员来调用sayHello方法,并将p1对象的地址作为参数传递给方法。
完整示例代码如下:```c#include <stdio.h>typedef struct Personchar name[50];int age;void (*sayHello)(struct Person*);} Person;void sayHello(struct Person* self)printf("Hello, my name is %s.\n", self->name);int maiPerson p1;strcpy(, "John");p1.age = 25;p1.sayHello = sayHello;return 0;```运行上述代码将输出:```Hello, my name is John.```通过结构体和函数指针,我们可以在C语言中模拟类和实现面向对象编程的一些特性。
《面向对象程序设计》实验指导书(新)
《面向对象程序设计》实验指导书(新)《面向对象程序设计》实验指导书一、课程教学与实验教学计划学时比:48/16二、适用专业:信息管理与信息系统三、实验目的基本要求能够充分理解面向对象程序设计的思想和应用方法。
能够使用面向对象编程语言进行相应的程序设计和开发。
理解面向对象的基本思想、概念和特性以及面向对象的分析、建模、设计技术与方法。
掌握C++语言基本构成、类与对象、消息传递与函数、函数与运算符重载、继承性、多态性与虚拟函数、数据封装和隐藏及Windows 程序设计基础。
通过实验动手实践,使学生能够掌握面向对象程序设计的特征和基本思想,以及相应的具体实现和Windows程序设计基础知识。
四、实验内容实验一:循环控制(一)实验目的要求:熟悉VC++集成开发环境,学习使用控制台应用程序;创建工程,建立可执行文件并执行,观察结果。
掌握变量的声明和定义方法,掌握循环语句和条件语句的定义、作用和使用方法。
(二)实验设备:1.服务器;2.交换机;3.计算机。
(三)实验内容:1.编程求1!+2!+3!+4!+…+12!。
2.编程求所有的3位数素数,且该数是对称的。
所谓“对称”是指一个数,倒过来还是该数。
例如,375不是对称数,因为倒过来变成了573。
实验二:递归函数(一)实验目的要求:掌握函数的概念和使用方法,掌握递归函数的概念和使用方法。
(二)实验设备:1.服务器;2.交换机;3.计算机。
(三)实验内容:1.用递归函数来求1!+2!+3!+…+12!。
2.用递归的方法建立一个函数int fibonacci(int n),求Fibonacci数列中第n个数的值。
实验三:用气泡法排序(一)实验目的要求:掌握文件读写的方法,掌握递归函数的概念和使用方法。
(二)实验设备:1.服务器;2.交换机;3.计算机。
(三)实验内容:建立一个文件,文件中包含一系列数,用这些数构成一个数组,并按照数值,为这个数组从小到大排序,把排序结果输出到另一个文件中。
人员信息管理系统课程设计
课程设计报告课程:人员信息管理系统学号:姓名:班级:教师:徐州师范大学计算机科学与技术学院《课程设计指导书》一、课程设计的目的(1)熟练掌握C++语言的基本知识和技能;(2) 掌握面向对象程序设计的基本思路和方法;(3) 能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
(4)制作“人员信息管理系统"。
二、设计名称:人员信息管理系统三、设计要求(1)建立人员信息数据,包括编号、姓名、性别、出生时间、岗位(部门)、参加工作时间和年龄(必须通过计算得到)等等其他信息;(2)根据人员信息表,建立只含有姓名和年龄的信息简表(可选功能);(3)使用继承的方法构造3个类,(即人员类-—虚基类,教师类和学生类——派生类)使用相应的对象放置10个人员信息;(4)编写同名display()成员函数,用来输出数组的内容;(5)按不同类别输出人员信息,比如按系输出教师信息(可选功能);(6)要求对“<〈”和“〉〉”运算符进行重载。
考虑到输入人员编号时,也会因不小心引入空格,而且名字中也需要有空格,所以重载“〉〉’’运算符时,需要满足这个要求;(7)抽取并计算人员的平均年龄;(8)检索(查找)指定信息(如按姓名检索、按年龄检索);(9)显示年龄分布的图形;参考系统界面如下:1—增加一位人员(教师、学生)记录2—显示全部人员记录3—计算人员平均年龄4—删除一个人员记录5—按岗位(部门)输出人员信息(可选)6—按姓名检索所有信息7—结束程序运行四、设计过程(1)分析题目(2)建立Time,people类,以及People类的两个继承类Teacher,Student 类(3)定义People类的成员函数:People(); //构造函数,默认现今是2011年virtual void Add1()=0;//从文件录入virtual void Add2()=0;//从键盘录入virtual void Add()=0; //添加人员virtual void Display(); //显示人员信息virtual void Displaypart(char p[]); //按部门输出virtual void checkname(char n[]); //按姓名检索virtual void checkyear(int ); //按年龄检索virtual int average();//计算平均年龄virtual void Del(char n[])=0;//按姓名删除virtual void Del(int );//按位置删除(4)建立main函数(5)优化界面五、设计细则(1)将具体日期year,month,day成员数据定义为Time类的公有成员。
c++复习题答案[1]
一、选择题1、类的实例化是指(C)。
A、定义类B、指明具体类C、创建类的对象D、调用类的成员2、关于类和对象的说法不正确的是(B )。
A、对象是类的一个实例B、一个类只能有一个对象C、一个对象只属于一个具体类D、类与对象的关系和数据类型与变量的关系相似3、下面说法正确的是(B)。
A、内置函数在运行时是将该函数的目标代码插入每个调用该函数的地方B、内置函数在编译时是将该函数的目标代码插入每个调用该函数的地方C、类的内置函数必须在类体内定义D、类的内置函数必须在类体外通过加关键字inline定义4、对于任意一个类,析构函数的个数最多为(A)。
A、1B、2C、和构造函数个数一样D、任意多个5、在下面的类定义中,错误的语句是(D)。
class sample{public:sample(int val);//(1)~sample( ); //(2)private:int a=;//(3)sample();//(4)};A、(1)(2)(3)(4)B、(1)(2)(3)C、(2)D、(3)6、有关构造函数的说法不正确的是(D)。
A、构造函数名字和类的名字一样B、构造函数在定义类变量时自动执行C、构造函数无任何函数类型D、构造函数有且只有一个7、不属于成员函数的是(B)。
A、静态成员函数B、友元函数C、构造函数D、析构函数8、已知类A是类B的友元,类B是类C的友元,则(D)。
A、类A一定是类C的友元B、类C一定是类A的友元C、类C的成员函数可以访问类B的对象的任何成员D、类A的成员函数可以访问类B的对象的任何成员9、在建立类对象时(A)。
A、只为每个对象分配用于保存数据成员的内存B、只为每个对象分配用于保存函数员的内存C、为所有对象的数据成员和函数成员分配一个共享的内存D、为每个对象的数据成员和函数成员同时分配不同的内存10、下列说法错误的是(B)。
A、封装是将一组数据和这组数据有关的操作组装在一起B、封装使对象之间不需要确定接口C、封装要求对象应具有明确的功能D、封装使得一个对象可以像一个部件一样用在各种程序中11、要禁止修改指针p本身,也要禁止修改p所指向的数据,这样的指针应定义为(D)。
c++习题
上机题14设有教师若干名,每个教师有姓名信息,—个教师可以指导多名研究生,每名研究生有学号、姓名和研究方向信息,编写一个程序,要求输出每名教师所指导的所有研究生的学号、姓名和研究方向信息。
假设每个导师最多可指导20名研究生:分析:由于学生和老师都有编号和姓名属性,可以定义一个能对编号和姓名进行管理的类person,然后在person类的基础上派生出学生类和教师类。
为了使学生与导师建立指导关系,需要在教师类中添加一个学生类student的对象数组,用于表明某个导师所指导的所有研究生信息。
导师指导学生可以通过在教师类中增加一个成员函数,将学生对象加入到导师所指导的研究生对象数组中,把指导关系做成动态的。
#include <iostream>#include <string>using namespace std;class person{public:void setvalue();void display();protected:int num;string nam;};class student: public person{public:void setvalue();void display();protected:string major;};class teacher: public person{public:void setvalue();void display();protected:student stud[20];};……………………上机题15编写一个程序实现小型公司的工资管理。
该公司主要有三类人员:经理、兼职技术人员、销售员。
要求存储这些人员的编号,姓名和月工资,计算月工资并显示全部信息。
月工资计算办法是:经理拿固定月薪8000,兼职技术人员按每小时100元取月薪;销售员按该当月销售额的4%提成;要求有如下文件:employee.h,technicial.h,salesman.h,manager.h,employee.cpp,technicial.cpp,salesman.cpp,manager.cpp,main.cpp//employee.hclass employee{protected:char * name;int individualEmpNo;int grade;float accumPay;static int employeeNo;public:employee();~employee();void pay();void promote(int);void displayStatus();};class technician:public employee{private:float hourlyRate;int workHours;public:technician();void pay();void displayStatus();};class salesman:virtual public employee{protected:float CommRate;float sales;public:salesman();void pay();void displayStatus();};class manager:virtual public employee{protected:float monthlyPay;public:manager();void pay();void displayStatus();};class salesmanager:public manager,public salesman{public:salesmanager();void pay();void displayStatus();};//empfunc.cpp#include <iostream.h>#include <string.h>#include "employee.h"int employee::employeeNo = 1000;employee::employee(){ char namestr[50];cout<<"请输入下一个雇员的姓名:";cin>>namestr;name = new char[strlen(namestr)+1];strcpy(name,namestr);individualEmpNo = employeeNo++;grade = 1;accumPay = 0.0;}employee::~employee(){ delete name;}void employee::pay(){}void employee::promote(int increment){ grade += increment;}technician::technician(){ h ourlyRate = 100;}void technician::pay(){ cout<<"请输入"<<name<<"本月的工作时数:";cin>>workHours;accumPay = hourlyRate * workHours;cout<<"兼职技术人员"<<name<<"编号"<<individualEmpNo<<"本月工资"<<accumPay<<endl;}void technician::displayStatus(){ cout<<"兼职技术人员"<<name<<"编号"<<individualEmpNo<<"级别为"<<grade<<"级,已付本月工资"<<accumPay<<endl;}salesman::salesman(){ CommRate = 0.004;}void salesman::pay(){ cout<<"请输入"<<name<<"本月的销售额:";cin>>sales;accumPay = sales * CommRate;cout<<"推销员"<<name<<"编号"<<individualEmpNo<<"本月工资"<<accumPay<<endl;}void salesman::displayStatus(){ cout<<"推销员"<<name<<"编号"<<individualEmpNo<<"级别为"<<grade<<"级,已付本月工资"<<accumPay<<endl;}manager::manager(){ monthlyPay = 8000;}void manager::pay(){ accumPay = monthlyPay;cout<<"经理"<<name<<"编号"<<individualEmpNo<<"本月工资"<<accumPay<<endl;}void manager::displayStatus(){ cout<<"经理"<<name<<"编号"<<individualEmpNo<<"级别为"<<grade<<"级,已付本月工资"<<accumPay<<endl;}salesmanager::salesmanager(){ monthlyPay = 5000; CommRate = 0.005;}void salesmanager::pay(){ accumPay = monthlyPay;cout<<"请输入"<<employee::name<<"所管辖部门本月销售总额:";cin>>sales;accumPay = monthlyPay + sales * CommRate;cout<<"销售经理"<<name<<"编号"<<individualEmpNo<<"本月工资"<<accumPay<<endl;}void salesmanager::displayStatus(){ cout<<"推销经理"<<name<<"编号"<<individualEmpNo<<"级别为"<<grade<<"级,已付本月工资"<<accumPay<<endl;}//main.cpp#include <iostream.h>#include "employee.h"int main(){ manager m1;technician t1;salesmanager sm1;salesman s1;m1.promote(3);m1.pay();m1.displayStatus();cout<<endl;t1.promote(2);t1.pay();t1.displayStatus();cout<<endl;sm1.promote(2);sm1.pay();sm1.displayStatus();cout<<endl;s1.pay();s1.displayStatus();return 0;}。
C++编程设计题目
题目:图书馆借阅管理系统
一、目标:
1、实现教师和学生不同身份的用户登录,查阅借书情况和个人信息情况等
2、图书管理员身份登录:实现图书的添加、删除、修改等管理,查询图书的借阅情况,给教师和学生办理借书和还书信息
3、系统管理员:用于管理学生、教师、图书管理员的用户信息
二、对象分析
1、日期类:数据成员和成员函数自行定义
2、图书类:
属性:图书条形码、图书名称、图书价值、是否在架、图书被借次数、出版日期成员函数:按需要定义
3、学生类:
属性:登录名、登录密码、学号、姓名、所属学院、入学时间、借阅时长限制、借阅册数限制
成员函数:按需要定义
4、教师类:登录名、登录密码、工号、姓名、所属学院、入职时间、借阅时长限制、借阅册数限制
5、图书管理员类:登录名、登录密码、工号、姓名
6、系统管理员类:登录名、登录密码
运行过程中可能需要的类:
7、借阅记录类:用于记录借阅信息
8、系统登录界面类:程序运行的主界面,显示和实现以下内容和功能
1、学生登录
2、教师登录
3、图书管理员登录
4、系统管理员登录
5、退出
9、学生用户界面类:显示学生用户登录后的各项内容和功能,例如:查询图书、当前借阅查询,个人信息查询、修改密码
10、教师用户界面类
11、图书管理员用户界面类
12、系统管理员用户界面类
三、其它未说明的类和功能自行设计,以实现基本的图书借阅功能为最低标准提交:***************
程序电子文档、运行的每个界面的截图、相关说明以学号命名,18周周五之前交。
2010c++
一、基础类设计1、定义一个学生类CStudent,数据成员包括学号sno、成绩score,成员函数print输出学生信息,创建一个公有的有参构造函数。
在main函数中创建这个类的对象,然后调用成员函数输出这个对象信息。
2、定义一个CTime类,数据成员包括小时hour,分钟minute,秒sec;成员函数print输出时间信息,创建一个有参构造函数。
在main函数中创建CTime的对象,然后输出相应的时间信息。
3、定义一个教师类CTeacher,数据成员包括教师编号Tno,基本工资salary,成员函数print,输出教师信息,创建一个有参构造函数。
在main函数中创建这个类的对象,然后调用成员函数输出这个对象信息。
二、图形类设计1、设计一个直角三角形的类CTriangle,两条直角边分别为a和b,要求用成员函数实现以下功能:(1)计算并返回三角形的面积;(2)计算并返回三角形的周长;(3)使用构造函数完成数据成员的初始化。
在main函数中创建对象并测试。
请编程序,上机调试并运行。
2、设计一个圆的类CCircle,圆周率=3.14,数据成员半径r,要求用成员函数实现以下功能:(1)计算并返回圆的面积;(2)计算并返回圆的周长;(3)使用构造函数完成数据成员的初始化。
在main函数中创建对象并测试。
请编程序,上机调试并运行。
3、.设计一个矩形类CRectangle,矩形的长和宽分别为a和b,要求用成员函数实现以下功能:(1)计算并返回矩形的面积;(2)计算并返回矩形的周长;(3)使用构造函数完成数据成员的初始化。
在main函数中创建对象并测试。
请编程序,上机调试并运行。
4、设计一个正方形的类CSquare,边长为a,要求用成员函数实现以下功能:(1)计算并返回正方形的面积;(2)计算并返回正方形的周长;(3)使用构造函数完成数据成员的初始化。
在main函数中创建对象并测试。
请编程序,上机调试并运行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}Байду номын сангаас
Teacher::Teacher(int n,string na,string se,double s)//这边参数名最好不要取和数据名一样(比如name=name就不知道是哪个赋值给哪个了!)
{
num=n;
name=na;
sex=se;
/*定义一个教师类和一个学生类,二者有一部分数据成员是相同的,
例如:num(号码),name(姓名),sex(性别)。编写一个学生对象,
将其转变为教师类,只将以上三种相同数据成员移植过去即可。
#include<iostream>
#include<string>
using namespace std;
cout<<"\tname:"<<name<<endl;
cout<<"\tsex:"<<sex<<endl;
cout<<"\tnum:"<<num<<endl;
cout<<"\tsalary:"<<salary<<endl;
}
void main()
{
Student s1(167,"chen","f","Software");
salary=s;
}
Teacher::Teacher(Student &s)
{
num=s.num;
name=;
sex=s.sex;
cout<<"\nInput the teacher's salary:";
cin>>salary;
}
void Teacher::display()
{
cout<<"\nTeacher——"<<endl;
{
num=n;
name=na;
sex=s;
major=m;
}
void Student::display()
{
cout<<"\nStudent——"<<endl;
cout<<"\tname:"<<name<<endl;
cout<<"\tsex:"<<sex<<endl;
cout<<"\tnum:"<<num<<endl;
class Teacher;
class Student
{
public://friend Teacher;
Student(int,string,string,string);
void display();
int num;
string name;
string sex;
string major;
};
class Teacher
s1.display();
Teacher t1(906,"wang","f",6000),t2;
t2=Teacher(s1);
t1.display();
t2.display();
}*/
{
public:Teacher(){}
Teacher(int,string,string,double);
Teacher(Student &);
void display();
private:int num;
string name;
string sex;
double salary;
};
Student::Student(int n,string na,string s,string m)