這篇文章主要介紹了c/c++如何實現(xiàn)交換機后臺管理之端口管理,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供館陶網(wǎng)站建設(shè)、館陶做網(wǎng)站、館陶網(wǎng)站設(shè)計、館陶網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、館陶企業(yè)網(wǎng)站模板建站服務(wù),10余年館陶做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
1)端口名稱
2)端口狀態(tài)
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); //把文件內(nèi)部的位置指針設(shè)置到文件頭 } } } void create_user(void) { system("cls"); printf("\n\n---創(chuàng)建賬號---\n\n"); printf("待實現(xiàn)...\n\n"); printf("\n\n按任意鍵返回主菜單"); fflush(stdin); getchar(); } void ip_admin(void) { system("cls"); printf("\n\n---IP管理---\n\n"); printf("待實現(xiàn)...\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. 創(chuàng)建賬號\n"); printf("2. IP管理\n"); printf("3. 退出\n"); printf("4. 端口管理\n"); printf("請選擇: "); } void show_ports(void) { system("cls"); printf("---端口狀態(tài)---\n"); printf("待實現(xiàn).\n"); system("pause"); } void set_ports(void) { system("cls"); printf("---端口設(shè)置---\n"); printf("待實現(xiàn).\n"); system("pause"); } void port_admin(void) { char n; while(1) { system("cls"); printf("1. 查看端口\n"); printf("2. 設(shè)置端口\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;
項目實現(xiàn)
void show_port(struct port port) { printf("名稱[%s]\t狀態(tài)[%s]\tIP[%s]\t類型[%s]\n", port.name, port.status == 0 ? "禁用":"激活", port.ip, port.type); } void show_ports(void) { system("cls"); printf("---端口狀態(tài)---\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("---設(shè)置PORT1端口---\n"); printf("請輸入端口名稱: "); scanf("%s", port1.name); printf("請輸入端口的狀態(tài):[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("---設(shè)置PORT2端口---\n"); printf("請輸入端口名稱: "); scanf("%s", port2.name); printf("請輸入端口的狀態(tài):[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("---設(shè)置PORT3端口---\n"); printf("請輸入端口名稱: "); scanf("%s", port3.name); printf("請輸入端口的狀態(tài):[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("---設(shè)置PORT4端口---\n"); printf("請輸入端口名稱: "); scanf("%s", port4.name); printf("請輸入端口的狀態(tài):[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("---設(shè)置PORT5端口---\n"); printf("請輸入端口名稱: "); scanf("%s", port5.name); printf("請輸入端口的狀態(tài):[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("---端口設(shè)置---\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.為什么要使用“結(jié)構(gòu)”(結(jié)構(gòu)體)
但需要表示一些復(fù)制信息時,使用單純的數(shù)據(jù)類型很不方便。
比如:學(xué)生信息(學(xué)號,姓名,班級,電話,年齡)
2.什么是“結(jié)構(gòu)”
結(jié)構(gòu),就是程序員自定義的一種“數(shù)據(jù)類型”
是使用多個基本數(shù)據(jù)類型、或者其他結(jié)構(gòu),組合而成的一種新的“數(shù)據(jù)類型”。
3.結(jié)構(gòu)的定義
struct 結(jié)構(gòu)名 {
成員類型 成員名;
成員類型 成員名;
};
實例:
struct student { char name[16]; int age; char tel[12]; };
1)要以struct開頭
2)最后要使用分號
3)各成員之間用分號隔開
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; }
// 定義結(jié)構(gòu)體變量 // 注意:完整的類型名稱是 struct student // 而不只是student struct student s1,s2; struct student s3; scanf(“%s”, s1.name); s1.name = 25; s2 = s1; //結(jié)構(gòu)體變量之間可以直接賦值
使用形式:
結(jié)構(gòu)體變量.成員變量
中間用 . 分隔
#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); //結(jié)構(gòu)體變量s作為函數(shù)參數(shù),并不會改變s本身的值 printf("%s,%d\n", s.name, s.age); return 0; }
注意:
一般不建議把結(jié)構(gòu)體直接作為函數(shù)參數(shù)。
因為結(jié)構(gòu)體的size比較大,直接傳遞,消耗性能!
解決方案(使用指針)
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
獨立實現(xiàn)項目10
1.定義一個結(jié)構(gòu),用來描述一個游戲角色的基本信息。
該角色信息有,名稱,性別,武力值
并讓用戶輸入1個角色。
運行效果如下:
參考代碼:
#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===角色設(shè)定===\n"); printf("姓名: %s\n", r1.name); printf("性別:%c\n", r1.sex); printf("武力值:%d\n", r1.power); return 0; }
感謝你能夠認真閱讀完這篇文章,希望小編分享的“c/c++如何實現(xiàn)交換機后臺管理之端口管理”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
網(wǎng)頁題目:c/c++如何實現(xiàn)交換機后臺管理之端口管理
當前網(wǎng)址:http://jinyejixie.com/article26/gdpccg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、商城網(wǎng)站、品牌網(wǎng)站制作、全網(wǎng)營銷推廣、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)