万年历课程设计报告报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
WORD格式可编辑
面向对象课程设计
题目万年历程序设计
系部商学系
专业信息管理与信息系统
班级信息N122 学号
学生姓名
指导教师
编写日期 2015.01.15
第一章需求分析 (3)
第二章概要设计 (4)
第三章详细设计与编码 (6)
第四章调试分析 (10)
第五章用户使用说明 (13)
第六章设计心得 (14)
第一章需求分析
如今的社会是一个信息的时代,随着电脑等科技产品在人们生活中占据着越来越重要的地位,人们就会越加的善加利用,这为我们的生活带来了极大的效率,同时计算机的普及更可以看出它所占的地位。
万年历作为日常中的一种小工具,它具有多方面的小工能,主要在日期的显示上给人以直观的表达效果,在日期的查询上方便简洁,还有就是在某些节日的提醒上都给我们带来极大的方便
,是一种比较实用的小工具。
我们每个人都可以在自己的个人电脑上进行制作,一方面不仅可以加强巩固我们对C#语言的学习,还可以通过自主的编程找到自身的缺点。
这对培养我们自身的创新能力和动手能力具有很大的作用。
第二章概要设计
1.设计要求
程序完成运行时,能过正确的表达出所输入年份的万年历。
2.总体设计
<1>实现操作流程图
<2>程序设计流程图
第三章详细设计与编码
<1>源代码
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Windows.Forms;
using System.Globalization;
namespace AllAgesCalendar
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
string intmonth =
monthCalendar1.TodayDate.Month.ToString();
string intdaty =
monthCalendar1.TodayDate.Day.ToString();
if (monthCalendar1.TodayDate.Month < 10)
{
intmonth = "0" +
monthCalendar1.TodayDate.Month.ToString();
}
if (monthCalendar1.TodayDate.Day < 10)
{
intdaty = "0" +
monthCalendar1.TodayDate.Day.ToString();
}
string s = String.Format("{0}年{1}月{2}", GetStemBranch(monthCalendar1.TodayDate),
GetMonth(monthCalendar1.TodayDate),
GetDay(monthCalendar1.TodayDate)); label1.Text = monthCalendar1.TodayDate.Year + "年" + intmonth + "月" + intdaty + "日" + " " + s + " " + getReturnYear(monthCalendar1.TodayDate) + "年";
label1.ForeColor = Color.Green;
}
private void label1_Click(object sender, EventArgs e) {
}
ChineseLunisolarCalendar calendar = new ChineseLunisolarCalendar();
public string GetYear(DateTime time)
{
StringBuilder sb = new StringBuilder();
int year = calendar.GetYear(time);
int d;
do
{
d = year % 10;
sb.Insert(0, ChineseNumber[d]);
year = year / 10;
} while (year > 0);
return sb.ToString();
}
private static string ChineseNumber = "〇一二三四五六七八九";
public string GetMonth(DateTime time)
{
int month = calendar.GetMonth(time);
int year = calendar.GetYear(time);
int leap = 0;
for (int i = 3; i <= month; i++)
{
if (calendar.IsLeapMonth(year, i))
{
leap = i;
break;
}
}
if (leap > 0) month--;
return (leap == month + 1 ? "闰" : "") + ChineseMonthName[month - 1];
}
public static readonly string[] ChineseMonthName = new string[] { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" };
public string GetDay(DateTime time)
{
return
ChineseDayName[calendar.GetDayOfMonth(time) - 1];
}
public static readonly string[] ChineseDayName = new string[] {
"初一","初二","初三","初四","初五","初六¨´","初七","初八?","初九","初十",
"十一","十二","十三","十四","十五","十六","十七","十八","十九","二十",
"廿一","廿二","廿三","廿四","廿五","廿六¨´","廿七","廿八","廿九","三十"};
public string GetStemBranch(DateTime time)
{
int sexagenaryYear =
calendar.GetSexagenaryYear(time);
string stemBranch =
CelestialStem.Substring(calendar.GetCelestialStem(sexagenar yYear) - 1, 1) +
TerrestrialBranch.Substring(calendar.GetTerrestrialBranch(s exagenaryYear) - 1, 1);
return stemBranch;
}
public const string CelestialStem = "甲乙丙丁戊己庚辛壬癸
";
public const string TerrestrialBranch = "子丑寅卯辰巳午未申酉戌亥";
public string getReturnYear(DateTime time)
{
int sexagenaryYear =
calendar.GetSexagenaryYear(time);
string Tree =
TreeYear.Substring(calendar.GetTerrestrialBranch(sexagenary Year) - 1, 1);
return Tree;
}
public const string TreeYear = "鼠牛虎兔龙蛇马羊猴鸡狗猪";
private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
string strYesr = String.Format("{0}年{1}月{2}", GetStemBranch(monthCalendar1.SelectionStart),
GetMonth(monthCalendar1.SelectionStart),
GetDay(monthCalendar1.SelectionStart));
toolTip1.ToolTipTitle =
monthCalendar1.SelectionStart.ToShortDateString();
toolTip1.Show(strYesr + " " +
getReturnYear(monthCalendar1.SelectionStart) + "年", monthCalendar1, monthCalendar1.Location, 5000);
}
}
}
第四章调试分析
<1>程序运行测试
①进入程序界面:。