c/c++如何实现交换机后台管理之端口管理
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍了c/c++如何实现交换机后台管理之端口管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。10 交换机后台管理之端口管
千家信息网最后更新 2026年11月03日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
#includestruct 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
#includevoid 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
#includeextern char master[16]; //不能初始化!表示这个全局变量是在其他文件中定义的!void east_travel(void) { printf("[东游]老大是: %s\n", master);}
gcc test1.c test2.c
项目练习
练习1
独立实现项目10
练习2
1.定义一个结构,用来描述一个游戏角色的基本信息。
该角色信息有,名称,性别,武力值
并让用户输入1个角色。
运行效果如下:
参考代码:
#includestruct 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++如何实现交换机后台管理之端口管理"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
端口
输入
结构
类型
名称
管理
变量
状态
激活
用户
角色
地址
成员
文件
菜单
项目
交换机
信息
密码
用户名
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网企业
美国互联网科技巨头监管
金融科技创新监管互联网金融
互联网 科技创新
奇酷互联网科技
腾讯科技 互联网女皇
伴你行互联网科技有限公司
互联网科技英文翻译
互联网科技咨询
互联网科技大会案例
四个字互联网科技公司取名
互联网科技股午盘股票涨跌
北京三清互联网科技
深圳国际航运科技和互联网
互联网科技公司实习生
江阴互联网智能科技产品进口
互联网金融科技元年
上海钢联属于互联网科技股吗
唯美互联网科技
现代科技的标志之一的互联网
湖南永感互联网科技有限公司
河南真二互联网科技有限公司
科技企业和互联网企业
上海宁丞科技互联网
怎样加入科技互联网
互联网科技年终奖
本届互联网大会上的黑科技
易企秀互联网科技是做什么的
上海万顺科技互联网有限公司招聘
科技互联网公司两年变化