我帮你写了一个代码,但是总觉得在c语言中太麻烦了,不如用c++加一个后台数据库存储影片记录:
#include <stdio.h>
#include <string.h>
#define MAX_USER 100
#define MAX_ROOM 5
#define ROW 10
#define COL 10
struct user {
char username[20];
char password[20];
};
struct movie {
char name[50];
char date[20];
char time[20];
int adult_price;
int child_price;
int adult_num[ROW][COL];
int child_num[ROW][COL];
};
struct user users[MAX_USER];
struct movie movies[MAX_ROOM];
void init_users() {
for (int i = 0; i < MAX_USER; i++) {
strcpy(users[i].username, "");
strcpy(users[i].password, "");
}
}
void init_movies() {
for (int i = 0; i < MAX_ROOM; i++) {
strcpy(movies[i].name, "");
strcpy(movies[i].date, "");
strcpy(movies[i].time, "");
movies[i].adult_price = 0;
movies[i].child_price = 0;
for (int j = 0; j < ROW; j++) {
for (int k = 0; k < COL; k++) {
movies[i].adult_num[j][k] = 0;
movies[i].child_num[j][k] = 0;
}
}
}
}
int find_user(char* username) {
for (int i = 0; i < MAX_USER; i++) {
if (strcmp(users[i].username, username) == 0) {
return i;
}
}
return -1;
}
int register_user() {
char username[20], password[20];
int i;
printf("请输入用户名:");
scanf("%s", username);
i = find_user(username);
if (i != -1) {
printf("用户名已存在,请重新输入!\n");
return 0;
}
for (i = 0; i < MAX_USER; i++) {
if (strcmp(users[i].username, "") == 0) {
strcpy(users[i].username, username);
printf("请输入密码:");
scanf("%s", password);
strcpy(users[i].password, password);
printf("注册成功!\n");
return 1;
}
}
printf("用户数量已达到上限,无法注册!\n");
return 0;
}
int login() {
char username[20], password[20];
int index;
printf("请输入用户名:");
scanf("%s", username);
index = find_user(username);
if (index == -1) {
printf("用户名不存在,请重新输入!\n");
return 0;
}
printf("请输入密码:");
scanf("%s", password);
if (strcmp(users[index].password, password) != 0) {
printf("密码错误,请重新输入!\n");
return 0;
}
printf("登录成功!\n");
return 1;
}
void print_movies() {
int i, j, k;
for (i = 0; i < MAX_ROOM; i++) {
if (strcmp(movies[i].name, "") != 0) {
printf("放映厅%d:\n", i + 1);
printf("电影名称:%s\n", movies[i].name);
printf("放映日期:%s\n", movies[i].date);
printf("放映时间:%s\n", movies[i].time);
printf("成人票价格:%d元\n", movies[i].adult_price);
printf("儿童票价格:%d元\n", movies[i].child_price);
printf("放映厅座位图:\n");
for (j = 0; j < ROW; j++) {
for (k = 0; k < COL; k++) {
printf("%d ", movies[i].adult_num[j][k] + movies[i].child_num[j][k]);
}
printf("\\n");
}
printf("=================================\n");
}
}
}
void print_room_status() {
int i, j, k, room;
char date[20], time[20];
printf("请输入放映厅号:");
scanf("%d", &room);
printf("请输入日期:");
scanf("%s", date);
printf("请输入时间:");
scanf("%s", time);
if (room < 1 || room > MAX_ROOM) {
printf("放映厅号输入有误,请重新输入!\n");
return;
}
for (i = 0; i < MAX_ROOM; i++) {
if (strcmp(movies[i].date, date) == 0 && strcmp(movies[i].time, time) == 0) {
if (i == room - 1) {
printf("放映厅%d:%s %s 售票情况:\n", room, date, time);
for (j = 0; j < ROW; j++) {
for (k = 0; k < COL; k++) {
printf("%d ", movies[i].adult_num[j][k] + movies[i].child_num[j][k]);
}
printf("\n");
}
printf("=================================\n");
return;
}
}
}
printf("未找到指定的放映厅和时间,请重新输入!\n");
}
int main() {
int i, choice, result;
char username[20], password[20];
init_users();
init_movies();
while (1) {
printf("欢迎来到电影售票系统!\n");
printf("请选择操作:\n");
printf("1. 用户注册\n");
printf("2. 密码登录\n");
printf("3. 查看电影排片信息\n");
printf("4. 查看放映厅售票情况\n");
printf("5. 退出系统\n");
printf("请选择:");
if (scanf("%d", &choice) != 1) {
printf("选择错误,请重新选择!\n");
getchar();
continue;
}
switch (choice) {
case 1:
register_user();
break;
case 2:
result = login();
if (result == 1) {
while (1) {
printf("请选择操作:\n");
printf("1. 查看电影排片信息\n");
printf("2. 查看放映厅售票情况\n");
printf("3. 登出系统\n");
printf("请选择:");
if (scanf("%d", &choice) != 1) {
printf("选择错误,请重新选择!\n");
getchar();
continue;
}
switch (choice) {
case 1:
print_movies();
break;
case 2:
print_room_status();
break;
case 3:
printf("退出登录!\n");
break;
default:
printf("选择错误,请重新选择!\n");
break;
}
if (choice == 3) {
break;
}
}
}
break;
case 3:
printf("电影排片信息:\n");
for (i = 0; i < MAX_ROOM; i++) {
if (strcmp(movies[i].name, "") != 0) {
printf("放映厅%d:%s %s\n", i + 1, movies[i].date, movies[i].time);
}
}
printf("=================================\n");
break;
case 4:
printf("请先登录系统!\n");
break;
case 5:
printf("退出系统!\n");
return 0;
default:
printf("选择错误,请重新选择!\n");
break;
}
}
return 0;
}
https://blog.csdn.net/WZRbeliever/article/details/125553819
基于new bing的思路模块参考: