#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_PLAYERS 200
#define NAME_SIZE 50
#define TEAM_SIZE 50
#define POSITION_SIZE 20
typedef struct {
char name[NAME_SIZE];
char team[TEAM_SIZE];
char position[POSITION_SIZE];
int age;
} Player;
Player players[MAX_PLAYERS];
int playerCount = 0;
void addPlayer();
void displayPlayers();
void searchPlayer();
void showMenu();
void clearInputBuffer();
void savePlayersToFile();
void loadPlayersFromFile();
int main() {
loadPlayersFromFile();
int choice;
do {
showMenu();
scanf("%d", &choice);
clearInputBuffer();
switch (choice) {
case 1:
addPlayer();
break;
case 2:
displayPlayers();
break;
case 3:
searchPlayer();
break;
case 4:
printf("退出程序。\n");
savePlayersToFile();
break;
default:
printf("无效选项,请重新输入。\n");
}
} while (choice != 4);
return 0;
}
void showMenu() {
printf("\n===== 台湾足球球员管理系统 =====\n");
printf("1. 添加球员信息\n");
printf("2. 显示所有球员信息\n");
printf("3. 搜索球员信息\n");
printf("4. 退出程序\n");
printf("请输入您的选择:");
}
void addPlayer() {
if (playerCount >= MAX_PLAYERS) {
printf("球员信息已满,无法添加更多球员。\n");
return;
}
printf("请输入球员姓名:");
fgets(players[playerCount].name, NAME_SIZE, stdin);
players[playerCount].name[strcspn(players[playerCount].name, "\n")] = 0;
printf("请输入球员所属球队:");
fgets(players[playerCount].team, TEAM_SIZE, stdin);
players[playerCount].team[strcspn(players[playerCount].team, "\n")] = 0;
printf("请输入球员位置:");
fgets(players[playerCount].position, POSITION_SIZE, stdin);
players[playerCount].position[strcspn(players[playerCount].position, "\n")] = 0;
printf("请输入球员年龄:");
scanf("%d", &players[playerCount].age);
clearInputBuffer();
playerCount++;
printf("球员信息添加成功!\n");
}
void displayPlayers() {
if (playerCount == 0) {
printf("没有球员信息。\n");
return;
}
printf("\n===== 球员信息列表 =====\n");
for (int i = 0; i < playerCount; i++) {
printf("姓名: %s, 球队: %s, 位置: %s, 年龄: %d\n",
players[i].name, players[i].team, players[i].position, players[i].age);
}
}
void searchPlayer() {
char playerName[NAME_SIZE];
printf("请输入要搜索的球员姓名:");
fgets(playerName, NAME_SIZE, stdin);
playerName[strcspn(playerName, "\n")] = 0;
int found = 0;
for (int i = 0; i < playerCount; i++) {
if (strcmp(players[i].name, playerName) == 0) {
printf("找到球员信息:姓名: %s, 球队: %s, 位置: %s, 年龄: %d\n",
players[i].name, players[i].team, players[i].position, players[i].age);
found = 1;
break;
}
}
if (!found) {
printf("未找到该球员信息。\n");
}
}
void clearInputBuffer() {
int c;
while ((c = getchar()) != '\n' && c != EOF) {}
}
void savePlayersToFile() {
FILE *file = fopen("players.txt", "w");
if (file == NULL) {
printf("无法打开文件进行写入。\n");
return;
}
for (int i = 0; i < playerCount; i++) {
fprintf(file, "%s,%s,%s,%d\n",
players[i].name, players[i].team, players[i].position, players[i].age);
}
fclose(file);
printf("球员信息已保存到文件。\n");
}
void loadPlayersFromFile() {
FILE *file = fopen("players.txt", "r");
if (file == NULL) {
printf("无法打开文件进行读取。\n");
return;
}
playerCount = 0;
while (fscanf(file, "%[^,],%[^,],%[^,],%d\n",
players[playerCount].name,
players[playerCount].team,
players[playerCount].position,
&players[playerCount].age) != EOF) {
playerCount++;
}
fclose(file);
printf("球员信息已从文件加载。\n");
}