来一个高考倒计时程序

文章提供了两段代码,第一段使用C语言编写了计算高考倒计时的程序,通过控制台实时显示剩余天数、小时、分钟和秒,解决了闪烁问题。第二段展示了Python实现的随机点名器,从文本文件读取学生名单并随机选择一名,还包含了Tkinter界面的简单应用,具备选择文件和点名功能。
摘要由CSDN通过智能技术生成

2023年的高考已不足百天

#include <stdio.h>
#include <time.h>
#include <windows.h> // Windows系统下的延时函数头文件
int main() {
    // 设置高考时间为2023年6月7日9时
    struct tm examTime = {0};
    examTime.tm_year = 2023 - 1900; // 年份要减去1900
    examTime.tm_mon = 5; // 月份从0开始计数,即5表示6月
    examTime.tm_mday = 7;
    examTime.tm_hour = 9;
    // 获取当前时间
    time_t nowTime = time(NULL);
    struct tm *pNow = localtime(&nowTime);
    // 计算时间差
    time_t examSecs = mktime(&examTime);
    time_t nowSecs = mktime(pNow);
    time_t diffSecs = examSecs - nowSecs;
    // 输出倒计时信息
    while (diffSecs >= 0) {
    	//清屏再显示
		system("cls");
        printf("距离2023年高考还有:\n");
        printf("%ld天 ", diffSecs / (24 * 60 * 60));
        diffSecs %= 24 * 60 * 60;
        printf("%ld小时 ", diffSecs / (60 * 60));
        diffSecs %= 60 * 60;
        printf("%ld分钟 ", diffSecs / 60);
        diffSecs %= 60;
        printf("%ld秒\n", diffSecs);        
        Sleep(1000); // 暂停1秒钟,单位为毫秒
        nowSecs += 1; // 当前时间加1秒
        pNow = localtime(&nowSecs); // 更新当前时间
        diffSecs = examSecs - nowSecs; // 重新计算时间差
    }
    printf("高考已经开始!加油!\n");
    return 0;
}

这个控制台显示的好象有点闪烁,改一改。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h> // Windows系统下需要添加这个头文件

int main()
{
	// 计算高考日期
	struct tm examTime = {0};
	examTime.tm_year = 123; // 从1900年开始算,2023年-1900=123
	examTime.tm_mon = 6 - 1; // 月份从0开始算,6月需要减1
	examTime.tm_mday = 7;
	examTime.tm_hour = 9;
	examTime.tm_min = 0;
	examTime.tm_sec = 0;

	// 计算距离高考的时间差
	time_t examSecs = mktime(&examTime); // 高考的时间戳
	time_t nowSecs = time(NULL); // 当前时间戳
	struct tm* pNow = localtime(&nowSecs); // 将时间戳转换为本地时间
	nowSecs = mktime(pNow); // 将本地时间转换为时间戳
	long diffSecs = examSecs - nowSecs;

	// 获取标准输出的句柄
	HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);

	// 将控制台的显示模式设置为无缓冲模式
	DWORD prev_mode;
	GetConsoleMode(hStdout, &prev_mode);
	SetConsoleMode(hStdout, CONSOLE_FULLSCREEN_MODE);

	// 输出倒计时信息
	while (diffSecs >= 0)
	{
		//不显示光标样式 
		HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
		CONSOLE_CURSOR_INFO info;
		info.dwSize = 100;
		info.bVisible = FALSE;
		SetConsoleCursorInfo(consoleHandle, &info);

		// 将光标移动到指定位置输出信息
		COORD pos = {0, 0};
		SetConsoleCursorPosition(hStdout, pos);
		printf("距离2023年高考还有:\n");
		printf("%ld天 ", diffSecs / (24 * 60 * 60));
		diffSecs %= 24 * 60 * 60;
		printf("%ld小时 ", diffSecs / (60 * 60));
		diffSecs %= 60 * 60;
		printf("%ld分钟 ", diffSecs / 60);
		diffSecs %= 60;
		printf("%ld秒 ", diffSecs);
		// 等待1秒钟
		Sleep(1000);
		// 重新计算时间差
		nowSecs = time(NULL);
		pNow = localtime(&nowSecs);
		nowSecs = mktime(pNow);
		diffSecs = examSecs - nowSecs;
	}
	//还原控制台的显示模式
	SetConsoleMode(hStdout, prev_mode);
	printf("\n高考结束,加油!!!\n");
	return 0;
}

顺便再来一个python版的随机点名器

学生名单放在studenname.txt文本文件里,每行一个姓名。

import random

# 读取学生姓名列表
with open('studentname.txt', 'r') as f:
    student_list = f.readlines()

# 随机选取学生姓名
selected_student = random.choice(student_list)

# 输出点名结果
print(f"选中的学生是:{selected_student.strip()}")

加一个tkinter,加两个按钮。

import tkinter as tk
from tkinter import filedialog, messagebox
import random

class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("我的点名器")
        self.geometry("300x100")
        
        # 创建选择文件的按钮
        self.select_file_button = tk.Button(self, text="选择文件", command=self.select_file)
        self.select_file_button.pack(pady=10)
        
        # 创建点名按钮
        self.pick_name_button = tk.Button(self, text="开始点名", command=self.pick_name, state="disabled")
        self.pick_name_button.pack(pady=10)
        
        # 文件路径
        self.file_path = None
        
    def select_file(self):
        # 弹出文件选择对话框
        self.file_path = filedialog.askopenfilename(filetypes=[("文本文件", "*.txt")])
        
        # 如果选择了文件,则启用点名按钮
        if self.file_path:
            self.pick_name_button.config(state="normal")
        
    def pick_name(self):
        # 从文件中随机选择一行
        with open(self.file_path, "r") as f:
            lines = f.readlines()
            if len(lines) > 0:
                name = random.choice(lines).strip()
                messagebox.showinfo("本次点名幸运学生:", f"恭喜:{name}")
        
if __name__ == "__main__":
    app = App()
    app.mainloop()

 基本完工,大家再改改吧!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hbqjzx

你的鼓励将是我分享的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值