C语言课程设计报告——马杰.doc_第1页
C语言课程设计报告——马杰.doc_第2页
C语言课程设计报告——马杰.doc_第3页
C语言课程设计报告——马杰.doc_第4页
C语言课程设计报告——马杰.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

C语言课程设计报告(3)题目万年历系统设计者马杰(11数学)学号2011061030l 问题的提出:在现代的社会生活中,拥有准确的时间变得十分重要,所以,日历是人类社会生产时不可缺少的一个东西。当然,日历并非仅仅具有查阅日期的功能,它还可以具有查阅星期、星座,判断闰年等等的功能。以前的日历都是纸质版的,人们携带不是太方便,而且人手翻起来很麻烦,还浪费时间。其次,以前的日历功能简单,只能查阅当年的日期、星期以及农历,如果人们想知道该年是否为闰年,该年的属相以及星座,他必须自己动脑子判断或算。这就大大浪费了人们的时间,也就间接的降低了人们的工作效率。而且如果一个人不懂得怎样去判断或算,那他最终也就不会知道他应该知道的一些信息。所以,编写一个快捷、准确、方便、功能多样化的日历系统,即“万年历系统”是我们现在必须要学会的。虽然编写的过程中会遇到各种各样的困难,但是,这是一次我锻炼和检验自己的最好机会。所以,不管失败与否,我都要参与编写的过程。l 功能介绍:该万年历系统是以现实生活中的挂历为基础,又增加一些新的功能。在系统中随便输入日期,不管是公历的某年某月某日,就可以输出该日是星期几、什么星座、该年的属相以及该日所属哪个支干和对应的农历日期。如果输入的数据与现实情况不符合,比如:在输入2012年5月20日,我们输成了2012年15月32日,系统就会自动提醒我们数据输入错误,并且让我们检查并重新输入数据。在输入正确的数据后按回车,系统就会输出你想要的信息。在一次查询结束之后,系统就会自动询问,我们是否要继续查询,然后我们就可以根据自己的需要选择了是继续还是退出。l 本系统所涉及的知识点:本系统所涉及的知识点以C程序设计(第三版)为准:1. 程序的三种基本结构:顺序、结构、循环。2. 函数的定义、声明、调用以及函数的返回值。3. 赋值语句的使用。4. 输入和输出语句的使用。5. 算数运算符、关系运算符以及逻辑运算符的应用。6. 定义整型、字符型、指针变量、字符型数组以及指针数组。数组初始化和引用和指针的使用。7. 主要是函数的应用。8. 在流程图中,主要运用了判断语句。l 算法设计.用switch语句设计主菜单:1. 输入当前日期;2. 判断是否为闰年;3. 求星期几;4. 求星座;5. 求该日对应的农历日期;(该功能失败)6. 求该日支干;7. 求该年属相;8. 查询;9. 输出;10. 如果继续查询返回1;11. 否则退出。万年历系统总的流程图:否是是否输入年输入日分别进行判断闰年、求星期几、求星座、求干支、求属相输入月数据是否合理?输出结果是否继续查询?结束开始.选择2,用if语句判断是否为闰年: .选择3,用switch函数求星期几:.选择5,求该年的星座:.选择6,求该日对应的农历日期:(该功能失败).选择7,求该日支干:.选择8,求该年属相:l 总结与感想:在这次的程序设计过程中,对我的考验相当大:第一个是怎样充分的运用到书本上的知识,这就要求要对书本上的只是要十分熟悉,所以下课后就要大量的看书。在开始学习了一些知识后,可以简单的并编写一些程序了,但是在此次报告中,不知道要选哪种程序来编写我的程序,所以在选择上有了不稳定性;第二是怎样去连接这些分散的知识点。因为每个功能都是单独的、互不联系的,所以刚开始处理时有点困难,但是在学习了第八章,即函数后,一下子豁然开朗了;最后,因为自己的能力不足,对第五个功能,即“求该日对应的农历日期”这项功能不能设计出来,导致万年历系统的效果与开始时的设想差了好多。(注:有超出该书知识范围的为询问师兄(姐)或查阅资料所得。)附录:源代码:#include int judgeday(int,int,int);int judgerun_y(int);int run(int);int month_day(int,int);int getmonth(int);int Getyear(int);int getyear(int);void printjudgeday(int,int,int);void printrun(int);void week(int,int,int);void judge_week(int);void printxingzuo(int);void judgexingzuo(int,int);/void nongli(int,int);void shuxiang(int,int);void judgeshuxiang(int,int);void TGDZ(int);void judgeTG(int);main() int year,month,day; char ch; do do printf(请输入年:); scanf(%d,&year); printf(请输入月:); scanf(%d,&month); printf(请输入日:); scanf(%d,&day); printjudgeday(year,month,day); while(judgeday(year,month,day); printf(%d年%d月%d日是,year,month,day); printrun(judgerun_y(year); printf(本月有%d天,,month_day(year,month); week(year,month,day); judgexingzuo(month,day); shuxiang(year,1); TGDZ(year); printf(请问你要继续查询吗?是(Y/y)否(N/n):); scanf( %c,&ch); while(ch=Y|ch=y);void printjudgeday(int year,int month,int day)if(judgeday(year,month,day)printf(您输入的数据有误,请重新输入!n);int judgeday(int year,int month,int day)int flag;if(month12)flag=1;else if(daymonth_day(year,month)flag=1;elseflag=0;return flag;int judgerun_y(int year)int flag;if(year%4=0&year%100!=0)|(year%400=0)flag=1; else flag=0;return flag;void printrun(int flag)if(flag)printf(闰年,);else printf(不是闰年,);int run(int flag)int days;if(flag=1)days=29; else if(flag=0) days=28;return days;int month_day(int year,int month)int days;switch(month)case 2:days=run(judgerun_y(year); break; case 4: case 6: case 9: case 11: days=30; break; case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31; break; return days;void week(int year,int month,int day)int sum=0;if(year2000)sum=Getyear(year)+getmonth(month)+day+judgerun_y(year);else if(year2000)sum=getyear(year)+getmonth(month)+day+judgerun_y(year);else if(year=2000)sum=getmonth(month)+day+judgerun_y(year)+4;judge_week(sum);int getmonth(int month)int n;switch(month)case 1:n=1;break;case 2:n=4;break;case 3:n=4;break;case 4:n=7;break;case 5:n=2;break;case 6:n=5;break;case 7:n=7;break;case 8:n=3;break;case 9:n=6;break;case 10:n=1;break;case 11:n=4;break;case 12:n=6;break;return n;int Getyear(int year)int cha,shang,yushu,y;cha=year-2000;shang=cha/4;yushu=cha%4;if(judgerun_y(year)y=4-2*shang+yushu;elsey=4-2*shang+yushu+1;return y;int getyear(int year)int cha,shang,yushu,y;cha=year-2000;shang=cha/4;yushu=cha%4;if(judgerun_y(year)y=4+2*shang-yushu+1;elsey=4+2*shang-yushu;return y;void judge_week(int sum)int n;n=sum%7;switch(n)case 0:printf(星期天,);break;case 1:printf(星期一,); break;case 2:printf(星期二,);break;case 3:printf(星期三,);break;case 4:printf(星期四,);break;case 5:printf(星期五,);break;case 6:printf(星期六,);break;void judgexingzuo(int month,int day)int n;switch(month)case 1:if(day=19)n=12;elsen=1; break; case 2:if(day=18)n=1;elsen=2; break; case 3:if(day=20)n=2;elsen=3; break; case 4:if(day=19)n=3;elsen=4; break; case 5:if(day=20)n=4;elsen=5; break; case 6:if(day=21)n=5;elsen=6; break; case 7:if(day=22)n=6;elsen=7; break; case 8:if(day=22)n=7;elsen=8; break; case 9:if(day=22)n=8;elsen=9; break; case 10:if(day=23)n=9;elsen=10; break; case 11:if(day=22)n=10;elsen=11; break; case 12:if(day=21)n=11;elsen=12; break; printxingzuo(n);void printxingzuo(int n)switch(n)case 1:printf(水瓶座,);break;case 2:printf(双鱼座,);break;case 3:printf(白羊座,);break;case 4:printf(金牛座,);break;case 5:printf(双子座,);break;case 6:printf(巨蟹座,);break;case 7:printf(狮子座,);break;case 8:printf(处女座,);break;case 9:printf(天枰座,);break;case 10:printf(天蝎座,);break;case 11:printf(射手座,);break;case 12:printf(摩羯座,);break;/*void nongli(int,int)int*/void shuxiang(int year,int n)int m,cha;cha=(year-2012)%12;if(cha0)cha=12+cha;m=cha%12;judgeshuxiang(m,n);void judgeshuxiang(int m,int n)switch(m)case 0:if(n=1)printf(龙年,);elseprintf(辰年!n);break;case 1:if(n=1) printf(蛇年,);elseprintf(巳年!n);break;case 2:if(n=1) printf(马年,);elseprintf(午年!n);break;case 3:if(n=1) printf(羊年,);elseprintf(未年!n);break;case 4:if(n=1) printf(猴年,);elseprintf(申年!n);break;case 5:if(n=1) printf(鸡年,);elseprintf(酉年!n);break;case 6:if(n=1) printf

温馨提示

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

评论

0/150

提交评论