銷售管理系統(c++)簡單易解

某公司有四個銷售員(編號:1-4),負責銷售五種產品(編號:1-5).每個銷售員都將當天出售的每種產品各寫一張便條交上來.每張便條包含內容:(選做)
1)銷售員的代號
2)產品的代號
3)這種產品的當天的銷售額
每位銷售員每天可能上繳0-5張便條.假設,收集到了上個月的所有便條,編寫一個處理系統,讀取上個月的銷售情況(自己設定),進行如下處理.
1)計算上個月每個人每種產品的銷售額.
2)按銷售額對銷售員進行排序,輸出排序結果(銷售員代號)
3)統計每種產品的總銷售額,對這些產品按從高到底的順序,輸出排序結果(需輸出產品的代號和銷售額)
4)輸出統計報表
銷售統計報表
產品代號 銷售之和

創作不易,感謝支持!!!(這只是比較簡易的,還能繼續添加!)
代碼:

#define _CRT_SECURE_NO_DEPRECATE/*在比較高版本的vs添加由於支持scanf和fopen等函數*/
#include <iostream>
#include <stdlib.h>
#define M 150
using namespace std;

int n;//小紙條數目
class Menu //菜單
{
public:
	static void MainMenu();//主菜單
};

class Scrip//紙條類
{
private:
	int id;//銷售員代號
	int num;//產品代號
	int sale;//銷量
public:
	static void readdata();//讀取
	static void collating();//整理讀取的信息
	static void detail();//查看銷售情況
	static void seller_sort();//針對銷售員銷量排序
	static void product_sort();//針對產品銷量,對產品排序
	static void total();//統計報表
}note[M];

class ElySale
{
public:
	int sale[5];
}Ely[4];//保存各產品銷量

功能的實現:

void Scrip::readdata()
{
	FILE* fp = 0;
	if ((fp = fopen("list.txt", "r")) == NULL)
	{
		printf("Feil opening falling!\n");
		exit(0);
	}
	else
		for (n = 0; !feof(fp); n++)
		{
			fscanf(fp, "%d %d %d\n", &note[n].id, &note[n].num, &note[n].sale);//保存文件數據到結構體
		}
	fclose(fp);
}

void Scrip::collating()//整理讀取的信息並分類
{
	int i;
	for (i = 0; i < n; i++)//遍歷所有紙條
	{
		switch (note[i].num)//按產品分大類,銷售員分小類,累加每個人各類產品銷售量
		{
		case 1://產品1
			switch (note[i].id)//銷售員代號
			{
			case 1:
				Ely[0].sale[0] += note[i].sale; break;
			case 2:
				Ely[1].sale[0] += note[i].sale; break;
			case 3:
				Ely[2].sale[0] += note[i].sale; break;
			case 4:
				Ely[3].sale[0] += note[i].sale; break;
			}
			break;
		case 2: //產品2
			switch (note[i].id)//銷售員代號
			{
			case 1:
				Ely[0].sale[1] += note[i].sale; break;
			case 2:
				Ely[1].sale[1] += note[i].sale; break;
			case 3:
				Ely[2].sale[1] += note[i].sale; break;
			case 4:
				Ely[3].sale[1] += note[i].sale; break;
			}
			break;
		case 3://產品3
			switch (note[i].id)//銷售員代號
			{
			case 1:
				Ely[0].sale[2] += note[i].sale; break;
			case 2:
				Ely[1].sale[2] += note[i].sale; break;
			case 3:
				Ely[2].sale[2] += note[i].sale; break;
			case 4:
				Ely[3].sale[2] += note[i].sale; break;
			}
			break;
		case 4://產品4
			switch (note[i].id)//銷售員代號
			{
			case 1:
				Ely[0].sale[3] += note[i].sale; break;
			case 2:
				Ely[1].sale[3] += note[i].sale; break;
			case 3:
				Ely[2].sale[3] += note[i].sale; break;
			case 4:
				Ely[3].sale[3] += note[i].sale; break;
			}
			break;
		case 5://產品5
			switch (note[i].id)//銷售員代號
			{
			case 1:
				Ely[0].sale[4] += note[i].sale; break;
			case 2:
				Ely[1].sale[4] += note[i].sale; break;
			case 3:
				Ely[2].sale[4] += note[i].sale; break;
			case 4:
				Ely[3].sale[4] += note[i].sale; break;
			}
			break;
		}
	}
}

void Scrip::detail()//顯示銷售情況
{
	int i, j;
	for (i = 0; i < 4; i++)//遍歷銷售員
	{
		cout << "\n\t\t" << i + 1 << "號銷售員銷售情況:" << endl;
		for (j = 0; j < 5; j++)/*按銷售員分類遍歷所有產品並顯示信息*/
			cout << "\t\t" << j + 1 << "號產品銷售數量:" << Ely[i].sale[j] << endl;
	}
}

void Scrip::seller_sort()//按銷量對銷售員排序
{
	int i, j, k;
	int a[4] = { 0,0,0,0 };//用於儲存四個銷售員各自的銷售總量
	for (i = 0; i < 4; i++)
		for (j = 0; j < 5; j++)
			a[i] += Ely[i].sale[j];//統計每個銷售員所有產品總銷售量
	for (i = 0; i < 4; i++)
	{
		k = 0;//用於標記本輪最大數
		for (j = 0; j < 4; j++)
			if (a[k] < a[j])
				k = j;
		cout << "銷量第" << i + 1 << ";" << "\t" << k + 1 << "號銷售員" << "\t銷量: " << a[k] << endl;
		a[k] = -1;///*輸出最大數和排名,將最大數標記爲負*/
	}
}
void Scrip::product_sort()//按產品銷量對該類產品排序
{
	int i, j, k;
	int b[5] = { 0,0,0,0,0 };//存放五種產品總銷量

	for (i = 0; i < 5; i++)
		for (j = 0; j < 4; j++)
			b[i] += Ely[j].sale[i];//統計每件產品的總銷量
	for (i = 0; i < 5; i++)
	{
		k = 0;//用於標記本輪最大數
		for (j = 0; j < 5; j++)
			if (b[k] < b[j])
				k = j;
		cout << "銷量第" << i + 1 << "的產品:" << "\t" << k + 1 << "號產品" << "\t銷量: " << b[k] << endl;
		b[k] = -1;///*輸出最大數和排名,將最大數標記爲負*/
	}
}
void Scrip::total()//輸出報表
{
	int i, j;
	printf("\n\t銷售員\t產品\t銷量\n");
	for (i = 0; i < 4; i++)
		for (j = 0; j < 5; j++)
			cout << "\t " << i + 1 << "\t " << j + 1 << "\t" << Ely[i].sale[j] << endl;
}
void Menu::MainMenu()
{
	cout << "\t\t********************菜單*********************\n" << endl;
	cout << "\t\t 1.查看每人每種產品的銷售額" << endl;
	cout << "\t\t 2.按銷售額對銷售員排序(銷售員代號)" << endl;;
	cout << "\t\t 3.對每種產品總銷售額從高到低排序(產品代號和銷售額)" << endl;
	cout << "\t\t 4.輸出統計報表" << endl;
	cout << "\t\t 5.導入前一個月銷售情況" << endl;
	cout << "\t\t 0.退出" << endl;
	cout << "\n\n\t\t*********************************************" << endl;
	cout << "請選擇(1-5):[ ]\b\b";
}

void start()
{
	int select;
	while (true)
	{
		Menu::MainMenu();
		cin >> select;
		switch (select)
		{
		case 1://查看每人每種產品的銷售額
			Scrip::detail();
			break;
		case 2://按銷售額對銷售員排序(銷售員代號)
			Scrip::seller_sort();
			break;
		case 3://對每種產品總銷售額從高到低排序(產品代號和銷售額)
			Scrip::product_sort();
			break;
		case 4://輸出統計報表
			Scrip::total();
			break;
		case 5://導入前一個月銷售情況
		{
			Scrip::readdata();//讀取文件
			Scrip::collating();//對信息整理分類
		}
		break;
		case 0://退出系統
			cout << "歡迎下次使用" << endl;
			system("pause");
			exit(0);
		default:
			cout << "輸入錯誤!" << endl;
			break;
		}
		system("pause");
		system("cls");
	}
}
int main()
{
	start();
	system("pause");
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章