返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言实现最全自动售货机
  • 540
分享到

C语言实现最全自动售货机

2024-04-02 19:04:59 540人浏览 薄情痞子
摘要

拥有所有功能自动售货机C语言 主要功能:欢迎页面、通过文本文件读入货物信息、上货、卖货(包含找零,付款不足等多种情况)、增加新品种、按单价从高到低排序、按序号排序、退出前将所有货物信

拥有所有功能自动售货机C语言

主要功能:欢迎页面、通过文本文件读入货物信息、上货、卖货(包含找零,付款不足等多种情况)、增加新品种、按单价从高到低排序、按序号排序、退出前将所有货物信息回写进文本文档 实际代码非常简单

使用环境

VS2017编译运行正常;
DEV c++删除第一行(#define _CRT_SECURE_NO_WARNINGS)

注意事项

1.第一次使用需要进入系统维护录入所有信息.
2.在使用时会在桌面创建一个文本文件记录数据,下次运行也会有数据.
3.录入数据时一定注意按照系统提示,一定要先输入编号再进行创建新的品种,可以输入中文名称,如农夫山泉.

//初次使用请进行系统维护并录入商品信息 
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE 100000
#include<string.h>
#include<stdlib.h>
#include<coNIO.h>

//货物数据结构 
struct huowu
{
    int n;                //编号 
    char name[10];        //名称 
    int Price;            //价格 
    int Maths;            //剩余数量 
}s[SIZE];



void finput()
{
    FILE *fp;
    int i, t, x = 1;
    fp = fopen("fs+", "w");    // 
    printf("已进入重新录入数据界面,之前数据将被清除!\n\n请按提示输入编号\n");
    for (i = 0; i < SIZE; i++)
    {
        printf(" 第%d个  请输入编号(请与左方编号一致,按回车键进入下一步,当输入i=-1时,完成录入商品信息)\n", x++);//需要逐一手动先输入编号 
        scanf("%d", &t);
        i = t;
        if (i == -1)
        {
            fclose(fp);
            return;
        }
        else
        {
            i = t - 1;
            printf("请输入 名称 价格 及添加的 库存 ,用空格间隔开,按回车键继续\n");
            scanf("%s %d %d", &s[i].name, &s[i].Price, &s[i].Maths);

            s[i].n = i + 1;
            fwrite(&s[i], sizeof(struct huowu), 1, fp);
        }
    }
    fclose(fp);
}

void flist()
{
    FILE *fp;
    int i;
    fp = fopen("fs+", "r");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    printf("                         列表\n");
    printf("-----------------------------------------------------------\n");
    printf("序号          名称             价格        库存 \n");
    printf("-----------------------------------------------------------\n");
    for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++)
    {
        printf("%d%18s%16d%16d\n", s[i].n, s[i].name, s[i].Price, s[i].Maths);
    }
    printf("-----------------------------------------------------------\n\n");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    fclose(fp);

}


void fchange()
{
    FILE *fp;
    int k;
    fp = fopen("fs+", "r");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    printf("                         列表\n");
    printf("-----------------------------------------------------------\n");
    printf("序号          名称             价格        库存 \n");
    printf("-----------------------------------------------------------\n");
    for (k = 0; fread(&s[k], sizeof(struct huowu), 1, fp) == 1; k++)
    {
        printf("%d%18s%16d%16d\n", s[k].n, s[k].name, s[k].Price, s[k].Maths);
    }
    printf("-----------------------------------------------------------\n\n");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    int i, n;
    int flag = 0;
    printf("请输入要修改商品的序号:");
    scanf("%d", &n);
    for (i = 0; i <= SIZE; i++)
        if (s[i].n == n)
        {
            printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
            printf("                         列表\n");
            printf("-----------------------------------------------------------\n");
            printf("序号                         名称                          价格\n");
            printf("-----------------------------------------------------------\n");
            printf("%d%32s%25d\n", s[i].n, s[i].name, s[i].Price);
            printf("-----------------------------------------------------------\n\n");
            printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
            n = i;
            flag = 1;
            break;
        }
    if (flag == 0)
    {
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
        printf("                        输入错误!\n");
        printf("                        请重新选择!\n");
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
        return;
    }
    printf("\n\n\n");
    fp = fopen("fs+", "r+");
    fseek(fp, n * sizeof(struct huowu), 0);
    printf("请输入新的 名称  价格:");
    scanf("%s%d", s[i].name, &s[i].Price);
    fwrite(&s[i], sizeof(struct huowu), 1, fp);
    fclose(fp);
    fp = fopen("fs+", "r");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    printf("                      列表\n");
    printf("-----------------------------------------------------------\n");
    printf("序号                         名称                          价格\n");
    printf("-----------------------------------------------------------\n");
    for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++)
    {
        printf("%d%28s%28d\n", s[i].n, s[i].name, s[i].Price);
    }
    printf("-----------------------------------------------------------\n\n");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    fclose(fp);

}

void ftaxis()
{
    int i, j, n;
    FILE *fp;
    struct huowu t;
    fp = fopen("f.s+", "r");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    printf("                         列表\n");
    printf("-----------------------------------------------------------\n");
    printf("序号                         名称                          价格\n");
    printf("-----------------------------------------------------------\n");
    for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++)
    {
        printf("%d%28s%28d\n", s[i].n, s[i].name, s[i].Price);
    }
    printf("-----------------------------------------------------------\n\n");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    fclose(fp);
    n = i;
    for (i = 0; i < n; i++)
        for (j = i + 1; j < n; j++)
            if (s[i].Price < s[j].Price)
            {
                t = s[i];
                s[i] = s[j];
                s[j] = t;
            }
    fp = fopen("fss+", "w");
    printf("\n\n\n");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    printf("                         列表 \n");
    printf("-----------------------------------------------------------\n");
    printf("序号                         名称                          价格\n");
    printf("-----------------------------------------------------------\n");
    for (i = 0; i < n; i++)
    {
        fwrite(&s[i], sizeof(struct huowu), 1, fp);
        printf("%d%28s%28d\n", s[i].n, s[i].name, s[i].Price);
    }
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    fclose(fp);

}


//添加库存 
int fadd()
{
    FILE *fp;
    int i, num, n;
    int flag = 0;
    printf("请输入要补货 商品 的序号:");
    scanf("%d", &n);
    for (i = 0; i <= SIZE; i++)
        if (s[i].n == n)
        {
            printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
            printf("                         列表\n");
            printf("-----------------------------------------------------------\n");
            printf("序号                         名称                         库存\n");
            printf("-----------------------------------------------------------\n");
            printf("%d%8s%8d\n", s[i].n, s[i].name, s[i].Maths);
            printf("-----------------------------------------------------------\n\n");
            printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
            n = i;
            flag = 1;
            break;
        }
    if (flag == 0)
    {
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
        printf("                        输入错误!\n");
        printf("                         请返回!\n");
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
        return 0;
    }
    printf("\n\n\n");
    fp = fopen("fs+", "r+");
    fseek(fp, n * sizeof(struct huowu), 0);
    printf("请输入添加后此商品总个数");
    scanf("%d", &s[i].Maths);
    fwrite(&s[i], sizeof(struct huowu), 1, fp);
    fclose(fp);
    fp = fopen("fs+", "r");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    printf("                       列表\n");
    printf("-----------------------------------------------------------\n");
    printf("序号                         名称                          库存\n");
    printf("-----------------------------------------------------------\n");
    for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++)
    {
        printf("%d%8s%8d\n", s[i].n, s[i].name, s[i].Maths);
    }
    printf("------------------------补货完成-------------------------\n\n");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    fclose(fp);

}


int neibu()
{
    system("cls");
    int n;
    for (;;)
    {
        printf("\n");
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
        printf("※                                                          ※\n");
        printf("※                 欢迎进入自动售货机(内部)                 ※\n");
        printf("※                                                          ※\n");
        printf("※                                                          ※\n");
        printf("※                          主菜单                          ※\n");
        printf("※                                                          ※\n");
        printf("※                      ▲1.重新所有录入数据▲              ※\n");
        printf("※                      ▲2.展示商品信息▲                  ※\n");
        printf("※                      ▲3.补充库存▲                      ※\n");
        printf("※                      ▲4.修改数据▲                      ※\n");
        printf("※                      ▲5.按照价格排序并生成另一个文件▲  ※\n");
        printf("※                      ▲6.退出系统▲                      ※\n");
        printf("※                                                          ※\n");
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n");
        printf("请输入选择项(1-6):");
        scanf("%d", &n);
        printf("\n\n\n\n");
        if (n > 0 && n < 8)
        {
            switch (n)
            {
            case 1:finput(); break;
            case 2:flist(); break;
            case 3:fadd(); break;
            case 4:fchange(); break;
            case 5:ftaxis(); break;
            case 6:printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
                printf("※                                            ※\n");
                printf("※                  谢谢使用!                 ※\n");
                printf("※                    再见!                   ※\n");
                printf("※                                            ※\n");
                printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");

                system("pause");
                system("cls"); //清空屏幕  
                return 0;//            exit(0);
            }
        }
        else
        {
            printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
            printf("※                                            ※\n");
            printf("※                  输入错误!                 ※\n");
            printf("※                   请退出!                  ※\n");
            printf("※                                            ※\n");
            printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
            break;
        }
    }
    system("cls"); //清空屏幕  
}


void buy()
{
    FILE *fp;
    int i;
    system("cls");
    fp = fopen("fs+", "r");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    printf("                       列表\n");
    printf("-----------------------------------------------------------\n");
    printf("序号          名称             价格        库存 \n");
    printf("-----------------------------------------------------------\n");
    for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++)
    {
        printf("%d%18s%16d%18d\n", s[i].n, s[i].name, s[i].Price, s[i].Maths);
    }
    printf("----------------请输入需要的商品按回车继续-----------------\n");
    printf("-----------------------------------------------------------\n\n");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    int num, n, B = 1;
    float money = 0.0, m = 0;
    int flag = 0;
restar:
    printf("请输入要购买商品的序号:");
    scanf("%d", &n);
    for (i = 0; i <= SIZE; i++)
        if (s[i].n == n)
        {
            printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
            printf("-----------------------------------------------------------\n");
            printf("序号                         名称                          价格\n");
            printf("-----------------------------------------------------------\n");
            printf("%d%30s%26d元\n", s[i].n, s[i].name, s[i].Price);
            printf("-----------------------------------------------------------\n\n");
            printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
            n = i;
            flag = 1;
            break;
        }
    if (flag == 0)
    {
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
        printf("                        输入错误!\n");
        printf("                         请返回!\n");
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
        return;
    }
    printf("\n\n\n");
    fp = fopen("fs+", "r+");
    fseek(fp, n * sizeof(struct huowu), 0);
    s[i].Maths = s[i].Maths - 1;
    fwrite(&s[i], sizeof(struct huowu), 1, fp);
    fclose(fp);
    fp = fopen("fs+", "r");
    if (s[i].Maths <= 0)
    {
        printf("存货不足,请购买其他商品!\n");
        s[i].Maths = 0;
        Goto restar;

    }
    else
        printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    printf("-----------------------------------------------------------\n");
    printf("            请    支    付    %d    元(仅限一元以上面额)\n", s[i].Price);
    printf("-----------------------------------------------------------\n\n");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
    while (B)
    {
        scanf("%f", &money);
        m += money;
        if (m < s[i].Price)
        {
            printf("金额不足,请继续支付\n\n");
        }
        if (m == s[i].Price)
        {
            printf("付款成功\n\n");
            B = 0;
            break;
            s[i].Maths = s[i].Maths - 1;

        }
        if (m > s[i].Price)
        {
            money = m - s[i].Price;
            printf("        付款成功,找零%f请您收好\n\n\n\n                     欢迎下次使用\n\n\n", money);
            B = 0;
            break;
            s[i].Maths = s[i].Maths - 1;
        }
    }
    fclose(fp);
    system("pause");
}
//主函数 
int main()
{
    char sr;//定义电脑接受的字符  
    system("color F0");

start://起始位置  
    system("cls");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
    printf("※         欢迎使用自动售货机(初始试用版)   ※\n");
    printf("※                                            ※\n");
    printf("※               请输入选项                   ※\n");
    printf("※               a.用户购买                   ※\n");
    printf("※               b.系统维护                   ※\n");
    printf("※                                            ※\n");
    printf("※               按回车继续 。。。            ※\n");
    printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");


    scanf("\n%c", &sr);

    switch (sr)
    {
    case 'a': buy(); break;

    case 'b': neibu(); break;
    }
    goto start;//回到起始位置  
}

程序截图

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C语言实现最全自动售货机

本文链接: https://www.lsjlt.com/news/163439.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C语言实现最全自动售货机
    拥有所有功能自动售货机C语言 主要功能:欢迎页面、通过文本文件读入货物信息、上货、卖货(包含找零,付款不足等多种情况)、增加新品种、按单价从高到低排序、按序号排序、退出前将所有货物信...
    99+
    2024-04-02
  • C语言实现自动售货机
    本文实例为大家分享了C语言实现自动售货机的具体代码,供大家参考,具体内容如下 如图所示的简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号分别为1-10,标有价格与名称,一...
    99+
    2024-04-02
  • 用C语言实现自动售货机
    自动售货机 如图所示的简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号,分别为1-10。同时标有价格与名称,- 一个编号对应一个可操作按钮,供选择商品使用。如果物架上的商...
    99+
    2024-04-02
  • 如何使用C语言实现自动售货机
    这篇文章将为大家详细讲解有关如何使用C语言实现自动售货机,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下如图所示的简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号分别为1-10,标有...
    99+
    2023-06-28
  • python实现自动售货机
    本文实例为大家分享了python实现自动售货机的具体代码,供大家参考,具体内容如下 自动售货机代码 while True:  n=input('请选择操作:')  if n=='r'...
    99+
    2024-04-02
  • java实现自动售货机
    JAVA基础练手项目—自动售货机,供大家参考,具体内容如下 要求: 简易售货机 流程: 【投币】—>【显示货物清单】—>【选择一个商品...
    99+
    2024-04-02
  • java如何实现自动售货机
    本篇文章给大家分享的是有关java如何实现自动售货机,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。要求:简易售货机流程:【投币】&mdash;>【显示货物清单】&...
    99+
    2023-06-28
  • java实现饮料自助售货机
    本文实例为大家分享了java实现饮料自助售货机的具体代码,供大家参考,具体内容如下 ①用户类 import java.util.Scanner; //用户类 public clas...
    99+
    2024-04-02
  • C语言实现飞机售票系统
    本文实例为大家分享了C语言实现飞机售票系统的具体代码,供大家参考,具体内容如下 一、项目简介 通过“航空售票系统”C语言课程设计的实践,掌握函数、数据的读取和...
    99+
    2024-04-02
  • 如何使用PHP实现商城的自动售货机功能
    随着电子商务的不断发展,在线商城的销售已经成为人们日常生活中必不可少的一部分。许多商家为了提高自己的销售量,开始使用销售自动化技术来增强用户的体验和购物的便捷性。在这篇文章中,我们将探讨如何使用PHP实现商城的自动售货机功能,帮助商家更加高...
    99+
    2023-05-22
    PHP 商城 自动售货机
  • C语言如何实现飞机售票系统
    本文小编为大家详细介绍“C语言如何实现飞机售票系统”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言如何实现飞机售票系统”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、项目简介通过“航空售票系统”C语言课程...
    99+
    2023-06-30
  • C语言实现销售管理系统
    本文实例为大家分享了C语言实现销售管理系统的具体代码,供大家参考,具体内容如下 这是题目,没用到文件相关的函数,所以不能保存在本地,每次读入都得重新输入。 #include<...
    99+
    2024-04-02
  • C语言实现自动存取款机模拟系统
    本文实例为大家分享了C语言实现自动存取款机模拟系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<string....
    99+
    2024-04-02
  • Python数据挖掘实用案例——自动售货机销售数据分析与应用
    🚀欢迎来到本文🚀 🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。 🏀系列专...
    99+
    2023-10-20
    数据挖掘 python 数据分析
  • C语言实现自动发牌程序
    目录题目描述问题分析代码实现运行结果网上参考题目描述 一副扑克有52张牌,打桥牌时应将牌分给4个人。请设计一个程序完成自动发牌的工作。要求:黑桃用S (Spaces)表示,红桃用H ...
    99+
    2024-04-02
  • C语言链表实现销售管理系统
    本文实例为大家分享了C语言链表实现销售管理系统的具体代码,供大家参考,具体内容如下 源码 #include<stdio.h> #include<stdlib.h&g...
    99+
    2024-04-02
  • C语言实现销售管理系统设计
    本文实例为大家分享了C语言实现销售管理系统设计的具体代码,供大家参考,具体内容如下 某公司有四个销售员(编号: 1-4), 负责销售五种产品(编号: 1-5)。 每个销售员都将当天出...
    99+
    2024-04-02
  • C语言实现电器销售管理系统
    本文实例为大家分享了C语言实现电器销售管理系统的具体代码,供大家参考,具体内容如下 系统功能设计 管理信息系统具有多种功能,各种功能之间又有多种联系,构成了一个有机结合的整体。信息处...
    99+
    2024-04-02
  • C语言如何实现自动存取款机模拟系统
    这篇文章主要讲解了“C语言如何实现自动存取款机模拟系统”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言如何实现自动存取款机模拟系统”吧!#include<stdio.h>#i...
    99+
    2023-06-30
  • C语言设计实现扫描器的自动机的示例详解
    目录题目内容思路代码题目内容 内容: 1.设计扫描器的自动机; 2.设计翻译、生成Token的算法; 3.编写代码并上机调试运行通过。 要求: 扫描器可识别的单词包括:关键字、界符、...
    99+
    2022-12-28
    C语言实现扫描器 C语言 扫描器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作