商店管理系统源代码(十五)

#if !defined(AFX_COMMODITYINFO_H__D5B7CE7F_B4BB_4035_B642_960A7819A0D7__INCLUDED_)
#define AFX_COMMODITYINFO_H__D5B7CE7F_B4BB_4035_B642_960A7819A0D7__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// CommodityInfo.h : header file
//

/
// CCommodityInfo dialog

class CCommodityInfo : public CDialog
{
// Construction
public:
	CCommodityInfo(CWnd* pParent = NULL);   // standard constructor

// Dialog Data
	//{{AFX_DATA(CCommodityInfo)
	enum { IDD = IDD_COMMODITYINFO };
	CListCtrl	m_ctrlListMain;
	CString	m_strBarCode;
	CString	m_strClassify;
	CString	m_strCode;
	CString	m_strCommodityCode;
	int		m_iMaxNum;
	int		m_iMinNum;
	CString	m_strName;
	int		m_iNum;
	CString	m_strSpellCode;
	CString	m_strStandard;
	CString	m_strUnit;
	float	m_fltStockPrice;
	float	m_fltSalePrice;
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CCommodityInfo)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:

	// Generated message map functions
	//{{AFX_MSG(CCommodityInfo)
	virtual BOOL OnInitDialog();
	afx_msg void OnCommodityadd();
	afx_msg void OnUpdate();
	afx_msg void OnDel();
	afx_msg void OnClickListmain(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnClassifyfind();
	afx_msg void OnFind();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_COMMODITYINFO_H__D5B7CE7F_B4BB_4035_B642_960A7819A0D7__INCLUDED_)





// CommodityInfo.cpp : implementation file
//

#include "stdafx.h"
#include "SalesManagementSystem.h"
#include "CommodityInfo.h"
#include "ADOConn.h"
#include "DlgAll.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/
// CCommodityInfo dialog


CCommodityInfo::CCommodityInfo(CWnd* pParent /*=NULL*/)
	: CDialog(CCommodityInfo::IDD, pParent)
{
	//{{AFX_DATA_INIT(CCommodityInfo)
	m_strBarCode = _T("");
	m_strClassify = _T("");
	m_strCode = _T("");
	m_strCommodityCode = _T("");
	m_iMaxNum = 0;
	m_iMinNum = 0;
	m_strName = _T("");
	m_iNum = 0;
	m_strSpellCode = _T("");
	m_strStandard = _T("");
	m_strUnit = _T("");
	m_fltStockPrice = 0.0f;
	m_fltSalePrice = 0.0f;
	//}}AFX_DATA_INIT
}


void CCommodityInfo::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCommodityInfo)
	DDX_Control(pDX, IDC_LISTMAIN, m_ctrlListMain);
	DDX_Text(pDX, IDC_BARCODE, m_strBarCode);
	DDX_Text(pDX, IDC_CLASSIFY, m_strClassify);
	DDX_Text(pDX, IDC_CODE, m_strCode);
	DDX_Text(pDX, IDC_COMMODITYCODE, m_strCommodityCode);
	DDX_Text(pDX, IDC_MAXNUM, m_iMaxNum);
	DDX_Text(pDX, IDC_MINNUM, m_iMinNum);
	DDX_Text(pDX, IDC_NAME, m_strName);
	DDX_Text(pDX, IDC_NUM, m_iNum);
	DDX_Text(pDX, IDC_SPELLCODE, m_strSpellCode);
	DDX_Text(pDX, IDC_STANDARD, m_strStandard);
	DDX_Text(pDX, IDC_UNIT, m_strUnit);
	DDX_Text(pDX, IDC_STOCKPRICE, m_fltStockPrice);
	DDX_Text(pDX, IDC_SALEPRICE, m_fltSalePrice);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCommodityInfo, CDialog)
	//{{AFX_MSG_MAP(CCommodityInfo)
	ON_BN_CLICKED(IDC_COMMODITYADD, OnCommodityadd)
	ON_BN_CLICKED(IDC_UPDATE, OnUpdate)
	ON_BN_CLICKED(IDC_DEL, OnDel)
	ON_NOTIFY(NM_CLICK, IDC_LISTMAIN, OnClickListmain)
	ON_BN_CLICKED(IDC_CLASSIFYFIND, OnClassifyfind)
	ON_BN_CLICKED(IDC_FIND, OnFind)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/
// CCommodityInfo message handlers

BOOL CCommodityInfo::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	CADOConn adoCommodity;
	CString strSQL;
	
	strSQL = "SELECT CommodityInfo.*, StoreInfo.stockprice, ";
	strSQL = strSQL + "StoreInfo.saleprice, StoreInfo.num FROM CommodityInfo INNER JOIN StoreInfo ON ";
	strSQL = strSQL + "CommodityInfo.barcode = StoreInfo.barcode";
	adoCommodity.Open(strSQL);
	adoCommodity.InitList(&m_ctrlListMain);
	adoCommodity.FillList(&m_ctrlListMain);
	adoCommodity.ExitConnect();
	
	m_ctrlListMain.SetColumnWidth(1, 100);
	m_ctrlListMain.SetColumnWidth(4, 100);

	m_iMaxNum = 50;
	m_iMinNum = 10;
	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}


void CCommodityInfo::OnCommodityadd() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CString strTemp;
	m_ctrlListMain.InsertItem(0, m_strClassify);
	m_ctrlListMain.SetItemText(0, 1, m_strBarCode);
	m_ctrlListMain.SetItemText(0, 2, m_strCommodityCode);
	m_ctrlListMain.SetItemText(0, 3, m_strSpellCode);
	m_ctrlListMain.SetItemText(0, 4, m_strName);
	m_ctrlListMain.SetItemText(0, 5, m_strStandard);
	m_ctrlListMain.SetItemText(0, 6, m_strUnit);
	strTemp.Format(_T("%d"), m_iMaxNum);
	m_ctrlListMain.SetItemText(0, 7, strTemp);
	strTemp.Format(_T("%d"), m_iMinNum);
	m_ctrlListMain.SetItemText(0, 8, strTemp);
	strTemp.Format(_T("%f"), m_fltStockPrice);
	m_ctrlListMain.SetItemText(0, 9, strTemp);
	strTemp.Format(_T("%f"), m_fltSalePrice);
	m_ctrlListMain.SetItemText(0, 10, strTemp);
	strTemp.Format(_T("%d"), m_iNum);
	m_ctrlListMain.SetItemText(0, 11, strTemp);
	m_strClassify = "";
	m_strBarCode = "";
	m_strCommodityCode = "";
	m_strSpellCode = "";
	m_strName = "";
	m_strStandard = "";
	m_strUnit = "";
	m_iNum = 0;
	m_iMaxNum = 0;
	m_fltStockPrice = 0;
	m_iMinNum = 0;
	m_fltSalePrice = 0;
	UpdateData(FALSE);
}

void CCommodityInfo::OnUpdate() 
{
	// TODO: Add your control notification handler code here
	POSITION pos;
	int index;
	CString strSQL, strTemp;
	CADOConn adoCommodity;

	pos = m_ctrlListMain.GetFirstSelectedItemPosition();
	index = m_ctrlListMain.GetNextSelectedItem(pos);
	strSQL = "SELECT * FROM CommodityInfo WHERE CommodityInfo.barcode = '";
	strSQL = strSQL + m_ctrlListMain.GetItemText(index, 1) + "'";
	adoCommodity.Open(strSQL);
	if (adoCommodity.adoEOF())
	{
		strSQL = "INSERT INTO CommodityInfo VALUES ('";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 0) + "', '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 1) + "', '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 2) + "', '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 3) + "', '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 4) + "', '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 5) + "', '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 6) + "', '";
		strTemp.Format(_T("%d"), m_iMaxNum);
		strSQL = strSQL + strTemp + "', '";
		strTemp.Format(_T("%d"), m_iMinNum);
		strSQL = strSQL + strTemp + "')";

		adoCommodity.ExitConnect();
		adoCommodity.ExecuteSQL(strSQL);

		strSQL = "INSERT INTO StoreInfo VALUES ('";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 1) + "', '";
		strTemp.Format(_T("%0.2f"), m_fltStockPrice);
		strSQL = strSQL + strTemp + "', '";
		strTemp.Format(_T("%0.2f"), m_fltSalePrice);
		strSQL = strSQL + strTemp + "', '";
		strTemp.Format(_T("%d"), m_iNum);
		strSQL = strSQL + strTemp + "')";

		adoCommodity.ExecuteSQL(strSQL);
	}
	else
	{
		strSQL = "UPDATE CommodityInfo SET typecode = '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 0) + "', barcode = '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 1) + "', commoditycode = '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 2) + "', spellcode = '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 3) + "', name = '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 4) + "', standard = '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 5) + "', unit = '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 6) + "', maxnum = '";
		strTemp.Format(_T("%d"), m_iMaxNum);
		strSQL = strSQL + strTemp + "', minnum = '";
		strTemp.Format(_T("%d"), m_iMinNum);
		strSQL = strSQL + strTemp + "' WHERE barcode = '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 1) + "'";
		adoCommodity.ExitConnect();
		adoCommodity.ExecuteSQL(strSQL);

		strSQL = "UPDATE StoreInfo SET barcode = '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 1) + "', stockprice = '";
		strTemp.Format(_T("%0.2f"), m_fltStockPrice);
		strSQL = strSQL + strTemp + "', saleprice = '";
		strTemp.Format(_T("%0.2f"), m_fltSalePrice);
		strSQL = strSQL + strTemp + "', num = '";
		strTemp.Format(_T("%d"), m_iNum);
		strSQL = strSQL + strTemp + "' WHERE barcode = '";
		strSQL = strSQL + m_ctrlListMain.GetItemText(index, 1) + "'";
		adoCommodity.ExitConnect();
	}
}

void CCommodityInfo::OnDel() 
{
	// TODO: Add your control notification handler code here
	POSITION pos;
	int index;
	CADOConn adoCommodity;
	CString strSQL;
	
	pos = m_ctrlListMain.GetFirstSelectedItemPosition();
	index = m_ctrlListMain.GetNextSelectedItem(pos);
	strSQL = "DELETE * FROM CommodityInfo WHERE CommodityInfo.barcode ='";
	strSQL = strSQL + m_ctrlListMain.GetItemText(index, 1) + "'";
	adoCommodity.ExecuteSQL(strSQL);
	strSQL = "DELETE * FROM StoreInfo WHERE StoreInfo.barcode ='";
	strSQL = strSQL + m_ctrlListMain.GetItemText(index, 1) + "'";
	adoCommodity.ExecuteSQL(strSQL);
	m_ctrlListMain.DeleteItem(index);
}

void CCommodityInfo::OnClickListmain(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	POSITION pos;
	int index;

	pos = m_ctrlListMain.GetFirstSelectedItemPosition();
	index = m_ctrlListMain.GetNextSelectedItem(pos);
	
	m_strClassify = m_ctrlListMain.GetItemText(index, 0);
	m_strBarCode = m_ctrlListMain.GetItemText(index, 1);
	m_strCommodityCode = m_ctrlListMain.GetItemText(index, 2);
	m_strSpellCode = m_ctrlListMain.GetItemText(index, 3);
	m_strName = m_ctrlListMain.GetItemText(index, 4);
	m_strStandard = m_ctrlListMain.GetItemText(index, 5);
	m_strUnit = m_ctrlListMain.GetItemText(index, 6);
	m_iMaxNum = atoi(m_ctrlListMain.GetItemText(index, 7));
	m_iMinNum = atoi(m_ctrlListMain.GetItemText(index, 8));
	m_fltStockPrice = atof(m_ctrlListMain.GetItemText(index, 9));
	m_fltSalePrice = atof(m_ctrlListMain.GetItemText(index, 10));
	m_iNum = atoi(m_ctrlListMain.GetItemText(index, 11));
	UpdateData(FALSE);

	*pResult = 0;
}

void CCommodityInfo::OnClassifyfind() 
{
	// TODO: Add your control notification handler code here
	CDlgAll dlgAll;
	CString strSQL;

	strSQL = "SELECT * FROM CommodityType";
	dlgAll.strTitle = "商品基本分类信息";
	dlgAll.strSQL = strSQL;
	dlgAll.intKey = 0;

	if (dlgAll.DoModal() == IDOK)
	{
		m_strClassify = dlgAll.strKey;
		UpdateData(FALSE);
	}
}

void CCommodityInfo::OnFind() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	CADOConn adoFind;
	CDlgAll dlgAll;
	CString strSQL;
	
	strSQL = "SELECT CommodityInfo.barcode, CommodityInfo.name, CommodityInfo.standard, ";
	strSQL = strSQL + "CommodityInfo.unit, StoreInfo.saleprice, StoreInfo.num ";
	strSQL = strSQL + "FROM CommodityInfo INNER JOIN StoreInfo ON ";
	strSQL = strSQL + "CommodityInfo.barcode = StoreInfo.barcode WHERE CommodityInfo.barcode = '";
	strSQL = strSQL + m_strCode + "' OR CommodityInfo.commoditycode = '";
	strSQL = strSQL + m_strCode + "' OR CommodityInfo.spellcode = '";
	strSQL = strSQL + m_strCode + "'";
	dlgAll.strTitle = "商品基本信息";
	dlgAll.strSQL = strSQL;
	dlgAll.intKey = 0;

	if (dlgAll.DoModal() == IDOK)
	{
		strSQL = "SELECT CommodityInfo.*, StoreInfo.stockprice, StoreInfo.saleprice, StoreInfo.num FROM CommodityInfo INNER JOIN StoreInfo ON ";
		strSQL = strSQL + "CommodityInfo.barcode = StoreInfo.barcode WHERE CommodityInfo.barcode = '";
		strSQL = strSQL + dlgAll.strKey + "'";
		adoFind.Open(strSQL);
		adoFind.FillList(&m_ctrlListMain);
		m_ctrlListMain.SetItemText(0, 11, "1");
		
		UpdateData(FALSE);
	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
主代码在“后台管理”文件夹中 ---------------- 开源世界,你我更进步 ---------------- 程序开发:lc_mtt (网名:柠檬) CSDN博客:http://blog.csdn.net/lc_mtt/ 个人主页:http://products.3lsoft.com 个人邮箱:3lsoft@163.com 注:此代码禁止用于商业用途。有修改者发我一份,谢谢! ---------------- 开源世界,你我更进步 ---------------- 一,开源说明 这是一套如此完整的代码,它包括了一个软件开发过程中,从设计到实现的所有文档,资源以及完整源代码。也许许多人不清楚怎么以一个软件工程的思想去完成软件开发,这就是我发布所有源代码的目的。软件=文档+程序,这是许多人都知道的;履行这个思想,便是本套程序的开发守则。但由于这个课程设计的时间太短,才2周,有些地方做得比较马虎,或出现某些错误;但对大多数学习VB的朋友,还是有许多借鉴的地方的。 我不希望这套程序被某些朋友用于交差般地去应付他自己的课程设计,这样我会很生气;也不希望被用于一些异常的场合,这样我会很郁闷。感谢play78.com里面的demon给予我的帮助。 二,使用说明 您需要安装 MS SQL Server 2000 以及 Visual Basic 6.0 SP6 ,否则也许会有某些地方出现问题,甚至无法调试。另外,您还需要进行以下步骤,才能顺利地调试源代码: 1) 进入“数据新建”目录,运行程序 数据新建.exe。该程序提供了一个简单的方法去新建程序需要的数据库和测试数据。在程序中填写正确的SQL服务器信息即可。 2) 前台程序不是我开发的,是一个刚学习VB的同学开发的。我个人建议前台不用去看了,没有值得花费时间的地方。 3) 进入“后台管理”目录,先注册 XPMenu.ocx,否则代码运行时会发生错误哟。方法:运行 注册.bat 。调试的时候,必须在登陆界面设置 SQL 服务器地址,否则会连接不上,出现假死哟(因为没有加超时控制^_^)。其他的不再多说,学习过VB的朋友自然知道怎么办。 默认管理员帐号:admin 密码:admin 4) 文档里面有完整的需求说明书,详细设计说明书,测试文档等,另外附带有活动、时序图的源设计文件,需要 Power Designer 11 才能打开。 三,代码说明 大家也许留意到程序中的 FatCombo、FTextBox、XButton 和 XPButton。前3个是我原创的代码(绝对是原创),分别实现XP风格的Combo,TextBox,和Button。以前好像在某些地方发布过这些控件的源代码,但那些都是老版本了,这个程序集成了3个最新版本的XP风格控件,呵呵,应该能令大家满意了吧。最后一个 XPButton 是网上流行的XP按钮,不过遗憾是这个按钮的代码太多了,功能太强大了,好像有点杀鸡用牛刀的感觉,只是一直没有找到可以代替的。另外,朋友也许会问为什么没有见到 XPMenu.ocx 的源代码,我回答是没有必要。该 XPMenu.ocx 也是网上来的,很流行的HookMenu,但居然不支持MDI窗体(无法显示图标),实在令人失望。 这个代码完整的实现了 Office XP 风格界面,虽然许多地方都是模拟的,但往往最简单的方法就是最好的,反正个人感觉没有比这个更好的OXP界面风格了。最后宣传一下我的个人软件“音速启动(VStart)”,卖卖广告,不要砸我鸡蛋啊^_^~~ 四,后记 有什么问题也不要直接找我,上 http://www.play78.com/blog 看看吧,肯定有许多你想要的东西,它也有个群,不过不知道满员了没有。最后说说学习VB的方法,对于已经入门的朋友,多看看别人的代码,不管有多烦,总是能学到很多东西的。 lc_mtt 2005.9.14记
软件名称:电子商务购物网站自助建站管理系统sql超漂亮版 软件版本:正式版 建议分类:电子商务 联系EMAIL:aspcomcn@yahoo.com.cn 软件网站:http://www.wygk.cn/shopsql 演示网站:http://www.wygk.cn/shopsql 电信下载地址:http://www.wygk.cn/dow/shopsql.rar 软件容量:10000 KB 软件类型:简体中文/免费软件 联系方式:QQ:38306293,417586492,657248708 应用平台:Win9x/Me/NT/2000/XP/asp+access 界面预览:http://www.wygk.cn/dow/shopsql.jpg 软件介绍:后台管理: admin/login.asp 帐户/密码:admin/admin 电子商务购物网站自助建站管理系统sql超漂亮版,由致力于网络电子商务网站在线购物系统源码的http://www.wygk.cn/shopsql开发,助从事电子商务,网上销售购物的创业者成功。电脑,软件,网络,办公设备,笔记本电脑电子商务商城,专用配件,手机,通讯设备,卡,移动联通充值中心,IP长途,数码相机,摄像机,图形冲印,随身视听电子商务商城购物系统,音响,耳机,运动,健身,运动明星,乐器,户外、军品电子商务商城购物系统、旅游、机票,网络游戏虚拟商品交易区,电玩,动漫,Cosplay,周边,居家日用,装饰,文具,园艺,邮币,古董,字画,收藏,汽车,摩托,自行车,家庭装修,五金工具网上购物系统,在线购物系统,购物系统,安防报警,个性定制,淘宝卖家服务,珠宝首饰,流行饰品,珠宝配件购物软件,电子商务购物,电子商务商城购物,品牌手表,流行手表,眼镜,彩妆,香水,护肤,美体,女士箱包,鞋帽,配件,女装,女士精品,男装,服饰配件,家用电器电子商务网站商城购物,电子购物系统,购物车系统,保健器械,男士精品,ZIPPO,瑞士军刀,玩具,模型,卡通产品,书籍,杂志,报纸,宠物,宠物食品及用品asp购物系统,asp,虚拟购物系统,购物平台,音乐,影视,明星,娱乐,成人用品,避孕用品,情趣内衣购物系统下载,购物软件下载,网域高科电子商务。电子商务购物网站管理系统是基于WEB开发的大型购物系统。它以构建电子商务网站为目标,由前台购物、后台管理、在线支付三大部分组成。各大部分完美结合,都有着最为完善和强大的功能,最大限度的满足客户在线购物和网站管理员管理的需求。系统满足各个级别用户购建电子商务平台的需要。是构建各种大中小电子商务购物网站的首选系统!不需要专门编程,半天便能建立门户级专业电子商务购物网站。购物系统轻松管理维护,经济效率实实在在看得见。如不会本机调试本系统,请查看《IIS安装使用说明书》网络电子商务网站在线购物系统源码正式版前台功能栏目本系统包含的栏目功能有,最新商品,商品上架,商品推荐,最新新闻,商品分类,无限商品分级为同类系统特有,购物积分,虚拟币,预存款功能,关于我们,常见问题,购物专题,购物指南,购物帮助,订单查询,有问必答,购物系统公告,商品搜索,会员中心,购物车,购物收藏夹,我的订单,修改会员注册资料,商品品牌,站内投票,商品销售排行,关注排行,特价商品排行,商品排序可按时间,价格,修改等排列,合作伙伴,友情链接。各页面排版合理,简洁,又不失大方,广告图片分布在各个栏目,QQ在线咨询,最大程序的方便商家与顾客的即时沟通。同时支付非会员购购物,注册会员购物。支持多种在线支付,突破电子商务的交易限制.后台管理模块及功能有一、商品管理1、添加新的商品;2、查看修改商品;3、管理商品订单;4、管理商品评论;5、首页推荐商品;6、普通推荐商品;7、热销断货商品;二、用户管理1、前台用户管理;2、后台用户管理;3、用户登录记录;4、用户广播设置;5、VIP资格设置;6、管理会员等级;三、分类管理1、商品分类管理;2、商品属性管理;3、商品品牌管理;4、商品单位管理;四、信息管理1、添加站内新闻;2、新闻修改删除;3、有问必答;五、投票管理1、添加新的投票;2、查看修改投票;六、购物专题1、添加新的专题;2、查看修改专题;七、常规设置1、网站初始设置;2、网站高级设置;3、在线咨询面板;4、在线支付设置;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值