在这个数字化时代,订票系统已经成为人们日常生活中不可或缺的一部分。C语言作为一种历史悠久且功能强大的编程语言,非常适合用来开发订票系统。本文将带你轻松上手,一步步实现在线购票功能。
一、项目概述
本订票系统采用C语言编写,主要实现以下功能:
- 用户注册与登录:用户可以注册账号,登录后进行购票操作。
- 航班查询:用户可以查询不同航班的详细信息。
- 在线购票:用户可以在线购买机票,并查看订单信息。
- 订单管理:用户可以查看、修改和取消订单。
二、系统设计
2.1 数据库设计
本系统采用内存数据库,存储用户信息、航班信息和订单信息。数据库结构如下:
- 用户表:包含用户ID、用户名、密码、邮箱等字段。
- 航班表:包含航班号、出发地、目的地、起飞时间、票价等字段。
- 订单表:包含订单号、用户ID、航班号、购买数量、总价等字段。
2.2 系统架构
本系统采用模块化设计,主要模块如下:
- 用户模块:负责用户注册、登录、信息查询等操作。
- 航班模块:负责航班信息查询、航班详情展示等操作。
- 订单模块:负责订单创建、订单查询、订单修改、订单取消等操作。
三、实现步骤
3.1 用户模块
- 注册功能:
#include <stdio.h>
#include <string.h>
#define MAX_USER 100
typedef struct {
int id;
char username[50];
char password[50];
char email[100];
} 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.email);
user.id = user_count;
strcpy(users[user_count], user);
user_count++;
printf("注册成功!\n");
}
- 登录功能:
int 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) {
return users[i].id;
}
}
printf("用户名或密码错误!\n");
return -1;
}
3.2 航班模块
- 查询航班信息:
#include <stdio.h>
#include <string.h>
#define MAX_FLIGHT 100
typedef struct {
int id;
char flight_number[20];
char departure[50];
char destination[50];
char departure_time[50];
int price;
} 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("%d", &flight.price);
flight.id = flight_count;
strcpy(flights[flight_count], flight);
flight_count++;
printf("添加航班成功!\n");
}
void query_flights() {
printf("航班号\t出发地\t目的地\t起飞时间\t票价\n");
for (int i = 0; i < flight_count; i++) {
printf("%s\t%s\t%s\t%s\t%d\n", flights[i].flight_number, flights[i].departure, flights[i].destination, flights[i].departure_time, flights[i].price);
}
}
3.3 订单模块
- 创建订单:
#include <stdio.h>
#include <string.h>
#define MAX_ORDER 100
typedef struct {
int id;
int user_id;
int flight_id;
int quantity;
int total_price;
} Order;
Order orders[MAX_ORDER];
int order_count = 0;
void create_order() {
int user_id = login_user();
if (user_id == -1) {
return;
}
int flight_id;
printf("请输入航班号:");
scanf("%s", flight_id);
for (int i = 0; i < flight_count; i++) {
if (strcmp(flights[i].flight_number, flight_id) == 0) {
printf("航班信息:\n");
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("票价:%d\n", flights[i].price);
int quantity;
printf("请输入购买数量:");
scanf("%d", &quantity);
Order order;
order.id = order_count;
order.user_id = user_id;
order.flight_id = flights[i].id;
order.quantity = quantity;
order.total_price = flights[i].price * quantity;
strcpy(orders[order_count], order);
order_count++;
printf("订单创建成功!\n");
return;
}
}
printf("航班号不存在!\n");
}
- 查询订单:
void query_orders() {
printf("订单号\t用户名\t航班号\t购买数量\t总价\n");
for (int i = 0; i < order_count; i++) {
printf("%d\t%s\t%s\t%d\t%d\n", orders[i].id, users[orders[i].user_id].username, flights[orders[i].flight_id].flight_number, orders[i].quantity, orders[i].total_price);
}
}
四、总结
通过以上步骤,我们成功实现了一个简单的在线订票系统。当然,这只是一个基础版本,实际应用中还需要考虑更多功能,如支付接口、航班状态查询等。希望本文能帮助你轻松上手C语言订票系统开发。