主要利用单链表实现学生成绩管理系统

img

https://blog.csdn.net/VarryTan/article/details/80574432

参考:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
typedef struct _Student
{
    char name[20];
    int age;
    int stuNum;
    int Cscore;
    int Mscore;
    int Escore;
    int Gscore;
    double AvgScore;
}Student;
//定义链表的结点
typedef struct _Node
{
    Student stu;//学生-数据域
    struct _Node* pNext;//指向下一个结点的指针
}Node;
//定义头结点
Node* g_pHead = NULL;
void modifyStudent(){

}
void printStudent(){
    
}
void saveStudent(){
    
}
void readStudent(){
    
}
int countStudent(){
    
}
Node* findStudent(){
    
}
void deleteStudent(){
    
}
//录入学生信息
void inputStudent()
{
    //创建一个结点-动态开辟
    Node* pNewNode = (Node*)malloc(sizeof(Node));
    pNewNode->pNext = NULL;
    //头插法
    if (g_pHead == NULL)//原来什么也没有
    {
        g_pHead = pNewNode;
    }
    else
    {
        pNewNode->pNext = g_pHead;
        g_pHead = pNewNode;
    }
    printf("请输入学生姓名:\n");
    scanf("%s", pNewNode->stu.name);//name是数组名,不用加&
    printf("请输入学生年龄:\n");
    scanf("%d", &pNewNode->stu.age);
    printf("请输入学生的学号:\n");
    scanf("%d", &pNewNode->stu.stuNum);
    printf("请输入学生的C成绩:\n");
    scanf("%d", &pNewNode->stu.Cscore);
    printf("请输入学生的数学成绩:\n");
    scanf("%d", &pNewNode->stu.Mscore);
    printf("请输入学生的英语成绩:\n");
    scanf("%d", &pNewNode->stu.Escore);
    pNewNode->stu.Gscore = pNewNode->stu.Cscore + pNewNode->stu.Mscore + pNewNode->stu.Escore;
    pNewNode->stu.AvgScore = pNewNode->stu.Gscore / 3.0;
    printf("录入完成!\n");
    system("pause");
    system("cls");//清屏
}
//主菜单
void mainMenu()
{
    printf("*\t学生成绩管理系统\t*\n");
    printf("——————————————------\n");
    printf("*\t1.输入学生信息\t\t*\n");
    printf("*\t2.显示学生信息\t\t*\n");
    printf("*\t3.保存学生信息\t\t*\n");
    printf("*\t4.读取学生信息\t\t*\n");
    printf("*\t5.统计记录\t\t*\n");
    printf("*\t6.查找学生信息\t\t*\n");
    printf("*\t7.更新学生信息\t\t*\n");
    printf("*\t8.删除学生信息\t\t*\n");
    printf("*\t9.学生成绩排序\t\t*\n");
    printf("*\t0.退出系统\t\t*\n");
    printf("——————————————------\n");
}

//键盘输入
void keyDown()
{
    char ch = _getch();
    switch (ch)
    {
    case '1'://录入
        inputStudent();
        break;
    case '2'://打印
        printStudent();
        break;
    case '3'://保存
        saveStudent();
        break;
    case '4'://读取
        readStudent();
        break;
    case '5'://统计
        printf("学生总人数为:%d\n", countStudent());
        system("pause");
        system("cls");
        break;
    case '6'://查找
    {
        Node* p = findStudent();
        if (p != NULL)
        {
            printf("学号:%d\t姓名:%s\t年龄:%d\tC成绩:%d\t数学成绩:%d\t英语成绩:%d\n", p->stu.stuNum, p->stu.name, p->stu.age, p->stu.Cscore, p->stu.Mscore, p->stu.Escore);
        }
        else
        {
            printf("没有找到该学生。\n");
        }
        system("pause");
        system("cls");
        break;
    }
    case '7'://修改
        modifyStudent();
        break;
    case '8'://删除
        deleteStudent();
        break;
    case '9'://排序
    case '0'://退出
        exit(0);
        break;
    default:
        printf("输入错误,请重新输入。\n");
        system("pause");
        system("cls");
        break;
    }
}
int main(void)
{
    while (1)
    {
        mainMenu();
        keyDown();
    }
    return 0;
}