C语言实现校园导游系统_第1页
C语言实现校园导游系统_第2页
C语言实现校园导游系统_第3页
C语言实现校园导游系统_第4页
C语言实现校园导游系统_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

第C语言实现校园导游系统system("cls");

printf("\t\t\t\t\t\t——————地点信息查询——————\n");

printf("\t\t\t\t\t\t请选择需要查询的方式\n");

printf("\t\t\t\t\t\t1.地点编号查询\n");

printf("\t\t\t\t\t\t2.地点名称查询\n");

printf("\t\t\t\t\t\t3.地点编号名称共同查询\n");

scanf("%d",

if(c==1){

system("cls");

PrintPlace(

printf("\t\t\t\t\t\t请输入需要查找的地点编号:");

scanf("%d",num);

if(num0num=G.vexnum){

printf("\n\n");

printf("\t\t\t编号:%d\n",num);

printf("\t\t\t名称:%s\n",G.vex[num].name);

printf("\t\t\t简介:%s\n\n",G.vex[num].info);

}

else{

printf("\t\t\t\t\t\t信息输入有误!\n");

}

printf("\n\t\t\t\t\t\t是否继续查询地点信息?\n");

printf("\t\t\t\t\t\t1:是\n");

printf("\t\t\t\t\t\t0:返回上级菜单\n");

scanf("%d",flag);

}

elseif(c==2){

system("cls");

printf("\t\t\t\t\t\t请输入需要查询的地点名称:");

scanf("%s",n);

for(i=1;i=G.vexnum;i++){

if(strcmp(G.vex[i].name,n)==0){

printf("\n\n");

printf("\t\t\t编号:%d\n",i);

printf("\t\t\t名称:%s\n",G.vex[i].name);

printf("\t\t\t简介:%s\n\n",G.vex[i].info);

break;

}

}

printf("\n\t\t\t\t\t\t是否继续查询地点信息?\n");

printf("\t\t\t\t\t\t1:是\n");

printf("\t\t\t\t\t\t0:返回上级菜单\n");

scanf("%d",flag);

}

elseif(c==3){

system("cls");

PrintPlace(

printf("\t\t\t\t\t\t请输入需要查找的地点编号:");

scanf("%d",num);

printf("\t\t\t\t\t\t请输入需要查询的地点名称:");

scanf("%s",n);

if(num0num=G.vexnumstrcmp(G.vex[num].name,n)==0){

printf("\n\n");

printf("\t\t\t编号:%d\n",num);

printf("\t\t\t名称:%s\n",G.vex[num].name);

printf("\t\t\t简介:%s\n\n",G.vex[num].info);

}

printf("\n\t\t\t\t\t\t是否继续查询地点信息?\n");

printf("\t\t\t\t\t\t1:是\n");

printf("\t\t\t\t\t\t0:返回上级菜单\n");

scanf("%d",flag);

}

}

system("cls");

//地点信息,文件

voidIntroduceFile(AdjMatrixG){

inti;

charfilename[30]="introduce.txt";

FILE*fp;

fp=fopen(filename,"wt");

if(fp==NULL){

printf("\n不能打开!");

exit(1);

}

G.vexnum=15;

strcpy(G.vex[1].name,"西区正门");

strcpy(G.vex[1].info,"西安邮电大学长安校区西区的正门");

strcpy(G.vex[2].name,"西邮桥");

strcpy(G.vex[2].info,"链接西安邮电大学长安校区西区和东区的桥梁,过马路请走西游桥");

strcpy(G.vex[3].name,"东区正门");

strcpy(G.vex[3].info,"西安邮电大学长安校区东区的正门");

strcpy(G.vex[4].name,"水煮鸽子");

strcpy(G.vex[4].info,"西安邮电大学长安校区西区正门口,由鸽子和喷泉组成");

strcpy(G.vex[5].name,"基础教学楼");

strcpy(G.vex[5].info,"西安邮电大学教学楼,有A楼和B楼,是西安邮电大学学生们上课的地方");

strcpy(G.vex[6].name,"教学实验楼");

strcpy(G.vex[6].info,"西安邮电大学长安校区西区实验楼");

strcpy(G.vex[7].name,"逸夫楼");

strcpy(G.vex[7].info,"西安邮电大学教学楼,是学生们上课的地方,很容易迷路哦");

strcpy(G.vex[8].name,"图书馆");

strcpy(G.vex[8].info,"西安邮电大学图书馆,可以借阅书籍和自习");

strcpy(G.vex[9].name,"医务室");

strcpy(G.vex[9].info,"西安邮电大学医务室");

strcpy(G.vex[10].name,"旭日苑");

strcpy(G.vex[10].info,"西安邮电大学西区食堂");

strcpy(G.vex[11].name,"东升苑");

strcpy(G.vex[11].info,"西安邮电大学东区食堂");

strcpy(G.vex[12].name,"体育馆");

strcpy(G.vex[12].info,"西安邮电大学体育馆,内有运动场地");

strcpy(G.vex[13].name,"西区宿舍");

strcpy(G.vex[13].info,"分为长思公寓和长智公寓");

strcpy(G.vex[14].name,"安美公寓");

strcpy(G.vex[14].info,"分为安美公寓南楼和北楼");

strcpy(G.vex[15].name,"安悦公寓");

strcpy(G.vex[15].info,"分为安悦公寓南楼和北楼");

//把信息存到文件中

for(i=1;i=G.vexnum;i++){

fprintf(fp,"%s\n%s\n",G.vex[i].name,G.vex[i].info);

}

fclose(fp);

//邻接矩阵信息,文件

voidAdjFile(AdjMatrixG){

inti,j;

charfilename[30]="adj.txt";

charfilename1[30]="flag.txt";

FILE*fp;

fp=fopen(filename,"wt");

if(fp==NULL){

printf("\n不能打开!");

exit(1);

}

FILE*fp1;

fp1=fopen(filename1,"wt");

if(fp1==NULL){

printf("\n不能打开!");

exit(1);

}

G.vexnum=15;

G.arcnum=24;

//15个顶点,24个边

fprintf(fp1,"%d%d\n",G.vexnum,G.arcnum);//存入文件标记

//初始化矩阵

for(i=0;i=G.vexnum;i++){

for(j=0;j=G.vexnum;j++){

G.arcs[i][j]=INFINITY;

//权值全部赋无穷大

}

}

//给地点设置权值,即需要走的路程

G.arcs[1][3]=G.arcs[3][1]=800;

G.arcs[1][4]=G.arcs[4][1]=120;

G.arcs[2][3]=G.arcs[3][2]=300;

G.arcs[2][8]=G.arcs[8][2]=450;

G.arcs[2][9]=G.arcs[9][2]=600;

G.arcs[2][11]=G.arcs[11][2]=100;

G.arcs[2][12]=G.arcs[12][2]=500;

G.arcs[3][7]=G.arcs[7][3]=150;

G.arcs[4][5]=G.arcs[5][4]=140;

G.arcs[4][8]=G.arcs[8][4]=200;

G.arcs[5][6]=G.arcs[6][5]=111;

G.arcs[5][8]=G.arcs[8][5]=222;

G.arcs[6][8]=G.arcs[8][6]=300;

G.arcs[6][9]=G.arcs[9][6]=417;

G.arcs[6][10]=G.arcs[10][6]=360;

G.arcs[6][12]=G.arcs[12][6]=250;

G.arcs[7][14]=G.arcs[14][7]=120;

G.arcs[8][12]=G.arcs[12][8]=345;

G.arcs[9][10]=G.arcs[10][9]=404;

G.arcs[10][12]=G.arcs[12][10]=200;

G.arcs[10][13]=G.arcs[13][10]=100;

G.arcs[11][15]=G.arcs[15][11]=150;

G.arcs[14][15]=G.arcs[15][14]=50;

for(i=1;i=G.vexnum;++i){

for(j=1;j=G.vexnum;++j){

if(G.arcs[i][j]!=INFINITYij){

fprintf(fp,"%10d%10d%10d\n",i,j,G.arcs[i][j]);

}

}

}

fclose(fp1);

fclose(fp);

//重置访问数组

voidClearVisited(AdjMatrix*G){

inti;

for(i=0;i=MAXVEX;i++){

G-vex[i].visited=0;//全部置0

}

//深度优先搜索遍历

voidDfsAll(AdjMatrix*G,ints,inte){

inti,j;

intshuai=0;

G-vex[s].visited=1;

//置起始点为1

way1[count1]=s;

//把起点的序号存在一个数组里,此时count是0

for(i=1;i=G-vexnum;i++){

//遍历顶点

if(G-arcs[s][i]!=INFINITYG-vex[i].visited==0i!=e){

//权值不等于无穷,而且没有被访问过,并且没有回到起点

count1++;

//数组下标递增

way1[count1]=i;

//给数组对应的下标附上顶点值

DfsAll(G,i,e);

//递归

G-vex[i].visited=0;//递归回来返回到这一层还原这一层现状

count1--;

shuai=0;

//结束的标志

continue;

}

if(G-arcs[s][i]!=INFINITYG-vex[i].visited==0i==eshuai==0){

//输出

count1++;

way1[count1]=e;

shuai=1;

printf("\n");

printf("\t%s",G-vex[way1[0]].name);

//起始点

for(j=1;j=count1;j++){

printf("--

printf("%s",G-vex[way1[j]].name);

//依次打印

}

count1--;

//让全局变量count变成0,以供其它函数使用

return;

}

}

return;

//所有简单路径菜单

voidAllPath(AdjMatrixG,intdist[],intpath[][MAXVEX]){

ints,e;

intflag=1;

while(flag==1){

system("cls");

printf("\t\t\t\t\t\t——————所有简单路径查询——————\n");

PrintPlace(

printf("\n\t\t\t\t\t输入起点编号:");

scanf("%d",

printf("\t\t\t\t\t输入终点编号:");

scanf("%d",

if(sG.vexnum||s=0||eG.vexnum||e0||s==e){

printf("\t\t\t\t\t\t输入错误!\n\n");

}

else{

ClearVisited(

//给标志数组初始化

count1=0;

printf("\n\t\t\t从%s到%s的所有简单路径有:\n",G.vex[s].name,G.vex[e].name);

DfsAll(G,s,e);//调用函数进行实现功能

}

printf("\n\n\t\t\t\t\t\t是否继续查询所有简单路径\n");

printf("\t\t\t\t\t\t1:是\n");

printf("\t\t\t\t\t\t0:返回上级菜单\n");

scanf("%d",flag);

}

system("cls");

//中转最少,也可以用广搜,顶点A到顶点B所含边的数目最少的路线,从A出发广度优先遍历,遇到顶点B就可以停止了

voidDfsLitter(AdjMatrix*G,intstart,intend){

intshuai=0;

inti,j;

G-vex[start].visited=1;

way2[count2]=start;

for(i=1;i=G-vexnum;i++){

if(G-arcs[start][i]!=INFINITYG-vex[i].visited==0i!=end){

count2++;

way2[count2]=i;

DfsLitter(G,i,end);//递归

G-vex[i].visited=0;

count2--;

shuai=0;

continue;

}

//此时搜到了所有路径

if(G-arcs[start][i]!=INFINITYG-vex[i].visited==0i==endshuai==0){

count2++;

way2[count2]=end;

shuai=1;

if(count2minc){

//如果count2比最大顶点数小

minc=count2;

//就赋值

for(i=0;i=count2;i++){

minway[i]=way2[i];

//将记录的way2值存到minway中

}

}

count2--;

return;

}

}

//中转次数最少简单路径

voidLitterPath(AdjMatrixG){

inti,j,s,e;

intflag=1;

while(flag==1){

inti;

system("cls");

printf("\t\t\t\t\t\t——————中转次数最少路径查询——————\n");

PrintPlace(

printf("\n\t\t\t\t\t输入起点编号:");

scanf("%d",

printf("\t\t\t\t\t输入终点编号:");

scanf("%d",

if(sG.vexnum||s=0||eG.vexnum||e0||s==e)

printf("\t\t\t\t\t\t输入错误!\n\n");

else{

ClearVisited(

minc=MAXVEX;

count2=0;

printf("\n\t\t\t从%s到%s的中转最少简单路径为:\n",G.vex[s].name,G.vex[e].name);

DfsLitter(G,s,e);

//深搜寻找

printf("\t\t\t%5s",G.vex[minway[0]].name);

for(i=1;i=minc;i++){

//mic即为count2

printf("--

printf("%5s",G.vex[minway[i]].name);

}

printf("\n\n\t\t\t\t\t\t是否继续查询中转最少简单路径\n");

printf("\t\t\t\t\t\t1:是\n");

printf("\t\t\t\t\t\t0:返回上级菜单\n");

scanf("%d",flag);

}

system("cls");

}

//最短路径,dist数组记录各条最短路径长度,path数组记录对应路径上的各顶点,依最短路径递增次序求得各条路径

voidDijkstra(AdjMatrix*G,ints,inte,intdist[MAXVEX],intpath[][MAXVEX]){

intmindist,i,j,k,t=1;

//mindist路径的权值(长度)

for(i=1;i=G-vexnum;i++){

//给dist数组初始化,

dist[i]=G-arcs[s][i];//将邻接数组每一行所对应的列的值填入dist数组中

if(G-arcs[s][i]!=INFINITY){

//如果权值不等于无穷大,则说明有路

path[i][1]=s;

//将起点记录,path[i]记录从源点到Vi最短路径上的各个顶点

}

}

path[s][0]=1;

//置1标志,说明源点为start

for(i=2;i=G-vexnum;i++){

//寻找各条最短路径

mindist=INFINITY;

//将最小初值设置为无穷大

for(j=1;j=G-vexnum;j++){//选择最小权值的路径

if(!path[j][0]dist[j]mindist){//j未加入集合S

//path数组记录某定点是否加到S中

k=j;

//当前起点到顶点k权值最小

mindist=dist[j];

}

}

if(mindist==INFINITY){

return;

//不存在start到其他顶点的路径

}

path[k][0]=1;

//将顶点k加入到集合S中,说明该顶点已经被考察

//看有没有更小的,进而更新修改路径

for(j=1;j=G-vexnum;j++){

//修改路径

if(!path[j][0]G-arcs[k][j]INFINITYdist[k]+G-arcs[k][j]dist[j]){

//第k行有路且未被选中过的顶点到k的最小权值+k到j的权值当前到j的最小权值路径

dist[j]=dist[k]+G-arcs[k][j];

t=1;

while(path[k][t]!=0){

//记录最新的最短路径

path[j][t]=path[k][t];

t++;

}

path[j][t]=k;

path[j][t+1]=0;

}

}

}

//打印两点间的最短路径

voidDijkstraPrint(intstart,intend,AdjMatrixG,intpath[][MAXVEX]){

inti=2;

intlength=0;

printf("\n\t从%s到%s的最短路径是:",G.vex[start].name,G.vex[end].name);

printf("

%s",G.vex[start].name);

while(path[end][i]){

//记录的路径

printf("--%s",G.vex[path[end][i]].name);

length+=G.arcs[path[end][i-1]][path[end][i]];

i++;

}

printf("--%s",G.vex[end].name);

length+=G.arcs[path[end][i-1]][end];

printf(",长度为%dM",length);

printf("\n");

//分菜单最短路径

voidShortPath(AdjMatrixG,intdist[],intpath[][MAXVEX]){

inti,j,s,e;

intflag=1;

while(flag==1){

system("cls");

printf("\t\t\t\t\t\t——————最短路径查询——————\n");

PrintPlace(

printf("\n\t\t\t\t\t输入起点编号:");

scanf("%d",

printf("\t\t\t\t\t输入终点编号:");

scanf("%d",

if(sG.vexnum||s=0||eG.vexnum||e0||s==e){

printf("\t\t\t\t\t\t输入错误!\n\n");

}

else{

ClearVisited(

//菜单

Dijkstra(G,s,e,dist,path);//算法

DijkstraPrint(s,e,G,path);//打印

}

printf("\n\t\t\t\t\t\t是否继续查询最短路径\n");

printf("\t\t\t\t\t\t1:是\n");

printf("\t\t\t\t\t\t0:返回上级菜单\n");

scanf("%d",flag);

}

system("cls");

//路径二级主菜单

voidSearchPath(AdjMatrixG,intdist[],intpath[][MAXVEX]){

intx,flag=1;

while(flag==1){

//二级菜单

printf("\t\t\t1.所有简单路径\n");

//各顶点均不重复

printf("\t\t\t2.最短的简单路径(中转最少)\n");

printf("\t\t\t3.最佳访问路径(最短路径长度)\n");

printf("\t\t\t0.返回主菜单\n");

printf("\t\t\t请选择您需要的操作:");

scanf("%d",

switch(x){

case1:system("cls");AllPath(G,dist,path);break;

case2:system("cls");LitterPath(G);break;

case3:system("cls");ShortPath(G,dist,path);break;

case0:flag=0;break;

default:printf("\t\t\t\t\t\t\t输入信息错误,请重新输入!\n");break;

}

system("cls");

//注册信息

voidenroll(){

chara[100];

//注册用户名

charb[100];

//注册密码

chars[100];

//再次确定密码

int

len;

printf("请输入您的用户名:");

scanf("%s",a);

printf("请设置您的密码:");

reset:scanf("%s",b);

//用到了ifgoto语句

len=strlen(b);

//读取密码长度

if(len9){

printf("密码长度过长,请重新设置:");

gotoreset;

//ifgoto语句

}

printf("请再次输入您设置的密码:");

scanf("%s",s);

if(strcmp(b,s)==0){

//字符串比较函数

FILE*fp;

fp=fopen("register.txt","at");

//选用追加方式,可以存多个信息

if(fp==NULL){

printf("文件不存在或者请先注册!");

exit(1);

}

fprintf(fp,"%s%s\n",a,b);

//字符串写入函数进行写入操作

system("cls");

printf("\n\t------注册成功------\n");

fclose(fp);

}

elseif(strcmp(b,s)!=0){

printf("您两次输入的密码不一致,请重新设置密码!\n");

gotoreset;

//ifgoto语句

}

//登陆页面

intland(){

int

i=0;

//i是为了判断密码长度并加密

chara[10];

charb[10];

charuser_name[10];

charuser_passwords[10];

printf("请输入您的用户名:");

scanf("%s",user_name);

printf("请输入您的密码:");

while(i9(user_passwords[i]=getch())user_passwords[i]!='\r'){

//如果输入超限或者遇到换行符就跳出循环

printf("*");

//掩饰密码

i++;

}

user_passwords[i]=0;

//字符串结束标志'/0'

FILE*fp;

fp=fopen("register.txt","rt");

//又打开文件

if(fp==NULL){

printf("文件不存在!");

exit(1);

}

while(fscanf(fp,"%s%s",a,b)!=EOF){

//读文件判断账号密码是否正确

if(strcmp(a,user_name)==0

strcmp(b,user_passwords)==0){

//字符串比较函数,看是否正确

system("cls");

printf("\n\t\t\t--------登陆成功--------\n");

return0;

}

}

if(1){

system("cls");

printf("\n信息输入错误!(请检查注册文件信息)\n");

land();

}

fclose(fp);

//增加新地点和信息

voidAddPlace(AdjMatrix*G){

ints,e;

charfilename[30]="introduce.txt";

charfilename1[30]="flag.txt";

intflag=1;

charp[20];

chari[66];

while(flag==1){

//增加地点的地名

//增加地点的介绍

printf("请输入新地点的地名:");

scanf("%s",p);

printf("请输入新地点的简介:");

scanf("%s",i);

G-vexnum+=1;

//顶点数加1

strcpy(G-vex[G-vexnum].name,p);

strcpy(G-vex[G-vexnum].info,i);

FILE*fp;

fp=fopen(filename,"at");

if(fp==NULL){

printf("\n不能打开!");

exit(1);

}

fprintf(fp,"%s\n%s\n",G-vex[G-vexnum].name,G-vex[G-vexnum].info);

fclose(fp);

FILE*fp1;

fp1=fopen(filename1,"wt");

if(fp1==NULL){

printf("\n不能打开!");

exit(1);

}

fprintf(fp1,"%d%d\n",G-vexnum,G-arcnum);

fclose(fp1);

printf("\t\t添加地点成功,可打开\"introduce文件\"查看!");

//转义字符

printf("\n\t\t\t\t\t\t是否继续添加地点?\n");

printf("\t\t\t\t\t\t1:是\n");

printf("\t\t\t\t\t\t0:返回上级菜单\n");

scanf("%d",flag);

}

system("cls");

//增加新路线

voidAddRoad(AdjMatrix*G){

ints,e,weight;

charfilename[30]="adj.txt";

charfilename1[30]="flag.txt";

intflag=1;

while(flag==1){

PrintPlace(G);

//打印地点的序号

printf("请输入增加路线的起点序号:");

scanf("%d",

printf("请输入增加路线的终点序号:");

scanf("%d",

printf("请输入两条路线之间的距离:");

scanf("%d",weight);

G-arcs[s][e]=G-arcs[e][s]=weight;

FILE*fp;

fp=fopen(filename,"at");

if(fp==NULL){

printf("\n不能打开!");

exit(1);

}

fprintf(fp,"%10d%10d%10d\n",s,e,G-arcs[s][e]);

fclose(fp);

FILE*fp1;

fp1=fopen(filename1,"at");

if(fp1==NULL){

printf("\n不能打开!");

exit(1);

}

G-arcnum+=1;//边数+1

fprintf(fp1,"%d%d\n",G-vexnum,G-arcnum);

fclose(fp1);

system("cls");

printf("\t\t添加路线成功,可打开\"adj文件\"查看!");

//转义字符

printf("\n\t\t\t\t\t\t是否继续添加路线?\n");

printf("\t\t\t\t\t\t1:是\n");

printf("\t\t\t\t\t\t0:返回上级菜单\n");

scanf("%d",flag);

}

system("cls");

//删除路线

voidDelRoad(AdjMatrix*G){

ints,e,weight,i,j;

charfilename[30]="adj.txt";

charfilename1[30]="flag.txt";

intflag=1;

FILE*fp;

fp=fopen(filename,"at");

if(fp==NULL){

printf("\n不能打开!");

exit(1);

}

FILE*fp1;

fp1=fopen(filename1,"wt");

if(fp==NULL){

printf("\n不能打开!");

exit(1);

}

while(flag==1){

PrintPlace(G);

printf("请输入撤销路线的起点序号:");

scanf("%d",

printf("请输入撤销路线的终点序号:");

scanf("%d",

//遍历adj文件,如果遍历到s和e,那么给它的值赋予无穷大

G-arcs[s][e]=G-arcs[e][s]=INFINITY;

fprintf(fp,"%10d%10d%10d\n",s,e,G-arcs[s][e]);

G-arcnum-=1;//边数-1

fprintf(fp1,"%d%d\n",G-vexnum,G-arcnum);

fclose(fp);

fclose(fp1);

system("cls");

printf("\t\t撤销路线成功,可打开\"adj文件\"查看!");

//转义字符

printf("\n\t\t\t\t\t\t是否继续撤销路线?\n");

printf("\t\t\t\t\t\t1:是\n");

printf("\t\t\t\t\t\t0:返回上级菜单\n");

scanf("%d",flag);

}

system("cls");

voidUser(){

intx;

intdist[MAXVEX];//记录各条最短路径长度

int

path[MAXVEX][MAXVEX]={0};//记录对应路径上的各顶点

AdjMatrixG;

//邻接矩阵

Create(

while(1){

printf("\t\t\t1.校园平面图\n");

printf("\t\t\t2.地点信息查询\n");

printf("\t\t\t3.问路查询\n");

printf("\t\t\t0.退出\n");

printf("\t\t\t请选择您需要的操作:");

scanf("%d",

switch(x){

case1:system("cls");MapOutput();break;

case2:system("cls");IntroducePlace(G);break;

case3:system("cls");SearchPath(G,dist,path);break;

case0:printf("\n\t\t\t\t\t\t\t");exit(0);break;

default:printf("\n———————————————输入信息错误,请重新输入!!!————————————————————\n");break;

}

}

//管理员菜单

void

温馨提示

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

评论

0/150

提交评论