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
#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安全错误
数据库的锁怎样保障安全
关于网络安全的句子小学生
延庆区口碑好的网络技术咨询
代理服务器拒绝连接是因为什么
数据库技术支持和维护
测试服务器网络安全
巢湖数据库
公安部网络安全专业院校
拒绝沉迷网络安全上网
金蝶费用发票数据库表
网络安全调研的意义
北京服务器光模块虚拟主机
广东省网络安全宣传周感想
数据库中的自然连接6
家庭教育与网络安全
数据库根据用户限制计算资源
六盘水高密度存储服务器加盟
太仓正规网络技术有哪些
我的世界11月17日服务器维护
米话客服中心显示连接服务器失败
网络安全手抄报的内容怎么画
南皮2020年外贸数据库网址
华为mdb是什么数据库
java如何从事网络安全
软件开发有哪些部门
c 设置登录界面 数据库
飞艇数据库
单位服务器映射管理
杨浦区重型网络技术厂家供应
事物安全数据库
荒野行动用什么编程软件开发的