"点击上方“蓝色字”,关注我们哦(*^▽^*)!"


NO.1

篇幅较长,请空闲时观看

前言

这个项目是大一暑假完成,纯C语言编写,界面比较美观,由于当时还是一个初学者,有什么问题希望大家可以批评指正。(源码会在第二篇文章末尾给出)

这个项目有些瑕疵,但基本功能都已实现,在此分享一下我的思路。

全部内容我会分为两部分:第一部分主要写每个功能界面以及它们之间的逻辑关系。第二部分主要写单链表和文件读写的实现。正文

先看看作品效果

流程图如下

首先是一个菜单选择界面,其中包括登录,找回密码和退出系统。

源码如下

//主界面void menu(){    printf("\t\t\t----------------------------------------\n");    printf("\t\t\t|\t欢迎来到三千学生管理系统\t|\n");    printf("\t\t\t----------------------------------------\n");    printf("\t\t\t|\t1.登陆\t\t\t\t|\n");    printf("\t\t\t|\t2.找回密码\t\t\t|\n");    printf("\t\t\t|\t3.退出系统\t\t\t|\n");    printf("\t\t\t----------------------------------------\n");    printf("\t\t\t请选择功能(1-3)(按回车键确认):");

    //获取选择    int choice = 0;    scanf("%d",&choice);

    //清除缓冲区    char ch;    while((ch = getchar()) != '\n' && ch != EOF);

    switch(choice)//判断选择    {    case 1:        {            system("cls");//刷新界面            login();//调用login()函数进行登录            break;        }    case 2:        {            system("cls");            rebackPassword();//调用rebackPassword()函数找回密码            break;        }    case 3:        {            printf("\n\t\t\t");            exit(0);//退出系统        }    default:        {            //当输入不是指定选项时            printf("\n\t\t\t输入错误!请重新输入!\n\t\t\t");            system("pause");//暂停程序            system("cls");//刷新界面

            menu();//重新调用本函数            break;        }    }}

选择其中一项都会跳转到其他界面。本文只写登录和登录成功后。登录失败以及找回密码都有对应措施,在文中不再介绍。

进入登录界面后,输入密码:123,即可登录成功。

源码如下

//登录界面void login(){    int i = 0;    char Password[]="123";//登录密码    char tempPass[10]="0";//从输入端获取的密码

    printf("\t\t\t---------------登陆系统---------------\n\n");    printf("\t\t\t\t管理员账号:三千\n");    for(i=1;i<=3;i++)    {        printf("\t\t\t\t管理员密码:");        //获取你所输入的密码        scanf("%s",tempPass);

        //清除缓冲区        char ch;        while((ch = getchar()) != '\n' && ch != EOF);

        //判断登录密码和获取的密码是否相同        //strcmp()用于字符串比较,两字符串相同时返回0        if(!strcmp(Password,tempPass))        {            printf("\n\t\t\t\t登陆成功!");            printf("\n\t\t\t\t");            system("pause");//程序暂停            system("cls");//刷新界面            function();//调用fuction()函数进入功能界面        }else        {            //密码错误达到三次            if(3 == i)            {                printf("\n\t\t\t\t密码输入错误3次!请重新选择!\n\n");                printf("\t\t\t\t");                system("pause");            }else            {                printf("\n\t\t\t\t密码输入错误%d次!请重新输入!\n",i);            }        }    }    if(4 == i)    {        system("cls");        //登录密码失败后进入登录分界面        login_Second();/    }}

//登录分界面,解决密码输入错误超过三次后void login_Second(){    printf("\t\t\t-------------------------------------\n");    printf("\t\t\t|\t    1.找回密码\t\t    |\n");    printf("\t\t\t|\t    2.重新登录\t\t    |\n");    printf("\t\t\t|\t    3.退出系统\t\t    |\n");    printf("\t\t\t-------------------------------------\n");    printf("\t\t\t\t   请选择(1-3):");

    //获取选择    int choice = 0;    scanf("%d",&choice);

    //清除缓冲区    char ch;    while((ch = getchar()) != '\n' && ch != EOF);    switch(choice)    {    case 1:        {            system("cls");//刷新界面            rebackPassword();//调用rebackPassword()函数找回密码            break;        }    case 2:        {            system("cls");            login();//调用login()函数进行登录            break;        }    case 3:        {            printf("\n\t\t\t\t");            exit(0);//退出系统        }    default:        {            printf("\n\t\t\t\t输入错误!请重新输入!\n\t\t\t\t");            system("pause");//暂停程序            system("cls");//刷新界面

            login_Second();//重新调用本函数            break;        }    }}

登录成功后进入功能选择界面。

其中包括八个功能:增,删,改,查,统计,排序,返回,退出。

源码如下

//功能界面void function(){    printf("\t\t\t-----------------------------------------\n");    printf("\t\t\t|\t欢迎使用三千学生管理系统\t|\n");    printf("\t\t\t-----------------------------------------\n");    printf("\t\t\t|\t1.添加学生信息\t\t\t|\n");    printf("\t\t\t|\t2.统计学生信息\t\t\t|\n");    printf("\t\t\t|\t3.查找学生信息\t\t\t|\n");    printf("\t\t\t|\t4.修改学生信息\t\t\t|\n");    printf("\t\t\t|\t5.删除学生信息\t\t\t|\n");    printf("\t\t\t|\t6.排序学生信息\t\t\t|\n");    printf("\t\t\t|\t7.返回上一级\t\t\t|\n");    printf("\t\t\t|\t8.退出程序\t\t\t|\n");    printf("\t\t\t-----------------------------------------\n");    printf("\t\t\t请选择功能(1-8):");

    //存储临时数据    struct student tempData={"0","0","0",0,0.0,0.0,0.0};

    //获取选择    int choice = 0;    scanf("%d",&choice);    //清除缓冲区    char ch;    while((ch = getchar()) != '\n' && ch != EOF);

    switch(choice)    {    case 1:        {            //调用addStudent()函数添加学生信息            addStudent(tempData);            printf("\n\t\t\t\t");            system("pause");//暂停程序            system("cls");//刷新界面            break;        }    case 2:        {            printf("\n\t\t\t--------------统计学生信息--------------\n");            //调用printList()函数打印所有学生信息            printList(List);            printf("\n\t\t\t\t");            system("pause");            system("cls");            break;        }    case 3:        {            //调用searchStudent()函数查找学生信息            searchStudent(tempData);            printf("\n\t\t\t\t");            system("pause");            system("cls");            break;        }    case 4:        {            //调用modifyStudent()函数修改学生信息            modifyStudent(tempData);            printf("\n\t\t\t\t");            system("pause");            system("cls");            break;        }    case 5:        {            //调用deleteStudent()函数删除学生信息            deleteStudent(tempData);            printf("\n\t\t\t\t");            system("pause");            system("cls");            break;        }    case 6:        {            //调用sortStudent()函数排序学生信息            sortStudent();            printf("\n\t\t\t\t");            system("pause");            system("cls");            break;        }    case 7:        {            system("cls");            menu();//返回主界面            break;        }    case 8:        {            printf("\n\t\t\t\t");            exit(0);//退出系统        }    default:        {            printf("\n\t\t\t\t输入错误!请重新输入!\n");            printf("\n\t\t\t\t");            system("pause");//暂停程序            system("cls");//刷新界面            break;        }    }    function();//重新调用本函数}

每一个功能的实现背后都有链表和文件在运行工作。(我将链表和文件读写的实现专门写在另一个.h文件中,在第二篇文章中将会写到。)

接下来开始一一讲解程序的功能(功能效果图不再展示)

功能一:添加学生信息

调用addStudent()函数将学生信息添加到链表中,并最终存储在文件中。

//添加学生信息void addStudent(struct student tempData){    printf("\n\t\t\t--------------添加学生信息--------------\n");    printf("\t\t\t\t学号:");    scanf("%s",tempData.id);//获取学生学号    char ch;    while((ch = getchar()) != '\n' && ch != EOF);//清除缓冲区

    printf("\t\t\t\t姓名:");    scanf("%s",tempData.name);//获取学生姓名    while((ch = getchar()) != '\n' && ch != EOF);

    printf("\t\t\t\t性别:");    scanf("%s",tempData.gender);//获取学生性别    while((ch = getchar()) != '\n' && ch != EOF);

    printf("\t\t\t\t年龄:");    scanf("%d",&tempData.age);//获取学生年龄    while((ch = getchar()) != '\n' && ch != EOF);

    printf("\t\t\t\t数学:");    scanf("%f",&tempData.math);//获取学生数学成绩    while((ch = getchar()) != '\n' && ch != EOF);

    printf("\t\t\t\t英语成绩:");    scanf("%f",&tempData.english);//获取学生英语成绩    while((ch = getchar()) != '\n' && ch != EOF);

    tempData.sumscore=tempData.math+tempData.english;//计算学生总成绩    printf("\t\t\t\t总成绩为:%.1f\n",tempData.sumscore);//打印学生总成绩

    insertnode(List,tempData);//向链表中插入学生信息    saveToFile("student.txt",List);//将链表中的学生信息保存到文件student.txt    printf("\n\t\t\t\t添加成功!\n");}

功能二:统计学生信息

调用printList()函数将链表中的全部学生信息打印到界面上。

...case 2:{    printf("\n\t\t\t--------------统计学生信息--------------\n");    //调用printList()函数打印所有学生信息    printList(List);    printf("\n\t\t\t\t");    system("pause");    system("cls");    break;}...//打印学生信息,打印函数,位于另一个.h文件中void printList(struct Node *StudentListhead){    struct Node *pmove=StudentListhead->next;

    //按格式打印    printf("\t学号\t\t姓名\t性别\t年龄\t高数成绩\t英语成绩\t成绩总和\n");

    while(pmove)//pmove为NULL时,退出循环    {        //格式化输出打印        printf("\t%-10s\t%-4s\t%-6s\t%-3d\t%.1f\t\t%.1f\t\t%.1f\n",pmove->data.id,pmove->data.name,pmove->data.gender,pmove->data.age,pmove->data.math,pmove->data.english,pmove->data.sumscore);

        //pmove指向下一个结点,以此遍历链表        pmove=pmove->next;    }    printf("\n");}

功能三:查找学生信息

方式:1.按学号查找

2.按姓名查找(缺陷:若有重名者,只能查找其中一个)

输入要查找学生的学号或姓名,与链表中的学生信息进行对比。若存在,则打印该学生信息;反之则打印“查无此人!”

//查找学生信息void searchStudent(struct student tempData){    printf("\n\t\t\t---------------查找学生信息--------------\n\n");    printf("\t\t\t\t1.按学号查找\t\t\t\t\n");    printf("\t\t\t\t2.按姓名查找\t\t\t\t\n");    printf("\t\t\t\t请选择功能:");

    //获取选择    int choice = 0;    scanf("%d",&choice);    //清除缓冲区    char ch;    while((ch = getchar()) != '\n' && ch != EOF);

    switch(choice)    {    case 1:        {            printf("\n\t\t\t请输入要查找的学生的学号:");            scanf("%s",tempData.id);//获取学生学号            while((ch= getchar()) != '\n' && ch != EOF);//清除缓冲区

            //searchnode_byid()返回值为结点指针或NULL            //返回NULL,说明未查到            if(searchnode_byid(List,tempData.id) == NULL)            {                //若链表中不存在该学号                printf("\n\t\t\t\t查无此人!\n");             } else            {                //打印查找的学生信息                printsearch(searchnode_byid(List,tempData.id));            }            break;        }    case 2:        {            printf("\n\t\t\t请输入要查找的学生的姓名:");            scanf("%s",tempData.name);//获取学生姓名            while((ch = getchar()) != '\n' && ch != EOF);//清除缓冲区

            //searchnode_byname()返回值为结点指针或NULL            //返回NULL,说明未查到            if(searchnode_byname(List,tempData.name) == NULL)            {                //若链表中不存在该姓名                printf("\n\t\t\t\t查无此人!\n");            }else            {                //打印查找的学生信息                printsearch(searchnode_byname(List,tempData.name));            }            break;        }    default:        {            printf("\n\t\t\t\t输入错误!请重新输入!\n");            break;        }    }}

功能四:修改学生信息

方式:1.按学号查找修改

2.按姓名查找修改(缺陷:若有重名者,只能查找其中一个)

调用modifyStudent()函数将在链表中查找到学生信息进行修改,再重新保存到文件中。

//修改学生信息void modifyStudent(struct student tempData){    printf("\n\t\t\t--------修改学生信息--------\t\t\t\t\n");    //先调用printList()函数打印全部学生信息    printList(List);    printf("\t\t\t\t1.按学号修改\t\t\t\t\n");    printf("\t\t\t\t2.按姓名修改\t\t\t\t\n");    printf("\t\t\t\t请选择功能:");

    //获取选择    int choice = 0;    scanf("%d",&choice);    //清除缓冲区    char ch;    while((ch = getchar()) != '\n' && ch != EOF);

    switch(choice)    {    case 1:        {            printf("\n\t\t\t请输入要修改的学生的学号:");

            scanf("%s",tempData.id);//获取学生的学号            while((ch = getchar()) != '\n' && ch != EOF);

            if(searchnode_byid(List,tempData.id) == NULL)            {                //若链表中不存在该学号                printf("\n\t\t\t\t查无此人!\n");            }else            {                //修改学生信息的分函数                modifyStudent_Second(tempData);            }            break;        }    case 2:        {            printf("\n\t\t\t\t请输入要修改的学生的姓名:");            scanf("%s",tempData.name);//获取学生姓名            while((ch = getchar()) != '\n' && ch != EOF);

            if(searchnode_byname(List,tempData.name)==NULL)            {                //若链表中不存在该姓名                printf("\n\t\t\t\t查无此人!\n");           }else            {                modifyStudent_Second(tempData);            }            break;        }    default:        {            printf("\t\t\t\t输入错误!请重新输入!\n");            function();//进入功能界面            break;        }    }}void modifyStudent_Second(struct student tempData){    //重新定义一个指针并指向要修改的学生的信息的结点    struct Node *curnode=searchnode_byid(List,tempData.id);    //调用printsearch()函数打印要修改学生的信息    printsearch(searchnode_byid(List,tempData.id));

    printf("\n");    printf("\t\t\t\t1.学号\t\t\t\t\n");    printf("\t\t\t\t2.姓名\t\t\t\t\n");    printf("\t\t\t\t3.性别\t\t\t\t\n");    printf("\t\t\t\t4.年龄\t\t\t\t\n");    printf("\t\t\t\t5.高数成绩\t\t\t\t\n");    printf("\t\t\t\t6.英语成绩\t\t\t\t\n");    printf("\t\t\t\t请选择要修改的内容:");

    //获取选择    int choice = 0;    scanf("%d",&choice);    //清除缓冲区    char ch;    while((ch = getchar()) != '\n' && ch != EOF);

    switch(choice)    {    case 1:        {            printf("\n\t\t\t\t修改前的学号:%s\n",curnode->data.id);            printf("\t\t\t\t请输入修改后的学号:");

            scanf("%s",curnode->data.id);            while((ch = getchar()) != '\n' && ch != EOF);

            //将修改后的信息保存到文件            saveToFile("student.txt",List);            printf("\n\t\t\t\t修改成功!\n");            break;        }    case 2:        {            printf("\n\t\t\t\t修改前的姓名:%s\n",curnode->data.name);            printf("\t\t\t\t请输入修改后的姓名:");

            scanf("%s",curnode->data.name);            while((ch = getchar()) != '\n' && ch != EOF);

            saveToFile("student.txt",List);            printf("\n\t\t\t\t修改成功!\n");            break;        }    case 3:        {            printf("\n\t\t\t\t修改前的性别:%s\n",curnode->data.gender);            printf("\t\t\t\t请输入修改后的性别:");

            scanf("%s",curnode->data.gender);            while((ch= getchar()) != '\n' && ch != EOF);

            saveToFile("student.txt",List);            printf("\n\t\t\t\t修改成功!\n");            break;        }    case 4:        {            printf("\n\t\t\t\t修改前的年龄:%d\n",curnode->data.age);            printf("\t\t\t\t请输入修改后的年龄:");

            scanf("%d",&curnode->data.age);            while((ch = getchar()) != '\n' && ch != EOF);

            saveToFile("student.txt",List);            printf("\n\t\t\t\t修改成功!\n");            break;        }    case 5:        {            printf("\n\t\t\t\t修改前的高数成绩:%.1f\n",curnode->data.math);            printf("\t\t\t\t请输入修改后的高数成绩:");

            scanf("%f",&curnode->data.math);            while((ch = getchar()) != '\n' && ch != EOF);            //计算总成绩            curnode->data.sumscore=curnode->data.math+curnode->data.english;

            saveToFile("student.txt",List);            printf("\n\t\t\t\t修改成功!\n");            break;        }    case 6:        {            printf("\n\t\t\t\t修改前的英语成绩:%.1f\n",curnode->data.english);            printf("\t\t\t\t请输入修改后的英语成绩:");

            scanf("%f",&curnode->data.english);            while((ch = getchar()) != '\n' && ch != EOF);

            curnode->data.sumscore=curnode->data.math+curnode->data.english;

            saveToFile("student.txt",List);            printf("\n\t\t\t\t修改成功!\n");            break;        }    default:        {            printf("\n\t\t\t\t输入错误!请重新输入!\n");            break;        }    }}

功能五:删除学生信息

方式:1.按学号查找删除

2.按姓名查找删除(缺陷:若有重名者,只能查找其中一个)

调用deleteStudent()函数将在链表中查找到的学生信息进行删除,再重新保存到文件。

//删除学生信息void deleteStudent(struct student tempData){    printf("\n\t\t\t--------------删除学生信息---------------\n");    //调用printList()函数打印全部学生信息    printList(List);    printf("\t\t\t\t1.按学号删除\t\t\t\t\n");    printf("\t\t\t\t2.按姓名删除\t\t\t\t\n");    printf("\t\t\t\t请选择功能:");

    //获取选择    int choice = 0;    scanf("%d",&choice);    //清除缓冲区    char ch;    while((ch = getchar()) != '\n' && ch != EOF);

    switch(choice)    {    case 1:        {            printf("\n\t\t\t请输入要删除的学生的学号:");

            scanf("%s",tempData.id);            while((ch = getchar()) != '\n' && ch != EOF);

            //从链表中删除学生信息            Deletenode_byid(List,tempData.id);            //将剩余信息保存到文件            saveToFile("student.txt",List);            break;        }    case 2:        {            printf("\n\t\t\t请输入要删除的学生的姓名:");

            scanf("%s",tempData.name);            while((ch = getchar()) != '\n' && ch != EOF);

            Deletenode_byname(List,tempData.name);            saveToFile("student.txt",List);            break;        }    default:        {            printf("\n\t\t\t\t输入错误!请重新输入!\n");            break;        }    }}

功能六:排序学生信息

方式:1.根据学号排序(从低到高)

2.根据数学成绩排序(从高到低)

3.根据英语成绩排序(从高到低)

4.根据总成绩排序(从高到低)

调用sortStudent()函数按照所选项将链表中的学生信息排序,并打印到界面上。

//排序void sortStudent(){    printf("\n\t\t\t---------------排序学生信息--------------\n");    printf("\t\t\t\t1.根据学号排序(从低到高)\n");    printf("\t\t\t\t2.根据数学成绩排序(从高到低)\n");    printf("\t\t\t\t3.根据英语成绩排序(从高到低)\n");    printf("\t\t\t\t4.根据总成绩排序(从高到低)\n");    printf("\t\t\t\t请选择功能(1-4):");

    //获取选择    int choice = 0;    scanf("%d",&choice);    //清除缓冲区    char ch;    while((ch = getchar()) != '\n' && ch != EOF);

    switch(choice)    {    case 1:        {            //按学号从低到高排序链表            sortList_byid(List);            //将排序后的信息保存到文件            saveToFile("student.txt",List);            //打印链表中的信息            printList(List);            break;        }    case 2:        {            //按数学成绩从高到低排序链表            sortList_bymath(List);            printList(List);            break;        }    case 3:        {            //按英语成绩从高到低排序链表            sortList_byenglish(List);            printList(List);            break;        }    case 4:        {            //按总成绩从高到低排序链表            sortList_bysumscore(List);            printList(List);            break;        }    default:        {            printf("\n\t\t\t\t输入错误!请重新输入!\n");            break;        }    }}

功能七:返回上一级

调用menu()函数返回主界面

void function(){    ...    case 7:        {            system("cls");            menu();//返回主界面            break;        }    ...}

功能八:退出程序

void function(){    ...    case 8:        {            printf("\n\t\t\t\t");            exit(0);//退出系统        }    ...}

最后main()函数

//主函数int main(){    //设置控制台标题,颜色,尺寸    system("title 学生信息管理系统");    system("color F0");    system("mode con cols=90 lines=30");

    //创造一个链表,存储学生信息    List=creatList();

    //读取student.txt文件信息到链表中    //student.txt用于存放链表中的学生信息    readFromFile("student.txt",List);    //进入主界面    menu();

    return 0;}

以上便是程序的界面部分,相对不难,但仍有些不足,希望对你有所帮助。

作者:瑾年辰良一位热爱生活的快乐青年

"即见君子,云胡不喜?"

语言学生学籍管理系统流程图_基于C语言的学生管理系统(含文件)(一)相关推荐

  1. java快递驿站管理系统免费_基于jsp的快递物流管理系统-JavaEE实现快递物流管理系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的快递物流管理系统, 该项目可用各类java课程设计大作业中, 快递物流管理系统的系统架构分为前后台两部分, 最终实 ...

  2. java酒店入住管理系统代码_基于jsp的酒店入住管理系统-JavaEE实现酒店入住管理系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的酒店入住管理系统, 该项目可用各类java课程设计大作业中, 酒店入住管理系统的系统架构分为前后台两部分, 最终实 ...

  3. c语言双重for循环流程图_使用C语言编写程序对数据进行排序

    使用C语言编写程序对数据进行排序 C语言是一种强大的编程软件,使用十分广泛,用户众多,也是学习其他语言的基础.我作为一个C语言忠实粉丝,以一些常见的C程序来剖析C语言的格式和结构,希望能够为广大初学者 ...

  4. 基于python管理系统论文_基于Python语言的实验室管理系统的设计与实现

    论文目录 摘要第1-5页 Abstract第5-9页 第1章 绪论第9-13页 1.1 研究背景及意义第9-10页 1.2 国内外研究现状第10-11页 1.2.1 LIMS技术研究现状第10-11页 ...

  5. java一卡通管理系统实现_基于jsp的校园一卡通管理系统

    [实例简介] 校园一卡通管理系统,适合做大作业,课程设计或毕业设计 [实例截图] [核心代码] JSP校园一卡通管理系统. └── studentweb ├── WebRoot │   ├── CSS ...

  6. c语言双重for循环流程图_【C语言学习笔记系列】C语言编程狼追兔子问题代码解析!...

    问题描述 一只兔子躲进了10个环形分布的洞中的一个.狼在第一个洞中没有找到兔子,就隔一个洞,到第3个洞去找:也没有找到,就隔2个洞,到第6个洞去找:以后每次多一个洞去找兔子--这样下去,如果一直找不到 ...

  7. c语言编写订货系统,学位论文_基于c语言的仓库订货系统的仿真.doc

    学位论文_基于c语言的仓库订货系统的仿真 本科毕业论文(设计.创作) 题目: 基于C语言的仓库订货系统的仿真 学生姓名: 学号: 所在系院: 信息与通信技术系 专业: 电子信息工程 入学时间: 201 ...

  8. 用java写的教职工信息管理系统_基于Java的教师信息管理系统的设计与实现论文.doc...

    基于Java的教师信息管理系统的设计与实现论文 职场大变样社区():下载毕业设计成品 全套资料,全部50元以下 毕业设计(论文)任务书 第1页 毕业设计(论文)题目: 基于java的教师信息管理系统的 ...

  9. java员工请假系统_基于jsp的员工请假管理系统-JavaEE实现员工请假管理系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的员工请假管理系统, 该项目可用各类java课程设计大作业中, 员工请假管理系统的系统架构分为前后台两部分, 最终实 ...

最新文章

  1. 极速理解设计模式系列:23.装饰器模式(Decorator Pattern)
  2. 路由器桥接以后怎么找到_2个无线路由器之间怎样做到无缝连接?
  3. jstack和线程dump分析
  4. Linux脚本选题背景,shell实例100例《一》
  5. JZOJ 5639. 【NOI2018模拟4.8】秘密袭击
  6. 使用Chrome打开http://www.cutv.com/demo/live_test.swf页面时swf文件自动下载问题
  7. 数据的存储特殊矩阵压缩存储【数据结构F】
  8. raspberry pi_适用于Linux,Raspberry Pi和开源的游戏:年度热门读物
  9. 微型计算机技术 论文,微型计算机技术课程设计论文报告微机交通灯控制系统_毕业论文.docx...
  10. 计算机通过逻辑电路实现运算,计算机组成与体系结构数据表示与运算算法和逻辑电路实现.ppt...
  11. 《Python机器学习——预测分析核心算法》——2.2 分类问题:用声纳发现未爆炸的水雷...
  12. C++中char[]转string
  13. Python基础入门:函数--阿里云天池
  14. EasyExcel注解方式校验数据行
  15. c++ 将行列式化为上三角行列式,并求值。
  16. pitch yaw roll 最直观的解释
  17. 用科技演绎让“非遗”焕发新生命——由《云裳中国》纪录片想到的
  18. 基于QT的商场线上购物管理系统之客户端
  19. 抖音企业号获客系统技术操作手册
  20. DateUtils 工具类:获取指定月份第一天时间,最后一天时间

热门文章

  1. JS获取用户控件中的子控件Id
  2. Teradata QA Tester 职位
  3. 域迁移(降级)注意事项
  4. 操作系统的初始化流程简图
  5. 部标JT1078协议RTP包解析
  6. PCL中PFH、FPFH理论
  7. ACE入门---很好的文章
  8. shell awk sed tr grep 语法汇总
  9. 神经风格迁移(Neural Style Transfer)程序实现(Keras)
  10. html文档中的元数据,javascript – 如何使用pdf.js从pdf文档中获取元数据