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

下载本文档

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

文档简介

课程设计(论文)任务书 信息工程 学院 通信工程 专业 14-1 班 一、课程设计(论文)题目 :万年历设计 二、课程设计(论文)工作自 2015 年 6 月22日起至 2015 年 6 月 27 日止 三、课程设计(论文) 地点: 8-602 四、课程设计(论文)内容要求:1. 本课程设计的目的(1)进一步巩固和加深对“c程序设计”课程基本知识的理解和掌握,了解c语言在项目开发中的应用。(2)学习程序设计开发的一般方法,了解和掌握项目开发过程及方式,培养正确的设计思想和分析问题、解决问题的能力,特别是项目设计能力。(3)通过对标准化、规范化文档的掌握并查阅有关技术资料等,培养项目设计开发能力,同时提倡团队合作精神。 2. 课程设计的任务及要求1) 基本要求:(1) 对系统功能进行需求分析;(2) 使用visual c+编译器进行程序编译;(3) 提出系统的设计方案;(4) 编写源程序代码并进行调试。2) 创新要求在基本要求达到后,可进行创新设计。3) 课程设计报告撰写及装订要求课程设计报告的撰写要求表述简明,图表准确。报告按如下内容和顺序用a4纸进行打印并装订成册。(1)封面采用统一的课程设计封面,并按要求填写好封面要求的个人信息和选题。(2)设计任务书(3)评阅书(4)目录 (5)正文 (6)主要参考文献4) 课程设计评分标准: 每人按指定题目进行设计,严禁抄袭,各选题2人/组。要求每人自己动手编写程序,采取同一组同时检查程序及运行结果,检查时同组成员每人陈述自己的分工,同一选题不同组如发现代码完全一样,则双方都作不及格处理。(1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分;(2)能正确回答设计的中老师所提问题,可增加10分;(3)课程设计报告书写规范整齐,可增加10分;(4)心得体会认真总结,可增加10分;(5)程序有创新性,可增加10分;成绩评定实行优秀、良好、中等、及格和不及格五个等级。不及格者需重做。5) 课程设计进度安排(1)准备阶段(3学时):选择设计题目、了解设计目的要求、查阅相关资料。(2)程序模块设计分析阶段(4学时):程序总体设计、详细设计。(3) 代码编写调试阶段(10学时):程序模块代码编写、调试、测试。(4) 撰写论文阶段(3学时):总结课程设计任务和设计内容,撰写课程设计论文。6)课程设计题目具体要求:万年历的设计要求是要能够输出整年的日历以及在给定确定的日期后能够输出该天确定的星期几。程序要求通过菜单的形式,让用户自主选择想使用的功能。同时用户在输入不正确的日期后就应该输出提示信息,告知输入错误。学生签名: 2015年 6月22 日课程设计(论文)评阅意见序号项 目等级优秀良好中等及格不及格1课程设计态度评价2出勤情况评价3任务难度评价4工作量饱满评价5设计中创新性评价6论文书写规范化评价综合评定等级评阅人 职称 讲师 2015年6月29日 目录一、需求分析5二、概要设计6三、详细设计8四、运行结果及分析13五、课程设计心得15六、参考文献16第1章 需求分析万年历查询系统的需求分析 万年历查询系统是通过菜单选择的形式来运行的,在进入程序后,程序会显示一个菜单选择的的页面,提醒用户使用数字1来查询一整年的日历,使用数字2来查询某一确定日期星期几。同时还兼有日期报错的功能,用户如果输入了一个错误的日子,程序会提醒用户输入出错。(1) 万年历查询系统可以查询任何年份日期的具体日历,用户只需输入相应的年月就可以得到结果,在使用时选择菜单1或者菜单2使用不同的功能。(2) 查询系统的菜单使用的是选择结构完成的,而月份,星期的英文简写是通过循环结构和数组来完成的,通过各部分的紧密结合后,万年历查询系统才能正常运作。(3) 万年历查询系统的输出个是也是贴近我们日常使用的挂历的,按照周日,周一,周二,周三,周四,周五,周六的顺序依次输出,增加了程序的实用性。注:在编写程序时,添加了一些自己的想法,并未完全按照老师的模板来完成,这就增加了程序编写的难度,程序的输出是两个连续的月份并排输出的,从而充分利用了输出界面的空间,用户不需要拖动鼠标来查看界面一下的日历。第2章 概要设计万年历程序是以选择结构为基础,来进行编写的。用户使用时会先看到选择菜单,通过菜单的选择使用不同的功能。功能1是输出整年的日历,功能2是输出某一确定日期星期几,在编写具体的功能时,用到了循环结构,选择结构和数组等知识,用户使用只需输入相应的数字后enter 键进入,就可以得到相应的结果。在设计过程中,采取了由特殊到一般的思想,设计思路还是比较清晰的。首先在运行程序时,会进行一个闰年的判断,通过程序if(a%4=0&a%100!=0)|(a%400=0)完成,其中a代表的是年份。如果是闰年,二月份会自动加一天,这部分由数组来完成。判断结束后,再用程序b=a-1+(a-1)/4)-(a-1)/100)+(a-1)/400)+1; c=b%7;确定某一年元旦是星期几,然后再根据数组输出到相应的星期栏下。在完成某一年元旦的判断后,再通过数组算出某一确定日期星期几,这是功能2的程序设计思路,但是功能1也会用到这些思路,所以功能1和功能2有着类似方面。功能2是输出整年的日历,这对输出格式的要求比较高。其中,有些月份的一号不是在周日,这就要以空格代替前面空着的星期,这里用到循环结构,使得空格能够准确输出。在输出具体日期是用到了输出格式,采用printf(“%5d”)的形式,使输出的格式更贴近生活中使用的日历。可以看出,整个程序中多次使用了循环结构,有些地方还是用了循环的嵌套,还有运用数组来控制月份的天数以及输出月份名称,星期名称,用选择结构完成菜单的选择,各部分分工明确。在完成程序编写后,还要进行程序测试,这也是重要的一个环节,测试的环节可以发现很多问题,有一些特殊的问题在设计时没有考虑到,在测试时就会出错。出了问题在解决,程序也就达到了从特殊到普遍的设计需求。1、主体流程图开始选择菜单2选择菜单1判断选择输出该天的星期输出整年日历 图2-1退出程序2、确定某年是否为闰年如果某年的年份不能被4整除,则是平年。如果能够被4整除, 再看它是否能被100整除,不能被100整除的肯定是闰年。在既能被4、也能被100整除的年份中,还能被400整除的也是闰年,否则是平年。若为闰年,该年的总天数为366天,否则为365天。开始定义:year return1return0year%4=0&year%100!=0|year%400=0ft结 束3.判断某月的天数可定义数组int mouth12/判断指定年份中月的天数除2月外,1,3,5,7,8,10,12月份天数为31天,其余为30天。若为闰年,则2月的天数为29天,若为平年,2月的天数为28天,因此在程序执行之前,会判断当年是否为闰年,若为闰年,择二月份天数加一。4. 实现查询某天是星期几 查询的功能是通过a-1+(a-1)/4)-(a-1)/100)+(a-1)/400)+1; c=b%7;确定某一年元旦是星期几,然后再通过推算,得到相应某一天的星期几的。5.查询某一年某个月的日历这个功能提供的是查询一个月的日历,需要输入年份月份,就会得到相应月份的日历,主体程序与菜单一的程序有所区别,但是核心算法基本相同。第3章详细设计万年历查询系统的详细设计/*/#include void main()int i,a,c1=0,c2=0,d1=1,d2=0,f1=0,f2=0,n=0,j,b=0,o=0,k,m=1,p=1;static int d=1,c,f,num,e,mouth3;char mouth15=jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec;char xingqi5=sun,mon,tue,wed,thu,fri,sat;int mouth12=31,28,31,30,31,30,31,31,30,31,30,31;printf( *欢迎使用万年历查询系统*n); printf(你想查询的内容:n 1.显示一年的日历n 2.显示某一天是星期几n 3.显示某一年某月的日历n);printf(请输入你的选择:);scanf(%d,&num);printf(n);if(num=1)printf(请输入年份:);scanf(%d,&a);printf(n);if(a%4=0&a%100!=0)|(a%400=0) /判断是否是闰年mouth1=mouth1+1; /闰年二月份天数加一while(d1=11) printf(%20s%40sn,mouth1d1-1,mouth1d1);/输出月份名称for(i=0;i=6;i+) printf(%5s,xingqii);/输出星期名称printf( );for(i=0;i0;i-)f1=f1+mouthi-1;f1=f1-(7-o);c1=f1%7;b=0;o=0;d2=d1+1;b=a-1+(a-1)/4)-(a-1)/100)+(a-1)/400)+1;o=b%7;for(i=d2-1;i0;i-)f2=f2+mouthi-1;f2=f2-(7-o);c2=f2%7;b=0;o=0;if(c1!=0)for(i=5*c1;i0;i-)printf( ); /输出每月开头的空行 for(j=1;j0;i-)printf( ); for(j=1;j=7-c2;j+)printf(%5d,j);printf(n);while(n=4) /剩下的日期循环输出,设置每月输出6行for(;m=mouthd1-1-7+c1;m+)printf(%5d,7-c1+m);if(m%7=0)m+; break;while(mouthd1-1-7+c1m&m=28)printf( );m+;if(n=4)while(mouthd1-1-7+c128&m=35)printf( );m+;printf( );for(;p=mouthd2-1-7+c2;p+)printf(%5d,7-c2+p);if(p%7=0)p+;break;while(mouthd2-1-7+c2p&p=28)printf( );p+;printf(n);n+; c1=0;c2=0;f1=0;f2=0;n=0;m=1;p=1;d2=0;d1=d1+2;if(num=2) /执行菜单2的功能printf(请输入年月日:);scanf(%d%d%d,&a,&mouth3,&e);printf(n);if(e=1)b=a-1+(a-1)/4)-(a-1)/100)+(a-1)/400)+1;o=b%7; /计算某一年的元旦是星期几for(i=mouth3-1;i0;i-)f=f+mouthi-1; /将本月之前的月份天数求和 c=(f-(7-o)+e)%7; /对7求模,求出对应的星期if(c=13)printf(“错误”);if(a%4=0&a%100!=0)|(a%400=0)mouth1=mouth1+1;if(d=1)b=a-1+(a-1)/4)-(a-1)/100)+(a-1)/400)+1;c=b%7;elseb=a-1+(a-1)/4)-(a-1)/100)+(a-1)/400)+1;o=b%7;for(i=d-1;i0;i-)f=f+mouthi-1;f=f-(7-o);c=f%7;for(i=0;i0;i-)printf(*); for(j=1;j=7-c;j+)printf(%6d,j);printf(n);for(j=1;j=mouthd-1-7+c;j+)printf(%6d,7-c+j);if(j%7=0)printf(n); 第4章 运行结果及分析在运行界面下根据程序的提示输入数字1,在输入年份,程序就会输出整年的日历,例如输入数字1,再输入2015,就得到了2015年整年的日历了。在运行界面下,输入数字2,再输入准确的日期,就会得到当天是星期几,例如输入数字2,再输入2015 6 22就得到了“该天是:星期一”的运行结果,此结果与windouws操作系统上自带的日历结果符合,程序运行准确。选择菜单3,在程序的提示下输入2015 6就得到了六月份的日历,与标准的如理完全符合,说明程序运行正确。第5章课程设计心得 这次课设加深了我对c语言知识的理解,课程设计把上课老师讲的知识点与实践结合起来,使我对他们的印象更加深刻了。在这次课设中,我运用到了选择结构,循环结构,数组,字符串的输出等知识。这些知识只有在正确的结合下,程序才能正常工作。在设计程序时,我先运用选择结构完成了菜单选择的功能,再用循环结构对日期循环输出,在输出时通过算法将计数变量变成日期,就得到了万年历的基本模块。 在程序运行时需要反复测试,即使程序对某一个特定的年份起作用,但并不代表对所有的对象都会运行正确。在测试的过程中,发现了很多的问题,比如对于二月份的天数不确定的问题,我就用到了判断闰年的算法,在闰年的时候,而月份天数自动加一。还有对于每个月天数不统一的问题,我用了数组的知识,把所有月份的天数预先输入数组中,再在程序中通过循环的结构自动调用,并且自己控制输出的天数。 万年历这个程序花了将近两天的时间去完成,其中花时间最多的是菜单1的功能,要将两个相邻的月份并排输出,这就要求程序在执行前一个月份的同时,又要转去执行下一个月份,然后再返回到原来的地方,继续执行前一个月份。这里我用到了循环和break语句,这两个语句的结合相当于给程序加上了一个计时器。在完成相邻月份的输出后,计数变量加2,调至下下个月份继续循环,知道12个月完全输出后,退出程序。 此程序是我写的额第一个功能比较完整的能实现一定功能的程序,代码不是太长,200行左右,实现的功能有实现当前日历,进行某天的查询,闰年的判断,日期的合法性的判断,然后在程序的编写过程中,遇到了一些细节性的问题,比如在乱输入的情况下,程序会出现崩溃,然后通过修改,修正了漏洞,到写报告为止,漏洞基本查处,并且得到了修正,透过这个程序,我对程序的健壮性有了更深刻的认识,也更注意程序的细节问题。以上是我对于课设的一些总结,对于c语言这门课程,我觉得应该多上机实

温馨提示

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

评论

0/150

提交评论