C语言课程设计报告—建筑工地信息管理系统_第1页
C语言课程设计报告—建筑工地信息管理系统_第2页
C语言课程设计报告—建筑工地信息管理系统_第3页
C语言课程设计报告—建筑工地信息管理系统_第4页
C语言课程设计报告—建筑工地信息管理系统_第5页
免费预览已结束,剩余30页可下载查看

下载本文档

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

文档简介

1、C语言课程设计名称:建筑工地信息管理系统学院:工程学院班级:055071-30姓名:文富奎学号:20071003889指导老师:刘文中刖百课程设计目的:C语言编程实践是学习C语言的一个重要环节,为提高学生的程序设计能力,通过课堂和上机实践使学生的程序设计能力有一个上升的台阶。通过前四单元的温故而知新、庖丁解牛、举一反三、熟能生巧等过程的练习之后能够解决一些简单的实际问题。1、题目要求设计:“建筑工地信息管理系统建立如下4个文件(括号内为文件中每条记录的字段内容):(1) 销售商-配件-建筑工地(销售商号码,配件号,工地号,数量)(2) 建筑工地(工地号,名字,城市)(3) 配件(配件号,配件名

2、,颜色,重量,产地)(4) 销售商(号码,名字,状态,城市)功能:(1) 首先建立文件,然后插入数据,并进行删除、更新操作,最后进行查询操作。(2) 查询与供应商所在城市相同的零件一一供应商,项目一一供应商记录对。2、分析根据题目要求,建立文件,应选择结构体数组来存放数据,再定义一个全局变量和文件指针进行程序的运行,然后把数据信息存入文件中,所以要提供结构体和文件的输入输出等操作;在程序中要进行数据的插入、删除、更新、查询等操作,所以需要建立相应的模块来实现,为简便起见,还应建立一个主菜单,在每个模块中建立相应的副菜单;另外,还要提供键盘式选择菜单来实现选择功能,使程序在运行时达到要求。3、总

3、体设计1)2)3)4)5)插入数据模块;根据题目要求,可以将系统分为:删除模块;查询模块;查找配对;功能选择菜建筑工地信息管理系统图1系统功能模块图4、详细设计、主函数主函数一般设计得比较简便,只提供输入、处理和输出部分的函数调用。其中各功能模块用菜单方式选择。其流程图:图2主函数流程图【程序】/*王采单*/voidmenu()(*/intn,w;/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内doputs(tt*建筑工地信息管理*nn);puts(姓名:文富奎);puts(学号:20071003889);puts(班学号:055071-30);puts(tt*MENU

4、*nn);puts(tttt1.输入);/*输入*/puts(tttt2.删除);/*删除*/puts(tttt3.查找);/*查找*/puts(tttt4.配对);/*查找配对*/puts(tttt5.Exit);puts(nntt*n);printf(Chooseyournumber(1-5):bb);scanf(%d,&n);if(n5)w=1;getchar();elsew=0;while(w=1);switch(n)case1:enter();break;case2:delete();break;case3:search();break;case4:search2();break;c

5、ase5:exit(0);main()menu();、各功能模块设计(1)数据输入模块【分析】数据信息存放在文件中,用结构体存放,方便数据输入与数据的保存。另外,输入模块中建立副菜单,用以输入四个文件的信息选项。【程序】开始数据输入模块流程图/*数据输入模块*/voidsal_enter()intj;charc2;FILE*fp;if(fp=fopen(data1.txt,w)=NULL)printf(Cannotopenthefile!n);exit(0);for(j=0;ji;j+)fwrite(&salj,sizeof(structsale),1,fp);while(1)printf(输

6、入销售商号码:n);scanf(%d,&sali.num1);printf(输入配件号码:n);scanf(%d,&sali.num2);printf(输入工地号码:n);scanf(%d,&sali.num3);printf(输入数量r:n);scanf(%d,&sali.num4);if(fwrite(&sali+,sizeof(structsale),1,fp)!=1)printf(Filewriteerrorn);elseprintf(Successful!n);printf(是否继续?(是y/否n)n);scanf(%s,c);if(strcmp(c,n)=0)break;fclos

7、e(fp);menu();voidbuild_enter()intj;charc2;FILE*fp;if(fp=fopen(data2.txt,w)=NULL)printf(Cannotopenthefile!n);exit(0);for(j=0;ji;j+)fwrite(&buildj,sizeof(structbuilding),1,fp);while(1)printf(输入工地号:n);scanf(%d,&buildi.num);printf(输入工地名:n);scanf(%s,);printf(输入工地城市:n);scanf(%s,buildi.city);if(

8、fwrite(&buildi+,sizeof(structbuilding),1,fp)!=1)printf(Filewriteerrorn);elseprintf(Successful!n);printf(Isthereanymore?(Yesy/Non)n);scanf(%s,c);if(strcmp(c,n)=0)break;fclose(fp);menu();voidpj_enter()intj;charc2;FILE*fp;if(fp=fopen(data3.txt,w)=NULL)printf(Cannotopenthefile!n);exit(0);)for(j=0;ji;j+)

9、(fwrite(&pjj,sizeof(structpeijian),1,fp);)while(1)(printf(输入配件号:n);scanf(%d,&pji.num);printf(输入配件名:n);scanf(%s,);printf(输入配件颜色:n);scanf(%s,pji.color);printf(输入配件重量:n);scanf(%d,&pji.weight);printf(输入配件产地:n);scanf(%s,pji.area);if(fwrite(&pji+,sizeof(structpeijian),1,fp)!=1)printf(Filewriteerro

10、rn);elseprintf(Successful!n);printf(Isthereanymore?(Yesy/Non)n);scanf(%s,c);if(strcmp(c,n)=0)break;)fclose(fp);menu();)voidSET_enter()intj;charc2;FILE*fp;if(fp=fopen(data4.txt,w)=NULL)printf(Cannotopenthefile!n);exit(0);)for(j=0;ji;j+)fwrite(&selj,sizeof(structseller),1,fp);)while(1)printf(输入销售商号:n)

11、;scanf(%d,&seli.num);printf(输入销售商名:n);scanf(%s,);printf(输入销售商状态:n);scanf(%s,seli.state);printf(输入销售商所在城市:n);scanf(%s,seli.city);if(fwrite(&seli+,sizeof(structseller),1,fp)!=1)printf(Filewriteerrorn);elseprintf(Successful!n);printf(Isthereanymore?(Yesy/Non)n);scanf(%s,c);if(strcmp(c,n)=0)bre

12、ak;fclose(fp);menu();voidenter()intt,m;doputs(tt*MENU*nn);puts(tttt1.sal_enternewdata);puts(tttt2.build_enternewdata);puts(tttt3.pj_enternewdata);/*puts(tttt4.SET_enternewdata);输入菜单*/puts(tttt5.Exit);puts(nntt*n);printf(Choosethenumber(1-5):bb);scanf(%d,&m);if(m5)t=1;getchar();elset=0;while(t=1);swi

13、tch(m)case1:sal_enter();break;case2:build_enter();break;case3:pj_enter();break;case4:SET_enter();break;case5:menu();(2)删除模块【分析】建立副菜单,选择要删除的是哪个文件中的信息,输入相应的信息,找到数据将其删除。一般的做法是将数据从文件中删除,删除位置后面的记录往前移。模块如:图4删除模块流程图/*删除模块*/voidsal_delete()intj,v;intw;FILE*fp;printf(请输入要删除的销售商号码:);scanf(%d,&w);fp=fopen(data

14、1.txt,rb);for(j=0;j100;j+)if(fread(&salj,sizeof(structsale),1,fp)!=1)break;v=j;for(j=0;jv;j+)if(w=salj.num1)n);printf(项目号,销售商号码,配件号,工地号,数量:printf(%d%d%d%d%d,salj.num,salj.num1,salj.num2,salj.num3,salj.num4);for(i=j;iv;i+)salj=salj+;printf(删除成功);elseprintf(Cannotfindthedata!);menu();)fclose(fp);)void

15、build_delete()intj,v;intw;FILE*fp;printf(请输入要删除的工地号:);scanf(%d,&w);fp=fopen(data2.txt,rb);for(j=0;j100;j+)if(fread(&buildj,sizeof(structbuilding),1,fp)!=1)break;)v=j;for(j=0;jv;j+)%s,buildj.num,if(w=buildj.num)printf(工地号,工地名,城市名:n);printf(%d%,buildj.city);printf(删除成功);)elseprintf(Cannotf

16、indthedata!);menu();)fclose(fp);menu();)voidpj_delete()intj,v;intw;FILE*fp;printf(请输入要删除的配件号:);scanf(%d,&w);fp=fopen(data3.txt,rb);for(j=0;j100;j+)if(fread(&pjj,sizeof(structpeijian),1,fp)!=1)break;)v=j;for(j=0;jv;j+)(if(w=pjj.num)printf(配件号,配件名,颜色,重量,地:n);printf(%d%s%s%d%s,pjj.num,,pjj.colo

17、r,pjj.weight,pjj.area);printf(删除成功);elseprintf(Cannotfindthedata!);menu();fclose(fp);menu();voidSET_delete()intj,v,c;intw;FILE*fp;printf(请输入号码:);scanf(%d,&w);fp=fopen(data4.txt,rb);for(j=0;j100;j+)if(fread(&selj,sizeof(structseller),1,fp)!=1)break;v=j;for(j=0;jv;j+)if(w=selj.num)printf(销售商号码,销售商名字,状

18、态,城市n);printf(%d%s%s%s,selj.num,,selj.state,selj.city);printf(删除成功);elseprintf(Cannotfindthedata!);menu();fclose(fp);menu();voiddelete()intt,m;doputs(tttt1.sal_deletenewdata);puts(tt*MENU*nn);puts(tttt2.build_deletenewdata);puts(tttt3.pj_deletenewdata);/*删除菜单*/puts(tttt4.SET_deletenewdata);

19、puts(nntt*n);printf(Choosethenumber(1-5):bb);scanf(%d,&m);if(m5)t=1;getchar();elset=0;while(t=1);switch(m)case1:sal_delete();break;case2:build_delete();break;case3:pj_delete();break;case4:SET_delete();break;case5:menu();(3) 查找模块【分析】选择查找方式,输入相应的数据然后找出对应的数据。模块流程图:【程序】图5查找模块流程图/*查找模块*/voidsearch()(intf

20、lag,j,x;intw,v,z,y;FILE*fp;printf(1.By项目号n);printf(2.By工地号n);printf(3.By配件号n);printf(4.By销售商号n);printf(请选择项:n);scanf(%d,&x);if(x=3)(flag=0;printf(Pleaseinputthe配件号:);scanf(%d,&w);fp=fopen(data3.txt,rb);for(j=0;j100;j+)(if(fread(&pjj,sizeof(structpeijian),1,fp)!=1)break;if(pjj.num=w)(printf(配件号:%dn,p

21、jj.num);printf(配件名:sn,);printf(配件颜色:sn,pjj.color);printf(配件重量:%dn,pjj.weight);printf(配件产地:%sn,pjj.area);An);printf(1flag=1;)if(flag=0)printf(Cannotfindthedata!n);fclose(fp);menu();)if(x=4)(flag=0;printf(请输入销售商号:);scanf(%d,&z);fp=fopen(data4.txt,rb);for(j=0;j100;j+)(if(fread(&selj,sizeof(stru

22、ctseller),1,fp)!=1)break;if(pjj.num=y)(printf(销售商号:dn,selj.num);printf(销售商名:sn,);printf(所在城市名:sn,selj.city);printf(n);flag=1;if(flag=0)printf(Cannotfindthedata!n);fclose(fp);menu();if(x=2)(flag=0;printf(请输入建筑工地号:”);scanf(%d,&z);fp=fopen(data2.txt,rb);for(j=0;j100;j+)(if(fread(&buildj,sizeof

23、(structbuilding),1,fp)!=1)break;if(pjj.num=z)(printf(建筑工地号:dn,buildj.num);printf(建筑工地名:sn,);printf(所在城市名:sn,buildj.city);printf(n);flag=1;if(flag=0)printf(Cannotfindthedata!n);fclose(fp);menu();if(x=1)(flag=0;printf(Pleaseinputthe项目号:);scanf(%d,&v);fp=fopen(data1.txt,rb);for(j=0;j100;j+)(

24、if(fread(&pjj,sizeof(structpeijian),1,fp)!=1)break;if(pjj.num=v)(printf(sellernumber:%dn,salj.num1);printf(peijiannumber:%dn,salj.num2);printf(buildingnumber:%dn,salj.num3);printf(number:%dn,salj.num4);printf(n);flag=1;if(flag=0)printf(Cannotfindthedata!n);fclose(fp);menu();elseprintf(Error!n);(4) 查

25、找配对模块【分析】功能跟查找大致相同,输入要配对的相应信息,找出要的信息。图6查找配对模块流程图【程序】/*查找配对模块*/voidsearch2()intflag,j,x;intw;FILE*fp;printf(1.By配件号n);printf(2.By销售商号n);printf(请选择项:n);scanf(%d,&x);if(x=1)FILE*fp;inti;printf(Pleaseinputthe配件号:);scanf(%d,&w);if(fp=fopen(data3.txt,r)=NULL)printf(Cannotfindthedata!n);fclose(fp);menu();)

26、for(i=0;!feof(fp);i+)fscanf(fp,%d%s%s,pji.num,&,&pji.area);fclose(fp);if(fp=fopen(data4.txt,r)=NULL)printf(Cannotfindthedata!n);fclose(fp);menu();)for(i=0;!feof(fp);i+)fscanf(fp,%d%s%s,seli.num,&,&seli.city);fclose(fp);if(pji.num=w&strcmp(pji.area,seli.city)=0)printf(配件号:%dn,pjj.num

27、);printf(配件名:sn,);printf(销售商号:%dn,pjj.num);printf(销售商名:%sn,pjj.area);An);printf(1flag=1;)if(flag=0)printf(Cannotfindthedata!n);fclose(fp);menu();M建丁信,息、*疑*注.XWWif3梵*装WaeHENUKMXX*梵*题算隆隆1c*同*X*MN口3W-MMiWyyMMK1TM,M申修臂工,,同Nhooseyournunher:i走我的文档桌面1。11.eze縻我对输删查配3*112345、上机操作(1) 王来单函数姓名:文富奎学号:200

28、71003889班半号:BSS071-30图7主菜单(2) 数据输入模块ChODSeyaui*number*Cl-5ttl3MMEMXiCMEXJKiCMEXMW1 -sal_eniternevidata2 build_enternewdata3 .pj_entepnewdata4,SEli_ientert图8输入副菜单choosethenumhep(l-5:11前人销售商号码w2130010520俞入配件号码:81517籥入工地号码:1300s204前人数量r:88uccessful!*否继续?是臼“否。1d“我的艾粒、泉面Tt1.c/eChooseyournanber:211.sal_de

29、leteneudata2 .build_deletenewddta3 j_deletenendata4,SET_deletenewdata5.Exitjtf题其RHR其益其耳其其K乂声*其其*莫乂KR其声飘ChoosethenumberXlS-11请锚人要蒯除曲铠售商号稿=72130810520盍首号,销售商号科配件号,工地号,数量:日-8844335122815172口眄52g4LB8删除成功图10删除模块(4)查找模块人除找对输册查配鲁1234n号智|?0菖6商源u批件岂如叱项工霜甲gByByByBy选Jtll.2.3.4.请Pleaseinputthe项目f0annotfindtheda

30、ta!(1)图11查找模块:3Jn号urnlpalpolp前”目地件售此会项工配销资stvv口yyyy先一oBBBB-h5n1t3ga3nnt4id3nu4ne2up8nFlyn8&-士:-以色量地se号名颜重产ea生生生ft1nJ己己己已(5)查找配对模块C(k我的文档、桌面Text1.cxe1234入除找对查配ChooseyoLii*number:4l.By配神号疆射号leaeinputthe自己件号:72130011352附图13查找配对模块后记此次课程设计的学习,让我的在计算机方面的认识有了更为广阔的了解。其中在学习过程中遇到了许多麻烦,很多都让人挺郁闷的,幸亏的是我没有放弃。以前在课

31、堂上学的C语言用到上机上来,许多问题都反映了出来,得以让我的认知升级。课程设计的学习,提高了我运用了计算机能力以及培养了我运用结构化程序设计的思想和方法,初步掌握开发一个小型实用系统的基本方法,学会调试较长的程序,学会用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。程序设计的过程,实际上是确定解决问题的详细步骤,而这个步骤通常称为流程,设计好如何进行程序的细编在程序量很大的情况下解决问题是很重要的。一个大的程序,一般是经过很多步才完成,不断的进行程序的调试来完成它。现在程序基本上是完成了,里面或多或少的存在问题。其中在对数据进行输入的时候,不太方便,可以设计一个程序使在完成一个

32、的输入后返回副菜单而不是主菜单;删除模块可以加上一些程序使删除的时候有选择性而不是直接删除,没有后悔的余地;最重要的是现在查找配对还有一点不完善,没有起到应有的作用。总的来说,这次课程设计还是比较成功的,虽然不是达到很完美。附录:源程序清单/*datal.txt/*data2.txtdata3.txtdata4.txt*/#include文件*/#include#include#includeinti=0;structsale/*定义销售商-配件-建筑工地*/intnum;/*项目号*/intnum1;/*销售商号码*/intnum2;/*配件号*/intnum3;/*工地号*/intnum4

33、;/*数量*/sal100;structbuilding/*定义建筑工地结构体*/intnum;/*工地号*/charname20;/*工地名*/charcity20;/*城市名*/build100;structpeijian/*定义配件结构体*/intnum;/*配件号*/charname20;/*配件名*/charcolor20;/*颜色*/intweight;/*重量*/chararea20;/*产地*/pj100;structseller/*定义销售商结构体*/intnum;/*销售商号码*/charname20;/*销售商名字*/charstate20;/*状态*/charcity2

34、0;/*城市*/sel100;voidmenu();/*数据输入模块*/voidsal_enter()intj;charc2;FILE*fp;if(fp=fopen(data1.txt,w)=NULL)(printf(Cannotopenthefile!n);exit(0);for(j=0;ji;j+)(fwrite(&salj,sizeof(structsale),1,fp);while(1)(printf(输入销售商号码:n);scanf(%d,&sali.num1);printf(输入配件号码:n);scanf(%d,&sali.num2);printf(输入工地号码:n);scanf(

35、%d,&sali.num3);printf(输入数量r:n);scanf(%d,&sali.num4);if(fwrite(&sali+,sizeof(structsale),1,fp)!=1)printf(Filewriteerrorn);elseprintf(Successful!n);printf(是否继续?(是y/否n)n);scanf(%s,c);if(strcmp(c,n)=0)break;fclose(fp);menu();voidbuild_enter()intj;charc2;FILE*fp;if(fp=fopen(data2.txt,w)=NULL)printf(Canno

36、topenthefile!n);exit(0);for(j=0;ji;j+)fwrite(&buildj,sizeof(structbuilding),1,fp);while(1)printf(输入工地号:n);scanf(%d,&buildi.num);printf(输入工地名:n);scanf(%s,);printf(输入工地城市:n);scanf(%s,buildi.city);if(fwrite(&buildi+,sizeof(structbuilding),1,fp)!=1)printf(Filewriteerrorn);elseprintf(Successfu

37、l!n);printf(Isthereanymore?(Yesy/Non)n);scanf(%s,c);if(strcmp(c,n)=0)break;fclose(fp);menu();voidpj_enter()intj;charc2;FILE*fp;if(fp=fopen(data3.txt,w)=NULL)printf(Cannotopenthefile!n);exit(0);for(j=0;ji;j+)fwrite(&pjj,sizeof(structpeijian),1,fp);while(1)printf(输入配件号:n);scanf(%d,&pji.num);printf(输入配

38、件名:n);scanf(%s,);printf(输入配件颜色:n);scanf(%s,pji.color);printf(输入配件重量:n);scanf(%d,&pji.weight);printf(输入配件产地:n);scanf(%s,pji.area);if(fwrite(&pji+,sizeof(structpeijian),1,fp)!=1)printf(Filewriteerrorn);elseprintf(Successful!n);printf(Isthereanymore?(Yesy/Non)n);scanf(%s,c);if(strcmp(c,n)=0)bre

39、ak;)fclose(fp);menu();)voidSET_enter()intj;charc2;FILE*fp;if(fp=fopen(data4.txt,w)=NULL)printf(Cannotopenthefile!n);exit(0);)for(j=0;ji;j+)fwrite(&selj,sizeof(structseller),1,fp);)while(1)printf(输入销售商号:n);scanf(%d,&seli.num);printf(输入销售商名:n);scanf(%s,);printf(输入销售商状态:n);scanf(%s,seli.state)

40、;printf(输入销售商所在城市:n);scanf(%s,seli.city);if(fwrite(&seli+,sizeof(structseller),1,fp)!=1)printf(Filewriteerrorn);elseprintf(Successful!n);printf(Isthereanymore?(Yesy/Non)n);scanf(%s,c);if(strcmp(c,n)=0)break;)fclose(fp);menu();)voidenter()intt,m;doputs(tt*MENU*nn);puts(tttt1.sal_enternewdata);puts(tt

41、tt2.build_enternewdata);puts(tttt3.pj_enternewdata);/*输入菜单*/puts(tttt4.SET_enternewdata);puts(nntt*n);printf(Choosethenumber(1-5):bb);scanf(%d,&m);if(m5)t=1;getchar();elset=0;while(t=1);switch(m)case1:sal_enter();break;case2:build_enter();break;case3:pj_enter();break;case4:SET_enter();break;case5:me

42、nu();/*删除模块*/voidsal_delete()intj,v;intw;FILE*fp;printf(请输入要删除的销售商号码:);scanf(%d,&w);fp=fopen(data1.txt,rb);for(j=0;j100;j+)if(fread(&salj,sizeof(structsale),1,fp)!=1)break;v=j;for(j=0;jv;j+)if(w=salj.num1)printf(项目号,销售商号码,配件号,工地号,数量:n);printf(%d%d%d%d%d,salj.num,salj.num1,salj.num2,salj.num3,salj.nu

43、m4);for(i=j;iv;i+)salj=salj+;printf(删除成功);elseprintf(Cannotfindthedata!);menu();)fclose(fp);)voidbuild_delete()intj,v;intw;FILE*fp;printf(请输入要删除的工地号:);scanf(%d,&w);fp=fopen(data2.txt,rb);for(j=0;j100;j+)if(fread(&buildj,sizeof(structbuilding),1,fp)!=1)break;)v=j;for(j=0;jv;j+)if(w=buildj.num)printf(

44、工地号,工地名,城市名:n);printf(%d%s%s,buildj.num,,buildj.city);printf(删除成功);)elseprintf(Cannotfindthedata!);menu();)fclose(fp);menu();)voidpj_delete()intj,v;intw;FILE*fp;printf(请输入要删除的配件号:);scanf(%d,&w);fp=fopen(data3.txt,rb);for(j=0;j100;j+)if(fread(&pjj,sizeof(structpeijian),1,fp)!=1)break;)v=j;

45、for(j=0;jv;j+)if(w=pjj.num)printf(配件号,配件名,颜色,重量,丁地:n);printf(%d%s%s%d%s,pjj.num,,pjj.color,pjj.weight,pjj.area);printf(删除成功);)elseprintf(Cannotfindthedata!);menu();)fclose(fp);menu();)voidSET_delete()intj,v,c;intw;FILE*fp;printf(请输入号码:);scanf(%d,&w);fp=fopen(data4.txt,rb);for(j=0;j100;j+)if(fread(&selj,sizeof(structseller),1,fp)!=1)break;)v=j;for(j=0;jv;j

温馨提示

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

评论

0/150

提交评论