引言
飞机购票系统是航空业的重要组成部分,它不仅方便了旅客的出行,也提高了航空公司的运营效率。使用C语言实现一个飞机购票系统,不仅能够锻炼编程能力,还能深入了解软件开发的流程。本文将详细讲解如何使用C语言实现一个基本的飞机购票系统。
系统设计
1. 系统功能
- 用户注册与登录
- 飞行航班查询
- 舱位预订
- 支付与订单管理
- 用户信息管理
2. 数据结构设计
- 用户信息结构体:包含用户名、密码、联系方式等。
- 航班信息结构体:包含航班号、出发地、目的地、起飞时间、到达时间、舱位信息等。
- 订单信息结构体:包含订单号、用户名、航班号、舱位类型、价格、支付状态等。
关键技术
1. 数据存储
使用文件存储用户信息、航班信息和订单信息。可以使用文本文件或二进制文件进行存储。
2. 数据结构
- 使用链表存储航班信息和订单信息,方便插入和删除操作。
- 使用哈希表存储用户信息,提高查询效率。
3. 接口设计
- 用户注册与登录接口
- 航班查询接口
- 舱位预订接口
- 支付与订单管理接口
- 用户信息管理接口
代码实现
1. 用户注册与登录
#include <stdio.h>
#include <string.h>
#define MAX_USER 100
typedef struct {
char username[50];
char password[50];
char phone[20];
} User;
User users[MAX_USER];
int user_count = 0;
void register_user() {
if (user_count >= MAX_USER) {
printf("用户数量已达上限!\n");
return;
}
User user;
printf("请输入用户名:");
scanf("%s", user.username);
printf("请输入密码:");
scanf("%s", user.password);
printf("请输入联系方式:");
scanf("%s", user.phone);
strcpy(users[user_count].username, user.username);
strcpy(users[user_count].password, user.password);
strcpy(users[user_count].phone, user.phone);
user_count++;
printf("注册成功!\n");
}
void login_user() {
char username[50];
char password[50];
printf("请输入用户名:");
scanf("%s", username);
printf("请输入密码:");
scanf("%s", password);
for (int i = 0; i < user_count; i++) {
if (strcmp(users[i].username, username) == 0 && strcmp(users[i].password, password) == 0) {
printf("登录成功!\n");
return;
}
}
printf("用户名或密码错误!\n");
}
2. 航班查询
#include <stdio.h>
#include <string.h>
#define MAX_FLIGHT 100
typedef struct {
char flight_number[10];
char departure[50];
char destination[50];
char departure_time[20];
char arrival_time[20];
char cabin[10];
} Flight;
Flight flights[MAX_FLIGHT];
int flight_count = 0;
void add_flight() {
if (flight_count >= MAX_FLIGHT) {
printf("航班数量已达上限!\n");
return;
}
Flight flight;
printf("请输入航班号:");
scanf("%s", flight.flight_number);
printf("请输入出发地:");
scanf("%s", flight.departure);
printf("请输入目的地:");
scanf("%s", flight.destination);
printf("请输入起飞时间:");
scanf("%s", flight.departure_time);
printf("请输入到达时间:");
scanf("%s", flight.arrival_time);
printf("请输入舱位:");
scanf("%s", flight.cabin);
strcpy(flights[flight_count].flight_number, flight.flight_number);
strcpy(flights[flight_count].departure, flight.departure);
strcpy(flights[flight_count].destination, flight.destination);
strcpy(flights[flight_count].departure_time, flight.departure_time);
strcpy(flights[flight_count].arrival_time, flight.arrival_time);
strcpy(flights[flight_count].cabin, flight.cabin);
flight_count++;
printf("添加航班成功!\n");
}
void search_flight() {
char flight_number[10];
printf("请输入航班号:");
scanf("%s", flight_number);
for (int i = 0; i < flight_count; i++) {
if (strcmp(flights[i].flight_number, flight_number) == 0) {
printf("航班号:%s\n", flights[i].flight_number);
printf("出发地:%s\n", flights[i].departure);
printf("目的地:%s\n", flights[i].destination);
printf("起飞时间:%s\n", flights[i].departure_time);
printf("到达时间:%s\n", flights[i].arrival_time);
printf("舱位:%s\n", flights[i].cabin);
return;
}
}
printf("未找到航班!\n");
}
3. 舱位预订
#include <stdio.h>
#include <string.h>
#define MAX_USER 100
#define MAX_FLIGHT 100
#define MAX_ORDER 100
typedef struct {
char username[50];
char flight_number[10];
char cabin[10];
float price;
int pay_status;
} Order;
Order orders[MAX_ORDER];
int order_count = 0;
void book_ticket() {
char username[50];
char flight_number[10];
char cabin[10];
printf("请输入用户名:");
scanf("%s", username);
printf("请输入航班号:");
scanf("%s", flight_number);
printf("请输入舱位:");
scanf("%s", cabin);
for (int i = 0; i < flight_count; i++) {
if (strcmp(flights[i].flight_number, flight_number) == 0 && strcmp(flights[i].cabin, cabin) == 0) {
printf("航班号:%s\n", flights[i].flight_number);
printf("出发地:%s\n", flights[i].departure);
printf("目的地:%s\n", flights[i].destination);
printf("起飞时间:%s\n", flights[i].departure_time);
printf("到达时间:%s\n", flights[i].arrival_time);
printf("舱位:%s\n", flights[i].cabin);
printf("价格:%f\n", flights[i].price);
Order order;
strcpy(order.username, username);
strcpy(order.flight_number, flight_number);
strcpy(order.cabin, cabin);
order.price = flights[i].price;
order.pay_status = 0;
strcpy(orders[order_count].username, order.username);
strcpy(orders[order_count].flight_number, order.flight_number);
strcpy(orders[order_count].cabin, order.cabin);
orders[order_count].price = order.price;
orders[order_count].pay_status = order.pay_status;
order_count++;
printf("预订成功!\n");
return;
}
}
printf("未找到航班或舱位不足!\n");
}
4. 支付与订单管理
#include <stdio.h>
#include <string.h>
#define MAX_USER 100
#define MAX_FLIGHT 100
#define MAX_ORDER 100
typedef struct {
char username[50];
char flight_number[10];
char cabin[10];
float price;
int pay_status;
} Order;
Order orders[MAX_ORDER];
int order_count = 0;
void pay_order() {
char username[50];
char flight_number[10];
printf("请输入用户名:");
scanf("%s", username);
printf("请输入航班号:");
scanf("%s", flight_number);
for (int i = 0; i < order_count; i++) {
if (strcmp(orders[i].username, username) == 0 && strcmp(orders[i].flight_number, flight_number) == 0) {
orders[i].pay_status = 1;
printf("支付成功!\n");
return;
}
}
printf("未找到订单或订单已支付!\n");
}
void manage_orders() {
for (int i = 0; i < order_count; i++) {
printf("订单号:%d\n", i + 1);
printf("用户名:%s\n", orders[i].username);
printf("航班号:%s\n", orders[i].flight_number);
printf("舱位:%s\n", orders[i].cabin);
printf("价格:%f\n", orders[i].price);
printf("支付状态:%s\n", orders[i].pay_status ? "已支付" : "未支付");
printf("\n");
}
}
5. 用户信息管理
#include <stdio.h>
#include <string.h>
#define MAX_USER 100
typedef struct {
char username[50];
char password[50];
char phone[20];
} User;
User users[MAX_USER];
int user_count = 0;
void add_user() {
if (user_count >= MAX_USER) {
printf("用户数量已达上限!\n");
return;
}
User user;
printf("请输入用户名:");
scanf("%s", user.username);
printf("请输入密码:");
scanf("%s", user.password);
printf("请输入联系方式:");
scanf("%s", user.phone);
strcpy(users[user_count].username, user.username);
strcpy(users[user_count].password, user.password);
strcpy(users[user_count].phone, user.phone);
user_count++;
printf("添加用户成功!\n");
}
void delete_user() {
char username[50];
printf("请输入用户名:");
scanf("%s", username);
for (int i = 0; i < user_count; i++) {
if (strcmp(users[i].username, username) == 0) {
for (int j = i; j < user_count - 1; j++) {
users[j] = users[j + 1];
}
user_count--;
printf("删除用户成功!\n");
return;
}
}
printf("未找到用户!\n");
}
总结
本文详细讲解了如何使用C语言实现一个基本的飞机购票系统。通过学习本文,读者可以了解到系统设计、关键技术、代码实现等方面的知识。在实际开发过程中,可以根据需求对系统进行扩展和优化。希望本文对读者有所帮助。