欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    万年历的课程设计报告及程序.pdf

    • 资源ID:85932906       资源大小:243.28KB        全文页数:11页
    • 资源格式: PDF        下载积分:19.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要19.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    万年历的课程设计报告及程序.pdf

    1 第一部分:正文 一,课程设计名称:1.万年历 2.(a)(b)*二,使用工具软件:Microsoft Visual Basic 6.0 中文版。三,课程设计内容简介:(1)万年历的课程设计的基本结构流程:Main 函数 Yearshow 函数 Monthshow 函数 Getmonthweekday 函数 Getmonthday 函数 Isleap 函数 Getyeaweekday 函数 Getyearday 函数 2 从 main函数开始,比如输入 2001年,调用函数 yearshow,它是控制总循环次数 12 个月的,在 yearshow里有调用了以个函数是monthshow,是控制每个月如何输出显示的,在这个函数里有调用了getmonthweekday函数,它是获得每个月一号是星期几的函数,此函数分为两部分,以 2000年 1 月 1 号是星期六为准;做十一次运算便可得知 2 月到 12 月各个月的 1 号为星期几。而在这个函数又调用了getyearday这个函数,是返回天数的函数,它有调用了 isleap函数,计算时平年还是闰年是,时闰年返回 366,平年返回 355。到这步开始就返回值了,首先 isleap告诉 getyeardays2000是闰年和平年,于是 getyeardays得到 366getyearweekday,getyearweekday就计算 sum=366且返回(366+6)%7=2给 getmonthweekday,w=2,getmonthweekday中若计算 1月 1号则为星期二,2月-12月中如 3月则要加上以月和二月的天数载加上 2对 7取余数,这个数返回给monthshow,若这个数是 w=0;不输出空格,不等于 0就输出 w-1个空格,以便日期和星期对应,如此循环十二个月就计算完了,一边计算一遍显示。3(2)(a)图形的课程设计的基本结构流程 (3)(b)图形的课程设计的基本结构流程 Y N 键 盘 输 入int p 值 p0|p%2=0 main 二重 for 循环控制输出图形 结束 4 y N (4)运行环境:Win32 Console Application 四,得意之处.1把程序分解成多个小函数,那么问题就分解成几个小问题。(1)int getYearWeekDay(int y)是给定年的一月一号是星期几。(2)getYearDays(int y)是从 2000 年到给定年每年各有多少天。(3)isLeap(int y)计算从 2000 年到给定年分别是平年还是闰年有 并把值反给函数 getyearday 和 getmonthday。键 盘 输 入m 值 m0|m%2=0 int y 二重 for 循环控制输出图形 结束 main 5(4)getMonthWeekDay(int y,int m)计算给定年 2 月到 12 月每月一号是星期几(5)getMonthDays(int y,int m)控制给定年的各个月有多少天(6)yearShow(int y)用 for 控制十二个月的输出(7)monthShow(int y,int m)控制每个月的输出,并且有两个函数调用了它,分别是 getyearday 和 getmonthday 2 计算星期数的时候,2000 年的 1 月 1 号是星期六。若要查询的年大于 2000 年就用 for(i=2000;i y;i+)sum+=getYearDays(i);return(sum+6)%7;若要查询的年小于 2000 年就用 for(i=y;i 2000;i+)sum+=getYearDays(i);return(-sum%7+6)%7;五创意的技术实现(1)int isLeap(int y)return y%4=0&y%100!=0|y%400=0;/return y=366;/else return y=365;该小程序实现平年和闰年,有两个函数要调用它。(2)主要程序段是 monthshow 函数 int monthShow(int y,int m)6 int i=0,w;cout endl*m 月*endl;cout Sun Mon Tue Wed Thu Fri Satendl;w=getMonthWeekDay(y,m);for(i=1;i=getMonthDays(y,m);i+)coutsetw(4)setfill()i;w+;w%=7;if(w=0&i getMonthDays(y,m)cout t endl;return 0;六课程设计中目前存在的问题 在编写程序的过程中遇到很多的问题,尤其是万年历,可以说我一点头绪都没有,如何显示平年或闰年,如何输出月,日,星期,最后查看了资料和上网查询才有了思路,到最后输出结果还是从在很多的问题,请求李龙飞的帮忙才能够正确输出结果,但最后不管输入哪年,输出的结果十二月 30 号后面总是有一个多余 0。这个问题好没有解决。在编写图形程序过程中也出现了问题,输出的图形不正确,上半部分输出下半部分不能正确输出,或者*数和空格数不正确,上下两部分不能对齐,这些问题都是 for循环中的个数没有控制好,仔细考虑就可以把问题解决了,可以输出完整的图形。七设计实践过程中的自我感受。(1)当看到题目时觉得很难,上网查询以 2000年的 1 月 1 日星期六为准,计算各个月的星期数。(2)首先要有控制平年或闰年的函数isleap,一个控制月份的函数,yearshow函数,其次要有一个月份输出的函数,monthshow函数,知 7 道该月一号是星期几就能显示该月就,有了函数 getmonthweekday,而 getmonthweekday又需要一月一号的星期数和它前面的月的总天数,又有了 getmonthday和 getyearweekday,它两,又调用了函数isleap。(3)复杂图形程序要比万年历简单多了。万年历参考了之后才有思路,看到图形的打印题时就有了好几方面得到解决方法,这次程序设计总体感受是编写一个程序需要持之以恒和全心投入及小组成员合作,我们要把大的问题化解成小的问题,一步一步的解决,图书馆翻阅资料及上网查询都是学习的好方法,当遇到很难解决的问题就要和同学一起讨论,若还没有解决的办法,请求老师的帮忙。第二部分:参考文献 1 c+程序设计教程(第二版)2 C+二级考试教材 3.c+程序设计教程(谭浩强)第三部分:附录程序 1.万年历 以 2000年为参照(2000年的第一天时星期六)#include 8#include using namespace std;int getYearWeekDay(int y);int getYearDays(int y);int isLeap(int y);int getMonthWeekDay(int y,int m);int getMonthDays(int y,int m);int yearShow(int y);int monthShow(int y,int m);int getYearWeekDay(int y)int sum=0,i;if(y=2000)for(i=2000;i y;i+)sum+=getYearDays(i);return(sum+6)%7;else for(i=y;i 2000;i+)sum+=getYearDays(i);return(-sum%7+6)%7;int getYearDays(int y)return isLeap(y)?366:365;int isLeap(int y)return y%4=0&y%100!=0|y%400=0;/return y=366;/else return y=365;int getMonthWeekDay(int y,int m)int sum=0;int i;for(i=1;i m;i+)sum+=getMonthDays(y,i);return(getYearWeekDay(y)+sum)%7;int getMonthDays(int y,int m)switch(m)case 1:case 3:case 5:case 7:case 8:case 10:9 case 12:return 31;case 4:case 6:case 9:case 11:return 30;case 2:return isLeap(y)?29:28;default:return 0;yearShow(int y)int i;for(i=1;i=12;i+)monthShow(y,i);return 0;int monthShow(int y,int m)int i=0,w;cout endl*m 月*endl;cout Sun Mon Tue Wed Thu Fri Satendl;w=getMonthWeekDay(y,m);for(i=1;i=getMonthDays(y,m);i+)coutsetw(4)setfill()i;w+;w%=7;if(w=0&i getMonthDays(y,m)cout t endl;return 0;int main()int y;cout y;cout setw(16)setfill()y 年endl;cout yearShow(y)endl;二图形(a)及(b)的程序。(a)/课程设计:选作题目二打印复杂图形#include using namespace std;void main()10 int p,i,j,k,m,n;coutp;if(p0|(p%2=0)cout”this is a error program:”;if(p%2!=0)/判断输入的数是否是奇数 for(i=1;i=(p+1)/2;i+)/输出上半部分的行数 for(j=1;j=(p+1)/2-i;j+)cout;/输出上左半部分的空格 for(k=1;k2*i;k+)cout*;/输出上左半部分的“*”for(m=1;m=p-2*i+1;m+)cout;/输出上半部分中间的空格 for(n=1;n2*i;n+)cout*;/输出上右半部分的“*”coutn;for(i=1;i=(p-1)/2;i+)/输出下半部分的行数 for(j=1;j=i;j+)cout;/输出下左半部分的空格 for(k=1;k=p-2*i;k+)cout*;/输出下左半部分的“*”for(m=1;m=2*i;m+)cout;/输出下半部分中间的空格 for(n=1;n=p-2*i;n+)cout*;/输出下右半部分的“*”coutn;(b)/课程设计:选作题目二打印复杂图形#include using namespace std;void main()int i,j,k,y;couty;11 if(y0|(y%2=0)cout”this is a error program:”;if(y%2!=0)/判断是否是奇数 for(i=1;i=(y+1)/2;i+)/输出上半部分的行数 for(j=1;j=(y+3)/2-i;j+)cout*;/输出上左半部的“*”for(k=0;k2*i-3;k+)cout;/输出上半部分的空格 if(i=2)for(j=1;j=(y-1)/2;j+)cout2)for(j=1;j=(y+3)/2-i;j+)cout*;/输出上半部分的空格 coutn;for(i=1;i=(y-1)/2;i+)/输出下半部分的行数 for(j=1;j=i+1;j+)cout*;/输出下左半部的“*”for(k=1;k=y-2*(i+1);k+)cout;/输出下半部分的空格 if(i=(y-1)/2-2)for(j=1;j=i+1;j+)cout=(y-1)/2-1)for(j=1;j=(y-1)/2;j+)cout*;/输出下右半部分倒数 2 行的“*”coutn;

    注意事项

    本文(万年历的课程设计报告及程序.pdf)为本站会员(g****s)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开