From 4e173b4bae01ce1bdd8ad2b44b31fe59e53140c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E8=95=8A?= <6551414+fang_rui_rui@user.noreply.gitee.com> Date: Tue, 21 Jul 2020 09:27:21 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0read=5FIn=E5=87=BD?= =?UTF-8?q?=E6=95=B0=EF=BC=8C=E7=9B=AE=E7=9A=84=E6=98=AF=E5=B0=86=E9=94=80?= =?UTF-8?q?=E5=94=AE=E4=BF=A1=E6=81=AF=E5=AF=BC=E5=85=A5=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/sell1.cpp | 311 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 311 insertions(+) create mode 100644 code/sell1.cpp diff --git a/code/sell1.cpp b/code/sell1.cpp new file mode 100644 index 0000000..7778b85 --- /dev/null +++ b/code/sell1.cpp @@ -0,0 +1,311 @@ +#include +#include +#include +#include +#include "sellFun.h" + +extern commodity commodity_head;//商品(库存)头指针 +__declspec(selectany) records *all;//总销售记录头指针 +records *single;//实时销售记录头指针 +bool isAllInited = false;//总销售记录头指针是否已被初始化 + +FILE* fsingleRecords; + +/**************************************************** + * createRecordList -- 创建记录链表 + * 参数:无 + * 返回值:记录链表头指针 + ****************************************************/ +records *createRecordList() +{ + records *recordHead; + recordHead = (records *)malloc(sizeof(records)); + recordHead->next = NULL; + return recordHead; +} + +/**************************************************** + * searchGoods -- 货物是否存在(货查) + * 参数:id:商品编号 + * head:货物头指针 + * 返回值:若找到,返回指向该商品的指针,否则返回NULL + ****************************************************/ +goods *searchGoods(char *id, goods *head) +{ + goods *p; + p = head->next; + while(p != NULL) + { + if(strcmp(id, p->id_Number) == 0) + { + return p; + } + p = p->next; + } + return NULL; +} + +/**************************************************** + * addRecords -- 增加销售记录 + * 参数:record:销售记录头指针 + * soldGoods:卖的货结构体(售货信息) + * goods:商品信息 + * salespersonName:售货员姓名 + * lt:当前时间 + * 返回值:无 + ****************************************************/ +void addRecords(records *record, soldGoods soldGoods, goods *goods, char salespersonName[], struct tm *lt) +{ + records *p; + p = (records *)malloc(sizeof(records)); + strcpy(p->id, goods->id_Number); //货物编号 + strcpy(p->goodsName, goods->goods_Name); //货名 + p->count = soldGoods.count; //数量 + strcpy(p->people, salespersonName); //销售员姓名 + p->price = soldGoods.count * goods->sell_Price; //售价 + p->year = lt->tm_year + 1900; //年 + p->mon = lt->tm_mon + 1; //月 + p->day = lt->tm_mday; //日 + p->hour = lt->tm_hour; //时 + p->min = lt->tm_min; //分 + p->sec = lt->tm_sec; //秒 + p->next = NULL; + p->next = record->next; + record->next = p; +} + +/**************************************************** + * searchSingleRecord -- 查找实时记录 + * 参数:head:实时记录头指针 + * id:货物id + * 返回值:查找到则返回该项指针,否则返回NULL + ****************************************************/ +records *searchSingleRecord(records *head, char *id) +{ + records *p; + p = head->next; + while(p != NULL) + { + if(strcmp(id, p->id) == 0) + { + return p; + } + p = p->next; + } + return NULL; +} + +/**************************************************** + * searchAllRecord -- 查找总记录 + * 参数:head:总记录头指针 + * name:货物名 + * 返回值:查找到则返回该项指针,否则返回NULL + ****************************************************/ +records *searchAllRecord(records *head, char *name) +{ + records *p; + p = head->next; + while(p != NULL) + { + if(strcmp(name, p->goodsName) == 0) + { + return p; + } + p = p->next; + } + return NULL; +} + +/**************************************************** + * printSingleRecord -- 打印实时记录 + * 参数:head:实时记录链表头指针 + * 返回值:无 + ****************************************************/ +void printSingleRecord(records *head) +{ + records *p; + p = head->next; + if(p != NULL) + { + printf("商品编号 商品名 卖货人 销售额 销售时间\n"); + while(p != NULL) + { + printf("%s %s %s %.2lf %d年%d月%d日 %d:%d:%d\n", p->id, p->goodsName, p->people, p->price, p->year, p->mon, p->day, p->hour, p->min, p->sec); + p = p->next; + } + } + else + { + printf("实时销售记录为空!\n"); + } +} + +/**************************************************** + * printAllRecord -- 打印总记录 + * 参数:head:总记录链表头指针 + * 返回值:无 + ****************************************************/ +void printAllRecord(records *head) +{ + records *p; + p = head->next; + if(p != NULL) + { + printf("商品名 销售额 销售时间\n"); + while(p != NULL) + { + printf("%s %.2lf %d年%d月%d日 %d:%d:%d\n", p->goodsName, p->price, p->year, p->mon, p->day, p->hour, p->min, p->sec); + p = p->next; + } + } + else + { + printf("总销售记录为空!\n"); + } +} + +/**************************************************** + * sell -- 卖货,返回实时销售记录(货删和改,记录增) + * 参数:goodsHead:库存链表头指针 + * singleRecord:实时销售记录头指针 + * a:顾客所买东西的种类数(的引用) + * 返回值:当前该件商品的小计金额 + ****************************************************/ +double sell(goods *goodsHead, records *singleRecord, int &a) +{ + time_t t; + struct tm* lt; + time(&t); + lt = localtime(&t); //获取当前时间 + soldGoods soldGoods; + double money; + char salespersonName[15]; + printf("请依次输入销售员姓名 商品编号 购买数量:\n"); + scanf("%s %s %d", salespersonName, soldGoods.id_Number, &soldGoods.count); + goods *n = searchGoods(soldGoods.id_Number, goodsHead); + if(n != NULL) + { + if(soldGoods.count > n->remain_Number) + { + printf("库存不足,请重新清点商品数量!\n"); + a = a + 1; //重新计数 + return 0; + } + n->remain_Number = n->remain_Number - soldGoods.count; //更新库存 + if(n->remain_Number == 0) + { + printf("%s(%s)正好卖没货了。\n", n->goods_Name, n->id_Number); //可以删除但还是要进货的 + } + addRecords(singleRecord, soldGoods, n, salespersonName, lt); //更新实时销售记录 + addRecords(all, soldGoods, n, salespersonName, lt); // 更新总销售记录 + return soldGoods.count * n->sell_Price; + } + else + { + printf("未找到编号为 %s 的商品,请重新输入!\n", soldGoods.id_Number); + a = a + 1; //重新计数 + return 0; + } +} +/**************************************************** + * read_In -- 将singleRecords文件中的内容读入 + * 参数:无 + * 返回值:新的总销售指针 + ****************************************************/ +records* read_In() +{ + records* q; + records* head; + records* rear; + head = (records*)malloc(sizeof(records)); + head->next = NULL; + rear = head; + q = (records*)malloc(sizeof(records)); + fsingleRecords = fopen("singleRecords.txt", "r"); + while(fscanf(fsingleRecords, "%s %lf %d年%d月%d日 %d:%d:%d\n", q->goodsName, &q->price, &q->year, &q->mon, &q->day, &q->hour, &q->min, &q->sec) != EOF) + { + q->next = NULL; + rear->next = q; + rear = q; + q = (records*)malloc(sizeof(records)); + } + return head; +} + +/**************************************************** + * sellmain -- 销售管理主界面 + * 参数:无 + * 返回值:正确结束,返回0 + ****************************************************/ +int sellmain() +{ + goods *goods = commodity_head;//货物头指针 + double money1 = 0, money2 = 0, money3 = 0; + records* p1; + records* p2; + int n; + int a; + single = createRecordList(); + if(!isAllInited) + { + all = createRecordList(); + isAllInited = true; + } + while(1) + { + system("cls"); + printf("顾客结账请按 1\n"); + printf("打印实时销售记录请按 2\n"); + printf("打印总销售记录 3\n"); + printf("退出程序请按 0\n"); + printf("\n请选择:"); + scanf("%d", &a); + if(a == 1) + { + printf("输入顾客所买东西的种类数:"); + scanf("%d", &n); + printf("开始结账(请手动输入):\n"); + while(n > 0) + { + money2 = money2 + sell(goods, single, n); + + n--; + } + p1 = all->next; + fsingleRecords = fopen("singleRecords.txt", "a+"); + while (p1) + { + fprintf(fsingleRecords, "%s %.2lf %d年%d月%d日 %d:%d:%d\n", p1->goodsName, p1->price, p1->year, p1->mon, p1->day, p1->hour, p1->min, p1->sec); + p1 = p1->next; + } + fclose(fsingleRecords); + printf("金额合计:%.2lf元。\n", money2); + printf("输入顾客所付钱数:"); + scanf("%lf", &money1); + if(money1 >= money2) + printf("找零:%.2f元。\n", money1 - money2); + else + { + printf("所付金额不足,请继续付款:"); + scanf("%lf", &money3); + money1 = money1 + money3; + printf("找零:%.2f元。\n", money1 - money2); + } + } + else if(a == 2) + { + printSingleRecord(single); + } + else if(a == 3) + { + p2 = read_In(); + printAllRecord(p2); + } + else if(a == 0) + { + break; + } + system("pause"); + } + return 0; +} \ No newline at end of file -- Gitee From 5eb92da135884a624664174ccb355637078c2ee1 Mon Sep 17 00:00:00 2001 From: hyp19991114 Date: Tue, 21 Jul 2020 17:21:36 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20code?= =?UTF-8?q?/sell.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/sell.cpp | 275 -------------------------------------------------- 1 file changed, 275 deletions(-) delete mode 100644 code/sell.cpp diff --git a/code/sell.cpp b/code/sell.cpp deleted file mode 100644 index ce6c83d..0000000 --- a/code/sell.cpp +++ /dev/null @@ -1,275 +0,0 @@ -#include -#include -#include -#include -#include "sellFun.h" - -extern commodity commodity_head;//商品(库存)头指针 - -__declspec(selectany) records *all;//总销售记录头指针 -records *single;//实时销售记录头指针 -bool isAllInited = false;//总销售记录头指针是否已被初始化 - -/**************************************************** - * createRecordList -- 创建记录链表 - * 参数:无 - * 返回值:记录链表头指针 - ****************************************************/ -records *createRecordList() -{ - records *recordHead; - recordHead = (records *)malloc(sizeof(records)); - recordHead->next = NULL; - return recordHead; -} - -/**************************************************** - * searchGoods -- 货物是否存在(货查) - * 参数:id:商品编号 - * head:货物头指针 - * 返回值:若找到,返回指向该商品的指针,否则返回NULL - ****************************************************/ -goods *searchGoods(char *id, goods *head) -{ - goods *p; - p = head->next; - while(p != NULL) - { - if(strcmp(id, p->id_Number) == 0) - { - return p; - } - p = p->next; - } - return NULL; -} - -/**************************************************** - * addRecords -- 增加销售记录 - * 参数:record:销售记录头指针 - * soldGoods:卖的货结构体(售货信息) - * goods:商品信息 - * salespersonName:售货员姓名 - * lt:当前时间 - * 返回值:无 - ****************************************************/ -void addRecords(records *record, soldGoods soldGoods, goods *goods, char salespersonName[], struct tm *lt) -{ - records *p; - p = (records *)malloc(sizeof(records)); - strcpy(p->id, goods->id_Number); //货物编号 - strcpy(p->goodsName, goods->goods_Name); //货名 - p->count = soldGoods.count; //数量 - strcpy(p->people, salespersonName); //销售员姓名 - p->price = soldGoods.count * goods->sell_Price; //售价 - p->year = lt->tm_year + 1900; //年 - p->mon = lt->tm_mon + 1; //月 - p->day = lt->tm_mday; //日 - p->hour = lt->tm_hour; //时 - p->min = lt->tm_min; //分 - p->sec = lt->tm_sec; //秒 - p->next = NULL; - p->next = record->next; - record->next = p; -} - -/**************************************************** - * searchSingleRecord -- 查找实时记录 - * 参数:head:实时记录头指针 - * id:货物id - * 返回值:查找到则返回该项指针,否则返回NULL - ****************************************************/ -records *searchSingleRecord(records *head, char *id) -{ - records *p; - p = head->next; - while(p != NULL) - { - if(strcmp(id, p->id) == 0) - { - return p; - } - p = p->next; - } - return NULL; -} - -/**************************************************** - * searchAllRecord -- 查找总记录 - * 参数:head:总记录头指针 - * name:货物名 - * 返回值:查找到则返回该项指针,否则返回NULL - ****************************************************/ -records *searchAllRecord(records *head, char *name) -{ - records *p; - p = head->next; - while(p != NULL) - { - if(strcmp(name, p->goodsName) == 0) - { - return p; - } - p = p->next; - } - return NULL; -} - -/**************************************************** - * printSingleRecord -- 打印实时记录 - * 参数:head:实时记录链表头指针 - * 返回值:无 - ****************************************************/ -void printSingleRecord(records *head) -{ - records *p; - p = head->next; - if(p != NULL) - { - printf("商品编号 商品名 卖货人 销售额 销售时间\n"); - while(p != NULL) - { - printf("%s %s %s %.2lf %d年%d月%d日 %d:%d:%d\n", p->id, p->goodsName, p->people, p->price, p->year, p->mon, p->day, p->hour, p->min, p->sec); - p = p->next; - } - } - else - { - printf("实时销售记录为空!\n"); - } -} - -/**************************************************** - * printAllRecord -- 打印总记录 - * 参数:head:总记录链表头指针 - * 返回值:无 - ****************************************************/ -void printAllRecord(records *head) -{ - records *p; - p = head->next; - if(p != NULL) - { - printf("商品名 销售额 销售时间\n"); - while(p != NULL) - { - printf("%s %.2lf %d年%d月%d日 %d:%d:%d\n", p->goodsName, p->price, p->year, p->mon, p->day, p->hour, p->min, p->sec); - p = p->next; - } - } - else - { - printf("总销售记录为空!\n"); - } -} - -/**************************************************** - * sell -- 卖货,返回实时销售记录(货删和改,记录增) - * 参数:goodsHead:库存链表头指针 - * singleRecord:实时销售记录头指针 - * a:顾客所买东西的种类数(的引用) - * 返回值:当前该件商品的小计金额 - ****************************************************/ -double sell(goods *goodsHead, records *singleRecord, int &a) -{ - soldGoods soldGoods; - double money; - char salespersonName[15]; - printf("请依次输入销售员姓名 商品编号 购买数量:\n"); - scanf("%s %s %d", salespersonName, soldGoods.id_Number, &soldGoods.count); - goods *n = searchGoods(soldGoods.id_Number, goodsHead); - if(n != NULL) - { - if(soldGoods.count > n->remain_Number) - { - printf("库存不足,请重新清点商品数量!\n"); - a = a + 1; //重新计数 - return 0; - } - n->remain_Number = n->remain_Number - soldGoods.count; //更新库存 - if(n->remain_Number == 0) - { - printf("%s(%s)正好卖没货了。\n", n->goods_Name, n->id_Number); //可以删除但还是要进货的 - } - time_t t; - struct tm *lt; - time(&t); - lt = localtime(&t); //获取当前时间 - addRecords(singleRecord, soldGoods, n, salespersonName, lt); //更新实时销售记录 - addRecords(all, soldGoods, n, salespersonName, lt); // 更新总销售记录 - return soldGoods.count * n->sell_Price; - } - else - { - printf("未找到编号为 %s 的商品,请重新输入!\n", soldGoods.id_Number); - a = a + 1; //重新计数 - return 0; - } -} - -/**************************************************** - * sellmain -- 销售管理主界面 - * 参数:无 - * 返回值:正确结束,返回0 - ****************************************************/ -int sellmain() -{ - goods *goods = commodity_head;//货物头指针 - double money1 = 0, money2 = 0, money3 = 0; - int n; - int a; - single = createRecordList(); - if(!isAllInited) - { - all = createRecordList(); - isAllInited = true; - } - while(1) - { - system("cls"); - printf("顾客结账请按 1\n"); - printf("打印实时销售记录请按 2\n"); - printf("打印总销售记录 3\n"); - printf("退出程序请按 0\n"); - printf("\n请选择:"); - scanf("%d", &a); - if(a == 1) - { - printf("输入顾客所买东西的种类数:"); - scanf("%d", &n); - printf("开始结账(请手动输入):\n"); - while(n > 0) - { - money2 = money2 + sell(goods, single, n); - n--; - } - printf("金额合计:%.2lf元。\n", money2); - printf("输入顾客所付钱数:"); - scanf("%lf", &money1); - if(money1 >= money2) - printf("找零:%.2f元。\n", money1 - money2); - else - { - printf("所付金额不足,请继续付款:"); - scanf("%lf", &money3); - money1 = money1 + money3; - printf("找零:%.2f元。\n", money1 - money2); - } - } - else if(a == 2) - { - printSingleRecord(single); - } - else if(a == 3) - { - printAllRecord(all); - } - else if(a == 0) - { - break; - } - system("pause"); - } - - return 0; -} \ No newline at end of file -- Gitee From 336dae4ef00546d7c9bc852dad98889a3afef420 Mon Sep 17 00:00:00 2001 From: hyp19991114 Date: Tue, 21 Jul 2020 17:21:49 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=20code/sell1.cp?= =?UTF-8?q?p=20=E4=B8=BA=20code/sell.cpp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/{sell1.cpp => sell.cpp} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename code/{sell1.cpp => sell.cpp} (100%) diff --git a/code/sell1.cpp b/code/sell.cpp similarity index 100% rename from code/sell1.cpp rename to code/sell.cpp -- Gitee