销售管理系统

销售管理系统

这是本文件夹下的课程设计的要求:

某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将当天出售的每种产品各写一张便条交上来。每张便条包含内容:销售员的代号 、产品的代号 、这种产品的当天的销售额。
每位销售员每天可能上缴0-5张便条。假设,收集到了上个月的所有便条,编写一个处理系统,读取上个月的销售情况(自己设定),进行如下处理。

1、计算上个月每个人每种产品的销售额。

2、按销售额对销售员进行排序,输出排序结果(销售员代号)

3、统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)

4、输出统计报表

销售员代号12345总和
1000000
2000000
3000000
4000000
总计000000
#include <stdio.h>
#include <stdlib.h>
#define SALESMEN_COUNT 4 // 一共4个售货员
#define PRODUCT_COUNT 5  // 一共5个产品

struct Product
{
  int id;
  int total_sales;
} Product[PRODUCT_COUNT];
struct salesmen
{
  int id;
  int total_sales;
} salesmen[SALESMEN_COUNT];

void Screen_Print() // 欢迎页界面
{
  printf("****************************\n********销售管理系统********\n********按任意键继续********\n****************************\n");
  system("Pause"); // 要展示菜单,让她暂停再继续执行
}
void Input(int sales[SALESMEN_COUNT][PRODUCT_COUNT]) // 输入界面
{
  system("cls");
  printf("**********输入纸条**********\n");
  printf("输入0退出\n");
  while (1) // 设置一个死循环
  {
    // 读取一张便条
    int salesmen, product, amount;
    printf("请输入销售员编号:");
    scanf("%d", &salesmen);
    if (salesmen == 0)
    {
      break;
    }
    if (salesmen < 1 || salesmen > SALESMEN_COUNT)
    {
      printf("销售员编号无效,请重新输入\n");
      continue;
    }
    printf("请输入产品编号:");
    scanf("%d", &product);
    if (product == 0)
    {
      break;
    }
    if (product < 1 || product > PRODUCT_COUNT)
    {
      printf("产品编号无效,请重新输入\n");
      continue;
    }
    printf("请输入销售额:");
    scanf("%d", &amount);
    // 将对应的销售额加到对应的销售员和产品的销售额数组中
    sales[salesmen - 1][product - 1] += amount;
  }
}
void Total(int sales[SALESMEN_COUNT][PRODUCT_COUNT]) // 计算总销售额
{
  //计算每个销售员的总销售额
  for (int i = 0; i < SALESMEN_COUNT; i++)
  {
    for (int j = 0; j < PRODUCT_COUNT; j++)
    {
      salesmen[i].id = i + 1;
      salesmen[i].total_sales += sales[i][j];
    }
  }
  //计算产品的总销售额
  for (int i = 0; i < PRODUCT_COUNT; i++)
  {
    for (int j = 0; j < SALESMEN_COUNT; j++)
    {
      Product[i].id = i + 1;
      Product[i].total_sales += sales[j][i];
    }
  }
}
void Sort()//排序 
{
  // 销售员排序
  for (int i = 0; i < SALESMEN_COUNT - 1; i++)
  {
    for (int j = 0; j < SALESMEN_COUNT - 1 - i; j++)
    {
      if (salesmen[j].total_sales < salesmen[j + 1].total_sales)
      {
        struct salesmen temp;
        temp = salesmen[j];
        salesmen[j] = salesmen[j + 1];
        salesmen[j + 1] = temp;
      }
    }
  }
  //产品排序
  for (int i = 0; i < PRODUCT_COUNT - 1; i++)
  {
    for (int j = 0; j < PRODUCT_COUNT - 1 - i; j++)
    {
      if (Product[j].total_sales < Product[j + 1].total_sales)
      {
        struct Product temp;
        temp = Product[j];
        Product[j] = Product[j + 1];
        Product[j + 1] = temp;
      }
    }
  }
}
void Output(int sales[SALESMEN_COUNT][PRODUCT_COUNT]) // 输出界面
{
  int n;//记录用户输入数
  // 显示选择页面
  while(1)
  {
  system("cls");
  printf("*************统计***************\n");
	printf("*       1.输出销售员排行榜\n");
	printf("*       2.输出产品排行榜\n");
	printf("*       3.输出销售报表\n");
  printf("*       4.返回菜单界面\n");
  printf("********************************\n");
  printf("请选择:");
  scanf("%d",&n);
  if(n==1)
  {
  //销售员排行榜
  system("cls");
  printf("**********销售员排行榜**********\n");
  printf("\n");
  for (int i = 0; i < SALESMEN_COUNT; i++)
  {
    printf("销售排行第%d名的是:\n", i + 1);
    printf("编号:%d\n", salesmen[i].id);
    printf("总计销售额:%d\n", salesmen[i].total_sales);
    printf("\n");
  }
  system("Pause");
  }
  else if(n==2)
  {
  // 产品排行榜
  system("cls");
  printf("**********产品排行榜**********\n");
  for (int i = 0; i < PRODUCT_COUNT; i++)
  {
    printf("销售排行第%d名的是:\n编号:%d\n销售额:%d\n", i + 1, Product[i].id, Product[i].total_sales);
    printf("\n");
  }
  system("Pause");
  }
  else if(n==3)
  {
  system("cls");
  // 销售报表
  printf("**********销售报表**********\n");
  printf("|销售员代号|1    |2    |3    |4    |5    |总和 |\n");
  for (int i = 0; i < SALESMEN_COUNT; i++)
  {
    printf("|%d         |", i + 1);
    for (int j = 0; j < PRODUCT_COUNT; j++)
    {
      printf("%-5d|", sales[i][j]);
    }
    printf("%-5d|", salesmen[i].total_sales);
    printf("\n");
  }
  printf("|总计      |");
  for (int i = 0; i < PRODUCT_COUNT; i++)
  {
    printf("%-5d|", Product[i].total_sales);
  }
  printf("%-5d|", salesmen[0].total_sales + salesmen[1].total_sales + salesmen[2].total_sales + salesmen[3].total_sales);
  printf("\n");
  save(sales);
  printf("已保存至baobiao.md\n");
  system("Pause");
  }
  else if(n==4) break;
  else continue;
  }
}
void save(int sales[SALESMEN_COUNT][PRODUCT_COUNT])//保存文件
{
  FILE *fp;
  if ((fp = fopen("baobiao.md", "wb")) == NULL)
  {
    printf("不能打开文件!\n");
    return -1;
  }
  fprintf(fp, "# 销售报表\n");
  fprintf(fp, "\n");
  fprintf(fp, "|销售员代号|1    |2    |3    |4    |5    |总和 |\n");
  fprintf(fp, "|-|-|-|-|-|-|-|\n");
  for (int i = 0; i < SALESMEN_COUNT; i++)
  {
    fprintf(fp, "|%d         |", i + 1);
    for (int j = 0; j < PRODUCT_COUNT; j++)
    {
      fprintf(fp, "%-5d|", sales[i][j]);
    }
    fprintf(fp, "%-5d|", salesmen[i].total_sales);
    fprintf(fp, "\n");
  }
  fprintf(fp, "|总计      |");
  for (int i = 0; i < PRODUCT_COUNT; i++)
  {
    fprintf(fp, "%-5d|", Product[i].total_sales);
  }
  fprintf(fp, "%-5d|", salesmen[0].total_sales + salesmen[1].total_sales + salesmen[2].total_sales + salesmen[3].total_sales);
  fprintf(fp, "\n");
}

int main()
{
  Screen_Print();
  int sales[SALESMEN_COUNT][PRODUCT_COUNT] = {0};
  while (1)//设置一个死循环,这个界面只有在用户输入3的时候才会跳出循环
  {
    system("cls");
  printf("*************菜单***************\n");
	printf("*       1.输入纸条\n");
	printf("*       2.统计\n");
	printf("*       3.退出\n");
  printf("********************************\n");
    printf("请选择要执行的操作:");
    int choice;
    scanf("%d", &choice);

    if (choice == 1)
    {
      Input(sales);
    }
    else if (choice == 2)
    {
    // 计算总销售额
    Total(sales);
    // 排序
    Sort();
    // 输出开始
    Output(sales);
    }
    else if (choice == 3)
    {
      break;
    }
  }
  return 0;
}
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这是一个比较典型的 C 语言编写销售管理系统的案例。下面是具体的实现步骤: 1.定义结构体 首先需要定义一个结构体来保存每张便条的信息,包括销售员编号、产品编号和销售额: ```c struct sales_note { int salesman_id; int product_id; float amount; }; ``` 2.读取销售便条 定义一个函数来读取上个月的所有便条,并将其保存在一个数组中: ```c #define MAX_SALES_NOTES 1000 int read_sales_notes(struct sales_note notes[]) { int n = 0; // 读取上个月的所有便条,保存在数组 notes 中 // ... return n; } ``` 3.计算每个销售员每种产品的销售额 定义一个二维数组来保存每个销售员每种产品的销售额,然后遍历所有便条,累加每个销售员每种产品的销售额: ```c #define NUM_SALESMEN 4 #define NUM_PRODUCTS 5 float sales[NUM_SALESMEN][NUM_PRODUCTS] = {0}; void calculate_sales(struct sales_note notes[], int n) { for (int i = 0; i < n; i++) { int salesman_id = notes[i].salesman_id - 1; int product_id = notes[i].product_id - 1; float amount = notes[i].amount; sales[salesman_id][product_id] += amount; } } ``` 4.按销售额对销售员进行排序 定义一个结构体来保存每个销售员的销售额和排名,然后遍历每个销售员,计算其总销售额,并将其保存在结构体数组中。最后按销售额从大到小排序,并输出销售员代号和销售排名: ```c struct salesman_sales { int salesman_id; float total_sales; int rank; }; void sort_salesmen(struct salesman_sales salesmen[]) { // 计算每个销售员的总销售额,保存在结构体数组中 for (int i = 0; i < NUM_SALESMEN; i++) { float total_sales = 0; for (int j = 0; j < NUM_PRODUCTS; j++) { total_sales += sales[i][j]; } salesmen[i].salesman_id = i + 1; salesmen[i].total_sales = total_sales; } // 按销售额从大到小排序 for (int i = 0; i < NUM_SALESMEN - 1; i++) { for (int j = 0; j < NUM_SALESMEN - 1 - i; j++) { if (salesmen[j].total_sales < salesmen[j + 1].total_sales) { struct salesman_sales tmp = salesmen[j]; salesmen[j] = salesmen[j + 1]; salesmen[j + 1] = tmp; } } } // 输出排序结果 printf("Salesman\tSales\tRank\n"); for (int i = 0; i < NUM_SALESMEN; i++) { salesmen[i].rank = i + 1; printf("%d\t\t%.2f\t%d\n", salesmen[i].salesman_id, salesmen[i].total_sales, salesmen[i].rank); } } ``` 5.统计每种产品的总销售额并排序 定义一个结构体来保存每种产品的销售额和编号,然后遍历每种产品,计算其总销售额,并将其保存在结构体数组中。最后按销售额从大到小排序,并输出产品编号和销售额: ```c struct product_sales { int product_id; float total_sales; }; void sort_products(struct product_sales products[]) { // 计算每种产品的总销售额,保存在结构体数组中 for (int i = 0; i < NUM_PRODUCTS; i++) { float total_sales = 0; for (int j = 0; j < NUM_SALESMEN; j++) { total_sales += sales[j][i]; } products[i].product_id = i + 1; products[i].total_sales = total_sales; } // 按销售额从大到小排序 for (int i = 0; i < NUM_PRODUCTS - 1; i++) { for (int j = 0; j < NUM_PRODUCTS - 1 - i; j++) { if (products[j].total_sales < products[j + 1].total_sales) { struct product_sales tmp = products[j]; products[j] = products[j + 1]; products[j + 1] = tmp; } } } // 输出排序结果 printf("Product\tSales\n"); for (int i = 0; i < NUM_PRODUCTS; i++) { printf("%d\t\t%.2f\n", products[i].product_id, products[i].total_sales); } } ``` 6.输出统计报表 最后,在主函数中调用上述函数,输出统计报表: ```c int main() { struct sales_note notes[MAX_SALES_NOTES]; int n = read_sales_notes(notes); calculate_sales(notes, n); struct salesman_sales salesmen[NUM_SALESMEN]; sort_salesmen(salesmen); struct product_sales products[NUM_PRODUCTS]; sort_products(products); return 0; } ``` 以上就是 C 语言编写销售管理系统的具体实现步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

美丽新科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值