C++實(shí)現(xiàn)飛機(jī)訂票系統(tǒng)
更新時(shí)間:2022年03月14日 11:19:07 作者:那時(shí)初見
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)飛機(jī)訂票系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了C++實(shí)現(xiàn)飛機(jī)訂票系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
// 飛機(jī)訂票系統(tǒng).cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include<conio.h>
#define N 2
typedef struct plane
{
? ? char ID[10];
? ? char Start_Place[10];
? ? char End_Place[10];
? ? float price;
? ? int Buy_num;
? ? int Max_num;
? ? char time[20];
}PLANE;
PLANE p[N];
void menu();
void menu1();
void count()
{
? ? char a[10];
? ? int i, num = 0;
? ? printf("請(qǐng)您輸入要統(tǒng)計(jì)的飛機(jī)目的地:");
? ? scanf("%s", a);
? ? printf("航班代號(hào) ? ? 起始地點(diǎn) ? ?目的地 ? ?票價(jià) ? ?已售 ? ? 乘客容量 時(shí)間/n");
? ? for (i = 0; i<N; i++)
? ? {
? ? ? ? if (strcmp(a, p[i].End_Place) == 0)
? ? ? ? {
? ? ? ? ? ? num++;
? ? ? ? ? ? printf("%s ? ?%s ? ?%s ? ?%7.2f ? ?%d ? ?%d ? ?%d/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time);
? ? ? ? }
? ? }
? ? printf("/n您想統(tǒng)計(jì)的航班有%d條!/n", num);
? ? getchar();
? ? menu1();
}
void browse()
{
? ? int i;
? ? system("cls");
? ? printf("瀏覽航班信息:/n");
? ? printf("航班代號(hào) ? ? 起始地點(diǎn) ? ?目的地 ? ?票價(jià) ? ?已售 ? ? 乘客容量 時(shí)間/n");
? ? for (i = 0; i<N; i++)
? ? {
? ? ? ? printf("%s ? ?%s ? ?%s ? ?%7.2f ? ?%d ? ?%d ? ?%s/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time);
? ? }
? ? getchar();
? ? menu();
}
void order()
{
? ? int i, j;
? ? PLANE temp;
? ? for (i = 0; i<N; i++)
? ? {
? ? ? ? for (j = i; j<N; j++)
? ? ? ? {
? ? ? ? ? ? if (strcmp(p[i].time, p[j].time)>0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? temp = p[i];
? ? ? ? ? ? ? ? p[i] = p[j];
? ? ? ? ? ? ? ? p[j] = temp;
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? browse();
}
void enter()
{
? ? int i;
? ? system("cls");
? ? printf("請(qǐng)您輸入航班信息:");
? ? for (i = 0; i<N; i++)
? ? {
? ? ? ? printf("航班代號(hào):");
? ? ? ? scanf("%s", p[i].ID);
? ? ? ? printf("起飛地點(diǎn):");
? ? ? ? scanf("%s", p[i].Start_Place);
? ? ? ? printf("目的地點(diǎn):");
? ? ? ? scanf("%s", p[i].End_Place);
? ? ? ? printf("票價(jià):");
? ? ? ? scanf("%f", &p[i].price);
? ? ? ? p[i].Buy_num = 0;
? ? ? ? printf("乘客容量:");
? ? ? ? scanf("%d", &p[i].Max_num);
? ? ? ? printf("起飛時(shí)間:");
? ? ? ? scanf("%s", p[i].time);
? ? }
? ? getchar();
? ? menu();
}
void buy()
{
? ? char t[20], place[20];
? ? int i, w = 0, num;
? ? printf("時(shí)間");
? ? scanf("%s", t);
? ? printf("mudidi");
? ? scanf("%s", place);
? ? for (i = 0; i<N; i++)
? ? {
? ? ? ? if (strcmp(t, p[i].time) == 0 && strcmp(place, p[i].End_Place) == 0)
? ? ? ? {
? ? ? ? ? ? w = 1;
? ? ? ? ? ? printf("%s ? ?%s ? ?%s ? ?%7.2f ? ?%d ? ?%d ? ?%s/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time);
? ? ? ? ? ? printf("買幾張票!");
? ? ? ? ? ? scanf("%d", &num);
? ? ? ? ? ? if (p[i].Buy_num + num>p[i].Max_num)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? printf("當(dāng)前余票不足,只剩%d張", p[i].Max_num - p[i].Buy_num);
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? p[i].Buy_num = p[i].Buy_num + num;
? ? ? ? ? ? ? ? printf("購(gòu)票成功!");
? ? ? ? ? ? }
? ? ? ? }
? ? }
? ? if (w == 0)
? ? ? ? printf("沒有您要得票!");
? ? getchar();
? ? menu1();
}
void back()
{
? ? char id[20];
? ? int i, w = 0;
? ? printf("id:");
? ? scanf("%s", id);
? ? for (i = 0; i<N; i++)
? ? {
? ? ? ? if (strcmp(id, p[i].ID) == 0)
? ? ? ? {
? ? ? ? ? ? p[i].Buy_num--;
? ? ? ? ? ? printf("退票成功");
? ? ? ? ? ? w = 1;
? ? ? ? }
? ? }
? ? if (w == 0)
? ? ? ? printf("退票失敗");
? ? getchar();
? ? menu1();
}
void bowse_time()
{
? ? char a[20];
? ? int i, w = 0;
? ? printf("請(qǐng)您輸入要查詢的飛機(jī)起飛時(shí)間:");
? ? scanf("%s", a);
? ? printf("航班代號(hào) ? ? 起始地點(diǎn) ? ?目的地 ? ?票價(jià) ? ?已售 ? ? 乘客容量 時(shí)間/n");
? ? for (i = 0; i<N; i++)
? ? {
? ? ? ? if (strcmp(a, p[i].time) == 0)
? ? ? ? {
? ? ? ? ? ? w = 1;
? ? ? ? ? ? printf("%s ? ?%s ? ?%s ? ?%7.2f ? ?%d ? ?%d ? ?%s/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time);
? ? ? ? }
? ? }
? ? if (w == 0)
? ? ? ? printf("沒有您想查詢的航班!/n");
? ? getchar();
? ? menu1();
}
void bowse_palce()
{
? ? char a[10];
? ? int i, w = 0;
? ? printf("請(qǐng)您輸入要查詢的飛機(jī)目的地:");
? ? scanf("%s", a);
? ? printf("航班代號(hào) ? ? 起始地點(diǎn) ? ?目的地 ? ?票價(jià) ? ?已售 ? ? 乘客容量 時(shí)間/n");
? ? for (i = 0; i<N; i++)
? ? {
? ? ? ? if (strcmp(a, p[i].End_Place) == 0)
? ? ? ? {
? ? ? ? ? ? w = 1;
? ? ? ? ? ? printf("%s ? ?%s ? ?%s ? ?%7.2f ? ?%d ? ?%d ? ?%d/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time);
? ? ? ? }
? ? }
? ? if (w == 0)
? ? ? ? printf("沒有您想查詢的航班!/n");
? ? getchar();
? ? menu1();
}
void bowse_ID()
{
? ? char a[10];
? ? int i, w = 0;
? ? printf("請(qǐng)您輸入要查詢的飛機(jī)航班號(hào):");
? ? scanf("%s", a);
? ? printf("航班代號(hào) ? ? 起始地點(diǎn) ? ?目的地 ? ?票價(jià) ? ?已售 ? ? 乘客容量 時(shí)間/n");
? ? for (i = 0; i<N; i++)
? ? {
? ? ? ? if (strcmp(a, p[i].ID) == 0)
? ? ? ? {
? ? ? ? ? ? w = 1;
? ? ? ? ? ? printf("%s ? ?%s ? ?%s ? ?%7.2f ? ?%d ? ?%d ? ?%d/n", p[i].ID, p[i].Start_Place, p[i].End_Place, p[i].price, p[i].Buy_num, p[i].Max_num, p[i].time);
? ? ? ? }
? ? }
? ? if (w == 0)
? ? ? ? printf("沒有您想查詢的航班!/n");
? ? getchar();
? ? menu1();
}
void menu1()
{
? ? int n, w1;
? ? do
? ? {
? ? ? ? system("cls");
? ? ? ? puts("/t/t/t/t ? ?飛機(jī)售票操作!/n/n");
? ? ? ? puts("/t/t*********************MENU*********************/n/n");
? ? ? ? puts("/t/t/t/t1.Buy ticket");
? ? ? ? puts("/t/t/t/t2.return ticket");
? ? ? ? puts("/t/t/t/t3.bowse by time");
? ? ? ? puts("/t/t/t/t4.bowse by end palce");
? ? ? ? puts("/t/t/t/t5.bowse by plane ID");
? ? ? ? puts("/t/t/t/t6.return to menu");
? ? ? ? puts("/n/n/t/t**********************************************/n");
? ? ? ? printf("Choice your number(1-6): [ ]/b/b");
? ? ? ? scanf("%d", &n);
? ? ? ? if (n<0 || n>6)
? ? ? ? {
? ? ? ? ? ? w1 = 1;
? ? ? ? ? ? printf("your choice is not between 1 and 4,Please input again:");
? ? ? ? ? ? getchar();
? ? ? ? }
? ? ? ? else ? ?w1 = 0;
? ? } while (w1 == 1);
? ? switch (n)
? ? {
? ? case 1:buy(); break;
? ? case 2:back(); break;
? ? case 3:bowse_time(); break;
? ? case 4:bowse_palce(); break;
? ? case 5:bowse_ID(); break;
? ? case 6:menu();
? ? }
}
?int save()
{
? ? int w = 1;
? ? FILE *fp;
? ? int i;
? ? system("cls");
? ? if ((fp = fopen("c://ticket.txt", "wb")) == NULL)
? ? {
? ? ? ? printf("/nCannot open file/n");
? ? ? ? return NULL;
? ? }
? ? for (i = 0; i<N; i++)
? ? if (fwrite(&p[i], sizeof(struct plane), 1, fp) != 1)
? ? {
? ? ? ? printf("file write error/n");
? ? ? ? w = 0;
? ? }
? ? if (w == 1)
? ? {
? ? ? ? printf("file save ok!/n");
? ? }
? ? fclose(fp);
? ? getchar();
? ? menu();
}
int load()
{
? ? FILE *fp;
? ? int i, w;
? ? w = 1;
? ? system("cls");
? ? if ((fp = fopen("c://ticket.txt", "rb")) == NULL)
? ? {
? ? ? ? printf("/nCannot open file/n");
? ? ? ? w = 0;
? ? ? ? return NULL;
? ? }
? ? for (i = 0; !feof(fp); i++)
? ? {
? ? ? ? fread(&p[i], sizeof(struct plane), 1, fp);
? ? }
? ? fclose(fp);
? ? if (w == 1)
? ? ? ? printf("Load file ok!");
? ? getchar();
? ? menu();
}
void main()
{
? ? menu();
}
void menu()
{
? ? int n, w1;
? ? do
? ? {
? ? ? ? system("cls");
? ? ? ? puts(" ? ? ? ? ? ? ? ? ? ? 飛機(jī)售票系統(tǒng) ? ");
? ? ? ? puts("*************************MENU*************************");
? ? ? ? puts(" ? ?1. ?Enter new plane");
? ? ? ? puts(" ? ?2. ?Browse all");
? ? ? ? puts(" ? ?3. ?opreration");
? ? ? ? puts(" ? ?4. ?Save file");
? ? ? ? puts(" ? ?5. ?Load file");
? ? ? ? puts(" ? ?6. ?Exit");
? ? ? ? puts("******************************************************");
? ? ? ? printf("Choice your number(1-6): ");
? ? ? ? scanf("%d", &n);
? ? ? ? if (n<0 || n>6)
? ? ? ? {
? ? ? ? ? ? w1 = 1;
? ? ? ? ? ? printf("your choice is not between 1 and 6,Please input again:");
? ? ? ? ? ? getchar();
? ? ? ? }
? ? ? ? else ? ?w1 = 0;
? ? } while (w1 == 1);
? ? switch (n)
? ? {
? ? case 1: enter(); break;
? ? case 2: browse(); break;
? ? case 3: menu1(); break;
? ? case 4: save(); break;
? ? case 5: load(); break;
? ? case 6: exit(0);
? ? }
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
C++虛函數(shù)的實(shí)現(xiàn)機(jī)制分析
這篇文章主要介紹了C++虛函數(shù)的實(shí)現(xiàn)機(jī)制分析,需要的朋友可以參考下2014-07-07
用Visual Studio2017寫C++靜態(tài)庫(kù)圖文詳解
這篇文章主要介紹了用Visual Studio2017寫C++靜態(tài)庫(kù)的圖文教程,需要的朋友可以參考下2017-04-04
C++深入分析講解函數(shù)與重載知識(shí)點(diǎn)
C++?允許多個(gè)函數(shù)擁有相同的名字,只要它們的參數(shù)列表不同就可以,這就是函數(shù)的重載(Function?Overloading),借助重載,一個(gè)函數(shù)名可以有多種用途2022-06-06
C語言中設(shè)置進(jìn)程優(yōu)先順序的方法
這篇文章主要介紹了C語言中設(shè)置進(jìn)程優(yōu)先順序的方法,包括setpriority()函數(shù)和getpriority()函數(shù)以及nice()函數(shù),需要的朋友可以參考下2015-08-08
C++利用兩個(gè)棧實(shí)現(xiàn)隊(duì)列的方法
這篇文章主要給大家介紹了關(guān)于C++利用兩個(gè)棧實(shí)現(xiàn)隊(duì)列的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05

