c语言程序设计年历显示_第1页
c语言程序设计年历显示_第2页
c语言程序设计年历显示_第3页
c语言程序设计年历显示_第4页
c语言程序设计年历显示_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 13 计算机科学与技术学院 课程设计报告 2012 2013 学年第 一 学期 课程名称 C C 高级语言程序设计课程设计 设计题目 年历显示 学生姓名 学 号 专业班级 指导教师 2012 年 9 月 20 日 1 13 目目 录录 一 课程设计问题描述一 课程设计问题描述 1 1 课程设计题目课程设计题目 1 2 设计任务要求设计任务要求 1 二 总体设计二 总体设计 1 1 总体思路总体思路 1 2 遇到的问题遇到的问题 1 3 问题的解决问题的解决 1 4 大概的流程图大概的流程图 1 三 详细设计三 详细设计 3 1 显示输入年份的日历显示输入年份的日历 3 2 显示所查询月份的日历显示所查询月份的日历 4 3 判断当天是星期几 是否为法定假日判断当天是星期几 是否为法定假日 4 四 运行结果测试与分析四 运行结果测试与分析 5 1 输出结果输出结果 5 2 分析分析 7 五 结论与心得五 结论与心得 7 1 13 一 课程设计问题描述一 课程设计问题描述 1 课程设计题目课程设计题目 年历显示 2 设计任务要求设计任务要求 功能要求 1 输入一个年份 输出是在屏幕上显示该年的日历 假定输 的年份在 1940 2040 年之间 2 输入年月 输出该月的日历 3 输入年月日 输出距今天还有多少天 星期几 是否是公历节日 二 总体设计二 总体设计 1 总体思路总体思路 想要实现输出某年的日历 必须知道一个常识 那就是公元一年一月一日是 星期一 这是一个重要的切入点 如果知道了这一点 那问题就迎刃而解了 我们可以先计算出公元一年一月一日到这年一月一日之前的总天数 这用 for 语句较易实现 不过要注意到平年与闰年的区别 有了总天数 再除以 7 余 数是什么 那这年的一月一日就是星期几 如此依次写出一月的日历 然后一 月的天数加上总天数得到的结果再除以 7 如此知道二月一日是星期几 写出 二月的月历 如此便可以依次写出一到十二月的日历 至于输入年月 输出该 月的日历 思路相同 至于判断是否为公历节日 用一个 if 语句便可实现 2 遇到的问题遇到的问题 1 函数的调用与套用 具体来说就是如何在一个构造的函数中调用另一个构 造函数 2 把每月的日历设计的美观 如何让星期和下面的数字对齐 3 如何把握日历的前几天的空格 使每月的第一天正好对在它应该的星期 下 3 问题的解决问题的解决 第一个问题我通过查书 需要先把调用的函数在该构造函数中声明 至于第 二和第三个问题 都是通过反复调试 反复修改 最后基本达到了要求 4 大概的流程图大概的流程图 2 13 开始 输入你查询 的年份 输入年月输入年月日 和当前日期 how where how where how where why when 输出该年的日历输入所查询月份 的日历 判断所输入的年 份是否为闰年 结束 判断当天是星期几 是否为法定假日 3 13 三 详细设计三 详细设计 1 显示输入年份的日历显示输入年份的日历 当我们输入年份任意公元后的年份 year 时 可以通过一个 for 语句 算出 从公元一年到 year 1 年的总天数 这其中要注意平年与闰年的区别 平年 365 天 闰年是 366 天 把这一部分用 how 函数表示 算出总天数 Z 后 用 Z 除 以 7 余数是 d 则 year 这一年的一月一日便是星期 d 如此则一月的日历可表 示出来 然后把 Z 加上一月的天数 tian 得到的新值赋给 Z 再用 Z 除以 7 重 新得到新的余数 d 如此可知二月的第一天是星期几 可表示出二月的日历 依 次循环 用 for i 0 i 12 i 语句可表示出该年的日历 注意闰年二月是 29 天 平年是 28 天 开始 输入 year S 0 i 1 是否为闰 年 S S 366S S 365 NY i i year 4 13 2 显示所查询月份的日历显示所查询月份的日历 当我们输入 year 和 month 时 同上 用 how 函数算出公元一年一月一日 到 year 1 年的总天数 Z 再用一个 for i 1 i month i 依次加上 1 月到 month 1 月的天数赋值给 Z 用 Z 除以 7 得余数 d 那本月的第一天便是星期几 便可表示 出本月的日历 3 判断当天是星期几 是否为法定假日判断当天是星期几 是否为法定假日 当我们输入 year month 和 day 同上 算出从公元一年一月一日到 month 1 月以前的总天数 Z 再加上 day 赋值给 Z 用 Z 除以 7 得余数 d 那本天便是星期 d 调用 when 函数 可判断本日是否是法定假日 输出 s 结束 5 13 四 运行结果测试与分四 运行结果测试与分 析析 1 输出结果输出结果 6 13 7 13 2 分析分析 8 13 在测试的过程中 基本都是一些语法上的缺陷 没有什么太大的逻辑错误 根据系统的提示 较易容易改正 还有就是在调试过程中 月份不够美观 基 本是前后左右不能对齐 中间的空格不易把握 不过 在反复的调试与修改之 后 最终实现了上面的效果 虽说不是太完美 也不至于太难看 五 结论与心得五 结论与心得 当我第一次看到这个程序问题时 感觉比较容易 就选择了它 可当我仔细 研究这个问题时 却傻了眼 没有我想象的那么简单 首先使我困惑的是每年 的第一天是星期几怎么计算 这使我郁闷了很久 一度没有头绪 后来 当我 和同学交流时 知道了公元一年一月一日是星期一 这才恍然大悟 后来思路 就有了 整个的过程也就想明白了 剩下的就是程序的编写与测试的过程了 在实际的编写过程中 也遇到了很多麻烦 不过 在一次次的调试与修改后 这些问题也一一克服 要说我编写的这个代码 也有许多不尽如人意处 最大的问题是我是按照 三个问题依次编下去 也就是说三个问题是连续的 如果你想要知道第三个问 题 必须从第一个问题开始做下去 一直到第三个问题 不能直接出现第三个问 题的结果 我一直在寻找一个办法 能够把三个问题分开 可很遗憾 直到现 在 也未能成功 通过这次编写这个代码 我知道了思考的重要性 也明白了做任何事都不 能轻易放弃 也不能轻易否决自己 多想想 多问一问 问题也许就解决了 附录附录 include int how int A int i s 0 day for i 1 i A 1 i if i 4 0 else day 365 s s day return s int where int B int C int tian switch C case 1 tian 31 break case 2 9 13 if B 4 0 else tian 28 break case 3 tian 31 break case 4 tian 30 break case 5 tian 31 break case 6 tian 30 break case 7 tian 31 break case 8 tian 31 break case 9 tian 30 break case 10 tian 31 break case 11 tian 30 break case 12 tian 31 break return tian void why int E switch E case 1 printf 该日星期一 n break case 2 printf 该日星期二 n break case 3 printf 该日星期三 n break case 4 printf 该日星期四 n break case 5 printf 该日星期五 n break case 6 printf 该日星期六 n break case 7 printf 该日星期日 n break void when int F int G if F 1 else printf 当天不是法定节日 void main int year d j Z di did m n D x y z h k l jian Z1 printf 输入你所查寻日历的年份 scanf d Z how year 10 13 for j 1 j 12 j d Z 7 printf n printf d 月份 n j printf sun mon tue wed thu fri sat n if d 6 for di 1 di d 1 di printf for did 1 did where year j did printf d did if did 10 printf else printf if did 6 d did 6 d 7 0 did where year j printf n Z Z where year j printf 输入所查日历的年月 scanf d d Z how m for j 1 j n 1 j D where m j Z Z D d Z 7 printf n printf d 月份 n j printf sun mon tue wed thu fri sat n if d 6 for di 1 di d 1 di printf for did 1 did where year j did printf d did if did 10 printf else printf if did 6 d did 6 d 7 0 did where year j 11 13 printf n printf 输入年月日 scanf d d d Z how x for j 1 j y 1 j D where x j Z Z D Z Z z printf 输入当前年月日 scanf d d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论