#include #include #define maxsize 100 struct student{ int num; char name[20]; char sex[20]; int age; int math,chin,eng; int average; }; int count = 0; void average(struct student students[]) { int i; for (i = 0; i < count; i++) { students[i].average = (students[i].eng + students[i].math + students[i].chin) / 3; } } void new_students(struct student students[]) { int i, n; if (count == maxsize){ printf("the number isfull"); return; } printf("the number is n"); scanf("%d", &n); for (i = 0; i < n; i++){ printf("the student's num"); scanf("%d", &students[i].num); printf("the student's name"); scanf("%s",&students[i].name); printf("the student's math"); scanf("%d", &students[i].math); printf("the student's chin"); scanf("%d", &students[i].chin); printf("the student's eng"); scanf("%d", &students[i].eng); printf("the student's age"); scanf("%d", &students[i].age); printf("the student's sex"); scanf("%s", &students[i].sex); count++; } average(students); } void out_input(struct student students[]) { int i; if (count == 0){ printf("count of students is 0"); return; } printf("num\t name\t math\t chin\t eng\t average\t age\t sex\t\n"); for (i = 0; i < count; i++){ printf("num:%d ", students[i].num); printf("name:%s ", students[i].name); printf("math:%d ", students[i].math); printf("chin:%d ", students[i].chin); printf("eng:%d ", students[i].eng); printf("average:%d ", students[i].average); printf("age:%d ", students[i].age); printf("sex:%s ", students[i].sex); printf("\n"); } getchar(); } void sort(struct student s[]) { struct student temp; int i, j; for (i = 0; i < count; i++) { for (j = 0; j < i - j - 1; j++) if (s[j].average>s[j + 1].average){ temp = s[j]; s[j] = s[j + 1]; s[j + 1] = temp; } } } void modify(struct student *p) { int num, score=1, i; printf("input the new student"); scanf("%d", &num); for (i = 0; i < count; i++, p++) { if (p->num = num) { printf("请输入你的id\n"); scanf("%d", &p->num); printf("请输入你的名字\n"); scanf("%s", p->name); printf("请输入你的数学\n"); scanf("%d",&p->math); printf("请输入你的中文\n"); scanf("%d", &p->chin); printf("请输入你的英文\n"); scanf("%d", &p->eng); printf("请输入你的性别\n"); scanf("%s", p->sex); } else score++; } average(p); if (score > count) { printf("查无此人 请重新输入"); } } void save(struct student students[]) { FILE *pFile = fopen("StudnetMessageSystem.txt", "w+"); for (int i = 0; i < count; i++) { fprintf(pFile, "名字%s\t学号%d\t性别%s\t数学%d\t中文%d\t英文%d\t年龄%d\t平均成绩%d\t \n", students[i].name,students[i].num,students[i].sex,students[i].math,students[i].chin,students[i].eng,students[i].age,students[i].average); } fclose(pFile); printf("保存成功"); } void search_student(struct student students[]) { int i, flag = 0, a; int num,age; char name[20]; char sex[20]; printf("输入你的查询方式1.学号2.名字3.性别4.年龄"); scanf("%d", &a); switch (a) { case 1:printf("请输入学号"); scanf("%d", &num); for (i = 0; i < count; i++) { if (students[i].num == num) { flag = 1; } if (flag) { printf("num:%d", students[i].num); printf("name:%s", students[i].name); printf("math:%d", students[i].math); printf("chin:%d", students[i].chin); printf("eng:%d", students[i].eng); printf("average:%d", students[i].average); printf("age:%d", students[i].age); printf("sex:%s", students[i].sex); printf("\n"); } else printf("no found"); } break; case 2:printf("请输入名字"); scanf("%s", &name); for (i = 0; i < count; i++) { if (!strcmp(students[i].name, name)) { flag = 1; } if (flag) { printf("num:%d", students[i].num); printf("name:%s", students[i].name); printf("math:%d", students[i].math); printf("chin:%d", students[i].chin); printf("eng:%d", students[i].eng); printf("average:%d", students[i].average); printf("age:%d", students[i].age); printf("sex:%s", students[i].sex); printf("\n"); } else printf("no found"); } break; case 3:printf("请输入性别"); scanf("%s", &sex); for (i = 0; i < count; i++) { if (!strcmp(students[i].name, name)) { flag = 1; } if (flag) { printf("num:%d", students[i].num); printf("name:%s", students[i].name); printf("math:%d", students[i].math); printf("chin:%d", students[i].chin); printf("eng:%d", students[i].eng); printf("average:%d", students[i].average); printf("age:%d", students[i].age); printf("sex:%s", students[i].sex); printf("\n"); } else printf("no found"); } break; case 4:printf("请输入年龄"); scanf("%d", &age); for (i = 0; i < count; i++) { if (students[i].age == age) { flag = 1; } if (flag) { printf("num:%d", students[i].num); printf("name:%s", students[i].name); printf("math:%d", students[i].math); printf("chin:%d", students[i].chin); printf("eng:%d", students[i].eng); printf("average:%d", students[i].average); printf("age:%d", students[i].age); printf("sex:%s", students[i].sex); printf("\n"); } else printf("no found"); } break; default: break; } if (count == 0){ printf("学生数目为零"); return; } } void delet(struct student students[]) { int num; printf("输入你想删除学生的学号"); scanf("%d", &num); for (int i = 0; i < count; i++) { if (students[i].num == num) { students[i].num = students[i + 1].num; strcpy(students[i].name, students[i + 1].name); students[i].age = students[i + 1].age; strcpy(students[i].sex, students[i + 1].sex); students[i].math = students[i + 1].math; students[i].chin = students[i + 1].chin; students[i].eng = students[i + 1].eng; } } if (count == 1) count = 0; } void delet(struct student students[]); void save(struct student students[]); void new_students(struct student students[]); void out_input(struct student students[]); void search_student(struct student students[]); void modify(struct student *p); void average(struct student students[]); void sort(struct student s[]); int main() { struct student students[maxsize]; while (1) { int a; printf("输入1:输入学生2:修改信息;3:查询信息;4:显示基本信息5:保存信息6:删除学生信息0:关闭\n"); printf("请输入指令"); scanf("%d", &a); switch (a) { case 1:new_students(students); average(students); break; case 2:modify(students); break; case 3:search_student(students); break; case 4:out_input(students); break; case 5:save(students); break; case 6:delet(students); break; case 0: return 0; break; default: printf("输出错误指令"); break; } } return 0; }