精华内容
下载资源
问答
  • 【前言:如题,本文中涉及的项目是去年应学妹要求帮忙写的,纯C语言,在Turbo C下编译通过。最近整理资料,觉得该项目中涉及到的结构体、链表、文件操作、断言等基础知识,以及这个小项目的函数... 学期考试结束,统计

    【前言:如题,本文中涉及的项目是去年应学妹要求帮忙写的,纯C语言,在Turbo C下编译通过。最近整理资料,觉得该项目中涉及到的结构体、链表、文件操作、断言等基础知识,以及这个小项目的函数设计和变量命名等容易忽略的知识对初学C语言的朋友应该会有帮助,所以决定发布出来。同时,给需要完成类似课程设计的学生一个参考,但是应注意理解其中的知识点,而不应复制粘贴草草了事。】

    问题描述:
      学期考试结束,统计某班每个学生的平均成绩,每门课的平均成绩,并按个人平均成绩从高到低的顺序输出成绩,输出不及格人名单。输入、输出格式自定。

    实现提示:
      考试课程有:高等数学、物理、外语、C语言4门课程。录入所有同学的成绩,对数据进行处理,输出所要求的内容,程序的功能主要包括以下几个方面:
    ① 输入成绩
    ② 修改记录
    ③ 删除记录
    ④ 输出成绩并按平均成绩排序,并标记平均分不及格的学生。
    ⑤ 界面提供上述功能选择。
    ⑥ 学生人数由软件根据输入的成绩记录数自动控制。
    ⑦ 提供输出成绩到文件以及从文件读取成绩功能。

    测试数据:(自定模拟数据如下)

    这里写图片描述

    整体设计
      通过问题描述和对软件功能需求的分析,我们对程序的设计作出整体构思,其关键点在于数据结构的设计以及对数据的保存。本文提出一种用线性表和文件IO实现上述需求的解决方法,具体设计如下所述。
    数据结构
      本文将线性表设计双向循环链表,其中结点数据域为结构体stInfo。

    /// 用户信息
    typedef struct student
    {
        int  id;        // 学号
        char name[NAMELEN]; // 姓名
        int  AMaths;    // 高数成绩
        int  Physics;   // 物理成绩
        int  Foreign;   // 外语成绩
        int  Clan;  // C语言成绩
        float GPA;  // 平均分
    }stInfo;
    /// 用户信息结点结构体
    typedef struct studentNode
    {
        stInfo data;        //<! 数据域
        struct studentNode *prev;   //<! 指针域
        struct studentNode *next;
    }stNode;

    算法
      程序多处需要多链表进行查询和排序,为方便起见,本文使用遍历算法进行查询,使用冒泡法进行排序。详见附录。

    文件操作
      包括文件内容的读取和写入。为方便用户直接在文件中添加学生信息、查看程序对数据处理后的结果以及便于演示,我们并没有以二进制方式操作数据,而是将数据以文本方式写入文件,因此增加了对字符串操作的代码。详见附录。

    程序流程图

    这里写图片描述

    部分操作及细节说明

    1、该系统提供五个选项,根据提示操作即可。

    这里写图片描述

    2、文件操作涉及的两个文件,宏定义如下

    // 保存学生各科成绩
    #define STUDENTS_FILE "./students.txt"
    // 保存成绩处理完成后的结果
    #define SCORE_FILE "./GPA.txt"

      正常情况下,数据从文件STUDENTS_FILE和手动输入两种渠道进入链表,经过处理后再由链表流向文件STUDENTS_FILE和文件SCORE_FILE。

    3、主程序负责接收用户输入的数据,并传到相应接口函数,由于标准输入(即键盘)是带缓冲的,因此需要添加下面这行代码,用以清空缓冲区。

    while(getchar() != '\n') {;}

    4、输入ID号和成绩时需注意:系统将ID号范围限定为1000到1999,且不能重复,成绩范围限定为0到100。

    接口函数说明
    相关宏定义

    #define OK      1
    #define ERROR   0
    #define EXIT    2
    #define EXIST   1
    #define NOTEXIST 0

    系统操作相关函数

    /*
     * 检查用户输入的ID是否存在于链表;
     * 存在返回EXIST,不存在返回NOTEXIST。 
    */
    int CheckID(stNode *stHead, int id);
    
    /*
     * 检查用户输入的成绩是否合理;
     * 无返回值。
    */
    void InputScore(int *score);
    
    /*
     * 初始化系统,创建链表并从STUDENTS_FILE中读取数据插入链表;
     * 初始化成功返回OK,否则返回ERROR。
    */
    int InitSystem(void);
    
    /*
     * 等待用户输入结点数据并插入链表;
     * 无返回值。
    */
    void InputRecord(void);
    
    /*
     * 等待用户修改结点数据;
     * 无返回值。
    */
    void AlterRecord(void);
    
    /*
     * 等待用户删除特定结点;
     * 无返回值。
    */
    void DeleteRecord(void);
    
    /*
     * 按系统需求对链表进行处理,并将结果输出;
     * 无返回值。
    */
    void OutputRecord(void);
    
    /*
     * 退出系统,保存链表数据,释放内存;
     * 无返回值。
    */
    void Exit(void);

    链表操作相关函数

    /*
     * 初始化一个双循环链表,*stHead为链表头指针;
     * 初始化成功返回OK,否则返回ERROR。
    */
    int InitList(stNode **stHead);
    
    /*
     * 显示链表stHead所包含的内容;
     * 无返回值。
    */
    void ShowList(stNode *stHead);
    
    /*
     * 将链表stHead复制为cpHead;
     * 复制成功返回链表头指针,否则返回NULL。
    */
    stNode *CopyList(stNode *cpHead, stNode *stHead);
    
    /*
     * 将链表stHead的数据保存到文件fp中;
     * 无返回值。
    */
    void SaveList(FILE *fp, stNode *stHead);
    
    /*
     * 释放链表stHead所占用的内存;
     * 无返回值。
    */
    void FreeList(stNode *stHead);
    
    /*
     * 将以st作为数据域的结点插入到链表stHead的末尾;
     * 插入成功返回OK,否则返回ERROR。
    */
    int InsertNode(stNode *stHead, stInfo st);
    
    /*
     * 删除链表stHead上相关ID号的结点;
     * 删除成功返回OK,否则返回ERROR。
    */
    int DeleteNode(stNode *stHead, int id);
    
    /*
     * 将链表stHead相关ID号的column字段的成绩修改为score;
     * 修改成功返回OK,否则返回ERROR。
    */
    int AlterNode(stNode *stHead, int id, int column, int score);
    
    /*
     * 将链表stHead的结点按平均分降序来排序;
     * 无返回值。
    */
    void DescSort(stNode *stHead);
    
    /*
     * 显示链表stHead中平均分不及格的名单;
     * 无返回值。
    */
    void ShowFail(stNode *stHead);

    附录

    /************************************************
     File name : resultsMS.c
     Created  date : 2014-10-25 18:38
     Modified date : 2014-10-27 20:07
     Author : luhuadong
     Email  : luhuadong@163.com
     Description : 
    ************************************************/
    
    #include <assert.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    /// 保存学生各科成绩
    #define STUDENTS_FILE "./students.txt"
    /// 保存成绩处理完成后的结果
    #define SCORE_FILE "./GPA.txt"
    
    #define OK  1
    #define ERROR   0
    #define EXIT    2
    #define EXIST   1
    #define NOTEXIST 0
    
    /// 用户基本信息数据长度
    #define STINFOLEN 80
    /// 结构体student中成员name的长度
    #define NAMELEN 32
    
    /// 用户信息
    typedef struct student
    {
        int  id;
        char name[NAMELEN];
        int  AMaths;
        int  Physics;
        int  Foreign;
        int  Clan;
        float GPA;
    }stInfo;
    
    /// 用户信息结点结构体
    typedef struct studentNode
    {
        stInfo data;        //<! 数据域
        struct studentNode *prev;   //<! 指针域
        struct studentNode *next;
    }stNode;
    
    stNode *stHead = NULL;
    int status = OK;
    
    /* 函数声明 */
    int CheckID(stNode *stHead, int id);
    void InputScore(int *score);
    int InitSystem(void);
    void InputRecord(void);
    void AlterRecord(void);
    void DeleteRecord(void);
    void OutputRecord(void);
    void Exit(void);
    
    int InitList(stNode **stHead);
    void ShowList(stNode *stHead);
    stNode *CopyList(stNode *cpHead, stNode *stHead);
    void SaveList(FILE *fp, stNode *stHead);
    void FreeList(stNode *stHead);
    int InsertNode(stNode *stHead, stInfo st);
    int DeleteNode(stNode *stHead, int id);
    int AlterNode(stNode *stHead, int id, int column, int score);
    void DescSort(stNode *stHead);
    void ShowFail(stNode *stHead);
    
    /* ******************************************************** */
    int main(void)
    {
        int mode;   // 模式选择
        // 系统初始化
        if(ERROR == InitSystem())
        {
            perror("Initialized system fail");
            return -1;
        }
        while(OK == status)
        {
            // system("clear");
            printf("++++++++++++++++++++++++++++++\n");
            printf(" 1-输入成绩\n 2-修改记录\n 3-删除记录\n 4-输出成绩\n 5-退出\n");
            printf("++++++++++++++++++++++++++++++\n>>");
            while(scanf("%d", &mode) == 0)
            {
                while(getchar() != '\n') {;}
                printf("error, try again >>\n");
            }
            while(getchar() != '\n') {;}
    
            switch(mode)
            {
                case 1: InputRecord(); break;
                case 2: AlterRecord();break;
                case 3: DeleteRecord();break;
                case 4: OutputRecord();break;
                case 5: Exit(); break;
                default: break;
            }
        }
        return 0;
    }
    /* ******************************************************** */
    
    
    int CheckID(stNode *stHead, int id)
    {
        stNode *currNode = stHead->next;
        while(currNode != stHead)
        {
            if(id == currNode->data.id) {return EXIST;}
            currNode = currNode->next;
        }
        return NOTEXIST;
    }
    
    int InitSystem(void)
    {
        FILE *fp = NULL;
        stInfo st;
        int i=0, j=0, k=0;
        char readbuf[STINFOLEN];        //<! 存放readFromFile()读取的字符串
        char strStInfo[6][NAMELEN]; //<! 保存每次读取的一条记录
    
        if(ERROR == InitList(&stHead))
        {
            printf("Created initial LIST failed.\n");
            status = ERROR;
            return ERROR;
        }
        fp = fopen(STUDENTS_FILE, "r");
        if(NULL == fp)
        {
            printf("Open %s failed.\n", STUDENTS_FILE);
            status = ERROR;
            return ERROR;
        }
        while(NULL != fgets(readbuf, STINFOLEN, fp))
        {
            /// 每一条记录共有6个字段
            for(i=0; i<6; i++)
            {
                while((' ' != readbuf[j]) \
                        && ('\n' != readbuf[j]) \
                        && ('\t' != readbuf[j]))
                {
                    strStInfo[i][k++] = readbuf[j++];
                }
                strStInfo[i][k] = '\0';
                j++;    //<! 跳过空格符
                k = 0;
            }
            j = 0;
            st.id       = atoi(strStInfo[0]);
            strcpy(st.name, strStInfo[1]);
            st.AMaths   = atoi(strStInfo[2]);
            st.Physics  = atoi(strStInfo[3]);
            st.Foreign  = atoi(strStInfo[4]);
            st.Clan     = atoi(strStInfo[5]);
            st.GPA      = 0;
    
            if(ERROR == InsertNode(stHead, st)) { return ERROR;}
        }
        printf("初始化链表==>\n");
        ShowList(stHead);
        fclose(fp);
        return OK;
    }
    
    void InputScore(int *score)
    {
        scanf("%d", score);
        while(getchar() != '\n') {;}
        while(*score < 0 || *score > 100)
        {
            printf("【成绩范围:0--100】\n>>");
            scanf("%d", score);
            while(getchar() != '\n') {;}
        }
        return ;
    }
    
    void InputRecord(void)
    {
        stInfo st;
        printf("Input ID: ");
        scanf("%d", &st.id);
        if(st.id > 1999 || st.id < 1000)
        {
            printf("ID范围为1000~1999.\n");
        }
        if(EXIST == CheckID(stHead, st.id))
        {
            printf("ID重复!\n");
            return ;
        }
        while(getchar() != '\n') {;}
        printf("姓名:");
        gets(st.name);
        printf("高数成绩:");
        InputScore(&st.AMaths);
        printf("物理成绩:");
        InputScore(&st.Physics);
        printf("外语成绩:");
        InputScore(&st.Foreign);
        printf("C语言成绩:");
        InputScore(&st.Clan);
    
        if(OK == InsertNode(stHead, st)) {printf("OK\n");}
        else {printf("Failed\n");}
    
        return ;
    }
    
    void AlterRecord(void)
    {
        int id, column, score;
        printf("Input ID: ");
        scanf("%d", &id);
    
        if(NOTEXIST == CheckID(stHead, id))
        {
            printf("ID不存在!\n");
            return ;
        }
        printf("1-高数\t2-物理\t3-外语\t4-C语言\n修改科目>>");
        scanf("%d", &column);
        printf("修改成绩为:");
        scanf("%d", &score);
    
        if(OK == AlterNode(stHead, id, column, score)) {printf("OK\n");}
        else {printf("Failed\n");}
    
        return ;
    }
    
    void DeleteRecord(void)
    {
        int id;
        printf("Input id: ");
        scanf("%d", &id);
    
        if(NOTEXIST == CheckID(stHead, id))
        {
            printf("ID不存在!\n");
            return ;
        }
        if(OK == DeleteNode(stHead, id)) {printf("OK\n");}
        else {printf("Failed\n");}
    
        return ;
    }
    
    void OutputRecord(void)
    {
        FILE *fp = NULL;
        stNode *cpHead = NULL;
    
        if(ERROR == InitList(&cpHead))
        {
            printf("Created output LIST failed.\n");
            status = ERROR;
            return ;
        }
        CopyList(cpHead, stHead);
    
        if(NULL == cpHead)
        {
            printf("Copy failed.\n");
            return ;
        }
        DescSort(cpHead);
        printf("按平均分排序==>\n");
        ShowList(cpHead);
        fp = fopen(SCORE_FILE, "w");
        if(NULL == fp)
        {
            printf("Open %s failed.\n", SCORE_FILE);
            return ;
        }
        printf("不及格学生==>\n");
        ShowFail(cpHead);
        SaveList(fp, cpHead);
        FreeList(cpHead);
        fclose(fp);
    
        return ;
    }
    
    void Exit(void)
    {
        FILE *fp = fopen(STUDENTS_FILE, "w");
        if(NULL == fp)
        {
            printf("Open %s failed.\n", STUDENTS_FILE);
            return ;
        }
        SaveList(fp, stHead);
        printf("Save to file ...\n");
        FreeList(stHead);
        fclose(fp);
        printf("successful exit.\n");
    
        status = EXIT;
        return ;
    }
    
    //****************************************************
    
    int InitList(stNode **stHead)
    {
        *stHead = (stNode *)malloc(sizeof(stNode));
    
        if(NULL != *stHead)
        {
            (*stHead)->prev = *stHead;
            (*stHead)->next = *stHead;
            return OK;
        }
        return ERROR;
    }
    
    void ShowList(stNode *stHead)
    {
        stNode *currNode = NULL;
        assert(NULL != stHead);
        printf("================================================================\n");
        printf("学号\t姓名\t\t高数\t物理\t外语\tC语言\t平均分\n");
    
        currNode = stHead->next;
        while(currNode != stHead)
        {
            printf("%d\t%-8s\t%d\t%d\t%d\t%d\t%.2f\n", currNode->data.id, \
                    currNode->data.name, currNode->data.AMaths, \
                    currNode->data.Physics, currNode->data.Foreign, \
                    currNode->data.Clan, currNode->data.GPA);
            currNode = currNode->next;
        }
        printf("================================================================\n");
    }
    
    stNode *CopyList(stNode *cpHead, stNode *stHead)
    {
        stInfo st;
        stNode *currNode = NULL;
        assert(NULL != cpHead && NULL != stHead);
    
        currNode = stHead->next;
        while(currNode != stHead)
        {
            st = currNode->data;
            st.GPA = (float)(st.AMaths + st.Physics + st.Foreign + st.Clan)/4;
            if(ERROR == InsertNode(cpHead, st)) {return NULL;}
            currNode = currNode->next;
        }
        return cpHead;
    }
    
    void SaveList(FILE *fp, stNode *stHead)
    {
        stNode *currNode = NULL;
        assert(NULL != fp && NULL != stHead);
    
        currNode = stHead->next;
        while(currNode != stHead)
        {
            fprintf(fp, "%d %s\t%d %d %d %d %.2f\n", currNode->data.id, \
                    currNode->data.name, currNode->data.AMaths, \
                    currNode->data.Physics, currNode->data.Foreign, \
                    currNode->data.Clan, currNode->data.GPA);
            currNode = currNode->next;
        }
    }
    
    void FreeList(stNode *stHead)
    {
        /// 释放链表
        stNode *currNode = stHead->next;
    
        while(currNode != stHead)
        {
            stHead->next = currNode->next;
            free(currNode);
            currNode = stHead->next;;
        }
        //free(currNode);   //<! 当用户信息表为空时会导致出错
        free(stHead);
    }
    
    int InsertNode(stNode *stHead, stInfo st)
    {
        stNode *new = NULL;
        assert(NULL != stHead);
    
        new = (stNode *)malloc(sizeof(stNode));
        if(NULL != new)
        {
            new->data = st;
    
            new->next = stHead;
            new->prev = stHead->prev;
            stHead->prev->next = new;
            stHead->prev = new;
            return OK;
        }
        return ERROR;
    }
    
    int DeleteNode(stNode *stHead, int id)
    {
        stNode *currNode = stHead->next;
        stNode *delNode = NULL;
        while(currNode != stHead)
        {
            if(id == currNode->data.id)
            {
                delNode = currNode;
                currNode->prev->next = currNode->next;
                currNode->next->prev = currNode->prev;
                currNode = currNode->prev;
                free(delNode);
                return OK;
            }
            currNode = currNode->next;
        }
        return ERROR;
    }
    
    int AlterNode(stNode *stHead, int id, int column, int score)
    {
        stNode *currNode = stHead->next;
        stNode *delNode = NULL;
        while(currNode != stHead)
        {
            if(id == currNode->data.id)
            {
                printf("修改前==>\n高数:%d\t物理:%d\t外语:%d\tC语言:%d\n", \
                        currNode->data.AMaths, currNode->data.Physics, \
                        currNode->data.Foreign, currNode->data.Clan);
    
                if(1 == column) {currNode->data.AMaths = score;}
                else if(2 == column) {currNode->data.Physics = score;}
                else if(3 == column) {currNode->data.Foreign = score;}
                else if(4 == column) {currNode->data.Clan = score;}
                else {return ERROR;}
    
                printf("修改后==>\n高数:%d\t物理:%d\t外语:%d\tC语言:%d\n", \
                        currNode->data.AMaths, currNode->data.Physics, \
                        currNode->data.Foreign, currNode->data.Clan);
                return OK;
            }
            currNode = currNode->next;
        }
        return ERROR;
    }
    
    void DescSort(stNode *stHead)
    {
        stInfo tmp;
        stNode *curr1 = stHead->next;
        stNode *curr2 = stHead->next;
        stNode *lastNode = stHead->prev;
    
        for(curr1 = stHead->next; curr1 != stHead->prev; curr1 = curr1->next, lastNode = lastNode->prev)
        {
            for(curr2 = stHead->next; curr2 != lastNode; curr2 = curr2->next)
            {
                if(curr2->data.GPA < curr2->next->data.GPA)
                {
                    tmp = curr2->data;
                    curr2->data = curr2->next->data;
                    curr2->next->data = tmp;
                }
            }
        }
    }
    
    void ShowFail(stNode *stHead)
    {
        stNode *currNode = NULL;
        assert(NULL != stHead);
        printf("********************************\n");
        printf("* 学号\t姓名\t\t平均分\n");
    
        currNode = stHead->prev;
        while(currNode->data.GPA < 60)
        {
            printf("* %d\t%-8s\t%.2f\n", currNode->data.id, \
                    currNode->data.name, currNode->data.GPA);
            currNode = currNode->prev;
        }
        printf("********************************\n");
    
    }
    
    展开全文
  • 实验四:顺序图或通信图1. 链接:实验一:https://blog.csdn.net/miny_Chen/article/details/80084189实验二:https://blog.csdn.net/miny_Chen/article/details/80287214 2. 类图:3. 内容说明:1) 登陆Ø 类...

    实验四:顺序图或通信图

    1. 链接:

    实验一:https://blog.csdn.net/miny_Chen/article/details/80084189

    实验二:https://blog.csdn.net/miny_Chen/article/details/80287214

     

    2. 类图:


    3. 内容说明:

    1) 登陆

    Ø 类整体说明:注册登陆学生、教师或教务员登陆的信息(账号和密码)。

    Ø 属性说明:账号、密码、验证码

    Ø 操作说明:

    (一)重置密码:参与者输入账号和密码,还有验证码,成功登陆后允许用户重置密码,修改成功后将在相应的数据库中保存其密码。

    (二)获取密码

    Ø 关联描述:所有教师、学生和教务员进行所有的教学管理系统中的操作时,首先要进行登陆。

     

    2) 教师

    Ø 类整体说明:教师成绩管理员在这所大学教书的人。

    Ø 属性说明:账号、姓名、密码、性别、联系方式、学院

    Ø 操作说明

    (一)录入和维护成绩(增删查改)

    (二)统计成绩

    (三)向学籍管理部门发成绩单

    (四)向教学评估部门发成绩单

    Ø 关联描述:

    (一)一位教师拥有一份任课课表,一份教师任课表专属于一位教师。

    (二)一位教师维护0至多名学生的成绩,学生成绩信息至少被一位教师填写。

    (三)一位教师统计查询一个或多个任课课程的成绩,每门课程的成绩都至多被一位教师管理。

    (四)教师和学籍管理部门存在“发送学生成绩”的关系。

    (五)教师和教学评估管理部门存在“查看教学评估反馈”的关系。

     

    3) 学生

    Ø 类整体说明:在大学里上课的人。

    Ø 属性说明:学号、姓名、密码、性别、联系方式、学院、系别、班级

    Ø 操作说明

    (一)选课选课表中允许学生能够在选课表中选课,然后确定的选课信息将被存在选课清单中。

    (二)查看个人详细信息查看学生个人的全部详细信息

    (三)查看学期课表

    (四)查看专业推荐课表每个专业每学期都有对应的课表,学生查看的就是对于自己对应专业的课表。

    (五)查询选课清单查看当前选课情况。

    (六)查询成绩

    Ø 关联描述:

    (一)一个学生可以查看一个或多个成绩,因为一个学生有多门课程的成绩;一份课程成绩只能属于一名学生。

    (二)一个学生有特定的专业,只拥有一个专业推荐课表;一个专业推荐课表对应该专业的学生。

    (三)一个学生至少可以选择一门课程,一门课程至少可以被一个学生选择。

    (四)一个学生可以查看本学期已选课程的课程,一个课程表可以被一个对应的学生查看。

    (五)学生与招生管理部门存在“选为学校学生”的关系。

     

    4) 教务员

    Ø 类整体说明:教务员课程管理员管理教学系统的人。

    Ø 属性说明:学号、姓名、密码、性别、联系方式、学院、系别、班级

    Ø 操作说明:

    (一)公布课程公布该学期安排可以上的课程,无论是必修还是选修,但分类公布

    (二)维护选课表

    (三)公布专业推荐课表当课程管理员成功录入该学期的必修课程安排和各个专业学生的培养计划,以及教室管理员等安排好各个课程的上课时间、上课地点和任课老师(老师选择教授的课程)后,各个专业的学生的个人专业推荐课表就会生成,其中包括该学期学生的必修课程和专业选修课程,最后将数据更新到系统。

    (四)维护学生个人课表当课程管理员成功录入该学期的必修课程安排,以及教室管理员等安排好各个课程的上课时间、上课地点和任课老师(老师选择教授的课程)后,各个专业的学生的个人必修课课表就会生成,最后将数据更新到系统。

    (五)计算选课数把每名参与选课的学生的选课清单选课数设定在四门或四门以下,同时在选课期间在学生变更所选课程时更新选课清单,同时在选修课人数过少时同时需要处理学生选修课情况。

    (六)维护老师任课课表当教师所担任选修课的选修人数小于15名时,在其任课课表中去除该课。

    (七)教室分配管理部门发送课程安排信息

    Ø 关联描述:

    (一)一位教务员维护一至多个老师任课表,一位老师的任课表被一位教务员管理。

    (二)一位教务员公布一至多个学生的专业推荐课表,一个学生的专业推荐课表至多可以被一位教务员发布。

    (三)一位教务员维护一至多个学生的个人课表,一个学生的个人课表至多可以被一位教务员管理。

    (四)一位教务员维护一至多个学生的选课清单,一个学生的选课清单至多可以被一位教务员维护。

    (五)一位教务员管理零至多门课程,一门课程至多可以被一位教务员维护。

    (六)教务员和教室分配管理部门存在发送课程安排信息”的关系。

     

    5) 课程

    Ø 类整体说明:每学期由大学安排的课程。

    Ø 属性说明:课程编号、课程名、课程类别、学分、学时、限选人数、已选人数、上课地点、上课时间、任课老师、课程内容介绍

    Ø 操作说明:

    (一)学生查询个人课表

    (二)学生查询专业推荐课表

    (三)老师查询个人任课课表

    Ø 关联描述:一门课程可以被一名教务员管理,一位教务员可以管理零至多名课程。

    Ø 继承描述:课程和选课单之间存在继承关系,选课单等继承了课程的所有特征。

     

    6) 选课表

    Ø 类整体说明:记录了所有选修课程。

    Ø 属性说明:课程编号、课程名、上课地点、上课时间、任课老师、课程内容介绍、所属院系、限选人数、已选人数

    Ø 操作说明:

    (一)加入选课的学生

    (二)指定授课的老师

    (三)选课剩余名额确定人数是否已满

    Ø 关联描述:一个选课清单至多可以有零至4门课程,一门课程可能被选也可能不被选

    Ø 继承描述:课程和选课单之间存在继承关系,选课单等继承了课程的所有特征。

     

    7) 选课记录

    Ø 类整体说明:选课记录选课清单记录学生当前选修的课程。

    Ø 属性说明:学号、课程编号、课程名、授课老师

    Ø 操作说明:

    (一)查询

    Ø 关联描述:

    (一)一个选课清单可以拥有一门或多门课程,一门课程可以被零或多个选课清单所有。

    (二)一个选课清单至多可以被一名对应的学生查看,一名学生可以查看一个选课清单。

    (三)一个选课清单至多可以有零至4门课程,一门课程可能被选也可能不被选。

     

    8) 成绩

    Ø 类整体说明:对某一课程学生成绩的评价(学生每学期的成绩,其中包括平时成绩、期中和期末成绩等)。

    Ø 属性说明:学号、成绩

    Ø 操作说明:

    (一)查询成绩

    Ø 关联描述:

    (一)一个学生可以查看零至多个成绩,一个成绩可被一名学生查看。

    (二)一个成绩至多可以被一位老师维护,一位老师至少可以维护一个成绩。

     

    9) 成绩单

    Ø 类整体说明:所有学生在某一学期所修课程的各个成绩。(成绩汇总统计表:学生各学期的各科成绩。(属性包括班级、学号、姓名、科目))

    Ø 属性说明:年级、班级、课程编号课程名

    Ø 操作说明:

    (一)增加成绩

    (二)修改成绩

    (三)删除成绩

    (四)查询成绩

    Ø 关联描述:一份成绩单至多可以被一个老师统计查看,一位老师可以统计查询一或多份成绩单。

     

    10) 学生课表

    Ø 类整体说明:学生各学期的当前课表。

    Ø 属性说明:学号、姓名、课程编号、课程名

    Ø 操作说明:

    (一)查询学期课表

    Ø 关联描述:

    (一)一个课表至多只能被一名学生拥有,一名学生至多可以拥有一个课表。

    (二)一个课表至多只能被一名教务员维护,一名教务员至少要维护一个课表。

     

    11) 专业推荐课表

    Ø 类整体说明:各专业的专业选修课和必修课教务员安排完时间后形成的课表。

    Ø 属性说明:专业、课程编号、课程名

    Ø 操作说明:

    (一)查询专业推荐课表

    Ø 关联描述:

    (一)一个专业推荐课表至多只能被一名学生拥有,一名学生至多可以拥有一个专业推荐课表。

    (二)一个专业推荐课表至多只能被一名教务员维护,一名教务员至少要维护一个专业推荐课表。

     

     

    12) 老师任课表

    Ø 类整体说明:老师各学期的上课课表。

    Ø 属性说明:账号、课程编号

    Ø 操作说明:

    (一)查询老师任课课表

    Ø 关联描述:一个老师可以查看一份对应的任课表,一份任课表至多被一名老师查看。

     

    展开全文
  • 面向对象分析与设计: 顺序图

    千次阅读 2018-06-10 19:11:45
    实验四: 顺序图一、实验链接:实验一:https://blog.csdn.net/miny_chen/article/details/80084189实验二:https://blog.csdn.net/miny_chen/article/details/80287214实验三:...

    实验四: 顺序图

    一、实验链接:

    实验一:https://blog.csdn.net/miny_chen/article/details/80084189

    实验二:https://blog.csdn.net/miny_chen/article/details/80287214

    实验三:https://blog.csdn.net/miny_Chen/article/details/80408875

     

    二、顺序图:

    1. 用户登录:


    1) 顺序图综述

    该顺序图描述了用户登录教学管理系统,包含对象有:用户类的对象、登录界面类的对象、用户注册表类的对象。

    2) 顺序图中的对象描述

    Ø 用户类的对象:主动对象

    Ø 教学管理系统登录界面类的对象:被动对象

    Ø 用户注册表类的对象:被动对象

    3) 对象接收/发送的描述

    发送消息的对象名称

    接收消息的对象名称

    消息的名称

    消息格式

    消息类型

    用户类的对象

    登录界面类的对象

    登录系统

    登录系统(账号,密码,验证码)

    同步消息

    登录界面类的对象

    用户注册表类的对象

    发送身份信息

    发送身份信息(账号,密码,验证码)

    同步消息

     

    用户注册表类的对象

    用户注册表类的对象

    验证身份

    验证身份(账号,密码,验证码)

    自关联消息

    用户注册表类的对象

    登录界面类的对象

    返回验证结果

    返回验证结果

    返回信息

    登录界面类的对象

    用户类的对象

    通过验证

    通过验证

    返回消息

     

    2. 学生选课:

     

    1) 顺序图综述

    该顺序图描述了学生登录教学管理系统进行选课,然后退出系统,包含对象有:学生类的对象、登录界面类的对象、用户注册表类的对象、学生用户界面类的对象、选课界面类的对象、课程类的对象、选课情况的对象。

    2) 顺序图中的对象描述

    Ø 用户类的对象:主动对象

    Ø 登录界面类的对象:被动对象

    Ø 用户注册表类:被动对象

    Ø 学生用户界面类的对象:被动对象

    Ø 选课界面类的对象:被动对象

    Ø 课程类的对象:被动对象

    Ø 选课情况的对象:被动对象

    3) 对象接收/发送的描述

    发送消息的对象名称

    接收消息的对象名称

    消息的名称

    消息格式

    消息类型

    学生类的对象

    登录界面类的对象

    登录系统

    登录系统(账号,密码,验证码)

    同步消息

    登录界面类的对象

    用户注册表类的对象

    发送身份信息

    发送身份信息(账号,密码,验证码)

    同步消息

     

    用户注册表类的对象

    用户注册表类的对象

    验证身份

    验证身份(账号,密码,验证码)

    自关联消息

    用户注册表类的对象

    登录界面类的对象

    返回验证结果

    返回验证结果

    返回信息

    登录界面类的对象

    学生类的对象

    通过验证

    成功验证

    返回消息

    学生类的对象

    学生用户界面类的对象

    进入学生用户界面

    进入学生用户界面()

    同步消息

    学生用户界面类的对象

    选课界面类的对象

    选课

    选课()

    异步消息

    选课界面类的对象

    学生用户界面类的对象

    退出选课界面

    退出选课界面()

    异步消息

    选课界面类的对象

    课程类的对象

    增加课程

    增加选择(课程号)

    同步消息

    选课界面类的对象

    课程类的对象

    删除课程

    删除选择(课程号)

    同步消息

    学生用户界面类的对象

    学生类的对象

    退出系统

    退出系统()

    返回消息

     

    3. 学生查询成绩:

     

    1) 顺序图综述

    该顺序图描述了学生登录教学管理系统查看成绩,包含对象有:学生类的对象、登录界面类的对象、用户注册表类的对象、成绩查询界面类的对象、成绩报表类的对象。

    2) 顺序图中的对象描述

    Ø 学生类的对象:主动对象

    Ø 登录界面类的对象:被动对象

    Ø 用户注册表类的对象:被动对象

    Ø 成绩查询界面类的对象:被动对象

    Ø 成绩报表表类的对象:被动对象

    3) 对象接收/发送的描述

    发送消息的对象名称

    接收消息的对象名称

    消息的名称

    消息格式

    消息类型

    学生人员类的对象

    登录界面类的对象

    登录系统

    登录系统(账号,密码,验证码)

    同步消息

    登录界面类的对象

    用户注册表类的对象

    发送身份信息

    发送身份信息(账号,密码,验证码)

    同步消息

     

    用户注册表类的对象

    用户注册表类的对象

    验证身份

    验证身份(账号,密码,验证码)

    自关联消息

    用户注册表类的对象

    登录界面类的对象

    返回验证结果

    返回验证结果

    返回信息

    登录界面类的对象

    学生类的对象

    通过验证

    通过验证

    返回消息

    学生人员类的对象

    学生界面类的对象

    进入界面

    进入界面()

    同步消息

    学生界面类的对象

    成绩查询界面类的对象

    查询成绩

    查询成绩(学年/学期)

    同步消息

    成绩查询界面类的对象

    成绩报表类的对象

    根据学号查询成绩

    根据学年/学期查询成绩()

    同步消息

    成绩报表类的对象

    成绩查询界面类的对象

    返回学生的成绩

    返回学生的成绩

    返回消息

    成绩查询界面类的对象

    成绩管理界面类的对象

    退出成绩查询界面

    退出成绩查询界面()

    同步信息

    学生界面类的对象

    学生类的对象

    退出系统

    退出系统()

    同步消息

     

    4. 学生查询课表:

     

    4) 顺序图综述

    该顺序图描述了学生登录教学管理系统查看课程信息,包含对象有:学生类的对象、登录界面类的对象、用户注册表类的对象、课程表询界面类的对象、课表类的对象、选课情况类的对象和选课表类的对象。

    5) 顺序图中的对象描述

    l 学生类的对象:主动对象

    l 登录界面类的对象:被动对象

    l 用户注册表类的对象:被动对象

    l 课程表查询界面类的对象:被动对象

    l 课程类的对象:被动对象

    l 选课情况类的对象:被动对象

    l 选课表类的对象:被动对象

    6) 对象接收/发送的描述

    发送消息的对象名称

    接收消息的对象名称

    消息的名称

    消息格式

    消息类型

    学生人员类的对象

    登录界面类的对象

    登录系统

    登录系统(账号,密码)

    同步消息

    登录界面类的对象

    用户注册表类的对象

    发送身份信息

    发送身份信息(账号,密码)

    同步消息

     

    用户注册表类的对象

    用户注册表类的对象

    验证身份

    验证身份(账号,密码)

    自关联消息

    用户注册表类的对象

    登录界面类的对象

    返回验证结果

    返回验证结果

    返回信息

    登录界面类的对象

    学生类的对象

    通过验证

    通过验证

    返回消息

    学生人员类的对象

    学生界面类的对象

    进入界面

    进入界面()

    同步消息

    学生界面类的对象

    学生人员类的对象

    成功进入界面

    成功进入界面()

    返回消息

    学生界面类的对象

    课程信息查询界面类的对象

    查询课程信息

    查询课程信息()

    异步消息

    课程信息查询界面类的对象

    课程类的对象

    查看课程情况

    查看课程情况()

    异步消息

    课程信息查询界面类的对象

    选课情况类的对象

    查看已选课程

    查看课程

    异步消息

    课程信息查询界面类的对象

    选课表类的对象

    查看选课表

    查看选课表()

    异步信息

    学生界面类的对象

    学生类的对象

    退出系统

    退出系统()

    异步消息

     

    5. 老师维护成绩:

     

    7) 顺序图综述

    该顺序图描述了成绩管理人员登录教学管理系统进行成绩管理,包含对象有:成绩管理人员类的对象、登录界面类的对象、用户注册表类的对象、成绩管理界面类的对象、成绩报表类的对象和学籍管理人员类的对象。

    8) 顺序图中的对象描述

    l 教务员(成绩管理人员)类的对象:主动对象

    l 登录界面类的对象:被动对象

    l 用户注册表类的对象:被动对象

    l 成绩管理界面类的对象:被动对象

    l 成绩报表表类的对象:被动对象

    l 学籍管理类的对象:主动对象

    9) 对象接收/发送的描述

    发送消息的对象名称

    接收消息的对象名称

    消息的名称

    消息格式

    消息类型

    成绩管理人员类的对象

    登录界面类的对象

    登录系统

    登录系统(账号,密码)

    同步消息

    登录界面类的对象

    用户注册表类的对象

    发送身份信息

    发送身份信息(账号,密码)

    同步消息

     

    用户注册表类的对象

    用户注册表类的对象

    验证身份

    验证身份(账号,密码)

    自关联消息

    用户注册表类的对象

    登录界面类的对象

    返回验证结果

    返回验证结果

    返回信息

    登录界面类的对象

    成绩管理人员类的对象

    通过验证

    通过验证

    返回消息

    成绩管理人员类的对象

    成绩管理界面类的对象

    进入界面

    进入界面()

    同步消息

    成绩管理界面类的对象

    成绩管理人员类的对象

    成功进入界面

    成功进入界面()

    返回消息

    成绩管理界面类的对象

    成绩报表类的对象

    录入和维护成绩报表

    录入和维护成绩报表()

    异步消息

    成绩管理界面类的对象

    成绩报表类的对象

    统计成绩

    统计成绩()

    异步消息

    成绩管理界面类的对象

    学籍管理类的对象

    发送成绩报表

    发送成绩报表()

    同步消息

    学籍管理类的对象

    成绩管理界面类的对象

    成绩报表成功发送

    成绩报表成功发送()

    返回信息

    成绩管理类的对象

    成绩管理人员类的对象

    退出系统

    退出系统()

    异步消息

     

     

    6. 老师查看课表:

     

    10) 顺序图综述

    该顺序图描述了教师登录教学管理系统查询任课信息,包含对象有:教师类的对象、登录界面类的对象、用户注册表类的对象、教师界面类的对象、任课信息类的对象。

    11) 顺序图中的对象描述

    l 教师类的对象:主动对象

    l 教学管理系统登录界面类的对象:被动对象

    l 用户注册表类的对象:被动对象

    l 教师界面类的对象:被动对象

    l 任课信息类的对象:被动对象

    12) 对象接收/发送的描述

    发送消息的对象名称

    接收消息的对象名称

    消息的名称

    消息格式

    消息类型

    教师类的对象

    登录界面类的对象

    登录系统

    登录系统(账号,密码)

    同步消息

    登录界面类的对象

    用户注册表类的对象

    发送身份信息

    发送身份信息(账号,密码)

    同步消息

     

    用户注册表类的对象

    用户注册表类的对象

    验证身份

    验证身份(账号,密码)

    自关联消息

    用户注册表类的对象

    登录界面类的对象

    返回验证结果

    返回验证结果

    返回信息

    登录界面类的对象

    教师类的对象

    通过验证

    通过验证

    返回消息

    教师类的对象

    教师界面类的对象

    进入界面

    进入界面()

    同步消息

    教师界面类的对象

    教师类的对象

    成功进入界面

    成功进入界面()

    返回消息

    教师界面类的对象

    任课信息类的对象

    查询

    查询()

    同步消息

    任课信息类的对象

    教师界面类的对象

    返回任课信息

    返回任课信息

    返回消息

    教师界面类的对象

    教师类的对象

    退出系统

    退出系统()

    异步消息

     

    7. 教务员维护选课表:

     

    13) 顺序图综述

    该顺序图描述了课程设置人员登录教学管理系统进行课程设置管理,包含对象有:课程设置人员类的对象、登录界面类的对象、用户注册表类的对象、课程设置界面类的对象、教学计划类的对象、选课管理人员类的对象、课室管理人员类的对象。

    14) 顺序图中的对象描述

    l 课程设置人员类的对象:主动对象

    l 教学管理系统登录界面类的对象:被动对象

    l 用户注册表类的对象:被动对象

    l 课程设置界面类的对象:被动对象

    l 教学计划的对象:被动对象

    l 选课管理人员类的对象:主动对象

    l 课室管理人员类的对象:主动对象

    15) 对象接收/发送的描述

    发送消息的对象名称

    接收消息的对象名称

    消息的名称

    消息格式

    消息类型

    课程设置人员类的对象

    登录界面类的对象

    登录系统

    登录系统(账号,密码)

    同步消息

    登录界面类的对象

    用户注册表类的对象

    发送身份信息

    发送身份信息(账号,密码)

    同步消息

     

    用户注册表类的对象

    用户注册表类的对象

    验证身份

    验证身份(账号,密码)

    自关联消息

    用户注册表类的对象

    登录界面类的对象

    返回验证结果

    返回验证结果

    返回信息

    登录界面类的对象

    课程设置人员类的对象

    通过验证

    通过验证

    返回消息

    课程设置人员类的对象

    课程设置界面类的对象

    进入界面

    进入界面()

    同步消息

    课程设置界面类的对象

    课程设置人员类的对象

    成功进入界面

    成功进入界面()

    返回消息

    课程设置界面类的对象

    教学计划类的对象

    生成和维护教学计划

    录入和维护教学计划()

    异步消息

    课程设置人员类的对象

    选课管理人员类的对象

    发送教学计划

    发送教学计划()

    同步消息

    选课管理人员类的对象

    课程设置人员类的对象

    教学计划发送成功

    教学计划发送成功()

    返回消息

    课程设置人员类的对象

    课室管理类的对象

    发送教学计划

    发送教学计划()

    同步消息

    课室管理人员类的对象

    课程设置人员类的对象

    教学计划发送成功

    教学计划发送成功()

    返回消息

    课程设置界面类的对象

    课程设置人员类的对象

    退出系统

    退出系统()

    异步消息

     

    展开全文
  • 第5章 排名 5.1使用RANK函数排名 5.1.1 RANK 函数的语法和用法 ... 排名是成绩统计中经常用到的操作,最简单的是将成绩按从高到低顺序排序,然后排出1,2,3……名,这个按顺序排序的方法,对于同分的,本来都...

    第5章 排名

    • 5.1使用RANK函数排名
      • 5.1.1 RANK 函数的语法和用法
      • 5.1.2 RANK函数的应用
        • 实例 5-1
    • 5.2 利用“排位与百分比排位”分析工具实现排名
      • 实例5-2
    • 5.3标准分数的计算与排名

       排名是成绩统计中经常用到的操作,最简单的是将成绩按从高到低顺序排序,然后排出1,2,3……名,这个按顺序排序的方法,对于同分的,本来都是第2名,但如果排在后面,可能是3名、4名,这样的排名方法显然是不对的。EXCEL在排名上为大家提供了一个非常实用的函数rank,在数据分析工具中提供了一个非常有用的“排位与百分比排位”工具,下面就看看如何快速为学生成绩进行排名吧。

    5.1使用RANK函数排名

    5.1.1 RANK 函数的语法和用法

       返回一列数字的数字排位。 数字的排位是其相对于列表中其他值的大小。 (如果要对列表进行排序,则数字排位可作为其位置。)[15]其语法如下:
       RANK(number,ref,[order])
       RANK 函数语法具有下列参数:
       Number 必需。 要找到其排位的数字。
       Ref必需。数字列表的数组,对数字列表的引用。Ref 中的非数字值会被忽略。
       Order可选。一个指定数字排位方式的数字。
       如果Order为 0(零)或省略,Microsoft Excel对数字的排位是基于ref为按照降序排列的列表。
       如果Order不为零,Microsoft Excel 对数字的排位是基于ref为按照升序排列的列表。

    5.1.2 RANK函数的应用

    实例 5-1

       在EXCEL中打开学生成绩总表,如表1.01。在总分D列后插入新列,E1的值为“排名”,在E2中输入“=RANK(D2,D$2:D$653)”,按回车,即可得出D2在D2:D653区域内的排名,往下填充,就可以完成总分的全级排名。用同样的方法,完成学科成绩的排名,最后如表5.1.1.01所示。要注意的是如果缺考的,就是成绩为空的,用这个函数进行排名,直接显示“#N/A”值不可用的错误。但并不会影响其它学生的排名。
    表5.1.1.01 学生总分及各科排名

    5.2 利用“排位与百分比排位”分析工具实现排名

       “排位与百分比排位”分析工具可以产生一个数据表,在其中包含数据集中各个数值的顺序排位和百分比排位。该工具用来分析数据集中各数值间的相对位置关系。对应的函数是RANK和PERCENTRANK。

    实例5-2

       下面以“道德与法治”学科为例,说明如何利用“排位与百分比排位”分析工具实现成绩的排名和百分比排名。

    1、操作过程

       在EXCEL中打开学生成绩总表,选择【数据】-【数据分析】,在弹出的【数据分析】工具面板中选择“排位与百分比排位”,单击【确定】,在弹出的对话框中选择要排位的数据区域,输出位置等,如图5.2.01所示。
    图5.2.01 排位与百分比排位
       单击【确定】,就可以实现对“道德与法治”学科的排名,如表5.2.01所示。

    表5.2.01排位与百分比排位
       “点”585表示最高分99分出现在586行,排位第1名,百分比为100%,表示领先于100%的学生。同理,排位第2名的学生,有两个,分别位于596和635行,领先99.60%的学生。同分的学生,其排位相同,百分比也相同。
       如果要对应回各学生,只要对“点”列进行按高到低的排序,就可以对应上原来的学生顺序了。
       如果要用公式计算,排位是用rank函数,百分比排位可以用PERCENTRANK函数,具体使用可参考相关文献[16]。

    相关文献请看本系列之前言

    展开全文
  • 重复成绩统计(改编) 【STL-map】 NUIST OJ 1364 2017 江苏科技大学 程序设计竞赛D重复成绩统计改编 STL-map 题目 map简介 map使用 快捷键 Markdown及扩展 表格 定义列表 代码块 脚注 目录 数学公式 UML ...
  • 会有更多的内容-并且这个公众号可接项目、学生作业、论文设计、uml作业(包括文档设计、用例图、实现类图、状态图、顺序图、活动图、组件图、部署图)等)。** 例如:饭店管理信息系统uml 项目1宾馆管理系统(2人) ...
  • Java统计学生成绩

    千次阅读 2019-04-14 11:05:53
    编写程序统计班级学员的考试成绩,并将成绩按照从大到小的顺序排序,还需计算出班级的平均分及班级总分,统计成绩在80分以上的人数。 public static void main(String[] args) { Scanner input = new Scanner...
  • (4)对学生记录中的C 语言课设成绩按指定顺序(升序、降序)进行排序; (5)删除学生记录:在指定位置上删除学生记录。 (6)能统计各分数段的人数,并以分布显示,如1-2 所示。 (7)输出学生记录到屏幕。...
  • 学生信息统计顺序表)

    万次阅读 多人点赞 2016-09-17 15:05:26
    定义一个包含学生信息(学号,姓名,成绩)的的 顺序表和链表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生...
  • 小学初高中考试成绩统计分析管理系统 http://wenku.baidu.com/view/4c148eea647d27284a735167.html 高中考试成绩统计分析管理系统(有文理班) http://wenku.baidu.com/view/c6c8c3062cc58bd63086bd60.html ...
  • 第 8 列是总评成绩,输出的顺序是按总评成绩降序输出。 提示: struct StudentScore{ int serialNum;//序号 int id;//学号 string name;//姓名 string major;//专业 float regularScore;//平时...
  • Excel应对特殊学生成绩分析统计(转) 1.考试混合编,成绩统一理--老方法遇到新问题 关于使用Excel进行学生成绩处理,已经是老话题了。但在实际工作中还是会有很多新问题,例如,现在很多学校都是全年级各班混在一起...
  • 定义一个包含学生信息(学号,姓名,成绩)的的 顺序表和链表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生的学号和...
  • 包括:教务管理系统顶层用例图 选课管理子用例图 成绩管理子用例图 成绩管理类图 选课管理类图 学生选课状态图 成绩统计状态图 选课注册顺序图
  • 以下内容转自: http://www.bych.cn/html/2007-03/5197.html一、前言 对于教师而言,经常需要用Excel进行学生成绩统计,会被一些常见问题难住。碰到的难题主要有:如何统计不同分数段人数、如何在保持学号不变前提...
  • 题目:实现线性表的基本操作:分别定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据...
  • FZOJ刷题顺序

    千次阅读 2016-01-24 18:09:25
    FZOJ刷题顺序 一、练习题(按照学习进度排序) 二、练习题(按照AC量排序) 三、往年NOIP原题(按照AC量排序) 四、往年NOIP原题(按照年份排序) 注:数据截止2016年1月24日。
  • 有如下一张表score: 建表语句: CREATE TABLE `score` (`id` int NOT NULL AUTO_INCREMENT ,`name` varchar(20) NOT NULL ,`category` varchar(20) NOT NULL ,`score` int ...现在要去查询学生的各科成绩和总分,...
  • “D”列为“C”列各科目相应的总分,其作用一是成绩统计(公式)时各优生数、及格数、后进生数将自动分别以其相应总分的80%、60%、40%作为判断分值计算,二是总表里“超限检查”时将按此分数检查相应科目成绩是否...
  • 相信很多大一的同学在做c语言程序设计期末大作业的时候,都会被这些题目所困扰:学生成绩管理系统、学生信息管理系统、图书借阅管理系统、通讯录、选课系统......上网百度到别人的代码,有的人用C++写,有的人用类C...
  • “D”列为“C”列各科目相应的总分,其作用一是成绩统计(公式)时各优生数、及格数、后进生数将自动分别以其相应总分的80%、60%、40%作为判断分值计算,二是总表里“超限检查”时将按此分数检查相应科目成绩是否...
  • 统计学习一:数据的图表展示 参加此统计学习小组主要是巩固python语言,故所有笔记都以python代码实现 一、数据预处理 1.数据审核、筛选、排序 表一: 姓名 统计学成绩 数学成绩 英语成绩 经济学...
  • 基于神经网络的交互式在线问题库中同伴激励的学生成绩预测摘要INTRODUCTION相关工作3 背景 摘要 使在线学习平台上的许多下游任务受益,例如估计辍学率、促进战略干预和实现自适应在线学习。互动式在线问题库为学生...
  • 2)分别统计学生某门课程成绩中各分数段的成绩的人数,并输出 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始...
  • 非参数统计概述

    千次阅读 2019-11-16 22:48:05
    非参数统计概述 文章目录非参数统计概述引言非参数方法举例Wilcoxon 符号秩检验Wilcoxon秩和检验 引言 非参数统计(nonparametric statistics)是相对于参数统计而言的一个统计学分支,是数理统计的重要内容。在参数...
  • C语言分数统计

    千次阅读 2020-06-24 21:13:31
    现有若干百分制成绩成绩个数不超过1000个),请你统计五个等级段的人数,并找出人数最多的那个等级段,按照从大到小的顺序输出该段中所有人成绩(保证人数最多的等级只有一个)。 输入 第一行是成绩的个数 n 第二...
  • 我们从中明显可以看某性能测试的结果表明普通机械磁盘的顺序I/O性能指标是53.2M values/s,SSD的顺序I/O性能指标是42.2M values/s,而内存的随机I/O性能指标是36.7M values/s。虽然中没有给出values的具体含义,...
  • 结合上,整理出如下伪SQL查询语句。 SQL语句执行顺序 从这个顺序中我们可以发现,所有的查询语句都是从FROM开始执行的。在实际执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个...
  • 学生管理系统的设计与实现 - 顺序

    万次阅读 多人点赞 2017-05-26 00:05:41
    设计并实现一个学生管理系统,即定义一个包含学生信息(学号,姓名,成绩)的顺序表,可以不考虑重名的情况,系统至少包含以下功能: 1、根据指定学生个数,逐个输入学生信息; 2、逐个显示学生表中所有学生的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,036
精华内容 6,014
关键字:

成绩统计顺序图