基于C语言的商店商品销售系统

一、设计的任务及要求

题目 13 结构数组的应用(可以自己设计功能)(管理类)
设计任务 模拟一个商店的商品销售管理系统(P209 例题 7-17)
设计要求 库存表数据录入;销售表数据录入;销售商品;库存表查询;销售表查询;退出

二、设计主要数据和函数介绍

数据或函数名称 表示或功能说明
goods_t 结构体,包含商品的名称,价格,数量
storage 结构体数组,库存表数据
sales_table 结构体数组,销售表数据
add_storage 进货功能,向库存表添加商品信息
add_sales 给货物添加账单,向销售表添加商品信息
show_storage 展示库存表数据
show_sales 展示销售表数据
sell 出售商品

三、设计的问题分析

该管理系统分为 5 个小问题,其中用户选择 1、2 时的功能相似,都是向表中添加信息,用户选择 4、5 时的功能也相似,都比较简单都是展示表的信息,当用户选择 3(出售商品)时,实现起来分为多个步骤,1.首先判断商品名称在库存表的有没有。2.判断库存表的商品数量是否大于 0。3 判断销售表中没有该商品。4 完成库存表商品数量-1,销售表商品数量 +1 的操作。

四、源程序代码及运行结果

运行结果:

我们连续选择两次 1,对库存表进行添加西红柿和土豆两个商品。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K1ZHp2v3-1654494131435)(https://www.writebug.com/myres/static/uploads/2022/6/5/a5d48cc75f68ace437380cc8267767a8.writebug)]

我们选择 4,进行查看库存库中的商品。通过结果可见我们发现了我们添加的西红柿和土豆。

我们选择 5,进行查看销售库中的商品,通过结果可见没有出售东西,或手动添加,可见销售库空空如也。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KjvrpzpB-1654494131436)(https://www.writebug.com/myres/static/uploads/2022/6/5/128c825e452ae5bdc523ec919a846ee1.writebug)]

我们选择 2,在销售表中录入西红柿的销售信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IdGgZ4bH-1654494131436)(https://www.writebug.com/myres/static/uploads/2022/6/5/b78cef5f494fdb34207f977a8f3b0b49.writebug)]

我们选择 3,出售一个土豆。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R8YBZfK0-1654494131437)(https://www.writebug.com/myres/static/uploads/2022/6/5/062ab109b2372d9d0935627c88d3a230.writebug)]

我们在选择 5,进行查看销售库中的商品,可以发现我们销售表中,有我们手动添加的西红柿的信息和出售土豆的信息。

我们在选择 4 对库存表中的商品进行查看,可见我们确实出售了一个土豆。

我们选择 6,最后成功的退出了系统。

程序源代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 1000 // 仓库中商品最多的种类

// 商品结构体
typedef struct goods_t{
    int count;
    double money;
    char * name;
}goods;

goods storage[N];
goods sales_table[N];
int storage_total = 0;
int salse_total;

void add_storage(){
    if(storage_total == N){
        printf("仓库种类已满,添加失败!");
    }else{
        goods t_goods;
        printf("请输入要添加到库存表商品的名称:");
        scanf("%s",&t_goods.name);
        printf("请输入要添加到库存表商品的价格:");
        scanf("%lf",&t_goods.money);
        printf("请输入要添加到库存表商品的数量:");
        scanf("%d",&t_goods.count);
        storage[storage_total] = t_goods;
        storage_total++;
    }
}

void add_sales(){
    goods t_goods;
    printf("请输入要添加到销售表商品的名称:");
    scanf("%s",&t_goods.name);
    printf("请输入要添加到销售表商品的价格:");
    scanf("%lf",&t_goods.money);
    printf("请输入要添加到销售表商品的数量:");
    scanf("%d",&t_goods.count);
    sales_table[salse_total] = t_goods;
    salse_total++;
}

void show_storage(){
    if(storage_total == 0){
        printf("你的[库存表]中空空如也,请先[录入点商品]吧!");
    }else{
        int i;
        for(i = 0; i < storage_total; i++){
            printf("\n----库存表中第%d件商品----\n",i+1);
            printf("商品名称:%s\n",&storage[i].name);
            printf("商品价格:%.2f\n",storage[i].money);
            printf("商品库存:%d\n",storage[i].count);
        }
    }
}

void show_sales(){
    if(salse_total == 0){
        printf("你的[销售表]中空空如也,请先[出售商品]或者[添加商品]吧!");
    }else{
        int i;
        for(i = 0; i < salse_total; i++){
            printf("\n----销售表中第%d件商品----\n",i+1);
            printf("商品名称:%s\n",&sales_table[i].name);
            printf("商品价格:%.2f\n",sales_table[i].money);
            printf("商品销售量:%d\n",sales_table[i].count);
        }
    }
}

void sell(){
    char * name;
    int i,j;
    if(storage_total == 0){
        printf("你的仓库空空。。请录入商品后在来!");
        return;
    }
    printf("请输入你要出售商品的名字:");
    scanf("%s",name);
    for(i = 0; i < storage_total; i++){
        if(strcmp(name,(char *)(&storage[i].name)) == 0){
        	if(storage[i].count >=0 ){
        		storage[i].count--;
			}else{
				printf("该商品没有库存了,请先进货!");
				return;
			}
            for(j = 0; j < salse_total; j++){
                if(strcmp(name, (char *)(&sales_table[j].name))  == 0  ){
                    sales_table[i].count++;
                    break;
                }
            }
            if(j == salse_total){
                sales_table[salse_total].name = storage[i].name;
                sales_table[salse_total].count = 1;
                sales_table[salse_total].money = storage[i].money;
                salse_total++;
            }
            break;
        }
    }
    if(i == storage_total){
        printf("你输入的商品在仓库中没有,可能是名字有误,请核对后在尝试!");
    }
}

int main(){
    int choice = 0;
    while(1) {
        printf("\n\n\n");
        printf("****************天天商店的商品销售系统***************\n");
        printf("\n");
        printf("    1.库存表数据录入\n");
        printf("    2.销售表数据录入 \n");
        printf("    3.出售商品 \n");
        printf("    4.库存表查询\n");
        printf("    5.销售表查询\n");
        printf("    6.退出\n");
        printf("\n");
        printf("*****************************************************\n");
        printf("please choice(1-6):");
        scanf("%d",&choice);
        switch(choice){
            case 1:   add_storage();  break;
            case 2:   add_sales();    break;
            case 3:   sell();         break;
            case 4:   show_storage(); break;
            case 5:   show_sales();   break;
            case 6:   exit(0);
            break;
        }
    }
    return 0;
}

五、课程设计收获及体会

通过这次实验,首先增强了我的 C 语言的编程能力,加深了我对结构体的理解。其次增强了我错误的处理能力,我做课设的时候并不是一帆风顺的,当遇到困难(例如为什么 strcmp(name, sales_table[j].name)总是报错)的时候,我静下心来思考问题。不断上网搜寻,最终解决了该问题。

猜你喜欢

转载自blog.csdn.net/newlw/article/details/125145161
今日推荐