万年历C语言程序设计_第1页
万年历C语言程序设计_第2页
万年历C语言程序设计_第3页
万年历C语言程序设计_第4页
万年历C语言程序设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、沈阳航空航天大学 课课 程程 设设 计计 报报 告告 课程设计名称:C C 语言课程设计语言课程设计 课程设计题目:万年历软件设计万年历软件设计 学 院:计算机学院 专 业:计算机科学与技术 班 级: 学 号: 姓 名: 指导教师:从丽晖 起止时间:2010年3月4日-2010年3月19日 目目 录录 第第 1 章章 需求分析需求分析.2 1.1 课程设计的题目及要求 .2 1.2 题目分析 .2 第第 2 章章 概要设计概要设计.3 2.1 主要函数和函数功能描述 .3 2.1.1 主要函数.3 2.1.2 函数的功能描述.3 2.2 功能模板 .4 第第 3 章章 详细设计详细设计.5 3

2、.1 程序说明 .5 3.2 程序流程 .6 第第 4 章章 调试分析调试分析.7 4.1 调试过程中遇到的问题及解决方法 .7 4.2 经验总结 .7 参考文献参考文献.8 附附 录录.9 总结总结.11 第 1 章 需求分析 1.1 课程设计的题目及要求课程设计的题目及要求 题目:万年历软件设计万年历软件设计 内容:设计一个简单的万年历软件,可实现对任意年份日历的输出。内容:设计一个简单的万年历软件,可实现对任意年份日历的输出。 1 1、输入年、月、日:输出时星期几;输入年、月、日:输出时星期几; 2 2、打印任意年份的日历;打印任意年份的日历; 3 3、界面要优化,直观,大方,美观;界面

3、要优化,直观,大方,美观; 基本要求:基本要求:1 1、独立完成系统的设计、编码和调试。、独立完成系统的设计、编码和调试。 2 2、系统利用、系统利用 C C 语言实现。语言实现。 3 3、按照课程设计规范书写课程设计报告。、按照课程设计规范书写课程设计报告。 4 4、熟练掌握基本的调试方法,并将程序调试通过。、熟练掌握基本的调试方法,并将程序调试通过。 1.2 题目分析题目分析 界面优化,直观,大方,美观需要做一个菜单,可实现直接输入所需要的界面优化,直观,大方,美观需要做一个菜单,可实现直接输入所需要的 信息,不用显示源代码。对于显示任意一天的星期数可以利用网络找到公式。信息,不用显示源代

4、码。对于显示任意一天的星期数可以利用网络找到公式。 打印日历先要判断这个月的天数,打印日历先要判断这个月的天数,1,3,5,7,8,10,12 月为月为 31 天。天。 4,6,9,11 月为月为 30 天,天,2 月要判断是否为闰年,是为月要判断是否为闰年,是为 29 天,不是为天,不是为 28 天;判天;判 断出天数后断出天数后 计算本月第一天是星期几,然后打印出日历。计算本月第一天是星期几,然后打印出日历。 第 2 章 概要设计 2.1 主要函数和函数功能描述主要函数和函数功能描述 2.1.1 主要函数主要函数 1 关于设计菜单的函数关于设计菜单的函数 menu_select().; 2

5、 leap()函数;()函数; 3 days_month()() 4 firstday()() 2.1.2 函数的功能描述函数的功能描述 1.菜单函数菜单函数 mune_select()() ;直接显示菜单;直接显示菜单; 2 判断是否为闰年的判断是否为闰年的 leap()函数;()函数; 3 判断这个月天数的判断这个月天数的 days_month()() 4 判断这个月第一天是星期几的函数判断这个月第一天是星期几的函数 firstday()() 2.2 功能模板图显示功能模板图显示 万年历软件万年历软件 1 显 示菜 单. 2 输 入年 月日 显示 星期 几 3.打 印日 历 第三章 详细设

6、计 3.1程序说明程序说明 先做一个菜单窗口,可以重复这个窗口, 输入可以查询任意某一天的星期数例如输入年月日得到 。 输入可以打印任意月份的日历例如输入年月得到 对于第一个功能输出任意天的星期先要算出输入的是这一年的第几天, (要注 意对闰年的判断) 。然后利用公式 S=(year-1+(year-1)/4-(year-1)/100+(year-1) /400+sum)%7; X 表示年份,C 是该年份元旦开始到这一日的天数 S/7 的系数就是星期数. ,对日历的打印,用函数()判断要输出的月份是多少天, 再用公式 w=(1+2*month+3*(month+1)/5+year+year/4

7、+year/400-year/100)%7+1; 算出输入月份第一天的星期数。 3.2程序流程程序流程 主函数图 计算星期图 打印日历图 第第 4 章章 调试分析调试分析 4.1 调试过程中遇到的问题及解决方法调试过程中遇到的问题及解决方法 问题:问题: (1 1)问题:没有毅力调程序,遇见困难总是逃避。解决办法,在助导的把问题:没有毅力调程序,遇见困难总是逃避。解决办法,在助导的把 课设的重要程度说明后,坚持了下来。课设的重要程度说明后,坚持了下来。 (2 2)问题。很多程序都是不通过,总是无定义。问题。很多程序都是不通过,总是无定义。 解决办法:没有认真的看借来的书籍,没有分清楚解决办法:

8、没有认真的看借来的书籍,没有分清楚 t.ct.c 与与 V V。C C 的区别。的区别。 (3 3) 问题:打印的日历总是提前一天,对控制格式还不是很了解。问题:打印的日历总是提前一天,对控制格式还不是很了解。 解决方法解决方法: :细心调试发现问题的原因,然后解决;细心调试发现问题的原因,然后解决; (4 4) 问题问题: :对计算输入年月日输出星期几的公式没有具体查清,导致自己对计算输入年月日输出星期几的公式没有具体查清,导致自己 修改还没有结果修改还没有结果 ,浪费了时间。,浪费了时间。 4.2 经验总结经验总结 多看书籍尤其是教科书,把书上的知识点弄清楚然后看课外书来增加专多看书籍尤其

9、是教科书,把书上的知识点弄清楚然后看课外书来增加专 业知识,要好好利用学校图书馆的资源和网络资源,但是不能盲目的抄袭。业知识,要好好利用学校图书馆的资源和网络资源,但是不能盲目的抄袭。 做事要向前赶,不能拖。做事要向前赶,不能拖。 参考文献参考文献 11刘振安刘振安 C C 语言程序设计语言程序设计 课程设计课程设计 机械工业出版社机械工业出版社 20042004 22张长海张长海C C 语言程序设计语言程序设计MM北京:高等教育出版社,北京:高等教育出版社,20062006 33于帆于帆. .赵妮赵妮. .王中生等程序设计基础王中生等程序设计基础 (C(C 语言版语言版) )清华大学出版社清

10、华大学出版社 44谭明金谭明金 俞海英俞海英 C C 语言程序设计实例精粹语言程序设计实例精粹 电子工业出版社电子工业出版社 附 录 源程序代码:源程序代码: #include #include #include int leap (int year) ;/判断是否为闰年 int days_month (int month,int year) ;/判断这个月的天数 int firstday(int month,int year);/显示本月第一天是星期几 int menu_select(); void f() int day,month,year,sum,leap,S; printf(n 请输

11、入年月日n); scanf(%d%d%d, switch(month) case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; de

12、fault:printf(data error);break; sum=sum+day; if(year%400=0|(year%4=0 else leap=0; if(leap=1 S=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+sum)%7; /X 表示年份,C 是该年份元旦开始到这一日的天数 /S/7 的系数就是星期数 /01printf(%d,S); switch(S) case 1:printf(星期一n);break; case 2:printf(星期二n);break; case 3:printf(星期三n);break; case

13、4:printf(星期四n);break; case 5:printf(星期五n);break; case 6:printf(星期六n);break; case 0:printf(星期日n);break; void g() int i,j=1,k=1,a,b,month,year; printf(n 输入年月:n); scanf(%d%d, b=days_month(month,year); a=firstday (month,year); printf(*n); printf( Sun Mon Tue Wed Thu Fri Sat n); if(a=7) for(i=1;i=b;i+) p

14、rintf(%4d,i); if(i%7=0) printf(n); if(a!=7) while (j=4*a) printf( ); j+; for(i=1;i=b;i+) printf(%4d,i); if(i=7*k-a) printf(n); k+; printf(n*n); printf(n); int leap (int year) if(year%4=0 else return 0; int days_month (int month,int year) if(month=1|month=3|month=5|month=7|month=8|month=10|month=12)

15、return 31; if(month=4|month=6|month=9|month=11) return 30; if(month=2 else return 28; int firstday(int month,int year) int w; w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1; return w; void main() for(;) switch(menu_select() case 1: printf(输入年月日计算星期几n);f(); break; case 2: printf(打印任意日历

16、n);g(); break; case 3: printf(谢谢使用!n); exit(0); int menu_select() char s; int cn; printf(1. 输入年月日计算星期几n); printf(2. 打印任意日历n); printf(3.谢谢使用! n); printf(input 1-3:); do s=getchar(); cn=(int)s-48; while(cn6); return cn; 总结 课程设计总结:自从学习了课程设计总结:自从学习了 C 语言后,一直觉得模模糊糊,什么也不会,一个语言后,一直觉得模模糊糊,什么也不会,一个 学期过去了总想学点现实中能用到的知识,在一开学就开始做课程设计学习如学期过去了总想学点现实中能用到的知识,在一开学就开始做课程设计学习如 可编写程序心里比较高兴吧,但是拿到题目以后有点晕,要我编写一个万年历,可编写程序心里比较高兴吧,但是拿到题目以后有点晕,要我编写一个万年历, 自己一点想法也没有,后来上网看了一下大家的编写的程序,晕啊自己一点想法也没有,后来上网看了一下大家的编写的程序,晕啊 ,看不懂!,看不懂! 没办法去了校图书馆去借书看看没想到找了打印日历的书,没办法去了校图书馆去借

温馨提示

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

评论

0/150

提交评论