电影票务系统C语言编程入门教程:轻松打造你的购票小程序

2026-10-31 0 阅读

在数字化的今天,拥有一套属于自己的电影票务系统是一种技能,也是一种乐趣。C语言作为一种经典的编程语言,以其高效、简洁的特性,非常适合用来构建电影票务系统。本文将带你一步步入门,轻松打造你的购票小程序。

系统概述

首先,我们来了解一下电影票务系统的基本功能:

  1. 用户注册与登录:方便用户管理个人信息。
  2. 电影信息展示:包括电影名称、上映时间、票价等。
  3. 选座购票:用户可以选择座位,进行在线购票。
  4. 订单查询:用户可以查询自己的订单信息。
  5. 系统管理:管理员可以对电影信息、用户信息进行管理。

环境搭建

在开始编程之前,我们需要搭建一个合适的开发环境。以下是常用的C语言开发环境:

  1. 编译器:如GCC、Clang等。
  2. 文本编辑器:如VS Code、Sublime Text等。
  3. 调试器:如GDB等。

数据结构设计

电影票务系统需要存储大量的数据,因此,合理的数据结构设计至关重要。以下是一些常用的数据结构:

  1. 用户结构体:包含用户名、密码、邮箱、手机号等信息。
  2. 电影结构体:包含电影名称、上映时间、票价、剩余座位数等信息。
  3. 订单结构体:包含订单号、用户ID、电影ID、座位信息等信息。

功能实现

接下来,我们将分别实现系统的各个功能。

1. 用户注册与登录

#include <stdio.h>
#include <string.h>

#define MAX_USER 100

typedef struct {
    char username[50];
    char password[50];
    char email[50];
    char phone[50];
} User;

User users[MAX_USER];
int user_count = 0;

// 用户注册
void register_user() {
    if (user_count >= MAX_USER) {
        printf("用户数量已达上限!\n");
        return;
    }

    User u;
    printf("请输入用户名:");
    scanf("%s", u.username);
    printf("请输入密码:");
    scanf("%s", u.password);
    printf("请输入邮箱:");
    scanf("%s", u.email);
    printf("请输入手机号:");
    scanf("%s", u.phone);

    users[user_count++] = u;
    printf("注册成功!\n");
}

// 用户登录
void login_user() {
    char username[50], 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_MOVIE 50

typedef struct {
    char name[50];
    char time[50];
    float price;
    int remaining_seats;
} Movie;

Movie movies[MAX_MOVIE];
int movie_count = 0;

// 添加电影
void add_movie() {
    if (movie_count >= MAX_MOVIE) {
        printf("电影数量已达上限!\n");
        return;
    }

    Movie m;
    printf("请输入电影名称:");
    scanf("%s", m.name);
    printf("请输入上映时间:");
    scanf("%s", m.time);
    printf("请输入票价:");
    scanf("%f", &m.price);
    printf("请输入剩余座位数:");
    scanf("%d", &m.remaining_seats);

    movies[movie_count++] = m;
    printf("添加成功!\n");
}

// 展示电影信息
void show_movies() {
    for (int i = 0; i < movie_count; i++) {
        printf("电影名称:%s\n", movies[i].name);
        printf("上映时间:%s\n", movies[i].time);
        printf("票价:%f\n", movies[i].price);
        printf("剩余座位数:%d\n", movies[i].remaining_seats);
        printf("----------\n");
    }
}

3. 选座购票

#include <stdio.h>
#include <string.h>

#define MAX_USER 100
#define MAX_MOVIE 50
#define MAX_ORDER 100

typedef struct {
    char username[50];
    char password[50];
    char email[50];
    char phone[50];
} User;

typedef struct {
    char name[50];
    char time[50];
    float price;
    int remaining_seats;
} Movie;

typedef struct {
    int order_id;
    int user_id;
    int movie_id;
    int seat_number;
} Order;

User users[MAX_USER];
Movie movies[MAX_MOVIE];
Order orders[MAX_ORDER];
int user_count = 0, movie_count = 0, order_count = 0;

// 添加订单
void add_order() {
    if (order_count >= MAX_ORDER) {
        printf("订单数量已达上限!\n");
        return;
    }

    int user_id, movie_id;
    printf("请输入用户ID:");
    scanf("%d", &user_id);
    printf("请输入电影ID:");
    scanf("%d", &movie_id);

    Order o;
    o.order_id = order_count;
    o.user_id = user_id;
    o.movie_id = movie_id;
    o.seat_number = 1; // 默认选择1号座位

    orders[order_count++] = o;
    printf("添加成功!\n");
}

// 展示订单信息
void show_orders() {
    for (int i = 0; i < order_count; i++) {
        printf("订单ID:%d\n", orders[i].order_id);
        printf("用户ID:%d\n", orders[i].user_id);
        printf("电影ID:%d\n", orders[i].movie_id);
        printf("座位号:%d\n", orders[i].seat_number);
        printf("----------\n");
    }
}

4. 订单查询

#include <stdio.h>
#include <string.h>

#define MAX_USER 100
#define MAX_MOVIE 50
#define MAX_ORDER 100

typedef struct {
    char username[50];
    char password[50];
    char email[50];
    char phone[50];
} User;

typedef struct {
    char name[50];
    char time[50];
    float price;
    int remaining_seats;
} Movie;

typedef struct {
    int order_id;
    int user_id;
    int movie_id;
    int seat_number;
} Order;

User users[MAX_USER];
Movie movies[MAX_MOVIE];
Order orders[MAX_ORDER];
int user_count = 0, movie_count = 0, order_count = 0;

// 查询订单
void query_order() {
    int user_id;
    printf("请输入用户ID:");
    scanf("%d", &user_id);

    for (int i = 0; i < order_count; i++) {
        if (orders[i].user_id == user_id) {
            printf("订单ID:%d\n", orders[i].order_id);
            printf("电影名称:%s\n", movies[orders[i].movie_id].name);
            printf("座位号:%d\n", orders[i].seat_number);
            printf("----------\n");
        }
    }
}

5. 系统管理

#include <stdio.h>
#include <string.h>

#define MAX_USER 100
#define MAX_MOVIE 50
#define MAX_ORDER 100

typedef struct {
    char username[50];
    char password[50];
    char email[50];
    char phone[50];
} User;

typedef struct {
    char name[50];
    char time[50];
    float price;
    int remaining_seats;
} Movie;

typedef struct {
    int order_id;
    int user_id;
    int movie_id;
    int seat_number;
} Order;

User users[MAX_USER];
Movie movies[MAX_MOVIE];
Order orders[MAX_ORDER];
int user_count = 0, movie_count = 0, order_count = 0;

// 修改电影信息
void modify_movie() {
    int movie_id;
    printf("请输入电影ID:");
    scanf("%d", &movie_id);

    printf("当前电影信息:\n");
    printf("电影名称:%s\n", movies[movie_id].name);
    printf("上映时间:%s\n", movies[movie_id].time);
    printf("票价:%f\n", movies[movie_id].price);
    printf("剩余座位数:%d\n", movies[movie_id].remaining_seats);

    printf("请输入新的电影名称:");
    scanf("%s", movies[movie_id].name);
    printf("请输入新的上映时间:");
    scanf("%s", movies[movie_id].time);
    printf("请输入新的票价:");
    scanf("%f", &movies[movie_id].price);
    printf("请输入新的剩余座位数:");
    scanf("%d", &movies[movie_id].remaining_seats);

    printf("修改成功!\n");
}

// 删除用户
void delete_user() {
    int user_id;
    printf("请输入用户ID:");
    scanf("%d", &user_id);

    for (int i = 0; i < user_count; i++) {
        if (users[i].username == user_id) {
            for (int j = i; j < user_count - 1; j++) {
                users[j] = users[j + 1];
            }
            user_count--;
            printf("删除成功!\n");
            return;
        }
    }
    printf("用户不存在!\n");
}

总结

通过本文的学习,你已成功入门C语言编程,并掌握了电影票务系统的基本功能。在实际开发过程中,你还可以根据自己的需求进行功能扩展,如添加支付功能、评价功能等。祝你编程愉快!

分享到: