库里斯托 2023-02-26 19:48 采纳率: 91.1%
浏览 37
已结题

关于学生成绩管理系统的问题

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
typedef struct date
{
    int year;
    int month;
    int day;
}DATE;
typedef struct stu
{
    long stuID;     //学号
    char stuname[10];    //名字
    char stusex;     //性别
    DATE birthday;   //生日
    int score[4];    //4科分数
    float aver;      //平均分
}STU;
typedef struct node
{
    STU stu;
    struct node* next;   //指向下一个节点的指针
}NODE;
NODE* head = NULL;  //定义头指针
struct node* creatnode();
void start();
void inputstudent(STU stu[], int n, int m);   //录入学生信息
void totalscore(STU stu[], int n);   //计算学生总分及排名并能根据姓名查询学生成绩及排名
void savestudent();    //保存学生信息
void scoreline_uptodown(STU stu[], int n);   //按每个学生的总分由高到底
#define N 30
int main()
{
    NODE* list = creatnode();    
    if (head == NULL)
    {
        head = list;
    }
    STU stu[N];
    int n;
    int m = 4;
    printf("输入学生人数:");
    scanf_s("%d", &n);
    while (1)
    {
        start();
        char ch = _getch();
        switch (ch)
        {
        case '1':  //录入学生信息
            inputstudent(stu,n,m);
            break;
        case '2':  //保存学生信息
            void savestudent();
            break;
        case '3':  //按总分由高到低排出名次
            break;
        case '4':  //按总分由低到高排出名次
            break;
        case '5':  //按学号由小到大排出成绩表
            break;
        case '6':  //按姓名字典顺序排序排出成绩表
            break;
        case '7':  //计算学生总分及排名并能根据姓名查询学生成绩及排名
            totalscore(stu,n);
            break;
        case '8':  //计算学生总分及排名并能根据学号查询学生成绩及排名
            break;
        case '9':  //退出系统
            break;
        }
    }
    return 0;
}
void start()
{
        printf("*****************************************\n");
        printf("欢迎使用学生成绩管理系统        *\n");
        printf("*1.录入学生信息                *\n");
        printf("*2.打印学生信息                *\n");
        printf("*3.保存学生信息                *\n");
        printf("*4.读取学生信息                *\n");
        printf("*5.按总分由高到低排出名次        *\n");
        printf("*6.按总分由低到高排出名次        *\n");
        printf("*7.按学号由小到大排出成绩表        *\n");
        printf("*8.按姓名字典顺序排序排出成绩表        *\n");
        printf("*9.根据学号查询学生成绩及排名        *\n");
        printf("*0.根据姓名查询学生成绩及排名        *\n");
        printf("*00退出系统                        *\n");
        printf("*****************************************\n");
}
void inputstudent(STU stu[], int n, int m)
{
    int i, j;
    NODE* newnode = (NODE*)malloc(sizeof(node)); //创建一个新结点来作头结点,使newnode这个指针可以通过->来当作结构体变量来用
    newnode->next = NULL;
    if (head == NULL)
    {
        head = newnode;
    }
    else
    {
        newnode->next = head;
        head = newnode; //newnode = head;  修改
    }
    for ( i = 0; i < n; i++)
    {
        printf("学号:");
        scanf_s("%ld", &newnode->stu.stuID);
        printf("姓名:");
        scanf_s("%s", newnode->stu.stuname, 10); //修改
        printf("性别:");
        scanf_s(" %c", &newnode->stu.stusex, 1);  //修改
        printf("年:");
        scanf_s("%d", &newnode->stu.birthday.year);
        printf("月:");
        scanf_s("%d", &newnode->stu.birthday.month);
        printf("日:");
        scanf_s("%d", &newnode->stu.birthday.day);
        printf("4科成绩:");
        for ( j = 0; j < 4; j++)
        {
            scanf_s("%d", &stu[i].score[j]);
        }
    }
}
void totalscore(STU stu[], int n)   //计算学生总分及排名并能根据姓名查询学生成绩及排名
{
    int i, j, arr[30] = { 1 };
    int sum[30];
    for (i = 0; i < 4; i++)
    {
        sum[i] = 0;
        for (j = 0; j < 4; j++)
        {
            sum[i] = sum[i] + stu[i].score[j];
        }
    }
    for (i = 0; i < n; i++)
    {
        int c;
        c = sum[i];
        sum[i] = sum[0];
        sum[0] = c;
        for (j = 0; j < n - 1; j++)
        {
            if (sum[i] < sum[j + 1])
                arr[i] = arr[i] + 1;
        }
    }
    while(1)
    {
        printf("输入所要查询的学生姓名:");
        char nameput[10];
        scanf_s("%s", nameput);
        for (j = 0; j < n; j++)
        {
            for (i = 0; i < 200; i++)
            {
                if (nameput[i] != stu[j].stuname[i])
                    break;
                else
                    printf("总分:%d 名次:%d", sum[j],arr[j]);
            }
        }
    }
} 
void savestudent()    //保存学生信息
{
    FILE* pf = fopen("ppp.txt", "w"); //创建并打开文件
    if (pf == NULL) //判断打开文件是否失败
    {
        printf("err!");
        return;
    }
    NODE* p = head;
    while (p!=NULL)
    {
        fwrite(&p->stu, 1, sizeof(STU), pf);
        p = p->next;
    }
    fclose(pf);
    printf("数据保存成功\n");
    system("pluse"); //暂停
    system("cls");  //清屏
}
void scoreline_uptodown(STU stu, int n)
{
    int i;
    for (i = 0; i < n; i++)
    {
        
    }
}

代码错误,请问如何修改?

  • 写回答

4条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-02-26 22:16
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月7日
  • 已采纳回答 2月27日
  • 创建了问题 2月26日

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c