《《c课程设计》万年历》由会员分享,可在线阅读,更多相关《《c课程设计》万年历(22页珍藏版)》请在金锄头文库上搜索。
1、辽宁工业大学C+语言程序设计课程设计(论文)题目:万年历院(系):软件学院专业班级:软件工程学 号:学生姓名:指导教师: 翟宝峰教师职称:起止时间:课程设计(论文)任务及评语院(系):软件学院教研室:软件教研室号 学E历 年 万课程设计(论文)任务 一 ru介=1144 一 1 sffi屋屋用 M1I 要划醸磁运 梯渤 与掌掌掌.0 任 d(2(3(4丽指导教师评语及成绩日月 鉀年 成目录第章课程设计目的与要求11.1设计目的11.2实验环境11.3预备知识114设计要求1第2章课程设计内容22. 1课题描述22. 2系统设计22. 2. 1功能分析32. 2.2面向对象设计32.2.2类成员
2、描述42. 3程序实现92. 3. 1源码分析92. 3.2运行结果15第3章总结16参考文献17第1章课程设计目的与要求1.1设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据 结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。 通过课程设计,学生在下述各方面的能力应该得到锻炼:(1) 进一步巩固、加深学生所学专业课程C+语言教程的基本理论知识,理论联系 实际,进一步培养学生综合分析问题,解决问题的能力。(2) 全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的 最终目的。(3) 利用所学知识,开发小型应用系统,
3、掌握运用C+语言编写调试应用系统程序,训 练独立开发应用系统,进行数据处理的综合能力。(4) 对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5) 掌握而向对彖程序设计的方法。(6) 熟练掌握C+语言的基本语法,灵活运用各种数据类型。(7) 进一步掌握在集成环境下如何调试程序和修改程序。1.2实验环境硬件要求能运行Windows操作系统的微机系统。C+语言应用程序开发软件使用: VC+系统,或其他C+语言应用程序开发软件。1.3预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法。1.4设计要求1. 仔细分析设计题目,画出程序流程图,编写程序源代码。2. 积极上机
4、调试源程序,增强编程技巧与调程能力。3. 认真书写课程设计预习报告,课程设计说明书。4. 遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成 课程设计内容。第2章课程设计内容2. 1课题描述输入任一年的年份后,如何打印该年的年历2. 2系统设计输入记录输入源程序,并对各部分有一个详细的解释,说明各个部分的功能,将这个问题模块化,分成几个部分的输入。程序中数据的设计大月小月的判断,闰年非闰年的判断以及年历的排列方式都得用数据的形式给表示出来,所以数据的的设计也是比较多的,具体如下:int i, c, day, year, k, a50;具体说明如下:i (此变量是用来排列
5、年历的),c (c是和year变量是一样的,是从计算机中输入的),day (day变量是是相差的天数),k (k是用来输出星期的)。程序的函数设计C+是函数驱动的,所以很多的功能是需要用函数来完成的。本题我们共有6个函数,其中有5个自定义函数和一个主函数。分别是:void fl (intx) , void f2(int x), void f3(int x) , void f4(int x) , void g(inty, int z)和main函数。各个函数的功能是:fl:判断1号之前的天数并全部用空格填上。f2:用来判断大小月的。f3:用来判断并输出闰年的二月的。f4:用来判断并输出非闰年二月
6、的。g:用來输出口历表的。数据结构说明本系统数据结构较简单,只有一个结构数组,预定50个元素。定义结构类型如下:for( i二0;i50;i+)ai=33;2. 2. 1功能分析输入任一年的年份后,打印该年的年历2. 2. 2面向对象设计系统功能模块图2. 2. 2类成员描述输入的年份判断输入年兄占为定义年总人数s=i扌巴S加I:该年到输入年份的人数.再加总入数s为定义年到输入年的总人数是否判断输入的年份是古 为闻年年足否冇二込是否把S加上该年 到输入年份的人数把S再加上该 年的人数再加1把S加上该年到输4人数总天数为S判断S的垠后一人为星期儿从这一人血依次输出输入年份的人数丙到及“底为II.
7、各功能模块(函数)的算法处理1、大月和小月的定义void fl(int x)大月for( i二0;i50;i+)ai=33;for(i=kl;i=0;i-)ai= 000J ;/I号前均为空格for(i=k;i=0;i-)ai二000;for(i=k;i=0;i-) ai= 000,;for(i=k;i29+k;i+) ai=ai-l+l;非闰年二月void f4(int x)for( i二0;i50;i+)ai=33;for(i=kl;i二0;i一一)ai二000,;for (i=k;iyear;coutcndl;c=year;for (s二1;s=year;s+)辻(s-1)%4=0&(s
8、-1)%100!=0)|(s-l)%400二二0)count+;day 二365*c+count;/相差天数cout*year年 日 历*; coutendlendlendlendl;在此运用了 C+中函数的运算,计算出该年的每月每日的不同。还有一年的输入和输 出。在C+语言中,函数的运算又分为很多种,此次用的是在输岀时,闰年与非闰年二刀的输岀法的定义if (year%4=0&year%100!=0) | | year%400=0)/闰年二月4 k二(day+31)%7+6)%7+l;cout,z二月,zcndlcndl;f3(k);g(a, 50);day二day+31+29;else/非闰
9、年二月k二(day+31)%7+6)%7+l;cout,z二月,zendlendl;f4 (k);g(a, 50);day二day+31+28;此处主要运用了 if语句來对闰年与非闰年的二月的不同定义的输出。if语句一种2. 3程序实现2. 3. 1源码分析#include#i ncludccniEithusing namespace std;int i, c, day, year, k, a50;void fl (int x)/大月for( i二0;i50;i+)ai=33;for(i=kl;i=0;i-)ai= 000? ;/I号前均为空格for(i=k;i二0;i-) ai000;for
10、 (i=k;i30+k;i+) ai二aiT+l;void f3(int x)for ( i=0;i=0;i) ai二000;for(i=k;i29+k;i+) ai=ai-l+l;void f4(int x)小月闰年二月非闰年二月for( i=0;i=0;i-)ai= 000,;for(i=k;i28+k;i+)ai=ai-l+l;void g(int y, int z)/ 输出 口历表coutz,日 t, 一 t, 二 t 三 t zz 四 t, 五 t六endl;for (i=0;i50;i+)i.f (ai=0)cout(char)ai,t9 ;if(ai!=0&ai!=33)coutai,t;else ;if(i%7=0)coutendl;coutendlendlycar;coutendl;c=year;for (s=l;s=year;s+)if (s-1)%4=0& (s-l)%100!=0)(s-1)%400=0)count+;cout/和差天数day=365*c+count;coutendlendlendlendl;k二(day%7+6)%7+l;cout一月,endle