C语言课程设计报告-马杰.doc

上传人:jian****018 文档编号:8126763 上传时间:2020-03-27 格式:DOC 页数:14 大小:52KB
返回 下载 相关 举报
C语言课程设计报告-马杰.doc_第1页
第1页 / 共14页
C语言课程设计报告-马杰.doc_第2页
第2页 / 共14页
C语言课程设计报告-马杰.doc_第3页
第3页 / 共14页
点击查看更多>>
资源描述
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(狗年,);elseprintf(戌年!n);break;case 7:if(n=1) printf(猪年,);elseprintf(亥年!n);break;case 8:if(n=1) printf(鼠年,);elseprintf(子年!n);break;case 9:if(n=1) printf(牛年,);elseprintf(丑年!n);break;case 10:if(n=1) printf(虎年,);elseprintf(寅年!n);break;case 11:if(n=1) printf(兔年,);elseprintf(卯年!n);break;void TGDZ(int year)int x,n=0;x=year%10;judgeTG(x);shuxiang(year,n);void judgeTG(int x)switch(x)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;
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!