「C语言」超市收银管理系统

您所在的位置:网站首页 超市收款流程演示 「C语言」超市收银管理系统

「C语言」超市收银管理系统

2024-07-12 07:44| 来源: 网络整理| 查看: 265

「C语言」超市收银管理系统 1 问题简介1.1 收银功能1.2 增删商品信息1.3 设置折扣1.4 查询与显示1.5 积分兑换与抽奖(选做项)1.6 统计 2 核心代码2.1 结构体定义2.2 C语言文件流操作2.3 C语言增加数组长度2.4 抽奖(轮盘赌)

1 问题简介

设计项目名:超市收银管理系统 要求采用结构体数组存放商品数据,采用列表形式显示多行数据,界面显示的内容简明直观。标有“选做项”字样的功能,可以根据自己的能力选择是否完成,其他均为必做项。 项目功能说明:系统管理员对该系统具有最高权限,能进行商品的增删、折扣设置、查询、收银等操作。其中积分兑换与抽奖功能为选做项。主菜单如下:

----------------- 1、开始收银 2、增删商品 3、设置折扣 4、查询 5、积分兑换与抽奖(选做) 6、统计 0 退出系统 ----------------- 1.1 收银功能

导入商品信息(data.txt),显示商品编号和名称。操作流程:输入商品代号、购买数量进行收银,若购买某种商品的数量大于库存,则显示“库存不足”,反之,自动生成订单编号,并显示购买信息,并提示“是否继续购买”。最后输入金额结束本单收银。

1.2 增删商品信息

可以对导入的商品信息进行删除,或添加商品信息。 操作流程:输入商品编号→查询信息→显示查询结果→增或删操作→显示操作的结果,并更新商品文件信息,以便下次导入使用。 二级菜单:

---------------- 1 增加商品信息(选做) 2 删除商品信息 3 编辑商品信息 4 显示所有商品信息 0 返回主菜单 ---------------- 1.3 设置折扣

可以对导入的商品的折扣进行修改。 操作流程:输入商品编号→查询信息→显示查询结果→修改折扣→显示操作的结果,并更新商品文件信息,以便下次导入使用。

1.4 查询与显示

可按编号或商品名称查询商品信息,也能按订单编号查询订单详情。 二级菜单:

-------------------------------- 1 查询商品(按编号) 2 查询商品(按名称) 3 查询订单(按编号) 0 返回主菜单 -------------------------------- 1.5 积分兑换与抽奖(选做项)

该功能为选做项。导入会员积分信息,显示用户的积分值(购物花10元得1积分),可进行积分兑换成商品(1积分可当1元使用)或积分兑换抽奖(10积分换取1次抽奖机会,抽奖内容自定)。 xxx用户当期积分值:xxxx 可兑换x元的商品或兑换成x次抽奖

-------------- 1 积分兑换 2 积分抽奖 0 返回主菜单 -------------- 1.6 统计

统计功能包含以下3个功能,其中“3 统计销售量TOP3”为选做项

-------------- 1显示全部订单 2 统计总销售额 3 统计销售量TOP3(选做) 0 返回主菜单 -------------- 2 核心代码 2.1 结构体定义 商品类型 typedef struct { int id; char name[30]; // 商品名 char unit[5]; // 商品单位 double cost; // 成本 double price; // 商品价格 double discount; // 折扣 int stock; // 存量 int sale; // 销售量 } Product; 订单类型 typedef struct { char id[32]; int *product; // 购买商品id数组 int *num; // 购买商品数量数组 int size; double total; // 总价 double profit; // 本单利润 } Order; 会员类型 typedef struct { char id[16]; int memberPoint;//积分 } VIP; 2.2 C语言文件流操作

程序需要输入输出进行数据的存储,方便下次使用。 存储商品信息的文件格式:

2 商品代号 商品名称 单位 成本 售价 折扣 库存 销售额 1 抽纸 盒 4.00 5.20 0.90 956 44 2 牛奶 g 66.00 77.00 1.00 490 10

第一行记录商品种类数; 第二行记录数据所对应的含义; 以下每一行记录一种商品信息;

商品信息导入

// 导入商品 int importProduct(const char *path, Product *products) { FILE *fin = fopen(path, "r"); int num, i; char buf[1024]; if (fin == NULL) { return 1; } fgets(buf, 1024, fin);//先获取第一行,即商品种类数 num = atoi(buf);//atoi将 char* 转为 int i = 0; fgets(buf, 1024, fin);//读取第二行,即字段名称,但只需要读出将文件指针下移,不需要其他操作 while (fscanf(fin, "%d %s %s %lf %lf %lf %d %d", &products[i].id, products[i].name, products[i].unit, &products[i].cost, &products[i].price, &products[i].discount, &products[i].stock, &products[i].sale) != EOF)//判断文件指针是否到文件结尾,fscanf函数进行文件流的格式化输入 { ++i; } if (fclose(fin) == EOF)//关闭文件 { return 2; }; return 0; }

商品信息的导出

// 导出商品 int exportProduct(const char *path, Product *products, int num) { FILE *fout = fopen(path, "w"); if (fout == NULL) { return 1; } fprintf(fout, "%d\n", num);//按照上面的文件内容组成,这里先写入商品种类数 fprintf(fout, "商品代号 商品名称 单位 成本 售价 折扣 库存 销售额\n");//然后写入字段名 for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3