C语言实现-航空订票系统(飞机订票系统)

操作系统:Windows下运行。如果需要在Linux运行,则需要修改删除conio.h,自己写个头文件获取键盘输入。我已经写好了getch.h文件,需要将其导入使用。

开发环境:CodeBlocks

开发语言:C

实现功能:登录,订票,退票

数据存储:文本读写

涉及文件:

C语言实现-航空订票系统(飞机订票系统)_第1张图片

相关文件下载:

码云:传送门  GitHub:传送门

相关图片(仅供参考):程序是没有涉及旅行社的

ER图:

C语言实现-航空订票系统(飞机订票系统)_第2张图片

数据库:

C语言实现-航空订票系统(飞机订票系统)_第3张图片

类图:

C语言实现-航空订票系统(飞机订票系统)_第4张图片

用例图:

C语言实现-航空订票系统(飞机订票系统)_第5张图片

订票顺序图:

C语言实现-航空订票系统(飞机订票系统)_第6张图片

订票状态图:

C语言实现-航空订票系统(飞机订票系统)_第7张图片

登录活动图:

C语言实现-航空订票系统(飞机订票系统)_第8张图片

以上图片仅供参考,请自行斟酌

程序主界面:

C语言实现-航空订票系统(飞机订票系统)_第9张图片

 进入子功能需要账号和密码,存储在passenger.txt文件中

源码如下:

#include 
#include 
#include 
#include 
//#include "getch.h"
#include 
#define MAX_Flight 50
#define MAX_Passenger 20
#define MAX_Order 50

typedef struct Flight
{
    char fid[20];         //航班号
    char fname[20];	//航班名称
    char start[10];  //起点
    char end[10];     //终点
    int fnum;	//票数
}Flight;

typedef struct Passenger
{
    char pid[20];	//身份证
    char pname[10];	//姓名
    char password[20];	//密码
    char tell[20];	//电话
}Passenger;

typedef struct Order
{
    char pid[20];	//身份证
    char fid[20];	//航班号
    int num;	//票数
}Order;

Flight *FLI;
Passenger *PAS;
Order *ORD;

char start[10]; //起点
char end[10];   //终点
char search_fid[50][20];    //符合条件的航班号
int search_fnum[50];    //符合条件的航班票数
int online = 0; //是否登录的变量
char online_pid[20];    //在线用户的身份证
int search_num = 0;    //符合条件的航班数

void init_sys(void);	// 系统初始化
void show_flight(void);	// 显示航班表
void start_sys(void);	// 系统开始运行
void exit_sys(void);	// 退出系统
void menu(void);		// 生成主菜单
void login(void);       // 登录
void logout(void);  //用户登出
void passenger_info(void);  //查询旅客信息
bool change_pas_info(void); //修改旅客信息
void search_start(void);	// 生成查询页面
bool search(void);	// 查询航班
void order_list(void);	// 生成订单表
void del_order(void);	// 退票
void clear_stdin(void);	// 清除输入缓冲区
char* get_str(char* str,size_t len);  // 获取字符串
char get_cmd(char start,char end);	// 获取cmd命令

int main()
{
    init_sys();
    start_sys();
    exit_sys();
    return 0;
}

// 系统初始化
void init_sys(void)
{
    // 申请堆内存、加载数据
    FLI = calloc(MAX_Flight,sizeof(Flight));
    PAS = calloc(MAX_Passenger,sizeof(Passenger));
    ORD = calloc(MAX_Order,sizeof(Order));
    printf("system_init...\n");

    FILE* ofrp = fopen("order.txt","r");
    int i=0;
    for(i=0; i0)    //查询到对应航班
                    {
                        printf("order success\n");
                        int j=0;
                        for(j=0; j 0 && i == MAX_Flight-1)
        {
            //show_flight();
            return true;
        }
    }
}

// 输出订单信息
void order_list(void)
{
    if(online == 1)
    {
        int i=0;
        for(i=0; i_IO_read_ptr = stdin->_IO_read_end;//清理输入缓冲区
}
*/

// 读取输入字符串
char* get_str(char* str,size_t len)
{
    if(NULL == str)
    {
        puts("empty ptr!");
        return NULL;
    }

    char *in=fgets(str,len,stdin);

    size_t cnt = strlen(str);
    if('\n' == str[cnt-1])
    {
        str[cnt-1] = '\0';
    }
    else
    {
        scanf("%*[^\n]");
        scanf("%*c");
    }

    //clear_stdin();

    return str;
}

// 获取cmd命令
char get_cmd(char start,char end)
{
    //clear_stdin();

    printf("please entry cmd:");
    while(true)
    {
        char val = getch();
        if(val >= start && val <= end)
        {
            printf("%c\n",val);
            return val;
        }
    }
}

 

你可能感兴趣的:(C,C/C++程序)