C语言超市收银

#include <stdio.h>           
#include <stdlib.h>         
#include <string.h>  
#include <math.h>
#include<time.h>

//~~许心安
#define N 8 //定义商品种类  通过修改N的值来控制商品的种类  

/*

num1 work1 5 100
num2 work2 2 200
num3 work3 1 300
num4 work4 2 500
num5 work5 8 800
num6 work6 10 100
num7 work7 5 400
num8 work8 12 1200

*/
void menus();//主菜单函数
void init();//初始化库存 
void saleCommodity();//购买商品
void commodityMenu();//商品列表
void repertory();//查看库存情况
void printLog();//打印商品列表
void add();//补货
void GetTime();//打印时间
//订单列表
struct log {
    char commodityName[10];// 商品名称 
    char commodityworks[20];//商品生产厂家 
    int    commodityCount;// 数量 
    char timeStr[20];//订单时间
};
struct log logs[80];//订单列表
int logCount = 0;//订单数量
//商品列表
struct commodity {
    char commodityName[10];//商品名称
    char commodityworks[20];//商品生产厂家 
    float commodityprice;//价格
    int    commodityCount;//数量
    int    initialCount;//初始数量
};
struct commodity commodities[N];//商品数组
int main() {
    int choice = -1;
    while ( 1 ) {
        menus();
        scanf( "%d", &choice );
        switch ( choice ) {
            case 1: init();
            break;//系统初始化功能
            case 2: saleCommodity();
            break;//购买商品
            case 3: repertory();
            break;//查看库存情况
            case 4: printLog();
            break;//打印商品列表
            case 5: add();
            break;//补货
            case 6: printf( "谢谢使用,再见!\n" );
            exit( 0 );
            break;
            default: printf( "您的输入有误,重试!\n" );
            break;
        }
    }
}
//主菜单
void menus() {
    printf( "*****欢迎使用超市收银系统*****\n" );
    printf( "***\t1商品管理\t***\n" );
    printf( "***\t2商品购物车\t***\n" );
    printf( "***\t3商品库存显示\t***\n" );
    printf( "***\t4商品销售日志\t***\n" );
    printf( "***\t5商品补充库存\t***\n" );
    printf( "***\t6退出系统\t***\n" );
    printf( "*********************************\n" );
    printf( "请输入您的选择:" );
}
//初始化库存 
void init() {
    int i;
    printf( "商品初始化中……\n" );
    printf( "请分别输入商品名称 生产厂家 单价 数量 (共%d种商品)\n",N);
    for ( i = 0; i < N; i++ ) {
        scanf( "%s %s %f %d", commodities[i].commodityName,commodities[i].commodityworks, &commodities[i].commodityprice, &commodities[i].commodityCount );
        commodities[i].initialCount = commodities[i].commodityCount;//初始化初始数量
    }
}
//售卖商品
void saleCommodity()                                                
{    //打印菜单-交换
    char timeStr[20];//用于存放当前时间
    int    choice , count = 0;
    float pay, back;//支付钱数 找零数
    float total = 0, temp = 0;//支付找零钱数 
    while ( 1 ) {
        //choice = -1;
        count=pay=back=total=back=0;//初始化
        commodityMenu();//调用选择产品函数
        printf( "请输入您购买的商品序号(输入0退出商品售卖):" );
        scanf( "%d", &choice );
        if ( choice == 0 ){ 
            return;//输入0返回
        }else if( choice < 0 ){
            printf( "您的输入有误!请重试!\n" );
            printf( "请输入您购买的商品序号(输入0退出商品售卖):" );
            scanf( "%d", &choice );
            if( choice < 0||choice > N) {
                printf( "您的输入连续有误,已退出商品售卖!\n" ); return; 
            }
        }else if( choice > N ){
            printf( "未找到该商品!请重试!\n" );
            printf( "请输入您购买的商品序号(输入0退出商品售卖):" );
            scanf( "%d", &choice ); 
            if( choice < 0||choice > N)  printf( "您的输入连续有误,已退出商品售卖!\n" ); return;
        }
        printf( "请输入您购买的数量:" );
        scanf( "%d", &count );
        //超过库存无法购买 
        if ( count > commodities[choice - 1].commodityCount ){
            printf( "购买数量超过库存,购买失败! " );
            system( "pause" );
            return;
        }
        pay = (commodities[choice - 1].commodityprice) * count;//应付数
        printf("\n");
        printf( "应付款:%.2f\n", pay); 
        printf("\n");
        //显示支付方式 
        {
            printf( "请选择支付方式\n" );
            printf( "1微信\n" );
            printf( "2支付宝刷脸\n" );
            printf( "3支付宝扫码\n" );
            printf( "4现金\n" );
            printf( "5刷卡\n" );
            printf( "*************\n" );
            printf( "请输入您的支付选择:" );
        }
        //选择支付方式 
        int paychoice;
        scanf( "%d", &paychoice);
        switch(paychoice){
            case 1 : printf( "请打开微信扫码支付:\n" );break; 
            case 2 : printf( "请打开支付宝刷脸系统支付:\n" );break;
            case 3 : printf( "请打开支付宝扫码支付:\n" );break;
            case 4 : printf( "请支付现金:\n" );break;
            case 5 : printf( "请刷卡支付:\n" );break;
            default : printf( "您未选择任何支付,请重试!\n\n已自动为您退出商品售卖\n\n" );return;
        }
        printf( "应付款:%.2f", pay);
        printf( "  请付款:" ); 
        scanf( "%f", &temp );
        if(temp >= pay){
            back = temp - pay;
            total = temp;
        }else{
            printf( "余额不足,支付失败!\n");
            system( "pause" );
            return;
        }
        printf( "购买成功!找零%.1f元,请取走您的商品。\n", back );
        //写入商品销售日志
        strcpy(logs[logCount].commodityName, commodities[choice - 1].commodityName);    //保存商品名称
        strcpy(logs[logCount].commodityworks, commodities[choice - 1].commodityworks);    //保存商品生产厂家 
        logs[logCount].commodityCount = count;//保存商品数量
        GetTime(timeStr);//获取当前时间
        strcpy(logs[logCount].timeStr, timeStr);//保存当前时间
        logCount++;    //商品销售日志数量+1      
        //打印小票 
        printf( "\n");
        printf( "\t 超市发票                 \t\n" );
        printf( "\t商品名称:%s                           \t\n", commodities[choice - 1].commodityName );
        printf( "\t商品单价:%.1f                         \t\n", commodities[choice - 1].commodityprice );
        printf( "\t商品数量:%d                           \t\n", count );
        printf( "\t应付款额:%.1f                      \t\n", pay );
        printf( "\t实际付款:%.1f                      \t\n", total );
        printf( "\t应找零钱:%.1f                         \t\n", back );
        printf( "\n"); 
        printf( "如果产品存在问题请在七日内进行调换或者退款 \n");
        printf( "\t联系电话12345678900                   \t\n");
        GetTime(timeStr);//获取当前时间
        strcpy(logs[logCount].timeStr, timeStr);//保存当前时间
        printf( "                      %s \n", logs[logCount].timeStr );
        printf( "\n");
        printf( "\t 谢谢惠顾!                    \t\n");
        printf( "\t欢迎下次光临                   \t\n");
        commodities[choice - 1].commodityCount -= count;
        system( "pause" );
    }
}
//商品列表
void commodityMenu() {
    int i;
    printf( "马上进入商品售卖……\n" );
    printf( "***************************************************************\n" );
    printf( "**\t序号\t名称      生产厂家      单价\t数量\t**\n" );
    for ( i = 0; i < N; i++ ) {
        printf( "**\t%d\t%-10s%-14s%.1f\t%d\t**\n", i + 1, commodities[i].commodityName,commodities[i].commodityworks, commodities[i].commodityprice, commodities[i].commodityCount );
    }
    printf( "***************************************************************\n" );
}
//查看商品库存
void repertory() {
    int i;
    printf( "当前库存情况:\n" );
    printf( "***************************************************************\n" );
    printf( "**\t序号\t名称      生产厂家      单价\t数量\t**\n" );
    for ( i = 0; i < N; i++ ) {
        printf( "**\t%d\t%-10s%-14s%.1f\t%d\t**\n", i + 1, commodities[i].commodityName, commodities[i].commodityworks,commodities[i].commodityprice, commodities[i].commodityCount );
    }
    printf( "***************************************************************\n" );
}
//打印商品销售日志
void printLog() {
    int    i;
    printf( "\n--------------\t                 产品销售日志  \t              --------------\n" );
    printf( "----\t序号\t名称      生产厂家      数量\t购买时间\t\t----\n" );
    for ( i = 0; i < logCount; i++ ) {
        printf( "----\t%d\t%-10s%-14s%d\t%s\t----\n", i+1, logs[i].commodityName,logs[i].commodityworks, logs[i].commodityCount, logs[i].timeStr );
    }
    system( "pause" );
}
//商品补充库存 
void add() {
    int i, num, count;
    printf( "*********************************\n" );
    printf( "**\t序号\t名称      生产厂家      数量\t**\n" );
    for ( i = 0; i < N; i++ ) {
        printf( "**\t%d\t%-10s%-14s%d\t**\n", i + 1, commodities[i].commodityName,commodities[i].commodityworks, commodities[i].commodityCount );
    }
    printf( "请输入需要补货的商品序号:\n" );
    printf( "*********************************\n" );
    scanf("%d", &num);
    if( num < 1){
        printf( "您的输入有误!请重新输入:\n" );
        scanf("%d", &num);
        if( num < 1||num > N){
            printf( "您的输入连续有误,已退出商品补充库存!\n" ); return;    
        }
    }else if( num > N){
        printf( "未找到该商品!请重新输入:\n" );
        scanf("%d", &num);
        if( num < 1||num > N)  printf( "您的输入连续有误,已退出商品补充库存!\n" ); return;    
    }
    
    printf( "请输入需要补货的数量:\n" );
    scanf("%d", &count);
    if(count<0){
        printf( "您的输入有误!请重新输入:\n" );
        scanf("%d", &count);
    }
    commodities[num-1].commodityCount += count;
    commodities[num-1].initialCount += count;
    printf( "补货成功!\n" );
    system( "pause" );
}
//获得当前时间
void GetTime(char* timeStr) {
    unsigned long long a = 0;
    time_t timer;
    struct tm *tblock;
    time(&timer);
    tblock = gmtime(&timer);
    a = (tblock->tm_year+1900)*100;
    a = (a+tblock->tm_mon+1)*100;
    a = (a+tblock->tm_mday)*100;
    a = (a+tblock->tm_hour+8)*100;
    a = (a+tblock->tm_min)*100;
    a = (a+tblock->tm_sec);
    sprintf(timeStr, "%d/%02d/%02d %02d:%02d:%02d",\
                tblock->tm_year+1900, tblock->tm_mon+1, tblock->tm_mday,\
                tblock->tm_hour+8, tblock->tm_min, tblock->tm_sec);
}

//Hello.欢迎光临 我的世界

  • 7
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小樊qwqovo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值