帮我用C语言写一份电影票订购系统:实现电影的信息管理、订购和售票功能。系统可以管理多部电影,包括电影名称、上映时间、票价等。用户可以查询电影信息,选择场次并订购电影票,系统需要支持票务 管理和座位选择。
时间: 2024-03-18 14:39:53 浏览: 14
好的,我会帮您编写一份电影票订购系统。首先,我们需要设计一些数据结构来存储电影信息和座位信息:
```c
// 电影信息结构体
typedef struct {
char name[50]; // 电影名称
char time[50]; // 上映时间
float price; // 票价
int seats[10][10]; // 座位信息,0表示空位,1表示已售
} Movie;
// 订单信息结构体
typedef struct {
char name[50]; // 电影名称
char time[50]; // 场次时间
int row; // 座位行号
int col; // 座位列号
} Order;
```
然后,我们需要实现一些函数来进行电影信息和订单的管理:
```c
// 添加电影
void add_movie(Movie *movies, int *num_movies) {
printf("请输入电影名称:");
scanf("%s", movies[*num_movies].name);
printf("请输入电影上映时间:");
scanf("%s", movies[*num_movies].time);
printf("请输入电影票价:");
scanf("%f", &movies[*num_movies].price);
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
movies[*num_movies].seats[i][j] = 0; // 初始化座位信息
}
}
(*num_movies)++;
}
// 查询电影
void query_movie(Movie *movies, int num_movies) {
char name[50];
printf("请输入电影名称:");
scanf("%s", name);
for (int i = 0; i < num_movies; i++) {
if (strcmp(name, movies[i].name) == 0) {
printf("电影名称:%s\n", movies[i].name);
printf("上映时间:%s\n", movies[i].time);
printf("票价:%f\n", movies[i].price);
printf("座位信息:\n");
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 10; k++) {
printf("%d ", movies[i].seats[j][k]); // 打印座位信息
}
printf("\n");
}
return;
}
}
printf("未找到该电影!\n");
}
// 订票
void book_ticket(Movie *movies, int num_movies, Order *orders, int *num_orders) {
char name[50];
printf("请输入电影名称:");
scanf("%s", name);
for (int i = 0; i < num_movies; i++) {
if (strcmp(name, movies[i].name) == 0) {
printf("场次时间:%s\n", movies[i].time);
printf("座位信息:\n");
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 10; k++) {
printf("%d ", movies[i].seats[j][k]); // 打印座位信息
}
printf("\n");
}
int row, col;
printf("请输入座位行号和列号(用空格隔开):");
scanf("%d %d", &row, &col);
if (movies[i].seats[row - 1][col - 1] == 1) { // 座位已售出
printf("该座位已售出,请重新选择!\n");
return;
}
strcpy(orders[*num_orders].name, movies[i].name);
strcpy(orders[*num_orders].time, movies[i].time);
orders[*num_orders].row = row;
orders[*num_orders].col = col;
movies[i].seats[row - 1][col - 1] = 1; // 标记座位为已售出
(*num_orders)++;
printf("订票成功!\n");
return;
}
}
printf("未找到该电影!\n");
}
// 查看订单
void view_order(Order *orders, int num_orders) {
if (num_orders == 0) {
printf("暂无订单!\n");
return;
}
for (int i = 0; i < num_orders; i++) {
printf("电影名称:%s\n", orders[i].name);
printf("场次时间:%s\n", orders[i].time);
printf("座位行号:%d\n", orders[i].row);
printf("座位列号:%d\n", orders[i].col);
}
}
```
最后,我们可以编写一个主函数来测试这些函数:
```c
int main() {
Movie movies[100];
int num_movies = 0;
Order orders[100];
int num_orders = 0;
int choice;
while (1) {
printf("1. 添加电影\n");
printf("2. 查询电影\n");
printf("3. 订票\n");
printf("4. 查看订单\n");
printf("5. 退出\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_movie(movies, &num_movies);
break;
case 2:
query_movie(movies, num_movies);
break;
case 3:
book_ticket(movies, num_movies, orders, &num_orders);
break;
case 4:
view_order(orders, num_orders);
break;
case 5:
return 0;
default:
printf("无效选择!\n");
}
}
}
```
这样,一个简单的电影票订购系统就完成了。当然,这只是一个简单的示例,实际的电影票订购系统需要考虑更多的因素,比如座位的状态更新、订单的支付等等。