销售信息管理系统-NIT计算机与数据工程学院-小的大作业

本文档描述了一个使用C语言编写的销售管理系统,该系统能够处理销售员、产品和销售记录,支持信息录入、销售统计及排序。系统采用文件保存数据,并利用Hash原理提高查询效率。项目包括详细的实验报告,涵盖了项目介绍、算法流程、测试结果和分析评论。开发环境为Windows 10,使用CLion和Visual Studio Code作为开发工具。
摘要由CSDN通过智能技术生成

C语言实现的销售管理系统

最后修改于2021/05/18

要求

某公司有N(N<=20)位销售员(编号:E001-E00N,至少包含销售员的若干基本信息如姓名、性别、受教育程度等),负责销售M(M<=30)个产品(编号:P001-P00M,至少包含产品的基本信息,如产品名称、单价、库存量等信息)。每个销售员在销售商品时,执行订单操作(销售记录,至少包含销售日期、销售编号、销售员编号、销售产品编号、销售数量等信息)。 设计一个简易库存-销售系统,使之能提供以下功能: 1、系统以菜单方式工作; 2、销售表信息录入功能(销售记录信息用文件保存)--输入; 3、统计销售情况 1)统计每个销售员的总销售额、每种产品的总销售额; 2)按销售额对销售员进行升序排序,输出排序结果; 3)按销售额对产品进行降序排序,输出排序结果。 (提示:至少应该有三个文件来保存基本数据,一个文件保存商品的基本信息,一个文件保存销售员的基本信息,还有一个文件保存销售记录。自行设计完整的数据结构并实现以上功能,程序应具有简单的错误处理,如不存在的销售员、超过库存的销售、不存在的产品等。如同学觉得能有更好的想法,也可以增加额外的功能,会酌情加分)。

项目的实验报告包括以下部分内容:

一、报告封面(请自行设计,内容清晰明了);
二、第一章:项目介绍;
三、第二章:完善的程序设计算法与流程;
四、第三章:清晰的测试结果;
五、第四章:分析与评论:完整且清晰的注释;
整个报告必须是:完整的包含以上内容且文档的总体风格非常专业(包括:参考文献、版权声明等)。

变量命名遵循的是谷歌的C/C++编程规范,结合注释应该不难理解本人的代码思路;
当初在设计的时候,安全是按照较大规模的数据进行设计的,对于题目要求的一百以内的数据,的确有点太冗杂了。
项目简介 本程序使用C语言进行编写,主要实现了对销售人员信息、商品信息、销售记录的录入与排序操作、文件的读写,为了加快查询速度和处理较大规模的数据量,使用Hash原理,可以在O(1)时间复杂度内通过关键值找到目标信息,但是不足之处在于作者还不能构建出一个把销售人员名字或商品名字作为关键值的Hash算法,只能把编号作为唯一的索引值。

C语言标准:C17
编译环境:gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)
操作系统:Windows 10 20H2
开发工具:CLion 2021.1.1(JetBrains)、
Visual Studio Code 1.56.2(MircorSoft)

文件操作 程序中的文件路径均使用相对路径,所用到的文件与源代码在相同的目录之下
代码规范 函数、变量命名遵循Google的C/C++编程规范

代码如下:
头文件

#ifndef SalesSystem
#define SalesSystem

#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#define KHashSize 50
const int KMaxSalesman = 20;
const int KMaxProduct = 30;
typedef struct _Salesman_ Salesman;
typedef struct _ProductInformation_ ProductInformation;
typedef struct _Data_ Data;
typedef struct _SaleRecord_ SaleRecord;

struct _Salesman_ //用来记录销售人员信息的结构体
{
   
    int number;                    //编号
    char name[20];                 //姓名
    char gender[4];                //性别;0为男,否则为女
    char education_experience[20]; //教育经历;高中、本科、研究生、小学
    double sumsale;
};

struct _ProductInformation_ //记录商品信息的结构体
{
   
    int number;          //编号
    char name[20];       //商品名称
    double price;        //单价
    int remain_quantity; //剩余的商品数量
    double sumsale;
};

struct _Data_ //记录日期的结构体
{
   
    int year;  //年
    int month; //月
    int day;   //日
};

struct _SaleRecord_ //记录销售记录,里面嵌套了两个结构体
{
   
    Data data;                             //销售日期
    int number;                            //销售编号
    int count;                             //销售的数量
    ProductInformation productinformation; //产品信息
    Salesman salesman;                     //销售人员的信息
};
/*******************************************************/

//创建索引,可以在O(1)的时间复杂度由编号内找到对应的信息
Salesman *salesman_number_hash[KHashSize] = {
   NULL};
Salesman *salesman_name_hash[KHashSize] = {
   NULL};
ProductInformation *product_number_hash[KHashSize] = {
   NULL};
ProductInformation *product_name_hash[KHashSize] = {
   NULL};
SaleRecord *sale_record_number_hash[KHashSize] = {
   NULL};

/*******************************************************/

int compare_saleman(const void *a, const void *b) //对销售人员的销售额按照升序排列(从小到大)
{
   
    Salesman *pa = (Salesman *)a;
    Salesman *pb = (Salesman *)b;
    return pa->sumsale - pb->sumsale;
}
int compare_product(const void *a, const void *b) //对单个商品的消费额按照降序排列(从大到小)
{
   
    ProductInformation *pa = (ProductInformation *)a;
    ProductInformation *pb = (ProductInformation *)b;
    return pb->sumsale - pa->sumsale;
}
void PrintTips() //打印菜单
{
   
    system("cls"); //清楚终端内的所有内容
    printf("+--------------------------------------------------------+\n");
    printf("|                        |*Menu*|                        |\n");
    printf("|                | 1.InPutSalesman |                     |\n");
    printf("|                | 2.InPutProductInformation |           |\n");
    printf("|                | 3.InPutSaleRecord |                   |\n");
    printf("|                | 4.CalculateSaleSumOfProduct |         |\n");
    printf("|                | 5.CalculateSaleSumOfSalesman |        |\n");
    printf("|                | 6.SortSaleOfSalesman |                |\n");
    printf("|                | 7.SortSaleOfProduct |                 |\n");
    printf("|                | 8.Exit |                              |\n");
    printf("+---------------------   |*End*|  -----------------------+\n");

    printf(
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值