在数字化的今天,拥有一套属于自己的电影票务系统是一种技能,也是一种乐趣。C语言作为一种经典的编程语言,以其高效、简洁的特性,非常适合用来构建电影票务系统。本文将带你一步步入门,轻松打造你的购票小程序。
系统概述
首先,我们来了解一下电影票务系统的基本功能:
- 用户注册与登录:方便用户管理个人信息。
- 电影信息展示:包括电影名称、上映时间、票价等。
- 选座购票:用户可以选择座位,进行在线购票。
- 订单查询:用户可以查询自己的订单信息。
- 系统管理:管理员可以对电影信息、用户信息进行管理。
环境搭建
在开始编程之前,我们需要搭建一个合适的开发环境。以下是常用的C语言开发环境:
- 编译器:如GCC、Clang等。
- 文本编辑器:如VS Code、Sublime Text等。
- 调试器:如GDB等。
数据结构设计
电影票务系统需要存储大量的数据,因此,合理的数据结构设计至关重要。以下是一些常用的数据结构:
- 用户结构体:包含用户名、密码、邮箱、手机号等信息。
- 电影结构体:包含电影名称、上映时间、票价、剩余座位数等信息。
- 订单结构体:包含订单号、用户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语言编程,并掌握了电影票务系统的基本功能。在实际开发过程中,你还可以根据自己的需求进行功能扩展,如添加支付功能、评价功能等。祝你编程愉快!