- 登录密码
- 完整代码
- 效果展示
- 结语
初始密码:123456 (可在main方法中自行修改)
完整代码#include效果展示#include #include #define L sizeof(ID) #define FORMAT "ttt%-12s%-15s%-60s" #define DATA ids[i].name, ids[i].x, ids[i].score int n; int i = 0; int j = 0; int c; int k; FILE *p; //定义指向FILE类型文件的指针变量 char name[12]; typedef struct { char name[12]; //姓名 char x[15]; //号码与项目 char score[60]; //成绩 } ID; //声明新的类型名ID 代表上面结构体类型 ID ids[100]; void menu() //菜单 { system("cls"); printf("nnn"); printf("ttttttttt|----------------------------------------------|n"); printf("ttttttttt| |n"); printf("ttttttttt| 运动员信息 |n"); printf("ttttttttt| |n"); printf("ttttttttt| 1.录入运动员信息 2.查询运动员信息 |n"); printf("ttttttttt| |n"); printf("ttttttttt| 3.修改运动员信息 4.删除运动员信息 |n"); printf("ttttttttt| |n"); printf("ttttttttt| 5.显示全部运动员信息 0.退出系统 |n"); printf("ttttttttt| |n"); printf("ttttttttt|----------------------------------------------|n"); printf("tttttttttt请在(0—5)选择要进行的操作!n"); //菜单的主页面 } void all() //全部运动员信息展示 { system("cls"); //清屏 printf("nnnn"); p = fopen("data.txt", "rb"); //打开文件并将fopen函数的返回值赋给指针变量p j = 0; while (!feof(p)) //判断p指向的文件是否结束 if (fread(&ids[j], L, 1, p) == 1) //将p指向的文件中读入结构体数组ids的一个元素 每次读入一个 则读入成功 其返回值为1 j++; //每读一个 j就加1 fclose(p); //把p指向的文件关闭 以后p不再指向该文件 if (j == 0) { printf("tttt目前没有运动员信息nttt"); system("pause"); return; } printf("ttt姓名 号码与成绩 成绩n"); for (i = 0; i < j; i++) //输出运动员信息 { printf(FORMAT, DATA); printf("n"); } printf("ttt输入任意键返回主界面nt"); system("pause"); } void input() { system("cls"); //清屏 printf("nnn"); if ((p = fopen("data.txt", "a+")) == NULL) //打开文件,先检查是否有错,有错则输出无法打开文件 { printf("ttttt无法打开文件nttttt"); system("pause"); return; } while (!feof(p)) //判断p指向的文件是否结束 { if (fread(&ids[j], L, 1, p) == 1) //将p指向的文件中读入结构体数组ids的一个元素 每次读入一个 则读入成功 其返回值为1 j++; } fclose(p); //把p指向的文件关闭 以后p不再指向该文件 if (j == 0) printf("ttttt目前没有运动员n"); else { system("cls"); //清屏 printf("nnnn"); all(); } if ((p = fopen("data.txt", "wb")) == NULL) //打开文件,先检查是否有错,有错则输出无法打开文件,p指向该文件 { printf("ttttt文件无法打开nttttt"); system("pause"); return; } for (i = 0; i < j; i++) //建立运动员信息 fwrite(&ids[i], L, 1, p); printf("ttttt输入1开始建立运动员信息 输入0结束nttttt"); scanf("%d", &c); while (c) { printf("ttttt输入运动员姓名nttttt"); scanf("%s", &ids[j].name); for (i = 0; i < j; i++) if (strcmp(ids[j].name, ids[i].name) == 0) { printf("ttttt该运动员已存在nttttt"); system("pause"); fclose(p); return; } printf("ttttt运动员号码与项目:nttttt"); scanf("%s", &ids[j].x); printf("ttttt运动员的成绩:nttttt"); scanf("%s", &ids[j].score); if (fwrite(&ids[j], L, 1, p) != 1) { printf("ttttt写入失败nttttt"); system("pause"); return; } else { printf("ttttt运动员信息 %s 写入成功n", &ids[j].name); j++; } printf("ttttt是否继续输入?输入1继续 输入0结束nttttt"); scanf("%d", &c); } fclose(p); printf("ttttt已关闭文件n"); printf("ttttt任意键返回主界面nttttt"); system("pause"); } void search() { system("cls"); printf("nnnn"); if ((p = fopen("data.txt", "rb")) == NULL) { printf("ttttt打开文件失败nttttt"); system("pause"); return; } while (!feof(p)) if (fread(&ids[j], L, 1, p) == 1) j++; fclose(p); if (j == 0) { printf("ttttt目前没有运动员信息nttttt"); system("pause"); return; } printf("ttttt请输入要查找的运动员姓名nttttt"); scanf("%s", name); for (i = 0; i < j; i++) if (strcmp(ids[i].name, name) == 0) { printf("ttttt已找到运动员n"); printf("ttttt是否显示此运动员? 输入1显示 输入0不显示nttttt"); scanf("%d", &c); if (c) { printf("ttt姓名 号码与项目 成绩tttttn"); printf(FORMAT, DATA); } break; } if (i == j) printf("ttttt未查询到该运动员n"); printf("ttttt任意键返回主页面nttttt"); system("pause"); } void updata() { system("cls"); printf("nnnn"); if ((p = fopen("data.txt", "rb")) == NULL) { printf("ttttt无法打开文件nttttt"); system("pause"); return; } while (!feof(p)) { if (fread(&ids[j], L, 1, p) == 1) j++; } if (j == 0) { printf("ttttt目前还没有运动员n"); fclose(p); return; } fclose(p); all(); printf("ttttt输入你想修改的运动员信息n"); printf("ttttt姓名:"); scanf("%s", name); for (i = 0; i < j; i++) { if (strcmp(name, ids[i].name) == 0) { printf("ttttt已找到该运动员,请修改n"); printf("ttttt姓名:"); scanf("%s", &ids[i].name); printf("ttttt号码与项目:"); scanf("%s", &ids[i].x); printf("ttttt成绩:"); scanf("%s", &ids[i].score); fopen("data.txt", "wb"); for (c = 0; c < j; c++) if (fwrite(&ids[c], L, 1, p) != 1) { printf("ttttt没有成功保存n"); system("pause"); return; } printf("ttttt运动员 %s 的信息修改成功n", name); fclose(p); break; } } if (i == j) printf("ttttt没有找到该运动员n"); printf("ttttt输入任意键返回主界面nttttt"); system("pause"); } void dlt() { system("cls"); printf("nnnn"); if ((p = fopen("data.txt", "r+")) == NULL) { printf("ttttt目前没有文件nttttt"); system("pause"); return; } j = 0; while (!feof(p)) { if (fread(&ids[j], L, 1, p) == 1) { j++; } } fclose(p); if (j == 0) { printf("ttttt目前没有运动员信息nttttt"); system("pause"); return; } printf("ttttt输入你想删除的运动员姓名: "); scanf("%s", name); for (i = 0; i < j; i++) { if (strcmp(name, ids[i].name) == 0) { printf("ttttt已找到该运动员,是否删除 1 确定 0 取消n"); printf("ttt姓名 号码与项目 成绩tttttn"); printf(FORMAT, DATA); printf("nttt"); scanf("%d", &k); if (k) { for (n = i; n < j; n++) { ids[n] = ids[n + 1]; } j -= 1; } break; } } fopen("data.txt", "wb"); for (i = 0; i < j; i++) { if (fwrite(&ids[i], L, 1, p) != 1) { printf("ttttt没有修改成功n"); system("pause"); return; } } printf("ttttt运动员 %s 的信息删除成功n", name); fclose(p); printf("ttttt输入任意键返回主界面nttttt"); system("pause"); } main() { char s[20]; printf("nnnnnnnnnnnntttttt请输入密码以进入系统:"); scanf("%s", s); if (strcmp(s, "123456") == 0) //密码 { void menu(); void input(); void search(); void updata(); void dlt(); void all(); repeat: menu(); scanf("%d", &n); while (n) { switch (n) { case 1: input(); break; case 2: search(); break; case 3: updata(); break; case 4: dlt(); break; case 5: all(); break; } goto repeat; } } else printf("密码输入错误!系统已关闭!"); return 0; }
运行环境:VS Code
-
输入密码
-
成功进入
-
录入运动员信息
-
查询运动员信息
-
修改运动员信息
-
删除运动员信息
-
显示全部运动员信息
-
退出系统
都看到这了,点个赞再走呗~嘻嘻



