【学生成绩管理系统----C语言】

这篇具有很好参考价值的文章主要介绍了【学生成绩管理系统----C语言】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

还在为期末程序设计而烦恼吗,不要担心,大师帮你安利一波完整的的管理系统代码,对你有帮助记得加关注噢!


文章目录

一、学生成绩管理系统是什么?

二、信息管理的七个模块

1.Step one

2.Step Two 

3.Step Three

4.Step four

5.Step five

6.Step Six

7.Next

总结


c语言学生成绩管理系统,c语言,c++,开发语言,数据结构,链表


一、学生成绩管理系统是什么?

       学生信息管理系统能够方便地查询和变更学生的基本数据(例如增删改查),节省大量工作时间,有效地提高学生信息管理的效率。今天要讲的是以下7个模块。

1. 学生信息输入模块。其中包括学生信息的输入和存储,同时考虑学号输入的健壮性,避免输入重复的学号。
2. 学生信息更新模块。提供对学生信息的修改和删除功能,同时也需要进行学号输入的检查,避免出现不合法的学号。
3. 成绩查询模块。可以按照学号或姓名查找学生信息,并输出学生的成绩信息。
4. 成绩统计模块。可以对所有学生的成绩按个人、按专业、按课程和按班级进行升序和降序的统计和排名,并输出成绩排名。
5. 成绩输出模块。可以按照不同的格式输出学生的成绩信息,包括按照学号、姓名、成绩等排序。
6. 系统帮助模块。提供系统使用的帮助信息,包括各个模块的使用方法和注意事项。
7. 退出系统模块。可以在任何时候退出系统。

二、信息管理的七个模块

1.Step one

数据结构设计:

在实现该系统之前,我们需要先设计一下需要用到的数据结构。我们可以定义一个结构体来表示学生的基本信息和成绩信息。

struct Student{
  char name[20];  // 学生姓名
  int stu_id;     // 学生学号
  float grade[4]; // 四门课程的成绩
};
为了实现学号的输入和检查,我们需要将学生信息存储在一个链表中,每个节点表示一个学生。

struct Student_List{
  struct Student student;
  struct Student_List *next;
};

2.Step Two 

学生信息输入模块:

我们需要设计一个函数来读入学生信息,将其存储在链表中。

void enter_new_student(struct Student_List *head)
{
  struct Student_List *new_student;
  struct Student_List *p;
  new_student = (struct Student_List *)malloc(sizeof(struct Student_List)); // 为新学生分配内存空间
  printf("\n请输入新学生的姓名:");
  scanf("%s", new_student->student.name);
  printf("请输入学生学号:");
  scanf("%d", &new_student->student.stu_id);
  p = head->next;
  while(p != NULL)   // 检查学号是否重复
  {
    if(p->student.stu_id == new_student->student.stu_id)
    {
      printf("学号重复,请重新输入:");
      scanf("%d", &new_student->student.stu_id);
      p = head->next;
    }
    else{
      p = p->next;
    }
  }
  printf("请输入四门功课的成绩:");
  for(int i = 0; i < 4; i++)
  {
    scanf("%f", &new_student->student.grade[i]);
  }
  new_student->next = head->next;   // 把新学生插入链表头部
  head->next = new_student;
}

3.Step Three

学生信息更新模块

我们需要实现一个函数来更新学生信息。首先,我们需要输入要更新的学生的学号。如果学号存在,则将学生的基本信息和成绩信息读入,然后更新到链表中。
 

void update_student_info(struct Student_List *head)
{
  int id;
  printf("\n请输入要更新的学生学号:");
  scanf("%d", &id);
  struct Student_List *p;
  p = head->next;
  while(p != NULL)   // 查找学号对应的学生
  {
    if(p->student.stu_id == id)
    {
      printf("请输入学生姓名:");
      scanf("%s", p->student.name);
      printf("请输入四门功课的成绩:");
      for(int i = 0; i < 4; i++)
      {
        scanf("%f", &p->student.grade[i]);
      }
      printf("学生信息已更新!\n");
      return;
    }
    else{
      p = p->next;
    }
  }
  printf("没有找到该学号对应的学生!\n");
}

 

4.Step four

成绩查询模块

我们需要设计一个函数,可以按照学号或姓名查找学生信息。如果查到学生信息,则输出其基本信息和成绩信息。

void search_student_info(struct Student_List *head)
{
  int choice;
  printf("\n请输入查询方式(1为按学号查询,2为按姓名查询):");
  scanf("%d", &choice);

  if(choice == 1)
  {
    int id;
    printf("请输入学生学号:");
    scanf("%d", &id);
    struct Student_List *p;
    p = head->next;
    while(p != NULL)   // 查找学号对应的学生
    {
      if(p->student.stu_id == id)
      {
        printf("姓名:%s 学号:%d\n", p->student.name, p->student.stu_id);
        printf("语文成绩:%f 数学成绩:%f 英语成绩:%f 物理成绩:%f\n", p->student.grade[0], p->student.grade[1], p->student.grade[2], p->student.grade[3]);
        return;
      }
      else{
        p = p->next;
      }
    }
    printf("没有找到该学号对应的学生!\n");
  }
  else if(choice == 2)
  {
    char name[20];
    printf("请输入学生姓名:");
    scanf("%s", name);
    struct Student_List *p;
    p = head->next;
    while(p != NULL)   // 查找姓名对应的学生
    {
      if(strcmp(p->student.name, name) == 0)
      {
        printf("姓名:%s 学号:%d\n", p->student.name, p->student.stu_id);
        printf("语文成绩:%f 数学成绩:%f 英语成绩:%f 物理成绩:%f\n", p->student.grade[0], p->student.grade[1], p->student.grade[2], p->student.grade[3]);
        return;
      }
      else{
        p = p->next;
      }
    }
    printf("没有找到该姓名对应的学生!\n");
  }
  else{
    printf("输入有误,请重新输入!\n");
    search_student_info(head);
  }
}

5.Step five

成绩统计模块

我们需要实现一个函数对所有学生的成绩按个人、按专业、按课程和按班级进行升序和降序的统计和排名,并输出成绩排名。

int cmp(const void *a, const void *b)
{
  struct Student_List *p1 = *(struct Student_List **)a;
  struct Student_List *p2 = *(struct Student_List **)b;
  int sum1 = 0, sum2 = 0;
  for(int i = 0; i < 4; i++)
  {
    sum1 += p1->student.grade[i];
    sum2 += p2->student.grade[i];
  }
  float avg1 = (float)sum1 / 4;
  float avg2 = (float)sum2 / 4;
  if(avg1 < avg2)
    return -1;
  else if(avg1 == avg2)
    return 0;
  else
    return 1;
}

void rank_students(struct Student_List *head)
{
  int choice, by_order;
  printf("\n请选择要排序的方式(1为按平均分排序,2为按语文成绩排序,3为按数学成绩排序,4为按英语成绩排序,5为按物理成绩排序):");
  scanf("%d", &choice);
  printf("请选择排序方式(1为升序,2为降序):");
  scanf("%d", &by_order);

  int count = 1;
  struct Student_List *p;
  p = head->next;
  int nums = 0;

  // 统计学生总数
  while(p != NULL)
  {
    nums++;
    p = p->next;
  }

  // 动态分配内存
  struct Student_List **list = (struct Student_List **)malloc(nums * sizeof(struct Student_List *));
  p = head->next;
  for(int i = 0; i < nums; i++)
  {
    list[i] = p;
    p = p->next;
  }

  // 根据不同的排序方式调用快排函数
  switch(choice)
  {
    case 1:
      qsort(list, nums, sizeof(struct Student_List *), cmp);
      break;
    case 2:
      break;
    case 3:
      break;
    case 4:
      break;
    case 5:
      break;
    default:
      printf("输入有误,请重新输入!\n");
      rank_students(head);
  }

  // 按升序或降序输出结果
  if(by_order == 1)
  {
    printf("名次  姓名    平均分\n");
    for(int i = 0; i < nums; i++)
    {
      printf("%-4d  %-6s %4.2f\n", count, list[i]->student.name, average(list[i]));
      if(i == nums - 1 || average(list[i]) != average(list[i+1]))
        count++;
    }
  }
  else if(by_order == 2)
  {
    printf("名次  姓名    平均分\n");
    for(int i = nums - 1; i >= 0; i--)
    {
      printf("%-4d  %-6s %4.2f\n", count, list[i]->student.name, average(list[i]));
      if(i == 0 || average(list[i]) != average(list[i-1]))
        count++;
    }
  }
  else{
    printf("输入有误,请重新输入!\n");
    rank_students(head);
  }

  // 释放内存
  free(list);
}

// 计算学生平均分的函数
float average(struct Student_List *p)
{
  int sum = 0;
  for(int i = 0; i < 4; i++)
  {
    sum += p->student.grade[i];
  }
  return (float)sum / 4;
}

 

6.Step Six

成绩输出模块

我们需要设计一个函数,可以按照不同的格式输出学生的成绩信息,包括按照学号、姓名、成绩等排序。

void print_students(struct Student_List *head)
{
  int choice;
  printf("\n请选择要排序的方式(1为按学号排序,2为按姓名排序,3为按平均分排序,4为按语文成绩排序,5为按数学成绩排序,6为按英语成绩排序,7为按物理成绩排序):");
  scanf("%d", &choice);

  struct Student_List **list = (struct Student_List **)malloc(nums * sizeof(struct Student_List *));
  struct Student_List *p;
  p = head->next;

  // 构建链表节点的指针数组
  for(int i = 0; i < nums; i++)
  {
    list[i] = p;
    p = p->next;
  }

  // 根据不同的排序方式对链表节点的指针数组进行排序
  switch(choice)
  {
    case 1:
      qsort(list, nums, sizeof(struct Student_List *), cmp_id);
      break;
    case 2:
      qsort(list, nums, sizeof(struct Student_List *), cmp_name);
      break;
    case 3:
      qsort(list, nums, sizeof(struct Student_List *), cmp);
      break;
    case 4:
      qsort(list, nums, sizeof(struct Student_List *), cmp_chinese);
      break;
    case 5:
      qsort(list, nums, sizeof(struct Student_List *), cmp_math);
      break;
    case 6:
      qsort(list, nums, sizeof(struct Student_List *), cmp_english);
      break;
    case 7:
      qsort(list, nums, sizeof(struct Student_List *), cmp_physics);
      break;
    default:
      printf("输入有误,请重新输入!\n");
      print_students(head);
  }

  // 输出排序后的结果
  printf("姓名    学号    平均分  语文  数学  英语  物理\n");
  for(int i = 0; i < nums; i++)
  {
    printf("%-6s %4d    %4.2f   %4.1f  %4.1f  %4.1f  %4.1f\n", 
      list[i]->student.name, list[i]->student.stu_id, average(list[i]),
      list[i]->student.grade[0], list[i]->student.grade[1], list[i]->student.grade[2], list[i]->student.grade[3]);
  }

  // 释放内存
  free(list);
}

// 对学号进行比较的函数
int cmp_id(const void *a, const void *b)
{
  struct Student_List *p1 = *(struct Student_List **)a;
  struct Student_List *p2 = *(struct Student_List **)b;
  if(p1->student.stu_id < p2->student.stu_id)
    return -1;
  else if(p1->student.stu_id == p2->student.stu_id)
    return 0;
  else
    return 1;
}

// 对姓名进行比较的函数
int cmp_name(const void *a, const void *b)
{
  struct Student_List *p1 = *(struct Student_List **)a;
  struct Student_List *p2 = *(struct Student_List **)b;
  return strcmp(p1->student.name, p2->student.name);
}

// 对语文成绩进行比较的函数
int cmp_chinese(const void *a, const void *b)
{
  struct Student_List *p1 = *(struct Student_List **)a;
  struct Student_List *p2 = *(struct Student_List **)b;
  if(p1->student.grade[0] > p2->student.grade[0])
    return -1;
  else if(p1->student.grade[0] == p2->student.grade[0])
    return 0;
  else
    return 1;
}

// 对数学成绩进行比较的函数
int cmp_math(const void *a, const void *b)
{
  struct Student_List *p1 = *(struct Student_List **)a;
  struct Student_List *p2 = *(struct Student_List **)b;
  if(p1->student.grade[1] > p2->student.grade[1])
    return -1;
  else if(p1->student.grade[1] == p2->student.grade[1])
    return 0;
  else
    return 1;
}

// 对英语成绩进行比较的函数
int cmp_english(const void *a, const void *b)
{
  struct Student_List *p1 = *(struct Student_List **)a;
  struct Student_List *p2 = *(struct Student_List **)b;
  if(p1->student.grade[2] > p2->student.grade[2])
    return -1;
  else if(p1->student.grade[2] == p2->student.grade[2])
    return 0;
  else
    return 1;
}

// 对物理成绩进行比较的函数
int cmp_physics(const void *a, const void *b)
{
  struct Student_List *p1 = *(struct Student_List **)a;
  struct Student_List *p2 = *(struct Student_List **)b;
  if(p1->student.grade[3] > p2->student.grade[3])
    return -1;
  else if(p1->student.grade[3] == p2->student.grade[3])
    return 0;
  else
    return 1;
}

 


7.Next

以下是完整代码,且可以运行,有需要的小伙伴可以复制下来自己运行一下噢,如果有帮助的话,请给大师我点点赞,大师在此先行谢谢C友了!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_STUDENTS 100
#define MAX_NAME_LEN 30
#define MAX_ID_LEN 20
#define MAX_MAJOR_LEN 50
#define MAX_COURSE_LEN 50
#define GRADE_NUM 3

struct student {
    char name[MAX_NAME_LEN];
    char id[MAX_ID_LEN];
    char major[MAX_MAJOR_LEN];
    float grades[GRADE_NUM];
};

struct student students[MAX_STUDENTS];
int num_students = 0;

void input_student_info();
void update_student_info();
void query_grades();
void report_grades();
void output_grades();
void help();
void exit_system();

int main() {
    int choice = 0;
    while (1) {
        printf("==== Student Grade Management System ====\n");
        printf("1. Input Student Information\n");
        printf("2. Update Student Information\n");
        printf("3. Query Grades\n");
        printf("4. Report Grades\n");
        printf("5. Output Grades\n");
        printf("6. Help\n");
        printf("7. Exit\n");
        printf("Please enter your choice (1-7):\n");
        scanf("%d", &choice);
        switch (choice) {
            case 1:
                input_student_info();
                break;
            case 2:
                update_student_info();
                break;
            case 3:
                query_grades();
                break;
            case 4:
                report_grades();
                break;
            case 5:
                output_grades();
                break;
            case 6:
                help();
                break;
            case 7:
                exit_system();
                return 0;
            default:
                printf("Invalid choice!\n");
                break;
        }
    }
}

void input_student_info() {
    if (num_students >= MAX_STUDENTS) {
        printf("Too many students, cannot input more!\n");
        return;
    }
    struct student new_student;
    printf("Please enter the name of the student:\n");
    scanf("%s", new_student.name);
    printf("Please enter the ID of the student:\n");
    scanf("%s", new_student.id);
    for (int i = 0; i < num_students; i++) {
        if (strcmp(students[i].id, new_student.id) == 0) {
            printf("Duplicate ID, please input again!\n");
            return;
        }
    }
    printf("Please enter the major of the student:\n");
    scanf("%s", new_student.major);
    printf("Please enter the grades of the student (3 numbers separated by spaces):\n");
    scanf("%f %f %f", &new_student.grades[0], &new_student.grades[1], &new_student.grades[2]);
    students[num_students++] = new_student;
    printf("Student information input successful!\n");
}

void update_student_info() {
    char id[MAX_ID_LEN];
    printf("Please enter the ID of the student to be updated:\n");
    scanf("%s", id);
    int found = 0;
    for (int i = 0; i < num_students; i++) {
        if (strcmp(students[i].id, id) == 0) {
            found = 1;
            printf("1. Update Name\n");
            printf("2. Update Major\n");
            printf("3. Update Grades\n");
            printf("4. Delete Student\n");
            printf("Please enter your choice (1-4):\n");
            int choice = 0;
            scanf("%d", &choice);
            switch (choice) {
                case 1:
                    printf("Please enter the new name of the student:\n");
                    scanf("%s", students[i].name);
                    printf("Name updated successful!\n");
                    break;
                case 2:
                    printf("Please enter the new major of the student:\n");
                    scanf("%s", students[i].major);
                    printf("Major updated successful!\n");
                    break;
                case 3:
                    printf("Please enter the new grades of the student (3 numbers separated by spaces):\n");
                    scanf("%f %f %f", &students[i].grades[0], &students[i].grades[1], &students[i].grades[2]);
                    printf("Grades updated successful!\n");
                    break;
                case 4:
                    for (int j = i + 1; j < num_students; j++) {
                        students[j - 1] = students[j];
                    }
                    num_students--;
                    printf("Student deleted successful!\n");
                    break;
                default:
                    printf("Invalid choice!\n");
                    break;
            }
            break;
        }
    }
    if (!found) {
        printf("Student not found!\n");
    }
}

void query_grades() {
    printf("1. Query by ID\n");
    printf("2. Query by Name\n");
    printf("Please enter your choice (1-2):\n");
    int choice = 0;
    scanf("%d", &choice);
    switch (choice) {
        case 1:
            printf("Please enter the ID of the student:\n");
            char id[MAX_ID_LEN];
            scanf("%s", id);
            for (int i = 0; i < num_students; i++) {
                if (strcmp(students[i].id, id) == 0) {
                    printf("Name: %s\n", students[i].name);
                    printf("ID: %s\n", students[i].id);
                    printf("Major: %s\n", students[i].major);
                    printf("Grades: %.1f %.1f %.1f\n", students[i].grades[0], students[i].grades[1], students[i].grades[2]);
                    return;
                }
            }
            printf("Student not found!\n");
            break;
        case 2:
            printf("Please enter the name of the student:\n");
            char name[MAX_NAME_LEN];
            scanf("%s", name);
            for (int i = 0; i < num_students; i++) {
                if (strcmp(students[i].name, name) == 0) {
                    printf("Name: %s\n", students[i].name);
                    printf("ID: %s\n", students[i].id);
                    printf("Major: %s\n", students[i].major);
                    printf("Grades: %.1f %.1f %.1f\n", students[i].grades[0], students[i].grades[1], students[i].grades[2]);
                    return;
                }
            }
            printf("Student not found!\n");
            break;
        default:
            printf("Invalid choice!\n");
            break;
    }
}

void report_grades() {
    printf("1. By Name\n");
    printf("2. By Major\n");
    printf("3. By Course\n");
    printf("4. By Class\n");
    printf("Please enter your choice (1-4):\n");
    int choice = 0;
    scanf("%d", &choice);
    switch (choice) {
        case 1:
            printf("Report by Name:\n");
            printf("Name\tID\tGrades\tRank\n");
            for (int i = 0; i < num_students; i++) {
                float avg_grade = (students[i].grades[0] + students[i].grades[1] + students[i].grades[2]) / 3;
                int rank = 1;
                for (int j = 0; j < num_students; j++) {
                    if (i != j) {
                        float other_avg_grade = (students[j].grades[0] + students[j].grades[1] + students[j].grades[2]) / 3;
                        if (other_avg_grade > avg_grade) {
                            rank++;
                        }
                    }
                }
                printf("%s\t%s\t%.1f %.1f %.1f\t%d\n", students[i].name, students[i].id, students[i].grades[0], students[i].grades[1], students[i].grades[2], rank);
            }
            break;
        case 2:
            printf("Report by Major:\n");
            printf("Major\tCount\tAverage Grade\n");
            for (int i = 0; i < num_students; i++) {
                char *major = students[i].major;
                int count = 1;
                float total_grade = students[i].grades[0] + students[i].grades[1] + students[i].grades[2];
                for (int j = i + 1; j < num_students; j++) {
                    if (strcmp(students[j].major, major) == 0) {
                        count++;
                        total_grade += students[j].grades[0] + students[j].grades[1] + students[j].grades[2];
                    }
                }
                float avg_grade = total_grade / (count * 3);
                printf("%s\t%d\t%.1f\n", major, count, avg_grade);
                i += count - 1;
            }
            break;
        case 3: {
            printf("Please enter the course name:\n");
            char course[MAX_COURSE_LEN];
            scanf("%s", course);
            printf("Report by Course (%s):\n", course);
            printf("Name\tID\tGrade\n");
            for (int i = 0; i < num_students; i++) {
                printf("%s\t%s\t%.1f\n", students[i].name, students[i].id, students[i].grades[choice - 1]);
            }
            break;
        }
        case 4: {
            printf("Please enter the class name:\n");
            char class_name[MAX_MAJOR_LEN];
            scanf("%s", class_name);
            printf("Report by Class (%s):\n", class_name);
            printf("Name\tID\tGrades\tRank\n");
            for (int i = 0; i < num_students; i++) {
                if (strcmp(students[i].major, class_name) == 0) {
                    float avg_grade = (students[i].grades[0] + students[i].grades[1] + students[i].grades[2]) / 3;
                    int rank = 1;
                    for (int j = 0; j < num_students; j++) {
                        if (i != j && strcmp(students[j].major, class_name) == 0) {
                            float other_avg_grade = (students[j].grades[0] + students[j].grades[1] + students[j].grades[2]) / 3;
                            if (other_avg_grade > avg_grade) {
                                rank++;
                            }
                        }
                    }
                    printf("%s\t%s\t%.1f %.1f %.1f\t%d\n", students[i].name, students[i].id, students[i].grades[0], students[i].grades[1], students[i].grades[2], rank);
                }
            }
            break;
        }
        default:
            printf("Invalid choice!\n");
            break;
    }
}

void output_grades() {
    printf("1. By ID\n");
    printf("2. By Name\n");
    printf("3. By Grade\n");
    printf("Please enter your choice (1-3):\n");
    int choice = 0;
    scanf("%d", &choice);
    switch (choice) {
        case 1:
            printf("Output by ID:\n");
            for (int i = 0; i < num_students; i++) {
                printf("%s\t%s\t%.1f %.1f %.1f\n", students[i].id, students[i].name, students[i].grades[0], students[i].grades[1], students[i].grades[2]);
            }
            break;
        case 2:
            printf("Output by Name:\n");
            for (int i = 0; i < num_students; i++) {
                printf("%s\t%s\t%.1f %.1f %.1f\n", students[i].name, students[i].id, students[i].grades[0], students[i].grades[1], students[i].grades[2]);
            }
            break;
        case 3:
            printf("Output by Grade:\n");
            printf("Name\tID\tSum\tAverage\n");
            for (int i = 0; i < num_students; i++) {
                float sum_grade = students[i].grades[0] + students[i].grades[1] + students[i].grades[2];
                float avg_grade = sum_grade / 3;
                printf("%s\t%s\t%.1f\t%.1f\n", students[i].name, students[i].id, sum_grade, avg_grade);
            }
            break;
        default:
            printf("Invalid choice!\n");
            break;
    }
}

void help() {
    printf("Welcome to Student Grade Management System!\n");
    printf("1. Input Student Information: Input the name, ID, major and grades of a new student.\n");
    printf("2. Update Student Information: Update the name, major or grades of a student, or delete a student.\n");
    printf("3. Query Grades: Query the grades of a student by ID or name.\n");
    printf("4. Report Grades: Generate a report of the grades of all students, by name, major, course or class.\n");
    printf("5. Output Grades: Output the grades of all students, sorted by ID, name or grade.\n");
    printf("6. Help: Show this message.\n");
    printf("7. Exit: Exit the system.\n");
}

void exit_system() {
    printf("Thank you for using Student Grade Management System, see you next time!\n");
}

总结

        以上就是今天要讲的内容,本文仔细介绍了学生管理系统模块化的开发,提供了比较完整且有序的撰写思路,先前模块的思路仅供参考,最终以源码为准。如果觉得博主的文章能够帮到你,还记得点点关注,以下是博主的其它文章,有兴趣的小伙伴可以看看噢。文章来源地址https://www.toymoban.com/news/detail-768981.html

到了这里,关于【学生成绩管理系统----C语言】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学生成绩管理系统(C语言实现)

    设计并实现一个简单的学生成绩管理系统 学生成绩表信息包括学号、姓名、各科课程成绩(语文、数学、英语、政治)和总分。用带头结点的单链表管理学生成绩表,每个学生的信息依次从键盘输入,并根据需要进行插入、删除、排序、输出等操作。 一、 实训环境 信息工程

    2024年02月11日
    浏览(39)
  • C语言课程设计-学生成绩管理系统

    需求分析: 1.设计题目:学生成绩管理系统 2.系统功能需求分析:实现对学生各科成绩总分及平均分的排序,和成绩的查找 概要设计 1. 功能模块图 详细设计 1. 流程图 测试结果 :列出所有功能的运行界面,并作文字说明。 1.录入成绩:录入3个人的学号和各科成绩 2.每门课程

    2024年02月11日
    浏览(51)
  • C语言编程学生成绩管理系统

    目录 一、介绍 二、功能 1.录入学生 2.删除学生信息 3.修改学生信息 4.查询学生信息 5.所有学生信息 6.成绩排序  7.退出程序 三、代码 1.主函数 2.头文件 3.函数封装库         利用C语言,运用链表、指针、封装函数等基本知识实现一个学生管理系统。通过在终端对学生信息进

    2024年02月10日
    浏览(54)
  • C语言学生成绩管理系统(综合项目)

    1. 这个代码主要实现以下功能: 2. 用到的主要参数有:     1.整型变量int n;用于储存学生人数和之后的循环判断。     2.字符串char name[][];用于储存姓名。     3.浮点型变量float score[];用于储存成绩。     4.长整型变量long ID[Max];用于储存学号。 3.用到的子函数有: int  Menu(

    2024年02月11日
    浏览(43)
  • C语言课程设计_学生成绩管理系统

    设计一个学生成绩排名系统。 1)  具备对成绩的管理功能(添加、删除、排序) 2)  具备对成绩的统计功能(最高分,最低分,平均分,及格率等) 3)  具备按学号、姓名、或课程名查询成绩的功能。 4)学生成绩应该保存在文件中。 备注:成绩记录以下信息:班级,学号,

    2024年02月11日
    浏览(48)
  • 学生成绩管理系统——C语言版(含源码)

    一、开发环境 操作系统:Ununtu 16 开发环境工具:vscode 开发语言:C语言 二、功能需求 制作学生管理系统 在系统中能够实现 录入学生信息、帮助菜单、列出学生信息、计算总成绩平均值、根据总成绩平均值完成排序、根据学号查询学生信息、清屏、退出等功能。 三、功能说

    2024年02月08日
    浏览(50)
  • 学生成绩管理系统(C语言)(数组结构体)

    学生成绩管理系统 利用结构体、排序查找算法以及模块化程序设计实现如下菜单驱动的学生成绩管理系统: 1) 首次批量输入每个学生的学号、姓名、和各科考试成绩。 2) 增添一个新学生的信息。 3) 增添一门新的学科的信息。 4) 按学生姓名或学号查询、修改、删除学生信

    2024年02月09日
    浏览(45)
  • C语言学生成绩信息管理系统(超详细版)

    主题:一个简易成绩管理系统 功能介绍: 1.以文本形式存储学生信息 2.对以存信息进行   1. 插入 2. 修改3. 删除  4.查询  5.成绩数字特征 目录 一:分析 二:查询  三:菜单 四:初始化函数 五:插入函数 六:修改函数 七:删除函数 八:数字特征 九:显示函数 要进行 插入

    2024年02月12日
    浏览(45)
  • 学生成绩管理系统(C语言有结构体实现)

    本文章介绍了一个通过C语言实现的一个简单的学生管理系统,该系统要是使用结构体数组来管理学生成绩数据的,通过该系统的练习能够对结构体的相关知识有更好的理解,提高逻辑思维能力。 系统运行,打开如下界面。列出系统帮助菜单(即命令菜单),提示输入命令 开

    2024年02月06日
    浏览(81)
  • ChatGPT实现用C语言写一个学生成绩管理系统

    随着ChatGPT爆火,大家都在使用ChatGPT来帮助自己提高效率,对于程序员来说使用它来写代码怎么样呢?今天尝试让ChatGPT,写了一个学生成绩管理系统。 问题是:使用C语言写一个学生成绩管理系统,要求使用链表,实现增删改查功能。 下面是ChatGPT写的代码,用时不到30秒,速

    2023年04月13日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包