c/c++如何实现交换机后台管理之端口管理
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章主要介绍了c/c++如何实现交换机后台管理之端口管理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。10 交换机后台管理之端口管
千家信息网最后更新 2025年11月12日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安全错误
数据库的锁怎样保障安全
我国软件开发重点院校
怎么用数据库查询所有姓陈的学生
数据库变动滚动发布
浦东新区信息软件开发供应商
纵横论坛网络安全
电脑有些软件连接服务器连不上
内蒙古网络安全知识竞赛
肥西新华互联网科技大学
acm 数据库
网络安全系统分为几次
网络安全渗透测试端口扫描
修改数据库字段名称的语句
网络安全习惯
网络安全威胁案例分析及解决方案
圣安地列斯那个服务器有砸金蛋
举旗定魂维护网络安全
软件开发相关专业要求
三星手机怎么看待网络安全
软件开发 简历
软件开发担保平台哪个靠谱
香港dns服务器
回收服务器轨道
软件开发成本项目
时钟代码软件开发
手机qq代理服务器设置
数据库多字段排序时的优先级
电子商务数据库技术的知识点
高校财经数据库
宜良创新软件开发网上价格
geo数据库如何调取