数据结构课程设计(停车场管理)_第1页
数据结构课程设计(停车场管理)_第2页
数据结构课程设计(停车场管理)_第3页
数据结构课程设计(停车场管理)_第4页
数据结构课程设计(停车场管理)_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

成绩

指导教师

普田粤院

PUTIANUNIVERSITY

《数据结构与算法》

课程设计报告

题目:停车场管理系统

姓名:____________________________

专业:智能科学与技术

班级:___________________________

学号:____________________________

指导教师:____________________________

新工科产业学院

2021年12月日

目录

1'项目简介.................................................1

2、设计要求.................................................2

3、引言.....................................................3

4、需求分析.................................................4

5、可行性分析...............................................5

6、系统分析与设计..........................................6

7、代码实现.................................................7

8、测试运行.................................................8

9、项目总结.................................................9

停车场管理系统

一'项目简介

模拟一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。

(1)车辆到达需输入汽车牌照号码及到达时刻;

(2)车辆离开需输入汽车在停车场的位置、离开时刻及在停车场内停留的时间和应

缴纳的费用(在便道上停留的时间不收费);

(3)停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为

它让路,待其开出停车场后,这些车辆再按照原来的次序进场;

(4)如果停留在便道上的车未进停车场就要离去,允许其离去,不收停车费,并且

仍然保持在便道上等待的车辆的次序。

二、设计要求

(1)以栈模拟停车场,以队列模拟停车场外的便道,按照从终端读入的输入数据的方式进行模拟管理。

输入1,表示车辆到达;

输入2,表示车辆离开;

输入3,表示显示出停车场内及便道上的停车情况;

输入4,表示退出系统。

(2)建立一个共享栈,两个栈共享空间,分别作为停车场和从停车场退出的汽车临时停放让道。

(3)要求有友好的操作界面,以上功能都能在界面中以适当的形式体现并方便地操作。

三、引言

本实验以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进

行模拟管理。每一组输入数据包括两个数据项:汽车牌照号码以及达到的时刻。如果停车场

已满,则会停在便道上。然后会输出汽车在停车场内或便道上停车位置。若是选择汽车离开

登记,则需要先输入汽车离开的时间,接着程序自动计算停车费用并输出。栈以顺序结构实

现,队列以链表结构实现。

四、需求分析

此停车场管理系统是在一个狭长的通道上的,而且只有一个大门可以供车辆进出,并且

要实现停车场内某辆车要离开时,在它之后进入停车场的车都必须先退出停车场为它让路,

待其开出停车场后,这些辆再依原来的次序进场的功能,就可以设计两个堆栈,其中一个堆

栈用来模拟停车场,另一个堆栈用来模拟临时停车场,该临时停车场用来存放当有车辆离开

时,原来停车场内为其让路的车辆。至于当停车场已满时,需要停放车辆的通道可以用一个

链队列来实现。当停车场内开走一辆车时,通道上便有一辆车进入停车场,此时只需要改变

通道上车辆结点的连接方式就可以了,使通道上第一辆车进入停车场这个堆栈,并且使通道

上原来的第二辆车成为通道上的第一辆车,此时只需将模拟通道的链队列的头结点连到原来

的第二辆车上就可以了。

五、可行性分析

设计环境:Dev-C++5.11

空间复杂度分析:

以栈模拟停车场,队列模拟车场外的便道

汽车离开时存在停车场栈的另一端,也就是运用了双栈,节省了汽车离开时所需要额

外花费的储存空间。

时间复杂度分析:

汽车离开停车场时,因为停车场是用栈,而栈是运用数组实现的,本项目中选择离开

的汽车是直接输入其停车的位置就可以实现汽车离开的操作,也就是可以直接找到该汽车的

位置,并不需要多余的查找操作,时间复杂度为0(1);

因为便道是采取的链表实现的,所以汽车在离开便道时,需要从头开始遍历查找,时

间复杂度为0(n)。

六、系统分析与设计

6.1所采用的数据结构

时间信息结构体,包括分钟和秒钟;

typedefstruct{

inthour;

intmin;

}Time;

车辆信息结构体,包括车牌号、到达时间、离开时间等信息;

typedefstructnode{//定义车辆信息结构体

charnum[10];

Timereach;〃到达时间

Timeleave;〃离开时间

}CarNode;

停车场最大容量,实验中设置为3;

#defineMAX3

停车场信息结构体,包括车辆数组,双向栈的两个顶点信息;

typedefstructNODE{〃用顺序栈栈表示停车场

CarNode*stack[MAX+l];

inttop[2];

}SeqStackCar;

便道结点信息结构体,包括车辆,next指针信息;

typedefstructcar{〃便道结点

2

CarNode*data;

structcar*next;

}QueueNode;

便道信息结构体,头指针,尾指针,车辆数量等信息;

typedefstructNode{〃链队列实现便道

QueueNode*head;〃头指针

QueueNode*rear;〃尾指针

intnum;

}LinkQueueCar;

停车场,用SeqStackCarEnter保存,其中,Enter数组的每个单元代表一个停车位。

Enter设置为全局变量。

便道,用LinkQueueCarWait保存,其中Wait的每个节点代表一个车位。

6.2showlist函数

展示菜单信息;

6.3InitStack函数

初始化停车场栈;

6.4InitQueue函数

初始化便道;

6.5Arrival函数

3

输入欲进库车9号

先检测停车场有没有停满,若没有,则录入车辆车牌号和到达时间信息,并且将该车辆

信息加入停车场栈中;若已满,则将车辆信息录入便道队列中。

6.6Pop函数

汽车信息入栈。

6.7Pop函数

汽车信息出栈。

6.8EnterQue函数

汽车信息入队列。

6.9DeleteQueue函数

汽车信息出队。

6.10Leave函数

检测停车场和便道是否有车,若没

有车,则直接提示没有任何车辆信息;

若有,则选择将要离开的车辆在停车场

和便道的哪个位置,再将此车辆信息从

栈和队列中删除,若该车辆信息储存在

栈的底部,则先将顶部的车辆信息取出

并存储到栈数组的尾部,直到取到对应

的车辆信息,删除此信息后,再将刚刚

移到栈尾部的车辆信息依次再放回栈的

头部。

6.11leavl函数

需要离开的车在停车场。

6.12leave2函数

需要离开的车在便道

6.13Listl函数

显示停车场里的车辆情况

6.14List2函数

显示便道上的车辆情况

6.15List函数

查看车辆列表显示函数。

6.16PRINT函数、

计算车辆收费函数。

七、代码实现

7.1showlist函数

voidshowlist()

printf("\n\t\t

”);

printf("\n\t\t

”);

printf("\n\t\t\t\t\t欢迎使用停车场系统.\t\n〃);

printf(,z\n\t\t\t\t\t[1]车辆到达登记.\t\n");

printf("\n\t\t\t\t\t[2]车辆离开登记.\t\n");

printf("\n\t\t、\t\t[3]车辆列表显示.\t\n");

printf('\n\t\t\t\t\t[0]退出管理系统.\t\n〃);

printfC\n\t\t1本停车场收费标准为一分钟0.05元,便道停车0.02一分钟望周

知[\n");

printfC\t\t

”);

)

7.2PRINT函数

voidPRINT(CarNode*p,inti){//车辆收费

intAl,A2,Bl,B2;

floatm;

printfC\n\t\t车辆离开的时间:”);

scanf&(p->leave.hour),&(p->leave.min));

printfC\n\t\t离开车辆的车牌号为:“);

puts(p->num);

5

Al=p->reach.hour;

A2=p->reach.min;

Bl=p->leave.hour;

B2=p->leave.min;

printfC\n\t\t其到达时间为:%d:%d\n,,Al,A2);

printf(〃\n\t\t离开时间为:%d:%d\n〃,Bl,B2);

switch(i){

case1:

n尸((Bl-Al)*60+(B2-A2))*PRICE1;break;〃小时跟小时求差换算成分与分钟求

和得出价格

case2:

m=((Bl-Al)*60+(B2-A2))*PRICE2;break;

)

if(m>0)

printf(zz\n\t\t应交费用为:%2.If元\n〃,m);

else

printfCz\n\t\t无需收费\n〃);

free(p);

)

7.3InitStack函数

voidInitStack(SeqStackCar*s){//栈的初始化

inti;

s->top[0]=-l;

s->top[l]=MAX;

for(i=0;i<MAX;i++)

s->stack[i]=NULL;

)

7.4InitQueue函数

intInitQueue(LinkQueueCar*Q){//队列的初始化

Q->head=(QueueNode*)malloc(sizeof(QueueNode));〃头结点生成

if(Q->head!=NULL)

(

Q->head->next=NULL;〃头指针next域置空

Q->rear=Q->head;〃尾指针指向头结点

Q->num=0;

return(1);

)

elsereturn(-1);

)

7.5Push函数

intPush(SeqStackCar*s,CarNode*p,inti){〃入栈

if(s->top[0]+l==s->top[1])return0;//栈满

switch(i){

case0:

s->top[0]++;

6

s->stack[s->top[0]]=p;

break;

case1:

s->top[l]一;

s->stack[s->top[l]]=p;

break;

default:

return0;

}

return1;

)

7.6Pop函数

CarNode*Pop(SeqStackCar*s,inti){〃出栈

CarNode*p;

switch(i){

case0:

if(s->top[0]==-l)returnNULL;

p=s->stack[s->top[0]];//0号栈元素出栈

s->top[0]一;

break;

case1:

if(s->top[l]==MAX)returnNULL;

p=s->stack[s->top[1]];//0号栈元素出栈

s->top[l]++;

break;

default:

returnNULL;

)

returnp;

}

7.7EnterQue函数

intEnterQue(LinkQueueCar*W,CarNode*p){〃链队列入队,生成队列节点,存入节点

信息,将尾指针的next指向它,移动尾指针

QueueNode*t;

t=(QueueNode*)malloc(sizeof(QueueNode));〃生成队列结点空间

if(t!=NULL){

t->data=p;

t->next=NULL;

W->rear->next=t;

W->rear=t;

W->num++;

system("pause");

return1;

else

7

return0;

)

7.8DeleteQueue函数

CarNode*DeleteQueue(LinkQueueCar*W,CarNode*x,intm){〃出队

QueueNode*p,*q;

inti;

p=W->head->next;

q=W->head;

if(W->head==W->rear)return0;〃队列为空

for(i=l;i<m;i++){

q=P;

p=p->next;

)

q->next=p->next;

if(W->rear=q)〃如果队中只有一个元素则p出队以后成为空队

W->rear=W->head;

x=p->data;

free(p);

W->num-;

returnx;

)

7.9leavel函数

voidleavel(SeqStackCar*Enter,LinkQueueCar*W){〃停车场的车离开

introom;

CarNode*p,*x;

if(Enter->top[0]>T)〃判断车场是否为空

(

while(1)

(

printf(z,\n\t\t请输入车在车场的位置/I--%d/:〃,Enter->top[0]+l);

scanf(〃%d〃,&room);//获取停车位

room——;

if(room>=0&&room<=Enter->top[0])break;〃判断输入位置是否有效

elseprintf(〃\n\t\t输入有误,请重输:〃);

)

while(Enter->top[0]〉room)〃把要删除的车辆的前面的车开出来,进临时栈。

(

x=Pop(Enter,0);

Push(Enter,x,1);

}

p=Pop(Enter,0);

PRINT(p,l);//调用计费函数计费

if((W->head!=W->rear))〃若便道不为空

p=DeleteQueue(W,p,1);

8

Push(Enter,p,0);

printfC\n便道里的车进入停车场\n〃);

)

whi1e(Enter->top[l]<MAX)〃再把临时栈里辆进停车场

(

x=Pop(Enter,1);

Push(Enter,x,0);

}

)

elseprintfC\n\t\t车场里没有车.\n〃);〃停车场空直接出去

)

7.10leave2函数

voidleave2(LinkQueueCar*W){〃便道离开函数

introom;

CarNode*p;

if(W->head!=W->rear){〃队列不为空

while(1)

(

printf(z,\n\t\t请输入车在便道的位置/I--%d/:,z,W->num);

scanf(〃%d〃,&room);

if(room>=l&&room<=W->num)break;〃判断输入位置是否有效

elseprintf(〃\n\t\t输入有误,请重输:〃);

)

p=DeleteQueue(W,p,room);

PRINT(p,2);

)

else{

printf(〃\t\t便道里没有车〃);

)

)

7.11Arrival函数

intArrival(SeqStackCar*Enter,LinkQueueCar*W){〃车辆进入函数

CarNode*p;

p=(CarNode*)malloc(sizeof(CarNode));〃生成车辆节点

printfC\n\t\t请输入车牌号(例:豫B1234):〃);

scanf(〃%s〃,p->num);

printf(z,\n\t\t车辆到达时间:〃);

scanf(zz%d:%dz/,&(p->reach.hour),&(p->reach.min));

if(Enter->top[0]+1<Enter->top[1]){

Push(Enter,p,0);

printf(/z\n\t\t车辆在车场第%d位置.\n\n〃,Enter->top[0]+l);

system("pause");

return(1);

)

9

else〃停车场已满需要进入便道等待,便道用队列实现

printf("\n\t\t该车须在便道等待!有车位时进入车场\n\n");

EnterQue(W,p);

return(1);

)

)

7.12leave函数

voidLeave(SeqStackCar*Enter,LinkQueueCar*W)〃车辆离开函数

(

〃车辆的离开

inta=l,b=0;

while(a)

systemC'cls'O;

printf(〃\n\t\t

〃);

printf(zz\n\t\t

〃);

printf(z/\n\t\t\t\t\t欢迎使用停车场系统.\t\n〃);

printf(z,\n\t\t\t\t\t[1]停车场.\t\n〃);

printf("\n\t\t\t\t\t[2]便道.\t\n〃);

printf(z,\n\t\t\t\t\t[0]返回上一级.\t\n〃);

printf(〃\t\t

〃);

printf(〃\n\t\t请选择您需要出库车辆的存在场地:〃);

scanf(级d〃,&b);

switch(b)

(

case0:a=0;break;

case1:leavel(Enter,W);break;

case2:leave2(W);break;

default:printf(,z\n\t\t输入错误请重新输入:〃);break;

system("pause");

}

7.13Listl函数

voidListl(SeqStackCarS)〃显示车场里的车辆情况

inti;

if(S.top[0]>=0)

(

printf(z/\n\t\t车场:\n");

printf(〃\n\t\t位置\t到达时间\t车牌号\n\n〃);

io

for(i=0;i<=S.top[0];i++)

(

printf("\t\t%d”,i+1);

printf(,,\t%d:%d\t\t//,S.stack[i]->reach.hour,S.stack[i]->reach.min);

puts(S.stack[i]->num);

printf("\n");

}

)

elseprintf(z/\n\t\t车场里没有车\n\n");

)

7.14List2函数

voidList2(LinkQueueCar*W)//显示便道上的车辆情况

(

QueueNode*p;

inti;

p=W->head->next;

if(W->head!=W->rear)

(

printf("\n\t\t便道:\n");

for(i=l;(p!=NULL);i++)

{

printf('\n\t\t第%d辆车:",i);

puts(p->data->num);

p=p->next;

)

)

elseprintf(/z\n\t\t便道里没有车\n\n");

)

7.15List函数

voidList(SeqStackCarS,LinkQueueCarW)〃查看列表显示,遍历

(

intflag,tag;

flag=l;

while(flag)

(

system("cls");

printf("\n\t\t

_");

printf("\n\t\t

—");

printf(z/\n\t\t\t\t\t查看车辆列表显示\t\n");

printf(/?\n\t\t\t\t\t[1]车场列表.\t\n");

printf(z/\n\t\t\t\t\t[2]便道列表.\t\n");

printf(z,\n\t\t\t\t\t[0]返回主菜单.\t\n")

11

printfC\t\t

___________________________________________________________________〃);

printf("\n\t\t请选择0~2:〃);

while(1)

(

scanf(〃%d〃,&tag);

if(tag>=0&&tag<=2)

break;

else

printf(〃\n\t\t输入有误,请重新选择0~2:〃);

}

switch(tag)

(

case1:

Listl(S);

system(,zpause,z);

break;

case2:

List2(&W);

printf(〃\n〃);

system("pause");

break;

case0:

flag=0;

break;

default:

break;

)

system(,,cls/,);

}

)

八、测试运行

8.1主页面测试

12

固C:\Users\86152\Desktop\test⑵X[+v—□X

欢迎使用停车场系统.

[1]车辆到达登记.

[2]车辆离开登记.

[3]车辆列表显示.

[0]退出管理系统.

【本停车场收费标准为一分钟@5元,便道停车e.02一分钟望周知】

请选择:

8.2车辆到达登记功能测试

国C:\Users\86152\Desktop\test⑵X,+一□X

欢迎使用停车场系统.

[1]车辆到达登记.

[2]车辆离开登记.

[3]车辆列表显示.

[0]退出管理系统.

【本停车场收费标准为一分钟0.05元,便道停车@.62一分钟望周知】

请选择:1

请输入车牌号(例:豫B1234):123

车辆到达时间:12:22

车辆在车场第1位置.

请按任意键继续.・,

8.3车辆离开停车场功能测试

13

回C:\Users\86152\Desktop\test(2)X+7□X

欢迎使用停车场系统.

[1]停车场.

[2]便道.

[0]返回上一级.

落—籥:由京不福而至这法施不

请输入车在车场的位置/1--1/:1

车辆离开的时间:12:33

离开车辆的车牌号为:123

其到达时间为:12:22

离开时间为:12:33

应交费用为:9.6元

请按任意键继续...

8.4车辆停入便道功能测试

囱C:\Users\86152\Desktop\test⑵X+□X

欢迎使用停车场系统.

[1]车辆到达登记.

[2]车辆离开登记.

[3]车辆列表显示.

[0]退出管理系统.

【本停车场收费标准为一分钟9.05元,便道停车9.02一分钟望周知】

请选择:1

请输入车牌号(例:豫B1234):567

车辆到达时间:15:U

该车须在便道等待!有车位时进入车场

请按任意键继续...

8.5查看停车场车辆信息功能测试

14

国C:\Users\86152\Desktop\test⑵X'+v-□X

查看车辆列表显示

[1]车场列表.

[2]便道列表.

[0]返回主菜单.

请选择0~2:1

车场:

位置到达时间车牌号

112:11123

213:22234

314:33345

请按任意键继续.・・

8.6查看便道车辆信息功能测试

国C:\Users\86152\Desktop\test⑵X+-□X

查看车辆列表显示

[1]车场列表.

[2]便道列表.

[0]返回主菜单.

请选择0-2:2

便道:

第1辆车:567

第2辆车:789

请按任意键继续...

8.7车辆从便道离开功能测试

15

回C:\Users\86152\Desktop\test⑵X|+7-□X

欢迎使用停车场系统.

[1]停车场.

[2]便道.

[0]返回上一级.

请选择您需要出库车辆的存在场地:2

清输入车在便道的位置/1--2/:1

车辆离开的时间:15:33

离开车辆的车牌号为:567

其到达时间为:15:11

离开时间为:15:33

应交费用为:@.4元

请按任意键继续...

8.7当便道有车辆时车辆从停车场第一位置离开功能测试

EC:\Users\86152\Desktop\test(2)X+7□X

欢迎使用停车场系统.

[1]停车场.

[2]便道.

[0]返回上一级.

请选择您需要出库车辆的存在场地:1

请输入车在车场的位置/1-3/:1

车辆离开的时间:13:22

离开车辆的车牌号为:123

其到达时间为:12:11

离开时间为:13:22

应交费用为:3.5元

便道里的车进入停车场

请按任意键继续...

8.7便道车辆进入停车场后查看停车场车辆信息

16

叵]C:\Users\86152\Desktop\test(2)X[+v-□X

查看车辆列表显示

[1]车场列表.

[2]便道列表.

[e]返回主菜单.

请选择0-2:1

车场:

位置到达时间车牌号

116:11789

213:22234

314:33345

请按任意键继续.・・

九、项目总结

本次项目是栈和队列的基本算法,是基础练习,关键是车辆的离开,具体谈谈我理解的停车

场。停车场系统总的来说分为五大块,第一块和第二块属于基本操作,包括初始化栈和队列;

第三块是车到达,分为两个层次:

1.车到达了进栈

2.栈满,进队列。

第四块是车离开,分为五个层次:

1.车离开,判断该车后面是否还有车

2.有车的话,后面的车让路,进临时栈

3.然后该车离开,打印出离开信息

4.离开后,判断临时栈上是否有车,有车重新进车站

5.再判断便道上是否有车,有车也进车站。

第五块是显示车站信息,分为三个层次:

1.显示车站信息

2.显示便道信息

3.返回。

17

附录:(程序源代码)

〃头文件

#ifndefCarParking_H_INCLUDED

#defineCarParking_HJNCLUDED

#defineMAX3

/**********************************************************

功能描述:头文件

*其它说明:消息字段之间用分号(;)分隔

************************************************************/

typedefstruct(

inthour;

intmin;

}Time;

typedefstructnode{//定义车辆信息结构体

charnum[10];

Timereach;〃到达时间

Timeleave;〃离开时间

JCarNode;

typedefstructNODE{〃用顺序栈栈表示停车场

CarNode*stack[MAX+l];

intlop[2];

JSeqStackCar;

typedefstructcar{〃便道结点

CarNode*data;

structcar*next;

IQucucNode;

typedefstructNode{〃链队列实现便道

QueueNode*head;〃头指针

QucueNodc*rcar;〃尾指住十

intnum;

JLinkQueueCar;

voidshowlist();

voidInitStack(SeqStackCar*);

intlnitQueue(LinkQueueCar*);

intArrival(SeqStackCar*,LinkQueueCar*);

voidLcave(SeqStackCar*,LinkQucueCar*);

voidList(SeqStackCar,LinkQueueCar);

voidleave1(SeqStackCar*Enter,LinkQueueCar*W);

voidleave2(LinkQueueCar*W);

intPush(ScqStackCar*s,CarNode*p,inti);

CarNode*Pop(SeqStackCar*s,inti);

intEnterQue(LinkQueueCar*W,CarNode*p);

#endif//CarParking_H_INCLUDED

18

#include<stdio.h>

#include<stdlib.h>

#includc"test.h"

〃主程序

intmain()

(

ScqStackCarEnter;〃定义栈和便道

LinkQueueCarWait;

intch;

system("color09”);

InitStack(&Entcr);〃对栈进行初始化

InitQueue(&Wait);〃队列初始化

while(l)

(

showlist();

printf("\n\n\t\t请选择:");

scanf(*'%d",&ch);

switch(ch)

(

case1:

Arrival(&Enter,&Wait);

break;

case2:

Leave(&Enter,&Wait);

break;

case3:

List(Enter.Wait);

break;

case0:

exit(O);

default:

printf("\n输入有误,请重新选择:0-3:");

break;

)

system(Hcls");

1

}//自定义函数

#include<stdio.h>

#include<stdlib.h>

#include<unistd.h>

#include<cstdlib>

#include<string.h>//停车场最大容量为3辆,便于观察

#definePRICE10.05

#definePRICE20.02

#include"test.h"

voidshowlist()

19

printf("\n\t\t____—

printf(n\n\t\t_____

printf("\n\t\t\t\t\t欢迎使用停车场系统.\t\n");

printf("\n\t\t\t\t\t[1]车辆到达登记.\t\n");

printf("\n\t\t\t\t\t[2]车辆离开登记.\l\n");

printf("\n\t\t\t\t\t[3]车辆列表显示.\t\n");

printf("\n\t\t\t\t\t[0]退出管理系统.\t\n");

printf("\n\t\t【本停车场收费标准为一分钟0.05元,便道停车0.02一分钟望周知]\n");

printf("\t\t”);

)

voidPRINT(CarNode*p,inti){//车辆收费

intAl,A2,Bl,B2;

floatm;

printf("\n\t\t车辆离开的时间

scanf(H%d:%d'\&(p->leave.hour),&(p->leave.min));

printf("\n\t\t离开车辆的车牌号为:");

puts(p->num);

A1=p->reach.hour;

A2=p->rcach.min;

Bl=p->leave.hour;

B2=p->leave.min;

printf("\n\t\t其到达时间为:%d:%d\n\A1,A2);

printf("\n\t\t离开时间为:%d:%d\n",Bl,B2);

switch(i){

case1:

m=((Bl-Al)*60+(B2・A2))*PRICEl;break;〃小时跟小时求差换算成分与分钟求和得出价格

case2:

m=((Bl-A1)*60+(B2-A2))*PRICE2;break;

温馨提示

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

评论

0/150

提交评论