c/c++如何實現交換機后臺管理之端口管理-創新互聯

這篇文章主要介紹了c/c++如何實現交換機后臺管理之端口管理,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創新互聯于2013年創立,是專業互聯網技術服務公司,擁有項目網站設計制作、成都做網站網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元范縣做網站,已為上家服務,為范縣各地企業和個人服務,聯系電話:13518219792

10 交換機后臺管理之端口管理

項目需求

交換機

c/c++如何實現交換機后臺管理之端口管理
c/c++如何實現交換機后臺管理之端口管理

端口:

1)端口名稱
2)端口狀態
3)端口的IP地址
4)端口類型
WAN
LAN

項目實現

1.添加菜單框架

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

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 <stdio.h>

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 
//       而不只是student
struct  student  s1,s2;
struct  student  s3;

scanf(“%s”,  s1.name);
s1.name = 25;   

s2 = s1;  //結構體變量之間可以直接賦值

使用形式:
結構體變量.成員變量
中間用 . 分隔

6.使用結構體作為函數參數

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

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 <stdio.h>

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 <stdio.h>

extern char master[16];  //不能初始化!表示這個全局變量是在其他文件中定義的!

void east_travel(void) {
    printf("[東游]老大是: %s\n", master);
}

gcc  test1.c  test2.c
c/c++如何實現交換機后臺管理之端口管理

項目練習

練習1

獨立實現項目10

練習2

1.定義一個結構,用來描述一個游戲角色的基本信息。
該角色信息有,名稱,性別,武力值
并讓用戶輸入1個角色。
運行效果如下:
c/c++如何實現交換機后臺管理之端口管理
參考代碼:

#include <stdio.h>

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++如何實現交換機后臺管理之端口管理”這篇文章對大家有幫助,同時也希望大家多多支持創新互聯,關注創新互聯行業資訊頻道,更多相關知識等著你來學習!

另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

分享文章:c/c++如何實現交換機后臺管理之端口管理-創新互聯
當前URL:http://m.kartarina.com/article22/cdchjc.html

成都網站建設公司_創新互聯,為您提供搜索引擎優化定制網站營銷型網站建設微信小程序網站策劃外貿網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站優化排名
主站蜘蛛池模板: 日韩人妻无码精品久久久不卡| 无码精品人妻一区二区三区人妻斩| 免费无码又爽又刺激网站直播| 18禁成年无码免费网站无遮挡| 日韩精品中文字幕无码专区| 国产精品一级毛片无码视频| 久久亚洲AV无码精品色午夜 | 亚洲爆乳无码一区二区三区| 日韩精品无码免费一区二区三区| 成人无码Av片在线观看| 久久成人无码国产免费播放| 国产色无码精品视频国产| 无码人妻AV一二区二区三区| 国产裸模视频免费区无码| 亚洲日韩乱码中文无码蜜桃臀| 亚洲av无码专区在线观看素人| 精品无码一区在线观看| 熟妇人妻中文av无码| 无码人妻aⅴ一区二区三区| 久久久久亚洲AV成人无码网站| 无码专区国产无套粉嫩白浆内射| 精品无码国产一区二区三区AV| 国产成人精品无码一区二区三区| 亚洲爆乳大丰满无码专区| 色情无码WWW视频无码区小黄鸭| 亚洲AV无码专区日韩| 国产午夜鲁丝片AV无码| 无码中文2020字幕二区| 精品国精品无码自拍自在线| 久久久久亚洲精品无码系列| 一本色道久久HEZYO无码| 少妇中文无码高清| 国产精品va无码免费麻豆| 亚州AV综合色区无码一区| 伊人无码精品久久一区二区| 久久人妻无码中文字幕| 亚洲精品9999久久久久无码| 精品无码无人网站免费视频 | 日韩一区二区三区无码影院| 成人无码WWW免费视频| 丰满日韩放荡少妇无码视频|