


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子科技大学信息与软件工程学院标准实验报告(实验)课程名称:面向对象程序设计 C+电子科技大学教务处制表学生姓名:赵天豪学 号: 指导教师:李巧勤实验地点:信软学院实验室实验时间:15/12/21一、实验室名称:信软学院软件实验室二、实验项目名称: 基于 MFC 的 C+ 桌面应用开发三、实验学时: 16 学时四、实验原理:本次实验基于MFC开发C+桌面应用程序,实现可视化操作。五、实验目的:充分运用所学的C+的数据封装、继承与派生、多态等全部核心内容,补充 完整一个基于 MFC 的应用,使学生能够基本掌握 OOA、OOD 方法;熟练掌握 OOP方法;初步了解基于 Windows平台的桌面图形
2、化应用的开发过程,掌握编 程工具的使用;初步掌握建模工具的使用;基本掌握阅读、调试程序的能力。六、实验内容:一位小学教师 Ken 希望完成这样的任务:针对于小学生正在学习四边形 (quadrangle) 的特性,编写一个小软件, 能够随机在屏幕上显示矩形 (rectangle) 正方形(square)、平行 四边形(parallelogram)、梯形(trapezoid) 和菱形 (diamond) 五种形体之一, 同时显示该形体的特性和关键数据 (随机产生),学生 复习形体的特性, 然后根据给出的关键数据计算形体的面积, 软件判断其结果的 正确性。在学习过程中,软件记录产生的每一个形体,在学
3、生选择不再继续后, 将其学习的过程重放一遍,用以重温,加深印象。根据上述描述,需要完成:1) 必做内容根据Ken老师的要求,需要至少编写六个类:Rect / 注意:类名不要使用 RectangleSquareParallelogramTrapezoidDiam ondList(注:这六个类必须以上述名字命名)其中,前五个类用于描述五种形体。五种形体不用顶点坐标的表示形式,而 只是简单地用它们的特征值表示。例如:矩形、平行四边形用长和高表示;正方 形用边长表示;梯形用两条平行边长和高表示;菱形用两条对象线长表示。要求 为这五种形体编写相应的类,每个类的设计要求如下:(1) Quadrangle类
4、必须成为抽象类,是其它形体类的祖先。它拥有如下成员:成员类型是否纯虚n ame数据/area函数是draw函数是what函数可选(2) 其它形体类之间的继承关系请自行拟定。其中,Parallelogram 类必须拥有如下虚成员:Width(); / 返回宽Height(); / 返回高(3) 每个形体类必须完成如下操作:1 设置标志名属性name五种形体的标志名必须是Parallelogram、Rectangle、Diamond Trapezoid 和 Square 之一(第一个字母大写, 其余小写);2 重载area()成员;3 重载draw()成员;4 重载Width()成员以返回宽;5
5、重载Height()成员以返回高;6 提供Width2()成员以返回第二条平行边长(仅对梯形)(4) List类必须拥有如下成员函数:size() ; /返回列表中的节点数push_back() ; /将数据添加到列表末尾operator ; /返回指定下标的数据traverse() ; / 遍历,需要一个访问函数作为参数 pop_back() / 用来删除列表的最后一个节点,其原型为: void pop_back();( 5) 重温过程实际上就是遍历 List 类对象的过程。2) 选作内容List 类实际上是一种称为“容器”的类。除了容纳形体指针,其实它还可以 容纳任何类型的对象。在本选作内
6、容中,( 1) 请将 List 类改为模板类,使其能容纳任何类型的对象;( 2) 请为 List 类编写迭代器。要求如下:该迭代器的类名为 Iterator;该迭代器必须重载如下运算符:+:迭代器后移!= :两个迭代器比较* :返回迭代器指向节点的数据域中的值,即 quad 指针。=:两个迭代器的复制+。该运算符函数的原型为:Iterator operator+(int i);其功能为:假设当前迭代器(的内部指针)指向了第 k 个节点(从 0 开 始计数),那么 +运算符返回一个迭代器,该迭代器是在当前迭代器的基础上 向后移动 i 个位置得到的,即该迭代器指向了第 k+i 个节点。例如: It
7、erator itr = list.begin() + 5;那么迭代器 itr 就指向了从列表的头节点往后数第 5 个结点。为 Iterator 类编写 begin() 和 end() 成员。七、实验器材(设备、元器件) :PC计算机、Windows系列操作系统、Visual Studio2013软件八、实验步骤:1 )完成类的设计; 2)根据设计结果编写各种形体类的代码;完成学习模式的编程与测试3) 完成List类的编码与测试;4) 完善程序流程,实现复习模式;5) 对前面完成的所有文件进行整合,生成一个解决方案,并进行调试;6) 程序优化。九、实验程序及结果分析:Can vas.h:#pr
8、agma once#i nclude "quad.h"class Quadrangle;/ Can vas 视图class Canvas : public CScrollViewDECLARE_DYNCREATE(Ca nvas)/protected:public :Can vas();/动态创建所使用的受保护的构造函数virtual Ca nvas();public :#ifdef _DEBUGvirtual void AssertValid() const;#ifndef _WIN32_WCEvirtual#en difvoid Dump(CDumpContext&am
9、p; dc) const;#en difprotected :virtualvoidOn Draw(CDC* pDC);/重写以绘制该视图virtualvoidOnlni tialUpdate();/构造后的第一次DECLARE_MESSAGE_MAP()public :staticstaticCan vas * pCa nvas;void drawQuad( const Quadrangle *quad);staticbool isLearning;bool toggleMode( void );double area;private :enum_QUAD_ para = 0, rect,
10、sqr, diam, trap ; typedef pair<string, _QUAD_> KV;mapvstri ng, _QUAD_> quadMap;Diam:#pragma once#include <string>#include <iostream>#i nclude "Ca nvas.h"#include "para.h"using namespacestd;class Diamond : public Parapublic :Diamond(int d1 = 4, int d2 = 8, str
11、ing nm= "Diamond") : Para(d1, d2, nn);Diamo nd();void draw()const Para:draw(); ;double area()const return ( double )width*height/2; ;string what() const return name; ;int & Width1()return d1; ;int & Width2()return d2; ;friend ostream&operator<<( ostream& os, constDiam
12、ond &c2);Diamond& operator= ( const Diamond& di)name = di .name;d1 = di .d2;d2 = di .d2;return * this ;protected :int d1, d2;Experime nt:/ experime nt.h : PROJECT_NAME 应用程序的主头文件/#pragma once#ifndef _AFXWIN_H_#error "在包含此文件之前包含 “ stdafx.h ”以生成PCH文件"#en dif#include "resource
13、.h"/ 主符号/ Cexperime ntApp:/有关此类的实现,请参阅 experime nt.cpp/class CexperimentApp : public CWinApppublic :Cexperime ntApp();/重写public :virtualBOOL nitl nsta nce();/实现DECLARE_MESSAGE_)MAP;exter n Cexperime ntApp theApp;Experime ntdlg.h:/ experime ntDlg.h :头文件/#pragma once#in clude "ca nvas.h"
14、;/ Cexperime ntDlg对话框class CexperimentDlg : public CDialogEx/构造public :CexperimentDlg( CWnd pParent = NULL; / 标准构造函数/对话框数据en um IDD = IDD_EXPERIMENT_DIALQGprotected :virtual void DoDataExchange( CDataExchang pDX); / DDX/DDV 支持/实现protected :HICONm_hlc on;/生成的消息映射函数virtualBOOLO nln itDialog();afx_msg
15、void OnSysCommandUINT nID, LPARAMParam);afx_msg void On Paint();afx_msg HCURSOOnQueryDraglcon();DECLARE_MESSAGE_)MAPpublic :Can vas *pCa nvas;afx_msg void OnBnClickedOk();double an swer;CString result;afx_msg void OnClickedButtonNext();afx_msg void OnClickedButtonStop();afx_msg void OnClickedButtonS
16、ubmit();public :QUADPTReateAquad( void );private :bool lastDone;virtualBOOLOnCommandW/PARAMParam, LPARAMParam);List.h:#pragma once #i nclude "quad.h"#inelude <iostream>#inelude <string>_|/typedef void(*ACCESSFUN)(QUADPTR); /定义遍历时节点处理函数类型class Listprotected :struct NodeQUADPTRat
17、a;Node* next;Node(QUADPTR) :data( d) *head, *tail; /链表的头尾指针/typedef Node* _ran ge;size_t len; /链表中节点的数目即链表的长度public :List() :head( NULL, tail(NULI) len = 0; / 平凡构造函数List( List con st & l)head = tail = NULLNode*p = l .head;while (p != NULLthis ->push_back(p->data);p = p_>n ext;len = 0; |
18、 /复制构造函数List()Node*p = head, *q;while (p != NULLq = p;p = p_>n ext;delete q;Node *Tail() return tail; /size_t size() return le n; ; /获取链表的长度size_t List :size()Node*p = head; size_t i = 0;while (p != NULL p = p_>n ext;+i;return i;void push_back( con st QUADPTRuad) / 尾部添加Node*p = new Node( quad)
19、;p-> next =NULLif (tail = NULL head = tail = p;else tail->next = p; tail = p; len+;int pop_back()if (len = 0)return len;Node*c = head;if (c = tail) delete c;head = tail = NULLelse while (c->next != tail) c+;delete tail;tail = c;tail-> next =NULL |len-;return len;void traverse( void (* f)
20、( const QUADPT&R)Node*p = head;int i = 1;while (p != NULLcout << "第"<< i+ <<"个"<< endl;f (p->data);p = p_>n ext;/请自行添加指针移动部分/遍历List & operator=( const List & l )head = tail = NULLNode*p = l .head;while (p != NULLthis ->push_back(p->
21、data);p = p_>n ext;len = 0;return * this ;List & operato叶=(const QUADPTSRdata)Node*p = new Node( data);p-> next = NULLif (tail = NULLhead = tail = p;else tail->n ext = p;tail = p;len+;return * this ;QUADPTSRoperator(size_t n)Node*p = head;for ( size_t i = 1; i <= n; i+)p = p_>n ex
22、t;return p->data;Para.h:#pragma once#inelude vstring>#inelude <iostream>#inelude "quad.h"#i nclude "Can vas.h"using namespacestd;class Para : public Quadranglepublic :Para(int w = 5, int h = 7,stringnm= "Parallelogram" ) :width( w), height( h),Quadra ngle (n
23、 n);Para();void draw() const Canvas:drawQuad( this ); ;double area()const return width*height; ;stri ng what()con st retur n Quadra ngle :what(); ;int & Width() return width; ; /获取矩形的宽。如果是梯形,还需要一个成员int& Width2()来获取另一条平行边的长度int & Height() return height; ;/ 获取矩形的高friendostream &operato
24、r<<( ostream & os, const Para &c3);Para &operator=( const Para&pa)n ame = pa.n ame;width = pa.width;height = pa.height;return * this ;protected :int width;int height;Quad.h:#pragma once#include <string> |#in clude "Can vas.h"using namespacestd;class Quadranglepr
25、otected :public :string name; /形体的标识Quadrangle( string nm = "Quadrangle" ) :name( nn)virtualstri ngdouble area()const =0; return n ame; ;what()const virtualvoiddraw()const =0;;typedef Quadrangle * QUADPTjRRect.h:#pragma once#include <string>_|#include <iostream>#include "p
26、ara.h"#i nclude "Can vas.h"using namespacestd;class Rect : public Parapublic :Rect( int w = 4, int h = 8, stringnm= "Rectangle" ) : Para( w, h, nn);Rect();stri ng what() con st returnPara:what(); ;double area() con st returnPara:area(); void draw() con st Can vas:drawQuad( t
27、his ); int Width() con st return width; int Height() const return height; friend ostream&operator<<( ostream& os, const Rect &c1);Rect &operator=( const Rect&re)n ame = re. name;width = re .width;height = re .height;return * this ;Resource*:NO_DEPENDENCIES/ Microsoft Visual
28、 C+ gen erated in elude file./ Used by experime nt.rc/#defi neIDM_ABOUTBOX0x0010#defi neIDD_ABOUTBOX100#defi neIDS_ABOUTBOX101#defi neIDD EXPERIMENT DIALOG 102#defi neIDR_MAINFRAME128#defi neIDC_EDIT_ANSWER1000#defi neIDC_BUTTON_SUBMIT1001#defi neIDC_BUTTON_NEXT1002#defi neIDC BUTTON STOP1003#defi n
29、eIDC_EDIT_RESULT1004#defi neIDC_STATIC_GROUP1005/ Next default values for new objects/#ifdef APSTUDIO_INVOKED#ifndef APSTUDIO_READONLY_SYMBOLS#define _APS_NEXT_RESOURCE_VALUE129#define _APS_NEXT_COMMAND_VALUE32771#define _APS_NEXT_CONTROL_VALUE1006#define _APS_NEXT_SYMED_VALUE101#en dif#en difSqua.h
30、:#pragma once#include <string>#include <iostream>#include "rect.h"#in clude "Can vas.h" using namespacestd;class Square : public Rectpublic :Square();void draw()const Rect:draw(); ;double area()con st return width*width; ;string what()con st return Rect:what(); ;int &
31、amp; Width()return width; ;friend ostream &operator<<( ostream & os, const Square &c4);Square(int w = 6, stringnm= "Square") : Rect(w,w, nn);Square&operator=( const Square&sq) n ame = sq.n ame;width = sq.width; return * this ;Stdafx.h:/ stdafx.h :标准系统包含文件的包含文件,/或是
32、经常使用但不常更改的/特定于项目的包含文件#pragma once#ifndef _SECURE_ATL#defi ne _SECURE_ATIL#en dif#ifndef VC_EXTRALEAN#define VC_EXTRALEAN/从 Windows头中排除极少使用的资料#en dif#i nclude "targetver.h"#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS / 某些 CString 构造函数将是显式的/关闭MFC对某些常见但经常可放心忽略的警告消息的隐藏#defi ne _AFX_ALL_WARNINGS#
33、include vafxwin.h>/ MFC核心组件和标准组件#include <afxext.h>/ MFC 扩展#in clude <afxdisp.h>/ MFC自动化类#ifndef _AFX_NO_OLE_SUPPORT#i nclude <afxdtctl.h>/ MFC 对 In ternet Explorer 4公共控件的支持#en dif#ifndef _AFX_NO_AFXCMN_SUPPORT#include <afxcmn.h>/ MFC 对 Windows 公共控件的支持#en dif / _AFX_NO_AFX
34、CMN_SUPPORT#include <afxcontrolbars.h>/ 功能区和控件条的 MFC 支持#ifdef _UNICODE#if defined _MX86#pragma commentlinker,"/manifestdependency:"type='win32'#elif defined _M_X64#pragma commentlinker,"/manifestdependency:"type='win32'publicKeyToke n='6595b64144ccf1df
35、39; la nguage='*'"")#else#pragma commentlinker,"/manifestdependency:"type='win32'#en dif#en dif#in clude <stri ng>#in elude <map> 你编写的头文件都包含在这里using namespacestd;Targetver.h:#pragma once/包括SDKDDKVer.h将定义最高版本的可用 Windows平台。/如果要为以前的 Windows平台生成应用程序,请包括 Wi
36、nSDKVer.h,并将/ WIN32_WINNT宏设置为要支持的平台,然后再包括SDKDDKVerh#in clude <SDKDDKVer.h>Trap.h:#pragma once#include <string> |#include <iostream>#include "quad.h"#i nclude "Can vas.h"using namespacestd;class Trapezoid : public Quadranglepublic :Trapezoid( int w1 = 5.0, int w2
37、 = 7.0, int h = 8.0, string nm= "Trapezoid" ) :width1( w1), width2( w?,height(h), Quadrangle (nn);Trapezoid();void draw() const Canvas:drawQuad( this ); ;double area()const return ( double )(width1+width2)*height/2; ;string what() const return name; ;intWidth1()returnwidth1; ;intWidth2()re
38、turnwidth2; ;intHeight()returnheight; ;friendostream&operator<<( ostream& os, const Trapezoid &c5);Trapezoid &operator=( const Trapezoid &tr )name = tr .name;width1 = tr .width1;width2 = tr .width2;height = tr .height;return * this ;private :int widthl;int width2;int height
39、;;Can vas.cpp:/ Can vas.cpp :实现文件/#i nclude "stdafx.h"#in clude "experime nt.h"#i nclude "Can vas.h"#include "quad.h"#include "diam.h"#include "list.h"#include "para.h"#include "rect.h"#include "squa.h"#include
40、 "trap.h"外部说明添加到这里extern List list;/ Can vasCan vas * Can vas:pCa nvas = NULLbool Canvas:isLearning =false ;IMPLEMENT_DYNCREACTfivas, CScrollView )Can vas:Ca nvas()pCanvas = this ;quadMap.insert( KV( "Parallelogram" , para);quadMap.insert( KV( "Rectangle" , rect );quadM
41、ap.insert( KV( "Square" , sqr);quadMap.insert( KV("Diamond", diam);quadMap.insert( KV( "Trapezoid" , trap );static CString formatString =|_T("宽=%d,高=%d,面积="),_T("对角线1=%d,对角线2=%d,面积="),_T("平行边1=%d,平行边2=%d,高=%d,面积=") ;Can vas:Ca nvas()BEGIN_M
42、ESSAGE_MCPivas, CScrollView )END_MESSAGE_MAP/ Can vas 绘图void Canvas:OnlnitialUpdate()CScrollView :OnlnitialUpdate();/CSize sizeTotal;/ TODO:计算此视图的合计大小/sizeTotal.cx = sizeTotal.cy = 100;SetScrollSizes(MM_TEXT, sizeTotal);union _QUADPTR_Quadra ngle *q;Para *p;Rect *r;Diam on d*d;Square *s;Trapezoid *t
43、;void Canvas:OnDraw( CDC pDCCDocumen* pDoc = GetDocume nt();/ TODO:在此添加绘制代码CRect rect;GetClie ntRect(&rect);|CBrush br( RGI(220, 200, 170);CBrush * oldBrush =reinterpret_cast<CBrush*>( pDG>SelectObject (&br);int xc, yc;int vw = rect.Width (), vh = rect.Height ();int sw = static_cast
44、<int >(vw * 0.75 / 2.0), sh =static_cast <int >(vh * 0.75 / 2.0);SIZE ad54= -sw + 50, -sh , sw + 50, -sh , sw - 50, sh , -sw - 50, sh , -sw, -sh , sw, -sh , sw, sh , -sw, sh ,| -sh, -sh , sh, -sh , sh, sh , -sh, sh , 0, -sh , sw, 0 , 0, sh , -sw, 0 , -sw + 120, -sh , sw - 80, -sh , sw, s
45、h , -sw, sh ,|;double ratio = 1.0;int yOffset = 120;if (isLearning)xc = vw / 2;yc = vh / 2;elsexc = 80; |yc = 60;ratio = 0.3;POINTvert4;int shape;size_t i, beg in = 0, end = list.size();if (isLearning) begin = end - 1;_QUADPTR_jad;stri ng n ame;CString msg, msg2;for (i = begin; i<= end; +i)quad.q
46、 = listi;n ame = quad.q->what();area = quad.q->area ();shape = quadMap name;switch (shape)case trap :msg.Format(formatStri ng2, quad.t->Width1(), quad.t->Width2(),quad.t->Height();break;case diam:msg.Format(formatString1, quad.p->Width(), quad.p->Height(); break;default : msg.Fo
47、rmat(formatString0, quad.p->Width(), quad.p->Height();if (isLearning) msg2 =_T(" ?");else msg2.Format ( T("%.1lf" ), area);msg += msg2;for ( int i = 0; i < 4; +i)verti.x =static_cast <int >(xc + (adshapei.cx * ratio);verti.y =static_cast <int >(yc + (adshapei
48、.cy * ratio);int tx, ty;if (isLearning)tx = xc - sw;ty = yc + sh + 8;elseCBrush br( RGB240, 240, 240);CBrush *oldbr = reinterpret_cast vCBrush *>( pDG>SelectObject(&br);CPen*oldpen =reinterpret_cast<CPen*>( pDG>SelectStockObject(NULL_PEN;pDG>Recta ngle (xc - 80, yc - 50, xc + 6
49、00, yc + 50);pDG>SelectObject(oldbr);pDG>SelectObject(oldpe n);tx = xc + yOffset - 24; ty = yc - 8; yc += yOffset;pDOPolygon (vert, 4); pDOSetBkMode ( TRANSPARENT pDOTextOutW (tx, ty, msg);pDG>SelectObject (oldBrush); void Canvas:drawQuad( const Quadrangle * quad) if (isLearning) pGanvas-&g
50、t;lnvalidate ();/ Can vas 诊断#ifdef _DEBUGvoid Canvas:AssertValid()const|CScrollView :AssertValid();#ifndef _WIN32_WCEvoid Canvas:Dump( CDumpContex& dc) const CScrollView :Dump(dc);#en dif#en dif _DEBUGbool Canvas:toggleMode( void )retur n isLear ning = !isLear ning;Experime nt.cpp:/ experime nt.
51、cpp :定义应用程序的类行为。/#i nclude "stdafx.h"#in elude "experime nt.h"#i nclude "experime ntDIg.h"#ifdef _DEBUG#defi ne n ewDEBUG_NEW#en dif/ Cexperime ntAppBEGIN_MESSAGE_MAP(Cexperime ntApp, CWin App)ON_COMMAND(ID_HELP, &CWin App:O nH elp)END_MESSAGE_MAP()/ Cexperime ntApp
52、 构造Cexperime ntApp:Cexperime ntApp()/支持重新启动管理器m_dwRestartMa nagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;/ TODO:在此处添加构造代码,/将所有重要的初始化放置在Initln sta nee中/ 唯一的一个 CexperimentApp 对象Cexperime ntApp theApp;/ Cexperime ntApp 初始化BOOL Cexperime ntApp:l nit In sta nce()/如果一个运行在Windows XP上的应用程序清单指定要/使
53、用ComCtl32.dll 版本6或更高版本来启用可视化方式,/则需要InitCommonControlsEx()。否则,将无法创建窗口。INITCOMMONCONTROLSEX Ini tCtrls;InitCtrls.dwSize =sizeof (InitCtrls);/将它设置为包括所有要在应用程序中使用的/公共控件类。In itCtrls.dwICC = ICC_WIN95_CLASSES;In itCommo nCon trolsEx (&ln itCtrls);CWin App:I nitI nsta nce();AfxE nableCo ntrolCo ntain er
54、();/创建shell管理器,以防对话框包含/任何shell树视图控件或shell 列表视图控件。CShellMa nager *pShellMa nager =n ewCShellMa nager;/标准初始化/如果未使用这些功能并希望减小/最终可执行文件的大小,则应移除下列/不需要的特定初始化例程/更改用于存储设置的注册表项/ TODO:应适当修改该字符串,/例如修改为公司或组织名SetRegistryKey(_T("应用程序向导生成的本地应用程序");Cexperime ntDlg dlg;m_pMai nWnd = & dlg;INT_PTR nRespo
55、nse = dlg.DoModal();if (n Response = IDOK)/ TODO:在此放置处理何时用/“确定”来关闭对话框的代码else if (nResponse = IDCANCEL)/ TODO:在此放置处理何时用/“取消”来关闭对话框的代码/删除上面创建的shell管理器。if (pShellManager != NULL)delete pShellManager;/由于对话框已关闭,所以将返回FALSE以便退岀应用程序,/而不是启动应用程序的消息泵。return FALSE;Exprime ntdlg.cpp:/ experime ntDlg.cpp :实现文件/#i
56、 nclude "stdafx.h"#in clude "experime nt.h"#i nclude "experime ntDlg.h"#i nclude "afxdialogex.h"#include "quad.h"#include "diam.h"#include "list.h"#include "para.h"#include "rect.h"#include "squa.h"_|#include "trap.h"#ifdef _DEBUG#defi ne n ewDEBUG_NEW#en dif全局说明添加在这
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨境电商物流分析
- 三农扶贫资金使用管理指南
- 医疗器械销售策略及预案
- 农业产业结构调整与转型升级方案
- 环境监测与污染防治技术应用指南
- 电子商务运营策略与市场分析知识考点
- 莲花县垃圾焚烧发电项目
- 项目管理进度表-项目时间线
- 游戏行业版权保护与侵权应对预案
- 监控复习试题及答案
- 药品质量管理体系文件目录
- 安徽涵丰科技有限公司年产6000吨磷酸酯阻燃剂DOPO、4800吨磷酸酯阻燃剂DOPO衍生品、12000吨副产品盐酸、38000吨聚合氯化铝、20000吨固化剂项目环境影响报告书
- GA/T 492-2004城市警用地理信息图形符号
- 化妆品生产许可申请表样板
- 老年综合评估和老年综合征课件
- 岩石性质及其工程分级课件
- 2023年西安铁路职业技术学院单招综合素质考试笔试题库及答案解析
- (新版)网络攻防知识考试题库(含答案)
- 人员技能矩阵图
- 教育评价学全套ppt课件完整版教学教程
- JJG 1063-2010 电液伺服万能试验机-(高清现行)
评论
0/150
提交评论