#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <Windows.h>
#include <io.h>//做地推怎么跟人打招呼定义access函数(判断指定文件是否具有可读、可写、可执行等权限)的头文件 
#define N 100001
#define PRINT "%d\t\t%s\t\t%s\t\t%d\t\t\n",Flight[i].flightnumber,Flight[i].startstaion,Flight[i].endstation,Flight[i].count //定义输出格式
 
//头文件 
struct flight
{
    int flightnumber;//航班号 
    char startstaion[20];//起始站 
    char endstation[20];//终点站
    int count;//机票数量
}Flight[N];//航班信息
 
typedef struct
{
    char name[20];
    char secret[10];
}Client;//用户信息
 
int i, m = 0;//全局变量,标志航班数量 
char ch[10];//相对于flag 
 
void MainMenu();//主页面
void OptionMenu();//输入选择 进入功能区
void Login(Client client[]);//登陆
void Clearing();//函数初始化 
void Build();//创建航班信息 
void Read();//读取 
void SaveInformation();//保存航班信息
void AddInformation();//增加信息函数 
void output();//航班信息输出 
void FlightInformation();//航班信息浏览 
 
 
int main()//主函数
{
    MainMenu();//菜单
    OptionMenu();//输入选择
    return 0;
}
 
void MainMenu()//菜单
{
    printf("***************************************\n");
    printf("      欢迎进入航班订票系统\n");
    printf("        0.请登录您的账号... \n");
    printf("        1.航班信息浏览        \n");
    printf("        2.航班查询(按航班号)        \n");
    printf("        3.航班订票        \n");
    printf("        4.航班退票        \n");
    printf("        5.退出系统        \n");
    printf("***************************************\n");
}
 
void OptionMenu()//选择功能
{
    Clearing();//函数初始化 
    int number1;//表示选择
    Client* user;
    user = (Client*)malloc(sizeof(Client));//动态内存分配
 
    
    do
    {
        system("cls");//清屏
        MainMenu();
        printf("请选择...\n");
        scanf("%d", &number1);//输入
        getchar();//吸收换行符
 
        switch (number1)
        {
            case 0:
                printf("为了您的信息准确、安全,请先登陆...\n");
                Sleep(500);
                Login(user);//登陆
                AddInformation(); 
                break;//增加信息函数 
            case 1:FlightInformation(); break;//浏览航班信息 
            case 5:
                SaveInformation();//保存信息
                printf("      感谢使用航班订票系统,再见!        \n");
                exit(0);
            default:
                printf("您输入不对,只能输入0-5...\n");
                printf("请重新输入...\n");
                Sleep(500);//停留
        }
    } while ((number1 <= 5) && (number1 >= 0));//结束标志
}
 
void Login(Client client[])//登陆
{
    printf("请输入您的账号: \n");
    scanf("%s", &client->name);
    printf("请输入您的密码: \n");
    scanf("%s", &client->secret);
 
    FILE* fp = fopen("B.txt", "a");//定义文件指针 用户账号 密码文件
 
    char clientNam[20] = "\n账号:";//定义账号 密码
    char clientsecret[10] = "\n密码:";
 
    fputs(clientNam, fp);
    fputs(client->name, fp);
 
    fputs(clientsecret, fp);
    fputs(client->secret, fp);
    fclose(fp);
    fp = NULL;
 
    printf("登陆成功!\n");
    
}
 
void Clearing()//函数初始化 
{
    if (_access("flight.dat", 0)) Build();//没有权限对文件进行操作就建立
    else Read();//阅读 
}
 
void Build()//创建航班信息数据文件 
{
    FILE* fp1;//定义文件指针 
    if ((fp1 = fopen("flight.dat", "wb")) == NULL)
    {
        printf("创建航班信息文件失败!\n");
        getchar();
        return;
    }
    printf("请依次输入航班信息...\n");
 
    for (i = 0; i < N; i++)
    {
        printf("请输入航班号:\n");
        scanf("%d", &Flight[i].flightnumber);
 
        printf("请输入起始站:\n");
        scanf("%s", Flight[i].startstaion);
 
        printf("请输入终点站:\n");
        scanf("%s", Flight[i].endstation);
 
        printf("请输入预售机票数:\n");
        scanf("%d", &Flight[i].count);
 
        fwrite(&Flight[i], sizeof(struct flight), 1, fp1);//写入文件
 
        m++;//航班增加
 
        printf("已添加,是否继续添加航班信息?(Y/N)\n");
        scanf("%s", ch);
        if (!strcmp(ch, "Y"))
        {
            fclose(fp1);
            return;
        }
    }
}
 
void Read()//读取文件 
{
    FILE* fp2;//定义文件指针
    if ((fp2 = fopen("flight.dat", "r")) == NULL)
    {
        printf("创建航班信息文件失败!\n");
        getchar();
        return;
    }
    i = 0;
    while (!feof(fp2))//用文件结束符来判断文件是否被关闭 feof()函数 即检验文件是否到了末尾
    {
        fread(&Flight[i], sizeof(struct flight), 1, fp2);
        i++;
        m++;//计算航班数 
    }
    m--;
    fclose(fp2);
}
 
void AddInformation()//增加信息函数 
{
    do
    {
        printf("请依次输入航班信息...\n");
 
        printf("请输入航班号:\n");
        scanf("%d", &Flight[i].flightnumber);
 
        printf("请输入起始站:\n");
        scanf("%s", Flight[i].startstaion);
 
        printf("请输入终点站:\n");
        scanf("%s", Flight[i].endstation);
 
        printf("请输入预售机票数:\n");
        scanf("%d", &Flight[i].count);
 
        m++;//航班数量增加
 
        printf("已添加,是否继续添加航班信息?(Y/N)\n");
        scanf("%s", ch);
    } while (!strcmp(ch, "Y"));
}
 
void SaveInformation()//保存航班信息 
{
    FILE* fp3;
    if ((fp3 = fopen("flight.dat", "wb")) == NULL)
    {
        printf("创建航班信息文件失败!\n");
        getchar();
        return;
    }
    for (i = 0; i < m; i++)
    {
        fwrite(&Flight[i], sizeof(struct flight), 1, fp3);
    }
    fclose(fp3);
}
 
void output()//航班信息输出 
{
    printf("航班号\t\t起始站\t\t终点站\t\t机票数\t\t\n");
    for (i = 0; i < m; i++)
    {
        printf(PRINT);
    }
}
 
void FlightInformation()//航班信息浏览 
{
    printf("目前的航班信息如下...\n");
    output();
    printf("请按enter键返回上级菜单...\n");
    getchar();//做地推怎么跟人打招呼吸收换行符
}

做地推怎么跟人打招呼相关推荐

  1. 很多人觉得做地推很没有面子

    很多人觉得做地推很没有面子,认为摆地摊没有什么发展,挣不了多少钱.\ \ 我们这边有句话说:大钱挣不来,小钱看不上.当你口袋和卡里钱都没有的时候,拿什么撑起所谓的面子啊?\ \ 每个人都有挣大钱的梦想 ...

  2. 实现微信自动向附近的人打招呼,收到指定账户推送文章时自动进入微信打开链接

    学习功能强大的AccessibilityService!!! 以下是本人根据自动抢红包的实现思路敲的用于微信自动向附近的人打招呼的核心代码 public class AutoService exten ...

  3. 实现微信自动向附近的人打招呼,实现收到指定账户推送文章时自动进入微信打开链接

    学习功能强大的AccessibilityService!!! 以下是本人根据自动抢红包的实现思路敲的用于微信自动向附近的人打招呼的核心代码 public class AutoService exten ...

  4. 做消息推送 8 年的极光,为何做物联网 JIoT 平台?

    作者 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 在移动开发里,开发者有三大刚需:统计分析.消息推送.统一登录.其中对于消息推送,有一家企业自移动开发的潮流伊始,便坚持为开发者提供这项基 ...

  5. 水果店开业前尝试做地推活动

    水果店开业活动策划方案怎么做,水果店开业充值卡方案怎么做. 开业前尝试做地推活动,开业前可以去每个小区做地推,不是在门店门口,去远一点附近的地方,比如车厘子,批发价是40块钱,店里正常卖最少要卖58, ...

  6. 阿里云“网红“运维工程师白金:做一个平凡的圆梦人

    他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名"辟拾(P10)": 他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路: 他爱好清 ...

  7. 阿里云“网红quot;运维工程师白金:做一个平凡的圆梦人

    他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名"辟拾(P10)": 他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路: 他爱好清 ...

  8. 阿里云“网红运维工程师白金:做一个平凡的圆梦人

    他是阿里云的一位 P8 运维专家,却很有野心得给自己取花名"辟拾(P10)": 他没有华丽的履历,仅凭着 26 年的热爱与坚持,一步一个脚印踏出了属于自己的技术逆袭之路: 他爱好清 ...

  9. 为什么要做巧推整站快速排名SEO优化?

    如标题抛出一个疑问,为什么要做巧推整站快速排名seo.qt99.cn相信很多企业和公司都会有同感,公司让人把公司官网给搭建起来,产品信息和公司新闻也天天更新,但是就是没带来实质性的流量和排名,往往这样 ...

最新文章

  1. Typora+PicGo图床配置(本地图片-->网络url~博客必备)
  2. Cocos2d-x 基础元素
  3. 19_Android中图片处理原理篇,关于人脸识别网站,图片加载到内存,图片缩放,图片翻转倒置,网上撕衣服游戏案例编写
  4. 用Selenium自动化测试时,让ChromeDriver中不显示“正受到自动测试软件控制”
  5. socket , 套接口还是套接字,傻傻分不清楚
  6. C#设计模式之2-抽象工厂模式
  7. python3 一 多线程死锁问题及解决方案
  8. 关于通用框架的一些想法
  9. vijos p1059——积木城堡
  10. nodejs下载集成到idea
  11. 前端常用素材网站整理
  12. 浅谈扩展欧几里得算法
  13. 网易云音乐 歌词制作软件 BesLyric
  14. 微信小程序商城系统订单管理功能介绍
  15. 使用geohash实现查找附近的人
  16. uniapp中简单方法之上传图片到腾讯云
  17. 南大小百合 计算机,是我从南大小百合里搜集的。已经编辑过了
  18. 2021高考成绩查询怎么查小分,2021微信哪个小程序可以查成绩 高考成绩怎么查
  19. 计算机概论复习:知识大全
  20. ale插件 vim_vim ale插件详情

热门文章

  1. 1. 搭建scapy
  2. python 文件及文件夹操作
  3. 算法----并行算法
  4. 统计某个字符串中指定字符串出现的次数
  5. X86汇编语言从实模式到保护模式20:平坦模型
  6. bmp转YUV RGB转YUV HM学习
  7. matlab 曲线拟合--视频编码中PSNR计算及码率计算
  8. matlab 按文件名排序,在MATLAB中对字符串进行排序,如Windows 7,对资源管理器中的文件名进行排序(尊重数字中间字符串)...
  9. 403 forbidden nginx_5,Logstash正则提取Nginx日志 - pwcc
  10. python错了能改写吗_python 日常错误