栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言超市收银

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言超市收银

#include           
#include         
#include  
#include
#include

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


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( "应付款:%.2fn", 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( "您未选择任何支付,请重试!nn已自动为您退出商品售卖nn" );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 超市发票                 tn" );
        printf( "t商品名称:%s                           tn", commodities[choice - 1].commodityName );
        printf( "t商品单价:%.1f                         tn", commodities[choice - 1].commodityprice );
        printf( "t商品数量:%d                           tn", count );
        printf( "t应付款额:%.1f                      tn", pay );
        printf( "t实际付款:%.1f                      tn", total );
        printf( "t应找零钱:%.1f                         tn", back );
        printf( "n"); 
        printf( "如果产品存在问题请在七日内进行调换或者退款 n");
        printf( "t联系电话12345678900                   tn");
        GetTime(timeStr);//获取当前时间
        strcpy(logs[logCount].timeStr, timeStr);//保存当前时间
        printf( "                      %s n", logs[logCount].timeStr );
        printf( "n");
        printf( "t 谢谢惠顾!                    tn");
        printf( "t欢迎下次光临                   tn");
        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%dt%-10s%-14s%.1ft%dt**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%dt%-10s%-14s%.1ft%dt**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购买时间tt----n" );
    for ( i = 0; i < logCount; i++ ) {
        printf( "----t%dt%-10s%-14s%dt%st----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%dt%-10s%-14s%dt**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.欢迎光临 我的世界

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/951507.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号