使用C语言编写,一个销售管理系统,要求:某公司有四个销售员(编号:1-4),负责销售五种产品(编号:1-5)。每个销售员都将 当天出售的每种产品各写一张便条交上来。每张便条包含内容:销售员的代号,产品的代 号,这种产品的当天的销售额;每位销售员每天可能上缴0-5张便条。完成以下功能: 1)计算上个月每个人每种产品的销售额。 2)按销售额对销售员进行排序,输出排序结果(销售员代号) 3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出 产品的代号和销售额) 4)输出统计报表。你只需要回答完整的代码
时间: 2024-02-28 12:55:52 浏览: 30
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SALESMAN_NUM 4
#define PRODUCT_NUM 5
typedef struct {
int salesman_id;
int product_id;
double sales;
} SalesRecord;
typedef struct {
double total_sales[PRODUCT_NUM];
double total_sales_per_salesman[SALESMAN_NUM][PRODUCT_NUM];
} SalesReport;
void calculate_sales_report(SalesRecord *records, int num_records, SalesReport *report) {
memset(report, 0, sizeof(SalesReport));
for (int i = 0; i < num_records; i++) {
int salesman_id = records[i].salesman_id;
int product_id = records[i].product_id;
double sales = records[i].sales;
report->total_sales[product_id - 1] += sales;
report->total_sales_per_salesman[salesman_id - 1][product_id - 1] += sales;
}
}
void sort_salesman_by_sales(SalesReport *report, int *sorted_salesman) {
double total_sales[SALESMAN_NUM];
for (int i = 0; i < SALESMAN_NUM; i++) {
total_sales[i] = 0;
for (int j = 0; j < PRODUCT_NUM; j++) {
total_sales[i] += report->total_sales_per_salesman[i][j];
}
}
for (int i = 0; i < SALESMAN_NUM; i++) {
int max_index = i;
for (int j = i + 1; j < SALESMAN_NUM; j++) {
if (total_sales[j] > total_sales[max_index]) {
max_index = j;
}
}
if (max_index != i) {
int temp = sorted_salesman[i];
sorted_salesman[i] = sorted_salesman[max_index];
sorted_salesman[max_index] = temp;
}
}
}
void sort_product_by_sales(SalesReport *report, int *sorted_products) {
double total_sales[PRODUCT_NUM];
for (int i = 0; i < PRODUCT_NUM; i++) {
total_sales[i] = report->total_sales[i];
}
for (int i = 0; i < PRODUCT_NUM; i++) {
int max_index = i;
for (int j = i + 1; j < PRODUCT_NUM; j++) {
if (total_sales[j] > total_sales[max_index]) {
max_index = j;
}
}
if (max_index != i) {
int temp = sorted_products[i];
sorted_products[i] = sorted_products[max_index];
sorted_products[max_index] = temp;
}
}
}
void print_sales_report(SalesReport *report) {
printf("Sales report:\n");
printf("Sales by salesman:\n");
printf("Salesman ID\tProduct 1\tProduct 2\tProduct 3\tProduct 4\tProduct 5\n");
for (int i = 0; i < SALESMAN_NUM; i++) {
printf("%d\t\t", i + 1);
for (int j = 0; j < PRODUCT_NUM; j++) {
printf("%.2f\t\t", report->total_sales_per_salesman[i][j]);
}
printf("\n");
}
printf("Sales by product:\n");
printf("Product ID\tTotal sales\n");
for (int i = 0; i < PRODUCT_NUM; i++) {
printf("%d\t\t%.2f\n", i + 1, report->total_sales[i]);
}
}
int main() {
SalesRecord records[100];
int num_records = 0;
while (1) {
int salesman_id, product_id;
double sales;
printf("Enter sales record (salesman_id product_id sales): ");
scanf("%d %d %lf", &salesman_id, &product_id, &sales);
if (salesman_id == 0 || product_id == 0 || sales == 0) {
break;
}
records[num_records].salesman_id = salesman_id;
records[num_records].product_id = product_id;
records[num_records].sales = sales;
num_records++;
}
SalesReport report;
calculate_sales_report(records, num_records, &report);
int sorted_salesman[SALESMAN_NUM] = {1, 2, 3, 4};
sort_salesman_by_sales(&report, sorted_salesman);
printf("Salesman sorted by sales (highest first):\n");
printf("Salesman ID\n");
for (int i = 0; i < SALESMAN_NUM; i++) {
printf("%d\n", sorted_salesman[i]);
}
int sorted_products[PRODUCT_NUM] = {1, 2, 3, 4, 5};
sort_product_by_sales(&report, sorted_products);
printf("Products sorted by sales (highest first):\n");
printf("Product ID\n");
for (int i = 0; i < PRODUCT_NUM; i++) {
printf("%d\n", sorted_products[i]);
}
print_sales_report(&report);
return 0;
}
```
注:这个代码仅供参考,可能存在一些细节问题需要特别注意。