#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
struct players { //声明函数体
char team_name[20];//队名
int num;//球员编号
char name[30];//名字
char sex;//性别
int age;//年龄
char id[100];//身份证
int height;//身高
int weight;//体重
char addr[100];//住址
char tel[100];//电话号码
char position[100];//位置
} play[100]; //结构体变量
void menu();//菜单
void input();//录入信息
void display();//浏览
void search();//查询
void search_name();/*通过姓名查询*/
void search_num();/*通过球员编号查询*/
void search_id();/*通过ID查询*/
void search_team_name();/*通过球队名字查询*/
void del();//删除
void add();//添加
void modify();//修改
void save(int);//保存函数
int main() {
char a;
int n;
menu();
scanf("%d", &n);
printf("\n");
switch (n) {
case 1:
printf("********欢迎使用球员信息录入功能*******\n");
input();
break;
case 2:
printf("********欢迎使用球员信息浏览功能*******\n");
display();
break;
case 3:
printf("********欢迎使用按球员查询信息功能*******\n");
search();
break;
case 4:
printf("********欢迎使用删除球员信息功能*******\n");
del();
break;
case 5:
printf("********欢迎使用添加球员信息功能*******\n");
add();
break;
case 6:
printf("********欢迎使用修改球员信息功能*******\n");
modify();
break;
default:
printf("选择无效,请选择正确的序号");
break;
}
getchar();//吸收回车
printf("\n");
printf("是否继续使用功能(y or n):\n");
scanf("%c", &a);
if (a == 'y') {
main();
scanf("%d", &n);
printf("\n");
} else
exit(0);
}
void menu() { //菜单函数
printf("\t\t*****欢迎来到球员信息管理系统****\n");
printf("\t\t 1.录入球员信息\n");
printf("\t\t 2.浏览球员信息\n");
printf("\t\t 3.查询球员信息\n");
printf("\t\t 4.删除球员信息\n");
printf("\t\t 5.添加球员信息\n");
printf("\t\t 6.修改球员信息\n");
printf("----------------------------------------------------\n");
printf("请按序号选择您需要的功能(输入1--6):\n");
}
void input() { //录入函数
int i, j, n;
char a;
printf("请输入需要录入信息的球员人数(1-20):\n");
scanf("%d", &j);
printf("\n");
for (i = 0; i < j; i++) {
printf("请输入球员队名:");
scanf("%s", &play[i].team_name);
printf("\n");
printf("请输入球员编号:");
scanf("%d", &play[i].num);
printf("\n");
printf("请输入球员姓名:");
scanf("%s", &play[i].name);
printf("\n");
printf("请输入性别(w-女 m-男):");
getchar();
scanf("%c", &play[i].sex);
a = play[i].sex;
printf("\n");
if (a != 'm' && a != 'w') {
printf("您输入的性别有误,请重新输入!\n");
printf("\n");
printf("请输入性别(w-女 m-男):");
getchar();
scanf("%c", &play[i].sex);
printf("\n");
}
printf("请输入年龄:");
scanf("%d", &play[i].age);
printf("\n");
printf("请输入身高:");
scanf("%d", &play[i].height);
printf("\n");
printf("请输入体重:");
scanf("%d", &play[i].weight);
printf("\n");
printf("请输入球员身份证号:");
scanf("%s", &play[i].id);
printf("\n");
n = strlen(play[i].id);//计算n长度
if (n < 18 || n > 18) {
printf("您输入的身份证有误,请重新输入!\n");
printf("\n");
printf("请输入球员身份证号:");
scanf("%s", &play[i].id);
printf("\n");
}
printf("请输入位置:");
scanf("%s", &play[i].position);
printf("\n");
printf("请输入住址:");
scanf("%s", &play[i].addr);
printf("\n");
printf("请输入电话:");
scanf("%s", &play[i].tel);
}
printf("\n录入完成!\n");
save(j);//把数据存储到文件中,保存起来,防止丢失
}
void save(int j) { //文件保存函数
int i;
FILE *fp;
fp = fopen("players_list", "wb");
if
((fp = fopen("players_list", "wb")) == NULL) {
printf("cannot open file\n");
exit(0);
}
for (i = 0; i < j; i++) {
if (fwrite(&play[i], sizeof(play[i]), 1, fp) != 1)
printf("file write error\n");
}
fclose(fp);
}
int load() { //导入函数
FILE *fp;
int i = 0;
if ((fp = fopen("players_list", "rb")) == NULL) {
printf("cannot open file\n");
exit(0);
} else {
do {
fread(&play[i], sizeof(play[i]), 1, fp);
i++;
} while (feof(fp) == 0);
}
fclose(fp);
return (i - 1);
}
void display() { //浏览函数
int i;
int j = load();//导入数据
printf("---------------------------------------------------------------------------------------------\n");
printf("球员编号\t姓名\t性别\t年龄\t身高\t体重\t位置\t住址\t电话\t身份证号\n");
printf("---------------------------------------------------------------------------------------------\n");
for (i = 0; i < j; i++) //j为输入部分球员的人数
printf("%-12d\t%-5s\t%c\t%d\t%d\t%d\t%s\t%s\t\t%s\t%s\t", play[i].num, play[i].name, play[i].sex, play[i].age,
play[i].height, play[i].weight, play[i].position, play[i].addr, play[i].tel, play[i].id);
printf("---------------------------------------------------------------------------------------------\n");
};
void search() { /*查询球员信息函数*/
int i, j; /*定义i,j*/
do { /*使用do...while语句*/
printf("按1 通过球员姓名查询\n按2 通过球员编号查询\n按3 通过ID搜索\n按4 通过球队名字搜索\n按5 返回主菜单页面\n");
printf("你的选择是:");
scanf("%d", &i);
if (i >= 1 && i <= 5) {
j = 1;
break;
} else {
j = 0;
printf("输入错误,请重新输入");
}
} while (j == 0);
while (j == 1) {
switch (i) {
case 1:
printf("球员姓名查询\n");
search_name();
break;
case 2:
printf("球员编号查询\n");
search_num();
break;
case 3:
printf("球员ID查询\n");
search_id();
break;
case 4:
printf("队名查询\n");
search_team_name();
break;
case 5:
system("cls");
menu();
break;
default:
break;
}
}
}
void search_name() {
char search_name[20] = { 0 };//初始化数组
int i, j, m;
int k = load();
printf("请输入球员姓名:\n");
scanf("%s", search_name);
for (i = 0; i < 20; i++) {
for (j = 0; j < 20; j++)
if (strcmp(search_name, play[i].name) == 0) {
printf("已找到该球员,其相关信息为:\n");
printf("\n \t队名 \t姓名 \t 性别 \t年龄 \t编号 \t ID \t 地址\t体重\t电话");
printf("\n \t%s \t%s \t%c\t%d \t%s \t%s \t%s\t%d \t%s \n",
play[i].team_name, play[i].name, play[i].sex, play[i].age, play[i].id, play[i].id, play[i].addr, play[i].weight,
play[i].tel);
system("pause");//暂停程序
system("cls");//清屏
menu();
}
if (i == k) {
printf("\n 抱歉,未查到相关球员\n\n");
printf("继续该查询方式请按1,返回查询方式选择请按2");
scanf("%d", &m);
switch (m) {
case 1:
system("pause");
system("cls");
break;
case 2:
search();
break;
default:
break;
}
}
}
}
void search_num() {
int num;
int i, t, k, m;
int j = load();
printf("请输入球员编号:\n");
scanf("%d", &num);
for (i = 0; i < j; i++)
if (num == play[i].num) {
printf("\n 已找到此人,其记录为: \n");
printf("------------------------------------------------------------------------------\n");
printf("\n \t队名 \t姓名 \t 性别 \t年龄 \t编号 \t ID \t 地址\t体重\t电话");
printf("------------------------------------------------------------------------------\n");
printf("\n \t%s \t%s \t%c\t%d \t%s \t%s \t%s\t%d \t%s \n",
play[i].team_name, play[i].name, play[i].sex, play[i].age, play[i].num, play[i].id, play[i].addr, play[i].weight,
play[i].tel);
system("pause");
system("cls");
menu();
}
if (i == k) {
printf("\n 抱歉,未查到相关球员\n\n");
printf("继续该查询方式请按1,返回查询方式选择请按2");
scanf("%d", &m);
switch (m) {
case 1:
system("pause");
system("cls");
break;
case 2:
search();
break;
default:
break;
}
}
}
void search_id() {
char search_id[10] = { 0 };
int i, j, m;
int k = load();
printf("请输入球员ID:\n");
scanf("%s", search_id, sizeof(search_id));
for (i = 0; i < 20; i++) {
for (j = 0; j < 20; j++)
if (strcmp(search_id, play[j].id) == 0) {
printf("已找到该球员,其相关信息为:\n");
printf("\n \t队名 \t姓名 \t 性别 \t年龄 \t编号 \t ID \t 地址\t体重\t电话");
printf("\n \t%s \t%s \t%c\t%d \t%s \t%s \t%s\t%d \t%s \n",
play[i].team_name, play[i].name, play[i].sex, play[i].age, play[i].id, play[i].id, play[i].addr, play[i].weight,
play[i].tel);
system("pause");
system("cls");
menu();
}
if (i == k) {
printf("\n 抱歉,未查到相关球员\n\n");
printf("继续该查询方式请按1,返回查询方式选择请按2");
scanf("%d", &m);
switch (m) {
case 1:
system("pause");
system("cls");
break;
case 2:
search();
break;
default:
break;
}
}
}
}
void search_team_name() {
char search_team_name[10] = { 0 };
int i, j, m;
int k = load();
printf("请输入队名:\n");
scanf("%s", search_team_name, sizeof(search_team_name));
for (i = 0; i < 20; i++) {
//for (j = 0; j < 20; j++)
if (strcmp(search_team_name, play[j].team_name) == 0) {
printf("已找到该球员,其相关信息为:\n");
printf("\n \t队名 \t姓名 \t 性别 \t年龄 \t编号 \t ID \t 地址\t体重\t电话");
printf("\n \t%s \t%s \t%c\t%d \t%s \t%s \t%s\t%d \t%s \n",
play[i].team_name, play[i].name, play[i].sex, play[i].age, play[i].id, play[i].id, play[i].addr, play[i].weight,
play[i].tel);
system("pause");
system("cls");
menu();
}
if (i == k) {
printf("\n 抱歉,未查到相关球员\n\n");
printf("继续该查询方式请按1,返回查询方式选择请按2");
scanf("%d", &m);
switch (m) {
case 1:
system("pause");
system("cls");
break;
case 2:
search();
break;
default:
break;
}
}
}
}
void add() { //添加函数
FILE *fp;//文件指针
int t, n;
int count = 0;
int i;
int j = load();
char a;
printf("\n原来球员信息:\n");
display();
printf("\n");
fp = fopen("players_list.txt", "a");
printf("输入增加球员的个数");
scanf("%d", &t);
for (i = j; i < (t + j); i++) {
printf("\n输入新增球员的信息:\n");
printf("\n");
printf("请输入球员队名:");
scanf("%d", &play[i].team_name);
printf("\n");
printf("请输入球员编号:");
scanf("%d", &play[i].num);
printf("\n");
printf("请输入球员姓名:");
scanf("%s", &play[i].name);
printf("\n");
printf("请输入性别(w-女 m-男):");
getchar();
scanf("%c", &play[i].sex);
printf("\n");
if (a != 'm' && a != 'w') {
printf("您输入的性别有误,请重新输入!\n");
printf("\n");
printf("请输入性别(w-女 m-男):");
getchar();
scanf("%c", &play[i].sex);
printf("\n");
}
printf("请输入年龄:");
scanf("%d", &play[i].age);
printf("\n");
printf("请输入身高:");
scanf("%d", &play[i].height);
printf("\n");
printf("请输入体重:");
scanf("%d", &play[i].weight);
printf("\n");
printf("请输入球员身份证号:");
scanf("%s", &play[i].id);
printf("\n");
n = strlen(play[i].id);
if (n < 18 || n > 18) {
printf("您输入的身份证有误,请重新输入!\n");
printf("\n");
printf("请输入球员身份证号:");
scanf("%s", &play[i].id);
printf("\n");
}
printf("请输入位置:");
scanf("%s", &play[i].position);
printf("\n");
printf("请输入住址:");
scanf("%s", &play[i].addr);
printf("\n");
printf("请输入电话:");
scanf("%s", &play[i].tel);
count = count + 1;
printf("已经增加的球员个数:\n");
printf("%d\n", count);
}
printf("\n添加完成\n");
j = j + count;
printf("\n浏览增加后的所有球员信息\n");
printf("\n");
save(j);
display();
fclose(fp);
}
void modify() { /*修改函数*/
int num;
char name[30];
char sex;
int age;
int height;
int weight;
char addr[50];
char tel[20];
char position[50];
int b, c, i, n, t, flag;
int j = load();
printf("\n原来的球员信息:\n");
display();
printf("\n");
printf("请输入要修改的球员的姓名:\n");
scanf("%s", name);
for (flag = 1, i = 0; flag && i < j; i++)
if (strcmp(play[i].name, name) == 0) {
printf("\n已找到此人,原始记录为: \n");
printf("球员编号\t姓名\t\t性别\t\t年龄\n");
printf("\n%d\t\t%s\t\t%c\t\t%d\t\n", play[i].num, play[i].name, play[i].sex, play[i].age);
printf("\n身高\t\t体重\t\t住址\t\t电话\t\t\n");
printf("\n%d\t\t%d\t\t%s\t\t%s\n", play[i].height, play[i].weight, play[i].addr, play[i].tel);
printf("位置\n");
printf("\n%s\n", play[i].position);
printf("\n确实要修改此人信息请按1 ;不修改请按0\n");
scanf("%d", &n);
if (n == 1) {
printf("\n需要进行修改的选项\n 1.球员编号2.姓名3.性别4.年龄5.身高6.体重7.住址8.电话9.位置\n");
printf("请输入你想修改的那项序号:\n");
scanf("%d", &c);
if (c > 9 || c < 1)
printf("\n选择错误,请重新选择!\n");
}
flag = 0;
}
if (flag == 1)
printf("\n对不起,查无此人!\n");
do {
switch (c) {
case 1:
printf("球员编号改为: ");
scanf("%d", &num);
play[i - 1].num = num;
break;
case 2:
printf("姓名改为: ");
scanf(" %s", name);
strcpy(play[i - 1].name, name);
break;
case 3:
printf("性别改为: ");
getchar();
scanf("%c", &sex);
play[i - 1].sex = sex;
break;
case 4:
printf("年龄改为: ");
scanf("%d", &age);
play[i - 1].age = age;
break;
case 5:
printf("身高改为: ");
scanf("%d", &height);
play[i - 1].height = height;
break;
case 6:
printf("体重改为: ");
scanf("%d", &weight);
play[i - 1].weight = weight;
break;
case 7:
printf("住址改为: ");
scanf("%s", addr);
strcpy(play[i - 1].addr, addr);
break;
case 8:
printf("电话改为: ");
scanf("%s", tel);
strcpy(play[i - 1].tel, tel);
break;
case 9:
printf("位置改为:");
scanf("%s", position);
strcpy(play[i - 1].position, position);
break;
}
printf("\n");
printf("\n是否确定所修改的信息?\n是请按1;不重新修改请按2:\n");
scanf("%d", &b);
} while (b == 2);
printf("\n浏览修改后的所有球员信息:\n");
printf("\n");
save(j);
display();
printf("\n继续修改请按1,不再修改请按0\n");
scanf("%d", &t);
switch (t) {
case 1:
modify();
break;
case 0:
break;
default:
break;
}
}
void del() { /*删除函数*/
int j = load();
int i, a, n, t, flag;
char name[30];
printf("\n原来的球员信息:\n");
display();
printf("\n");
printf("请输入要删除的球员的姓名:\n");
scanf("%s", name);
for (flag = 1, i = 0; flag && i < j; i++) {
if (strcmp(play[i].name, name) == 0) {
printf("\n已找到此人,原始记录为: \n");
printf("球员编号\t姓名\t\t性别\t\t年龄\n");
printf("\n%d\t\t%s\t\t%c\t\t%d\t\n", play[i].num, play[i].name, play[i].sex, play[i].age);
printf("\n身高\t\t体重\t\t住址\t\t电话\t\t\n");
printf("\n%d\t\t%d\t\t%s\t\t%s\n", play[i].height, play[i].weight, play[i].addr, play[i].tel);
printf("位置\n");
printf("\n%s\n", play[i].position);
printf("\n确实要修改此人信息请按1 ;不修改请按0\n");
scanf("%d", &n);
if (n == 1) {
for (a = i; a < j - 1; a++) {
strcpy(play[a].name, play[a + 1].name);
play[a].num = play[a + 1].num;
play[a].sex = play[a + 1].sex;
play[a].age = play[a + 1].age;
play[a].height = play[a + 1].height;
play[a].weight = play[a + 1].weight;
strcpy(play[a].addr, play[a + 1].addr);
strcpy(play[a].tel, play[a + 1].tel);
strcpy(play[a].position, play[a + 1].position);
}
flag = 0;
}
}
}
if (!flag)
j = j - 1;
else
printf("\n对不起,查无此人!\n");
printf("\n浏览删除后的所有球员信息:\n");
save(j);
display();
printf("\n继续删除请按1,不再删除请按0\n");
scanf("%d", &t);
switch (t) {
case 1:
del();
break;
case 0:
break;
default:
break;
}
}
C语言实现——球员信息管理系统
最新推荐文章于 2023-08-11 14:00:00 发布