用 c 语言写上面的功能
时间: 2024-03-22 12:37:38 浏览: 6
好的,下面是一个简单的C语言实现,用于展示上述功能的基本思路:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 50
#define MAX_TICKET_NUM 100
// 旅游景点结构体
typedef struct {
char name[MAX_NAME_LEN];
float ticket_price;
char open_time[20];
} Spot;
// 购票清单结构体
typedef struct {
char name[MAX_NAME_LEN];
int ticket_num;
float total_price;
} Order;
// 全局变量,存储所有的旅游景点信息
Spot spots[] = {
{"景点A", 80.0, "9:00-17:00"},
{"景点B", 60.0, "8:00-18:00"},
{"景点C", 100.0, "10:00-20:00"},
{"景点D", 50.0, "7:00-19:00"},
{"景点E", 120.0, "9:00-22:00"}
};
// 全局变量,记录用户购买的门票信息
Order orders[MAX_TICKET_NUM];
int order_num = 0;
// 查询景点信息
void query_spot_info() {
char name[MAX_NAME_LEN];
printf("请输入景点名称:");
scanf("%s", name);
for (int i = 0; i < sizeof(spots) / sizeof(spots[0]); i++) {
if (strcmp(spots[i].name, name) == 0) {
printf("景点名称:%s\n", spots[i].name);
printf("门票价格:%.2f\n", spots[i].ticket_price);
printf("开放时间:%s\n", spots[i].open_time);
return;
}
}
printf("未找到该景点,请重新输入\n");
}
// 购买门票
void buy_ticket() {
char name[MAX_NAME_LEN];
int num;
printf("请输入景点名称:");
scanf("%s", name);
// 查找景点信息
int index = -1;
for (int i = 0; i < sizeof(spots) / sizeof(spots[0]); i++) {
if (strcmp(spots[i].name, name) == 0) {
index = i;
break;
}
}
// 判断是否找到该景点
if (index == -1) {
printf("未找到该景点,请重新输入\n");
return;
}
printf("请输入购买数量:");
scanf("%d", &num);
// 判断是否有足够的门票
if (num > MAX_TICKET_NUM - order_num) {
printf("门票数量不足,请重新输入\n");
return;
}
// 计算总价并记录订单信息
float total_price = num * spots[index].ticket_price;
strcpy(orders[order_num].name, name);
orders[order_num].ticket_num = num;
orders[order_num].total_price = total_price;
order_num++;
printf("购票成功,总价为:%.2f\n", total_price);
}
// 打印购票清单
void print_order_list() {
printf("====================\n");
printf("购票清单\n");
printf("====================\n");
for (int i = 0; i < order_num; i++) {
printf("景点名称:%s\n", orders[i].name);
printf("购票数量:%d\n", orders[i].ticket_num);
printf("总价:%.2f\n", orders[i].total_price);
printf("====================\n");
}
}
int main() {
int choice;
while (1) {
printf("====================\n");
printf("旅游景点售票系统\n");
printf("====================\n");
printf("1. 查询景点信息\n");
printf("2. 购买门票\n");
printf("3. 打印购票清单\n");
printf("4. 退出\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
query_spot_info();
break;
case 2:
buy_ticket();
break;
case 3:
print_order_list();
break;
case 4:
printf("谢谢使用,再见!\n");
return 0;
default:
printf("无效的选项,请重新输入\n");
break;
}
}
return 0;
}
```
这是一个基础的实现,如果需要更复杂的功能,比如文件读写、数据存储等,还需要进一步完善代码。