C语言职工信息管理系统链表模板.doc
《C语言职工信息管理系统链表模板.doc》由会员分享,可在线阅读,更多相关《C语言职工信息管理系统链表模板.doc(32页珍藏版)》请在咨信网上搜索。
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 《程序设计综合训练》 设 计 报 告 专 业: 数字媒体技术 班 级: 11媒体Z 学 号: 11145107 姓 名: 朱毅 指导教师: 陈湘军 陈明霞 成 绩: 计算机工程学院 10月 第一部分 题目: 1.编写函数 int hamming(int x,int y,char a[],char b[])实现以下功能: 先将形参x和y分别转换为2个合法代码并按从低位到高位的顺序为别保存2个合法代码的码距, 函数返回该码距。 2.编写函数main( ) 函数实现以下功能: 声明字符数组a、 b和变量m、 n输入两个整数冰保存到m和n中, 若m、 n的值在0~32767范围内则用m、 n和数组a、 b做实参调用haming函数, 计算由m和n生成的两个合法代码的码距输出的到屏幕及文件myf2.out中。最后将考生本人的准考证号输出到文件myf2.out中。 来自: ( 秋) 上机试卷( 03) 的编程题。 解题的基本思路: 子函数就是将形参X,Y分别转换为2个合法的代码并按从低位到高位的顺序分别保存2个合法代码到a和b指向的数组中, 在计算a数组和b数组中的两个合法代码的码距, 函数返回码距。 主函数就是调用子函数, 并输出结果。 设计方案: 主函数main() (1) 功能模块框图: 调用子函数: hamming() 子函数调用函数: bin() 主函数 (2)程序流程图: 入 口 读文件 创立文件, 输入m,n 调用函数hamming( ) 返回count; 出 口 用hamming()调用函数bin( ) Hamming函数 循环体 Bin函数 循环体 循环体 算法设计: ( 1) 算法描述: 由于hamming函数需要分别将两个整数转换为合法代码, 因此编写函数”void bin(int n,char str[])”。Bin函数的功能是将形参n转换为合法代码并保存到b指向的一维数组中。Hamming函数先两次调用bin函数, 分别将形参X和Y转换为合法代码并分别保存到a和b指向的一维数组中, 在用循环语句从前向后遍历a和b指向的数组各元素, 函数最后返回统计结果。 ( 2) 实现方法: 用VC6.0软件进行调试, 分析, 输入m,n两个值, 进行分析, 调用函数hanmming( ) , 在从hanmming( ) 函数中调用函数bin( ) , 返回count的值, 输出, a,b数组中的值和返回值count的值。 源代码: #include<stdio.h> void bin(int n,char str[]) { int i=15,j; while(n!=0) { str[i--]=n%2+'0'; n/=2; } for(j=0;j<=i;j++) str[j]='0'; str[16]='\0'; } int hamming(int x,int y,char a[],char b[]) { int count=0,i; bin(x,a); bin(y,b); for(i=0;i<16;i++) if(a[i]!=b[i]) count++; return count; } void main() { char a[17],b[17]; int m,n,x; FILE *fp; fp=fopen("myf2.out","w"); if(fp==NULL) printf("error"); do{ scanf("%d,%d",&m,&n); }while(m>32767&&m<0&&n>32767&&n<0); x=hamming(m,n,a,b); printf("\n%s\n%s\ndistance of %d and %d is %d \n",a,b,m,n,x); fprintf(fp,"\n%s\n%s\ndistance of %d and %d is %d \n",a,b,m,n,x); fprintf(fp,"11145107"); fclose(fp); } 程序调试: 就是输入的时候, n和m的值范围问题, 当输入范围不正确时候跳不出来 解决方法: 用一个do{}while;循环条件为大于32767和小于0的时候退出。 测试: 第二部分 职工信息管理系统 ( 1) 题目名称: 职工信息管理系统 内容: 职工信息包括职工号、 姓名、 性别、 出生年月、 学历、 职务、 工资、 住址、 电话等( 职工号不重复) 。试设计一职工信息管理系统, 使之能提供以下功能: 1、 职工信息录入功能(职工信息用文件保存, 也可不用) 2、 职工信息浏览功能 3、 排序: 按工资排序 4、 查询或排序功能: (至少一种查询方式: 顺序、 折半查找) 按工资范围查询 5、 职工信息删除、 修改功能(任选一项) ( 2) 解题的基本思路 程序采用模块化, 每一个模块对应一种功能, 调用函数予以实现, 分别为7个模块, 分别是创立与添加模块、 显示模块、 查找模块、 修改模块、 删除模块、 存档模块、 文件统计模块、 退出模块, 把复杂的问题分成每一个独立功能的小问题来解决。 ( 3) 设计方案 1、 功能模块图 菜单 开始 根据菜单输入序号值选择程序 结束 是否继续进行 N Y 2 修改职工信息 3 浏览职工信息 4 分类查找职工信息 5 删除职工信息 6 从文件读取信息 0 退出 1 录入职工信息 按职工号查找 按姓名查找 (4) 算法设计 该程序主要分为7个模块, 分别是创立与添加模块、 显示模块、 查找模块、 修改模块、 删除模块、 存档模块、 文件统计模块、 退出模块 创立与添加模块: 该模块的功能是输入职工信息。函数为void Add(Node *woker) 原理: 采用尾插法, 先建立链表与头结点, 新增一个结点, 键盘输入职工号、 职工姓名、 职工性别、 职工出生年月、 职工学历、 职工职位、 职工工资, 将这些信息存储到新增结点中, 将新增加的节点连到链表的尾端, 如此以往, 将尾结点的指针域置空, 这样就得到了一条存储职工信息的链表, 这样就完成了职工信息的创立与增加。 显示模块: 该模块功能是显示职工信息。函数为void Disp(Node *woker) 原理: 先新建一个指针P指向头结点, 判断它的指针域是否为空, 若为空, 则输出”没有记录能够显示”; 若不为空, 则输出它的指针域所指向节点所储存的职工信息, 并将该指针向后移一个结点, 直到P指向空, 即输出了所有职工的信息, 这样就完成了所有职工信息的显示。 查找模块: 该模块功能是查找职工信息。函数为void Tongji(Node *woker) 原理: 该模块分为两种查找方法, 分别是按职工号查找和按职工姓名查找, 因为这两种查找方法雷同, 因此这里将只解释按职工号查找的原理。先键盘输入一个要查找的职工号并新建一个指针P指向头结点, 判断它的指针域是否为空, 若为空, 则输出”没有资料能够统计分类”, 若不为空, 则判断它的指针域所指向节点所储存的职工信息中的职工号, 若相等, 则输出这个职工的其它所有信息, 并将P指向下一个结点, 再次进行判断, 直到P指向空, 即输出了所有查找到的信息。若不相等, 则P指向下一个结点, 再次进行判断, 直到P指向空, 即输出了所有查找到的信息, 这样就完成了职工信息的查找。 修改模块 : 该模块功能是修改职工信息。函数为void change(Node *woker) 原理: 根据查找原理, 查找到要修改信息的职工, 删除这一节点, 并新建一个节点, 键盘输入想要修改的内容, 并储存到新的结点中, 将新的节点连接到链表中原先删除结点的位子, 这样就完成了职工信息的修改。 删除模块: 该模块功能是删除管理职工信息。函数为void dismiss(Node *woker) 根据查找的原理, 查找到要修改信息的职工, 删除这一节点, 并将其前驱结点的指针域指向其后继结点, 这样就完成了职工信息的删除。 存档模块: 将内存中的信息存储到文件中。函数为void save(Node *woker) 原理: 打开文件, 新建一个指针P指向头结点, 判断它的指针域是否为空, 若为空, 则输出”无记录”, 若不为空, 则将这个职工的所有信息输入到文件中, 并将P指向下一个结点, 直到P指向空, 即输入了的信息, 文件统计模块: 打开文件, 统计职工数目, 并输出。函数为void load(Node *woker) 退出模块: 该模块功能是退出管理档案。 ( 5) 程序调试与测试: 欢迎界面: 主界面: 创立与增加模块: 输入职工信息为: 职工号 职工姓名 职工性别 职工出生年月 职工学历 职工职位 职工工资 1 A f 11 ben a 1000 2 B m 22 ben b 3 C f 33 ben c 3000 4 D m 44 ben d 4000 输入第一次时: 输入第二次时: 输入第三次时: 输入第四次时: 显示模块: 输入四次后显示的结果为: 查找模块: 输入查找职工号为3的职工信息: 输入查找职工姓名为c的职工信息: 修改模块: 修改职工号为3的职工信息为: 职工号 职工姓名 职工性别 职工出生年月 职工学历 职工职位 职工工资 5 E f 55 ee e 5000 职工信息变成: 删除模块: 删除职工号为5的职工信息: 删除后的结果为: 退出模块: ( 6) 总结 此次实践课编写的是一个应用程序, 相对于以前我们见到的程序, 它要大得多, 运行的结果也没有预想中的好, 数据的输出格式不太规范, 而且各模块也出现了一些小问题, 我很有耐心的一次又一次的进行修改, 最后运行的结果基本上达到了预期的目的。 本次C 语言的实习课让我对C 语言的学习又有了更深入的了解, 也让我更深刻地领悟到了”实践出真理”这个道理, 在上机实践过程中学到的知识远远超过了在课堂上学到的, 这次程序设计课让我增添了许多程序设计经验, 为我们将来走上工作岗位其了不小的铺垫作用。 本次实习中遇到了很多以前没有遇到过的问题, 也曾想过要放弃, 但看到那些同学都在那认真的写程序, 给了我继续的信心。在同学和老师的帮助下, 我顺利的结束了本次实习, 让我知道原来凭借自己努力取得的成功会让自己这么欣慰。 ( 7) 附录: 源代码 #include <stdio.h> #include <stdlib.h》 #include <string.h> struct wokers //定义一个woker的结构体 { char num[10]; //职工号 char name[15]; //职工姓名 char sex[15]; //职工性别 char birthday[15]; //职工出生年月 char degree[10]; //职工学历 char position[10]; //职工职位 char salary[10]; //职工工资 }; typedef struct node { struct wokers data; struct node *next; //建立一个链表。 }Node; void Add(Node *woker) //添加记录 { Node *p,*r,*s; char n[10]; //先用于输入职工号,也用于判断是否跳出循环 r=woker; s=woker->next; //使s为第一个有用的结点 while(r->next!=NULL) //这个循环的作用是使r为最后一个有用的结点 r=r->next; //将指针置于最末尾 while(1) { printf(">>>>>>>>>>提示:输入0则返回主菜单!\n"); printf("\n请你输入职工号:"); scanf("%s",n); if(strcmp(n,"0")==0) break; p=(Node *)malloc(sizeof(Node)); //申请空间 strcpy(p->data.num,n); printf("\n请输入姓名:"); scanf("%s",p->data.name); printf("\n请输入性别:"); scanf("%s",p->data.sex); printf("\n请输入出生年月:"); scanf("%s",&p->data.birthday); printf("\n请输入学历:"); scanf("%s",&p->data.degree); printf("\n请输入职位:"); scanf("%s",&p->data.position); printf("\n请输入工资:"); scanf("%s",&p->data.salary); printf(">>>>>>>>>>提示:已经完成一条记录的添加。\n"); p->next=NULL; r->next=p; //这一步是必须的,将p与先前的链表连起来构成一条新链表 r=p; //也是必须的.将r 又重设为新链的最后一个有用结点 } } void change(Node *woker) //修改职工信息函数 { Node *p; char find[20]; if(!woker->next) { printf("\n>>>>>>>>>>提示:没有资料能够修改!\n"); return; } printf("请输入要修改的职工号:"); scanf("%s",find); p=woker->next; while(p!=NULL) { if(strcmp(p->data.num,find)==0) //如果找到的话返回的是符合要求 break; p=p->next; } if(p) { int x; while(1) { printf("完成修改请输入0否则输入任意数再进行修改:"); scanf("%d",&x); if(x==0) {break;} printf("请输入新职工号(原来是 %s ):",p->data.num); scanf("%s",p->data.num); printf("请输入新职工姓名(原来是 %s ):",p->data.name); scanf("%s",p->data.name); printf("请输入新职工性别(原来是 %s ):",p->data.sex); scanf("%s",p->data.sex); printf("请输入新出生年月(原来是 %s ):",p->data.birthday); scanf("%s",p->data.birthday); printf("请输入新职工学历(原来是 %s ):",p->data.degree); scanf("%s",p->data.degree); printf("请输入新职工职位(原来是 %s ):",p->data.position); scanf("%s",p->data.position); printf("请输入新职工工资(原来是 %s ):",p->data.salary); scanf("%s",p->data.salary); printf("\n>>>>>>>>>>提示:该项记录资料已经成功修改!\n"); } } else printf("\n>>>>>>>>>>提示:你要修改的信息不存在!\n"); } void Disp(Node *woker) //输出职工信息 { Node *p; p=woker->next; if(!p) { printf("\n>>>>>>>>>>提示:没有记录能够显示!\n"); return; } printf("\t\t\t\t显示结果\n"); printf("职工号 职工姓名 职工性别 职工生日 职工学历 职工职位 职工工资\n"); while(p) { printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.num,p->data.name,p->data.sex,p->data.birthday,p->data.degree,p->data.position,p->data.salary); p=p->next; } } void Tongji(Node *woker) //查找统计函数 { Node *p; int sel;int flag2=0,ha=0; char find[20]; p=woker->next; if(!woker->next) //若链表为空 { printf("\n>>>>>>>>>>提示:没有资料能够统计分类!\n"); return; } printf(">>>>>>>>>>提示:\n=====>0退出\n=====>1按职工号统计\n=====>2按职工姓名名称统计\n"); scanf("%d",&sel); if(sel==1) { printf("\n输入你要统计分类的职工号:"); scanf("%s",find); while(p) { if(strcmp(p->data.num,find)==0) { flag2++; } if(flag2==1&&ha!=flag2) { printf("职工号 职工姓名 职工性别 职工生日 职工学历 职工职位 职工工资\n"); printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.num,p->data.name,p->data.sex,p->data.birthday,p->data.degree,p->data.position,p->data.salary); ha=flag2; } else if(flag2>ha){printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.num,p->data.name,p->data.sex,p->data.birthday,p->data.degree,p->data.position,p->data.salary);ha=flag2;} p=p->next; } if(flag2) { printf("\n*************************按设备号%s统计分类的有%d条记录:*************************\n\n",find,flag2); } else {printf("\n按职工号%s统计的结果为0个\n\n",find);} } else if(sel==2) { printf("\n输入你要统计分类的职工姓名:"); scanf("%s",find); while(p) { if(strcmp(p->data.name,find)==0) { flag2++; } if(flag2==1&&ha!=flag2) { printf("职工号 职工姓名 职工性别 职工生日 职工学历 职工职位 职工工资\n"); printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.num,p->data.name,p->data.sex,p->data.birthday,p->data.degree,p->data.position,p->data.salary); ha=flag2; } else if(flag2>ha){printf("\n%-13s%-11s%-7s%-10s%-13s%-10s%-5s\n",p->data.num,p->data.name,p->data.sex,p->data.birthday,p->data.degree,p->data.position,p->data.salary);ha=flag2;} p=p->next; } if(flag2) { printf("\n\n\n共查找到%d条记录:\n\n",flag2); } else {printf("\n按职工姓名%s统计分类的结果为0个\n\n",find);} } else if(sel==0) return; } void load(Node *woker) {Node *p,*q; FILE *fp; //指向文件的指针 int recordNum; // 统计记录数 if((fp = fopen("职工管理系统.txt", "rb")) == NULL) //打开文件 { printf("can not open file\n"); //不能打开 } p=woker; recordNum = 0; while(!feof(fp)) {q=(Node*)malloc(sizeof(Node)); fscanf(fp, "%s %s %s %s %s %s %s",p->data.num,p->data.name,p->data.sex,p->data.birthday,p->data.degree,p->data.position,p->data.salary);/*从文件读入记录*/ p->next=q; q->next=NULL; p=q; recordNum++; } fclose(fp); printf("文件里共有%d条记录:\n",recordNum); } void save(Node *woker) //将职工信息保存到文件 { int n; Node *p; FILE *fp; //指向文件的指针 printf("需要保存到文件吗?( 1—保存, 0—不保存) "); scanf("%d",&n); if(n==1) { if(woker->next==NULL) printf("无记录"); else p=woker->next; if((fp = fopen("职工管理系统.txt", "wb")) == NULL) //打开文件, 并判断打开是否正常 printf("can not open file\n"); // 打开文件出错 while(p!=NULL) { fprintf(fp,"%s %s %s %s %s %s %s",&p->data.num,&p->data.name,&p->data.sex,&p->data.birthday,&p->data.degree,&p->data.position,&p->data.salary); p=p->next; } fclose(fp); //关闭文件 } } void dismiss(Node *woker) //删除职工信息函数 {Node *p,*r,*s; char find[10]; if(!woker->next) { printf("\n>>>>>>>>>>提示:没有资料能够显示!\n"); return; } printf("\n>>>>>>>>>>提示:请输入您要删除的职工号!\n"); scanf("%s",find); p=woker->next; while(p!=NULL) { if(strcmp(p->data.num,find)==0) //如果找到的话返回的是符合要求 break; p=p->next; } if(!p) printf("\n>>>>>>>>>>提示:找不到您想删除的职工号!\n"); else {r=woker; while(r->next!=p) r=r->next; s=r->next; r->next=r->next->next; } } void main() { Node *woker; FILE *fp; int flag; Node *p,*q; system("color 0F"); woker=(Node*)malloc(sizeof(Node)); woker->next=NULL; p=woker; while(1) { printf("\t\t\t\t职工信息管理系统\n"); printf("\n\n ==================================选单======================================\n"); printf("\n\t1、 添加记录\n"); printf("\n\t2、 修改记录\n"); printf("\n\t3、 浏览记录\n"); printf("\n\t4、 分类查找记录\n"); printf("\n\t5、 删除记录\n"); printf("\n\t6、 从文件读取记录\n"); printf("\n\t0、 退出\n"); printf("\n\n输入序号:"); scanf("%d",&flag); switch(flag) { case 0: printf("\n>>>>>>>>>>提示:已经退出系统,ByeBye!<<<<<<<<<<\n");break; case 1: Add(woker);save(woker);break; //增加记录 case 2: change(woker); break; //修改记录 case 3: Disp(woker); break; //显示记录信息 case 4: Tongji(woker); break; //查找记录 case 5: dismiss(woker); break; //删除记录 case 6: load(woker); break; //读取记录 default: printf("\n>>>>>>>>>>提示:输入错误!\n"); break; }system("cls"); }- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 职工 信息管理 系统 模板
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文