C超市商品信息查询系统

news2024/11/23 15:27:30

一、系统界面介绍

1. 超市商品信息查询系统

1、显示商品信息,包括:商品名称、商品种类(休闲食品、奶品水饮、生鲜水果)、商品价格、商品保质期、商品生产日期;
在这里插入图片描述

2、从文件中导入数据、显示、排序、查询的功能。(由于顾客没有更改信息的需要所以没设置修改、添加等功能,注:必须先导入数据);
在这里插入图片描述

3、系统提供按照不同方式查询的功能,如按照商品名称或类型查询;
在这里插入图片描述

4、系统能将商品信息排序之后顺序输出(排序可以有多种选择);
在这里插入图片描述

2.超市商品信息管理系统

1、显示商品信息(同查询系统)
2、首先输入密码,若输入错误3次则退出系统。密码存储在文件中并可在进入系统后修改密码(密码为字符串)
在这里插入图片描述

3、从文件中导入数据、显示、添加、修改、删除、查询、排序、导出、修改密码;(注:必须先导入)
在这里插入图片描述

4.信息显示

在这里插入图片描述

5.信息添加:

在这里插入图片描述

6.信息删除:

在这里插入图片描述

7.信息修改(按名称):

在这里插入图片描述

8.信息查询(可根据不同需要进行不同查询):

在这里插入图片描述

9.信息排序(可按需要排序):

在这里插入图片描述

10.修改登录密码(若两次输入新密码不相同则返回主界面,修改成功后密码保存至文件中):

在这里插入图片描述

11.退出系统

在这里插入图片描述

二、程序源代码介绍:

1.源代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<windows.h>
typedef struct _goods//商品结构体
    {
       char name[20];
       int category;
       float prize;
       int shelf_life;
       char time[15];
    }goods;
    goods b[20];

int N;
int switch_num;
int return_num;
char password1[20];
int num_star;


    int input(goods b[],int N);//从系统中导入数据
    void display(goods b[],int N);//显示信息
    void change(goods b[],int N);//修改信息
    void _search(goods b[],int N);//查找信息
    int  _insert(goods b[],int N);//添加信息
    int  _delete(goods b[],int N);//删除信息
    void _sort(goods b[],int N);//排序信息
    void save(goods b[],int N);//保存信息
    void menu_customer();//顾客系统界面
    void menu_manager();//管理员系统界面
    void system_manager();//顾客系统
    void password();//密码函数
    void modify_password();//更改密码函数

    //导入函数已完善
    int input(goods b[],int N)
    {
        N=0;
        FILE *fp;//打开文件
        fp=fopen("data.txt","r+");
        if(fp==NULL)//判断文件是否为空
        {
              printf("can't open this file");
              exit(0);
        }
        while(!feof(fp))//导入
        {
             fscanf(fp,"%s%d%f%d%s",b[N].name,&b[N].category,&b[N].prize,&b[N].shelf_life,b[N].time);
             N++;

        }
        Sleep(100);
        printf("恭");
        Sleep(50);
        printf("喜");
        Sleep(50);
        printf("您");
        Sleep(50);
        printf("导");
        Sleep(50);
        printf("入");
        Sleep(50);
        printf("成");
        Sleep(50);
        printf("功");
        Sleep(50);
        fclose(fp);

        return N-1;//商品数目
     }

    //显示函数已完善
     void display(goods b[],int N)
     {
        int i;
        for(num_star=0;num_star<18;num_star++)//显示*符号
        {
            printf("*");
            Sleep(5);
        }
        printf("商");
        Sleep(50);
        printf("品");
        Sleep(50);
        printf("信");
        Sleep(50);
        printf("息");
        Sleep(50);
        printf("如");
        Sleep(50);
        printf("下");
        Sleep(50);
        for(num_star=0;num_star<18;num_star++){
            printf("*");
            Sleep(5);
        }
        printf("\n\n");
        printf("商品名称          类别  价格    保质期  生产日期\n");
        for(i=0;i<N;i++){
        printf("%-8s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);//显示信息
        }
        printf("\n【注;类别1.休闲食品    2.奶品水饮   3.生鲜水果】\n\n");
        for(num_star=0;num_star<48;num_star++)//显示*符号
        {
            printf("*");
            Sleep(5);
        }
        printf("\n\n");
        printf("按1后回车返回");
        scanf("%d",&return_num);
        if(return_num==1)//返回主界面
        {
            system("cls");
            return;
        }


     }
     //修改函数已完善
     void change(goods b[],int N)
     {
        int i,n;
        char a[10];
        for(num_star=0;num_star<18;num_star++)
        {
            printf("*");
            Sleep(10);
        }
        printf("欢");
        Sleep(50);
        printf("迎");
        Sleep(50);
        printf("进");
        Sleep(50);
        printf("入");
        Sleep(50);
        printf("修");
        Sleep(50);
        printf("改");
        Sleep(50);
        printf("系");
        Sleep(50);
        printf("统");
        Sleep(50);
        for(num_star=0;num_star<18;num_star++){
            printf("*");
            Sleep(5);
        }
        printf("\n\n");
        printf("-1-请输入需要修改的商品的名称\n   ");//需要修改的名称
        loop:
        scanf("%s",a);
        for(i=0;i<N;i++)//比较是哪个商品
        {
            if(!strcmp(b[i].name,a))
                break;
        }
        if(i==N)
        {
            printf("\n-1-对不起找不到该商品,请重新输入\n   ");
            goto loop;
        }
        else
            printf("\n-2-您需要的修改的商品信息如下:\n   (1)商品名称(2)类别 (3)价格  (4)保质期 (5)生产日期\n   %-9s\t%-3d\t%.2f\t%5d\t%10s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);//输出并左右对齐
            printf("\n-3-请输入需要修改的商品信息编号\n   ");
            loop2:
            scanf("%d",&n);
            switch(n)//选择修改什么信息
            {
            case 1:
                printf("\n-4-请输入该商品的名称\n   ");
                scanf("%s",b[i].name);
                break;
            case 2:
                printf("\n-4-请选择商品类别*1.休闲食品2.奶品水饮3.生鲜水果\n   ");
                scanf("%d",&b[i].category);
                break;
            case 3:
                printf("\n-4-请输入该商品的价格\n   ");
                scanf("%f",&b[i].prize);
                break;
            case 4:
                printf("\n-4-请输入该商品的保质期*按月计(即输入1-12之间的整数)\n   ");
                scanf("%d",&b[i].shelf_life);
                break;
            case 5:
                printf("\n-4-请输入该商品的生产日期*例如20170920\n   ");
                scanf("%s",b[i].time);
                break;
            default:
                printf("\n-3-你输入的信息有误请重新输入:\n   ");
                goto loop2;

            }
            printf("\n-5-修改成功\n\n");
            for(num_star=0;num_star<52;num_star++)
            {
                printf("*");
                Sleep(5);
            }
            printf("\n\n");
            printf("按1后回车返回");
            scanf("%d",&return_num);//返回主界面
            if(return_num==1)
            {
            system("cls");
            return;
            }
     }
     //搜索程序已完善
     void _search(goods b[],int N)
     {
        int i,n;
        for(num_star=0;num_star<17;num_star++)
        {
            printf("*");
            Sleep(5);
        }
        printf("欢");
        Sleep(50);
        printf("迎");
        Sleep(50);
        printf("进");
        Sleep(50);
        printf("入");
        Sleep(50);
        printf("搜");
        Sleep(50);
        printf("索");
        Sleep(50);
        printf("系");
        Sleep(50);
        printf("统");
        Sleep(50);
        for(num_star=0;num_star<17;num_star++)
        {
            printf("*");
            Sleep(5);
        }
        printf("\n\n");
           printf("-1-请输入需要查询的内容*1.按名称查询2.按类型查询\n   ");
           scanf("%d",&switch_num);
           switch(switch_num)//查询内容
           {
                case 1:
                    char a[10];
                    loop:
                    printf("\n-2-请输入需要查询的商品的名称:\n   ");
                    scanf("%s",a);
                    for(i=0;i<N;i++)//逐个比较商品名称
                    {
                        if(!strcmp(b[i].name,a))
                        {
                            break;
                        }

                    }
                    if(i==N)
                        {
                        printf("\n-2-对不起找不到该商品*1.返回主菜单2.继续查询\n   ");
                        scanf("%d",&switch_num);
                        if(switch_num==1)
                        {
                            goto loop7;
                        }
                        else goto loop;
                    }
                    else
                    {
                    printf("\n-3-您查询的商品信息如下:\n   商品名称       类别  价格    保质期  生产日期\n   %-7s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);
                    break;
                    }
                case 2:
                    int kind,_count=0;
                    printf("\n-2-请输入商品的类别*1.休闲食品2.奶品水饮3.生鲜水果\n   ");
                    loop3:
                    scanf("%d",&kind);
                    printf("\n-3-您查询的商品信息如下:\n   商品名称       类别  价格    保质期  生产日期\n");
                    for(i=0;i<N;i++)
                        {
                        if(b[i].category==kind)
                        {
                            printf("   %-7s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);
                            _count++;
                        }
                    }
                    if(_count==0)//记录类别商品的数量
                    {
                    Sleep(100);
                    printf("\n-3-对不起找不到该类别信息请重新输入\n   ");
                    goto loop3;
                    }

           }
                    loop7:
                    printf("\n");
                    for(num_star=0;num_star<50;num_star++)
                    {
                    printf("*");
                    Sleep(5);
                    }
                    printf("\n\n");
                    printf("按1后回车返回");
                    scanf("%d",&return_num);
                    if(return_num==1)
                    {
                    system("cls");
                    return;
                    }
     }
     //添加函数已完善
     int _insert(goods b[],int N)
     {
         int n,i=1,t;
        for(num_star=0;num_star<17;num_star++)
        {
            printf("*");
            Sleep(5);
        }
        printf("欢");
        Sleep(50);
        printf("迎");
        Sleep(50);
        printf("进");
        Sleep(50);
        printf("入");
        Sleep(50);
        printf("添");
        Sleep(50);
        printf("加");
        Sleep(50);
        printf("系");
        Sleep(50);
        printf("统");
        Sleep(50);
        for(num_star=0;num_star<17;num_star++)
        {
            printf("*");
            Sleep(5);
        }
         printf("\n\n-1-请输入需要添加的商品的个数:\n   ");
         scanf("%d",&n);
         t=n;
         while(n)
         {
            printf("\n-%d-输入第%d条商品信息:\n",i+1,i);
            printf("   1.名称:");scanf("%s",b[N+i-1].name);
            printf("\n   2.类别*1.休闲食品2.奶品水饮3.生鲜水果:");scanf("%d",&b[N+i-1].category);
            printf("\n   3.价格:");scanf("%f",&b[N+i-1].prize);
            printf("\n   4.保质期*按月计(即输入1-12之间的整数):");scanf("%d",&b[N+i-1].shelf_life);
            printf("\n   5.生产日期*例如20170920:");scanf("%s",b[N+i-1].time);
            n--;
            i++;
         }
         printf("\n-%d-添加成功\n\n",i+1);
         for(num_star=0;num_star<50;num_star++)
                    {
                    printf("*");
                    Sleep(10);
                    }
        printf("\n\n");
        printf("按1后回车返回");
        scanf("%d",&return_num);
        if(return_num==1)
        {
            system("cls");
            return N+t;
        }
     }
     //删除函数已完善
     int _delete(goods b[],int N)
     {
        int i,q;
        char c[10];
        for(num_star=0;num_star<16;num_star++)
        {
            printf("*");
            Sleep(5);
        }
        printf("欢");
        Sleep(50);
        printf("迎");
        Sleep(50);
        printf("进");
        Sleep(50);
        printf("入");
        Sleep(50);
        printf("删");
        Sleep(50);
        printf("除");
        Sleep(50);
        printf("系");
        Sleep(50);
        printf("统");
        Sleep(50);
        for(num_star=0;num_star<16;num_star++)
        {
            printf("*");
            Sleep(10);
        }
        printf("\n\n-1-请输入需要删除的商品的名称\n   ");
        loop4:
        scanf("%s",c);
        for(i=0;i<N;i++)//寻找商品信息
        {
            if(!strcmp(b[i].name,c))
                break;
        }
        if(i==N)
        {
            printf("\n-1-对不起找不到该商品,请重新输入\n   ");
            goto loop4;
        }
        else
            printf("\n-1-您删除的商品信息如下:\n   商品名称       类别  价格    保质期  生产日期\n   %-7s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);
            printf("\n-2-确认删除?*1.确认2.取消\n   ");
            loop5:
            scanf("%d",&q);
            if(q!=2&&q!=1)
            {
                printf("错误请重新输入");
                goto loop5;
            }
            else if(q==1)
            {
                while(i<N-1)
                {
                    b[i]=b[i+1];
                    i++;
                }
                printf("\n-3-删除成功\n\n");
            for(num_star=0;num_star<48;num_star++)
        {
            printf("*");
            Sleep(5);
        }
        printf("\n\n");
                printf("按1后回车返回");
                scanf("%d",&return_num);
                if(return_num==1)
        {
                system("cls");
                return N-1;
        }

            }
            else
            printf("\n");
            for(num_star=0;num_star<50;num_star++){
                printf("*");
                Sleep(5);
            }
            printf("\n\n\n");
            printf("按1后回车返回");
            scanf("%d",&return_num);
            if(return_num==1)
            {
            system("cls");
            return N;
            }


     }
     //保存信息已完善
     void save(goods b[],int N)
     {
            int i;
            FILE *point;
            point=fopen("data.txt","w");
            if(point==NULL)
            {
                printf("can't find the file");
                exit(0);
            }
            for(i=0;i<N;i++)
            fprintf(point,"%-8s\t%4d\t%.2f\t%4d\t%4s\n",b[i].name,b[i].category,b[i].prize,b[i].shelf_life,b[i].time);
            printf("恭");
            Sleep(50);
            printf("喜");
            Sleep(50);
            printf("您");
            Sleep(50);
            printf("导");
            Sleep(50);
            printf("入");
            Sleep(50);
            printf("成");
            Sleep(50);
            printf("功");
            Sleep(50);
            fclose(point);
     }
     //排序函数已完善
     void _sort(goods b[],int N)
     {
            goods temp;
            int n,i,j;
        for(num_star=0;num_star<16;num_star++)
        {
            printf("*");
            Sleep(5);
        }
        printf("欢");
        Sleep(50);
        printf("迎");
        Sleep(50);
        printf("进");
        Sleep(50);
        printf("入");
        Sleep(50);
        printf("排");
        Sleep(50);
        printf("序");
        Sleep(50);
        printf("系");
        Sleep(50);
        printf("统");
        Sleep(50);
        for(num_star=0;num_star<16;num_star++)
        {
            printf("*");
            Sleep(5);
        }
            printf("\n\n-1-请问您需要按什么排序【1价格        2生产日期】\n   ");//选择排序类型
            scanf("%d",&switch_num);
            switch(switch_num)
            {
            case 1:
                printf("\n-2-请选择排序类型【1.价格从高到低排序2.从低到高】\n   ");
                loop5:
                scanf("%d",&switch_num);
                if(switch_num==1)//降序排列
                    {
                    for(i=0;i<N-1;i++)
                    {
                        for(j=0;j<N-1-i;j++)
                        {
                            if(b[j].prize<b[j+1].prize)
                            {
                                    temp=b[j];
                                    b[j]=b[j+1];
                                    b[j+1]=temp;
                            }
                        }

                    }
                }
                else if(switch_num==2)//升序排列
                    {
                    for(i=0;i<N-1;i++)
                    {
                        for(j=0;j<N-1-i;j++)
                        {
                            if(b[j].prize>b[j+1].prize)
                            {
                                    temp=b[j];
                                    b[j]=b[j+1];
                                    b[j+1]=temp;
                            }
                        }
                    }
                }
                else{
                    printf("输入错误请重新输入:\n");
                    goto loop5;
                }
                break;


            case 2:
                {
                printf("\n-2-请选择排序类型【1.生产日期从早到晚2.从晚到早】\n   ");
                loop6:
                scanf("%d",&switch_num);
                if(switch_num==1)//升序排列
                    {
                    for(i=0;i<N-1;i++)
                    {
                        for(j=0;j<N-1-i;j++)
                        {
                            if(strcmp(b[j].time,b[j+1].time)>0)
                            {
                                    temp=b[j];
                                    b[j]=b[j+1];
                                    b[j+1]=temp;

                            }
                        }
                    }
                }

2.修改密码系统功能

我们参照日常生活中密码功能,密码为字符串,保存在password的文件中,若修改密码在管理员系统的修改密码程序下进行,修改过程中两次输入的新密码需一致才能成功,修改完成的密码保存在文件中。另外,我们将输入密码错误上限设为三次,输错三次自动退出系统,和现实生活很相似。

3.进入系统的渐进画面

简单的静态界面十分枯燥,所以我们用Sleep和system(“cls”)完成了进入系统的渐进画面。
Sleep(1000);
system(“cls”);
printf(“请稍等.”);
Sleep(200);
system(“cls”);
printf(“请稍等…”);
Sleep(200);
system(“cls”);
printf(“请稍等…”);
Sleep(700);
system(“cls”);
printf(“欢”);
Sleep(50);
printf(“迎”);
Sleep(50);
printf(“进”);
Sleep(50);
printf(“入”);
Sleep(50);
printf(“密”);
Sleep(50);
printf(“码”);
Sleep(50);
printf(“修”);
Sleep(50);
printf(“改”);
Sleep(50);
printf(“系”);
Sleep(50);
printf(“统”);
Sleep(50);

4.简洁明了的交互画面

我们在每个单独的功能界面通过序号的使用使界面更加简洁

我们在界面的顶部和底部都使用了大量的*使得界面凸显出强烈的层次感,也给使用者更加舒适的使用环境。

五、联系与交流

q:969060742 文档、完整代码、程序资源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1069454.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Javascript笔记 rest VS spread

1 rest 2 spread 3 二者区别 在 JavaScript 中&#xff0c;spread 操作符 ... 和 rest 参数都使用三个点 ... 作为前缀&#xff0c;但它们在使用上有一些区别&#xff0c;主要体现在它们的作用和使用场景上。 Spread 操作符 ... 作用&#xff1a; "展开"数组或对象的…

分类预测 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络数据分类预测

分类预测 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络数据分类预测 目录 分类预测 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现SSA-CNN麻雀算法优化卷积神经网络数据分类预测&#xff0c;多特…

2023年中国家用智能微投市场销售概况分析:家用智能微投销量为727万台,销售额为131亿元[图]

随着中国主机游戏市场的开放、电影市场的逐步繁荣&#xff0c;大屏幕带来的体验远高于电视&#xff0c;智能微投设备将成为主机游戏玩家、电影爱好者的选择。2022年&#xff0c;我国家用智能微投销量为727万台&#xff0c;销售额为131亿元&#xff1b;预计2023年家用智能微投行…

问题:remote: HTTP Basic: Access denied

参看文章&#xff1a;https://baijiahao.baidu.com/s?id1740126019873950482&wfrspider&forpc 解决方法一 (最有效) 输入&#xff1a;git config --system --unset credential.helper 再次进行 Git 操作&#xff0c;输入正确的用户名&#xff0c;密码即可。

免费使用,媲美Midjourney!微软在Bing Chat等提供—DALL-E 3

微软在官网宣布&#xff0c;将OpenAI最新模型DALL-E 3集成在Bing Chat和Bing Image Create中&#xff0c;并免费提供给用户使用。 据悉&#xff0c;DALL-E 3是一款类Midjourney产品&#xff0c;通过文本就能生成二次元、3D、朋克、涂鸦、素描、黑白、极简、印象派、位面像素等…

【Phoenix】在Kerberos认证下使用JDBC连接Phoenix 和 Phoenix各数据类型测试表创建

本案例使用的是CDH集群。 phoenix语法 一、Phoenix连接sqlline # 先检查一下kerberos cache是否过期了。 klist# 使用Phoenix的sqlline连接集群 sqlline.py zkhost1,zkhost2,zkhost3:2181二、sqlline中创建测试表 -- 查看帮助 !help-- 查看所有表 !tables-- 创建schema CRE…

IS-IS

二、IS-IS中的DIS与OSPF中的DR Level-1和Level-2的DIS是分别选举的&#xff0c;用户可以为不同级别的DIS选举设置不同的优先级。DIS的选举规则如下&#xff1a;DIS优先级数值最大的被选为DIS。如果优先级数值最大的路由器有多台&#xff0c;则其中MAC地址最大的路由器会成为DI…

算法竞赛备赛进阶之数字三角形模型训练

目录 1.数字三角形 2.摘花生.1015 3.最低通行费 4.方格取数 在算法竞赛中&#xff0c;有时候会遇到一些图形相关的题目&#xff0c;需要运用图论相关的知识进行求解。今天我们将一起探讨一个比较常见的模型——数字三角形模型。 在数字三角形模型中&#xff0c;每个位置的…

Redis 群集模式

目录 1 Redis 群集模式 1.1 集群的作用&#xff0c;可以归纳为两点 1.2 Redis集群的数据分片 2 搭建Redis 群集模式 2.1 开启群集功能 2.2 启动redis节点 2.3 启动集群 2.4 测试群集 1 Redis 群集模式 集群&#xff0c;即Redis Cluster&#xff0c;是Redis 3.0开始引入…

Android攻城狮学鸿蒙 -- 点击事件

具体参考&#xff1a;华为官网学习地址 1、点击事件&#xff0c;界面跳转 对于一个按钮设置点击事件&#xff0c;跳转页面。但是onclick中&#xff0c;如果pages前边加上“/”&#xff0c;就没法跳转。但是开发工具加上“/”才会给出提示。不知道是不是开发工具的bug。&#…

用正则表达式验证用户名和跨域postmessage

正则验证用户名 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </hea…

redis命令学习

redis命令学习 redis的类型分为&#xff1a; string类型hash类型list类型set类型sortedset类型 string类型命令 set key value 设置值&#xff0c;key是键 value是值get key 根据键获取值setex key second value 设置值有效时间 second 是时间setnx key value 只有key不存在…

JSP旅游平台管理

本系统采用基于JAVA语言实现、架构模式选择B/S架构&#xff0c;Tomcat7.0及以上作为运行服务器支持&#xff0c;基于JAVA、JSP等主要技术和框架设计&#xff0c;idea作为开发环境&#xff0c;数据库采用MYSQL5.7以上。 开发环境&#xff1a; JDK版本&#xff1a;JDK1.8 服务器&…

【19】c++设计模式——>桥接模式

桥接模式的定义 C的桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它将抽象部分与实现部分分离&#xff0c;使得它们可以独立地变化。桥接模式的核心思想是利用组合关系代替继承关系&#xff0c;将系统划分成多个独立的、功能不同的类层次结…

Spring实例化源码解析之Custom Events下集(九)

上集从官网的角度讲解了基本的使用和源码的内容&#xff0c;没有深入的进行分析&#xff0c;本章将从源码的角度分析ApplicationEvent、ApplicationListener、ApplicationEventMulticaster这三者之间的关系。 initApplicationEventMulticaster 上一章后续部分给出了源码的含义…

数据驱动智能护理:看AI如何塑造医疗领域,为灰暗夕阳带来新的曙光

近年来&#xff0c;人工智能的应用正日益渗透到医疗领域&#xff0c;呈现出无限的潜力和前景。技术的不断进步和全球医疗挑战的不断涌现&#xff0c;使得AI成为改善医疗保健质量、提高患者生活水平的强大工具。从疾病的早期诊断到治疗计划的制定&#xff0c;再到医疗管理和患者…

IP 子网划分(VLSM)

目录 一、 为什么要划分子网 二、如何划分子网 1、划分两个子网 2、划分多个子网 一、 为什么要划分子网 假设有一个B类IP地址172.16.0.0&#xff0c;B类IP的默认子网掩码是 255.255.0.0&#xff0c;那么该网段内IP的变化范围为 172.16.0.0 ~ 172.16.255.255&#xff0c;即…

IDEA的database工具以及对比两个数据库之间的差异(比DBVisualizer和DBeaver方便)

背景 其实IDEA里有个非常好用的database工具&#xff0c;用来连数据库&#xff0c;能连的数据非常多&#xff0c;最重要的是还带有对比数据库差异的工具。 唯一有点不好就是这个是 intellij idea的ultimate edition版本才有&#xff0c;对于社区版本&#xff08;community ed…

Tomcat自启动另一种方法

Tomcat自启动另一种方法 问题&#xff1a; 不知道怎么回事&#xff0c;好几台电脑都可以开机自启动tomcat&#xff0c;正常运行项目。一样的配置一样的操作流程&#xff0c;偏偏要运行的机器开机自启动后&#xff0c;项目不能运行&#xff0c;手动重启tomcat又可以用了。网上…

【案例分享】企业常用IPSec VPN实现

【微|信|公|众|号&#xff1a;厦门微思网络】 【微思网络www.xmws.cn&#xff0c;成立于2002年&#xff0c;专业培训21年&#xff0c;思科、华为、红帽、ORACLE、VMware等厂商认证及考试&#xff0c;以及其他认证PMP、CISP、ITIL等】 组网需求 如图1所示&#xff0c;RouterA为…