大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍了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)各成员之间用分号隔开
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; }
// 定义结构体变量 // 注意:完整的类型名称是 struct student // 而不只是student struct student s1,s2; struct student s3; scanf(“%s”, s1.name); s1.name = 25; s2 = s1; //结构体变量之间可以直接赋值
使用形式:
结构体变量.成员变量
中间用 . 分隔
#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比较大,直接传递,消耗性能!
解决方案(使用指针)
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
独立实现项目10
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++如何实现交换机后台管理之端口管理”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!