




已阅读5页,还剩27页未读, 继续免费阅读
最新面向对象程序设计实验指导书6个实验含参考代码 免费下载.doc.doc 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计实验指导书(适用:电子信息11级)彭召意 陶立新 编写计算机与通信学院2014.93目录实验一 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)删除中间的节点,再顺序输出学生信息。(6)使用debug调试功能:追踪第2个程序中函数的运行。(7)思考: 在第2个程序中,如果a,b,c的值较大,则显示的结果会怎样?这时如何解决此问题?(提示:显示的结果会不对,可能还会是负数,定义一个数组来存放最后结果。)实验要求: (1)掌握Visual C+6.0开发环境的常用功能及使用,能进一步使用Visual C+6.0的debug调试功能:单步调试、设置断点等;(2)掌握C+函数的定义及使用,掌握函数的嵌套调用和递归调用的方法;(3)掌握C+数组、指针、结构体的定义及使用;(4)掌握多文件的程序的编译和运行方法;(5)程序格式规范,程序运行正确;(6)认真书写实验报告,如实填写各项实验内容。实验步骤: (1)启动Visual C+6.0开发环境;(2)熟悉Visual C+6.0编译系统的常用功能;(3)在file菜单中,新建C+源程序c1.cpp; (4)编辑C+源程序文件c1.cpp的内容。(5) 编译c1.cpp,系统会提示是否创建工程(由于前面没有创建工程),选择“是”。则创建一个工程;(6)程序编译正确时,则可建立可执行程序;(注意观察每步的结果)(7)运行可执行文件;(8)关闭工作空间。(9)对编程2,在file菜单中,新建C+源程序cpp2_1; (10)编辑C+源程序文件cpp2_1的内容;(11)编译cpp2_1,系统会提示是否创建工程(由于前面没有创建工程),选择“是”,则创建工程;(12)在file菜单中,新建C+源程序cpp2_2; (13)编辑C+源程序文件cpp2_2的内容;(14)编译文件cpp2_2时,系统提示是否加入到此工程,选择“是”,则把文件cpp2_2加入到该工程中。(15)编译和运行此程序,并注意观察每步的结果。(16)使用调试功能:运行到光标处、单步跟踪、查看变量值。(17)使用关闭工作空间。(18)参照上述方法,完成编程3和编程4。注意:若编译时出错:“fatal error c1010:unexpexted end of file while looking for precompiled header directive.”;该文件需要包含头文件:stdafx.h,即在开头有语句:#include “stdafx.h”思考题:假如已建立了两个C+源程序c1.cpp和c2.cpp。先用open打开c1.cpp,并完成了编译、连接和运行,再打开c2.cpp,对它进行编译和连接。此时会出现什么问题?原因何在?怎样解决?实验二 类和对象的应用(实验课时:2 实验性质:设计)实验名称: 类和对象的应用实验目的: (1)熟悉C+面向对象的程序设计的基本概念;(2)练习类的定义和对象的创建;(3)练习对象的成员函数的调用方法以及对象的初始化;实验设备: (1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual C+6.0。实验内容: 事先编好程序,上机调试和运行程序,分析结果。(1)编程1:定义并实现一个简单的学生类:公有属性为:学号、姓名、班级,成员函数为输入和显示一个学生的上述信息;(2)将程序(1)中的数据成员改为私有的,考虑对程序有何影响;(3)编程2:设计一个长方形类Rectangle。成员变量包括:长度和宽度,成员函数有:Area计算面积,Set设置长方形的长和宽,Get获取长方形的长和宽。最后,编写一个主程序来测试该类及成员函数。(4)编程3:设计一个汽车类Car。成员变量有:品牌,颜色,车门,车灯,行驶速度。成员函数有:打开车门、打开车灯、加速、减速等。最后,编写一个主程序来测试该类及功能。(提示:在成员函数中用输出成员函数名来表示该成员函数被调用)实验要求: (1)掌握C+类和对象的基本概念;(2)掌握C+类和对象的定义及使用;(3)掌握对象的成员函数的调用方法;(4)程序格式规范,程序运行正确;(5)认真书写实验报告,如实填写各项实验内容。实验步骤: (1)启动Visual C+6.0开发环境;(2)创建一个项目;(3)建立C+源程序文件;(4)编辑C+源程序文件内容;(5)建立并运行可执行程序;(6)关闭工作空间。实验三 类的构造函数、析构函数的应用(实验课时:2 实验性质:设计)实验名称: 类的构造函数、析构函数的应用实验目的: (1)练习类的构造函数、析构函数的定义和使用方法;(2)练习对象数组、对象指针的使用;(3)练习类的静态成员的使用。实验设备: (1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual C+6.0。实验内容: (1)编程:设计一个学生类。要求:学生的属性有:学号,姓名,性别;学生的行为有:输入学生的上述属性和输出学生的上述属性。编写构造函数对学生的所有属性初始化,无参数的构造函数设置学号为1001,姓名为“张三”,性别为M(M代表男,F代表女)。(2)修改上述程序:修改定义析构函数,在析构函数中输出学号。再运行程序,观察运行结果。(3)修改上述main程序:使用对象指针,用new生成一个学生对象,然后,用delete清除该对象,使用单步运行观察运行结果。(4)修改上述程序:增加一个私有数据成员成绩score;增加一个成员函数readdata:输入一学生的学号和成绩;增加一个成员函数getscore:取得学生的成绩。再修改main函数;定义一个班的同学(假如一个班有10位同学,采用对象数组),输出该班的平均成绩。(5)不用对象数组,而使用静态的数据成员来实现(4)中求一个班的学生的平均成绩,学生的成绩在构造函数中输入。(提示:定义2个静态数据成员,1个是存储总成绩,1个是存储学生人数)。(6)分别运行上述程序,并分析结果。注意:在增加一个新的功能时,可以把暂时不需要的功能代码给注释掉。实验要求: (1)掌握C+类的构造函数、析构函数的定义和使用方法;(2)掌握C+对象数组、对象指针的使用;(3)掌握类的静态数据成员的定义和使用;(4)程序格式规范,程序运行正确;(5)认真书写实验报告,如实填写各项实验内容。实验步骤: (1)启动Visual C+6.0开发环境;(2)创建一个项目;(3)建立C+源程序文件;(4)编辑C+源程序文件内容;(5)建立并运行可执行程序;(6)关闭工作空间。实验四 友员和运算符重载(实验课时:2 实验性质:设计)实验名称: 友元和运算符重载实验目的: (1)进一步了解运算符重载的概念和使用方法;(2)掌握几种常用的运算符重载的方法;(3)练习友员函数的定义和使用;(4)了解转换构造函数的使用方法。实验设备: (1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual C+6.0。实验内容: 事先编好程序,上机调试和运行程序,分析结果。(1)有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如: c=a+b。(2)编写一个友元函数来读取矩阵指定所在行列的值。(3)定义一个Teacher(教师)类和一个Student(学生)类,二者有一部分数据成员是相同的,例如num(号码),name(姓名),sex(性别)。编写程序,将一个Student对象(学生)转换为Teacher(教师)类,只将以上3个相同的数据成员移植过去。可以设想为: 一位学生大学毕业了,留校担任教师,他原有的部分数据对现在的教师身份来说仍然是有用的,应当保留并成为其教师的数据的一部分。实验要求: (1)掌握C+运算符重载的概念和使用方法;(2)熟悉转换构造函数的使用方法;(3)程序格式规范,程序运行正确;(4)认真书写实验报告,如实填写各项实验内容。实验步骤: (1)启动Visual C+6.0开发环境;(2)创建一个项目;(3)建立C+源程序文件;(4)编辑C+源程序文件内容;(5)建立并运行可执行程序,并分析结果;(6)关闭工作空间。实验五 类的继承与派生(实验课时:2 实验性质:设计)实验名称:类的继承与派生实验目的: (1)进一步理解继承与派生的概念;(2)掌握通过继承派生出一个新的类的方法;实验设备: (1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual C+6.0。实验内容: 事先编好程序,上机调试和运行程序,分析结果。(1)编程:编写一个学生类Student。要求: 学生的保护属性有:学号(Num),姓名(Name),性别(Sex);学生的公用成员函数有:ReadData( )用于输入Num、Name、Sex。OutputData( )用于输出Num、Name、Sex。 然后,在学生类的基础上派生出研究生类Graduate,该类新增私有属性研究方向(ResearchD),新增公用成员函数ResearchWork( ),该函数功能为输出学号和研究方向。 编写main函数测试基类和派生类的各属性很函数的访问。修改派生类的派生方式以及基类成员的访问方式,再测试看看基类和派生类的属性访问方式有何不同。(2)编程:在上述工程中增加一个Teacher(教师)类,采用多重继承方式由Student和Teacher类公有派生出新类Student_Teacher。要求: Teacher类的保护成员有:Name、Sex、Title(职称)、Wages(工资)。两个基类中的Name、Sex同名,在引用这些数据成员时,指定作用域。 在派生类Student_Teacher中,增加两个成员函数:ReadF1()用于读入:Num、Name、Sex、Title、Wages。Show()用于输出数据,在Show()中,首先调用Student类的display()函数用于输出Num、Name、Sex,然后再用cout语句输出Title、Wages。 在类体中声明成员函数,在类外定义成员函数。思考题:类的三种继承方式的主要区别是什么?实验要求: (1)掌握继承与派生的概念;(2)掌握通过继承派生出一个新的类的方法;(3)程序格式规范,程序运行正确;(4)认真书写实验报告,如实填写各项实验内容。实验步骤: (1)启动Visual C+6.0开发环境;(2)创建一个项目;(3)建立C+源程序文件;(4)编辑C+源程序文件内容;(5)建立并运行可执行程序;(6)关闭工作空间。实验六 类的多态性与虚函数(实验课时:2 实验性质:设计)实验名称: 类的多态性与虚函数实验目的: (1)了解多态性的概念;(2)了解虚函数的作用和使用方法;(3)了解纯虚函数和抽象类的概念和用法。实验设备: (1)硬件:个人微机(配置不低于:CPU为P4,主频1.6G,内存256MB,硬盘40GB);(2)软件:操作系统为WindowsXP(或2000、server2003等),工具软件为Visual C+6.0。实验内容: 事先编好程序,上机调试和运行程序,分析结果。(1)编程:定义抽象基类Shape(图形)。Shape类有一个公共的纯虚函数Area,用于派生类求图形的面积。(2)由Shape派生出3个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数PrintArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。在主程序中测试这些类的PrintArea函数。(3)在类Circle基础上再派生一个圆柱体Cylinder,重载Area函数求圆柱体的体积。然后,编写主程序采用静态多态性和动态多态性分别测试Area函数。(4)在类Circle中定义一个析构函数,让它输出一行信息“This is Cicle Destruction。”,在类Cylinder中定义一个析构函数,让它输出一行信息“This is Cylinder Destruction。”。在主程序中用指向基类Circle类的指针动态生成Cylinder类对象,然后用delete语句释放该对象,测试看看运行结果如何。再修改Circle的析构函数为虚函数,测试看看运行结果如何。(5)运行上述程序,并分析结果。实验要求: (1)掌握多态性的概念;(2)掌握虚函数的作用和使用方法;(3)掌握纯虚函数和抽象类的概念和用法;(4)程序格式规范,程序运行正确;(5)认真书写实验报告,如实填写各项实验内容。实验步骤: (1)启动Visual C+6.0开发环境;(2)创建一个项目;(3)建立C+源程序文件;(4)编辑C+源程序文件内容;(5)建立并运行可执行程序,并分析结果;(6)关闭工作空间。思考题:虚函数的作用是什么? 30附录:各实验的程序代码实验1:程序代码程序1:#include using namespace std;int main()int max(int a,int b,int c); int max(int a,int b); int a=8,b=-12,c=7; coutmax(a,b,c)=max(a,b,c)endl; coutmax(a,b)=max(a,b)a) a=b; if(ca) a=c; return a;int max(int a,int b)if(ab) return a; else return b;程序2:/cpp2_1.cpp#include using namespace std;int main() int fac(int); int a,b,c,sum=0; coutabc; sum=sum+fac(a)+fac(b)+fac(c); couta!+b!+c!=sumendl; return 0; /cpp2_2.cpp,递归方式 int fac(int n) if ( n=1) return 1; else return ( n*fac(n-1); /cpp2_2.cpp,非递归方式 int fac(int n) int f=1; for (int i=1;i=n;i+) f=f*i; return f; 程序3:#include using namespace std;int main() int i,j,row=0,colum=0,max; int a34=5,12,23,56,19,28,37,46,-12,-34,6,8; max=a00; for (i=0;i=2;i+) for (j=0;jmax) max=aij; row=i; colum=j; coutmax=max,row=row,colum=columendl; return 0; 程序4:#include /#include using namespace std;const int n=10;struct student char num6; char name8; char sex; student *next; ;int main() int i; student *head,*p1,*p2; head=p1=NULL; for (i=0;i3;i+) p2 = new student; if (p2=NULL) break; coutinput student information: endl; coutp2-num; coutp2-name; coutp2-sex; if (i=0) head=p1=p2; else p1-next = p2; p1 = p2; if (p1!=NULL) p1-next = NULL; coutOutput information:n; p1=head; i=0; while (p1!=NULL) i+; coutNumber iendl; cout num:num name:name sex:sexnext; p1= head-next; head-next = p1-next; delete p1; coutAfter delete,Output information:n; p1=head; i=0; while (p1!=NULL) i+; coutNumber iendl; cout num:num name:name sex:sexnext; while (head!=NULL) p1 = head-next; delete head; head = p1; return 0; 思考题:打开c2.cpp,对它进行编译时,出现提示:选择“否”,出现提示:选择“是”,则编译完成。连接时,出现错误提示:-Configuration: Cpp1 - Win32 Debug-Linking.Cpp2.obj : error LNK2005: _main already defined in Cpp1.objDebug/Cpp1.exe : fatal error LNK1169: one or more multiply defined symbols foundError executing link.exe.Cpp1.exe - 2 error(s), 0 warning(s)出错原因:c1工程中有两个main()函数。解决方法:关闭c1的工作空间后,再打开c2.cpp。实验2:程序代码(1)定义并实现类 student#includeclass student /定义类 public: /类的公有成员 int Num; char Name10; char Sclass20; void inputs( ) cinNumNameSclass; void display( ) cout n 学号: Num” 姓名:”Name” 班级:”Sclassendl; ;void main( ) /主函数 student ss; /声明对象 ss.inputs(); /调用成员函数 ss.display( ); (2)程序2include using namespace std;class Time public: void set_time(void) cinhour; cinminute; cinsec; void show_time(void) couthour:minute:secendl; private: int hour; int minute; int sec; ; Time t;int main() t.set_time(); t.show_time(); return 0; 程序3#include using namespace std;class Time public: void set_time(void); void show_time(void); private: int hour; int minute; int sec; ; void Time:set_time(void) cinhour; cinminute; cinsec; void Time:show_time(void)couthour:minute:secendl; Time t;int main() t.set_time(); t.show_time(); return 0; 实验3:程序代码(1)3.5#include #include using namespace std;class Student public: Student(int n,string nam,char s) num=n; name=nam; sex=s; coutConstructor called.endl; Student() coutDestructor called.endl; void display() coutnum:numendl; coutname:nameendl;coutsex:sexendlendl; private: int num; string name; char sex; int main() Student stud1(10010,Wang_li,f); stud1.display(); Student stud2(10011,Zhang_fun,m); stud2.display(); return 0; (2)修改析构函数:Student() coutNum=numnumscore;float getscore() return score; 修改main:增加:Student s10; int i;float total=0;增加:for (i=0;i10;i+)si.readdata(); total+=si.getscore();couttotal/10; (5)增加:在类Student中:friend void fdisplay(Student *s);在类外:void fdisplay(Student *s)cout Num=num Name=name score=scoreendl;在main函数中:Student s1;s1.readdata();fdisplay(&s1); 实验4:程序1:#include using namespace std;class Matrix /定义Matrix类 public: Matrix(); /默认构造函数 friend Matrix operator+(Matrix &,Matrix &); /重载运算符“+” void input(); /输入数据函数 void display(); /输出数据函数 private: int mat23; ; Matrix:Matrix() /定义构造函数for(int i=0;i2;i+) for(int j=0;j3;j+) matij=0; Matrix operator+(Matrix &a,Matrix &b) /定义重载运算符“+”函数Matrix c; for(int i=0;i2;i+) for(int j=0;j3;j+) c.matij=a.matij+b.matij; return c; void Matrix:input() /定义输入数据函数coutinput value of matrix:endl; for(int i=0;i2;i+) for(int j=0;jmatij; void Matrix:display() /定义输出数据函数for (int i=0;i2;i+) for(int j=0;j3;j+) coutmatij ; coutendl; int main()Matrix a,b,c; a.input(); b.input(); coutendlMatrix a:endl; a.display(); coutendlMatrix b:endl; b.display(); c=a+b; /用重载运算符“+”实现两个矩阵相加 coutendlMatrix c = Matrix a + Matrix b :endl; c.display(); return 0; 另外的参考矩阵类:定义一个矩阵类Matrix/首先定义了矩阵类的最大行数和列数#include using namespace std;#define MaxRow 100#define MaxColumn 100class Matrix /定义Matrix类public: Matrix() Row = 2;Column = 2; /默认构造函数Matrix(int r,int c) /带参数的构造函数 int i,j; if (rMaxRow) Row = MaxRow; else Row = r; if (cMaxColumn) Column = MaxColumn; else Column = c; for(i=0;iRow;i+) for (j=0;jColumn;j+) MatValij = 0; ; private: int MatValMaxRowMaxColumn; /矩阵值 int Row;/行数 int Column; /列数 ; /主程序int main()Matrix a,b,c(2,3); return 0; 程序2:#include using namespace std;class Studentpublic: Student(int,char,char,float); int get_num()return num; char * get_name()return name; char get_sex()return sex; void display() coutnum:numnname:namensex:sexnscore:scorenn; private: int num; char name20; char sex; float score; Student:Student(int n,char nam,char s,float so) num=n; strcpy(name,nam); sex=s; score=so; class Teacher public: Teacher() Teacher(Student&); Teacher(int n,char nam,char sex,float pay); void display(); private: int num; char name20; char sex; float pay; ; Teacher:Teacher(int n,char nam,char s,float p)num=n; strcpy(name,nam); sex=s; pay=p; Teacher:Teacher(Student& stud) num=stud.get_num(); strcpy(name,stud.get_name(); sex=stud.get_sex(); pay=1500; void Teacher:display()coutnum:numnname:namensex:sexnpay:paynn; int main()Teacher teacher1(10001,Li,f,1234.5),teacher2; Student student1(20010,Wang,m,89.5); coutstudent1:endl; student1.display(); teacher2=Teacher(student1); coutteacher2:endl; teacher2.display(); return 0; 实验5:程序代码(1)例5.3#include #include using namespace std;class Student /声明基类public: /基类公用成员 void display( ); protected : /基类保护成员 int num; string name; char sex; void Student:display( ) coutnum: numendl; coutname: nameendl; coutsex: sexendl; class Student1: protected Student /用protected继承方式声明一个派生类public: void display1( ); private: int age; string addr; void Student1:display1( ) coutnum: numendl; /引用基类的保护成员,合法 coutname: nameendl; /引用基类的保护成员,合法 coutsex: sexendl; /引用基类的保护成员,合法 coutage: ageendl; /引用派生类的私有成员,合法 coutaddress: addrendl; /引用派生类的私有成员,合法 ; int main( ) Student1 stud1; /stud2是派生类student2的对象 stud1.display1( ); /display是派生类中的公用成员函数 stud1.num = 10023; / 该语句错误,应该删除。 return 0; 增加的成员函数ReadData():(1)声明语句为:void ReadData();(2)定义该函数的语句为:void Student:ReadData() coutnumnamesex; coutendl; (2)增加的Teacher类:class Teacher /声明基类 protected : /基类保护成员 string name;char sex;string title;double wages; (3)派生类Student_Teacher:class Student_Teacher: public Student,public Teacher public: void ReadF1(); void Show();void Student_Teacher :ReadF1() coutPlease input:num,name,sex,title,wages:numTeacher:nameTeacher
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市交通规划与交通信息管理重点基础知识点
- 2025年软考网络管理员逆袭计划试题及答案
- 2024年海南省知识产权局下属事业单位真题
- 2024年海南省民政厅下属事业单位真题
- 2024年山东省淡水渔业研究院招聘笔试真题
- 数据库与网络管理关系试题及答案
- 2024年黄山新区妇产医院招聘笔试真题
- 2024年北海市合浦县司法局招聘笔试真题
- 行政法学策划能力试题及答案
- 未来科技变革下的公司战略与风险预测试题及答案
- 保温杯生产工艺流程
- GB/T 6482-2007凿岩用螺纹连接钎杆
- 理正深基坑算例
- GB 28375-2012混凝土结构防火涂料
- 公司休假销假单模板
- 《基于杜邦分析法的企业财务分析国内外文献综述》
- 全国高中数学联赛广东省预赛试题及解答
- DB33T 2226-2019 空气负(氧)离子观测与评价技术规范-纯图
- 高中政治教学的经验分享课件
- 办公室事故防范(典型案例分析)
- 工期定额-民用建筑
评论
0/150
提交评论