软件工程课程设计——实验室设备管理系统.doc_第1页
软件工程课程设计——实验室设备管理系统.doc_第2页
软件工程课程设计——实验室设备管理系统.doc_第3页
软件工程课程设计——实验室设备管理系统.doc_第4页
软件工程课程设计——实验室设备管理系统.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

软件工程课程设计实验室设备管理系统目录一、设计所完成的任务要求.1 1、设计所完成的任务.1 2、设计所完成的技术要求.1二、系统环境配置和使用工具简单介绍.1 1、系统环境配置.1 2、使用工具简单介绍.1三、可行性分析.2 1、决定可行性的主要因素.2 2、技术可行性.2 2.1、对系统的简要描述.2 2.2、待开发系统可能带来的影响.2 2.3、技术上的可行性.2 3、经济可行性.2 3.1、支出.2 3.1.1、基建支出.2 3.1.2、其他一次性支出.2 3.1.3、经常性支出.3 3.2、收益.3 3.2.1一次性收益.3 3.2.2、经常性收益.3 3.2.3、不可定量收益.3 3.3、收益/投资比.3 3.4、投资回收周期.3 3.5、经济可行性总结.3 4、社会因素可行性分析.3 4.1、法律因素可行性.3 4.2、用户使用可行性.4四、系统需求分析.4 1、系统所要达到的功能.4 2、分层数据流图.4 3、数据字典.6 4、数据加工处理描述.7五、系统设计.7 1、系统结构图设计.7 2、输出设计.9 3、存储文件格式设计.10 4、用户界面设计.10 5、关键模块详细设计.13 5.1、输入项目.13 5.2、输出项目.13 5.3、程序流程图.14 5.4、测试要点.14六、课程设计总结.15七、附系统相应程序代码(部分).168、 参考文献.22九、小组小结.22题目五、“实验室设备管理系统”一、设计所完成的任务要求 1、设计所完成的任务 本设计是针对于实验室设备管理而开发的一个用于实验室设备日常管理的软件,该软件每学年要对实验室设备使用情况进行统计、更新,其中: (1)对于已彻底损坏的作报废处理,同时详细记录有关信息。 (2)对于有严重问题(故障)的要即使修理,并记录修理日期、设备名、修理厂家、修理费、责任人等。 (3)对于急需但又缺少的设备需以“申请表”的形式送交上级领导请求批准购买。新设备购入后要立即进行设备登记(包括类别、设备名、型号、规格、单价、数量、购置日期、生产厂家、购买人等),同时更新申请表的内容。 (4)随时对现有设备及其修理、报废情况进行统计、查询,要求能够按类别和时间段(某日期之前)查询。 2、设计所完成的技术要求 (1)所有工作由专门人员负责完成,其他人不得任意使用。 (2)每件设备在作入库登记时均由系统按类别自动顺序编号,形成设备号;设备报废时要及时修改相应的设备记录,且有领导认可。 (3)本系统的数据存储至少应包含:设备记录、修理记录、报废记录、购买申请。 (4)本系统的输入项至少包含:新设备信息、修理信息、申请购买信息、报废信息、具体查询统计要求。 (5)本系统的输出项至少包含:设备购买申请表、修理/报废注销/设备资金统计表。二、系统环境配置和使用工具简单介绍 1、系统环境配置由于当前个人计算机多使用Windows XP或Windows 7系统,故本系统针对Microsoft Windows系统开发,运行于Windows XP及以上系统。 2、使用工具简单介绍本次系统的开发主要是运用C语言进行编码,在软件系统的实现中,主要运用C语言中结构体、链表、文件等为编写手段。因此整个编码的运行工具是VC+6.0。三、可行性分析 1、决定可行性的主要因素软件开发是否可行主要考虑:技术上是否可行,即现有技术是否可以完全承担开发任务;经济上是否可行,即开发效益是否高于开发成本;社会因素是否可行,即开发的系统软件是否侵占他人利益,从而造成潜在风险,用户是否可以使用。本系统的可行性分析文档主要就是从这三个方面去考虑。 2、技术可行性2.1、对系统的简要描述基于本小组成员现有知识和本课程的要求,故决定采取C语言为唯一编制手段。系统采用结构体和链表,并结合C语言中文件的存储和打开建立数据存储文件。利用主函数调用的方式完成模块间的调用,从而使得系统达到模块化,降低开发难度。相比于原有的手工管理方式,此系统采用数据处理方式,避免了原有系统的繁杂,并且容易出错。且此次开发系统采用数据存储方式,避免了纸质文档的特有缺陷,例如繁重、损坏等等。很大程度上减少了差错的发生,存储查询更加快捷方便。2.2、待开发系统可能带来的影响对于计算机而言,本次开发的系统对计算机的性能无需太高要求,故不会在硬件上产生影响;对运行系统而言,本次开发的系统适用于Windows XP及以上系统,适用于几乎所有人的个人电脑;对于用户而言,只需按提示输入数据,故在用户使用上也是不存在技术问题;2.3、技术上的可行性由上面对系统的简要描述可知,本次系统的开发语言是C语言。而本次开发小组成员均为C语言国家二级考试合格者。因此,在C语言的运用上没有问题。并且,本次开发的界面为VC+6.0,与学习C语言的软件一致,故开发工具的使用技术也是没有问题的。并且,在系统的使用方面,界面的简洁,数据的简洁使得用户在使用上不存在技术问题。综上所述,本次开发系统,技术上是完全可行的。 3、经济可行性3.1、支出 3.1.1、基建支出PC机4台约1.4万元,网络等其他设备约3.5万元 3.1.2、其他一次性支出 (1)开发人员工资(开发期为3个月,每人每月约0.45万元,共五人)约6.75万元 (2)外购开发工具,软件环境费用约3万元 (3)其他费用约3万元 3.1.3、经常性支出主要为系统运行费用,假设系统运行期为5年,每年的运行费用(包括系统维护,设备维护等)共约2万元,按年利率5%计算,折合现值:3.2、收益 3.2.1一次性收益减少纸张、笔墨等手工存储设备约0.5万元 3.2.2、经常性收益假设投入运行本系统可使员工效率提高50%,以现有员工10人计算,可减少员工5人,每人每月平均工资约为0.3万元,每年节约人员工资约18万元。按年利率5%折为现值约为: 3.2.3、不可定量收益实验室的高效管理也许可使外界增加对本实验室的好感与认同,从而带来其他投资机会等不可准确估量的收益。3.3、收益/投资比由前面的支出可知项目的投资为:1.4万+3.5万+6.75万+3万+3万+8.659万=26.309万由前面的收益可知项目的收益为:0.5万+77.931万=78.431万因此,收益/投资比为:78.431万/26.309万=2.9813.4、投资回收周期因为投资回收周期的公式为(包括建设期):投资回收期=最后一项为负值的累计净现金流量对应的年数+最后一项为负值的累计净现金流量绝对值/下年净现金流量因此,3.5、经济可行性总结由上述可知,对于该系统的开发,收益大于投资,且对于投资在1.53年就可收回,故本系统的投资开发在经济上是可行的。 4、社会因素可行性分析4.1、法律因素可行性此次开发的系统为C语言编制,故不会因为程序编码上的侵权而造成法律后果。而在其他地方需要涉及他人专利及版权的地方,在支出费用时已已于考虑。在软件生命周期内,尽可能的使用自己的东西,从而避免因法律因素而造成的不必要的纠纷。因此,在系统的开发、使用、维护的整个流程中,不存在法律方面的阻挡因素。故,法律上,本系统的开发是可行的。4.2、用户使用可行性如今,计算机已在我国全面普及,几乎所有实验室设备管理人员都会使用计算机。所以,对于本次开发系统的使用自然也就容易许多。即使对于少数不会使用计算机的,由于界面的简洁,只是输入简单参数,所以稍作培训也是可以使用的。因此,对于用户使用方面,本系统开发也是可行的。四、系统需求分析 1、系统所要达到的功能该开发系统的功能是每学年要对实验室设备使用情况进行统计、更新,其中:(1)对于已彻底损坏的作报废处理,同时详细记录有关信息。(2)对于有严重问题(故障)的要即使修理,并记录修理日期、设备名、修理厂家、修理费、责任人等。(3)对于急需但又缺少的设备需以“申请表”的形式送交上级领导请求批准购买。新设备购入后要立即进行设备登记(包括类别、设备名、型号、规格、单价、数量、购置日期、生产厂家、购买人等),同时更新申请表的内容。(4)随时对现有设备及其修理、报废情况进行统计、查询,要求能够按类别和时间段(某日期之前)查询。 2、分层数据流图(1)顶层数据流图(2)二层数据流图(3)三层数据流图购买子系统(4)三层数据流图统计审核子系统(5)三层数据流图统计查询子系统 3、数据字典对于数据流图中的数据定义以下数据字典条目:(1)申请表信息=设备名+型号+规格+数量+申请人(2)新设备表信息=设备编号+类别+设备名+型号+规格+单价+数量+购置日期+生产厂家+购买人(3)报废记录表信息=设备编号+报废日期+设备名+报废地点+报废价值+报废责任人(4)维修记录表信息=设备编号+修理日期+设备名+修理厂家+修理费+修理责任人(5)查询设备表信息=设备编号+类别+设备名+型号+规格+购置日期+单价+数量+生产厂家+购买人+修理日期+修理费+修理厂家+修理责任人+报废日期+报废地点+报废价值+报废责任人(6)设备基本信息表信息=设备编号+类别+设备名+型号+规格+购置日期+单价+数量+生产厂家+购买人+修理日期+修理费+修理厂家+修理责任人+报废日期+报废地点+报废价值+报废责任人(7)采购表信息=设备名+型号+规格+数量(8)用户表信息=用户名+密码(9)采购单信息=类别+设备名+型号+规格+单价+数量+购置日期+生产厂家+购买人(10)审核信息=设备名+型号+规格+数量+审核人 4、数据加工处理描述本系统大体上可分为五个模块对数据的加工,即购买模块、审核模块、报废模块、维修模块、统计查询模块:(1) 数据在购买模块的加工处理:该模块主要有两个分支。其一由购买模块编辑出对急缺设备的购买申请,即生成申请表。其二是根据采购表经由“人工采购”得到采购单,然后将采购单录入系统从而生成新设备表。(2) 数据在审核模块的加工处理:该模块中由上级领导的审核信息和购买模块中的申请表信息经由“勾选同意采购设备申请”“处理生成采购表,同时去“除已批准购买申请”数据处理模块结合采购表对申请表进行更新。(3) 数据在报废模块的加工处理:该模块主要是向系统录入报废记录,从而形成报废记录表。(4) 数据在维修模块的加工处理:该模块与报废模块类似,主要向系统录入维修记录,从而形成维修记录表。(5) 数据在统计查询模块的加工处理:该模块主要有统计和查询两个分支。其一统计分支中,主要是对新设备表、报废记录表和维修记录表进行汇总,从而形成设备基本设备表;其二查询分支中,主要是按类别和时间段两种查询方式,首先录入所选类别的关键字,然后结合新设备表、报废记录表和维修记录表进行检索从而形成查询设备表。五、系统设计 1、系统结构图设计(1)结构图第一级分解:(2)结构图购买模块的二级分解:(3)结构图审核模块的二级分解:(4)结构图统计查询模块的二级分解:附:图中数字代表。1.申请表 2.新设备表 3.报废记录表 4.维修记录表 5.查询设备表 6.设备基本信息表 7.采购表 8.审核信息 9.采购单 2、输出设计本系统的输出项主要有申请表、设备基本信息表和查询设备表。输出时可先显示与用户或上级领导的PC终端机上,然后连接打印设备进行打印。 3、存储文件格式设计本程序中,需要存储的数据有:由急缺设备信息所构成的申请表、由新设备信息所构成的新设备表、由报废记录信息所构成的报废记录表、由维修记录信息所构成的维修记录表、由被查询设备信息构成的查询设备表、由所有设备信息构成的设备基本信息表、由已批购买设备信息构成的采购表、由用户信息所构成的用户表、由已经购买设备信息所构成的采购单。由于本程序使用C语言为开发语言,因此存储功能的实现主要是采用C语言中文件的相关知识。本程序的实现中以模块void fprintE(Equipment *head)进行信息的文件写入,文件形式为.txt格式。需要读取文件信息时则使用模块Equipment* fscanE()进行文件信息的读取。 4、用户界面设计用户界面为使得用户使用起来方便快捷,所以在界面的设计方面我们使用了较简洁的数字项选择的方式。每当遇到选择操作时,均采用数字选择的方式,并且在数字之后给予功能解释。输入界面按照逐条输入,使得输入清晰,整洁。输出界面按照条目输出,显得清晰简洁。在不同的模块间使用 system(cls)进行清屏处理,让界面看起来更加清爽。在模块之间的切换采用system(Pause)进行提示并任意键切换,用起来更加方便快捷,减少出错。其程序源代码已经由源代码中给出(本次只给实现了系统的部分功能)。界面设计成效如下:初始进入界面:设备信息的录入:设备信息的查询:维修信息的录入:维修信息的查询:退出界面: 5、关键模块详细设计5.1、输入项目本程序的输入项目包括新设备信息、修理信息、申请购买信息、报废信息、查询关键字。新设备信息,即购入新设备是对设备进行的系统入库,按照数据字典的数据设计进行逐项录入;修理信息,维修后向系统录入维修记录;申请购买信息,即对于急缺设备向系统录入,交由上级领导审核;报废信息,即报废后向系统录入报废记录;查询关键字,即输入一个所选检索类别相吻合的关键字,从而挑选出想要查找的设备信息。5.2、输出项目(1) 申请表,其元素在数据字典中已经给出。其用途是在上级领导审核时给予了解信息。因此,该输出项只有在上级领导审核时才会输出。其输出形式是直接显示与上级领导审核时所使用的PC机上。(2) 设备基本信息表,该数据流的元素在数据字典中已经给出。其用途是在管理员统计设备信息的时候给予了解信息。因此,该输出项只有在管理员统计设备信息时才会输出。其输出形式是直接显示在管理员的PC终端机上。(3) 查询设备表,该数据元素在数据字典中已经给出。其用途是在管理员查询设备的时候给予不同查询方式的相对应的信息。因此,该输出项只有在管理员查询特定设备信息的时候才会输出。其输出形式是直接显示在管理员的PC终端机上。 5.3、程序流程图(除审核模块外):5.4、测试要点本次设计的程序中,对个数据的类型在结构体中均已定义出来,故在测试阶段应针对不同数据类型设计不同的测试用例,例如定义的责任人为char型,这里可以输入一个int型数据查看显示结果。对于登陆信息的检测,涉及安全性问题,因此需要有针对的进行测试。同时对于选择项目上,应该注意对超出选择项目之外的选项进行测试用例的设计,例如主界面中只有0、1、2、3四个选项,因此可以设计一个错误的5输入,查看其应对错误输入的能力。六、课程设计总结基于当前实验室多采用纯人工管理方式,本次课程设计针对于实验室设备管理系统,编写了一个用于实验室设备管理的系统。通过本系统,可对实验室设备的购买、维修、报废、统计、查询等进行了数据化的管理。历时一个学期,经历了可行性分析、需求分析、需求设计、结构分析、数据流设计、编码、测试直至最后的文档总结。在整个软件开发的过程中,付出的是辛劳,投入的是精力。收获的不仅是喜悦,还有知识的巩固提升,阅历的增长与发展。在系统的开发中,可以体会到那种上课所不能体会到的感觉,自己动手让我们从各个方面体会到了其带给我们的好处。首先,对于知识。知识是死的,是编写者按照主流的学习理念编制的,其中无论是哪方面都是设计好的,所以在遇到问题的时候也不会过于诧异,因为都是书本上可以解答的,一个人自己就可以解决书本上的问题。但是对于自己开发软件就不一样了。手头上有的只是一个题目,一个人根本做不来,因此团队的优越性在开发软件过程中显得尤为重要。开发的一开始就遇到问题。在可行性研究阶段,小组中对于开发是混沌的,但是,在我们组不断的尝试与借鉴中慢慢体会到了软件开发的流程与应当注意的问题。虽然可行性研究做的不是太完美,但是我们却摸索着走入了软件开发的大门。紧接着,需求分析,对功能、数据的理解不准确,又一次让我小组犯难,尤其是对统计查询子系统的三层分析。经过一遍一遍的改正和修宇老师一遍一遍的指导,终于使得数据流图像点模样。而后的SC图绘制阶段,是根据DFD图转化的,因此没有多大困难。后来的编码阶段,由于C语言是早期学习的课程,故在此阶段遇到了一些挫折,不过由于小组中五个人均是C语言国家二级考试合格及以上者,故稍作复习,也就没什么大问题了。磕磕绊绊一路走来,我们收获了很多也体会了很多。由于是小组的形式,让我们体会到好像一个专业的开发团队,每个人都认真的做着自己的事,不敢丝毫怠慢。我们强化了当前的软件工程的知识,熟悉了软件的开发工作,同时巩固了以前C语言的知识,强化了代码编写的能力。团队化的形式让我们体会到了合作相处的重要性,更体会到什么事责任。同时,一路上的艰辛让我们体会到开发软件的不易,从而为我们走向社会奠定了一定的基础。当然,有限的知识与时间总是不能将事情做得极致与完美。我们开发的系统中还有很多需要改进的地方和一些不够完美的地方。由于时间的限制,文档不能严格按照国标的形式来撰写。由于知识的有限,不能实现更多的功能,还有许多可以开发的地方,例如可以将实验室设备管理系统进一步开发,升级为可以实行网上经营的模式,实行设备的外借管理等等。当然,我们相信,随着知识的积累,这些领域的开发以后还是可以继续的。七、附系统相应程序代码(部分)源代码:#include #include #include typedef struct equipment int num; /*编号*/ char name20; /*名称*/ char model20; /*型号*/char spcifications20;/*规格*/float unit_price;/*单价*/int number;/*数量*/ char factory20; /*厂家*/ char buy_date20; /*购买日期*/char purchaser20;/*购买人*/ struct equipment *next;Equipment;void fprintE(Equipment *head); /*将设备信息输出到文件*/Equipment* fscanE(); /*从文件读取设备信息*/void repairEquipment(); /*维修管理*/void printList(Equipment *head); /*输出设备信息列表*/int checkNum(Equipment *head, int num);/*检查设备编号是否相同*/将设备信息输出到文件:void addEquipment(Equipment *head) Equipment *tail = head; while(tail-next!=NULL) tail = tail-next; Equipment *newnode = (Equipment*)malloc(sizeof(Equipment); printf(请输入设备编号:); scanf(%d,&newnode-num); if(checkNum(head,newnode-num) printf(输入编号已有,输入失败!); return; printf(请输入设备名称:); scanf(%s,&newnode-name); printf(请输入设备型号:); scanf(%s,&newnode-model);printf(请输入设备规格:); scanf(%s,&newnode-spcifications); printf(请输入设备单价:); scanf(%f,&newnode-unit_price);printf(请输入设备数量:); scanf(%d,&newnode-number); printf(请输入设备厂家:); scanf(%s,&newnode-factory); printf(请输入设备购买日期:); scanf(%s,&newnode-buy_date); printf(请输入设备购买人:); scanf(%s,&newnode-purchaser); tail-next = newnode; newnode-next = NULL; fprintE(head); printf(录入成功!);将链表输入到文件:void fprintE(Equipment *head) FILE *fp=fopen(data.txt,w); Equipment *current = head-next;while(current) fprintf(fp,%dn,current-num); fprintf(fp,%sn,current-name); fprintf(fp,%sn,current-model);fprintf(fp,%dn,current-spcifications);fprintf(fp,%dn,current-unit_price);fprintf(fp,%dn,current-number); fprintf(fp,%sn,current-factory); fprintf(fp,%sn,current-buy_date);fprintf(fp,%sn,current-purchaser); current = current-next; fclose(fp);从文件读取设备信息:Equipment* fscanE() Equipment *head1 = (Equipment*)malloc(sizeof(Equipment); head1-next = NULL; Equipment *current = head1; FILE *fp = fopen(data.txt,r);while(!feof(fp) Equipment *newnode = (Equipment*)malloc(sizeof(Equipment); fscanf(fp,%dn,&newnode-num); fprintf(fp,%sn,current-name); fprintf(fp,%sn,current-model);fprintf(fp,%dn,current-spcifications);fprintf(fp,%dn,current-unit_price);fprintf(fp,%dn,current-number); fprintf(fp,%sn,current-factory); fprintf(fp,%sn,current-buy_date);fprintf(fp,%sn,current-purchaser); current-next = newnode; newnode-next = NULL; current = current-next; fclose(fp); return head1;维修信息管理:void repairEquipment() int num;float repair_cost; int n; char time16,name20,repair_factory20,person20; printf(请输入维修操作(12):n1.记录t2.查找n); scanf(%d,&n); getchar(); switch(n) case 1: FILE *fp = fopen(myfile.txt,a); printf(请输入维修编号:); scanf(%d,&num); printf(请输入维修时间:); scanf(%s,&time);printf(请输入设备名:);scanf(%s,&name);printf(请输入修理厂家:);scanf(%s,&repair_factory);printf(请输入维修费用:);scanf(%f,&repair_cost);printf(请输入责任人:);scanf(%s,&person); fprintf(fp,%dn,num); fprintf(fp,%sn,time);fprintf(fp,%sn,name);fprintf(fp,%sn,repair_factory);fprintf(fp,%fn,repair_cost);fprintf(fp,%sn,person); fflush(fp); fclose(fp); printf(记录成功!); break; case 2: int t = 0; printf(请输入查找编号:); scanf(%d,&num); int rnum; FILE *fp = fopen(myfile.txt,r); while(!feof(fp) fscanf(fp,%dn,&rnum); fscanf(fp,%sn,&time);fscanf(fp,%sn,&name); fscanf(fp,%sn,&repair_factory); fscanf(fp,%fn,&repair_cost); fscanf(fp,%sn,&person); if(rnum=num) printf(编号:%dtt维修时间:%st设备名:%sn,rnum,time,name); printf(修理厂家:%st修理费:%ft责任人:%sn,repair_factory,repair_cost,person);t = 1; if(t=0) printf(查询错误,没有找到维修记录!); fclose(fp); break; default: printf(输入有误,操作失败!);输出设备信息列表:void printList(Equipment *head) if(head-next=NULL) printf(没有设备,请先录入设备!); return; Equipment *current = head-next; printf(=n); while(current)printf(t编号t名称t型号t规格t单价n); printf(t%dt%st%st%st%fn,current-num,current-name,current-model,current-spcifications,current-unit_price); printf(t数量t厂家tt生产日期t购买人 n);printf(t%dt%st%st%sn,current-number,current-factory,current-buy_date,current-purchaser); current = current-next; printf(=n);检查设备编号是否相同:int checkNum(Equipment *head, int num) if(head-next=NULL) return 0; Equipment *current = head-next; while(current) if(current-num = num) return 1; current = current-next; return 0;主函数: int main() Equipment *head = (Equipment*)malloc(sizeof(Equipment); head-next = NULL; int num = -1; while(num!=0) printf(欢迎进入实验室设备管理系统!n); printf(n.请输入您选择的操作(03):.n); printf(t1.设备信息录入t 2.维修记录管理tn); printf(t3.显示所有设备t0.退出n); printf(B4组设计n); scanf(%d,&num); int num1; system(cls); switch(num) case 0:break; case 1: addEquipment(head); break; case 2: repairEquipment(); break; case 3: printList(head); break; default: printf(输入有误,操作失败!); system(Pause);/*提示返回*/ system(cls);/*清屏*/ return 0;八、参考文献【1】王忠群,软件工程,合肥:中国科技大学出版社,2009.11【2】周鸣争,C语言程序设计教程,成都:电子科技大学出版社,2005.8【3】李龙澍 郑诚,软件工程课程设计,北京:机械工业出版社,2010.3【4】李伟波,软件工程学习与实践

温馨提示

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

评论

0/150

提交评论