面向对象程序设计课程实验报告_第1页
面向对象程序设计课程实验报告_第2页
面向对象程序设计课程实验报告_第3页
面向对象程序设计课程实验报告_第4页
面向对象程序设计课程实验报告_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、真诚为您提供优质参考资料,若有不当之处,请指正。课 程 实 验 报 告课程名称:面向对象程序设计院 系 : 专业班级 : 学 号 : 姓 名 : 指导教师 : 目 录实验一.面向过程的整型栈编程11.需求分析11.1题目要求11.2需求分析12.系统设计22.1概要设计22.2详细设计34.软件测试45.特点与不足45.1技术特点45.2不足和改进的建议56.过程和体会56.1遇到的主要问题和解决方法56.2课程设计的体会57.源码和说明57.1文件清单及其功能说明57.2用户使用说明书57.3源代码5实验二.面向对象的整型栈编程121.需求分析121.1题目要求121.2需求分析122.系统

2、设计132.1概要设计132.2详细设计133.软件开发144.软件测试145.特点与不足145.1技术特点145.2不足和改进的建议156.过程和体会156.1遇到的主要问题和解决方法156.2课程设计的体会157.源码和说明157.1文件清单及其功能说明157.2用户使用说明书157.3源代码15实验三.基于算符重载的整型栈编程191.需求分析191.1题目要求191.2需求分析192.系统设计202.1概要设计202.2详细设计203.软件开发204.软件测试205.特点与不足215.1技术特点215.2不足和改进的建议216.过程和体会216.1遇到的主要问题和解决方法216.2课程设

3、计的体会217.源码和说明217.1文件清单及其功能说明217.2用户使用说明书217.3源代码21实验四. 面向对象的整型队列编程251.需求分析251.1题目要求251.2需求分析252.系统设计263.软件开发264.软件测试265.特点与不足265.1技术特点265.2不足和改进的建议266.过程和体会266.1遇到的主要问题和解决方法266.2课程设计的体会277.源码和说明277.1文件清单及其功能说明277.2用户使用说明书277.3源代码27实验五. 基于组合的整型队列编程311.需求分析311.1题目要求311.2需求分析312.系统设计313.软件开发324.软件测试325

4、.特点与不足325.1技术特点325.2不足和改进的建议326.过程和体会326.1遇到的主要问题和解决方法326.2课程设计的体会327.源码和说明337.1文件清单及其功能说明337.2用户使用说明书337.3源代码33实验六. 基于继承的整型队列编程371.需求分析371.1题目要求371.2需求分析382.系统设计383.软件开发384.软件测试385.特点与不足385.1技术特点385.2不足和改进的建议386.过程和体会396.1遇到的主要问题和解决方法396.2课程设计的体会397.源码和说明397.1文件清单及其功能说明397.2用户使用说明书397.3源代码3943 / 51

5、实验一.面向过程的整型栈编程1.需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用面向过程的方法编程, 然后写一个main函数对栈的所有操作函数进行测试。struct STACK int *elems;/申请内存用于存放栈的元素 int max;/栈能存放的最大元素个数 int pos;/栈实际已有元素个数,栈空时pos=0;void initSTACK(STACK *const p, int m);/初始化p指空栈:可存m个元素void

6、initSTACK(STACK *const p, const STACK&s); /用s初始化p指空栈int size (const STACK *const p);/返回p指的栈的最大元素个数maxint howMany (const STACK *const p);/返回p指的栈的实际元素个数posint getelem (const STACK *const p, int x);/取下标x处的栈元素STACK *const push(STACK *const p, int e); /将e入栈,并返回pSTACK *const pop(STACK *const p, int &e);/出

7、栈到e,并返回pSTACK *const assign(STACK*const p, const STACK&s);/赋给p指栈,返回pvoid print(const STACK*const p);/打印p指向的栈元素void destroySTACK(STACK*const p);/销毁p指向的栈,释放1.2需求分析本实验需要实现栈的功能的操作,如元素的进栈,连续进栈,出栈和连续出栈,所以需要设计两个栈,在完成初始化后直接在程序里给定栈内元素。2.系统设计2.1概要设计函数结构图见图1.1图1.1总体流程图见图1.2图1.22.2详细设计void initSTACK(STACK *cons

8、t p, int m)入口参数:int m出口参数:无功能:初始化栈,可存m个元素void initSTACK(STACK *const p, const STACK&s)入口参数:const STACK&s出口参数:无功能:用s初始化p指空栈int size (const STACK *const p) 入口参数:无出口参数:int max功能:返回p指的栈的最大元素个数maxint howMany (const STACK *const p) 入口参数:无出口参数:int pos功能:返回p指的栈的实际元素个数posint getelem (const STACK *const p, in

9、t x) 入口参数:int x出口参数:elemm功能:取下标x处的栈元素STACK *const push(STACK *const p, int e) 入口参数:int e出口参数:(*this)功能:将e入栈,并返回pSTACK *const pop(STACK *const p, int &e) 入口参数:int &e出口参数:(*this)功能:出栈到e,并返回pSTACK *const assign(STACK*const p, const STACK&s) 入口参数:STACK&s出口参数:(*this)功能:赋s给p指栈,返回pvoid print(const STACK*co

10、nst p) 入口参数:无出口参数:无功能:打印p指向的栈元素void destroySTACK(STACK*const p) 入口参数:出口参数:功能:销毁p指向的栈,释放3.软件开发在Codeblocks编译环境下,使用C+语言编写。4.软件测试测试结果见图1.3图1.35.特点与不足5.1技术特点完成了实验的所有要求,没有错误的地方。5.2不足和改进的建议没有做人机交互界面,无法自由选择入栈的数据;同时注释较少,对于程序不了解的人可能需要花费更多时间去了解。6.过程和体会6.1遇到的主要问题和解决方法输出结果数字与预计不同,检查后发现原因是变量初始值未设置。6.2课程设计的体会本次实验主

11、要还是通过回顾C语言中栈的知识完成在C+上的编程,所以总体过程没有出现太大的问题;同时也对const变量有了进一步的认识。7.源码和说明7.1文件清单及其功能说明experiment1.cpp源码experiment1.exe可执行文件。7.2用户使用说明书experiment1.cpp是程序的源码,可通过修改其中main函数中的变量来测试各个函数。7.3源代码#include#include#includestruct STACK int *elems;/申请内存用于存放栈的元素 int max; /栈能存放的最大元素个数 int pos; /栈实际已有元素个数,栈空时pos=0;void

12、initSTACK(STACK *const p, int m);/初始化p指向的栈:最多m个元素void initSTACK(STACK *const p, const STACK&s); /用栈s初始化p指向的栈int size (const STACK *const p);/返回p指向的栈的最大元素个数maxint howMany (const STACK *const p);/返回p指向的栈的实际元素个数posint getelem (const STACK *const p, int x);/取下标x处的栈元素STACK *const push(STACK *const p, int

13、 e); /将e入栈,并返回pSTACK *const pop(STACK *const p, int &e); /出栈到e,并返回pSTACK *const assign(STACK*const p, const STACK&s); /赋s给p指的栈,并返回pvoid print(const STACK*const p);/打印p指向的栈void destroySTACK(STACK*const p);/销毁p指向的栈int main(int argc, char* argv) STACK *s1 = (STACK *)malloc(sizeof(STACK); STACK *s2 = (S

14、TACK *)malloc(sizeof(STACK); initSTACK(s1,10); push(s1,1); push(s1,2); push(push(s1,3),4); initSTACK(s2,*s1); print(s2); printf(栈s1:n); print(s1); /assign(s2,*s1); printf(栈s2:n); print(s2); int a,b,c; a = size(s1); printf(栈的最大元素个数是 %dn,a); b = howMany(s1); printf(栈的实际元素个数是 %dn,b); c = getelem(s1,3);

15、 printf(3处栈元素是是%dn,c); int x,y,z; pop(s2,x); pop(pop(s2,y),z); printf(x= %d, y= %d, z= %d n,x,y,z); destroySTACK(s2); destroySTACK(s1); getchar(); return 0;void initSTACK(STACK *const p, int m)/初始化p指向的栈:最多m个元素 p-elems = (int*)malloc(m*sizeof(int*); if(!p-elems) return; p-pos = 0; p-max = m; int i; f

16、or(i=0;imax);i+) p-elemsi = 0;void initSTACK(STACK *const p, const STACK&s) /用栈s初始化p指向的栈 p-elems = (int*)malloc(s.max)*sizeof(int); p-pos = s.pos; p-max = s.max; int i; for(i=0;ielemsi=s.elemsi; printf(%dn,p-elemsi); int size (const STACK *const p)/返回p指向的栈的最大元素个数max return p-max;int howMany (const S

17、TACK *const p)/返回p指向的栈的实际元素个数pos return p-pos;int getelem (const STACK *const p, int x)/取下标x处的栈元素 if(p=NULL) return NULL; else if(x(p-pos) printf(不存在元素n); else return p-elemsx; STACK *const push(STACK *const p, int e) /将e入栈,并返回p if(p=NULL) return NULL; else if(p-pos)max) p-elemsp-pos=e; p-pos+; retu

18、rn p; else printf(栈满n); STACK *const pop(STACK *const p, int &e) /出栈到e,并返回p if(p=NULL) return NULL; else if(p-pos)=0) printf(栈为空n); else e=p-elems(p-pos)-1; (p-pos)-; return p; STACK *const assign(STACK*const p, const STACK&s) /赋s给p指的栈,并返回p if(p=NULL | &s=NULL) return NULL; else free(p-elems); /free

19、(p); /STACK *p = (STACK *)malloc(sizeof(STACK); initSTACK(p,s); return p; void print(const STACK*const p)/打印p指向的栈 int i; if(p = NULL) return; else if(p-pos = 0) printf(栈为空n); else for(i=0;ipos);i+) printf(%d ,p-elemsi); printf(n); void destroySTACK(STACK*const p)/销毁p指向的栈 free(p-elems); free(p); prin

20、tf(栈已销毁n);实验二.面向对象的整型栈编程1.需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向对象的C+语言定义,请将完成上述操作的所有函数采用C+编程, 然后写一个main函数对栈的所有操作函数进行测试。class STACK int *const elems;/申请内存用于存放栈的元素 const int max;/栈能存放的最大元素个数 int pos;/栈实际已有元素个数,栈空时pos=0;public:STACK(int m);/初始化栈:最多m个元素STACK(const

21、 STACK&s); /用栈s拷贝初始化栈int size ( ) const;/返回栈的最大元素个数maxint howMany ( ) const;/返回栈的实际元素个数posint getelem (int x) const;/取下标x处的栈元素STACK& push(int e); /将e入栈,并返回栈STACK& pop(int &e); /出栈到e,并返回栈STACK& assign(const STACK&s); /赋s给栈,并返回被赋值的栈void print( ) const;/打印栈STACK( );/销毁栈;1.2需求分析采用面向对象的C+语言定义整型栈,对其进行的操作通

22、常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。2.系统设计2.1概要设计首先需要定义一个类来实现栈,然后依次实现栈的各个功能,在主函数中给定一个栈然后,然后通过函数调用实现栈的功能。2.2详细设计STACK(int m) 功能:初始化栈:最多m个元素返回值:无STACK(const STACK&s) 功能:用栈s拷贝初始化栈返回值:无int size ( ) const功能:返回栈的最大元素个数max返回值:最大元素个数maxint howMany ( ) const功能:返回栈的实际元素个数pos返回值:元素数目posint getelem (int x) const 功能:取下标x

23、处的栈元素返回值:下标为x的元素STACK& push(int e)功能:将e入栈返回值:栈的引用STACK& pop(int &e)功能:出栈到e,并返回栈返回值:栈的引用STACK& assign(const STACK&s) 功能:使用栈s给栈p赋值返回值:栈的引用void print( ) const功能:打印栈返回值:无STACK( ) 功能:销毁栈返回值:无3.软件开发在Codeblocks编译环境下,使用C+语言编写。4.软件测试测试结果见图2.1图2.15.特点与不足5.1技术特点完成了初定目标,无其他特点。5.2不足和改进的建议人机交互需要进一步完善。6.过程和体会6.1遇到

24、的主要问题和解决方法由于第一次使用c+面向对象编写程序,开始不明白对象的生成及使用。在和同学老师的沟通和交流中,慢慢学会了编程的方法。6.2课程设计的体会C+语言与C语言有很多相通的地方,所以其中的某些原理和方法可以互相借鉴,这样就减少了在理解上的难度。7.源码和说明7.1文件清单及其功能说明experiment2.cpp源码experiment2.exe可执行文件。7.2用户使用说明书experiment2.cpp是程序的源码,可通过修改其中main函数中的变量来测试各个函数。7.3源代码#include #include using namespace std;class STACK in

25、t *const elems;/申请内存用于存放栈的元素 const int max;/栈能存放的最大元素个数 int pos;/栈实际已有元素个数,栈空时pos=0;public:STACK(int m);/初始化栈:最多m个元素STACK(const STACK&s); /用栈s拷贝初始化栈int size ( ) const;/返回栈的最大元素个数maxint howMany ( ) const;/返回栈的实际元素个数posint getelem (int x) const;/取下标x处的栈元素STACK& push(int e); /将e入栈,并返回栈STACK& pop(int &e

26、); /出栈到e,并返回栈STACK& assign(const STACK&s); /赋s给栈,并返回被赋值的栈void print( ) const;/打印栈STACK( );/销毁栈;STACK:STACK(int m):elems(new intm),max(m),pos(0)STACK:STACK(const STACK&s):elems(new ints.size(),max(s.size(),pos(s.howMany() for(int i=0;ipos;i+) elemsi=s.getelem(i); cout复制构造成功endl;int STACK:size() const

27、 return max;int STACK:howMany() const return pos;int STACK:getelem (int x) const return elemsx;STACK& STACK:push(int e) if(posmax) elemspos=e; pos+; else coutfulln; return *this;STACK& STACK:pop(int &e) if(pos=0) coutempty stack;return *this; pos-; e = elemspos; cout出栈成功; return *this;STACK& STACK:a

28、ssign(const STACK&s) int i; delete elems;/ elems = new int s.size();/ max = s.size(); pos = s.howMany(); for(i=0;is.howMany();i+) elemsi = s.getelem(i); return *this;void STACK:print( ) const int i; cout栈的元素为:; for(i=0;ipos;i+) coutelemsi ; coutendl;STACK:STACK() delete elems;/ elems= 0; / max = 0;

29、pos = 0; cout析构完成;int main() STACK s(7); s.push(5); s.push(7); s.push(9); s.push(11); s.print(); int i; s.pop(i); cout出栈元素iendl; STACK p(s); cout容量p.size()endl; cout当前元素数目p.howMany();实验三.基于算符重载的整型栈编程1.需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向对象的C+语言定义,请将完成上述操作的所有函

30、数采用C+编程, 然后写一个main函数对栈的所有操作函数进行测试。class STACK int *const elems;/申请内存用于存放栈的元素 const int max;/栈能存放的最大元素个数 int pos;/栈实际已有元素个数,栈空时pos=0;public:STACK(int m);/初始化栈:最多m个元素STACK(const STACK&s); /用栈s拷贝初始化栈virtual int size ( ) const;/返回栈的最大元素个数maxvirtual operator int ( ) const;/返回栈的实际元素个数posvirtual int operat

31、or (int x) const;/取下标x处的栈元素virtual STACK& operator(int &e);/出栈到e,并返回栈virtual STACK& operator=(const STACK&s);/赋s给栈,并返回被赋值的栈virtual void print( ) const;/打印栈virtual STACK( );/销毁栈;1.2需求分析采用面向对象的C+语言定义,构建整型栈并对其进行判断栈是否为空、向栈顶添加一个整型元素、出栈等操作。2.系统设计2.1概要设计首先需要定义一个类来实现栈,然后依次实现栈的各个功能,在主函数中给定一个栈然后,然后通过函数调用实现栈的功

32、能。2.2详细设计初始化定义一个类,分配一个数组空间来存储栈内元素信息,然后初始化为0; 实现入栈则需要将入栈元素e放入栈内,采用了先判断栈的最大容量够不够的问题,如果不够重新分配空间,并且让e入栈,将当前元素pos加一;然后返回栈结构。 实现出栈操作,首先判断是不是空,若空直接返回,不空则需将栈顶的元素赋给一个变量然后将当前元素pos减一;返回栈结构。实现栈的赋给即需要将s1栈内的元素依次赋给s2栈的,当前元素也需一致并且返回新的栈结构。3.软件开发在Codeblocks编译环境下,使用C+语言编写。4.软件测试测试结果见图3.1图3.15.特点与不足5.1技术特点使用了符号重载,在一定程度

33、上简化了函数。5.2不足和改进的建议在使用符号重载时需要特别注意,防止与其他操作符混淆。6.过程和体会6.1遇到的主要问题和解决方法对于符号重载,刚开始不会调用函数,之后通过查阅书籍,明白了重载的含义。6.2课程设计的体会本次实验以实验二为基础,通过使用符号重载来更简单的实现实验目的。7.源码和说明7.1文件清单及其功能说明experiment3.cpp源码experiment3.exe可执行文件。7.2用户使用说明书experiment3.cpp是程序的源码,可通过修改其中main函数中的变量来测试各个函数。7.3源代码#include #include using namespace st

34、d;class STACK int *const elems;/申请内存用于存放栈的元素 const int max;/栈能存放的最大元素个数 int pos;/栈实际已有元素个数,栈空时pos=0;public:STACK(int m);/初始化栈:最多m个元素STACK(const STACK&s); /用栈s拷贝初始化栈virtual int size ( ) const;/返回栈的最大元素个数maxvirtual operator int () const;/返回栈的实际元素个数posvirtual int operator (int x) const;/取下标x处的栈元素virtua

35、l STACK& operator(int &e);/出栈到e,并返回栈virtual STACK& operator=(const STACK&s); /赋s给栈,并返回被赋值的栈virtual void print( ) const;/打印栈virtual STACK( );/销毁栈;STACK:STACK(int m):elems(new intm),max(m),pos(0)STACK:STACK(const STACK&s):elems(new ints.max),max(s.max),pos(s.pos) for(int i=0;ipos;i+) elemsi=s.elemsi;i

36、nt STACK:size ( ) constreturn max;STACK:operator int () constreturn pos;int STACK:operator (int x) constreturn elemsx;STACK& STACK:operatormax) cout(int &e) if(pos=0) cout栈空; else e=*(elems+pos-1); pos-; return (*this);STACK& STACK:operator=(const STACK&s) delete elems; *(int*)&elems = new ints.max;

37、 *(int*)&max = s.max; for(pos=0;poss.pos;pos+) elemspos = s.elemspos; return *this;void STACK:print( ) const for(int i=0;ipos;i+) coutelemsin;STACK:STACK( ) delete elems; if(elems=0) cout销毁失败endl; else cout销毁成功endl; int main() STACK i(5),j(8); i136k; coutkn; i.print(); j=i; j.print(); j1234; coutend

38、l(int)j;实验四. 面向对象的整型队列编程1.需求分析1.1题目要求整型队列是一种先进先出的存储结构,对其进行的操作通常包括判断队列是否为空、向队列顶添加一个整型元素、出队列等。整型队列类型及其操作函数采用面向对象的C+语言定义,请将完成上述操作的所有函数采用C+编程, 然后写一个main函数对队列的所有操作函数进行测试。class QUEUE int *const elems;/申请内存用于存放队列的元素 const int max;/队列能存放的最大元素个数 int head, tail;/队列头和尾,队列空时head=tail;初始时head=tail=0public:QUEUE(

39、int m);/初始化队列:最多m个元素QUEUE(const QUEUE&s); /用队列s拷贝初始化队列virtual operator int ( ) const;/返回队列的实际元素个数virtual QUEUE& operator(int &e)volatile;/出队列到e,并返回队列virtual QUEUE& operator=(const QUEUE&s); /赋s给队列,并返回被赋值的队列virtual void print( ) const;/打印队列virtual QUEUE( );/销毁队列;1.2需求分析本题目用数组实现队列,需要预知需要空间的大小,会造成空间浪费或

40、不够用;插入或删除不需要动态分配或删除内存,耗时很小;支持随机存取。2.系统设计定义一个类,分配一个数组空间来存储栈内元素信息,类中分别定义两个int元素表示队列的头和尾,入栈的时候,头加一;出栈的时候,尾加一。3.软件开发在Codeblocks编译环境下,使用C+语言编写。4.软件测试测试结果见图4.1图4.15.特点与不足5.1技术特点通过创建队列类QUEUE,完成了队列的构造析构等诸多功能;同时再次运用重载操作符方便了入队出队等操作的完成。5.2不足和改进的建议队列一旦生成则无法改变。6.过程和体会6.1遇到的主要问题和解决方法如何构建一个循环队列,解决方法利用求余的方法,当头结点大于最

41、大元素的时候,除以最大元素求余,重新的得到头结点。6.2课程设计的体会本次实验使用面向对象的方法来编写一个队列,让我对队列的构建以及对其进行一些列的操作有了更进一步的了解。与前几次栈的实验相比,难度有所增加,但更锻炼了个人能力。7.源码和说明7.1文件清单及其功能说明experiment4.cpp源码experiment4.exe可执行文件。7.2用户使用说明书experiment4.cpp是程序的源码,可通过修改其中main函数中的变量来测试各个函数。7.3源代码#include #include using namespace std;class QUEUE int *const elem

42、s;/申请内存用于存放队列的元素 const int max;/队列能存放的最大元素个数 int head, tail;/队列头和尾,队列空时head=tail;初始时head=tail=0public:QUEUE(int m);/初始化队列:最多m个元素QUEUE(const QUEUE&s); /用队列s拷贝初始化队列virtual operator int ( ) const;/返回队列的实际元素个数virtual QUEUE& operator(int &e);/出队列到e,并返回队列virtual QUEUE& operator=(const QUEUE&s); /赋s给队列,并返回

43、被赋值的队列virtual void print( ) const;/打印队列virtual QUEUE( );/销毁队列;QUEUE:QUEUE(int m):elems(new intm),max(m),head(0),tail(0)QUEUE:QUEUE(const QUEUE&s):elems(new ints.max),max(s.max),head(s.head),tail(s.tail) for(int i=head;i=head) return (tail-head); return (max-head+tail);QUEUE& QUEUE:operator(int e) if

44、(tail+1)%max=head) cout(int &e) if(head=tail) cout队列空n; else e=elemshead; head=(head+)%max; return(*this);QUEUE& QUEUE:operator=(const QUEUE&s) delete elems; *(int*)&elems = new ints.max; *(int*)&max = s.max; head = s.head; tail = s.tail; for(int i=head;itail;i+) elemsi=s.elemsi; cout赋值成功n; return *

45、this;void QUEUE:print( ) const if(head=tail) coutEmptyn; cout队列元素为:; if(headtail) for(int i=head;itail;i+) coutelemsit; else for(int i=head;imax+1;i+) coutelemsit; for(int i=0;itail;i+) coutelemsit; coutn;QUEUE:QUEUE( ) delete elems; *(int*)&elems = 0; *(int*)&max =0; head = tail =0;int main() QUEUE q(5); q258; cout元素数目(

温馨提示

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

评论

0/150

提交评论