双链表嵌套的简单学生信息管理系统

2023-11-19

参考:实现双链表嵌套的简单学生信息管理
作者:三速何时sub20
发布时间: 2020-07-20 10:44:40
网址:https://blog.csdn.net/weixin_44234294/article/details/107458155?spm=1001.2014.3001.5501

参考:双链表嵌套实现简单学生成绩管理系统
作者:0~∞
发布时间: 2021-06-14 22:43:56
网址:https://blog.csdn.net/m0_47561451/article/details/117913579?spm=1001.2014.3001.5501

题目

场景:一个年级,相当于链表A,该年级5个班,每个班5个人,相当于链表B1–B5。功能:录入学生基本信息和成绩,找出最高分、最低分、平均分。

思路

这个系统是一个双链表系统(班级和学生),母链表(班级)的每一个节点包含一个子链表(学生)的头节点,可以根据这个思想来创建(头插法、尾插法)和遍历链表,核心就是建立好这个双链表,其他的可以根据遍历链表来找出最高分、最低分、平均分。如图:
在这里插入图片描述

参考代码

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

//函数的声明(先定义的函数先使用了 可以不用声明)
struct Class *ClassMessage(struct Class *head,int Classnum,int stunum);
struct student *stuMessage(struct student *head,int stunum,int Classnum);
struct student *insertStuMessage(struct student *head,struct student *newData2);
void printMessage(struct Class *head,int stunum,int Classnum);
void findMathMaxScore(struct Class *head,int Classnum,int stunum);
void findChineseMaxScore(struct Class *head,int Classnum,int stunum);
void findEnglishMaxScore(struct Class *head,int Classnum,int stunum);
void gradeAvg(struct Class *head,int Classnum,int stunum);

//学生信息结构体
struct student
{
    int data;
    int chinese;
    int math;
    int english;
    int sum;
    float avg;
    struct student *next;
};
//班级结构体
struct Class
{
    int ClassNum;
    struct student *messageHead;//定义一个结构体指针指向学生信息链表
    struct Class *next;
};



//1、班级和学生链表(嵌套)创建
struct Class *ClassMessage(struct Class *head,int Classnum,int stunum)
{
   
    int j;
    struct Class *p=head;
    struct Class *newData=NULL;//用来新建信息的班级
    struct student *stuHead;   
    for(j=0;j<Classnum;j++){   //班级链表的创建
        newData=(struct Class *)malloc(sizeof(struct Class));
        newData->ClassNum = j+1;                                             //班级链表的内容
        stuHead=stuMessage(stuHead,stunum,j+1);//嵌套创建学生链表
        newData->messageHead=stuHead;                                        //班级链表的内容
       
        printf("#######################################\n");
         if(p == NULL){
            head = newData;
        }else{
            
                newData->next=head;//头插法                                  //班级链表的内容
                head=newData;
        }
    
    }
    return head;
}

//录入一个学生信息
struct student *stuMessage(struct student *head,int stunum,int Classnum)
{
    int i;
    int sum;
    float avg;
    struct student *newData;
    for(i=0;i<stunum;i++){
        newData=(struct student *)malloc(sizeof(struct student));
        printf("请输入%d班第%d位学生学号\n",Classnum,i+1);
        scanf("%d",&(newData->data));
        printf("chinese:\n");
        scanf("%d",&(newData->chinese));
        printf("math:\n");
        scanf("%d",&(newData->math));
        printf("english:\n");
        scanf("%d",&(newData->english));
        newData->sum=newData->chinese+newData->math+newData->english;
        newData->avg=(float)newData->sum/3;

        head=insertStuMessage(head,newData);//调用上面的头插法函数新建学生信息
    }
    return head;


}


//头插法插入到学生信息链表
struct student *insertStuMessage(struct student *head,struct student *newData2)
{
    if(head == NULL){
        head=newData2;
    }else{
        newData2->next=head;
        head=newData2;
    }
    return head;

}

//2、班级和学生链表的遍历打印
void printMessage(struct Class *head,int stunum,int Classnum)
{
    int i;
    int j;
    struct Class *p=head;//本来的链表头复制一份给P 用来自增遍历链表 这样就不会改变原有的链表形态
    struct student *p2=NULL;
    for(i=0;i<Classnum;i++){
       p2=p->messageHead;//让p2指向class结构体里面指向学生信息的指针
        for(j=0;j<stunum;j++){
            printf("第%d班第%d个学生:学号 %d\n",p->ClassNum,j+1,p2->data);
            printf("成绩:chinese:%d math:%d english:%d \n",p2->chinese,p2->math,p2->english);
            printf("总分:%d 平均分:%f\n",p2->sum,p2->avg);
            printf("---------------------------------\n");        
            p2=p2->next;
        }
        p=p->next;

    }
    

}


//3、链表遍历找数学最高分的学生
void findMathMaxScore(struct Class *head,int Classnum,int stunum)
{
    struct Class *pclass=head;
    struct student *pstu;
    int maxScore=0;
    int stuHao;
    int classHao;
    int i;
    int j;
    for(i=0;i<Classnum;i++){
        pstu=pclass->messageHead;
        for(j=0;j<stunum;j++){
            if(maxScore < pstu->math){
                maxScore=pstu->math;
                classHao=pclass->ClassNum;
                stuHao=pstu->data;
            }
            pstu=pstu->next;
        }
        pclass=pclass->next;

    }
    printf("-------------年级数学最高分--------------\n");
    printf("数学最高分是: %d班 学号 %d 分数 %d分\n",classHao,stuHao,maxScore);

}

//4、链表遍历找语文最高分的学生
void findChineseMaxScore(struct Class *head,int Classnum,int stunum)
{
    struct Class *pclass=head;
    struct student *pstu;
    int maxScore=0;
    int stuHao;
    int classHao;
    int i;
    int j;
    for(i=0;i<Classnum;i++){
        pstu=pclass->messageHead;
        for(j=0;j<stunum;j++){
            if(maxScore < pstu->chinese){
                maxScore=pstu->chinese;
                classHao=pclass->ClassNum;
                stuHao=pstu->data;
            }
            pstu=pstu->next;
        }
        pclass=pclass->next;

    }
    printf("---------------年级语文最高分--------------\n");
    printf("语文最高分是: %d班 学号 %d 分数 %d分\n",classHao,stuHao,maxScore);

}

//5、链表遍历找英语最高分的学生
void findEnglishMaxScore(struct Class *head,int Classnum,int stunum)
{
    struct Class *pclass=head;
    struct student *pstu;
    int maxScore=0;
    int stuHao;
    int classHao;
    int i;
    int j;
    for(i=0;i<Classnum;i++){
        pstu=pclass->messageHead;
        for(j=0;j<stunum;j++){
            if(maxScore < pstu->english){
                maxScore=pstu->english;
                classHao=pclass->ClassNum;
                stuHao=pstu->data;
            }
            pstu=pstu->next;
        }
        pclass=pclass->next;

    }
    printf("---------------年级英语最高分--------------\n");
    printf("英语最高分是: %d班 学号 %d 分数 %d分\n",classHao,stuHao,maxScore);

}

//6、链表遍历计算年级均分
void gradeAvg(struct Class *head,int Classnum,int stunum)
{
    struct Class *pclass=head;
    struct student *pstu;
    int gradeSum=0;
    int numOfStu;
    float gradeAvg;
    int i;
    int j;
    for(i=0;i<Classnum;i++){
        pstu=pclass->messageHead;
        for(j=0;j<stunum;j++){
            numOfStu++;
            gradeSum+=pstu->sum; 
            pstu=pstu->next;
        }
        pclass=pclass->next;

    }
    gradeAvg=(float)gradeSum/numOfStu;
    printf("---------------年级平均分--------------\n");
    printf("年级平均分是%f\n",gradeAvg);
}
int main()
{
    int a;
    int b;
    struct Class *head;            //其实也是个野指针
    printf("请输入班级数量:\n");
    scanf("%d",&a);
    printf("请输入班级人数量:\n");
    scanf("%d",&b);
    head=ClassMessage(head,a,b);   //1、班级、学生链表的创建
    printMessage(head,b,a);        //2、班级、学生链表的遍历打印
    findMathMaxScore(head,a,b);    //3、数学最高
    findChineseMaxScore(head,a,b); //4、语文最高
    findEnglishMaxScore(head,a,b); //5、英语最高
    gradeAvg(head,a,b);            //6、年级均分
   
    system("pause");
    return 0;
}

运行结果

仔细观察,链表遍历输出学生信息的时候,发现遍历的顺序是从2班学号为2的学生开始往后遍历的,这是因为我们使用的是头插法创建链表,最后插入到链表的最先被遍历。

请输入班级数量:
2
请输入班级人数量:
2
请输入1班第1位学生学号
1
chinese:
87
math:
90
english:
45
请输入1班第2位学生学号
2
chinese:
78
math:
54
english:
67
#######################################
请输入2班第1位学生学号
1
chinese:
56
math:
89
english:
54
请输入2班第2位学生学号
2
chinese:
76
math:
89
english:
56
#######################################
第2班第1个学生:学号 2
成绩:chinese:76 math:89 english:56
总分:221 平均分:73.666664
---------------------------------
第2班第2个学生:学号 1
成绩:chinese:56 math:89 english:54
总分:199 平均分:66.333336
---------------------------------
第1班第1个学生:学号 2
成绩:chinese:78 math:54 english:67
总分:199 平均分:66.333336
---------------------------------
第1班第2个学生:学号 1
成绩:chinese:87 math:90 english:45
总分:222 平均分:74.000000
---------------------------------
-------------年级数学最高分--------------
数学最高分是: 1班 学号 1 分数 90分
---------------年级语文最高分--------------
语文最高分是: 1班 学号 1 分数 87分
---------------年级英语最高分--------------
英语最高分是: 1班 学号 2 分数 67分
---------------年级平均分--------------
年级平均分是140.166672
请按任意键继续. . .

问题探索

在学生结构体体面添加 char *name,用来曾加学生的名字信息,可是遍历结果体的时候就出现段错误。
学生结构体的地方
在这里插入图片描述
录入的地方
在这里插入图片描述
遍历的地方
在这里插入图片描述

感谢大佬指点了一下,加了名字的代码如下

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//学生信息结构体
struct student
{
    int data;
    char name[10];
    int chinese;
    int math;
    int english;
    int sum;
    float avg;
    struct student *next;
};
//班级结构体
struct Class
{
    int ClassNum;
    struct student *messageHead;//定义一个结构体指针指向学生信息链表
    struct Class *next;
};
//打印各个学生的相关信息
void printMessage(struct Class *head,int stunum,int Classnum)
{
    int i;
    int j;
    int k=1;//用来计算第几个学生的
    struct Class *p=head;
    struct student *p2=NULL;
    for(i=0;i<Classnum;i++){
       p2=p->messageHead;//让p2指向class结构体里面指向学生信息的指针
        for(j=0;j<stunum;j++){
            printf("第%d班第%d个学生:学号 %d 姓名:%s\n",p->ClassNum,k,p2->data,p2->name);
            printf("成绩:chinese:%d math:%d english:%d \n",p2->chinese,p2->math,p2->english);
            printf("总分:%d 平均分:%f\n",p2->sum,p2->avg);
            printf("---------------------------------\n");
            k++;
            p2=p2->next;
        }
        k=1;
        p=p->next;

    }
    

}
//使用头插法插入新的学生信息
struct student *insertStuMessage(struct student *head,struct student *newData2)
{
    if(head == NULL){
        head=newData2;
    }else{
        newData2->next=head;
        head=newData2;
    }
    return head;

}
//录入学生的相关信息
struct student *stuMessage(struct student *head,int stunum,int Classnum)
{
    int i;
    int num=stunum;
    int sum;
    float avg;
    struct student *newData;
    for(i=0;i<stunum;i++){
        newData=(struct student *)malloc(sizeof(struct student));
        printf("请输入%d班第%d位学生学号\n",Classnum,num);
        scanf("%d",&(newData->data));
        printf("请输入姓名:\n");
        scanf("%s",newData->name);
        printf("chinese:\n");
        scanf("%d",&(newData->chinese));
        printf("math:\n");
        scanf("%d",&(newData->math));
        printf("english:\n");
        scanf("%d",&(newData->english));
        sum=newData->chinese+newData->math+newData->english;
        newData->sum=sum;
        avg=(float)sum/3;
        newData->avg=avg;
        num--;
        head=insertStuMessage(head,newData);//调用上面的头插法函数新建学生信息
    }
    return head;


}
//班级链表的操作
struct Class *ClassMessage(struct Class *head,int Classnum,int stunum)
{
   
    int j;
    int num=Classnum;
    struct Class *p=head;
    struct Class *newData=NULL;//用来新建信息的班级
    struct student *stuHead;
    for(j=0;j<Classnum;j++){
        newData=(struct Class *)malloc(sizeof(struct Class));
        newData->ClassNum=num;
        stuHead=stuMessage(stuHead,stunum,num);
        newData->messageHead=stuHead;
       
        printf("#######################################\n");
        num--;
         if(p == NULL){
            head = newData;
        }else{
            
                newData->next=head;
                head=newData;
        }
        //newData=newData->next;
    
    }
    return head;
}
//找数学最高分的学生
void findMathMaxScore(struct Class *head,int Classnum,int stunum)
{
    struct Class *pclass=head;
    struct student *pstu;
    int maxScore=0;
    int stuHao;
    int classHao;
    int i;
    int j;
    char *name;
    name = (char *)malloc(10);
    for(i=0;i<Classnum;i++){
        pstu=pclass->messageHead;
        for(j=0;j<stunum;j++){
            memset(name,0,10);
            if(maxScore < pstu->math){
                maxScore=pstu->math;
                classHao=Classnum;
                stuHao=pstu->data;
                name=pstu->name;
            }
            pstu=pstu->next;
        }
        pclass=pclass->next;

    }
    printf("-------------年级数学最高分--------------\n");
    printf("数学最高分是: %d班 学号 %d 姓名 %s 分数 %d分\n",classHao,stuHao,name,maxScore);

}

void findChineseMaxScore(struct Class *head,int Classnum,int stunum)
{
    struct Class *pclass=head;
    struct student *pstu;
    int maxScore=0;
    int stuHao;
    int classHao;
    int i;
    int j;
    char *name;
    name = (char *)malloc(10);
    for(i=0;i<Classnum;i++){
        pstu=pclass->messageHead;
        for(j=0;j<stunum;j++){
            memset(name,0,10);
            if(maxScore < pstu->chinese){
                maxScore=pstu->chinese;
                classHao=pclass->ClassNum;
                stuHao=pstu->data;
                name=pstu->name;
            }
            pstu=pstu->next;
        }
        pclass=pclass->next;

    }
    printf("---------------年级语文最高分--------------\n");
    printf("语文最高分是: %d班 学号 %d 姓名 %s 分数 %d分\n",classHao,stuHao,name,maxScore);

}
void findEnglishMaxScore(struct Class *head,int Classnum,int stunum)
{
    struct Class *pclass=head;
    struct student *pstu;
    int maxScore=0;
    int stuHao;
    int classHao;
    int i;
    int j;
    char *name;
    name = (char *)malloc(10);
    for(i=0;i<Classnum;i++){
        pstu=pclass->messageHead;
        for(j=0;j<stunum;j++){
            memset(name,0,10);
            if(maxScore < pstu->english){
                maxScore=pstu->english;
                classHao=pclass->ClassNum;
                stuHao=pstu->data;
                name=pstu->name;
                
            }
            pstu=pstu->next;
        }
        pclass=pclass->next;

    }
    printf("---------------年级英语最高分--------------\n");
    printf("英语最高分是: %d班 学号 %d 姓名 %s 分数 %d分\n",classHao,stuHao,name,maxScore);

}
void gradeAvg(struct Class *head,int Classnum,int stunum)
{
    struct Class *pclass=head;
    struct student *pstu;
    int gradeSum=0;
    int numOfStu;
    float gradeAvg;
   // float maxAvg;
    int i;
    int j;
    for(i=0;i<Classnum;i++){
        pstu=pclass->messageHead;
        for(j=0;j<stunum;j++){
            numOfStu++;
            gradeSum+=pstu->sum; 
            pstu=pstu->next;
        }
        pclass=pclass->next;

    }
    gradeAvg=(float)gradeSum/numOfStu;
    printf("---------------年级平均分--------------\n");
    printf("年级平均分是%f\n",gradeAvg);
}
int main()
{
    int a;
    int b;
    struct Class *head;
    printf("请输入班级数量:\n");
    scanf("%d",&a);
    printf("请输入班级人数量:\n");
    scanf("%d",&b);
    head=ClassMessage(head,a,b); 
    printMessage(head,b,a);
    findMathMaxScore(head,a,b);
    findChineseMaxScore(head,a,b);
    findEnglishMaxScore(head,a,b);
    gradeAvg(head,a,b);
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

双链表嵌套的简单学生信息管理系统 的相关文章

  • C++选择结构学案

    学习目标 熟练掌握 C 中的关系 逻辑运算符 熟知关系 逻辑运算符和数学运算符的优先级 学会正确使用选择表达式 知识着陆 1 关系运算符 使用关系运算符需要注意的问题 1 等于 与 赋值 的区别 2 实型数据 浮点数 的关系运算 3 运算符
  • 五大板块(1)—— 数组的定义,赋值与应用

    参考 五大板块 1 数组的定义 赋值与应用 作者 丶PURSUING 发布时间 2021 03 18 16 00 05 网址 https blog csdn net weixin 44742824 article details 11498
  • C语言基础:数据类型(一)

    C语言基础 数据类型 一 C语言是计算机中很多现代编程语言的开山鼻祖 它创造了信息时代和科技时代的文明 计算机语言由机器语言慢慢演变为高级语言 1958年7月3日 ALGOL语言 Algorithmic Language 创立 C语言的原型
  • 计算并输出给定正整数n的所有因子(不包括1和自身)之和

    国二有题目 请编写函数fun 该函数的功能是 计算并输出给定正整数n的所有因子 不包括1和自身 之和 规定n的值不大于1000 例如 在主函数中从键盘给n输入的值为856 则输出为 sum 763 代码如何完成呢 分析 1 输入的数字要是整
  • C语言面试高频问题:自己代码实现字符串相关的常用API

    参考 C语言面试高频问题 自己代码实现字符串相关的常用API 作者 图触靓 发布时间 2020 08 08 13 31 33 网址 https blog csdn net bhbhhyg article details 107878102
  • 【C语言】通讯录实现以及信息保存至文件。

    实现一个通讯录 通讯录用来存放1000个人的信息 每个人的信息包括 姓名 性别 年龄 电话 住址 提供方法 1 添加联系人信息 2 删除指定联系人信息 3 查找指定联系人的信息 4 修改指定联系人信息 5 显示所有联系人信息 6 清空所有联
  • 多文件编辑作业(2023.1.10)

    第一题 main c include head h int main int argc const char argv char str hello my student int start 0 int end strlen str 1 M
  • UniCode 下char*转CString ,利用MultiByteToWideChar进行转换,中文乱码的解决方案

    使用A2W A2T这些宏函数是常见的方法 但是中文会乱码 所以采用MultiByteToWideChar进行转换 计算char 数组大小 以字节为单位 一个汉字占两个字节 int charLen strlen sText 计算多字节字符的大
  • C基础day6(2023.7.6)

    一 Xmind整理 二 课上练习 练习1 循环嵌套 三个循环结构可以任意嵌套 include
  • c语音动态内存分配,内存重新分配,内存释放,指针运算

    c语音基础 中的基础 大神请直接关闭本页面 多谢合作 总结下这学习到的知识点 define CRT SECURE NO WARNINGS include
  • Problem E: C语言习题5.21--算法:汉诺塔

    Problem E C语言习题5 21 算法 汉诺塔 Time Limit 1 Sec Memory Limit 64 MB Description 汉诺塔 又称河内塔 问题是印度的一个古老的传说 开天辟地的神勃拉玛在一个庙里留下了三根金刚
  • C语言之自定义函数的实现

    自定义函数的作用 方便管理代码 编写程序时思路清晰 代码复用 同一段代码可以在不同位置多次执行 函数声明 使用 返回值类型 函数名 类型 变量名 类型 变量名 例如 int sum int num1 int num2 实际上 在函数声明时
  • STL--map的应用

    STL之map的应用 map定义及用途 map翻译为映射 是STL中的常用容器 其实 数组就是一种映射 比如 int a 100 就是定义了一个int到int的映射 而a 5 25 就是把5映射到25 数组总是将int类型映射到其它基本类型
  • 经典C语言程序设计100例,部分有个人注解

    经典C语言程序设计100例 程序1 题目 有1 2 3 4个数字 能组成多少个互不相同且无重复数字的三位数 都是多少 1 程序分析 可填在百位 十位 个位的数字都是1 2 3 4 组成所有的排列后再去 掉不满足条件的排列 当然这里的去掉并不
  • day3笔记

    1 4 mkdir指令 创建目录 mkdir d1 在当前目录下创建d1目录 mkdir d3 d4 在当前目录下创建多个目录 mkdir dir1 dir2 p 在当前目录下创建目录dir1下的dir2目录 1 5 rmdir命令 作用
  • 浮点数在计算机中存储方式、十六进制(HEX)和浮点类型(float、double)转换

    目录 浮点数在计算机中存储方式 举例 8 25和120 5在内存中真正的存储方式 浮点类型转换为十六进制 方法1 用地址用指针 方法2 用共用体 方法3 使用memcpy 十六进制转换为浮点类型 浮点数在计算机中存储方式 https www
  • C语言中putchar()函数的使用

    今天教C语言中的输入输出语句 对函数putchar 函数有些好奇 难道就只能输出char型的数据么 带着这样的疑问 在环境上进行了验证 验证结果还蛮有意思 共享一下 当我们定义一个变量a 并给a赋予0 255的值 很显然没有问题 如代码 i
  • c语言基础回顾 —— 其他知识点

    参考 c语言基础回顾 其他知识点 作者 丶PURSUING 发布时间 2021 03 11 14 48 59 网址 https blog csdn net weixin 44742824 article details 114666007
  • 双链表嵌套的简单学生信息管理系统

    参考 实现双链表嵌套的简单学生信息管理 作者 三速何时sub20 发布时间 2020 07 20 10 44 40 网址 https blog csdn net weixin 44234294 article details 1074581
  • C基础day8(2023.7.10)

    一 Xmind整理 二 课上练习 练习1 基本类型参数 include

随机推荐

  • ExtJS之 Proxy数据代理

    ExtJS之 Proxy数据代理 代理种类截图 ExtJS提供的数据代理主要分为两大类 1 客户端代理 Ext data proxy Client 2 服务器代理 Ext data proxy Server 这两个类 都继承自 Ext da
  • Ansible的简介及部署

    1 ansible简介 1 1 什么是ansible ansible是一款开源自动化平台 是一个配置管理工具 自动化运维工具 1 2 ansible的优点 跨平台支持 人类可读自动化 ansible提供linux Windows unix和
  • 类的一些内置方法

    一 slots 用来取代 dict 优势是省内存 附加功能是只能创建slots 定义好的key 注意 不要乱用 用了就没有 dic 方法了 class Foo slots name age 这里可以是列表或者单个字符串 定义key值 f1
  • 解决matplotlib画图中文乱码

    一 下载字体 以SimHei字体为例 下载SimHei ttf文件 在python环境下输入 import matplotlib print matplotlib path 输出matplotlib的安装环境 放在该路径下的mpl data
  • 彻底删除SVN版本库某一文件夹或文件

    基础描述 要彻底删除SVN版本库某一文件夹或文件 可采取这种方法 举例说明 例 假设SVN库路径为E svn project 库中的目录结构为 Trunk Software test exe 删除Software 目录下的test exe文
  • 赫尔德不等式详细证明

    赫尔德不等式详细证明 k 1n akbk k 1n ak p 1 p k 1n bk q 1 q 1 sum k 1 n left a k b k right leqslant sum k 1 n left a k right p 1 p
  • FPGA实战--等精度频率测量

    首先放置效果图 本次试验中采用的是等精度测频率 等精度测频的原理是产生一个1s的高电平 在高电平中对被测方波进行计数 所测得数字即该波形频率 具体等精度测量原理请参考 http www elecfans com d 591858 html
  • 若依框架前后端分离版本自动生成代码的详细步骤

    1 若依框架的下载和本地运行这里就不介绍了主要讲代码自动生成 只是单表的增删改成 复杂的多表业务逻辑还是需要自己手写的 话不多说直接上图 一 新建模块 本地运行起来后右键新建Module 注意这里的Name 可以和若依类似 也可以自己定义新
  • 基于Axure 8课程设计-前端页面设计-漫画APP界面/UI设计(免费分享.rp文件学习)

    这次的课程设计主要是UI设计 基于Axure我设计了一个类似动漫之家的一个设计界面 以下是效果图 UI首页 点击夜魔侠 点击更新按钮 点击分类按钮 排行 点击专题按钮之后 点击搜索按钮之后 点击 新闻 按钮 点击 轻小说 按钮 点击 我的
  • 关于Qt/C++和QML获取屏幕大小方法的总结

    在桌面应用程序的开发过程中 获取屏幕 桌面 的大小来定位桌面应用所显示的位置 是桌面开发中经常用到的 手段 在Qt开发和QML开发中也不例外 本篇着重介绍Qt获取桌面屏幕大小的两种方法 以及对应的QML中获取桌面屏幕 大小的两种方法 首先上
  • 将onnx的静态batch改为动态batch及修改输入输出层的名称

    文章目录 背景 操作 修改输入输出层 修改输入输出层名称 完整代码 背景 在模型的部署中 为了高效利用硬件算力 常常会需要将多个输入组成一个batch同时输入网络进行推理 这个batch的大小根据系统的负载或者摄像头的路数时刻在变化 因此网
  • 《Python进阶系列》十七:详解Python中的猴子补丁——允许在运行时更改对象的行为

    猴子补丁是一项允许在运行时更改对象行为的技术 它是一个非常有用的功能 但它也可能使你的代码更难以理解和调试 因此 在实现猴子补丁程序时必须谨慎 猴子补丁的用法 猴子补丁与Python中的灵活性紧密相关 自定义对象是可变的 因此可以替换其属性
  • laravel-admin grid中使用switch操作一对一关联属性(源码探究到功能实现)

    我的个人博客 逐步前行STEP 项目中有一个商品表 production 有一个库存表 repertory 两者一对一关系 production有发布字段 release 需求是在repertory的grid中 有一个switch开关 用于
  • 【面试题】宏任务和微任务

    1 宏任务和微任务 宏任务 macroTask 和微任务 microTask 都是异步中API的分类 宏任务 setTimeout setInterval Ajax DOM事件 微任务 Promise async await 微任务执行时机
  • C语言经典100例题(25)--求1+2!+3!+...+20!的和

    目录 题目 问题分析 代码 运行结果 题目 求1 2 3 20 的和 问题分析 1 1 2 1 2 3 1 2 3 不难发现 1 2 3 20 每个阶乘都比前一个多乘了一个 i 代码 include
  • 使用antd pro初始化项目时出现报错:

    npm i ant design pro cli g出现报错 解决 使用sudo tnpm i ant design pro cli g 接着pro create myapp 一切都很顺利 但是在tnpm install时出现报错 这个问题
  • C51简介及Keil的使用

    前言 此文档主要是针对有一定C C 编程基础 并打算用Keil从事C51开发的开发人员 C51涉及的知识比较多 但是入门基本的开发 还是容易的 C51简介 1 C51概念 C51继承于C语言 主要运行于51内核的单片机平台 单片机 单片微型
  • Linux环境搭建----VMware安装虚拟机

    一 VMare虚拟机安装与使用 1 1 VMware简介 1 VMware是一个虚拟PC的软件 可以在现有的操作系统上虚拟出一个新的额硬件环境 相当于模拟出一个新的PC 2 WMware官方网站 http www vmware com 3
  • python重复执行命令_怎样能重复执行一条命令直到运行成功

    在我们的日常工作中 需要我们重复做的工作简直不能太多 比如 我们想要确认网络是否是连通的 传统的做法就是使用 ping 命令不停去测试某个地址 比如百度 网络比较好还好说 但如果网络很差 那么就需要一直去运行 ping 命令 作为程序员 重
  • 双链表嵌套的简单学生信息管理系统

    参考 实现双链表嵌套的简单学生信息管理 作者 三速何时sub20 发布时间 2020 07 20 10 44 40 网址 https blog csdn net weixin 44234294 article details 1074581