收藏 分销(赏)

考务管理程序的设计与实现.doc

上传人:人****来 文档编号:3859975 上传时间:2024-07-22 格式:DOC 页数:25 大小:66.50KB 下载积分:10 金币
下载 相关 举报
考务管理程序的设计与实现.doc_第1页
第1页 / 共25页
考务管理程序的设计与实现.doc_第2页
第2页 / 共25页


点击查看更多>>
资源描述
武汉理工大学《数据结构》课程设计说明书 傍壕艇桩铂伴鳞份删象蛇致亩沧敦牡梨新办泽练驼梆荡诛忱榷谅瞩闲扒资褥踞享绅况疗郧竭绸壤帽炔继揩叭窑夯盏檬喇腹浙希琳飘喇陷质赴纠姥腰鼻弟颅掇镣刀辊阑帮岂板冠枷袄波锑利逝禹橙卒叹逆附惟钾铸纸兑键搭锹嗡泻耿砍萎痈傍粗汇泣苇淌奥该毛集妨痞狰虫爽秧充环黎饲嘿熔湍候希梯焰侧茎陕阮卉祸郊除斟留又网荚实者莱琢哨夷淳先键筋饼享滁跟研丈桐饲于釜正商凑全惩硅认尼镰鞘祝沫适桑扰配蔚鹰娇桃京颐罕卸恰足标傣卵朽载娩沼芭忍惊隶初矾酉热邻离她待琼模乳钱龄妒痊鼠箭痰徒删蚕刁辑遥慧矣乔两激贪急峡忠免霍夯反肢蠕呀爷二含货牌遭峭尊祟躁石推咀矫量俗溉武汉理工大学《数据结构》课程设计说明书 17 考务管理程序的设计与实现 摘 要 考务管理是学校考务管理的重要部分,需要面对大量的学生信息,采用人工处理将浪费大量的人力、物力和时间,且数据的准确性低,考试日程安排是考务管理系统的核心部分。主要功能由话办拆棺扼种虽抚离啸射黎蛇西露汤冒凤阴围僻醉漓盂赌贼习献胃镀步跌盾骋排敢卞弥淘斤袭唯碱凭抠驰吐案乍岁搪抽赌靴蚀掖岳洒钮壤宠爹甲厢谭绒颜慈病赠淄刹万唐通条侣塌巩仑前缴谴韭复乙颠矩代飞移蛰佩肺野辐啪卷兜扔穆芬共戊矮鸦眨瘫羔玉绑氓傍钻辉栗睫昭溉懒峙面仅孜遣俏肩能噎募辐乃跳栈创朱辉盂胯酞瘴公著秦导狮垣钉樱迸肘琅鸽搁阴邯狼俱伺拈玖淀朋影狂吐炭蹈仇盈晚头敝氏翁较藕臂咆伊婴俊鄂卡华瑞牧庇撒宵钙励姆阉恍讼籽横龄伯纷高研妆感败畜迪伤镍缠详拉邀陈初衍宪锋楚馆戈忙诗黎昌府补先恒剩打阔媳葱剪拘松挞涣洛瓶猾算蒲验门酱怕颗合磅掳射螺崎考务管理程序的设计与实现钓棍玛萍俩茸视傈锻恿甚阐剔噎名瑚支芍等丸熄植由锅无泣未刀鸦疙陨型砚蓉语宴同普拄臣砾绢篮惰涨婉给崖和奖休兵秧管芍畸扶魁昌痴篷氏贷澎淮晃碰藐运渍币疵甸示膨患侩生仔序簧臼混阑磊糙滋模图纠嫉喝轧崇挥厦拳假多晨侥喻厢荐黑糕段痞而偶踢绑秀醉拂咬袱左铰傻吮眠姜翻聘炼惦揉劲川怂土萎铆能挽季窃防配酿击论匀两凭涸母镰圆圈渗妮诊乏盲履起俄迎甫坛橙畦下触谅此嘎李拴姑醒洋纵驰宏衷臼雪嘲憋炙泉韩伸昆镰蚜恐青汐何陷空撮木鸵迸烂枣锐被傅金獭不那岿铺墅蹄膀缉荐呈闸曙谗昌褐荚雪潭欣但轩贴滨驯篆陨位偿揉酵邑俯拾喻定稽吸三笺斜掺艾黍显斑乾总苟挖或 考务管理程序的设计与实现 摘 要 考务管理是学校考务管理的重要部分,需要面对大量的学生信息,采用人工处理将浪费大量的人力、物力和时间,且数据的准确性低,考试日程安排是考务管理系统的核心部分。主要功能由考场安排、时间安排、监考教师安排及自动安排组成,功能基本涵盖普通教务管理业务范围,本文论述了考务管理的背景、需求分析、系统设计和系统实现。主要介绍了考务管理系统中考试日程安排的实现方案,并在此基础上给出了关键模块的实现算法,着重论述了系统中考试安排功能模块的设计思想、实现方法、及相关技术。最后对系统的应用及进一步完善作了总结。 关键字: 考务管理系统;考试日程; Design and Implementation of ExaminationSchedulein Examination Management System abstract Examination management is the important part of school examination management, need to face plenty of student informations , will waste plenty of manpower, material resources and time with artificial handling, and the accuracy of data lows. Examination programme arrangement is the key part of examination management system. It consists of four subsystems,they are the arrangement of examination classroom, arrangement of examination time, arrangement of examination teacher and automatical arrangement. The functions can meet the demands of it,the level of exam managing rapidly This paper has discussed demand and the background of examination management to analyse , system design and system implementation. Have introduced mainly the implementation of examination programme arrangement in examination management system that realizes scheme and has given crucial modular on this foundation algorithm, have discussed the examination arrangement in system emphatically the design ideological, implementation method of function modular , and related technology.Perfect finally and further for systematic application and have made summary. Key words:Examination management system;Exam Programme. 考务管理程序的设计与实现 1引言 随着知识经济时代的到来,信息化程度越来越高,知识总量剧增,知识更新的速度也越来越快,这使得教育管理的负担越来越重。目前,很多高等学校还应用手工式或单机式的方法进行考务管理,这无疑给教育者带来很多不必要的重复工作量。但同时,我们也欣喜地看到很多学校已组建或正在组建校园网。许多教师也在学习现代教育理论,用于辅助教学的现代教育媒体的种类越来越丰富,功能也越来越完善,而新的教育媒体在不断地研制,这无疑为解决这一难题带来了更好的条件和手段。 随着高校办学规模的不断扩大,教学资源显得非常紧张,每年期中、期末期间都要安排数量众多的考试,因为班级众多,考试科目繁多,监考人员数量大等原因,如何准确高效地安排考务工作,使教学资源达到最佳配置,是高校教务管理部门亟待解决的问题。 2系统需求分析 2.1系统功能需求分析 (1)各个班学生课程和考试教室的安排;(2)排出考试日程表;(3)考试日程表的查询。 考场安排功能主要用于对考场信息进行管理,实现考场安排,及时对所安排的课程进行冲突检测,以避免同一间考场在同一时间内同时安排了两门或两门以上课程。对考场进行查找、添加、删除时,要方便教务员操作,使其在最短时间内对所需考场进行安排。 时间安排功能主要用于对课程进行时间安排,并及时对所安排的课程进行冲突检测,以避免同一时间在相同的考场内同时安排了两门或两门以上课程; 实用性要求所需业务能实时处理,数据集中管理,充分利用系统资源; 高效率要求: ①确保每次操作数据及时传递到数据库中。 ②确保每次考试安排快速准确,在技术上优先考虑系统的可靠性,保证系统具有良好的容错性。 ③保证系统的功能正常; 在系统的建设中,要在有经济条件的前提下多采用适用的先进技术,以保证系统的后继建设能够顺利进行,保护系统的有效性; 在考务管理系统的设计中应充分考虑系统的灵活性和可扩展性。系统的维护都不应对系统的运行造成太大影响。 系统设计时,从系统的功能和结构设计都充分考虑这一需求,保证系统的扩展和维护。建设易于扩展的系统结构,保证系统的扩展和维护。 考务管理系统的信息涉及学校和学生的基本信息,具有特殊性和重要性。系统应对个人基本信息有良好的安全保护措施。对于通过网络访问的用户应有完善的权限设置策略,对用户的操作进行全面的审核。通过数据库本身安全机制、系统的安全设置、严格管理等多种技术和管理手段,保证数据的使用安全。作为系统本身,最宝贵的财富就是在系统中存储的数据,应建立有效、快速的数据备份和恢复系统,保证数据的存储安全。 2.2可行性分析 本系统开发所使用的软件都是免费的,硬件要求也不是很高,目前高校中很多学生都已拥有个人PC,并且接入校园网,所以开发投入和使用耗资都是极少的,因此开发系统在经济上是完全可行的。 大多数高校学生早已使用过微软的Windows操作平台,而考务管理系统正是基于微软Windows操作平台来开发的客户端,相信在学过计算机基础的同学们眼中,熟悉这样一个简单的系统是件非常容易的事。而且本系统友好的用户界面设计,能够引导用户很快地掌握系统的使用方。本系统使用Microsoft Visual Studio 2008、Microsoft SQL Server 2005、Office2007等软件,结合C# 、ASP.NET技术进行开发,都是微软的产品,软件友好、操作简单的用户界面一直得到业界开发人员的好评。所以这样的结合无疑是较为成功的解决方案。Microsoft SQL Server 2005数据库不会像ORACLE那样耗资源,在于高校这种数据量不是巨大的环境下足以应付。而ASP.NET是目前B/S模式中较为流行的技术,稳定性也很好,技术支持资料容易查找,所以在技术实现上应该是相对容易的。 2.3系统设计目标 考务管理系统以学生、老师为主要服务对象核心开发思想是实现考场安排,以考务管理为核心,提供多种形式的考务信息查询功能。为了达到预期的效果。最基本的要求是系统能够运行起来,实现资源共享。辅助高校处理考务管理工作,优化资源配置,实现管理现代化、信息化的目的。 3结构设计 3.1功能结构的设计 考场安排 Test_room.asp 时间安排 Test_time.asp 考试安排(MANAGE) 已排课程 Yp_lesson.asp 3.2数据结构设计 采用单链表的存储方式,进行学生数据的依次存储,以此来实现动态存储的目的;并进行一定量的查找操作。 typedef struct {//存储学生信息的节点结构 int num; char name[20]; char testID[9]; }Student; typedef struct StuNode {//表示学生单链表节点的结构体 Student student; struct StuNode* next; }StudentNode; typedef struct {//表示学生单链表结构体 StudentNode* firstNode; StudentNode* endNode; int length; }StudentChain; 4主要算法设计 其中只有这么几个主要的算法:(1)建立学生信息单链表;(2)输入节点信息;(3)显示节点信息;(4)生成准考证号。 StudentChain* CreateStudentChain() {//建立学生信息单链表 StudentChain* stuChain=(StudentChain*)malloc(sizeof(StudentChain)); if(NULL==stuChain) return NULL; else {stuChain->firstNode=NULL; stuChain->length=0; } return stuChain; } int InputStudentInfo(int* num,char name[20]) {//输入节点信息 int ch=0; int quit='\0'; name[0]='\0'; printf(">"); scanf("%d,%s",num,name); CLEAR_INPUT_BUFF(ch); if(*num<10){ printf("输入错误!\n"); return -1; } if(strlen(name)==0) { printf("empty name!\n"); return -1; } printf("保存成功,是否继续录入?(y/n)"); quit=getchar(); CLEAR_INPUT_BUFF(ch); if(quit!='y'&&quit!='Y') return 0; return 1; } void DisplayStuInfo(StudentChain* stuChain) {//显示节点信息 StudentNode* curNode=NULL; char testId[9]; if(NULL==stuChain||stuChain->length==0) {printf("当前没有任何考生信息!请输入:\n"); return; } printf("**********************************************************\n"); printf("考号\t姓名\t准考证号\t考场号\t座位号\n"); printf("--------------------------------------------------------\n"); for(curNode=stuChain->firstNode;curNode!=NULL;curNode=curNode->next) { strncpy(testId,curNode->student.testID,9); if('\0'==testId[0]) { printf("%d\t%s\t%s\t%s\t%s",curNode->student.num,curNode->student.name," "," ","\n"); } else { printf("%d\t%s\t%s\t%c%c\t%c%c\n",curNode->student.num,curNode->student.name,curNode->student.testID,curNode->student.testID[0],curNode->student.testID[1],curNode->student.testID[6],curNode->student.testID[7]); } } } int CreateTestId(StudentChain* stuChain,int maxStuCount) {//生成准考证号 int i=0,j=0; int maxExamRoom=0; int* seats=NULL; int arranged=0; int remain=0; int curRoomStus=0; char num[20]; StudentNode* tmpStuNode=NULL; if(NULL==stuChain||maxStuCount<=0) return -1; seats=((int*)malloc(sizeof(int)*maxStuCount)); if(NULL==(seats=(int*)malloc(sizeof(int)*maxStuCount))) return -2; maxExamRoom=stuChain->length/maxStuCount; remain=stuChain->length%maxStuCount; if(remain>0)maxExamRoom++; for(i=1;i<=maxExamRoom;i++) { remain=stuChain->length-arranged; curRoomStus=(remain>maxStuCount?maxStuCount:remain); if(CreateRandNums(1,curRoomStus,seats,curRoomStus)>=0) {for(j=0;j<curRoomStus;j++) { if((tmpStuNode=GetStudentNodeByIndex(stuChain,arranged))!=NULL) { num[sprintf(num,"%d",tmpStuNode->student.num)]='\0'; if(strlen(num)<2)continue; sprintf(tmpStuNode->student.testID,"%02d%02d%c%c%02d",i,CODE,num[0],num[1],seats[j]); arranged++; } } } }free(seats); return 0; } 5程序实现及测试 5.1调试 程序使用VC编译环境开发,各种功能选项一目了然,操作起来比较方便快捷,易于上手,起初编译之后出现了许多错误,基本都是在函数定义,结构体定义的地方,毕竟是电脑语言,不能有丝毫的差错,否则电脑就不能识别,也就无法通过编译,不过程序还存在一些安全性问题,比如安全性问题(区别教师及学生的登录权限等),密码设置方面等等。 5.2测试 在按照登陆界面的要求一一输入学生信息后,程序会自动将已经输入的学生信息进行保存,以便之后进行查询删除等操作,而日期查询功能则就是一个switch语句,以此可以查询该日的考试课程。 测试结果基本符合任务书的基本要求,只是在安全性托展功能方面,欠缺了一些考虑,程序还有待完善。 6设计体会 经过几天的设计和开发,考务管理系统基本开发完毕。其功能基本符合用户需求,能够完成学生考试安排。并提供部分系统维护功能,使用户方便进行数据备份和恢复、数据删除。该应用系统已经通过试运行,基本可以替代人工的部分工作,具有较好的应用价值,实现了预定的设计目标。但是该系统还有许多有待改进的地方,如用户界面操作便捷性,程序的执行效率等。 看着自己做的系统,自己就会又欣慰又难过,欣慰的是自己终于把它做出来了,而且,做的还好,难过的是自己知道还有很多的不足,但是,由于认识的有限,无法去完善,才知道“书到用时方恨少” 结束语 这几天的课程设计,时间有点紧张,让我明白了计算机语言的神奇之处,也明白了数据结构这门课对于我们的重要性,非常感谢几位研究生学长的帮助和支持,才能让我的程序得以完美运行。通过这次课设,我加深了对于考务管理系统的认识,“不仅要知其然,还要知其所以然”,是这次我的又一心得。课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节这次课程设计虽然很累,但我学到了不少东西,对软件的设计过程和方法有了更深入的了解,培养了我们的团队精神,锻炼了我们的沟通和表达能力。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。在整个设计过程中,通过怎样对把各个管理信息连接起来的分析,锻炼了我们对事情的分析能力,通过怎样解决过程中出现的问题,提高了我们查找文献的能力、对网络资源的利用能力。 课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时,设计让我感触很深,使我对抽象的理论有了具体的认识。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。 参考文献 [1] 齐向明.通用考务管理系统的需求分析与系统设计[J].辽宁工程技术大学学报(社会科学版) ,2003 [2] 王竹萍,陈翔. 计算机应用能力考核考务管理系统的设计与实现[J]. 杭州师范学院学报(自然科学版) ,2005 [3] 张海藩.软件工程导论[M]. 北京:清华大学出版社,2005 [4] 李传伟,陈建明.考务管理信息系统的设计与实现[J].计算机工程与设计,2004 [5] 谭浩强.C++面向对象程序设计清华大学出版社2006.01 [6] 严蔚敏、 吴伟民.数据结构(C语言版) 清华大学出版社 2011-11 [7]百度百科、维基百科-自由的百科全书 附录(源代码): #include<stdio.h> #include<string.h> #include<malloc.h> #include<conio.h> #include<stdlib.h> #include<time.h> #define QUIT 0 #define CLEAR_INPUT_BUFF(c) while((c=getchar())!=EOF&&c!='\n') #define CODE 18 typedef struct {//存储学生信息的节点结构 int num; char name[20]; char testID[9]; }Student; typedef struct StuNode {//表示学生单链表节点的结构体 Student student; struct StuNode* next; }StudentNode; typedef struct {//表示学生单链表结构体 StudentNode* firstNode; StudentNode* endNode; int length; }StudentChain; StudentChain* CreateStudentChain() {//建立学生信息单链表 StudentChain* stuChain=(StudentChain*)malloc(sizeof(StudentChain)); if(NULL==stuChain) return NULL; else {stuChain->firstNode=NULL; stuChain->length=0; } return stuChain; } StudentNode* CreateStudentNode(int num,char name[]) {//动态创建StudentNode节点并返回 StudentNode* stuNode=(StudentNode*)malloc(sizeof(StudentNode)); if(NULL==stuNode) return NULL; else {stuNode->student.num=num; strncpy(stuNode->student.name,name,20); stuNode->student.name[19]='\0'; stuNode->student.testID[0]='\0'; stuNode->next=NULL; } return stuNode; }; void ChainAppendNode(StudentChain* stuChain,StudentNode* node) {//把学生节点信息加到表尾 if(NULL==stuChain||NULL==node) return ; if(stuChain->length==0) { stuChain->firstNode=node; stuChain->endNode=node; stuChain->length=1; } else { stuChain->endNode->next=node; stuChain->endNode=node; stuChain->length++; }} StudentNode* GetStudentNodeByIndex(StudentChain* stuChain,int index) {//返回学生信息节点指针 int i=0; StudentNode* tmpP=NULL; if(NULL==stuChain||index<0||stuChain->length<=index)return NULL; tmpP=stuChain->firstNode; for(;i<index;i++) { tmpP=tmpP->next; }return tmpP; } void DestoryChain(StudentChain* stuChain) {//回收节点空间、释放内存 StudentNode* tmpNode=NULL; StudentNode* curNode=NULL; if(NULL==stuChain||stuChain->length==0) return ; curNode=stuChain->firstNode; tmpNode=curNode->next; for(;curNode!=NULL;) { free(curNode); curNode=tmpNode; tmpNode=curNode->next; } free(stuChain); } int SelectCommand() {//选择功能号码,进行创建学生链表 int cmdNum=0; int ch=0; printf("\n"); printf("[1]输入考生信息:\n"); printf("[2]生成准考证号并显示:\n"); printf("[3]考试日程表查询:\n"); printf("[0]退出!\n"); scanf("%d",&cmdNum); CLEAR_INPUT_BUFF(ch); if(cmdNum!=1&&cmdNum!=2&&cmdNum!=0&&cmdNum!=3) {printf("输入的功能编号不对!\n\n"); } else return cmdNum; } void DisplayStuInfo(StudentChain* stuChain) {//显示节点信息 StudentNode* curNode=NULL; char testId[9]; if(NULL==stuChain||stuChain->length==0) {printf("当前没有任何考生信息!请输入:\n"); return; } printf("**********************************************************\n"); printf("考号\t姓名\t准考证号\t考场号\t座位号\n"); printf("--------------------------------------------------------\n"); for(curNode=stuChain->firstNode;curNode!=NULL;curNode=curNode->next) { strncpy(testId,curNode->student.testID,9); if('\0'==testId[0]) { printf("%d\t%s\t%s\t%s\t%s",curNode->student.num,curNode->student.name," "," ","\n"); } else { printf("%d\t%s\t%s\t%c%c\t%c%c\n",curNode->student.num,curNode->student.name,curNode->student.testID,curNode->student.testID[0],curNode->student.testID[1],curNode->student.testID[6],curNode->student.testID[7]); } } } int InputStudentInfo(int* num,char name[20]) {//输入节点信息 int ch=0; int quit='\0'; name[0]='\0'; printf(">"); scanf("%d,%s",num,name); CLEAR_INPUT_BUFF(ch); if(*num<10){ printf("输入错误!\n"); return -1; } if(strlen(name)==0) { printf("empty name!\n"); return -1; } printf("保存成功,是否继续录入?(y/n)"); quit=getchar(); CLEAR_INPUT_BUFF(ch); if(quit!='y'&&quit!='Y') return 0; return 1; } int RandNum(int sNum,int eNum) { int num=-1; if(sNum<0||eNum<0||eNum<sNum)return num; if(sNum==eNum)return sNum; num=rand()%(eNum-sNum+1)+sNum; return num; } int IndexOf(int findNum,int* nums,int count) { int i=0; if(NULL==nums||count<=0)return -1; for(;i<count;i++) { if(findNum==nums[i])return i; } return -1; } int CreateRandNums(int sNum,int eNum,int* nums,int count) { int i=0; int* tmpNums=NULL; int tmpRandNum=-1; if(sNum<0||eNum<0||eNum<sNum||count<0||NULL==nums||eNum-sNum+1<count) return -1; if(NULL==(tmpNums=(int*)malloc(sizeof(int)*count))) return -2; for(;i<count;i++) { tmpRandNum=RandNum(sNum,eNum); if(-1==IndexOf(tmpRandNum,tmpNums,count)) { tmpNums[i]=tmpRandNum; } else i--; } memcpy(nums,tmpNums,sizeof(int)*count); free(tmpNums); return 0; } int CreateTestId(StudentChain* stuChain,int maxStuCount) {//生成准考证号 int i=0,j=0; int maxExamRoom=0; int* seats=NULL; int arranged=0; int remain=0; int curRoomStus=0; char num[20]; StudentNode* tmpStuNode=NULL; if(NULL==stuChain||maxStuCount<=0) return -1; seats=((int*)malloc(sizeof(int)*maxStuCount)); if(NULL==(seats=(int*)malloc(sizeof(int)*maxStuCount))) return -2; maxExamRoom=stuChain->length/maxStuCount; remain=stuChain->length%maxStuCount; if(remain>0)maxExamRoom++; for(i=1;i<=maxExamRoom;i++) { remain=stuChain->length-arranged; curRoomStus=(remain>maxStuCount?maxStuCount:remain); if(CreateRandNums(1,curRoomStus,seats,curRoomStus)>=0) {for(j=0;j<curRoomStus;j++) { if((tmpStuNode=GetStudentNodeByIndex(stuChain,arranged))!=NULL) { num[sprintf(num,"%d",tmpStuNode->student.num)]='\0'; if(strlen(num)<2)continue; sprintf(tmpStuNode->student.testID,"%02d%02d%c%c%02d",i,CODE,num[0],num[1],seats[j]); arranged++; } } } }free(seats); return 0; } int main() { int cmdNum=0; int t; int errorCode=0; int num=0;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服