获取图书馆管理系统文档及源代码指南_第1页
获取图书馆管理系统文档及源代码指南_第2页
获取图书馆管理系统文档及源代码指南_第3页
获取图书馆管理系统文档及源代码指南_第4页
获取图书馆管理系统文档及源代码指南_第5页
已阅读5页,还剩63页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

曲泊人事

HUNANUNIVERSITY

程序设计综合训练

〈图书馆管理系统〉

设计报告

院系:材料科学与工程学院

专业班级:材料成型一班..

姓名:

学号:_____________

指导老师:

程序功能简介

图书排序功能

1)按图书编号排序

可以按图书编号的大小排序,显示到屏幕上。(从小到大)

2)按图书出版时间排序

可以按图书出版时间的前后排序,显示到屏幕上。(从近到远)

3)按图书价格排序

可以按图书价格的贵宜排序,显示到屏幕上。(从廉价到贵)

4)按图书书名排序

可以按图书书名字符的大小排序,显示到屏幕上。(从小到大)

5)按图书作者名排序

可以按图书作者名字符的大小排序,显示到屏幕上。(从小到大)

二、本人完毕的重要工作

图书排序功能(排序比较简朴只要做出来一种,其他都和它雷同。)

三、设计方案

1.设计分析;

1)序功能简介:

进入系统

菜单

1-添加图书2-删除图书3-图书列表4-图书排序5-查询图书6-修改图书7-录入数据0-退出系统

输入。返回

输入编号、书名、按照编号、书名、按照编号、书名、依次录入编号、

作者名、出版社、作者名、出版社、作者名、出版社、书名、作者名、

2)各个功能流程图

1、按图书编号排序

2、按图书出版时间排序

3、按图书价格排序

4、按图书书名排序

5、按图书作者名排序

2.操作措施简介;

1)主面板

'E:\图书苣理系弟labbook\Debug\labbook.exe'

***欢迎光临***

图书信息管理系统

♦用户登录

。-通出系统

请输入您的选择;工

请输入您的用户名:2CZ

请输入您的密码:9

验证通过:请按Enter键进入?

输入密码9进入系统c

2)主菜单

--添加图书2-删除图书!!

33-图书列表4-图书排序H

H5-查询因书6-修改图书;;

;;7-录入数据。-退出系统::

请输入所选择的序号:.

按4进入排序功能。

2)排序功能目录

I。I回

‘-C:\Users\^fi£郡Desktop、图书管^book\Debug\labbook.exe"

磐时

1图02-

3-*名

4图54

-排

1序

4我

5作0-

=“

一__=

3)选择功能(例如3)

|D回

»'C:\UsersWK成智、Desktop昼书苣理至疏\最后\labbook\Debug\labboolcexe'

磐时

,l

K排

1-0i2-

3图s

-5.排-

4一

t排

--序

5^仔0

青输入辞选择的序号:3

芈序成功?

皂否显示排序结果?("n)

一编号图书名作者名出版社类别出版时间价格一

**342dgdsgfdgdfsg2012080923.00**

**234fgfdggdsgfdg2012090834.00**

按价格的大小排序

3.试验成果(包括输入数据和输出成果)

,,CAUsersXSKJSic®XDesktopV^^^SMW^M^Xlabbook\Debug\labbook.exe'

磐时

图Kl-

12二

-i一

p一

3图s

-一

4二

t排c

-一

50t操

选择

的序

序结

否显

?<

y

**编号图书名作者名出版社类别出版时间价格**

**342dgdsgfdgdfsg2012080923.00**

**234fgfdggdsgfdg2012090834.00**

四、设计体会

在期末课程设计中,我们所选择的是设计一种图书管理系统,这对我们来说是一次尝试与创新的过

程,也可以说是一种挑战的过程,毕竟此前没有作过,缺乏经验。目前运用自己学到的知识设计并

制作一种图书管理系统,这自身就是一种知识转化为生产力的过程,因此大家都很兴奋,不一样程

度的投入了很高的热情与努力。在详细的设计与实行中,我们看到并感受到了一种管理系统从无到

有的过程,对详细的设计环节、思绪、措施、技巧均有了深入的理解,并感受深刻。

在设计中我们基本能按照规范的措施和环节进行,首先对既有的系统进行调查,并查阅有关资料,

最终确定设计方案,然后设计并制作,实行过程中我们深刻的认识到认真执行管理系统软件原则的

重要性,我们由于对管理系统软件有关日勺原则和规范不太理解,缺乏行为操作准则,因此在设计中

手法比较生硬,主与次也没能很好把握住,这些方面通过这次我们都要加强理解。

在这次课程设计中,我们被分派以小组为单位去完毕图书管理系统B勺设计与制作,因此小组内H勺分

工和互相协调很重要,大家可以在分工中扬长避短,个及所长,这样可以很好的提高大家的积极性,

和合作意识,并有效曰勺缩短开发时间。在其中我掌握了构造体B勺应用、链表的建立文献的操作、尚

有一种小的地方就是case'n'的应用。

五、参照资料

C/C++语言程序设计教程——从模块化到面向对象

六、附录

1.程序中重要变量、自定义函数的功能阐明

voidpaixu(structbook*head);〃对图书进行排序

voidnum_paixu(structbook*head);〃按图书编号排序

voidtime_paixu(structbook*head);〃按图书出版时间排序

voidprice_paixu(structbook*head);〃按图书价格排序

voidbname_paixu(structbook*head);〃按图书名排序

voidwname_paixu(structbook*head);〃按作者名排序

While()循环提供可持续的选择操作

Switch()分支选择进行操作。

system(“cls");清空输入缓冲区,一般是为了保证不影响背面的数据读取。

输入()即可返回或停止输入。

•重要数据

intnum;编号;

charbname|50];书名;

charwname|20];作者名;

charpress[50];出版社;

charsort|50];图书类别;

inttime;出版时间;

floatprice;图书价格;

2.源程序代码

#inchide<sfdioh>

#include<stdlib.h>

#include<string.h>

structbook{

intnum;

charbname[50];

charwname(20];

charpress[50J;

charsorl[50];

inttime;

floatprice;

structbook*ncxt;

structbook*creatbook();〃创立链表

structbook*addbook(structbook*hcad);〃添加图书

intyanzhcng(structbook*hcad,intm);〃验证新添加口勺图书编码与否已存在

voiddclctcbook(structbook*hcad);〃删除图书

voidfprint(structbook*hcad);〃将链表写入文献

structbook*load();〃从文献中读取信息并建成链表

voidprint_book(structbook*hcad);〃将链表信息输出

voidchaxun(structbook*head);〃查询图书信息

voidnumchaxun(structbook水head):〃按图书编号查询图书

voidwname_chaxun(structbook*head);〃按作者名查询图书

voidsort_chaxun(structbook"head);〃按类别查询图书

voidtime_chaxun(structbook*head);〃按出版时间查询图书

voidbname_chaxun(structbook*head);//按图书名查询图书

voidxiugai(structbook*head);〃修改图书信息

voidpaixu(structbook*head);〃对图书进行排序

voidnum_paixu(structbook*head);〃按图书编号排序

voidtime_paixu(structbook*head);〃按图书出版时间排序

voidpricc_paixu(structbookxhcad);〃按图书价格排序

voidbname_paixu(structbook*hcad);〃按图书名排序

voidwnamc_paixu(structbook*hcad);〃按作者名排序

intmain()

{

intchoice,n,x,y=l,c,c1=1234;

chara,d,b[10],bl[10]="yjk";

structbook*head二NULL;

while(y){

systcm("cis");

printf("\n\n\n\n\n\n\n");

printff'**求*求****本欢迎光亚市***求**木***\n\n")・

printf("*********************本图书信息管理系统

************************•^\□'11");

printf("\n\n");

printf("============1-顾客登录===========\n");

printf("===========0-退出系统===========g");

printf("请输入您的选择:");

scanf("%d",&n);

printfCXn");

gctchar();

switch(n){

case0:

y=o;

break;

ease1:

printf("请输入您的顾客名:");

gets(b);

printf("\n");

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

scanf("%d",&c);

printf("\n");

if(c>=0&&c<=8){

printff验证失败,请重新输入!\n");

scanf("%c".&d):

getchar();

system("cls");

)

else{

printf("验证通过!请按Enter键进入!\n");

scanf("%c”,&d);

gctchar();

x=l;

while(x){

system("cls");

printf("-------------------\n");

primfT*图书信息管理系统*\n)

prinlf("-------------------\n\n");

printf(n

prin(f(u

**********************************************\n\n”);

prinif(uII1-添加图书2-删除图书||\n\n");

printf(uII3-图书列表4-图书排序||\n\n");

printf(uII5-查询图书6-修改图书||\n\n”);

printfCII7-录入数据0-退出系统||\n\n");

printf("

本小本字本小军小字本半小小本小小小字本字本小本字/小手本字本字本字本卷字小字本半本半本米小米'n'n'')•

printf("

************************哀*********************\n\n”)・

printf("请输入所选择的序号:");

scanf(,,%d",&choice);

gctchar();

systcm("cls");

switch(choicc)

(

case0:

x=0;brcak;

case1:

hcad=load();

it(hcad==NULL){

printf("文献为空,请先录入数据八n");

gcichar();

break;

}

else{

head=addbook(head);

printf("添加成功!\n");

printf("与否将新信息保留到文献?(y/n)\n”);

scanf("%c”,&a);

getchar();

switch(a){

casen:

break;

ease'y':

fprint(hcad);

printf("保留成功!\n”);

gctchar();

break;

)

break;

}

ease2:

head=load();

if(head==NULL){

printff文献为空,请先录入数据!\n”);

getchar();

break;

)

else{

deletebook(head);

getchar();

break;

break;

case3:

hcad=load();

if(hcad==NULL){

printf("文献为空,请先录入数据!\n”);

gctchar();

break;

1

clsc{

print_book(head);

gctcharO;

break;

I

case4:

head=load();

if(head==NULL){

printf("文献为空,请先录入数据!\n");

getchar();

break;

clsc{

paixu(hcad);

gctchar();

I

break;

ease5:

head=load();

if(head==NULL){

printf("文献为空,请先录入数据!\n");

gctchar();

break;

)

else{

chaxun(head);

getchar();

)

break;

case6:

head=load();

if(head==NULL){

printf("文献为空,请先录入数据!");

getchar();

break;

}

clse{

xiugai(hcad);

getchar();

break;

)

break;

case7:

printf("注意:输入图书编码为0时结束!\n”);

head=creatbook():

printff与否将输入IJ勺信息保留到文献以覆盖文献中已存在的信息?(y/n)\n");

getchar();

scanf("%c",&a);

getchar();

switch(a){

case'n':

break;

case'y’:

fprint(hcad);

printf("保留成功!\n");

gctchar();

break;

}

break;

default:

printf("您的输入有误,请重新输入!\n");

getchiir();

break;

)

)

)

break;

default:

printfC1您U勺输入有误!请重新输入!\n”);

getchar();

break;

〃录入数据并形成链表

structbook*crcatbook()

(

structbook*hcad,*tail,*p;

intnunktimc,n;

charbnamcl50],wnamc[20].prcssl50],sort[50];

floatprice;

intsize=sizeof(structbook);

hcad=tail=NULL:

printf("请输入图书编号:”);

scanf("%d",&num);

printf("请输入图书名门:

scanf("%s'\bname);

getchar();

printf("请输入作者名:");

scanf("%s",wname);

getchar();

primf("请输入出版社

scanf("%s'\press);

getchar();

printf("请输入类别:");

scanf("%s",sort);

gctchar();

printf("请输入出版时间:");

scanf("%d",&timc);

gctchar();

printf("请输入价格

scanf("%f,,&price);

getchar();

while(l){

p=(structbook*)malloc(sizc);

p->num=nuin;

strcpy(p->bnamc.bnamc):

strcpy(p->wname,wname);

strcpy(p->press,press);

strcpy(p->sort,sort);

p->time=time;

p->price=price;

p->next=NULL;

if(head==NULL)

head=p;

else

tail->ncxt=p;

tail=p;

do{

printf("请输入图书编号门;

scanf("%d",&num);

n=yanzhcng(hcad,num);

if(n==O)

break;

else

printf("您输入的编号已存在,请重新输入!\n"):

}while(l);

if(num==O)

break;

else

{

printf("请输入图书名:");

scanf("%s",bname);

getcharO;

printf("请输入作者名:“);

scanf("%s",wname);

gctchar();

printf("请输入出版社:“);

scanf("%s",press);

gctchar();

printf("请输入类别:");

scanf("%s”,sort);

gctchar();

printf("请输入出版时间

scanf("%d”,&time);

gctchar();

printf("请输入价格:");

scanf("%f',&price);

getcharO;

}

}

returnhead;

)

〃插入结点,并且插入后仍按一定次序

structbook*addbook(structbook*hcad)

structbook*ptr,*pl,*p2,*p;

charbnamcl50],wnamc[20],prcss[50],sort[50J;

intsizc=sizcof(structbook);

intnum,timc,n=l;

floatprice;

do{

printf(”请输入图书编号:");

scanf("%d",&num);

n=yanzheng(hcad,num);

if(n==0)

break;

else

printf("您输入的编号已存在.请重新输入!\n"):

}while(l);

prinlf("请输入图书名:");

scanf("%s",bname);

getchar();

prinlf("请输入作者名:");

scanf("%s'\wname);

getchar();

prinlf("请输入出版社

scanf("%s,\prcss);

gctchar();

printf("请输入类别:");

scanf("%s",sort);

gctchar();

printf("请输入出版时间

scanf("%d",&timc);

gctchar();

printf(”请输入价格:”);

scanf("%f',&pricc);

gctchar();

p=(structbook*)malloc(size);

p->num=nunK

strcpy(p->bname,bname);

strcpy(p->wname,wname);

strcpy(p->press,press);

strcpy(p->sort,sort);

p->time=time;

poprice二price;

p2=head;

Ptr=p;

while((ptr->num>p2->num)&&(p2->next!=NULL)){

pl=p2;

p2=p2->ncxt;

)

if(ptr->nuni<=p2->num)|

if(hcad==p2)

hcad=ptr;

clse{

pl->next=ptr;

p->ncxt=p2;

)

)

else(

p2->next=ptr;

p->next=NULL;

)

returnhead;

)

〃验证添加的图书编号与否已存在

intyanzheng(structbook*head,intm)

structbook*p;

p=hcad;

whilc(p!=NULL){

if(p->num==m)

break;

p=p->ncxt;

)

if(p==NULL)

return0;

else

return1;

}

〃将新链表写入文献中

voidfprint(structbook*hcad)

{

FILE*fp;

charch-1';

structbook*p1;

if((fp=fopen("fl.txt",,,w"))==NULL){

printf("Fileopenerror!\n");

cxit(O);

fputc(ch.fp);

for(p1=hcad;pl;pl=pl->ncxt){

fprintf(fp,"%d%s%s%s%s%d%f\n",p1->num,p1->hname,p1->wname,p1->prcss,p1->sort,p1->tim

e,pl->price);

)

fclosc(fp);

)

〃从文献中读取图书信息

structbook*load()

(

FILE*fp:

charch;

structbook*head,*lail,*p1;

head=tail=NULL:

if((fp=fopen(,,fl.txt",,,r"))==NULL){

printf("Fileopenerror!\n");

exit(O);

ch=fgetc(fp);

if(ch=='r){

while(!feof(fp)){

p1=(structbook*)malloc(sizeof(siructbook));

fscanf(fp,"%d%s%s%s%s%d%f\n",&p1->num.p1->bname,pI->wname,p1->press,p1->sort.&pl->time,&p

I->price);

if(head==NULL)

head=pl;

else

tail->nexl=pl;

lail=pl;

I

tail->next=NULL;

fclose(fp);

returnhead;

)

else

returnNULL;

〃将整个链表日勺信息输出

voidprint_book(structbook*hcad)

structbook*ptr;

if(hcad==NULL){

printf("\n没有信息!\n”);

return;

)

printfC,图书信息列表如下\n");

printf("

==========================================================\n);

printf("编号图书名作者名出版社类别出版时间价格\n");

for(ptr=head;ptr;ptr=ptr->next)

printfC%d%s%s%s%s%d%.2f\

n",p(r->num,pti->bnanie,ptr->wname.ptr->piess,ptr->sort,ptr-Xime,pti->price);

printf("

==========================================================\n);

}

〃删除图书信息

voiddeletebook(structbook*head)

inta;

charb,ch-1';

structbook*pl,*p2;

FILE*fp;

printf("请输入要删除的图书编号:");

scanf("%d'\&a);

pl=head;

if(pl->num==a&&p1->ncxt==NULL){〃对于文献中只有一组数据

printf("与否清空文献!(y/n)\n");

gctchar();

scanf("%c",&b);

getchar();

switch(b){

case'n':

break;

case'y':

if((fp=fopcn("fl.txt'\"w"))==NULL){

printf("Filcopenerror!\n");

exit(O);

)

fclosc(fp);

printf("文献已清空!\n”);

)

)

clsc{

whilc(p1->num!=a&&pl->next!=NULL){

p2=pl;

pl=pl->ncxt;

}

if(pl->ncxt==NULL){

if(pl->num==a){

p2->next=NULL;

printf("与否确定从文献中彻底删除该图书?

getchar();

scanf(u%c",&b);

switch(b){

case'n':

break;

case'y':

fprint(head);

printf("删除成功!\n");

gctchar();

break;

clsc{

printf("没有找到要删除日勺数据八n”);

getchar();

}

)

elseif(pl==head){

head=pl->next:

printf("与否确定从文献中彻底删除该图书?(y/n)\n");

getchar();

scanf("%c",&b);

switch(b){

case'n*:

break;

case'y':

fprint(hcad);

printf(”删除成功!\n)

gctchar();

break;

clsc{

p2->next=p1->iicxt:

printf("与否确定从文献中彻底删除该图书?(y/n)\n");

gctchar();

scanf(H%c",&b);

switch(b){

case'n':

break;

case'y':

fprint(head);

printf("删除成功!\n");

getchar();

break;

)

)

)

〃图书查询

voidchaxun(structbook*hcad)

(

inta;

printf("

==========================================================:\n);

printf("**1-按图书编号查询2-按图书名查询

printfC**3-按图书类别查询4.按作者名查询

printfC**5-按出版时间查询0-退出查询

printf("

==========================================================Xn..);

printff请输入所选择的编号:");

scanf("%d'\&a);

getchar();

switch(a){

case0:

break;

ease1:

num_chaxun(hcad);

break;

case2:

bnamc_chaxun(hcad);

break;

case3:

sort_chaxun(hcad);

break;

ease4:

wname_chaxun(head);

break:

case5:

(ime_chaxun(head);

break;

default:

printf("您的输入有误!\n”);

break;

〃按编号查询图书信息

voidnum_chaxun(structbook*hcad)

(

inta;

structbook*p;

printf(”请选择您要查询的图书编号:");

scanf("%d",&a);

gctchar();

p=head;

while(p!=NULL){

if(p->nuni==a)

break;

p=p->next:

)

if(p==NULL){

printf("没有找到该编号U勺图书!\n");

)

else{

printf("你所查询的图书信息如下\n”);

printf("

========================================================================\n")

printfC**编号图书名作者名出版社类别出版时间价格

printf("**%d%s%s%s%s%d%.2f

**\n,,,p->num,p->bnanic,p->wname,p->prcss,p->sort,p->tinic,p->price);

printf("

=======================================================================\n")

)

)

〃按图书名查询图书信息

voidbnamcchaxun(structbook*head)

(

chara[50];

intflag=0;

structbook*p;

prinlf(”请选择您要查询的图书名

gets(a);

p二head;

while(p!=NULL){

if(strcmp(p->bname,a)==O){

flag=l;

break;

}

p=p->ncxt;

)

if(flag==O){

printf("没有找到该图书名H勺图书!\n");

)

clsc(

printfC"你所查询的图书信息如下\n");

printfC

=========================================================================Xn)

prints”**编号图书名作者名出版社类别出版时间价格

while(p!=NULL){

if(strcmp(p->bname,a)==O){

printf("

**%d%s%s%s%s%d%.2f

**\n",p->nunLp->bnamc,p->wnamc,p->prcss,p->sort,p->tiinc,p->pricc);

)

p=p->ncxt;

)

printf("

)

}

〃按作者名查询图书信息

voidwname_chaxun(structbook*head)

(

chara[50];

intflag=0;

structbook*p;

printff请选择您要查询的图书作者名

gets(a);

p=head;

while(p!=NULL){

if(strcmp(p->wname,a)==O){

flag=l;

break;

)

p=p->ncxt;

)

if(flag==O){

printf("没有找到该图书名H勺图书!\n");

}

clsc(

printf(H你所查询的)图书信息如下\n");

printf("

=========================================================================\n)

printfC**编号图书名作者名出版社类别出版时间价格

while(p!=NULL){

if(strcmp(p->wname,a)==O){

priiitf("

**%d%s%s%s%s%d%.2f

**\n,,,p->num.p->bname.p->wname,p->press.p->sort.p->time,p->price);

flag=l;

)

p=p->ncxt;

)

printf("

)

}

〃按图书类别查询图书信息

voidsort_chaxun(structbook'head)

(

chara[50];

intflag=0;

structbook*p;

printff请选择您要查询的图书类别

gets(a);

p=head;

while(p!=NULL){

if(strcmp(p->sort,a)==0){

flag=l;

break;

)

p=p->ncxt;

)

if(flag==O){

printf("没有找到该图书名H勺图书!\n");

}

clsc(

printf(H你所查询的)图书信息如下\n");

printf("

=========================================================================\n)

printfC**编号图书名作者名出版社类别出版时间价格

while(p!=NULL){

if(strcmp(p->sort,a)==0){

priiitf("

**%d%s%s%s%s%d%.2f

**\n,,,p->num.p->bname.p->wname,p->press.p->sort.p->time,p->price);

flag=l;

)

p=p->ncxt;

)

printf("

=========================================================================\n")

)

)

〃按图书出版时间查询图书信息

voidtimc_chaxun(structbook*hcad)

(

inta.flag=0:

structbook*p;

prinlff请选择您要查询的图书出版时间:”);

scanf("%d".&a);

getchar();

p=head;

while(p!=NULL){

if(p->time==a){

fiag=l;

break;

)

p=p->ncxt;

)

if(flag==O){

printf("没有找到该图书名H勺图书!\n");

)

else{

printfC,你所查询的)图书信息如下\n”);

printf("

=========================================================================\n")

printfC**编号图书名作者名出版社类别出版时间价格

**\n”);

while(p!=NULL){

if(p->time==a){

printf("

**%d%s%s%s%s%d%.2f

**\ii",p->num,p->bname.p->wname,p->press,p->sort,p->time,p->price);

flag=l;

)

p=p->ncxt;

)

printf("

)

}

〃修改图书信息

voidxiugai(structbook*hcad)

(

inta,b;

charc;

structbook*p;

prinlff请输入要修改的图书编号

scanf("%d".&a);

p二head;

while(p!=NULL){

if(p->num==a)

break;

p=p->next;

if(p==NULL){

printf("没有找到该编号日勺图书!\n");

getchar();

)

clsc(

printf("

—---------------------------------------------------------------------------\n");

printf("**1-编号2-图书名3-作者名

printf("**4■•出版社5-类别6-出版时间

printff"**7-价格8-修改所有0-放弃修改

printf("

============================================================\n*);

printf("请选择你要修改的信息编号

scanf("%d",&b);

getchar();

switch(b){

case1:

printf(”请输入新编号:“);

scanf("%d",&p->num);

printf("修改成功!\n");

gctchar();

break;

ease2:

printf("请输入新图书名巧;

gets(p->bname);

printf("修改成功!\n");

break;

ea

温馨提示

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

最新文档

评论

0/150

提交评论