c++编写的基于linux的socket程序,模拟简单的网购操作

一、工程目的:

做一个简单微商平台,考研TCP/IP编程和插件式编程的能力。
要求:
1,两个服务器平台,分别销售不同类型的商品。
2,有基本的商品展示,购买收费等功能。
3,在一个服务器出现故障时,可以将自己的商品转到另一个服务器上。
4,服务器今后可能添加新的商品,需要代码为插件式,以便有良好的复用性。

二、工程内容:

代码结构如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

各个文件功能如下:
Commodity.h : 商品基类,虚类。
Beer.cpp Wine.cpp Lipstick.cpp Mask.cpp : 保存四种商品类,是commodity的继承,编译成动态链接库分别放在两个文件夹下。
Shop.h : 商店基类,虚类。
Shop1.h Shop2.h : 两个商店类,继承shop,分别读取两个文件夹下所有商品动态链接库,并提供商品展示服务show()和商品购买服务sell()。
Server1.cpp Server2.cpp :构建两台服务器,分别读取两个Shop文件,为客户提供服务。
Serializer.h : 序列化文件,当服务器需要转移商品至另外一条服务器时提供序列化和反序列化服务。
data1,data2 : 序列化时用于存取商品信息的文件。
两个动态链接库文件分别保存两台服务器的商品(alcohol-plugin : wine,beer cosmetic-plugin:lipstick,mask )
Client.cpp : 客户端,顾客可以在此输入想购买的商品和数目。

三、功能展示:

功能展示:
功能1:
平台需要支持业务双活,拟搭建S1、S2两台服务器,其中S1服务器主要业务为口红、面膜等化妆品商品的销售,S2服务器主要业务为红酒、啤酒等酒类商品的销售;

展示:
客户端:
在这里插入图片描述

两个服务器端:
在这里插入图片描述在这里插入图片描述

功能2:
支持客户在线选购商品和结算。
展示:
服务器端提示商品购买情况:
服务器二:
在这里插入图片描述
客户端根据服务器端的提示输入购买的物品id和数目:
在这里插入图片描述
服务器一操作同上:
在这里插入图片描述
客户端:
在这里插入图片描述

客户端输入购买id为0时结束购买,关闭客户端和服务器端:
在这里插入图片描述

功能3:
当S1或S2其中一台服务器异常时,其业务可以快速迁移至另一台正常的服务器,保持业务不中断;

展示:
服务器1,2退出时,提供将服务器功能(及所有商品)转移至另一台服务器的操作,输入1进行转移,输入2进行撤销:
输入1转移后,打开服务器2,此时进行购买可以购买所有商品:
在这里插入图片描述

依次购买:
在这里插入图片描述
在这里插入图片描述

退出服务器2,重新登陆服务器1,撤销功能:
在这里插入图片描述

再次登陆服务器2,发现服务器1的商品已经撤销:
在这里插入图片描述

功能4:
根据业务发展,希望未来还可以快速、灵活的在该平台上支持辣条、豆腐干等休闲食品商品的销售业务;
程序的商品都是动态链接库的插件式编程,需要在服务器下增加新的商品时,只需要在新增辣条,豆腐干的cpp文件继承commodity,并放入对应shop的文件夹下即可,无需重新编译。

在这里插入图片描述

代码链接:
https://github.com/AlphaKasa/MyProjects/tree/c++%E7%BC%96%E5%86%99%E7%9A%84%E5%9F%BA%E4%BA%8Elinux%E7%9A%84socket%E7%A8%8B%E5%BA%8F%EF%BC%8C%E6%A8%A1%E6%8B%9F%E7%AE%80%E5%8D%95%E7%9A%84%E7%BD%91%E8%B4%AD%E6%93%8D%E4%BD%9C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c++网上购物系统(免积分下载)功能描述如下: 设计一个简易的网购系统,利用单链表来处理买家信息、卖家信息与商品信息,要求实现如下功能。 (1)初始化菜单 程序开始运行后显示菜单,要求菜单能完全展示本系统的功能:提示三种用户身份(买家、卖家、管理员),并输出每项身份的功能权限。尽力做到设计美观。 (2)选择用户身份权限 考虑到本系统有用户身份,需要提示用户输入来选择此时的身份是买家、卖家、还是管理员。 (3)买家查询商品 选择买家身份。查询需要购买的商品名称或者店铺名称,如果相应商品有库存,输出满足要求的商品信息。如果没有此商品或者库存为0,输出提示信息。 可输出全部商品信息,若当前没有商品,输出提示信息。 (4)买家购买商品 选择买家身份。买家首先输入自己的编号,而后输入要购买的商品,如果没有库存,提示请更换商品,如果有库存,买家信息中购买商品处增加此商品编号,商品文件中,商品库存减小一份。 (5)卖家发布商品 选择卖家身份。卖家首先输入自己的卖家编号,买家用户输入待增加的商品的编号,如果编号存在,则判断商品是否是该卖家所售,如果是,修改库存,如果不是,输出提示信息,如果编号不存在,逐项录入新增商品信息。 (6)卖家修改商品 选择卖家身份。卖家首先输入自己的卖家编号,输入自己要修改商品编号,若商品不存在或不是该买家所售卖,输出提示信息。如果商品存在,则提示选择要修改的内容,并输出修改后的此商品信息。 (7)卖家删除商品 选择卖家身份。卖家首先输入自己的卖家编号,输入自己要删除的商品编号,若编号不存在或不是该卖家所售,输出提示信息。如果商品存在,则删除该商品并提示删除成功。 (8)管理员删除买家信息、卖家信息 选择管理员身份后,选择管理员删除买家信息功能。输入要删除的买家的编号,如果买家存在,删除买家信息并提示;如果不存在,输出提示信息。 (9)保存信息到文件 选择管理员身份后,可将买家信息、卖家信息、商品信息分别保存到txt文件中。 (10)退出系统

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值