1、面向对象课程设计题 目 万年历程序设计 系 部 商学系 专 业 信息管理与信息系统 班 级 信息 N122 学 号 学生姓名 指导教师 编写日期 2015.01.15 第一章 需求分析 3第二章 概要设计 4第三章 详细设计与编码 6第四章 调试分析 9第五章 用户使用说明 12第六章 设计心得 13第一章 需求分析 如今的社会是一个信息的时代, 随 着 电 脑 等 科 技 产 品在 人 们 生 活 中 占 据 着 越 来 越 重 要 的 地 位 , 人 们 就 会 越 加 的善 加 利 用 , 这 为 我 们 的 生 活 带 来 了 极 大 的 效 率 , 同 时 计 算机 的 普 及 更
2、可 以 看 出 它 所 占 的 地 位 。 万年历作为日常中的一种小工具,它具有多方面的小工能,主要在日期的显示上给人以直观的表达效果,在日期的查询上方便简洁,还有就是在某些节日的提醒上都给我们带来极大的方便,是一种比较实用的小工具。我们每个人都可以在自己的个人电脑上进行制作,一方面不仅可以加强巩固我们对 C#语言的学习,还可以通过自主的编程找到自身的缺点。这对培养我们自身的创新能力和动手能力具有很大的作用。第二章 概要设计 1.设计要求 程序完成运行时,能过正确的表达出所输入年份的万年历。2.总体设计实现操作流程图运行万年历程序进入程序界面输入所查年份输出万年历 输出万年历程序设计流程图万年
3、历设计编写相关代码平年 闰年 区分进行编译修改完成代码编写第三章 详细设计与编码源代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Linq;using System.Windows.Forms;using System.Globalization;namespace AllAgesCalendarpublic partial class Form1 :
4、Formpublic 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 0);return sb.ToString();private static string ChineseNumb
5、er = “一二三四五六七八九“;public string GetMonth(DateTime time)int month = calendar.GetMonth(time);int year = calendar.GetYear(time);int leap = 0;for (int i = 3; i 0) month-;return (leap = month + 1 ? “闰“ : “) + ChineseMonthNamemonth - 1;public static readonly string ChineseMonthName = new string “正“, “二“ ,
6、“三“, “ 四“, “五 “, “六“, “ 七“, “八“ , “九“, “ 十“, “十一“ , “十二“ ;public string GetDay(DateTime time)return ChineseDayNamecalendar.GetDayOfMonth(time) - 1;public static readonly string ChineseDayName = new string “初一“ ,“初二“,“ 初三“,“初四“ ,“初五“,“初六“ ,“初七“,“初八?“,“ 初九“,“初十“,“十一“ ,“十二“,“ 十三“,“十四“ ,“十五“,“十六“,“十七“ ,
7、“十八“,“十九 “,“二十 “,“廿一“ ,“廿二“,“ 廿三“,“廿四“ ,“廿五“,“廿六“ ,“廿七“,“廿八“ ,“廿九 “,“三十 “;public string GetStemBranch(DateTime time)int sexagenaryYear = calendar.GetSexagenaryYear(time);string stemBranch = CelestialStem.Substring(calendar.GetCelestialStem(sexagenaryYear) - 1, 1) + TerrestrialBranch.Substring(calend
8、ar.GetTerrestrialBranch(sexagenaryYear) - 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(c
9、alendar.GetTerrestrialBranch(sexagenaryYear) - 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.Se
10、lectionStart),GetDay(monthCalendar1.SelectionStart);toolTip1.ToolTipTitle = monthCalendar1.SelectionStart.ToShortDateString();toolTip1.Show(strYesr + “ “ + getReturnYear(monthCalendar1.SelectionStart) + “年 “, monthCalendar1, monthCalendar1.Location, 5000);第四章 调试分析 程序运行测试进入程序界面:(进入程序的第一步) 输入所查年份:(例上输
11、入所查年月 2010-2019)现实所查年份万年历:(以上就是完整的输出结果)第五章 用户使用说明 这是一个简单的万年历编程,用户可以通过键入所查的年份,便可以轻松快速的查询这一年的万年历,使用用户在运行程序后,可以通过界面的指示键入所查的年份。第六章 设计心得通过几天的不懈努力,这一份面向对象的课程设计终于在自己的努力与同学的帮助下顺利的完成了。前期可能是自己的一些方面薄弱,并没有完全的理解一些代码,从而设计出来的程序编译出错,还好在一些知识能力强的同学下进行了合理的改正才有了现在的这个完整的程序。设计一个万年历的程序之前,可能都是有自己大概的一点想法,也许看上去简单,但通过实际的操作我便发现,各种细小的错误都可能会出现,这便让我意识到个人平时的动手操作还是有欠缺的。所以还是如老师讲的那般,以电脑软件的检验来通过不断的练习完善自己的薄弱点。