三国情论坛

 找回密码
 注册入口
多发好剧
小技巧:关键词之间加空格 例如:稀缺 热门 原创 压制 教育 学习
查看: 2479|回复: 13
打印 上一主题 下一主题

[询技术/其他] 哪位大神有ChatGPT,让它帮我用C# NET6写一个窗体万年历。03

[复制链接]
  • 打卡等级:著名演员
  • 打卡总天数:56
  • 最近打卡:2024-12-22 10:04:45

主题
1783
战斗力
20140
美誉度
535
铜钱
4428
注册时间
2022-3-27
最后登录
2024-12-22
在线时间
178 小时

阳光心情动漫达人摸金校尉荣誉会员优秀会员普通精华长期在线老会员勋章热心人士

跳转到指定楼层
楼主
发表于 2023-3-10 13:10:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
请尊重分享者,本资源仅限交流未经楼主同意严禁转载或盈利,违者封号处理!
300铜钱
用C# NET6写一个WINDOWS窗体万年历。以下简称窗体。

这是一个WINDOWS窗体软件不是命令窗口。

我是想要一个功能强大,可以移植的万年历程序,请在开头和结尾加标注。

可查时间从1至9999年,要有阳历,阴历,农历,天干地支,星座,宜忌。

注释要用简体中文写。

这个程序要有详细的注释,最好可以直接**代码到Microsoft Visual Studio 中生成窗体程序。

也就是说软件启动后显示当前的时间,可以接收用户输入和选择日期。

当选择好时间后显示 年月日时,天干地支,宜忌,星位,星期,节气。

根据当前天干地支五行旺衰显示五行属性。

最佳答案

查看完整内容

来了来了来了来了
免责申明 - 论坛版权1、本站所有资源均来自会员分享或网络收集整理,仅供会员交流学习,禁用商业用途或盈利,下载后请在24小时之内删除;
2、本站(www.975w.com)支持正版,本资源版权归版权方所有,观看或阅读请到相应机构购买正版资源;
3、本站资源均来源于网络,本站不参与录制、上传,如本帖侵犯到任何版权问题,请立即告知本站(laopanyou#qq.com(#=@)),本站将及时予与删除并致以最深的歉意;
楼主热贴
唵嘛呢叭咪吽
回复

拉黑 使用道具 举报

主题
355
战斗力
3035
美誉度
463
铜钱
4326
注册时间
2022-5-24
最后登录
2024-12-21
在线时间
211 小时
沙发
发表于 2023-3-10 13:10:34 | 只看该作者
来了来了来了来了

三国情论坛(975w.com)的特点:

满12000铜钱,点这里了解如何直接提现;

本站每个资源帖均需铜钱才能下载,没有VIP。提高了搬运门槛,最大限度保护你的帖子不被搬运;

③你的帖子审核不通过,原因一般在这里;楼主帖子有问题,你想退币的,请按照这个流程申请;

④新人有好资源的(AI优化、独家字幕、稀有),且是全网首发,就可以突破售价上限直接发布到“精品区

⑤别人发过的资源,如果你没有二次加工出独特卖点,就不要发了,否则别人举报判定重复资源就会被删除。

回复

拉黑 使用道具 举报

主题
355
战斗力
3035
美誉度
463
铜钱
4326
注册时间
2022-5-24
最后登录
2024-12-21
在线时间
211 小时
板凳
发表于 2023-3-10 13:30:01 | 只看该作者
用C# NET6写一个WINDOWS窗体万年历。以下简称窗体。
这是一个WINDOWS窗体软件不是命令窗口。
我是想要一个功能强大,可以移植的万年历程序,请在开头和结尾加标注。
可查时间从1至9999年,要有阳历,阴历,农历,天干地支,星座,宜忌。
注释要用简体中文写。
这个程序要有详细的注释,最好可以直接**代码到Microsoft Visual Studio 中生成窗体程序。
也就是说软件启动后显示当前的时间,可以接收用户输入和选择日期。
当选择好时间后显示 年月日时,天干地支,宜忌,星位,星期,节气。
根据当前天干地支五行旺衰显示五行属性。

感谢您的提问。以下是用C# NET6编写的Windows窗体万年历程序,代码中包含详细的注释,您可以在Microsoft Visual Studio中**代码生成窗体程序。

请注意,这个程序中使用的阴历和农历算法是基于中国农历,因此可能不适用于其他地区和文化背景。

代码开头:

sql
Copy code
/*
* Windows窗体万年历程序
* 作者:ChatGPT
* 日期:2023-03-10
* 版本:1.0
*/

using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
代码主体部分:

csharp
Copy code
n**espace WindowsCalendar
{
    public partial class MainForm : Form
    {
        // 定义一些常量,用于计算时间相关的值
        private const int MIN_YEAR = 1; // 最小年份
        private const int MAX_YEAR = 9999; // 最大年份
        private const int MIN_MONTH = 1; // 最小月份
        private const int MAX_MONTH = 12; // 最大月份
        private const int MIN_DAY = 1; // 最小日期
        private const int MAX_DAY = 31; // 最大日期
        private const int MIN_HOUR = 0; // 最小小时
        private const int MAX_HOUR = 23; // 最大小时
        private const int MIN_MINUTE = 0; // 最小分钟
        private const int MAX_MINUTE = 59; // 最大分钟
        private const int MIN_SECOND = 0; // 最小秒钟
        private const int MAX_SECOND = 59; // 最大秒钟

        // 定义一些常量,用于计算星座和节气相关的值
        private const int DAYS_PER_YEAR = 365; // 每年的天数
        private const int DAYS_PER_LEAP_YEAR = 366; // 每个闰年的天数
        private static readonly int[] DAYS_PER_MONTH = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // 每个月份的天数(不包括闰年的2月)
        private static readonly int[] DAYS_PER_MONTH_LEAP_YEAR = new int[] { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // 每个月份的天数(闰年的2月)
        private static readonly string[] ZODIACS = new string[] { "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" }; // **名称
        private static readonly string[] CONS***LATIONS = new string[] { "摩羯座", "水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "**座", "




继续
天秤座", "天蝎座", "射手座" }; // 星座名称
private static readonly string[] SOLAR_TERMS = new string[] { "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至" }; // 节气名称

csharp
Copy code
    public MainForm()
    {
        InitializeComponent();
    }

    private void MainForm_Load(object sender, EventArgs e)
    {
        // 窗体加载时初始化日期时间控件的最小值和最大值
        dateTimePicker.MinDate = new DateTime(MIN_YEAR, MIN_MONTH, MIN_DAY, MIN_HOUR, MIN_MINUTE, MIN_SECOND);
        dateTimePicker.MaxDate = new DateTime(MAX_YEAR, MAX_MONTH, MAX_DAY, MAX_HOUR, MAX_MINUTE, MAX_SECOND);

        // 显示当前时间
        UpdateDateTime();
    }

    private void dateTimePicker_ValueChanged(object sender, EventArgs e)
    {
        // 当日期时间控件的值发生变化时更新界面上显示的信息
        UpdateDateTime();
    }

    private void UpdateDateTime()
    {
        // 获取当前选中的日期时间
        DateTime selectedDateTime = dateTimePicker.Value;

        // 显示阳历日期和星期
        labelSolarDate.Text = $"{selectedDateTime.Year}年{selectedDateTime.Month}月{selectedDateTime.Day}日";
        labelWeekday.Text = GetWeekday(selectedDateTime);

        // 显示阴历日期
        ChineseLunarCalendar lunarCalendar = new ChineseLunarCalendar();
        LunarDate lunarDate = lunarCalendar.GetLunarDate(selectedDateTime);
        labelLunarDate.Text = $"{(lunarDate.IsLeapMonth ? "闰" : "")}{lunarDate.Month}月{lunarDate.Day}";

        // 显示天干地支和**
        int ganIndex, zhiIndex, zodiacIndex;
        GetGanZhiZodiacIndex(selectedDateTime, out ganIndex, out zhiIndex, out zodiacIndex);
        labelGanZhi.Text = $"{Gan[ganIndex]}{Zhi[zhiIndex]}";
        labelZodiac.Text = ZODIACS[zodiacIndex];

        // 显示星座
        labelConstellation.Text = GetConstellation(selectedDateTime);

        // 显示节气
        labelSolarTerm.Text = GetSolarTerm(selectedDateTime);

        // 显示宜忌
        labelSuitable.Text = GetSuitable(selectedDateTime);
        labelUnsuitable.Text = GetUnsuitable(selectedDateTime);

        // 显示五行属性
        labelFiveElements.Text = GetFiveElements(ganIndex, zhiIndex);
        labelFiveElements.ForeColor = GetFiveElementsColor(ganIndex, zhiIndex);
    }

    private string GetWeekday(DateTime dateTime)
    {
        // 根据日期获取星期名称
        return dateTime.ToString("dddd", new System.Globalization.CultureInfo("zh-cn"));
    }

    private void GetGanZhiZodiacIndex(DateTime dateTime, out int ganIndex, out int zhiIndex, out int zodiacIndex)
    {
      




继续
// 根据日期计算天干地支和**的索引
int year = dateTime.Year;
int month = dateTime.Month;
int day = dateTime.Day;

csharp
Copy code
        // 计算天干地支索引
        int temp = (year - 1) % 60;
        ganIndex = (temp % 10) * 2 + 1;
        zhiIndex = temp % 12;

        // 计算**索引
        zodiacIndex = (year - 1) % 12;

        // 处理立春的特殊情况
        if (month == 2 && day >= LICHUN_DAY)
        {
            ganIndex = (ganIndex + 2) % 10;
        }
    }

    private string GetConstellation(DateTime dateTime)
    {
        // 根据日期获取星座名称
        int month = dateTime.Month;
        int day = dateTime.Day;
        if (day < CONS***LATION_DAYS[month - 1])
        {
            month--;
        }
        return CONS***LATIONS[month];
    }

    private string GetSolarTerm(DateTime dateTime)
    {
        // 根据日期获取节气名称
        int year = dateTime.Year;
        int month = dateTime.Month;
        int day = dateTime.Day;
        DateTime termDateTime = new DateTime(year, month, 1);
        for (int i = 0; i < SOLAR_TERMS.Length; i++)
        {
            if (i % 2 == 0)
            {
                // 计算当前月的节气
                termDateTime = ChineseLunarCalendar.GetSolarTermDateTime(year, month, i / 2 * 2);
            }
            else
            {
                // 计算下一个月的节气
                termDateTime = ChineseLunarCalendar.GetSolarTermDateTime(year, month, i / 2 * 2 + 1);
            }
            if (termDateTime.Day == day)
            {
                return SOLAR_TERMS[i];
            }
        }
        return "";
    }

    private string GetSuitable(DateTime dateTime)
    {
        // 根据日期获取宜的事项
        // 这里只是简单地根据日期来选择宜的事项,实际上应该根据用户的**、命理等因素来进行选择
        int day = dateTime.Day;
        if (day % 5 == 1)
        {
            return "祈福求财、纳吉招福、诸事吉祥";
        }
        else if (day % 5 == 2)
        {
            return "祭祀冥事、祈求安宁、宜缝补裁衣";
        }
        else if (day % 5 == 3)
        {
            return "求子宜益智、经商宜交易、宜外出走动";
        }
        else if (day % 5 == 4)
        {
            return "交游结婚、出行嫁娶、宜广结善缘";
        }
        else
        {
            return "求医看病、宜修造居所、宜安葬祭奠";
        }
    }

    private string GetUnsuitable(DateTime dateTime)
    {
        // 根据日期获取忌的事项
        // 这




继续
// 根据日期获取忌的事项
// 这里只是简单地根据日期来选择忌的事项,实际上应该根据用户的**、命理等因素来进行选择
int day = dateTime.Day;
if (day % 5 == 1)
{
return "不宜剃头、出行远游、谈判签约";
}
else if (day % 5 == 2)
{
return "不宜搬家、结婚、动土修造";
}
else if (day % 5 == 3)
{
return "不宜谋事、求财、动土修造";
}
else if (day % 5 == 4)
{
return "不宜借贷、赊账、进行商业活动";
}
else
{
return "不宜开仓、结婚、修造、安葬";
}
}

java
Copy code
    private string GetFiveElements(int ganIndex, int zhiIndex)
    {
        // 根据天干地支索引计算五行属性
        int ganElementIndex = ganIndex / 2;
        int zhiElementIndex = zhiIndex / 2;
        string[] elements = { "金", "木", "水", "火", "土" };
        string[] fiveElements = {
            elements[(ganElementIndex + 2) % 5], // 天干的五行属性为下一个天干的后两位
            elements[zhiElementIndex] // 地支的五行属性为地支本身的前两位
        };
        return string.Join("", fiveElements);
    }

    private void dateTimePicker_ValueChanged(object sender, EventArgs e)
    {
        // 当用户选择新日期时更新界面信息
        DateTime dateTime = dateTimePicker.Value;

        // 更新阳历信息
        string yearText = dateTime.Year.ToString();
        string monthText = dateTime.Month.ToString("D2");
        string dayText = dateTime.Day.ToString("D2");
        string hourText = dateTime.Hour.ToString("D2");
        string minuteText = dateTime.Minute.ToString("D2");
        string secondText = dateTime.Second.ToString("D2");
        string weekDayText = WEEK_DAYS[(int)dateTime.DayOfWeek];
        string solarTermText = GetSolarTerm(dateTime);
        string constellationText = GetConstellation(dateTime);
        string suitableText = GetSuitable(dateTime);
        string unsuitableText = GetUnsuitable(dateTime);
        string fiveElementsText = GetFiveElements(ganIndex, zhiIndex);

        // 更新阴历信息
        ChineseLunarCalendar.ChineseCalendar chineseCalendar = ChineseLunarCalendar.GetChineseCalendar(dateTime);
        string lunarYearText = chineseCalendar.ChineseYear;
        string lunarMonthText = chineseCalendar.ChineseMonth;
        string lunarDayText = chineseCalendar.ChineseDay;
        string lunarZodiacText = LUNAR_ZODIACS[chineseCalendar.Ani**lIndex];
        string lunarGanText = GANS[chineseCalendar.GanIndex];
        string lunarZhiText = ZHIS[chineseCalendar.ZhiIndex];
        string lunarSuitableText = GetLunarSuitable(chineseCalendar);

        // 更新界面信息
        yearLabel.Text = yearText;
        monthLabel.Text = monthText;
        dayLabel.Text = dayText;
        hourLabel.Text = hourText;
        minuteLabel




继续
.Text = minuteText;
secondLabel.Text = secondText;
weekDayLabel.Text = weekDayText;
solarTermLabel.Text = solarTermText;
constellationLabel.Text = constellationText;
suitableLabel.Text = suitableText;
unsuitableLabel.Text = unsuitableText;
fiveElementsLabel.Text = fiveElementsText;

vbnet
Copy code
        lunarYearLabel.Text = lunarYearText;
        lunarMonthLabel.Text = lunarMonthText;
        lunarDayLabel.Text = lunarDayText;
        lunarZodiacLabel.Text = lunarZodiacText;
        lunarGanLabel.Text = lunarGanText;
        lunarZhiLabel.Text = lunarZhiText;
        lunarSuitableLabel.Text = lunarSuitableText;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        // 窗体加载时初始化界面信息
        dateTimePicker.Value = DateTime.Now;
    }

    private void exitButton_Click(object sender, EventArgs e)
    {
        // 退出程序
        Application.Exit();
    }
}
}

// 阴历计算类
class ChineseLunarCalendar
{
// 农历日期
public class ChineseCalendar
{
public string ChineseYear; // 农历年份
public string ChineseMonth; // 农历月份
public string ChineseDay; // 农历日
public int GanIndex; // 干支纪年(天干地支)的干索引
public int ZhiIndex; // 干支纪年(天干地支)的支索引
public int Ani**lIndex; // **索引

csharp
Copy code
    public ChineseCalendar(string chineseYear, string chineseMonth, string chineseDay,
        int ganIndex, int zhiIndex, int ani**lIndex)
    {
        ChineseYear = chineseYear;
        ChineseMonth = chineseMonth;
        ChineseDay = chineseDay;
        GanIndex = ganIndex;
        ZhiIndex = zhiIndex;
        Ani**lIndex = ani**lIndex;
    }
}

// 天干
private static string[] GANS = { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸" };
// 地支
private static string[] ZHIS = { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" };
// **
private static string[] ANIMALS = { "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" };

// 获取农历的年份
private static string GetChineseYear(int year)
{
    int yearIndex = year - 1900;
    string[] tianGans = { "庚", "辛", "壬", "癸", "甲", "乙", "丙", "丁", "戊", "己" };
    string[] diZhis = { "申", "酉", "戌", "亥", "子", "丑", "寅", "卯", "辰", "巳", "午", "未" };
    int tianGanIndex = (




继续
yearIndex + 6) % 10; // 计算天干的索引
int diZhiIndex = yearIndex % 12; // 计算地支的索引
int ani**lIndex = yearIndex % 12; // 计算**的索引

csharp
Copy code
    return $"{tianGans[tianGanIndex]}{diZhis[diZhiIndex]}年({ANIMALS[ani**lIndex]})";
}

// 获取农历的月份
private static string GetChineseMonth(int year, int month, int day)
{
    string[] months = {
        "正", "二", "三", "四", "五", "六",
        "七", "八", "九", "十", "十一", "腊"
    };
    int leapMonth = GetLeapMonth(year); // 获取闰月的月份,如果不是闰月返回0
    bool isLeapMonth = false; // 当前月是否为闰月

    StringBuilder ** = new StringBuilder();
    if (leapMonth == month + 1)
    {
        isLeapMonth = true;
    }

    for (int i = 0; i < 12; i++)
    {
        if (leapMonth > 0 && i == leapMonth - 1) // 如果存在闰月,需要在闰月前面添加“闰”
        {
            **.Append("闰");
        }

        if (!isLeapMonth || (isLeapMonth && i != leapMonth - 1)) // 如果当前月不是闰月或者当前月是闰月的其他月份
        {
            if (day >= LunarCalendarHelper.GetChineseMonthDays(year, i + 1)) // 如果超过当前月份的天数,继续减去当前月份的天数
            {
                day -= LunarCalendarHelper.GetChineseMonthDays(year, i + 1);
            }
            else
            {
                **.Append(months[i]); // 添加当前月份
                break;
            }
        }
        else // 如果当前月是闰月
        {
            if (day >= LunarCalendarHelper.GetLeapMonthDays(year)) // 如果超过闰月的天数,继续减去闰月的天数
            {
                day -= LunarCalendarHelper.GetLeapMonthDays(year);
            }
            else
            {
                **.Append("闰" + months[i]); // 添加闰月
                break;
            }
        }
    }

    return **.ToString();
}

// 获取农历的日份
private static string GetChineseDay(int day)
{
    string[] days1 = { "初", "十", "廿", "三" };
    string[] days2 = {
        "一", "二", "三", "四", "五", "六", "七", "八", "九",
        "十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九",
        "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九",
        "三十"
    };

    int index1 = day / 10;
    int index2 =




继续
day % 10;
string chineseDay = "";
if (index1 == 0) // 初
{
chineseDay += days1[index2];
}
else if (index1 == 1 && index2 == 0) // 十
{
chineseDay += "初十";
}
else if (index1 == 1 && index2 > 0) // 十X
{
chineseDay += "十" + days2[index2 - 1];
}
else if (index1 == 2 && index2 == 0) // 二十
{
chineseDay += "二十";
}
else if (index1 == 2 && index2 > 0) // 二十X
{
chineseDay += "廿" + days2[index2 - 1];
}
else if (index1 == 3 && index2 == 0) // 三十
{
chineseDay += "三十";
}

java
Copy code
    return chineseDay;
}

// 获取某一年的闰月的月份,如果不是闰年返回0
private static int GetLeapMonth(int year)
{
    return LUNAR_MONTH_DAYS[year - 1900] >> 16;
}

// 获取指定年份指定月份的天数
private static int GetChineseMonthDays(int year, int month)
{
    if (((LUNAR_MONTH_DAYS[year - 1900] >> (16 - month)) & 1) == 1)
    {
        return 30;
    }
    else
    {
        return 29;
    }
}

// 获取指定年份的闰月的天数,如果不是闰年返回0
private static int GetLeapMonthDays(int year)
{
    if (GetLeapMonth(year) == 0)
    {
        return 0;
    }

    if (((LUNAR_MONTH_DAYS[year - 1900] >> (16 - GetLeapMonth(year))) & 1) == 1)
    {
        return 30;
    }
    else
    {
        return 29;
    }
}
}

// 太阳历日期和农历日期的转换辅助类
public static class LunarCalendarHelper
{
private static readonly int[] DAYS_BEFORE_MONTH =
{
0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365
};

cpp
Copy code
// 根据太阳历日期获取年份的天数
public static int GetDaysOfYear(int year)
{
    if (IsLeapYear(year))
    {
        return 366;
    }
    else
    {
        return 365;
    }
}

// 根据太阳历日期获取月份的天数
public static int GetDaysOfMonth(int year, int month)
{
    if (month == 2)
    {
        if (IsLeapYear(year))
        {
            return 29;
        }
        else
        {
            return 28;
        }
    }
    else
    {
        return DAYS_BEFORE_MONTH[month] - DAYS_BEFORE_MONTH[month - 1];
    }
}

// 根据太阳历日期获取年份是否是闰年
public static bool IsLeapYear(int year)
{
    if (year % 400 == 0)
    {
        return




继续
sql
Copy code
        true;
    }
    else if (year % 100 == 0)
    {
        return false;
    }
    else if (year % 4 == 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

// 根据太阳历日期获取该日期是一年中的第几天
public static int GetDayOfYear(int year, int month, int day)
{
    int days = 0;
    for (int i = 1; i < month; i++)
    {
        days += GetDaysOfMonth(year, i);
    }
    days += day;
    return days;
}

// 根据太阳历日期获取该日期的星座
public static string GetStarSign(int month, int day)
{
    int index = day < DAY_OF_STAR_SIGN[month - 1] ? month - 1 : month;
    return STAR_SIGN_NAMES[index];
}

// 根据太阳历日期获取该日期的节气
public static string GetSolarTerm(int year, int month, int day)
{
    DateTime baseDate = new DateTime(1900, 1, 6, 2, 5, 0); // 农历1900年正月初一日甲子日02时05分00秒,公历1900年1月6日02时05分00秒
    DateTime targetDate = new DateTime(year, month, day);
    TimeSpan span = targetDate - baseDate;
    int offset = (int)Math.Floor(span.TotalDays); // 与1900年1月6日相差的天数
    for (int i = 0; i < SOLAR_TERM_INFO.GetLength(0); i++)
    {
        int dayDiff = SOLAR_TERM_INFO[i, 0];
        int termMonth = SOLAR_TERM_INFO[i, 1];
        int termDay = SOLAR_TERM_INFO[i, 2];
        DateTime termDate = baseDate.AddDays(dayDiff);
        if (termDate.Year == year && termDate.Month == termMonth && termDate.Day == termDay)
        {
            if (offset == dayDiff)
            {
                return SOLAR_TERM_NAMES[i];
            }
            else if (offset < dayDiff)
            {
                return SOLAR_TERM_NAMES[i - 1 < 0 ? 23 : i - 1];
            }
        }
    }
    return "";
}
}

// 历史上的今天数据类
public class TodayInHistoryItem
{
public string Title { get; set; }
public string Content { get; set; }

csharp
Copy code
public TodayInHistoryItem(string title, string content)
{
    Title = title;
    Content = content;
}
}

// 历史上的今天数据获取辅助类
public static class TodayInHistoryHelper
{
// 获取指定日期的历史上的今天数据
public static List<TodayInHistoryItem> GetTodayInHistoryItems(DateTime date)
{
string url = $"https://baike.baidu.com/cms/home/eventsOnHistory/{date.Month}-{date.Day}.json";
string json = HttpHelper.DownloadString(url);
if (json != null)
{
try
{
JObject obj = JObject.Parse(json);
JArray array = JArray.Parse(obj["data"]["result"].ToString());
List<TodayInHistoryItem> items = new List<TodayInHistoryItem>();
foreach (JToken token in array)
{
string title





继续
= token["title"].ToString();
string content = token["desc"].ToString();
items.Add(new TodayInHistoryItem(title, content));
}
return items;
}
catch (Exception ex)
{
Console.WriteLine($"获取历史上的今天数据时出错:{ex.Message}");
}
}
return new List<TodayInHistoryItem>();
}
}

// 网络请求辅助类
public static class HttpHelper
{
// 下载指定 URL 的字符串数据
public static string DownloadString(string url)
{
try
{
WebClient client = new WebClient();
client.Encoding = Encoding.UTF8;
return client.DownloadString(url);
}
catch (Exception ex)
{
Console.WriteLine($"下载字符串数据时出错:{ex.Message}");
return null;
}
}
}

// 宜忌信息类
public clasuitableAndUnsuitableItem
{
public string N**e { get; set; }
public string Type { get; set; }
public string Description { get; set; }

typescript
Copy code
public SuitableAndUnsuitableItem(string n**e, string type, string description)
{
    N**e = n**e;
    Type = type;
    Description = description;
}
}

// 宜忌信息获取辅助类
public static clasuitableAndUnsuitableHelper
{
// 获取指定日期的宜忌信息
public static List<SuitableAndUnsuitableItem> GetSuitableAndUnsuitableItems(DateTime date)
{
string url = $"https://www.tool208.com/wnl/index.php?d={date.Year}-{date.Month}-{date.Day}";
string html = HttpHelper.DownloadString(url);
if (html != null)
{
try
{
List<SuitableAndUnsuitableItem> items = new List<SuitableAndUnsuitableItem>();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='content']//div[@class='title']"))
{
string type = node.SelectSingleNode("span").InnerText;
string n**e = node.SelectSingleNode("strong").InnerText;
string description = node.SelectSingleNode("em").InnerText;
items.Add(new SuitableAndUnsuitableItem(n**e, type, description));
}
return items;
}
catch (Exception ex)
{
Console.WriteLine($"获取宜忌信息时出错:{ex.Message}");
}
}
return new List<SuitableAndUnsuitableItem>();
}
}





继续
// 星座信息类
public class ConstellationItem
{
public string N**e { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }

csharp
Copy code
public ConstellationItem(string n**e, DateTime startDate, DateTime endDate)
{
    N**e = n**e;
    StartDate = startDate;
    EndDate = endDate;
}
}

// 星座信息获取辅助类
public static class ConstellationHelper
{
// 获取指定日期的星座信息
public static ConstellationItem GetConstellation(DateTime date)
{
// 从摩羯座开始,按照星座的结束日期递增判断
DateTime startDate = new DateTime(date.Year, 1, 20);
DateTime endDate = new DateTime(date.Year, 2, 18);
if (date >= startDate && date <= endDate)
{
return new ConstellationItem("水瓶座", startDate, endDate);
}

scss
Copy code
    startDate = new DateTime(date.Year, 2, 19);
    endDate = new DateTime(date.Year, 3, 20);
    if (date >= startDate && date <= endDate)
    {
        return new ConstellationItem("双鱼座", startDate, endDate);
    }

    startDate = new DateTime(date.Year, 3, 21);
    endDate = new DateTime(date.Year, 4, 19);
    if (date >= startDate && date <= endDate)
    {
        return new ConstellationItem("白羊座", startDate, endDate);
    }

    startDate = new DateTime(date.Year, 4, 20);
    endDate = new DateTime(date.Year, 5, 20);
    if (date >= startDate && date <= endDate)
    {
        return new ConstellationItem("金牛座", startDate, endDate);
    }

    startDate = new DateTime(date.Year, 5, 21);
    endDate = new DateTime(date.Year, 6, 21);
    if (date >= startDate && date <= endDate)
    {
        return new ConstellationItem("双子座", startDate, endDate);
    }

    startDate = new DateTime(date.Year, 6, 22);
    endDate = new DateTime(date.Year, 7, 22);
    if (date >= startDate && date <= endDate)
    {
        return new ConstellationItem("巨蟹座", startDate, endDate);
    }

    startDate = new DateTime(date.Year, 7, 23);
    endDate = new DateTime(date.Year, 8, 22);
    if (date >= startDate && date <= endDate)
    {
        return new ConstellationItem("狮子座", startDate, endDate);
    }

    startDate = new DateTime(date.Year, 8, 23);
    endDate = new DateTime(date.Year, 9, 22);
    if (date >= startDate && date <= endDate)
    {
        return new ConstellationItem("**座", startDate, endDate);
    }

    startDate = new DateTime(date.Year, 9, 23);
    endDate = new DateTime(date.Year, 10, 23);
    if (date >= startDate && date <= endDate)
    {
        return new ConstellationItem("天秤座", startDate, endDate);
    }

    startDate = new DateTime(date.Year, 10, 24);
    endDate = new DateTime(date.Year, 11, 22);
    if (date >= startDate && date <= endDate)
    {
        return new ConstellationItem("天蝎座", startDate, endDate);
    }

   




继续
startDate = new DateTime(date.Year, 11, 23);
endDate = new DateTime(date.Year, 12, 21);
if (date >= startDate && date <= endDate)
{
return new ConstellationItem("射手座", startDate, endDate);
}

vbnet
Copy code
    startDate = new DateTime(date.Year, 12, 22);
    endDate = new DateTime(date.Year + 1, 1, 19);
    if (date >= startDate && date <= endDate)
    {
        return new ConstellationItem("摩羯座", startDate, endDate);
    }

    // 如果都不在以上范围内,则属于摩羯座
    startDate = new DateTime(date.Year, 12, 22);
    endDate = new DateTime(date.Year + 1, 1, 19);
    return new ConstellationItem("摩羯座", startDate, endDate);
}
}





继续
接下来是主窗体的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

n**espace WindowsFormsApp1
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}

java
Copy code
    private void MainForm_Load(object sender, EventArgs e)
    {
        // 窗体加载时,显示当前日期
        ShowDate(DateTime.Now);
    }

    private void ShowDate(DateTime date)
    {
        // 显示阳历日期
        this.lunarLabel.Text = date.ToString("yyyy年MM月dd日");

        // 显示阴历日期
        ChineseLunisolarCalendar chineseCalendar = new ChineseLunisolarCalendar();
        int year = chineseCalendar.GetYear(date);
        int month = chineseCalendar.GetMonth(date);
        int day = chineseCalendar.GetDayOfMonth(date);
        string lunarDate = ChineseCalendarHelper.GetLunarDateString(year, month, day);
        this.solarLabel.Text = lunarDate;

        // 显示天干地支
        string ganZhi = ChineseCalendarHelper.GetGanZhiDateString(date);
        this.ganzhiLabel.Text = ganZhi;

        // 显示星座
        ConstellationItem constellation = ChineseCalendarHelper.GetConstellation(date);
        this.constellationLabel.Text = constellation.N**e;

        // 显示宜忌
        GoodBadItem goodBad = ChineseCalendarHelper.GetGoodBad(date);
        this.goodLabel.Text = goodBad.Good;
        this.badLabel.Text = goodBad.Bad;

        // 显示节气
        SolarTermItem solarTerm = ChineseCalendarHelper.GetSolarTerm(date);
        this.solarTermLabel.Text = solarTerm.N**e;

        // 显示星期
        string weekDay = ChineseCalendarHelper.GetWeekDayString(date);
        this.weekDayLabel.Text = weekDay;

        // 显示五行属性
        FiveElementItem fiveElement = ChineseCalendarHelper.GetFiveElement(date);
        this.fiveElementLabel.Text = fiveElement.N**e;
        this.fiveElementLabel.ForeColor = fiveElement.Color;

        // 显示当前日期的图片
        this.pictureBox.I**ge = ChineseCalendarHelper.GetI**ge(date);
    }

    private void dateTimePicker_ValueChanged(object sender, EventArgs e)
    {
        // 当用户选择新日期时,更新界面
        DateTime date = this.dateTimePicker.Value;
        ShowDate(date);
    }

    private void todayButton_Click(object sender, EventArgs e)
    {
        // 点击今天按钮时,回到当前日期
        DateTime today = DateTime.Now;
        this.dateTimePicker.Value = today;
        ShowDate(today);
    }
}
}

在主窗体的Load事件中,会调用ShowDate方法来显示当前日期。在ShowDate方法中,我们使用ChineseCalendarHelper类中的方法来获取并显示阳历日期、阴历日期、天干地支、星座、宜忌、节气、星期和五行属性。同时,也会根据当前日期获取并显示相应的图片。

在dateTimePicker_ValueChanged事件中,当用户选择了新日期时,会调用ShowDate方法来更新界面。

在todayButton_Click事件中,当用户点击了“今天”按钮时,会回到当前日期并显示相应信息。





继续
最后,我们需要在MainForm.Designer.cs文件中进行一些修改,以便添加我们所需的控件和事件。

首先,我们需要添加DateTimePicker和“今天”按钮。在Form中双击DateTimePicker控件,将其重命名为dateTimePicker,然后将其Dock属性设置为Top。在Form中添加一个Button控件,将其Text属性设置为“今天”,将其Dock属性设置为Top,并将其Click事件绑定到todayButton_Click方法。

接下来,我们需要添加一些Label控件来显示我们所需的信息。在Form中添加9个Label控件,并设置它们的Dock属性为Top。然后,将它们的N**e属性分别设置为:solarLabel、lunarLabel、ganzhiLabel、constellationLabel、goodLabel、badLabel、solarTermLabel、weekDayLabel和fiveElementLabel。将这些Label控件的Text属性设置为空,因为我们将在ShowDate方法中动态设置它们的值。

最后,我们需要在MainForm.Designer.cs文件中将MainForm_Load事件绑定到MainForm类中的MainForm_Load方法。右键单击窗体,在属性面板中选择Events选项卡,找到Load事件,然后将其绑定到MainForm_Load方法。

完成后,我们的窗体界面就完成了。现在我们可以尝试运行应用程序,看看我们的万年历是否可以正常工作。

三国情论坛(975w.com)的特点:

满12000铜钱,点这里了解如何直接提现;

本站每个资源帖均需铜钱才能下载,没有VIP。提高了搬运门槛,最大限度保护你的帖子不被搬运;

③你的帖子审核不通过,原因一般在这里;楼主帖子有问题,你想退币的,请按照这个流程申请;

④新人有好资源的(AI优化、独家字幕、稀有),且是全网首发,就可以突破售价上限直接发布到“精品区

⑤别人发过的资源,如果你没有二次加工出独特卖点,就不要发了,否则别人举报判定重复资源就会被删除。

回复

拉黑 使用道具 举报

主题
355
战斗力
3035
美誉度
463
铜钱
4326
注册时间
2022-5-24
最后登录
2024-12-21
在线时间
211 小时
地板
发表于 2023-3-10 13:32:15 | 只看该作者
如果还有小瑕疵,可以修改需求,继续悬赏。

三国情论坛(975w.com)的特点:

满12000铜钱,点这里了解如何直接提现;

本站每个资源帖均需铜钱才能下载,没有VIP。提高了搬运门槛,最大限度保护你的帖子不被搬运;

③你的帖子审核不通过,原因一般在这里;楼主帖子有问题,你想退币的,请按照这个流程申请;

④新人有好资源的(AI优化、独家字幕、稀有),且是全网首发,就可以突破售价上限直接发布到“精品区

⑤别人发过的资源,如果你没有二次加工出独特卖点,就不要发了,否则别人举报判定重复资源就会被删除。

回复

拉黑 使用道具 举报

  • 打卡等级:著名演员
  • 打卡总天数:56
  • 最近打卡:2024-12-22 10:04:45

主题
1783
战斗力
20140
美誉度
535
铜钱
4428
注册时间
2022-3-27
最后登录
2024-12-22
在线时间
178 小时

阳光心情动漫达人摸金校尉荣誉会员优秀会员普通精华长期在线老会员勋章热心人士

5#
 楼主| 发表于 2023-3-11 11:27:15 | 只看该作者
tiger008 发表于 2023-3-10 13:32
如果还有小瑕疵,可以修改需求,继续悬赏。

你能不能把ChatGPT的代码给我弄成可以生成EXE的工程文件?
唵嘛呢叭咪吽
回复

拉黑 使用道具 举报

主题
355
战斗力
3035
美誉度
463
铜钱
4326
注册时间
2022-5-24
最后登录
2024-12-21
在线时间
211 小时
6#
发表于 2023-3-11 13:23:17 | 只看该作者
杜净隆 发表于 2023-3-11 11:27
你能不能把ChatGPT的代码给我弄成可以生成EXE的工程文件?

这个我暂时做不到,因为这件事得我人工做了,我暂时没那么多时间,
当然,你**给到位的话,也是可以做的。
现在还有什么问题?chatgpt给的代码还有小错误?你自己改改,整合下,应该不难吧?
需要的话,你可以把描述要求改改,再悬赏一版,它又会给不同的代码了。

三国情论坛(975w.com)的特点:

满12000铜钱,点这里了解如何直接提现;

本站每个资源帖均需铜钱才能下载,没有VIP。提高了搬运门槛,最大限度保护你的帖子不被搬运;

③你的帖子审核不通过,原因一般在这里;楼主帖子有问题,你想退币的,请按照这个流程申请;

④新人有好资源的(AI优化、独家字幕、稀有),且是全网首发,就可以突破售价上限直接发布到“精品区

⑤别人发过的资源,如果你没有二次加工出独特卖点,就不要发了,否则别人举报判定重复资源就会被删除。

回复

拉黑 使用道具 举报

  • 打卡等级:著名演员
  • 打卡总天数:56
  • 最近打卡:2024-12-22 10:04:45

主题
1783
战斗力
20140
美誉度
535
铜钱
4428
注册时间
2022-3-27
最后登录
2024-12-22
在线时间
178 小时

阳光心情动漫达人摸金校尉荣誉会员优秀会员普通精华长期在线老会员勋章热心人士

7#
 楼主| 发表于 2023-3-11 15:31:19 | 只看该作者
tiger008 发表于 2023-3-11 13:23
这个我暂时做不到,因为这件事得我人工做了,我暂时没那么多时间,
当然,你**给到位的话,也是可以做 ...

你先试试能不能弄成可以生成EXE的Microsoft Visual Studio工程文件,

成了的话我可以**了。
唵嘛呢叭咪吽
回复

拉黑 使用道具 举报

主题
355
战斗力
3035
美誉度
463
铜钱
4326
注册时间
2022-5-24
最后登录
2024-12-21
在线时间
211 小时
8#
发表于 2023-3-11 15:35:30 | 只看该作者
杜净隆 发表于 2023-3-11 15:31
你先试试能不能弄成可以生成EXE的Microsoft Visual Studio工程文件,

成了的话我可以**了。 ...

你开个500铜钱悬赏吧,我试验一下,把结果告诉你。
不管能不能正常编译,都把我做的完整的c#工程给你。
低于这个价我就不试了。

三国情论坛(975w.com)的特点:

满12000铜钱,点这里了解如何直接提现;

本站每个资源帖均需铜钱才能下载,没有VIP。提高了搬运门槛,最大限度保护你的帖子不被搬运;

③你的帖子审核不通过,原因一般在这里;楼主帖子有问题,你想退币的,请按照这个流程申请;

④新人有好资源的(AI优化、独家字幕、稀有),且是全网首发,就可以突破售价上限直接发布到“精品区

⑤别人发过的资源,如果你没有二次加工出独特卖点,就不要发了,否则别人举报判定重复资源就会被删除。

回复

拉黑 使用道具 举报

  • 打卡等级:著名演员
  • 打卡总天数:56
  • 最近打卡:2024-12-22 10:04:45

主题
1783
战斗力
20140
美誉度
535
铜钱
4428
注册时间
2022-3-27
最后登录
2024-12-22
在线时间
178 小时

阳光心情动漫达人摸金校尉荣誉会员优秀会员普通精华长期在线老会员勋章热心人士

9#
 楼主| 发表于 2023-3-11 16:15:35 | 只看该作者
tiger008 发表于 2023-3-11 15:35
你开个500铜钱悬赏吧,我试验一下,把结果告诉你。
不管能不能正常编译,都把我做的完整的c#工程给你。
...

你会编程吗为什么不能一手交钱一手交货?我要一个完整的C#万年历工程_百度云下载_三国情 (975w.com)
唵嘛呢叭咪吽
回复

拉黑 使用道具 举报

主题
355
战斗力
3035
美誉度
463
铜钱
4326
注册时间
2022-5-24
最后登录
2024-12-21
在线时间
211 小时
10#
发表于 2023-3-11 16:17:31 | 只看该作者
杜净隆 发表于 2023-3-11 16:15
你会编程吗为什么不能一手交钱一手交货?

会啊,但是我时间不多。我又不知道需要花多少时间下去。
你要是需要百分白能用的exe,只能RMB悬赏了,不收铜币的。
500铜币是只是尝试一次的**。

三国情论坛(975w.com)的特点:

满12000铜钱,点这里了解如何直接提现;

本站每个资源帖均需铜钱才能下载,没有VIP。提高了搬运门槛,最大限度保护你的帖子不被搬运;

③你的帖子审核不通过,原因一般在这里;楼主帖子有问题,你想退币的,请按照这个流程申请;

④新人有好资源的(AI优化、独家字幕、稀有),且是全网首发,就可以突破售价上限直接发布到“精品区

⑤别人发过的资源,如果你没有二次加工出独特卖点,就不要发了,否则别人举报判定重复资源就会被删除。

回复

拉黑 使用道具 举报

主题
355
战斗力
3035
美誉度
463
铜钱
4326
注册时间
2022-5-24
最后登录
2024-12-21
在线时间
211 小时
11#
发表于 2023-3-11 16:27:59 | 只看该作者
杜净隆 发表于 2023-3-11 16:15
你会编程吗为什么不能一手交钱一手交货?我要一个完整的C#万年历工程_百度云下载_三国情 (975w.com)
...

我回复了,请结帖。
随后我给你弄工程文件。

三国情论坛(975w.com)的特点:

满12000铜钱,点这里了解如何直接提现;

本站每个资源帖均需铜钱才能下载,没有VIP。提高了搬运门槛,最大限度保护你的帖子不被搬运;

③你的帖子审核不通过,原因一般在这里;楼主帖子有问题,你想退币的,请按照这个流程申请;

④新人有好资源的(AI优化、独家字幕、稀有),且是全网首发,就可以突破售价上限直接发布到“精品区

⑤别人发过的资源,如果你没有二次加工出独特卖点,就不要发了,否则别人举报判定重复资源就会被删除。

回复

拉黑 使用道具 举报

主题
355
战斗力
3035
美誉度
463
铜钱
4326
注册时间
2022-5-24
最后登录
2024-12-21
在线时间
211 小时
12#
发表于 2023-3-11 18:09:29 | 只看该作者
本帖最后由 tiger008 于 2023-3-11 18:14 编辑

私信发给你了,
我搞成一个可以编译成功的exe文件了。
有问题的部分暂时注释起来了,你要的功能应该还需要手工修正之后,才能完成。
比如有的函数有部分定义缺失等等,可以再次写文字要求悬赏,我给你生成新的小函数。
把这些小函数替换掉,应该就可以了。这样的

三国情论坛(975w.com)的特点:

满12000铜钱,点这里了解如何直接提现;

本站每个资源帖均需铜钱才能下载,没有VIP。提高了搬运门槛,最大限度保护你的帖子不被搬运;

③你的帖子审核不通过,原因一般在这里;楼主帖子有问题,你想退币的,请按照这个流程申请;

④新人有好资源的(AI优化、独家字幕、稀有),且是全网首发,就可以突破售价上限直接发布到“精品区

⑤别人发过的资源,如果你没有二次加工出独特卖点,就不要发了,否则别人举报判定重复资源就会被删除。

回复

拉黑 使用道具 举报

  • 打卡等级:著名演员
  • 打卡总天数:56
  • 最近打卡:2024-12-22 10:04:45

主题
1783
战斗力
20140
美誉度
535
铜钱
4428
注册时间
2022-3-27
最后登录
2024-12-22
在线时间
178 小时

阳光心情动漫达人摸金校尉荣誉会员优秀会员普通精华长期在线老会员勋章热心人士

13#
 楼主| 发表于 2023-3-11 18:48:22 | 只看该作者
tiger008 发表于 2023-3-11 18:09
私信发给你了,
我搞成一个可以编译成功的exe文件了。
有问题的部分暂时注释起来了,你要的功能应该还需要 ...

真正的大神,我迫不及待的想要整合到我的八字软件中。

请加我QQ1312518150防止失联。
唵嘛呢叭咪吽
回复

拉黑 使用道具 举报

主题
355
战斗力
3035
美誉度
463
铜钱
4326
注册时间
2022-5-24
最后登录
2024-12-21
在线时间
211 小时
14#
发表于 2023-3-11 18:56:52 | 只看该作者
杜净隆 发表于 2023-3-11 18:48
真正的大神,我迫不及待的想要整合到我的八字软件中。

请加我QQ1312518150防止失联。 ...

我QQ出了点问题,暂时不能用,以后有必要的话,可以加微信联系。
这程序还有不少小问题,还是需要你修改的,不过大的框架问题不大了。
准备好铜币,以后有需求继续悬赏吧。

三国情论坛(975w.com)的特点:

满12000铜钱,点这里了解如何直接提现;

本站每个资源帖均需铜钱才能下载,没有VIP。提高了搬运门槛,最大限度保护你的帖子不被搬运;

③你的帖子审核不通过,原因一般在这里;楼主帖子有问题,你想退币的,请按照这个流程申请;

④新人有好资源的(AI优化、独家字幕、稀有),且是全网首发,就可以突破售价上限直接发布到“精品区

⑤别人发过的资源,如果你没有二次加工出独特卖点,就不要发了,否则别人举报判定重复资源就会被删除。

回复

拉黑 使用道具 举报

严禁灌水、讽刺、挖苦、辱骂分享者行为。回复前请详读:点击进入 理性回复,以免永久封禁。
您需要登录后才可以回帖 登录 | 注册入口

本版积分规则

免责声明:本站所有资源均收集自互联网,没有提供影片资源存储,也未参与录制、上传。若本站收录的资源涉及您的版权或知识产权或其他利益,请附上版权证明邮件告知,在收到邮件后24小时内删除。

Copyright © 2021 [三国情] 管理员邮箱:97889527#qq.com(#=@)

手机版|小黑屋|隐私政策|三国情论坛 |网站地图

快速回复 返回顶部 返回列表