帮我用c语言写一个电影院售票管理系统
时间: 2023-11-12 11:04:25 浏览: 282
好的,这是一个比较复杂的系统,需要分步骤进行设计和实现。以下是一个简单的电影院选票系统的实现思路,仅供参考。
1.定义结构体
首先定义电影票的结构体,包括电影编号、电影名称、放映时间、价格、选座情况等信息。
```
struct Movie
{
int movie_id; //电影编号
char movie_name[30]; //电影名称
char show_time[20]; //放映时间
float price; //票价
int seat[5][10]; //座位情况,0表示空位,1表示已售出
};
```
2.主菜单
编写主菜单函数,包括选票、退票、查询座位情况等选项。
```
void main_menu()
{
printf("===================================\n");
printf("| 电影院选票管理系统 |\n");
printf("===================================\n");
printf("| 1. 选票 |\n");
printf("| 2. 退票 |\n");
printf("| 3. 查询座位情况 |\n");
printf("| 4. 退出系统 |\n");
printf("===================================\n");
}
```
3.选票功能
编写选票函数,包括显示可选电影列表、选择电影、选择座位等步骤。
```
void ticket_menu()
{
printf("===================================\n");
printf("| 电影列表 |\n");
printf("===================================\n");
printf("| 电影编号 | 电影名称 | 放映时间 |\n");
printf("===================================\n");
//显示电影列表
for(int i=0; i<MOVIE_NUM; i++)
{
printf("| %d | %s | %s |\n", movie[i].movie_id, movie[i].movie_name, movie[i].show_time);
}
printf("===================================\n");
//选择电影
printf("请输入您要选择的电影编号:");
scanf("%d", &movie_id);
//选择座位
printf("请选择您要选择的座位:");
scanf("%d%d", &row, &col);
if(movie[movie_id-1].seat[row-1][col-1] == 1)
{
printf("该座位已被占用,请重新选择!\n");
ticket_menu();
}
else
{
movie[movie_id-1].seat[row-1][col-1] = 1;
printf("选票成功!\n");
}
}
```
4.退票功能
编写退票函数,根据输入的电影编号和座位号来退票。
```
void refund_ticket()
{
printf("请输入您要退票的电影编号和座位号:");
scanf("%d%d%d", &movie_id, &row, &col);
if(movie[movie_id-1].seat[row-1][col-1] == 0)
{
printf("该座位未被占用!\n");
}
else
{
movie[movie_id-1].seat[row-1][col-1] = 0;
printf("退票成功!\n");
}
}
```
5.查询座位情况
编写查询座位情况函数,显示每个电影的座位情况。
```
void seat_status()
{
printf("===================================\n");
printf("| 座位情况 |\n");
printf("===================================\n");
printf("| 电影编号 | 电影名称 | 放映时间 |\n");
printf("===================================\n");
//显示每个电影的座位情况
for(int i=0; i<MOVIE_NUM; i++)
{
printf("| %d | %s | %s |\n", movie[i].movie_id, movie[i].movie_name, movie[i].show_time);
printf("|---------------------------------|\n");
printf("| 座位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|\n");
printf("|---------------------------------|\n");
for(int j=0; j<5; j++)
{
printf("| 第%d排 |", j+1);
for(int k=0; k<10; k++)
{
printf(" %d |", movie[i].seat[j][k]);
}
printf("\n");
}
printf("===================================\n");
}
}
```
6.完整代码
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MOVIE_NUM 3
struct Movie
{
int movie_id; //电影编号
char movie_name[30]; //电影名称
char show_time[20]; //放映时间
float price; //票价
int seat[5][10]; //座位情况,0表示空位,1表示已售出
};
struct Movie movie[MOVIE_NUM] = {
{1, "复仇者联盟4", "2020-01-01 08:00", 50, {0}},
{2, "海绵宝宝", "2020-01-01 10:00", 30, {0}},
{3, "阿凡达", "2020-01-01 12:00", 40, {0}}
};
void main_menu()
{
printf("===================================\n");
printf("| 电影院选票管理系统 |\n");
printf("===================================\n");
printf("| 1. 选票 |\n");
printf("| 2. 退票 |\n");
printf("| 3. 查询座位情况 |\n");
printf("| 4. 退出系统 |\n");
printf("===================================\n");
}
void ticket_menu()
{
int movie_id, row, col;
printf("===================================\n");
printf("| 电影列表 |\n");
printf("===================================\n");
printf("| 电影编号 | 电影名称 | 放映时间 |\n");
printf("===================================\n");
//显示电影列表
for(int i=0; i<MOVIE_NUM; i++)
{
printf("| %d | %s | %s |\n", movie[i].movie_id, movie[i].movie_name, movie[i].show_time);
}
printf("===================================\n");
//选择电影
printf("请输入您要选择的电影编号:");
scanf("%d", &movie_id);
//选择座位
printf("请选择您要选择的座位:");
scanf("%d%d", &row, &col);
if(movie[movie_id-1].seat[row-1][col-1] == 1)
{
printf("该座位已被占用,请重新选择!\n");
ticket_menu();
}
else
{
movie[movie_id-1].seat[row-1][col-1] = 1;
printf("选票成功!\n");
}
}
void refund_ticket()
{
int movie_id, row, col;
printf("请输入您要退票的电影编号和座位号:");
scanf("%d%d%d", &movie_id, &row, &col);
if(movie[movie_id-1].seat[row-1][col-1] == 0)
{
printf("该座位未被占用!\n");
}
else
{
movie[movie_id-1].seat[row-1][col-1] = 0;
printf("退票成功!\n");
}
}
void seat_status()
{
printf("===================================\n");
printf("| 座位情况 |\n");
printf("===================================\n");
printf("| 电影编号 | 电影名称 | 放映时间 |\n");
printf("===================================\n");
//显示每个电影的座位情况
for(int i=0; i<MOVIE_NUM; i++)
{
printf("| %d | %s | %s |\n", movie[i].movie_id, movie[i].movie_name, movie[i].show_time);
printf("|---------------------------------|\n");
printf("| 座位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10|\n");
printf("|---------------------------------|\n");
for(int j=0; j<5; j++)
{
printf("| 第%d排 |", j+1);
for(int k=0; k<10; k++)
{
printf(" %d |", movie[i].seat[j][k]);
}
printf("\n");
}
printf("===================================\n");
}
}
int main()
{
int choice;
while(1)
{
main_menu();
printf("请输入您的选择:");
scanf("%d", &choice);
switch(choice)
{
case 1: ticket_menu(); break;
case 2: refund_ticket(); break;
case 3: seat_status(); break;
case 4: exit(0); break;
default: printf("请输入正确的选项!\n"); break;
}
}
return 0;
}
```
以上是一个简单的电影院选票系统的实现思路,你可以根据自己的需求进行修改和完善。
阅读全文