不会编程下方程序,求帮助

img


img

img

img

参考:

#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;
}


#include <stdio.h>
#include <string.h>
typedef struct StuScore{
    int stuID;
    char stuName[10];
    int yuwen;
    int shuxue;
    int yingyu;
} STUSCORE;

typedef struct StuScoreNode{
    STUSCORE stu;
    struct StuScoreNode *NEXT;
    
}  SSN,*SSNLINK;

//创建学生信息的结构体
STUSCORE createStuScore()
{
    STUSCORE stu;
    printf("请输入学生的学号:\n");
    scanf("%d",&stu.stuID);
    if(stu.stuID==-1)
        return stu;
    printf("请输入学生的姓名:\n");
    scanf("%9s",stu.stuName);
    printf("请输入学生的语文成绩:\n");
    scanf("%d",&stu.yuwen);
    printf("请输入学生的数学成绩:\n");
    scanf("%d",&stu.shuxue);
    printf("请输入学生的英语成绩:\n");
    scanf("%d",&stu.yingyu);

    return stu;

}

//创建一个学生信息节点
SSNLINK addStuScoreNode()
{
    SSNLINK assn;
    assn=(SSNLINK)malloc(sizeof(SSN));
    assn->stu=createStuScore();
    assn->NEXT=NULL;
    return assn;
}

//将一个节点添加到列表中去,返回列表的头指针
SSNLINK addToList(SSNLINK list,SSNLINK stunode)
{
    stunode->NEXT=list;
    list=stunode;
    return list;
}

//显示信息
void showOneInfo2(STUSCORE ss)
{
        printf("%8d%8s%8d%8d%8d\n",ss.stuID,ss.stuName,ss.yuwen,ss.shuxue,ss.yingyu);
}

//显示所有学生信息
void showAllInfo(SSNLINK list)
{
    SSNLINK  p;
    p=list;
    printf("%8s%8s%8s%8s%8s\n","学号","姓名","语文","数学","英语");

    while(p!=NULL)
    {
        showOneInfo2((*p).stu);
        p=p->NEXT;
    }
    
}

//查询成绩函数
void chaxuncheng(SSNLINK head)
{
    int i;
    SSNLINK cha;
    cha=head;
    printf("请输入要查询成绩学生的学号\n");
    scanf("%d",&i);getchar();
    while(cha!=NULL)
    {
        if(i==cha->stu.stuID)
        {
            printf("%8s%8s%8s%8s%8s\n","学号","姓名","语文","数学","英语");
            showOneInfo2(cha->stu);
        }
        cha=cha->NEXT;
    }
}

//修改程序函数
void xiugai(SSNLINK head)
{
    int i;
    SSNLINK gai=head;
    printf("请输入要修改成绩学生的学号\n");
    scanf("%d",&i);
    while(gai!=NULL)
    {
        if(i==gai->stu.stuID)
        {
            gai->stu=createStuScore();
            break;
        }
        gai=gai->NEXT;
    }
    printf("修改成功");getchar();getchar();
}

//删除成绩函数
SSNLINK shanchu(SSNLINK head)
{
    int i;
    SSNLINK gai=head->NEXT,man=head;
    printf("请输入要删除成绩学生的学号\n");
    scanf("%d",&i);
    if(i==man->stu.stuID)
    {
        head=head->NEXT;
        return head;
    }
    else{
        while(gai!=NULL)
        {
            if(i==gai->stu.stuID)
            {
                man->NEXT=gai->NEXT;
                break;
            }
            else
                gai=gai->NEXT;
        }
    }
    printf("删除成功");getchar();getchar();
}

//排序
void paixiu(SSNLINK head)
{
    SSNLINK da,xiao;
    STUSCORE zanshi;
    int a,b;
    da=head;
    while(da!=NULL)
    {
        xiao=da;
        a=xiao->stu.shuxue+xiao->stu.yingyu+xiao->stu.yuwen;        
        while(xiao!=NULL)
        {
            b=xiao->stu.shuxue+xiao->stu.yingyu+xiao->stu.yuwen;
            if(b>a)
            {
                zanshi=xiao->stu;
                xiao->stu=da->stu;
                da->stu=zanshi;
                a=b;
            }
            xiao=xiao->NEXT;
        }
        da=da->NEXT;
    }
    printf("成功排序");getchar();getchar();
}

int main()
{
    SSNLINK list=NULL,node;//list是列表的头指针,node为单节点的指针
    int choice;//choice是要选择的服务数字
    while(1)//让程序一直循环
    {
        system("cls");
        printf("*********学生成绩管理系统********\n");
        printf("1.输入学生成绩信息\n");
        printf("2.显示所有学生的成绩信息\n");
        printf("3.查询成绩\n");
        printf("4.修改程序\n");
        printf("5.删除程序\n");
        printf("6.成绩排序\n");
        printf("*********************************\n");
        printf("请输入您的选择:\n");
        scanf("%d",&choice);

        switch(choice)
        {
        case 1://添加学生信息
            while(1)
            {
                node=addStuScoreNode();
                if(node->stu.stuID==-1)
                    break;
                list=addToList(list,node);
            }

            break;
        
        case 2:showAllInfo(list);getchar();getchar();break;

        case 3:chaxuncheng(list);getchar();break;

        case 4:xiugai(list);break;

        case 5:list=shanchu(list);break;

        case 6:paixiu(list);break;

        case -1:exit(0);

        }
    }
}