c课设图书管理系统.doc
《c课设图书管理系统.doc》由会员分享,可在线阅读,更多相关《c课设图书管理系统.doc(28页珍藏版)》请在咨信网上搜索。
南京航空航天大学 《面向对象程序设计语言》课程设计报告 图 书 管 理 系 统 学号: 姓名: 日期: 目 录 一.需求分析……………………………………………….2 二.程序主要功能………………………………………….2 三.程序运行平台………………………………………….2 四.系统功能框架图……………………………………….3 五.程序类说明…………………………………………….4 六.模块分析……………………………………………….6 七.比较有特色的地方…………………………………….7 八.存在的不足与对策…………………………………….11 九.编程体会……………………………………………….12 十.程序源代码…………………………………………….13 一. 需求分析 本系统旨在实现一个小型的图书管理系统,对于一个小型的图书馆或藏书室来说,实施本系统不仅可以减少工作人员数量,降低成本,而且可以大大提高工作效率,降低工作强度,方便读者借书查书及办理各种手续,更方便工作人员对图书进行更有效的管理。 程序主要实现读者管理、图书基本信息及库存管理、图书借还管理以及一些辅助功能等。 (1) 以菜单的方式工作 (2) 图书、读者的基本信息的新增 (3) 图书、读者的基本信息的修改 (4) 图书、读者记录的删除 (5) 图书的借阅,归还 (6) 查询图书、读者信息及借阅状态 二. 程序主要功能 该程序的主要功能有: l 读者功能 可进行增加读者、读者信息修改、注销读者、读者查询、显示读者信息、显示所有读者信息等操作。 l 图书信息管理 可以进行查询图书、增加图书、删除图书信息、图书信息修改、显示全部图书信息等操作。 其中添加内容包括:书名、ISBN编号、作者、出版商、出版日期、方便读者查看; l 图书借还功能 应该说这是整个系统最主要的功能,借还时要输入编号已及读者编号 l 帮助 一个简单的操作指南,指导用户下一步该如何操作。 l 退出系统 在运行时将从文件载入信息。 运行程序后每一步都会有详细的提示,操作简便,大多数地方都考虑到防止用户出现误操作的情况,以提高程序的健壮性,可以放心使用! 三.程序运行平台 该程序是用VC++6.0制做的,使用Microsoft Visual C++ 6.0运行该程序,具体操作是:打开Microsoft Visual C++ 6.0,菜单栏里点文件→打开工作区→找到“图书管理系统.dsw”这个文件→打开,或者在资源管理器中双击该文件,此时,VC++6.0会自动打开,并载入该系统相关资源,点击Run命令菜单或者或用快捷键Ctrl+F5运行该程序。trl计分析能 借书/还书 读者信息管理 图书管理系统 图书信息管理 帮 助 统计查询 .新增图书信息 .删除图书信息 .显示图书信息 .修改图书信息 .帮助说明 .显示读者信息 .返回上一层 .新增读者信息 .修改读者信息 .删除图书信息 .显示图书信息 .帮助说明 .返回上一层 输入图书编号及读者编号 .还书 借书 .返回上一层 四.系统功能框架图 五.程序类说明 ①有关图书信息的类 struct BookInfo { char BookCode[6]; //图书编号 char BookName[30]; //图书名字 char BookAuthor[20]; //作者名 char BookPress[50]; //出版社 char BookPublicationDate[8]; //出版日期 char ISBN[8]; //图书isbn号 char BookStatus; //图书借阅状态 ‘0’未借出 ‘1’借出 char ReaderCode[6]; //读者编号 编号为‘0’为未借阅 char IsAvailable; //图书是否有效,‘0’无效,‘1’,有效 }; void AddBookInfo(); //增加图书 void ModifyBookInfo(); //修改图书 void DelBookInfo(); //删除图书 int CountBook(); //获得图书记录数 int IsBookExist(char *); //判断图书(编号)是否存在 void ShowBookInfo(); //显示图书清单 void ShowReaderInfo(); //显示读者清单 int IsBorrow(char *); //判断是否在借 int IsBorrowed(char *); //统计在借书的总数 void BookBorrow(); //借书手续 void BookReturn(); //还书手续 ②有关读者信息的类 struct ReaderInfo { char ReaderCode[6]; //读者编号 char ReaderName[20]; //读者姓名 char Sex[3]; //读者性别 char IsAvailable; //读者是否有效,‘0’无效,‘1,’有效 }; void AddReaderInfo(); //增加读者 void ModifyReaderInfo(); //修改读者 void DelReaderInfo(); //删除读者 void ShowReaderInfo(); //显示读者清单 int CountReader(); //获得读者记录数 六.模块分析 1、读者信息: 下设子菜单,包括: a.新增读者 b.修改读者 c.删除读者 d.读者查询 e.显示读者信息 f.返回上一层 (1)读者编号:读者唯一的识别方式,所以不可以重复,长度小于六个字符。 (2)读者姓名:长度小于20个字符。 (3)读者性别:长度小于三个字符。 2、书库信息: 该部分内容最丰富,下设子菜单,包括 a.新书入库 b.删除 c.修改 d.返回上一层 链表的思路也跟读者信息一样,从头结点开始建,每当新增加一个类节点时,就把新增结点加到链表尾部,再让其中的next指向NULL空,这里没有对链表进行排序。 有关菜单的制作,就是先显示菜单,让用户输入选择,进行输入有效性检查,然后用switch来对不同的选择调用类中不同的函数。 3、 借书/还书: 借书需要判断的条件不只是判断图书是否存在、图书是否借出、读者是否存在。 还书需要提供读者编号再判断图书是否已经借出。 十.程序源代码 #include<iostream> #include<string.h> #include<stdlib.h> #include<fstream> #include<iomanip> #include<stdio.h> using namespace std; #define BOOKLEN sizeof(struct BookInfo) #define READERLEN sizeof(struct ReaderInfo) //函数声明 void Welcome(); int MainMenu(); void SubMenu1(); int CreatSubMenu1(); void SubMenu2(); int CreatSubMenu2(); void SubMenu3(); int CreatSubMenu3(); void SubMenu(); int CreatSubMenu4(); void AddBookInfo(); //增加图书 void ModifyBookInfo(); //修改图书 void DelBookInfo(); //删除图书 int CountBook(); //获得图书记录数 int CountReader(); //获得读者记录数 int IsBookExist(char *); //判断图书(编号)是否存在 int IsReaderExist(char *); //判断读者(编号)是否存在 void AddReaderInfo(); //增加读者 void ModifyReaderInfo(); //修改读者 void DelReaderInfo(); //删除读者 void ShowBookInfo(); //显示图书清单 void ShowReaderInfo(); //显示读者清单 int IsBorrow(char *); //判断是否在借 int IsBorrowed(char *); //统计在借书的总数 void BookBorrow(); //借书手续 void BookReturn(); //还书手续 void SearchBook(); //图书查询 void SearchReader(); //读者查询 int GetPosition(char *,struct BookInfo*); //修改图书信息,获得修改记录的位置 int GetRdPosition(char *,struct ReaderInfo*); //修改读者信息,获得修改记录的位置 void ShowAReader(char *); //显示指定编号的读者的信息 int InvalidBookPosition(); //查询第一条无效图书信息 int InvalidReaderPosition(); //查询第一条无效读者信息 //图书结构定义 struct BookInfo { char BookCode[6]; //图书编号 char BookName[30]; //图书名字 char BookAuthor[20]; //作者名 char BookPress[50]; //出版社 char BookPublicationDate[8]; //出版日期 char ISBN[8]; //图书isbn号 char BookStatus; //图书借阅状态 ‘0’未借出 ‘1’借出 char ReaderCode[6]; //读者编号 编号为‘0’为未借阅 char IsAvailable; //图书是否有效,‘0’无效,‘1’,有效 }; //读者结构体 struct ReaderInfo { char ReaderCode[6]; //读者编号 char ReaderName[20]; //读者姓名 char Sex[3]; //读者性别 char IsAvailable; //读者是否有效,‘0’无效,‘1,’有效 }; void Welcome() { cout<<"*********************************************************"<<endl; cout<<"**********************图书信息借阅系统*******************"<<endl; cout<<"*********************************************************"<<endl; cout<<"**********************现有图书"<<CountBook()<<"册"<<"读者"<<CountReader()<<"人"<<"***************"<<endl; } int MainMenu() { int m; while(1) { cout<<"*****************欢迎使用图书管理系统***********************"<<endl; cout<<"************************************************************"<<endl; cout<<"*******************1.图书信息管理***************************"<<endl; cout<<"*******************2.读者信息管理***************************"<<endl; cout<<"*******************3.借书 还书****************************"<<endl; cout<<"*******************4.统计 查询****************************"<<endl; cout<<"*******************0.退出 系统*****************************"<<endl; cout<<"请选择0-4:"<<endl; cin>>m; if(m>=0&&m<=4) break; else cout<<"选择错误,请在0-4中选择"<<endl; } return m; } int CreatSubMenu1() { int m; while(1) { cout<<"*********************图书信息管理*****************************"<<endl; cout<<"**************************************************************"<<endl; cout<<"*********************1.新增 图书******************************"<<endl; cout<<"*********************2.修改 图书******************************"<<endl; cout<<"*********************3.删除 图书******************************"<<endl; cout<<"*********************0.返回上一层********************************"<<endl; cout<<"请选择0-3:"<<endl; cin>>m; if(m>=0&&m<=3) break; else cout<<"选择错误,请在0-3中选择"<<endl; } return m; } int CreatSubMenu2() { int m; while(1) { cout<<"*********************读者信息管理*****************************"<<endl; cout<<"**************************************************************"<<endl; cout<<"*********************1.新增 读者******************************"<<endl; cout<<"*********************2.修改 读者******************************"<<endl; cout<<"*********************3.删除 读者******************************"<<endl; cout<<"*********************0.返回上一层********************************"<<endl; cout<<"请选择0-3:"<<endl; cin>>m; cin.ignore(); if(m>=0&&m<=3) break; else cout<<"选择错误,请在0-3中选择"<<endl; } return m; } int CreatSubMenu3() { int m; while(1) { cout<<"*********************图书流通*****************************"<<endl; cout<<"**************************************************************"<<endl; cout<<"**********************1.借书******************************"<<endl; cout<<"**********************2.还书******************************"<<endl; cout<<"*********************0.返回上一层********************************"<<endl; cout<<"请选择0-2:"<<endl; cin>>m; if(m>=0&&m<=2) break; else cout<<"选择错误,请在0-2中选择"<<endl; } return m; } int CreatSubMenu4() { int m; while(1) { cout<<"***********************统计查询****************************"<<endl; cout<<"************************************************************"<<endl; cout<<"**********************1.图书清单***************************"<<endl; cout<<"**********************2.读者清单***************************"<<endl; cout<<"**********************3.图书查询****************************"<<endl; cout<<"**********************4.读者查询****************************"<<endl; cout<<"**********************0.返回上层*****************************"<<endl; cout<<"请选择0-4:"<<endl; cin>>m; if(m>=0&&m<=4) break; else cout<<"选择错误,请在0-4中选择"<<endl; } return m; } int CountBook() //统计已有图书数量(有效图书) { struct BookInfo BookTemp; FILE *fp; int count=0; if((fp=fopen("bookinfo.dat","rb"))==NULL) return 0; else { while(fread(&BookTemp,BOOKLEN,1,fp)) if(BookTemp.IsAvailable=='1') count++; fclose(fp); return count; } } int CountReader() //统计已有读者人数(有效人数) { struct ReaderInfo ReaderTemp; FILE *fp; int count =0; if((fp=fopen("bookinfo.dat","rb"))==NULL) return 0; else { while(fread(&ReaderTemp,READERLEN,1,fp)) if(ReaderTemp.IsAvailable=='1') count++; fclose(fp); return count; } } void SubMenu1() //图书信息管理 { int MenuId; while(1) { MenuId=CreatSubMenu1(); if(MenuId==0) break; switch(MenuId) { case 1:AddBookInfo();break; case 2:ModifyBookInfo();break; case 3:DelBookInfo();break; case 0:MainMenu();break; } } } void SubMenu2() //读者信息管理 { int MenuId; while(1) { MenuId=CreatSubMenu2(); if(MenuId==0) break; switch(MenuId) { case 1:AddReaderInfo();break; case 2:ModifyReaderInfo();break; case 3:DelReaderInfo();break; case 0:MainMenu();break; } } } void SubMenu3() //图书借阅 { int MenuId; while(1) { MenuId=CreatSubMenu3(); if(MenuId==0) break; switch(MenuId) { case 1:BookBorrow();break; case 2:BookReturn();break; case 0:MainMenu();break; } } } void SubMenu4() //信息查询 { int MenuId; while(1) { MenuId=CreatSubMenu4(); if(MenuId==0) break; switch(MenuId) { case 1:ShowBookInfo();break; case 2:ShowReaderInfo();break; case 3:SearchReader();break; case 4:SearchBook();break; case 0:MainMenu();break; } } } void AddBookInfo() //新增图书记录 { struct BookInfo MyBook; cout<<"请输入图书编号"<<endl; cin>>MyBook.BookCode; while(IsBookExist(MyBook.BookCode)) { cout<<"图书已存在,请重新输入"<<endl; cin>>MyBook.BookCode; } cout<<"请输入书名"<<endl; cin>>MyBook.BookName; cout<<"请输入作者"<<endl; cin>>MyBook.BookAuthor; cout<<"请输入出版商"<<endl; cin>>MyBook.BookPress; cout<<"请输入isbn号"<<endl; cin>>MyBook.ISBN; cout<<"请输入出版日期"<<endl; cin>>MyBook.BookPublicationDate; MyBook.BookStatus='0'; strcpy(MyBook.ReaderCode,"0"); MyBook.IsAvailable='1'; FILE *fp; if((fp=fopen("bookinfo.dat","rb+"))==NULL) { cout<<"文件打开错误"<<endl; exit(0); } int SetPs; //查询写入文件位置 SetPs=InvalidBookPosition(); if(SetPs==-1) //图书记录都是有效的,文件指针定义在文件尾 fseek(fp,0,SEEK_END); else fseek(fp,(long)BOOKLEN*SetPs,SEEK_SET); //重新定位写入位置 fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout<<"新增图书成功,现有图书"<<CountBook()<<"册"<<"按回车键继续添加"<<endl; cin.ignore(); getchar(); } void ModifyBookInfo() //修改图书 { struct BookInfo MyBook; char ModifyBookCode[6]; if(CountBook==0) { cout<<"无法修改"<<endl; return; } cout<<"请输入要修改的图书编号"<<endl; cin>>ModifyBookCode; if(!IsBookExist(ModifyBookCode)) { cout<<"图书不存在"<<endl; return; } int ModiPosition=0; ModiPosition=GetPosition(ModifyBookCode,&MyBook); cout<<"请输入新书名"<<endl; cin>>MyBook.BookName; cout<<"请输入新作者"<<endl; cin>>MyBook.BookName; cout<<"请输入新出版商"<<endl; cin>>MyBook.ISBN; cout<<"请输入新的出版日期"<<endl; cin>>MyBook.BookPublicationDate; FILE *fp; if((fp=fopen("bookinfo.dat","rb+"))==NULL) { cout<<"文件打开错误"<<endl; exit(0); } fseek(fp,(long)BOOKLEN*ModiPosition,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout<<"修改成功,按回车键继续"<<endl; cin.ignore(); getchar(); } void DelBookInfo() //删除图书 { char DelBookCode[6]; if(CountBook==0) { cout<<"无法删除"<<endl; return; } cout<<"请输入要删除的图书编号"<<endl; cin>>DelBookCode; if(!IsBookExist(DelBookCode)) { cout<<"该书不存在"<<endl; return; } if(IsBorrow(DelBookCode)) //书已经借出,无法删除 { cout<<"书已经借出,无法删除"<<endl; return; } FILE *fp; if((fp=fopen("bookinfo.dat","rb+"))==NULL) { cout<<"文件打开错误"<<endl; exit(0); } struct BookInfo MyBook; int ModiPosition=0; ModiPosition=GetPosition(DelBookCode,&MyBook); MyBook.IsAvailable='0'; fseek(fp,(long)BOOKLEN*ModiPosition,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout<<"删除图书成功,现有图书"<<CountBook()<<"册"<<endl; } void BookBorrow() //图书借阅 { char BookCode[6]; char ReaderCode[6]; if(CountBook()==0||CountReader()==0) { cout<<"无法借书"<<endl; return; } cout<<"请输入图书编号"<<endl; cin>>BookCode; if(!IsBookExist(BookCode)) { cout<<"借书失败,该书不存在"<<endl; return; } if(IsBorrow(BookCode)) { cout<<"书已经借出,借书失败"<<endl; return; } cout<<"请输入读者编号"<<endl; cin>>ReaderCode; if(!IsReaderExist(ReaderCode)) { cout<<"读者不存在,借书失败"<<endl; return; } FILE *fp; if((fp=fopen("bookinfo.dat","rb+"))==NULL) { cout<<"文件打开错误"<<endl; exit(0); } int Position=0; struct BookInfo MyBook; Position=GetPosition(BookCode,&MyBook); MyBook.BookStatus='1'; strcpy(MyBook.ReaderCode,ReaderCode); fseek(fp,(long)BOOKLEN*Position,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout<<"借书成功,按回车键继续"<<endl; cin.ignore(); getchar(); } void BookReturn() //还书 { char BookCode[6]; if(CountBook()==0||CountReader()==0) { cout<<"无法还书"<<endl; return; } cout<<"请输入图书编号"<<endl; cin>>BookCode; if(!IsBookExist(BookCode)) { cout<<"还书失败,该书不存在"<<endl; return; } if(!IsBorrow(BookCode)) { cout<<"书未借出,还书失败"<<endl; return; } FILE *fp; if((fp=fopen("bookinfo.dat","rb+"))==NULL) { cout<<"文件打开错误"<<endl; exit(0); } int Position=0; struct BookInfo MyBook; Position=GetPosition(BookCode,&MyBook); MyBook.BookStatus='0'; strcpy(MyBook.ReaderCode,"0"); fseek(fp,(long)BOOKLEN*Position,SEEK_SET); fwrite(&MyBook,BOOKLEN,1,fp); fclose(fp); cout<<"还书成功,按回车键继续"<<endl; cin.ignore(); getchar(); } void ShowBookInfo() //显示所有图书信息 { struct BookInfo MyBookInfo; int booknum=CountBook(); if(booknum==0) { cout<<"没有图书信息"<<endl; return; } FILE *fp; if((fp=fopen("bookinfo.dat","rb+"))==NULL) { cout<<"文件打开错误"<<endl; exit(0); } while(fread(&MyBookInfo,BOOKLEN,1,fp)) cout<<"编号"<<setw(6)<<MyBookInfo.BookCode<<"书名"<<setw(20)<<MyBookInfo.BookName<<"作者" <<setw(20)<<MyBookInfo.BookAuthor<<"出版商"<<setw(30)<<MyBookInfo.BookP- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文