一、系统简要介绍

采用C++语言设计实现一个适合超市使用的进出货商品管理系统,实现商品的进货、销售、商品分类、营收管理、订单管理、管理员等功能。

image-20211119013042724

二、系统分层数据流图

img

image-20211119013129952

image-20211119013142826

image-20211119013155587

image-20211119013207495

三、系统结构图

image-20211119013225689

image-20211119013239340

image-20211119013250090

四、数据库设计

根据商品管理系统的概念设计,采用关系模型设计。系统共有3个实体对象表,并使用存储过程、函数和触发器等内容对数据库进行操作。分别是users表、goods表、indent表。

根据用户的属性,users表共包含四个字段,其字段名、属性、类型和约束如下表。用户对象中,用户编号id为主键isAdmin字段表示改用户是否是管理员,只能取两个值,1表示是管理员,0表示普通顾客。

字段名属性类型约束
Id用户编号intPrimary key
username用户名Varchar(30)not null
password密码Varchar(30)not null
isAdmin是否管理员intCheck(isAdmin in(0,1))

根据商品的属性,goods商品信息表包含9个字段,其字段名、属性、类型和约束如下表。商品编号id作为主键。

字段名属性类型约束
id商品编号IntPrimary key
name商品名称varchar(255)not null
brand生产厂商varchar(255)not null
purprice进价double(10)not null
saleprice售价double(10)not null
type商品类型varchar(255)not null
num商品库存intnot null
salesnum商品销量intnot null
date入库时间varchar(255)not null

根据订单的属性,indent订单信息表共包含7个字段,其字段名、属性、类型和约束如下表。其中订单编号id作为主键,商品编号和商品名称只能取goods表中已有的数据。username只能取users表中的数据。

字段名属性类型约束
id订单编号varchar(20)Primary key
username下单人姓名varchar(255)not null
goodid商品编号intnot null
goodname商品名称varchar(255)not null
price商品售价double(10)not null
num购买数量intnot null
sum_price订单总价double(20)not null
五、关键代码展示
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<Windows.h>
#include<WinSock.h>
#include<mysql.h>
#include<string.h>
#include<conio.h>
#include<ctime>
#include<stdio.h>
#include<iomanip>
#include "menu.h"

using namespace std;
#pragma comment(lib,"libmysql.lib")
#pragma comment(lib,"wsock32.lib")
MYSQL* mysql = new MYSQL; //mysql连接  
MYSQL_FIELD* fd;    //字段列数组  
char field[32][32];    //存字段名二维数组  
MYSQL_RES* res; //这个结构代表返回行的一个查询结果集  
MYSQL_ROW column; //一个行数据的类型安全(type-safe)的表示,表示数据行的列  
char query[150]; //查询语句  
//定义用户的用户名和密码
string username = "";
string password = "";
// 定义是否是管理员的标志,默认不是
bool isAdmin = false;
//定义商品类型
enum GoodsType//商品类别
{
    Food = 1,  //食品
    Cosmetic,  //化妆品
    Commodity,  //日用品
    Drink,  //饮料
    Stationery  //文具
};

//商品基本类型
struct Goods//商品基本信息
{
    int code;//商品编号
    string name;//商品名称
    string brand;//生产厂家
    double pur_price;//商品售价
    double price;//商品售价
    int num;//商品库存
    int salenum;//销量
    string type;//商品类别
    string date;//入库时间
};

//商品订单基本类型
struct OrderGoods//商品基本信息
{
    string code;//订单编号
    string username; //下单人
    string goodname; //商品名称
    int goodid;//商品编号
    int num; //该商品的购买数量
    double price;//售价
    double sum_mony;//单品总价
    int salesum;//商品销量,更新销量时要用到
    string date;//入库时间
    double sum_price;//订单总价
};


//连接数据库的函数
bool ConnectDatabase();
//顾客的主菜单,主要是展示商品,购买商品等功能
void CustomerMenu();
//仓库管理员的主菜单
void AdministratorMenu();
//选择登录角色
void ChooseLoginCharacter(string &,bool &);
//顾客登录页面
string CustormerLogin(void);
//顾客选择操作的主函数
void CustormerOperation();
//顾客浏览商品函数
void BrowseGoods();
//顾客购买商品函数
void BuyGoods();

//管理员的登录页面
string AdministratorLogin(void);
//管理员选择操作的主函数
void AdministratorOperation();
//管理员添加商品的函数
void AddGoodsInfo();
//管理员修改商品信息的函数
void EditGoodsInfo();
//管理员删除商品的函数
void DeleteGoodsInfo();
//管理员查询商品的主函数
void SelectGoodsMain();
//管理员选择订单操作方式函数
void SelectOrderOperation();
//管理员查询订单函数
void SelectOrder();
//管理员删除订单函数
void DeleteOrder();
//选择查询方式的函数
void SelectMethod();
//查询商品通过id
void SelectGoodsById();
//查询商品通过商品名称
void SelectGoodsByName();
//查询商品通过生产厂商
void SelectGoodsByBrand();
//查询商品通过商品类型
void SelectGoodsByType();
//查询商品通过价格排序
void SelectGoodsByPriceSort();
//查询商品通过销量排序
void SelectGoodsBySaleSort();
//营收统计菜单
void RevenueMenu();
//选择营收统计方式
void SelectRevenue();
//单个商品营收统计
void RevenueById();
//所有商品营收统计
void RevenueAll();
//管理员订单管理函数
void OrderManagementMenu();
//修改用户的密码函数
void ChangePassword();

部分函数:

image-20211119013716642

image-20211119013728043

image-20211119013738060

image-20211119013746848

六、获取代码

该项目已开源至GitHub,欢迎star。

https://github.com/weiyuexin/CMS

Logo

快速构建 Web 应用程序

更多推荐