From efaae0a94c1da207d7e076c066e07c69649239cd Mon Sep 17 00:00:00 2001 From: pq52sx6n8 <2731407373@qq.com> Date: Thu, 29 May 2025 01:57:38 +0800 Subject: [PATCH] =?UTF-8?q?Delete=20'=E5=AD=A6=E7=94=9F=E6=88=90=E7=BB=A9?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E7=B3=BB=E7=BB=9F=E4=BF=AE=E6=94=B91'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 学生成绩管理系统修改1 | 301 -------------------------------- 1 file changed, 301 deletions(-) delete mode 100644 学生成绩管理系统修改1 diff --git a/学生成绩管理系统修改1 b/学生成绩管理系统修改1 deleted file mode 100644 index 8b8ed40..0000000 --- a/学生成绩管理系统修改1 +++ /dev/null @@ -1,301 +0,0 @@ -#include -#include -#include - -typedef struct { - int rank; // 排名序号 - char num[20]; // 学号 - char name[10]; // 姓名 - int math_score; // 高数成绩 - int datastruct_score; // 数据结构成绩 - int English_score; // 英语成绩 - int physics_score; // 物理成绩 - float average; // 平均分 -} Student; - -typedef struct { - Student *data; - int length; -} funlist; - -// 初始化线性表 -void initlist(funlist *l) { - l->data = (Student *)malloc(100 * sizeof(Student)); - l->length = 0; -} - -// 判断是否为空表 -int isempty(funlist *l) { - return l->length == 0; -} - -// 取值 -int getelem(funlist l, int i, Student *e) { - if (i < 1 || i > l.length) { - printf("位置不合法\n"); - return 0; - } - *e = l.data[i - 1]; - return 1; -} - -// 计算平均分 -float calculate_average(Student *s) { - return (s->math_score + s->datastruct_score + s->English_score + s->physics_score) / 4.0f; -} - -// 打印操作(无排名) -void printlist_no_rank(funlist l) { - int i; - printf("成绩表为:\n"); - for (i = 0; i < l.length; i++) { - printf("学号:%s 姓名:%s 高数:%d 数据结构:%d 英语:%d 物理:%d 平均分:%.2f\n", - l.data[i].num, l.data[i].name, l.data[i].math_score, - l.data[i].datastruct_score, l.data[i].English_score, - l.data[i].physics_score, l.data[i].average); - } -} - -// 打印操作(带排名) -void printlist_with_rank(funlist l) { - int i; - printf("成绩表为:\n"); - for (i = 0; i < l.length; i++) { - printf("排名:%d 学号:%s 姓名:%s 高数:%d 数据结构:%d 英语:%d 物理:%d 平均分:%.2f\n", - l.data[i].rank, l.data[i].num, l.data[i].name, l.data[i].math_score, - l.data[i].datastruct_score, l.data[i].English_score, - l.data[i].physics_score, l.data[i].average); - } -} - -// 查找操作(按学号查找) -int locateelem1(funlist l, char *num) { - int i; - for (i = 0; i < l.length; i++) { - if (strcmp(l.data[i].num, num) == 0) - return i + 1; - } - return -1; -} - -// 查找操作(按姓名查找) -int locateelem2(funlist l, char *name) { - int i; - for (i = 0; i < l.length; i++) { - if (strcmp(l.data[i].name, name) == 0) - return i + 1; - } - return -1; -} - -// 删除操作 -int deleteelem(funlist *l, int i) { - int j; - if (i < 1 || i > l->length) { - printf("位置不合法\n"); - return 0; - } - for (j = i; j < l->length; j++) { - l->data[j - 1] = l->data[j]; - } - l->length--; - // 重新调整排名 - for (j = i - 1; j < l->length; j++) { - l->data[j].rank = j + 1; - } - return 1; -} - -// 插入操作 -int listinsert(funlist *l, int i, Student e) { - if (i < 1 || i > l->length + 1) { - printf("位置不合法\n"); - return 0; - } - if (l->length >= 100) { - printf("线性表已满\n"); - return 0; - } - int j; - for (j = l->length - 1; j >= i - 1; j--) { - l->data[j + 1] = l->data[j]; - // 向后移动排名 - l->data[j + 1].rank = l->data[j].rank + 1; - } - // 计算并保存平均分 - e.average = calculate_average(&e); - e.rank = i; - l->data[i - 1] = e; - l->length++; - return 1; // 返回1表示成功 -} - -// 按平均分排序 -void sort_by_average(funlist *l) { - if (l->length <= 1) return; // 无需排序 - - int i, j; - for (i = 0; i < l->length - 1; i++) { - for (j = 0; j < l->length - i - 1; j++) { - if (l->data[j].average < l->data[j + 1].average) { - Student temp = l->data[j]; - l->data[j] = l->data[j + 1]; - l->data[j + 1] = temp; - } - } - } - // 更新排名 - for (i = 0; i < l->length; i++) { - l->data[i].rank = i + 1; - } - printf("学生已按平均分降序排列\n"); -} - -// 将数据写入文件 -void write_to_file(funlist l, const char *filename) { - FILE *file = fopen(filename, "a"); - if (file == NULL) { - printf("无法打开文件\n"); - return; - } - - for (int i = 0; i < l.length; i++) { - fprintf(file, "排名:%d 学号:%s 姓名:%s 高数:%d 数据结构:%d 英语:%d 物理:%d 平均分:%.2f\n", - l.data[i].rank, l.data[i].num, l.data[i].name, l.data[i].math_score, - l.data[i].datastruct_score, l.data[i].English_score, - l.data[i].physics_score, l.data[i].average); - } - - fclose(file); - printf("数据已成功写入文件 %s\n", filename); -} - - -int main() { - funlist L; - initlist(&L); - - int choice; - char num[20]; - char name[10]; - int math_score; - int datastruct_score; - int English_score; - int physics_score; - int i; - - printf("1.插入学生\n"); - printf("2.通过学号查询学生\n"); - printf("3.通过姓名查询学生\n"); - printf("4.删除学生\n"); - printf("5.按平均分排序学生\n"); - printf("6.退出\n"); - - while (1) { - printf("请输入操作选项:"); - scanf("%d", &choice); - switch (choice) { - case 1: { - Student e; - printf("请输入姓名:"); - scanf("%s", name); - strcpy(e.name, name); - - printf("请输入学号:"); - scanf("%s", num); - strcpy(e.num, num); - - printf("请输入高数成绩:"); - scanf("%d", &math_score); - e.math_score = math_score; - - printf("请输入数据结构成绩:"); - scanf("%d", &datastruct_score); - e.datastruct_score = datastruct_score; - - printf("请输入英语成绩:"); - scanf("%d", &English_score); - e.English_score = English_score; - - printf("请输入物理成绩:"); - scanf("%d", &physics_score); - e.physics_score = physics_score; - - printf("请输入想插入的位置(1-%d):\n", L.length + 1); - scanf("%d", &i); - - if (listinsert(&L, i, e)) { - printf("插入成功\n"); - } else { - printf("插入失败\n"); - } - printlist_no_rank(L); - printf("\n"); - break; - } - - case 2: { - printf("输入想查找的学生学号:"); - scanf("%s", num); - i = locateelem1(L, num); - if (i != -1) { - Student e; - getelem(L, i, &e); - printf("找到学生: 学号:%s 姓名:%s 平均分:%.2f\n", - e.num, e.name, e.average); - } else { - printf("未找到学号为%s的学生\n", num); - } - printf("\n"); - break; - } - - case 3: { - printf("输入想查找的学生姓名:"); - scanf("%s", name); - i = locateelem2(L, name); - if (i != -1) { - Student e; - getelem(L, i, &e); - printf("找到学生: 学号:%s 姓名:%s 平均分:%.2f\n", - e.num, e.name, e.average); - } else { - printf("未找到姓名为%s的学生\n", name); - } - printf("\n"); - break; - } - - case 4: { - printf("输入想删除的学生位置:"); - scanf("%d", &i); - if (deleteelem(&L, i)) { - printf("删除成功\n"); - } else { - printf("删除失败\n"); - } - printlist_no_rank(L); - printf("\n"); - break; - } - - case 5: { - sort_by_average(&L); - printlist_with_rank(L); - printf("\n"); - break; - } - - case 6: { - write_to_file(L, "Z:\\C语言\\数据结构\\学生成绩信息.txt"); // 写入文件 - printf("退出系统\n"); - free(L.data); - return 0; - } - default: - printf("无效选项,请重新输入\n"); - } - } - - return 0; -} \ No newline at end of file