1、旅游景点、票价信息录入,
2、旅游景点、票价信息输出,
3、旅游景点、票价信息查询,
4、旅游景点、票价信息修改,
5、旅游景点、票价信息删除,
6、旅游景点、票价信息保存,
7、旅游景点、票价信息读取,
8、门票销售统计、汇总
运行代码和截图如下,有帮助的话记得采纳哦!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 50
#define MAX_INFO_LEN 100
#define MAX_SPOT_NUM 100
typedef struct {
char name[MAX_NAME_LEN]; // 景点名称
char info[MAX_INFO_LEN]; // 景点信息
int price; // 票价
} Spot;
Spot spots[MAX_SPOT_NUM]; // 存储所有景点信息
int spotCount = 0; // 当前景点数量
void addSpot() {
if (spotCount >= MAX_SPOT_NUM) {
printf("景点数量已达到上限!\n");
return;
}
Spot s;
printf("请输入景点名称:");
scanf("%s", s.name);
printf("请输入景点信息:");
scanf("%s", s.info);
printf("请输入票价:");
scanf("%d", &s.price);
spots[spotCount++] = s;
printf("添加成功!\n");
}
void showSpotInfo() {
printf("景点信息如下:\n");
for (int i = 0; i < spotCount; i++) {
printf("%d. 名称:%s,信息:%s,票价:%d\n", i + 1, spots[i].name, spots[i].info, spots[i].price);
}
}
void querySpot() {
char name[MAX_NAME_LEN];
printf("请输入景点名称:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < spotCount; i++) {
if (strcmp(spots[i].name, name) == 0) {
printf("名称:%s,信息:%s,票价:%d\n", spots[i].name, spots[i].info, spots[i].price);
found = 1;
break;
}
}
if (!found) {
printf("未找到名为%s的景点!\n", name);
}
}
void modifySpot() {
char name[MAX_NAME_LEN];
printf("请输入要修改的景点名称:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < spotCount; i++) {
if (strcmp(spots[i].name, name) == 0) {
printf("请输入新的景点名称:");
scanf("%s", spots[i].name);
printf("请输入新的景点信息:");
scanf("%s", spots[i].info);
printf("请输入新的票价:");
scanf("%d", &spots[i].price);
printf("修改成功!\n");
found = 1;
break;
}
}
if (!found) {
printf("未找到名为%s的景点!\n", name);
}
}
void deleteSpot() {
char name[MAX_NAME_LEN];
printf("请输入要删除的景点名称:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < spotCount; i++) {
if (strcmp(spots[i].name, name) == 0) {
for (int j = i; j < spotCount - 1; j++) {
spots[j] = spots[j + 1];
}
spotCount--;
printf("删除成功!\n");
found = 1;
break;
}
}
if (!found) {
printf("未找到名为%s的景点!\n", name);
}
}
void saveToFile() {
FILE* fp;
fp = fopen("spots.txt", "w");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
for (int i = 0; i < spotCount; i++) {
fprintf(fp, "%s %s %d\n", spots[i].name, spots[i].info, spots[i].price);
}
fclose(fp);
printf("保存成功!\n");
}
void loadFromFile() {
Spot spotsFromFile[MAX_SPOT_NUM]; // 存储所有景点信息
int spotFromFileCount = 0;
FILE* fp;
fp = fopen("spots.txt", "r");
if (fp == NULL) {
printf("文件打开失败!\n");
return;
}
while (1) {
Spot s;
if (fscanf(fp, "%s %s %d", s.name, s.info, &s.price) != 3) {
break;
}
spotsFromFile[spotFromFileCount++] = s;
}
fclose(fp);
printf("读取成功!\n");
printf("景点信息如下:\n");
for (int i = 0; i < spotFromFileCount; i++) {
printf("%d. 名称:%s,信息:%s,票价:%d\n", i + 1,spotsFromFile[i].name, spotsFromFile[i].info, spotsFromFile[i].price);
}
}
void salesStatistics() {
int totalSales = 0;
for (int i = 0; i < spotCount; i++) {
int sales;
printf("请输入%s的销售量:", spots[i].name);
scanf("%d", &sales);
totalSales += sales;
}
printf("总销售量为:%d\n", totalSales);
}
int main() {
int choice = 0;
while (1) {
printf("\n景点票价信息管理系统\n");
printf("1. 录入景点信息\n");
printf("2. 查看景点信息\n");
printf("3. 查询景点信息\n");
printf("4. 修改景点信息\n");
printf("5. 删除景点信息\n");
printf("6. 保存景点信息到文件\n");
printf("7. 从文件中读取景点信息\n");
printf("8. 门票销售统计\n");
printf("0. 退出系统\n");
printf("请输入操作选项:");
scanf("%d", &choice);
switch (choice) {
case 0:
printf("已退出系统!\n");
return 0;
case 1:
addSpot();
break;
case 2:
showSpotInfo();
break;
case 3:
querySpot();
break;
case 4:
modifySpot();
break;
case 5:
deleteSpot();
break;
case 6:
saveToFile();
break;
case 7:
loadFromFile();
break;
case 8:
salesStatistics();
break;
default:
printf("无效的操作选项!\n");
break;
}
}
return 0;
}
该回答引用ChatGPT
参考
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100 // 系统最大容量
// 定义景点和票价信息结构体
struct Spot {
char name[20];
char introduction[100];
float price;
};
// 定义全局变量
struct Spot spots[MAX_SIZE];
int size = 0;
// 函数声明
void add_spot();
void modify_spot();
void query_spot();
void delete_spot();
int main() {
int choice;
printf("欢迎使用景点票价信息管理系统!\n");
while (1) {
printf("请选择您需要的操作:\n");
printf("1. 录入景点及票价信息\n");
printf("2. 修改景点及票价信息\n");
printf("3. 查询景点及票价信息\n");
printf("4. 删除景点及票价信息\n");
printf("5. 退出系统\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_spot();
break;
case 2:
modify_spot();
break;
case 3:
query_spot();
break;
case 4:
delete_spot();
break;
case 5:
printf("感谢使用景点票价信息管理系统!\n");
return 0;
default:
printf("输入错误,请重新输入!\n");
break;
}
}
}
void add_spot() {
if (size >= MAX_SIZE) {
printf("系统已满,无法添加新的景点!\n");
return;
}
struct Spot spot;
printf("请输入景点名称:\n");
scanf("%s", spot.name);
printf("请输入景点简介:\n");
scanf("%s", spot.introduction);
printf("请输入景点票价:\n");
scanf("%f", &spot.price);
spots[size++] = spot;
printf("添加成功!\n");
}
void modify_spot() {
if (size == 0) {
printf("系统中没有景点信息!\n");
return;
}
char name[20];
printf("请输入需要修改的景点名称:\n");
scanf("%s", name);
int index = -1;
for (int i = 0; i < size; i++) {
if (strcmp(spots[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("系统中不存在此景点!\n");
return;
}
struct Spot spot;
printf("请输入新的景点名称(回车不修改):\n");
scanf("%s", spot.name);
printf("请输入新的景点简介(回车不修改):\n");
scanf("%s", spot.introduction);
printf("请输入新的景点票价(0表示不修改):\n");
scanf("%f", &spot.price);
if (strlen(spot.name) > 0) {
strcpy(spots[index].name, spot.name);
}
if (strlen(spot.introduction) > 0) {
strcpy(spots[index].introduction, spot.introduction);
}
if (spot.price > 0) {
spots[index].price = spot.price;
}
printf("修改成功!\n");
}
void query_spot() {
if (size == 0) {
printf("系统中没有景点信息!\n");
return;
}
char name[20];
printf("请输入需要查询的景点名称(回车表示查询所有景点):\n");
scanf("%s", name);
if (strlen(name) == 0) {
printf("系统中共有%d个景点:\n", size);
for (int i = 0; i < size; i++) {
printf("景点名称:%s,景点简介:%s,票价:%f元\n", spots[i].name, spots[i].introduction, spots[i].price);
}
} else {
int index = -1;
for (int i = 0; i < size; i++) {
if (strcmp(spots[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("系统中不存在此景点!\n");
return;
} else {
printf("景点名称:%s,景点简介:%s,票价:%f元\n", spots[index].name, spots[index].introduction, spots[index].price);
}
}
}
void delete_spot() {
if (size == 0) {
printf("系统中没有景点信息!\n");
return;
}
char name[20];
printf("请输入需要删除的景点名称:\n");
scanf("%s", name);
int index = -1;
for (int i = 0; i < size; i++) {
if (strcmp(spots[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("系统中不存在此景点!\n");
return;
}
for (int i = index; i < size - 1; i++) {
spots[i] = spots[i + 1];
}
size--;
printf("删除成功!\n");
}
商品信息管理系统 借鉴下
https://blog.csdn.net/qq_63964231/article/details/125517167
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 50
#define MAX_PRICE_LEN 20
typedef struct {
char name[MAX_NAME_LEN];
char price[MAX_PRICE_LEN];
} ScenicSpot;
void inputScenicSpot(ScenicSpot *s) {
printf("请输入旅游景点名称:");
scanf("%s", s->name);
printf("请输入票价信息:");
scanf("%s", s->price);
}
void outputScenicSpot(const ScenicSpot *s) {
printf("%s\t%s\n", s->name, s->price);
}
void printMenu() {
printf("\n");
printf("========== 旅游景点票价信息管理系统 ==========\n");
printf("1. 录入景点信息\n");
printf("2. 输出景点信息\n");
printf("3. 查询景点信息\n");
printf("4. 修改景点信息\n");
printf("5. 删除景点信息\n");
printf("6. 保存景点信息\n");
printf("7. 读取景点信息\n");
printf("8. 门票销售统计、汇总\n");
printf("0. 退出\n");
printf("=============================================\n");
printf("\n");
}
int countScenicSpots() {
FILE *fp = fopen("scenic_spots.txt", "r");
if (fp == NULL) {
return 0;
}
int count = 0;
char buffer[MAX_NAME_LEN + MAX_PRICE_LEN];
while (fgets(buffer, sizeof(buffer), fp) != NULL) {
count++;
}
fclose(fp);
return count;
}
void inputScenicSpots(ScenicSpot *s, int count) {
for (int i = 0; i < count; i++) {
inputScenicSpot(&s[i]);
}
}
void outputScenicSpots(const ScenicSpot *s, int count) {
printf("旅游景点名称\t票价信息\n");
for (int i = 0; i < count; i++) {
outputScenicSpot(&s[i]);
}
}
void saveScenicSpots(const ScenicSpot *s, int count) {
FILE *fp = fopen("scenic_spots.txt", "w");
if (fp == NULL) {
printf("无法打开文件 scenic_spots.txt\n");
return;
}
for (int i = 0; i < count; i++) {
fprintf(fp, "%s %s\n", s[i].name, s[i].price);
}
fclose(fp);
printf("保存成功\n");
}
void readScenicSpots(ScenicSpot *s, int *count) {
FILE *fp = fopen("scenic_spots.txt", "r");
if (fp == NULL) {
printf("无法打开文件 scenic_spots.txt\n");
return;
}
int i = 0;
while (fscanf(fp, "%s %s", s[i].name, s[i].price) != EOF) {
i++;
}
*count = i;
fclose(fp);
printf("读取成功\n");
}
int findScenicSpotByName()
不知道你这个问题是否已经解决, 如果还没有解决的话: