Java实验之货物进销管理系统

hfut_java-实验二 货物进销管理系统 注意:Inventory.txt中的quantity不应该小于0,如果对于某一种货物,库存的数量小于发货单的数量的话,系统应该停止处理发货单,并记录出错信息到Errors.txt。删除操作总是在所有的事物处理之后才被处理,以保证对于可能出现的同一种货物的发货单的操作能在删除之前被正确处理。1.程序首先打开并读取Inventory.txt中记录的所有库存记录,然后读取Transactions.txt,处理这个文件中包含的事务,记录发货记录到Shipping.txt,并记录错误信息到Errors.txt中。 阅读详情

                                                货物进销管理系统

一、实验目的

    1.掌握Java中文件的读写操作。

    2.学会使用Java提供的实用类(Vector, ArrayList)来完成特定的功能。

    3.掌握字符串类(String, StringBuffer)的使用。

    4.掌握用面向对象的方法分析和解决复杂问题。

 

二、实验原理

    1.使用java的文件读写操作读入货物的信。

    2.使用vector容器将货物的信息存储起来。

    3.创建多个类将信息分类。

    4.通过判断信息的类型建立相应的成员函数进行处理信息。

    5.将各个消息分类写入到新的文本中。

三、实验过程、步骤及原始记录(算法、原程序、测试结果,分析等)

    1、将各个货物的信息与种类读入并分类存储起来。

    2、创建多个类分别用来执行相应的操作。

    3、创建各个成员函数处理类从而将货物的信息进行处理。

    4、通过对应的信息编码分别进行发货、到货记录、库存、删除等操作。

    5、将各个处理后的信息分类存储到相应的文本文件中。

主代码:

 
import java.io.*;   
import java.util.Vector;   
     
public class Inventory{   
	//建立相应的vector容器为存储信息做准备。
    @SuppressWarnings("rawtypes")
	Vector inv = new Vector();        
    @SuppressWarnings("rawtypes")
	Vector receive = new Vector();       
    @SuppressWarnings("rawtypes")
	Vector offer = new Vector();       
    @SuppressWarnings("rawtypes")
	Vector AddNam = new Vector();         
    @SuppressWarnings("rawtypes")
	Vector DeleteNum = new Vector();     
    @SuppressWarnings("rawtypes")
	Vector shipping_v = new Vector();   
    @SuppressWarnings("rawtypes")
	Vector Err_v = new Vector();       
       
    @SuppressWarnings("unchecked")
	//将文件信息读入并存储在vector容器中。
	public void readInv(String filename){   
        try{   
            BufferedReader br = new BufferedReader(new FileReader(filename));   
            String s = null;   
            while((s=br.readLine()) != null){   
                String[] Name = s.split("\t");   
                inv.add(new Inv(Integer.parseInt(Name[0]),Integer.parseInt(Name[1]),Integer.parseInt(Name[2]),Name[3]));   
            }   
            br.close();   
        }   
        catch(Exception e){   
        }   
    }   
      
    @SuppressWarnings("unchecked")
	//根据读入的ORAD字母进行相应的操作。
	public void readTra(String filename){   
        try{   
            BufferedReader br = new BufferedReader(new FileReader(filename));   
            String s = null;   
            while((s=br.readLine()) != null){   
                String[] Name = s.split("\t");   
                char method = Name[0].charAt(0);   
                if(method=='O')   
                    offer.add(new Offer(Integer.parseInt(Name[1]), Integer.parseInt(Name[2]), Integer.parseInt(Name[3])));   
                else if(method=='R')   
                    receive.add(new Receive(Integer.parseInt(Name[1]), Integer.parseInt(Name[2])));   
                else if(method=='A')   
                    AddNam.add(new Add(Integer.parseInt(Name[1]), Integer.parseInt(Name[2]), Name[3]));   
                else if(method=='D')   
                    DeleteNum.add(new Delete(Integer.parseInt(Name[1])));   
            }   
            br.close();   
        }   
        catch(Exception e){   
        }   
    }   
       
    @SuppressWarnings("unchecked")
	//进行添加操作。
	public void dealAdd(){   
        for(int i=0; i<AddNam.size(); i++){   
            Inv Name = new Inv((Add)AddNam.get(i));   
            inv.add(Name);   
        }   
    }   
    //进行接受操作。   
    public void dealReceive(){   
        for(int i=0; i<receive.size(); i++){   
            for(int j=0; j<inv.size(); j++){   
                if( ((Receive)receive.get(i)).Index == ((Inv)inv.get(j)).Index )   
                    ((Inv)inv.get(j)).plus(((Receive)receive.get(i)).Next);   
            }   
        }   
    }   
       
    @SuppressWarnings("unchecked")
	//记录错误的货物信息。
	public void arrOffer(){   
        for(int i=0; i<offer.size(); i++)   
            for(int j=i+1; j<offer.size(); j++){   
                if( ((Offer)offer.get(i)).Index == ((Offer)offer.get(j)).Index ){   
                    if( ((Offer)offer.get(i)).Next > ((Offer)offer.get(j)).Next ){   
                        Offer Name = (Offer)offer.get(i);   
                        offer.set(i,(Offer)offer.get(j));   
                        offer.set(j,Name);   
                    }   
                }   
            }   
    }   
       
    @SuppressWarnings("unchecked")
	//记录货物信息。
	public void dealOffer(){   
        for(int i=0; i<offer.size(); i++)   
            for(int j=0; j<inv.size(); j++){   
                if( ((Offer)offer.get(i)).Index == ((Inv)inv.get(j)).Index ){   
                    if( ((Inv)inv.get(j)).Next >= ((Offer)offer.get(i)).Next ){   
                        ((Inv)inv.get(j)).cut( ((Offer)offer.get(i)).Next );   
                        shipping_v.add( (Offer)offer.get(i) );   
                    }   
                    else{   
                        Err Name = new Err( (Offer)offer.get(i) );   
                        Err_v.add(Name);   
                    }   
                }   
            }   
    }   
       
    @SuppressWarnings("unchecked")
	//记录需要删除的信息。
	public void dealDelete(){   
        for(int i=0; i<DeleteNum.size(); i++){   
            for(int j=0; j<inv.size(); j++){   
                if( ((Delete)DeleteNum.get(i)).Index == ((Inv)inv.get(j)).Index ){   
                    if(((Inv)inv.get(j)).Next == 0){   
                        inv.remove(j);   
                        break;   
                    }   
                    else{   
                        Err_v.add(new Err(0, ((Inv)inv.get(j)).Index, ((Inv)inv.get(j)).Next ));   
                        break;   
                    }   
                }   
            }   
        }   
               
    }   
       
    @SuppressWarnings("unchecked")
	public void arrshipping(){   
        for(int i=0; i<shipping_v.size(); i++)   
            for(int j=i+1; j<shipping_v.size(); j++){   
                if( ((Offer)shipping_v.get(i)).Customer == ((Offer)shipping_v.get(j)).Customer && ((Offer)shipping_v.get(i)).Index == ((Offer)shipping_v.get(j)).Index ){   
                    Offer Name = new Offer( ((Offer)shipping_v.get(i)).Index, ((Offer)shipping_v.get(i)).Next+((Offer)shipping_v.get(j)).Next, ((Offer)shipping_v.get(i)).Customer );   
                    shipping_v.set(i,Name);   
                    shipping_v.remove(j);   
                    j--;   
                }   
            }   
    }   
       
    @SuppressWarnings("unchecked")
	public void arrInv(){   
        for(int i=0; i<inv.size(); i++)   
            for(int j=i+1; j<inv.size(); j++){   
                if( ((Inv)inv.get(i)).Index > ((Inv)inv.get(j)).Index ){   
                    Inv Name = (Inv)inv.get(i);   
                    inv.set(i,(Inv)inv.get(j));   
                    inv.set(j,Name);   
                }   
            }   
    }   
    //将信息保存在相应的文本中。 
    public void write(String filenames){   
        try{   
            String[] filename = filenames.split(" ");   
               
            BufferedWriter ibw = new BufferedWriter(new FileWriter(filename[0]));   
            BufferedWriter sbw = new BufferedWriter(new FileWriter(filename[1]));   
            BufferedWriter ebw = new BufferedWriter(new FileWriter(filename[2]));   
               
            for(int i=0; i<inv.size(); i++){   
                Inv Name = (Inv)inv.get(i);   
                String s = Name.Index +"\t"+ Name.Next +"\t"+ Name.Last +"\t"+ Name.Message;   
                ibw.write(s);   ibw.newLine();   
            }   
               
            for(int i=0; i<shipping_v.size(); i++){   
                Offer Name = (Offer)shipping_v.get(i);   
                String s = Name.Customer +"\t"+ Name.Index +"\t"+ Name.Next;   
                sbw.write(s);   sbw.newLine();   
            }   
               
            for(int i=0; i<Err_v.size(); i++){   
                Err Name = (Err)Err_v.get(i);   
                String s = Name.Customer +"\t"+ Name.Index +"\t"+ Name.Next;   
                ebw.write(s);   ebw.newLine();   
            }   
            ibw.close();   
            sbw.close();   
            ebw.close();   
        }   
        catch(Exception e){   
        }   
    }   
       
    public static void main(String[] arg){   
        Inventory inventory = new Inventory();  
		//读入两个文件的信息。
        inventory.readInv("Inventory.txt"); 
        inventory.readTra("Transactions.txt");  
		//根据读入的信息分别进行添加接受删除操作。
        inventory.dealAdd();   
        inventory.dealReceive();   
        inventory.arrOffer();  
        inventory.dealOffer();  
        inventory.dealDelete(); 
        inventory.arrshipping();   
        inventory.arrInv(); 
		//将信息保存在相应的文本中。
        inventory.write("NewInventory.txt shipping.txt Errors.txt");   
    }   
}
//定义主货物类以及添加减少操作。
class Inv{   
    int Index;   
    int Next;   
    int Last;   
    String Message;    
    Inv(int i,int q, int s, String d){   
        Index = i;   
        Next = q;   
        Last = s;   
        Message = d;   
    }   
    Inv(Add Name){   
        Index = Name.Index;   
        Next = 0;   
        Last = Name.Last;   
        Message = Name.Message;   
    }   
    public void plus(int q){    
        Next += q;   
    }   
    public void cut(int q){     
        Next -= q;   
    }   
}   
   
//定义接受类。
class Receive{   
    int Index;   
    int Next;   
    Receive(int i, int q){   
        Index = i;   
        Next = q;   
    }   
}   
//定义货物类。   
class Offer{   
    int Index;   
    int Next;   
    int Customer;   
    Offer(int i, int q, int c){   
        Index = i;   
        Next = q;   
        Customer = c;   
    }   
}   
//定义添加类。
class Add{   
    int Index;   
    int Last;   
    String Message;   
    Add(int i, int s, String d){   
        Index = i;   
        Last = s;   
        Message = d;   
    }   
}   
//定义删除类。   
class Delete{   
    int Index;   
    Delete(int i){   
        Index = i;   
    }   
}   
//定义错误信息类。
class Err{   
    int Customer;   
    int Index;   
    int Next;   
    Err(int c, int i, int q){   
        Customer = c;   
        Index = i;   
        Next = q;   
    }   
    Err(Offer o){   
        Customer = o.Customer;   
        Index = o.Index;   
        Next = o.Next;   
    }   
}   
 

Inventory.txt:

17	42	6	Widget,blue
1234	0	4	Whatsit
123123	999999	98	Doohicky

Transactions.txt:

O	123123	1000	9
O	17	36	8
O	17	12	4
R	123123	1
D	1234	
A	5	4	Thingy



HFUT-Java实验-货物进销管理系统 基于Java的简单货物进销管理系统 阅读详情

相关推荐

合工大Java 实验二:货物进销管理系统

本文分享了基于Java面向对象编程和IO流技术实现的货物进销存管理系统实验。系统通过读取Inventory.txt初始库存和Transactions.txt事务记录,按照A(新增)→R(入库)→O(发货)→D(删除)的优先级处理事务,并实现了发货记录合并、库存不足错误记录等功能。核心设计包括Goods货物实体类、Process事务实体类和Inventory主业务类,后者封装了文件读写、事务处理等核心逻辑。最终输出Shipping.txt发货记录、Errors.txt错误日志和NewInventory.txt

fwh6666的博客 102

java关于如何制作商城库存清单程序设计案例的个人笔记

商城库存清单程序设计案例 根据java基础案例教程书作的笔记。 学习时间2021/5/6 21:15 【任务介绍】: 1.任务描述 编写一个模拟商城库存清单的程序,打印出库存中每种商品的详细信息以及所有商品的汇总信息。每种商品的详细信息包括品牌型号、尺寸、价格、配置和库存数,所有商品的汇总信息包括总库存数和库存商品总金额。 2.运行结果图 实现思路 (1)如图可知,可将清单分解为3部分(清单顶部、清单中部、清单底部) (2)清单顶部为固定的数据,直接打印即可 (3)清单中部为商品,为变化的数据,需要

Blue54的博客 3470

货物进销管理系统完整版.

货物进出管理系统完整版,自己编的请大家多多指教!

商品库存清单案例java_JAVA实现简单的商城库存清单

练习目标与收获分析任务实现的逻辑思路使用算术运算符进行运算操作使用赋值运算符进行赋值操作掌握JAVA中的变量和运算的知识点/** 名 称:电脑商城库存清单* 实现操作:统计各类品牌电脑库存及所有品牌电脑价值总额* 时 间:2019年6月29日*/package computermall;public class StreList {public static void main(Str...

weixin_28717647的博客 1588

基于java的货物进销管理系统

基于java的货物进销管理系统 1.掌握Java中文件的读写操作。 2.学会使用Java提供的实用类(Vector, ArrayList)来完成特定的功能。 3.掌握字符串类(String, StringBuffer)的使用。 4.掌握用面向对象的方法分析和解决复杂问题。 编写一个Inventory.java完成以下功能(没有学过Java文件处理之前,各位同学可以使用硬编码将数据放进两个Vector变量里。等学过Java文件处理之后,再补充数据文件读取部分): 1.程序首先打开并读取Inventory.txt中记录的所有库存记录,然后读取Transactions.txt,处理这个文件中包含的事务,记录发货记录到Sh

合工大java程序设计实验,货物管理系统

合工大java程序设计实验,实现货物管理机制,包含三个部分,需要建立文件存储货物信息,从文件读入处理货物信息

java读取大文件并添加入库,按行读取

文中流程有注释 public static void main(String[] args) { //文件地址(绝对路径) String Path = "D:\\tools\\products.json"; BufferedReader reader = null; //读取数据拼接字符串 String laststr...

weixin_42171955的博客 4985

JAVA货物管理系统

一个完整的系统(本人对自己以前发布的软件进行了扩充),功能全面,语言为JAVA,数据库为DERBY(内嵌式使用),无需安装数据库,开发工具为ECLIPSE(3.3),可直接运行(JRE需要1.6版本),没有加密包,可以反编译看源代码,做毕业设计和初学JAVA的朋友可以参考一下,希望有所帮助,也可以直接使用,初试用户名及密码light,超级用户及密码sys

Java实验二 货物进销管理系统【简单易懂】

这一版的构建完思路之后作业写的非常顺,在容器的使用上比较讨巧思路比较简单,希望看完之后能够有所帮助。

m0_62760838的博客 6219

基于Dify Agent构建智能客服:攻克知识库查询、多轮对话、安全鉴权与人机协同

基于Dify Agent构建智能客服,并将知识库等核心能力工具化,再通过Chatflow进行流程编排,是一种强大且灵活的策略。它不仅解决了当前AI客服面临的诸多核心挑战,也为未来的功能扩展和智能化升级打下了坚实的基础。希望本文能为您在构建高效、智能的AI客服系统之路上提供有益的参考!dify实验室基于LLMOps平台-Dify的一站式学习平台。包含不限于:Dify工作流案例、DSL文件分享、模型接入、Dify交流讨论等各类资源分享。关注我,获取Dify相关资源(DSL、token、交流群等)。

同名公众号:dify实验室 3742

【实战指南】Jaspersoft Studio + JasperReports:从零构建企业级PDF报表

本文详细介绍了如何使用Jaspersoft Studio和JasperReports从零构建企业级PDF报表。通过可视化设计、数据连接、模板设计到最终输出的全链路支持,这套组合方案显著降低了报表开发的维护成本。文章还提供了开发环境搭建、中文乱码解决方案、Java集成代码及性能优化技巧,适合需要高效生成复杂PDF报表的开发者。

weixin_42666036的博客 246

【Java作业】实验二 货物进销管理系统(运行成功完整代码

实验目的 1.掌握Java中文件的读写操作。 2.学会使用Java提供的实用类(Vector, ArrayList)来完成特定的功能。 3.掌握字符串类(String, StringBuffer)的使用。 4.掌握用面向对象的方法分析和解决复杂问题。 二.实验内容 编写一个Inventory.java完成以下功能: 1.程序首先打开并读取Inventory.txt中记录的所有库存记录,然后读取Transactions.txt,处理这个文件中包含的事务,记录发货记录到Shipping.txt,并记录错误信息到

qq_41358574的博客 3154

西电计组实验一 存储器实验

计组实验报告 实验一 存储器实验——FPGA中LPM_ROM定制与读出实验 一.实验目的   1.掌握FPGA中lpm_ROM的设置,作为只读存储器ROM的工作特性和配置方法;   2.用文本编辑器编辑mif文件配置ROM,学习将程序代码以mif格式文件加载于lpm_ROM中;   3.在初始化存储器编辑窗口编辑mif文件配置ROM;   4.验证FPGA中mega_lpm_ROM的功能。 二.实验原理   ALTERA的FPGA中有许多可调用的LPM (Library Parameterized Modu

Polaris的博客 1万+

java货物进销管理系统_java实验 货物进销管理系统

实验二货物进销管理系统一.实验目的1.掌握Java中文件的读写操作。2.学会使用Java提供的实用类(Vector, ArrayList)来完成特定的功能。3.掌握字符串类(String, StringBuffer)的使用。4.掌握用面向对象的方法分析和解决复杂问题。二.实验内容编写一个Inventory.java完成以下功能(没有学过Java文件处理之前,各位同学可以使用硬编码将数据放进两个Ve...

weixin_39783426的博客 497

Elsevier投稿别再踩坑了!手把手教你搞定LaTeX模板和所有附件(附避坑清单)

本文详细解析Elsevier投稿全流程中的关键环节,特别是LaTeX模板的使用和系统提交的常见问题。从必备文件准备到LaTeX模板适配,再到投稿系统操作指南,提供全面的避坑清单和实用技巧,帮助科研工作者高效完成投稿,避免因格式错误或文件遗漏导致的退稿风险。

weixin_30915275的博客 551

【UE5 C++开发指南】从零配置Visual Studio 2022开发环境

本文详细指导如何从零开始为UE5 C++开发配置Visual Studio 2022环境。文章强调了VS2022与UE5的深度兼容性,并逐步讲解了社区版下载、核心工作负载(如“使用C++的游戏开发”)与组件安装、界面优化、专属工具设置以及首个C++项目的创建与验证流程,帮助开发者高效搭建专业开发环境。

weixin_29016865的博客 392

java实验 货物进销管理系统

实验二货物进销管理系统 一.实验目的 1.掌握Java中文件的读写操作。 2.学会使用Java提供的实用类(Vector, ArrayList)来完成特定的功能。 3.掌握字符串类(String, StringBuffer)的使用。 4.掌握用面向对象的方法分析和解决复杂问题。 二.实验...

lalala_HFUT的博客 6262

基于深度学习的生活垃圾检测与分类系统:YOLOv5、YOLOv6、YOLOv7与YOLOv8实现

本项目的目标是开发一个基于YOLO系列模型的生活垃圾检测与分类系统。数据集准备与标注:收集并标注生活垃圾图像数据集。模型训练:使用YOLOv5、YOLOv6、YOLOv7、YOLOv8等深度学习模型训练垃圾分类系统。UI界面设计:设计一个简洁的用户界面,支持图像或视频的上传与垃圾分类结果展示。实时垃圾检测与分类:通过摄像头进行实时垃圾检测和分类。结果展示与保存:展示检测结果,支持用户保存分类后的图像或视频。

YOLO 705

java货物进销管理系统_Java实验之货物进销管理系统

货物进销管理系统一、实验目的1.掌握Java中文件的读写操作。2.学会使用Java提供的实用类(Vector, ArrayList)来完成特定的功能。3.掌握字符串类(String, StringBuffer)的使用。4.掌握用面向对象的方法分析和解决复杂问题。二、实验原理1.使用java的文件读写操作读入货物的信。2.使用vector容器将货物的信息存储起来。3.创建多个类将信息分类。4.通过判...

weixin_30247915的博客 1348

Unreal5从入门到精通之如何录制360°VR全景视频

摘要:本文详细介绍了使用虚幻引擎(UE)生成360°全景视频的完整流程。首先需启用MovieRender Queue和Panoramic Capture插件,准备场景并设置相机序列。通过影片渲染队列选择8K分辨率输出PNG序列帧,利用ffmpeg工具转换为MP4格式,最终获得高精度全景视频。该方法适用于VR内容开发,能以较低性能消耗实现影院级画质,特别适合冥想类应用场景。教程涵盖从插件配置到后期合成的全链路操作,为开发者提供高效的全景内容生产解决方案。(150字)

TxNet 1402

什么是华为OD?怎么才能通过华为OD机试?华为OD机试怎么刷题?(2024最新华为OD机试E卷更新中)

华为OD是Outsourcing Dispacth模式,是华为和外企德科联合招聘的简称。目前华为大多数是OD招聘。OD模式也是华为提出的一种新的用工形式,每年都会从OD项目挑优秀员工转为正编。所有OD和正式员工一样对待,没有差别,部门平时开会、评审等活动都是一起参加的,是同薪同酬,都是由华为的HR直接定的薪资,看的是我们技术能力。华为是大企业,能到华为上班也是有能力的,每个部门都有好多职位,是金子,在哪都会发光。

KJ.JK 11万+

java实验 货物进销管理系统

一.实验目的 1.掌握Java中文件的读写操作。 2.学会使用Java提供的实用类(Vector, ArrayList)来完成特定的功能。 3.掌握字符串类(String, StringBuffer)的使用。 4.掌握用面向对象的方法分析和解决复杂问题。 二.实验内容 编写一个Inventory.java完成以下功能: 1.程序首先打开并读取Inventory.txt中记录的所有库存记录,然后读取Transactions.txt,处理这个文件中包含的事务,记录发货记录到Shipping.txt

qq_44299547的博客 1454

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

合工大 Java 实验三 - 货物进销管理系统

一、实验分析 整个题目难度不大,但由于其也算是一个有些复杂的系统(并且需求文件很凌乱),因此在理解题意上花了一点时间。 最后进行了梳理,整个项目需要做的事情如下: 0. 程序结构 共六个类: 1. 主类Main,用于封装main函数。 2. Inventory类,用于封装程序的业务逻辑。 3. 四个handler类,分别封装四种事务处理的函数。 Main类代码: package com.codesocean; import java.io.IOException; pub..

米糊的头发箱(码代码掉的头发都在这里了) 4019

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java实验二 货物进销管理系统

这是JAVA实验二。货物进销管理系统

m0_74399268的博客 682

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

合工大2022春Java实验二:货物进销管理系统

合工大2022年春季Java课程 实验二

m0_63254971的博客 5752

合工大2023秋Java实验二:货物进销管理系统

第一次写java,不知道写的对不对(如果题意没理解错的话,应该没啥问题),先把代码贴下面了,后面有需要可以再详细补充。**************程序仅供参考**************

weixin_56977133的博客 1600
上一篇: Java实验之基于GUI的网络通信程序设计
下一篇: 01字典树求异或最大值与最小值模板(带删除)
sortmin
博客等级 码龄9年 45粉丝 178原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值