书签 分享 收藏 举报 版权申诉 / 66
上传文档赚钱

类型Qt-5开发及实例-第17章-(综合实例)电子商城系统课件.pptx

  • 上传人(卖家):晟晟文业
  • 文档编号:5183064
  • 上传时间:2023-02-16
  • 格式:PPTX
  • 页数:66
  • 大小:4.61MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Qt-5开发及实例-第17章-(综合实例)电子商城系统课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    综合实例 Qt 开发 实例 17 综合 电子商城 系统 课件
    资源描述:

    1、第第17章章 【综合实例】电子商城系统【综合实例】电子商城系统商品管理系统功能需求商品管理系统功能需求电子商城商品管理系统的主要功能如下:(1)管理员口令登录,密码采用MD5加密算法封装验证。(2)浏览库存商品信息,采用Qt数据网格控件实现。(3)商品入库和清仓,用表单录入商品信息(可指定商品类别、进价、售价、入库数量等,还可上传商品样照)。(4)预售订单功能。选择指定数量的库存商品出售,系统自动计算出应付款总金额并显示销售清单,用户一次可预售多种商品,然后统一下订单。商品管理系统功能需求商品管理系统功能需求0101登登 录录 功功 能能登登 录录 功功 能能初始启动程序,显示登录界面(如图1

    2、7.1所示)。输入管理员账号及口令,单击“登录”按钮执行验证,口令用Qt内置的MD5算法做加密处理后先存于MySQL数据库中,若验证不通过则弹出警告提示框。0202新品入库功能新品入库功能新品入库功能新品入库功能在“新品入库”页上可看到全部库存的商品信息(商品名称、进价、售价和库存量),用户可输入(或选择)新品信息,将其录入系统中;也可选择库中已有的商品执行清仓操作,如图17.2所示。0303预售订单功能预售订单功能预售订单功能预售订单功能在“预售订单”页上,用户从左边表单下拉列表中选择要预售的商品类别和名称,表单会自动联动显示出该商品的单价、库存、照片,并根据用户所指定的售出数量算出总价,如

    3、图17.3所示。第第17章章 【综合实例】电子商城系统【综合实例】电子商城系统项目开发准备项目开发准备0101项项 目目 配配 置置项目配置项目配置(1)创建Qt桌面应用程序项目,项目名称为“eMarket”。创建完成在Qt Creator开发环境中单击左侧栏的 按钮切换至项目配置模式,如图17.4所示。(2)修改项目的.pro配置文件,在其中添加配置项。配置文件eMarket.pro内容如下(加黑处为需要修改添加的地方)。0202数据库准备数据库准备1创建数据库创建数据库2设计表设计表3创建视图创建视图数据库准备数据库准备1创建数据库创建数据库在MySQL中创建数据库,名称为emarket,

    4、其中建立5个表,分别为category表(商品类别表)、commodity表(商品表)、member表(会员表)、orders表(订单表)和orderitems表(订单项表)。2设计表设计表(1)表结构设计对以上建好的各表设计其表结构字段属性如下。category表设计见表17.1。列 名类 型长 度允 许 空 值说 明CategoryIDint6否商品类别编号,主键,自动递增Namechar16否商品类别名称数据库准备数据库准备commodity表设计见表17.2。列 名类 型长 度允 许 空 值说 明CommodityIDint6否商品编号,主键,自动递增CategoryIDint6否商品

    5、类别编号Namechar32否商品名称Pictureblob默认是商品图片InputPricefloat6,2位小数否商品购入价格(进价)OutputPricefloat6,2位小数否商品售出价格(单价)Amountint6否商品库存量数据库准备数据库准备member表设计见表17.3。列 名类 型长 度允 许 空 值说 明MemberIDchar16否会员账号,主键PassWordchar50否登录口令(以MD5加密存储)Namevarchar32否会员名Sexbit1否性别:1表示男,0表示女,默认1Emailvarchar32是电子邮箱Addressvarchar128是联系地址Phon

    6、echar16是联系电话RegisterDatedate默认否注册日期数据库准备数据库准备orders表设计见表17.4。列 名类 型长 度允 许 空 值说 明OrderIDint6否订单编号,主键,自动递增MemberIDchar16否会员账号PaySumfloat6,2位小数是付款总金额PayWayvarchar32是付款方式OTimedatetime默认是下单日期时间orderitems表设计见表17.5。列 名类 型长 度允 许 空 值说 明OrderIDint6否订单编号,主键CommodityIDint6否商品编号,主键Countint11否数量Affirmbit1否是否确认:0没

    7、有确认,1确认,默认0SendGoodsbit1否是否发货:0没有发货,1发货,默认0数据库准备数据库准备(2)外键关联设计好表结构之后,为表之间建立外键关联。本例要在commodity、orders和orderitems表上建立4个外键关联。commodity表外键CategoryID引用category表主键,在Navicat for MySQL数据库可视化工具的commodity表设计窗口中选择“外键”选项卡,如图17.5所示设置即可。数据库准备数据库准备 orders表外键MemberID引用member表主键,在orders表设计窗口中选择“外键”选项卡,按如图17.6所示进行设置即

    8、可。数据库准备数据库准备 orderitems表在该表上要设置两个外键:OrderID引用orders表的主键OrderID,CommodityID引用commodity表的主键CommodityID。在orderitems表设计窗口中选择“外键”选项卡,按如图17.7所示进行设置即可。数据库准备数据库准备(3)数据录入设计好表及其关联之后,往各表中预先录入一些数据记录以供后面测试运行程序之用,如图17.8图17.10所示。数据库准备数据库准备图17.10 member表数据为体现实际应用,本章实例所用的商品信息皆是从真实的电商网站选取,各商品的样品图片由本书随源代码提供,读者可预先编写以下代

    9、码将其录入数据库commodity表的Picture字段。数据库准备数据库准备3创建视图创建视图根据应用需要,本例要创建一个视图commodity_inf,用于显示商品的基本信息(商品名称、进价、售价和库存),创建视图的操作如下。展开数据库节点,右击“视图”“新建视图”,打开MySQL的视图创建工具,如图17.11所示。第第17章章 【综合实例】电子商城系统【综合实例】电子商城系统商品管理系统界面设计商品管理系统界面设计0101总总 体体 设设 计计总体设计总体设计在开发环境项目目录树状视图中,双击mainwindow.ui切换至可视化界面设计模式,如图17.12所示,在其上拖曳设计出商品管理

    10、系统的整个图形界面。0202“新品入库新品入库”页页“新品入库新品入库”页页“新品入库”页界面设计效果如图17.13所示。“新品入库”页界面上各控件的属性设置见表17.6。“新品入库新品入库”页页表17.6“新品入库”页界面上各控件的属性设置序 号名 称类 型属 性 设 置newCategoryComboBoxQComboBoxnewNameLineEditQLineEditnewInputPriceLineEditQLineEditnewOutputPriceLineEditQLineEditnewCountSpinBoxQSpinBoxalignment:水平的,AlignHCenter;

    11、value:1newUploadPushButtonQPushButtontext:上 传.newPictureLabelQLabelgeometry:宽度151,高度151;frameShape:Box;frameShadow:Sunken;text:空;scaledContents:勾选newPutinStorePushButtonQPushButtontext:入 库newClearancePushButtonQPushButtontext:清 仓commodityTableViewQTableViewhorizontalHeaderVisible:勾选;horizontalHeader

    12、DefaultSectionSize:120;horizontalHeaderMinimumSectionSize:25;horizontalHeaderStretchLastSection:勾选;verticalHeaderVisible:取消勾选0303“预售订单预售订单”页页“预售订单预售订单”页页“预售订单”页界面设计效果如图17.14所示。“预售订单”页界面上各个控件的属性设置见表17.7。“预售订单预售订单”页页表17.7“预售订单”页界面上各控件的属性设置序 号名 称类 型属 性 设 置preCategoryComboBoxQComboBoxpreNameComboBoxQCom

    13、boBoxpreOutputPriceLabelQLabelframeShape:Box;frameShadow:Sunken;text:空preAmountLabelQLabelframeShape:Box;frameShadow:Sunken;text:空preCountSpinBoxQSpinBoxalignment:水平的,AlignHCenter;value:1preTotalLabelQLabelframeShape:Box;frameShadow:Sunken;text:空prePictureLabelQLabelgeometry:宽度151,高度151;frameShape:B

    14、ox;frameShadow:Sunken;text:空;scaledContents:勾选preSellPushButtonQPushButtontext:出 售prePlaceOrderPushButtonQPushButtonenabled:取消勾选;text:下 单sellListWidgetQListWidgetgeometry:宽度441,高度3110404登登 录录 窗窗 口口1创建步骤创建步骤2窗口设计窗口设计1创建步骤创建步骤(1)右击项目名,选择“添加新文件”菜单项,弹出“新建文件”对话框,如图17.15所示,选择模板“Qt”“Qt设计师界面类”,单击“Choose.”按钮

    15、。1创建步骤创建步骤(2)在“Qt设计器界面类”对话框中,选择界面模板为“Dialog without Buttons”,如图17.16所示,单击“下一步”按钮。1创建步骤创建步骤(3)在导航页上,将登录窗口所对应的类名命名为“LoginDialog”,如图17.17所示,单击“下一步”按钮。1创建步骤创建步骤(4)在“项目管理”页可看到即将添加到项目中的源文件名,确认无误后,单击“完成”按钮,如图17.18所示。2窗口设计窗口设计新添加的登录窗口可以像程序主窗体一样在可视化设计器中进行设计,我们向其中拖入若干控件,最终效果如图17.19所示,为便于指示,我们对这些控件也加了、,数字标注。2窗

    16、口设计窗口设计登录窗口界面上各控件的属性设置见表17.8。序 号名 称类 型属 性 设 置label_3QLabeltext:欢 迎 进 入 电 子 商 城;font:微软雅黑,16;alignment:水平的,AlignHCenterlabelQLabeltext:管 理 员:;font:微软雅黑,12adminLineEditQLineEditfont:微软雅黑,14;text:b02020622label_2QLabeltext:口 令:;font:微软雅黑,12pwdLineEditQLineEditfont:微软雅黑,14;text:空;echoMode:PasswordloginP

    17、ushButtonQPushButtonfont:微软雅黑,12;text:登 录exitPushButtonQPushButtonfont:微软雅黑,12;text:退 出第第17章章 【综合实例】电子商城系统【综合实例】电子商城系统商品管理系统功能实现商品管理系统功能实现0101登录功能实现登录功能实现登录功能实现登录功能实现登录功能实现在logindialog.h头文件和logindialog.cpp源文件中。首先,在logindialog.h头文件中声明变量和方法,完整代码。然后,在logindialog.cpp源文件中实现登录验证功能,完整代码。其中,其中,(a)Qstring pw

    18、dMd5=strToMd5(ui-pwdLineEdit-text();:由于从数据库中查出的口令字符串是已经过MD5加密的,故这里需要先使用自定义的MD5转换函数strToMd5()将用户输入的口令字符串转为MD5加密串后再与从数据库中查出的内容比较以验证。(b)qba=QCryptographicHash:hash(str.toLatin1(),QCryptographicHash:Md5);:Qt 5提供了QCryptographicHash类,该类实现了生成密码散列的方法,可用于生成二进制或文本数据的加密散列值。该类目前支持MD4、MD5、SHA-1、SHA-224、SHA-256、S

    19、HA-384和SHA-512等多种加密算法。0202主体程序框架主体程序框架主体程序框架主体程序框架(1)main.cpp它是整个系统的主启动文件,代码。其中,其中,(a)if(!createMySqlConn():createMySqlConn()是我们编写的一个连接后台数据库的方法,它返回true表示连接成功,返回false表示失败。程序在开始启动时就通过执行该方法来检查数据库连接是否就绪。若连接不成功,系统则通过启动MySQL服务进程的方式再尝试一次;若依旧连接不成功,则提示连接失败,交由用户检查排除故障。(b)if(logindlg.exec()=QDialog:Accepted):之

    20、前在登录对话框的实现中,若用户通过了口令验证则执行对话框类的“QDialog:accept();”方法,在这里判断对话框类的返回结果,即“QDialog:Accepted”表示验证通过。(2)mainwindow.h它是程序头文件,包含程序中用到的各个全局变量的定义、方法声明,完整的代码。(3)mainwindow.cpp它是本程序的主体源文件,其中包含各方法功能的具体实现代码,框架。0303界面初始化功能实现界面初始化功能实现界面初始化功能实现界面初始化功能实现启动程序时,首先需要对界面显示的信息进行初始化,在窗体的构造方法MainWindow:MainWindow(QWidget*pare

    21、nt)中执行我们定义的初始化主窗体方法initMainWindow(),该方法的具体实现代码。本系统默认显示在前面的是“新品入库”页,但是对于“预售订单”页也同样会初始化其内容。上段代码中使用了loadPreCommodity()方法在预售订单页加载商品信息,该方法的实现代码如下:void MainWindow:loadPreCommodity()QSqlQueryModel*commodityNameModel=new QSqlQueryModel(this);/商品名称模型数据 commodityNameModel-setQuery(QString(select Name from com

    22、modity where CategoryID=(select CategoryID from category where Name=%1).arg(ui-preCategoryComboBox-currentText();ui-preNameComboBox-setModel(commodityNameModel);/商品名称列表加载(“预售订单”页)onPreNameComboBoxChange();界面初始化功能实现界面初始化功能实现这个方法只是在“预售订单”页加载了商品名称的列表,为了能对应显示出当前选中商品的其他信息项,在最后又调用了onPreNameComboBoxChange(

    23、)方法,其实现代码如下:void MainWindow:onPreNameComboBoxChange()QSqlQueryModel*preCommodityModel=new QSqlQueryModel(this);/商品表模型数据 QString name=ui-preNameComboBox-currentText();/当前选中的商品名 preCommodityModel-setQuery(select OutputPrice,Amount,Picture from commodity where Name=+name+);/从数据库中查出单价、库存、照片等信息 QModelInd

    24、ex index;index=preCommodityModel-index(0,0);/单价 ui-preOutputPriceLabel-setText(preCommodityModel-data(index).toString();index=preCommodityModel-index(0,1);/库存 ui-preAmountLabel-setText(preCommodityModel-data(index).toString();ui-preCountSpinBox-setMaximum(ui-preAmountLabel-text().toInt();/下面开始获取和展示照

    25、片 QPixmap photo;index=preCommodityModel-index(0,2);photo.loadFromData(preCommodityModel-data(index).toByteArray(),JPG);ui-prePictureLabel-setPixmap(photo);/计算总价 ui-preTotalLabel-setText(QString:number(ui-preOutputPriceLabel-text().toFloat()*ui-preCountSpinBox-value();界面初始化功能实现界面初始化功能实现这样做了之后,一开始启动程序

    26、直接切换至“预售订单”页,就可以看到某个默认显示的商品信息,如图17.20所示。界面初始化功能实现界面初始化功能实现在第一个“新品入库”页中,默认通过视图commodity_inf加载了一个库存所有商品信息的数据网格列表,该网格控件支持用户选择记录并与左侧的表单联动,通过网格控件的单击事件过程实现:void MainWindow:on_commodityTableView_clicked(const QModelIndex&index)onTableSelectChange(1);界面初始化功能实现界面初始化功能实现该事件过程向onTableSelectChange()方法传入一个参数(为当前

    27、选中的记录项的索引),再由该方法实际执行表单信息的更新,onTableSelectChange()方法的代码如下:void MainWindow:onTableSelectChange(int row)int r=1;/默认索引为1 if(row!=0)r=ui-commodityTableView-currentIndex().row();QModelIndex index;index=commodity_model-index(r,0);/名称 ui-newNameLineEdit-setText(commodity_model-data(index).toString();index=c

    28、ommodity_model-index(r,1);/进价 ui-newInputPriceLineEdit-setText(commodity_model-data(index).toString();index=commodity_model-index(r,2);/售价 ui-newOutputPriceLineEdit-setText(commodity_model-data(index).toString();showCommodityPhoto();/商品样照 QSqlQuery query;query.exec(QString(select Name from category

    29、where CategoryID=(select CategoryID from commodity where Name=%1).arg(ui-newNameLineEdit-text();query.next();ui-newCategoryComboBox-setCurrentText(query.value(0).toString();/实现类别联动界面初始化功能实现界面初始化功能实现以上代码中使用showCommodityPhoto()方法来显示商品样照,该方法的代码如下:void MainWindow:showCommodityPhoto()QPixmap photo;QModel

    30、Index index;QSqlQueryModel*pictureModel=new QSqlQueryModel(this);/商品样照模型数据 QString name=ui-newNameLineEdit-text();pictureModel-setQuery(select Picture from commodity where Name=+name+);index=pictureModel-index(0,0);photo.loadFromData(pictureModel-data(index).toByteArray(),JPG);/(a)ui-newPictureLabel

    31、-setPixmap(photo);其中,其中,(a)photo.loadFromData(pictureModel-data(index).toByteArray(),JPG);:这里将从MySQL数据库中读取的字节数组类型的照片数据载入为Qt的QPixmap对象,再将其设为界面上标签的属性即可在界面上显出数据库图片类型字段的内容。0404新品入库功能实现新品入库功能实现1入库操作入库操作2选样照选样照3清仓操作清仓操作1入库操作入库操作本系统的第一个“新品入库”页是供商品仓储管理员登记录入新进商品信息的,在左侧表单中填好(选择)新品信息后,单击“入库”按钮就可以将一件新的商品添加进MySQ

    32、L数据库中。“入库”按钮的单击事件过程代码。其中,其中,(a)query.exec(QString(select CategoryID from category where Name=%1).arg(ui-newCategoryComboBox-currentText();:入库新品的类别由管理员在界面“类别”列表中选择,为简单起见,本例所有商品的类别是固定的,预先录入数据库,暂不支持添加新类别。(b)query.exec(QString(insert into commodity(CategoryID,Name,Picture,InputPrice,OutputPrice,Amount)v

    33、alues(%1,%2,NULL,%3,%4,%5).arg(categoryid).arg(name).arg(inputprice).arg(outputprice).arg(count);:这是Qt向MySQL数据库执行插入操作SQL语句的典型写法,用“%”表示待定参数;以.arg传递参数值,一条SQL语句可支持多个.arg传参方法,请读者注意掌握这种书写格式。(c)myPicImg.save(&buffer,JPG);:这里使用一个QImage对象来存储要写入数据库的照片数据,它通过save()方法从QBuffer类型的缓存中载入照片数据,这也是Qt保存图片数据的通行方式。(d)que

    34、ry.addBindValue(var);:这里用SQL查询类对象的addBindValue()方法绑定照片数据作为参数传给SQL语句中“?”之处,这是Qt操作MySQL含参数SQL语句的另一种形式,也是通用的形式。2选样照选样照用户可从界面上传预先准备好的商品样照录入数据库,上传样照通过单击“上传.”按钮实现,其事件代码为:void MainWindow:on_newUploadPushButton_clicked()QString picturename=QFileDialog:getOpenFileName(this,选择商品图片,.,Image File(*.png*.jpg*.jpe

    35、g*.bmp);if(picturename.isEmpty()return;myPicImg.load(picturename);ui-newPictureLabel-setPixmap(QPixmap:fromImage(myPicImg);3清仓操作清仓操作清仓是入库的逆操作,当某件商品已售罄或不再需要时,可直接单击“清仓”按钮将其信息记录从数据库删除,此按钮的事件代码为:void MainWindow:on_newClearancePushButton_clicked()QSqlQuery query;query.exec(QString(delete from commodity w

    36、here Name=%1).arg(ui-new NameLineEdit-text();/删除商品记录 /刷新界面 ui-newNameLineEdit-setText();ui-newInputPriceLineEdit-setText();ui-newOutputPriceLineEdit-setText();ui-newCountSpinBox-setValue(1);ui-newPictureLabel-clear();commodity_model-setTable(commodity_inf);commodity_model-select();ui-commodityTableV

    37、iew-setModel(commodity_model);/刷新数据网格(“新品入库”页)0505预售订单功能实现预售订单功能实现1商品出售商品出售2下订单下订单1商品出售商品出售用户可以选择不同类别的不同商品,指定数量后出售。这里的“出售”准确地说只是预售,在未下单之前,用户还可以添加新的商品进订单。“出售”按钮的单击事件过程代码。其中,其中,(a)if(!myOrdered):本系统用一个全局变量myOrdered标识当前用户是否处于出售(已开始购买商品但尚未最后下单)状态,当用户第一次执行“出售”操作时,系统会向数据库中写入一条订单信息并自动生成订单号(字段自增机制),此时将myOrd

    38、ered置为true表示用户处于出售状态,只有在最后执行了下单操作后才会又将myOrdered置回false。(b)query.exec(QString(select OrderID from orders where OTime IS NULL);:只有执行过下单操作的订单才会在数据库中记录下单时间,并且程序逻辑只允许在完成当前订单下单之后才能开始一个新订单,因此,在任一时刻数据库中都至多只会有一个订单的下单时间字段为空,可以根据这一字段是否为空来检索出当前订单的订单号。2下订单下订单单击“下单”按钮来完成一个订单,其事件过程代码。其中,其中,(a)QSqlDatabase:database

    39、().commit();:由于下单的一系列操作是一个完整不可分割的集合(原子操作),为保证数据库中数据的完整一致性,只有在所有操作都成功完成的前提下才允许将修改提交到数据库,这里采用了MySQL的事务操作技术来保证一致性。第第17章章 【综合实例】电子商城系统【综合实例】电子商城系统商品管理系统运行演示商品管理系统运行演示0101登录电子商城登录电子商城登录电子商城登录电子商城启动程序,首先出现的是如图17.21所示的登录界面。为方便读者试运行,我们在数据库中已经预先创建了一个管理员的用户名“b02020622”,输入口令后单击“登录”按钮,出现商品管理系统主界面,如图17.22所示。0202

    40、新品入库和清仓新品入库和清仓新品入库和清仓新品入库和清仓在左侧表单中选择类别和填写事先准备好的某件商品的信息,并单击“上传.”按钮选择其样品照片,单击“入库”按钮就能将该商品的记录添加到数据库中,并可从右边数据网格列表中看到新加入的商品,如图17.23所示。0303预售下订单预售下订单预售下订单预售下订单切换到“预售订单”页,从左侧表单中选择一款商品后,单击“出售”按钮,右边区域会显示一条销售记录(包括售出时间、商品名、数量、单价和总价等信息),并弹出消息框提示该商品已加入订单,如图17.24所示。预售下订单预售下订单此时,“下单”按钮变为可用,用户可随时单击执行下单操作,也可以继续出售其他商品,并且在每次出售时还可指定该商品的出售数量,系统会自动算出总价,并将完整的销售记录添加在右边区域,如图17.25所示。预售下订单预售下订单出售完成后,单击“下单”按钮生成订单并写入MySQL数据库,系统弹出“下单成功!”消息提示,并在右区显示出订单信息,包括下单日期、订单号和应付款总额,其中应付款总额是此单所有销售记录的总价相加的和,如图17.26所示。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Qt-5开发及实例-第17章-(综合实例)电子商城系统课件.pptx
    链接地址:https://www.163wenku.com/p-5183064.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库