千家信息网

c/c++如何实现交换机后台管理之端口管理

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章主要介绍了c/c++如何实现交换机后台管理之端口管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。10 交换机后台管理之端口管
千家信息网最后更新 2025年01月24日c/c++如何实现交换机后台管理之端口管理

这篇文章主要介绍了c/c++如何实现交换机后台管理之端口管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

10 交换机后台管理之端口管理

项目需求

交换机


端口:

1)端口名称
2)端口状态
3)端口的IP地址
4)端口类型
WAN
LAN

项目实现

1.添加菜单框架

#include #include #include FILE *file; void init(void) {    //打开文件    file = fopen("users.txt", "r");       if (!file) {   //等效于 file == NULL          printf("文件打开失败");        //return 1;        exit(1);    }}void login(void) {    char name[32];    char password[16];    char line[128];    char name_tmp[32];    char password_tmp[16];    char *ret;    //输入用户名和密码    while (1) {        system("cls");        // 输入用户名和密码        printf("请输入用户名:");        scanf("%s", name);        printf("请输入密码:");        scanf("%s", password);        //从文件中读取账号,并进行判断!        while (1) {            //读一行            ret = fgets(line, sizeof(line), file); //line:  "admin 123456\n"            if (!ret) {                break;            }                       sscanf(line, "%s %s", name_tmp, password_tmp);            if (!strcmp(name, name_tmp) && !strcmp(password, password_tmp)) {                break;            }        }        if (ret) {  //用户名和密码匹配成功            break;        } else {            printf("用户名或密码错误!\n");              system("pause");            system("cls");            fseek(file, 0, SEEK_SET); //把文件内部的位置指针设置到文件头        }    }}void create_user(void) {    system("cls");    printf("\n\n---创建账号---\n\n");    printf("待实现...\n\n");    printf("\n\n按任意键返回主菜单");    fflush(stdin);    getchar();}void ip_admin(void) {    system("cls");    printf("\n\n---IP管理---\n\n");    printf("待实现...\n\n");    printf("\n\n按任意键返回主菜单");    fflush(stdin);    getchar();}void logout(void) {    system("cls");    fclose(file);    exit(0);}void input_error(void) {    system("cls");    printf("\n\n输入错误!\n\n");    printf("\n\n按任意键后,请重新输入\n\n");    fflush(stdin);    getchar();}void show_memu(void) {    system("cls");    // 打印功能菜单    printf("---交换机后台管理---\n");    printf("1. 创建账号\n");    printf("2. IP管理\n");    printf("3. 退出\n");    printf("4. 端口管理\n");    printf("请选择: ");}void show_ports(void) {    system("cls");    printf("---端口状态---\n");    printf("待实现.\n");    system("pause");}void set_ports(void) {    system("cls");    printf("---端口设置---\n");    printf("待实现.\n");    system("pause");}void port_admin(void) {    char n;    while(1) {        system("cls");        printf("1. 查看端口\n");        printf("2. 设置端口\n");        printf("3. 返回主菜单\n");        printf("请选择: ");        fflush(stdin);        scanf("%c", &n);        if (n == '1') {            show_ports();        } else if (n == '2') {            set_ports();        } else if (n == '3') {            break;        } else {            input_error();        }     }}int main(void) {    char n; //用户选择的菜单编号    init(); //初始化    login(); //登录    while (1) {        show_memu();        fflush(stdin);        scanf("%c", &n);        switch (n) {        case '1':            create_user();            break;        case '2':            ip_admin();             break;        case '3':            logout();            break;        case '4':            port_admin();            break;        default:            input_error();            break;        }    }    return 0;}

2.端口信息的表示
添加类型定义和端口变量

struct port {    char name[16];  //端口的名称    int  status; //1: 激活  0:禁用    char ip[16];  //192.168.1.5    char type[4];  //端口类型 LAN  WAN};//定义了5个端口变量struct port port1;struct port port2;struct port port3;struct port port4;struct port port5;

项目实现

void show_port(struct port port) {    printf("名称[%s]\t状态[%s]\tIP[%s]\t类型[%s]\n",         port.name,        port.status == 0 ? "禁用":"激活",        port.ip,        port.type);}void show_ports(void) {    system("cls");    printf("---端口状态---\n");    printf("PORT1:\t");    show_port(port1);    printf("PORT2:\t");    show_port(port2);    printf("PORT3:\t");    show_port(port3);    printf("PORT4:\t");    show_port(port4);    system("pause");}void set_port1(void) {    system("cls");    printf("---设置PORT1端口---\n");    printf("请输入端口名称: ");    scanf("%s", port1.name);    printf("请输入端口的状态:[0:禁止] [1:激活] ");    scanf("%d", &port1.status);    printf("请输入端口的类型:[LAN 或 WAN] ");    scanf("%s", port1.type);    printf("请输入端口的IP地址: ");    scanf("%s", port1.ip);    system("pause");}void set_port2(void) {    system("cls");    printf("---设置PORT2端口---\n");    printf("请输入端口名称: ");    scanf("%s", port2.name);    printf("请输入端口的状态:[0:禁止] [1:激活] ");    scanf("%d", &port2.status);    printf("请输入端口的类型:[LAN 或 WAN] ");    scanf("%s", port2.type);    printf("请输入端口的IP地址: ");    scanf("%s", port2.ip);}void set_port3(void) {    system("cls");    printf("---设置PORT3端口---\n");    printf("请输入端口名称: ");    scanf("%s", port3.name);    printf("请输入端口的状态:[0:禁止] [1:激活] ");    scanf("%d", &port3.status);    printf("请输入端口的类型:[LAN 或 WAN] ");    scanf("%s", port3.type);    printf("请输入端口的IP地址: ");    scanf("%s", port3.ip);}void set_port4(void) {    system("cls");    printf("---设置PORT4端口---\n");    printf("请输入端口名称: ");    scanf("%s", port4.name);    printf("请输入端口的状态:[0:禁止] [1:激活] ");    scanf("%d", &port4.status);    printf("请输入端口的类型:[LAN 或 WAN] ");    scanf("%s", port4.type);    printf("请输入端口的IP地址: ");    scanf("%s", port4.ip);}void set_port5(void) {    system("cls");    printf("---设置PORT5端口---\n");    printf("请输入端口名称: ");    scanf("%s", port5.name);    printf("请输入端口的状态:[0:禁止] [1:激活] ");    scanf("%d", &port5.status);    printf("请输入端口的类型:[LAN 或 WAN] ");    scanf("%s", port5.type);    printf("请输入端口的IP地址: ");    scanf("%s", port5.ip);}void set_ports(void) {    char n;    while(1) {        system("cls");        printf("---端口设置---\n");        printf("1. PORT1\n");        printf("2. PORT2\n");        printf("3. PORT3\n");        printf("4. PORT4\n");        printf("5. PORT5\n");        printf("6. 返回\n");        printf("请选择: ");        fflush(stdin);        scanf("%c", &n);        switch (n) {        case '1':            set_port1();            break;        case '2':            set_port2();            break;        case '3':            set_port3();            break;        case '4':            set_port4();            break;        case '5':            set_port5();            break;        case '6':            return;        default:            input_error();            break;        }     }}

项目精讲

1.为什么要使用"结构"(结构体)
但需要表示一些复制信息时,使用单纯的数据类型很不方便。

比如:学生信息(学号,姓名,班级,电话,年龄)

2.什么是"结构"
结构,就是程序员自定义的一种"数据类型"
是使用多个基本数据类型、或者其他结构,组合而成的一种新的"数据类型"。

3.结构的定义
struct 结构名 {
成员类型 成员名;
成员类型 成员名;
};

实例:

struct  student {   char  name[16];   int   age;   char  tel[12];};
特别注意:

1)要以struct开头
2)最后要使用分号
3)各成员之间用分号隔开

4.结构的初始化

demo

#include struct student {    char name[16];    int age;};int main(void) {    struct student s1 = {        "Rock", 38    };    struct student s2 = {        .age = 100,        .name = "张三丰"    };    struct student s3;    s3.age = 40;    strcpy(s3.name, "杨过");    printf("%s, %d\n", s1.name, s1.age);    printf("%s, %d\n", s2.name, s2.age);    printf("%s, %d\n", s3.name, s3.age);    return 0;}
5.结构的使用
// 定义结构体变量// 注意:完整的类型名称是  struct  student //       而不只是studentstruct  student  s1,s2;struct  student  s3;scanf("%s",  s1.name);s1.name = 25;   s2 = s1;  //结构体变量之间可以直接赋值

使用形式:
结构体变量.成员变量
中间用 . 分隔

6.使用结构体作为函数参数

#include #include struct  student {   char  name[16];   int   age;   char  tel[12];};void work(struct student stu) {    stu.age++;    printf("%s,%d\n", stu.name, stu.age);}int main(void) {    struct student s;    strcpy(s.name, "Rock");    s.age = 38;    work(s); //结构体变量s作为函数参数,并不会改变s本身的值    printf("%s,%d\n", s.name, s.age);    return 0;}

注意:
一般不建议把结构体直接作为函数参数。
因为结构体的size比较大,直接传递,消耗性能!
解决方案(使用指针)

7.全局变量、局部变量

test1.c

#include void east_travel(void);char master[16] = "女娲";void west_travel(void) {    char master[16] = "唐僧";    printf("[西游]老大是: %s\n", master);}int main(void) {    char master[16] = "如来佛祖";    printf("[main]老大是: %s\n", master);    char c;    printf("是否进入女儿国? (Y或N)\n");    fflush(stdin);    scanf("%c", &c);    if (c=='Y' || c=='y') {        char master[16] = "女王";        printf("[main-女儿国]老大是: %s\n", master);    }    printf("[main]老大是: %s\n", master);    east_travel();    return 0;}

test2.c

#include extern char master[16];  //不能初始化!表示这个全局变量是在其他文件中定义的!void east_travel(void) {    printf("[东游]老大是: %s\n", master);}

gcc test1.c test2.c

项目练习

练习1

独立实现项目10

练习2

1.定义一个结构,用来描述一个游戏角色的基本信息。
该角色信息有,名称,性别,武力值
并让用户输入1个角色。
运行效果如下:

参考代码:

#include struct role {    char name[32];    char sex; //'M':男  'W':女     int power; };int main(void) {    struct role  r1, r2;    printf("请输入角色的名称: ");    scanf("%s", r1.name);    fflush(stdin);    printf("请输入角色的性别: ");    scanf("%c", &r1.sex);    printf("请输入角色的武力值: ");    scanf("%d", &r1.power);    printf("\n===角色设定===\n");    printf("姓名: %s\n", r1.name);    printf("性别:%c\n", r1.sex);    printf("武力值:%d\n", r1.power);    return 0;}

感谢你能够认真阅读完这篇文章,希望小编分享的"c/c++如何实现交换机后台管理之端口管理"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0