C语言课程设计——让我帮你把界面美观分拿满

哈喽大家好,在C语言程序设计中,界面美观是评分标准之一。
下面向大家介绍几个有助于界面美观的小技巧

光标移动函数

无需考虑太多,哥给你封装了个函数,直接用。
调用传值函数: goto_xy(2,3); 
即可实现在控制台界面将光标移动至第二行,第三列。
记得引用头文件 #include<Windows.h> 以及 #include<stdio.h>
attention : 以左上角为坐标原点,从 0 开始,向下为向右为正方向。
代码如下:
void goto_xy(short x, short y)//定位光标位置到指定坐标
{
	HANDLE hOut;
	hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos = { x,y };
	SetConsoleCursorPosition(hOut, pos);
}

实现输入密码变成 * ,并且可以退格

初步想法是,创建一个字符数组。每当读入一个字符,就 printf("*"); 
并且同时识别出 Backspace 和 Enter 键,通过刚才介绍的光标移动函数
即可实现退格和结束输入。
下面是代码:
#include<stdio.h>
#include<conio.h>
#include<Windows.h>
void goto_xy(short x, short y)//定位光标位置到指定坐标
{
	HANDLE hOut;
	hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos = { x,y };
	SetConsoleCursorPosition(hOut, pos);
}
int main()
{
	printf("_______________________");
	goto_xy(0,0);
	char initial_input[40] = "0";
	int i = 0;
	char ch;
	while (1)
	{
		ch = getch();
		if (ch == '\r')
			break;
		if (ch == '\b')
		{
			if (i > 0)
			{
				i--;
				initial_input[i] = '\0';
				goto_xy(i,0);
				printf("_");
				goto_xy(i,0);
				continue;
			}
			continue;
		}
		else
		{
			initial_input[i] = ch;
			i++;
			printf("*");
		}
	}
	return 0;
}
将上述代码光标跳转函数的参数进行调整(可以使用变量进行传值),
便可以很好地移植到你的程序设计中。

获取输入密码属性

刚刚以字符形式输入密码,可通过以下方式简单获知输入数字的合法性,长度和数值。
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<ctype.h>
int initial_input_length = 0;
initial_input_length = strlen(initial_input); //输入数字的长度
for (int i = 0; i < initial_input_length; i++)
	{
		if (!isdigit(initial_input[i]))
		{
			break;  //检测每个输入是否都为数字
		}
	}
int count = 0;
for(int i = 0;i < initial_input_length;i++)
{
	count += (initial_input[i] - 48) * pow(10,initial_input_length - 1 - i);
}
printf("%d",count);  //输入数字的数值
上面的代码使用了 isdigit() 函数,该函数包含于 include<stype.h> 头文件中,可以便利地检测字符属性。
该头文件中还包含有很多其他便于检测字符属性的函数,
[进入这个网页,了解更多 ctyep.h ](https://blog.youkuaiyun.com/m0_61030119/article/details/121674665)

清屏、睡眠函数

在程序设计中,常常从一个页面进入下一个页面。如果一直 print 页面信息,效果相当不美观。
这时可以使用法宝:清屏函数。
#include<stdio.h>
#include<Windows.h>
int main()
{
	
	printf("123");
	system("cls");
	return 0;
}

清屏函数包含于头文件 #include<Windows.h> 中,同样包含于这个头文件中的另一个很好用的函数是睡眠函数。

#include<stdio.h>
#include<Windows.h>
int main()
{
	
	printf("123");
	Sleep(2000);
	system("cls");
	return 0;
}

睡眠函数 Sleep() 使得程序执行到这段代码的时候稍作休息。
括号内的数字表示毫秒,所以 Sleep(2000) 即代表程序暂停两秒钟。

改变字体颜色和字体背景色

黑白框框看腻了吗?改变控制台字体颜色,来点儿新鲜的吧。在笔者上一篇 SCDN 中详细介绍了三种改变控制台字体颜色和背景色的方法。戳我查看详情

好啦,今天的介绍就到这里,希望上述内容可以帮到你

在这里插入图片描述

### C语言 GUI界面美化 示例代码 在C语言中,虽然原生支持图形用户界面的能力有限,但可以通过第三方库(如GTK、FLTK 或 Qt 的 C++ 绑定)来创建并美化 GUI 界面。以下是基于 GTK 库的一个简单示例,展示如何通过设置样式表和调整控件属性来实现界面美化。 #### 安装依赖 在使用 GTK 开发之前,请确保已安装 GTK 开发环境。对于 Linux 用户,可通过以下命令安装: ```bash sudo apt-get install libgtk-3-dev ``` #### 示例代码:使用 GTK 创建并美化 GUI 界面 下面是一个简单的 GTK 程序,展示了如何加载自定义 CSS 文件以美化按钮和其他控件: ```c #include <gtk/gtk.h> // 加载CSS文件函数 static void load_css(void) { GtkCssProvider *provider; GdkDisplay *display; GdkScreen *screen; provider = gtk_css_provider_new(); display = gdk_display_get_default(); screen = gdk_display_get_default_screen(display); // 替换为实际路径中的css文件名 gtk_css_provider_load_from_path(provider, "style.css", NULL); gtk_style_context_add_provider_for_screen(screen, GTK_STYLE_PROVIDER(provider), GTK_STYLE_PROVIDER_PRIORITY_USER); g_object_unref(provider); } int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *button; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "C Language GUI Example"); gtk_window_set_default_size(GTK_WINDOW(window), 200, 100); gtk_container_set_border_width(GTK_CONTAINER(window), 10); button = gtk_button_new_with_label("Click Me!"); gtk_widget_set_name(button, "custom-button"); // 设置名称以便应用CSS规则 gtk_container_add(GTK_CONTAINER(window), button); g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_destroy), G_OBJECT(window)); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); load_css(); // 调用加载CSS函数 gtk_widget_show_all(window); gtk_main(); return 0; } ``` #### 自定义 CSS 文件 (`style.css`) 将以下内容保存到 `style.css` 文件中,该文件应位于运行程序的工作目录下: ```css /* 定义名为 custom-button 的样式 */ .custom-button { background-color: #4CAF50; /* 按钮背景颜色 */ color: white; /* 文字颜色 */ border-radius: 8px; /* 圆角边框 */ padding: 10px 20px; /* 内部填充 */ font-size: 16px; /* 字体大小 */ transition-duration: 0.4s; /* 动画过渡时间 */ } .custom-button:hover { background-color: #45a049; /* 鼠标悬停时的颜色变化 */ } ``` --- ### 关键技术点解析 1. **GTK 初始化与窗口创建** 使用 `gtk_init()` 和 `gtk_window_new()` 函数初始化 GTK 并创建主窗口[^1]。 2. **控件命名与样式绑定** 通过调用 `gtk_widget_set_name()` 方法为特定控件配唯一名称,在 CSS 中可针对此名称定义个性化样式。 3. **动态加载 CSS 样式** 利用 `GtkCssProvider` 类加载外部 CSS 文件,并将其应用于当前屏幕上下文中[^1]。 4. **信号连接机制** 将事件处理逻辑绑定至相应控件上,例如点击按钮触发关闭操作。 --- ### 注意事项 尽管上述方法能够有效提升 C 语言 GUI 程序的外观质量,但由于纯 C 缺乏高级框架特性,建议开发者探索其他更适合现代需求的技术栈,比如 Python + Tkinter/PyQt 或者直接采用跨平台工具集 Qt/C#[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值