多功能万年历.docx
- 文档编号:5546285
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:25
- 大小:162.58KB
多功能万年历.docx
《多功能万年历.docx》由会员分享,可在线阅读,更多相关《多功能万年历.docx(25页珍藏版)》请在冰点文库上搜索。
多功能万年历
2021年C语言程序设计
探究式自主课程设计报告
系部:
计算机工程学院
专业:
信息系统与信息管理
班级:
信息系统与信息管理1班
XX:
X童欣
学号:
2021404020218
课题名称:
多功能万年历
指导教师:
田原
计算机工程学院
2021年6月15日
----------------------------------------------------------------------------------------------------------------------
1、前言………………………………………………………3
2、设计的目的………………………………………………4
3、课程题目…………………………………………………4
4、程序的主要功能…………………………………………4
5、课程思考…………………………………………………4
6、系统总体框架图…………………………………………5
7、课程分析…………………………………………………6
8、源程序代码………………………………………………7
9、运行结果………………………………………………17
10、心得与体会……………………………………………21
11、参考文献………………………………………………21
前言
C语言是一种构造化的程序设计语言。
它功能丰富、表现能力强、使用灵活、应用面广、目标程序效率高、可移植性好,既具有高级语言的特点,又具有低级语言的功能,因此它成为当今主流程序设计语言之一。
C语言包含理论学习、编程方法和程序调试三个方面的内容。
由于它的语法现象比拟复杂,数据类型转换和表示灵活多变,因此,在学习和掌握C语言时,要把实践分为三个层次和两个方面。
三个层次是:
阅读别人写好的程序〔或函数〕,理解程序所要完成的任务〔也就是程序的功能〕,从中学习编程的方法个技巧;模仿编写类似的程序;自己独立设计和编写程序完成指定的任务。
两个方面是:
在条件有限的情况下,动手在纸上严格按语法规那么一丝不苟的写程序;另一方面,在条件允许的情况下,应该尽量上机练习,调试自己所写的程序。
让C语言具有更积极的意义。
本课程设计存在一些缺乏之处,竭诚希望大家批评指正。
一、设计的目的
经过一学期在任教授的指导下,让我们初步的认识了C语言的一些根底知识,为了稳固和复习c语言的根底知识,进一步加深对C语言编程的理解和掌握,利用所学的知识,理论和实验结合,利用资源,采用模块化的构造,使用模仿修改自主设计相结合的方法,锻炼我们综合分析解决实际问题的编程能力,培养我们在工程开发中团队合作精神、创新意识及实战能力,所以我决定利用所学的一些根底知识,做一个小程序,以提高自身的编程水平与上机调试技能。
二、课程题目
编写程序,解决万年历问题。
三、程序的主要功能
〔1〕显示当前的日期与时间;
〔2〕输入一个年份,输出全年的日历;
〔3〕输入年份、月份,输出该月的日历;
〔4〕输入年、月、日,计算出这天是星期几;
〔5〕计算你活了多少天〔计算两个日期相隔多少天〕;
〔6〕输入一个日期,输出该日期对应的星座;
〔7〕输入一个年份,输出该年的生肖;
四、课程思考
由于这个程序相对来说比拟大,为了它能更好的实现各个局部的功能,我要把它来分为各个小的模块来实现:
由于第一个功能是要让人能一眼就看见,所以我就决定把它放在主菜单界面,让人能一眼就看到当前时间,也好进展相应的操作;第二个功能我决定用一个oneyear()的函数模块来实现;第三个功能用一个onemonth()的函数模块来实现;第四个功能用oneday()的函数模块来实现;第五个功能用xg()的函数模块来实现;第六个功能用一个xz()的函数模块来实现;第七个功能如果和第二个功能相结合就完美了,但是由于我软件的窗口无法放大来显示调试结果,为了防止出错,我还是用sx()的函数模块来实现〔本程序中有几个的程序模块都是从本课程设计的参考文献[2]中借鉴而来〕。
五、系统总体框架图
六、要点分析
这里将这个功能定义为一个功能模块,在主程序中分别调用,实现不同的功能。
在这个问题中,最主要的是闰年和平年的判断和如何确定每年的第一天是星期几。
某一年是闰年的条件为:
该年份能被4整除但不能被100整除,或者能被400整除。
根据这些条件,可以写出判断闰年的函数如下:
intisleap(inta)
{return(a%4==0&&a%100!
=0||a%400==0);}
对于该函数,给它一个年份,如果返回值是1那么说明是闰年,如果返回值是0那么为非闰年。
判断是否为闰年主要是确定2月份的天数,其他的月份天数是固定的。
确定一年的第一天是星期几的函数如下:
intday(intyear)
{longa,b;
if(year<=2000)
{
a=2000-year;
b=6-(a+a/4-a/100+a/400)%7;
returnb;
}
else
{a=year-2000;
b=(a+(a-1)/4-(a-1)/100+(a-1)/400)%7;
returnb;
}
}
在该函数中,对于年份首先判断实在2000年之前还是在2000年之后,然后分别计算,最后返回该年份的第一天是星期几,这里,返回值0—6分别对应的是星期天到星期六。
知道了每个月的天数和该年的第一天是星期几,利用累加就能算出每一天对应星期几,也就容易实现万年历系统的功能。
七、源程序代码
〔1〕首先建立头文件,如下所示:
#include"stdio.h"
#include"conio.h"
#include
#defineD"summontuewedthufrisat"
voidbaiyang();
voidjingniu();
voidshuangzi();
voidjuxie();
voidshizi();
voidchu();
voidtianp();
voidtianx();
voidsheshou();
voidmojie();
voidshuiping();
voidshuangyu();
voidprint(intn)
{inti;
for(i=0;i printf(""); } intday(intyear) {longa,b; if(year<=2000) { a=2000-year; b=6-(a+a/4-a/100+a/400)%7; returnb; } else { a=year-2000; b=(a+(a-1)/4-(a-1)/100+(a-1)/400)%7; returnb; } } intisleap(inta) { return(a%4==0&&a%100! =0||a%400==0); } 在头文件中,包含了闰年的判断,确定一年的第一天是星期几,显示n个空格等函数,以及几个宏定义和必须的头文件stdio.h。 〔2〕显示一年的日历: voidoneyear() {inta[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; inti,j,k,m,n,f1,f2,year,d; clrscr(); printf("qingshurunianfen: \n"); scanf("%d",&year); printf("nisuoshurudenianfenshi: %d\n",year); d=day(year); if(isleap(year)) a[2]++; for(i=1;i<=12;i+=2) {m=n=f1=f2=0; switch(i) { case1: printf("january1");break; case3: printf("march3");break; case5: printf("may5");break; case7: printf("july7");break; case9: printf("septrmber9");break; case11: printf("november11");break; } print(21); switch(i+1) { case2: printf("february2");break; case4: printf("april4");break; case6: printf("june6");break; case8: printf("august8");break; case10: printf("october10");break; case12: printf("december12");break; } printf("\n"); printf(D); printf(6); printf(D); printf("\n"); for(j=0;j<6;j++) {if(j==0) {print(d*4); for(k=0;k<7-d;k++) printf("%4d",++m); print(6); d=d+a[i]%7; d%=7; print(d*4); for(k=0;k<7-d;k++) printf("%4d",++n); printf("\n"); } else {for(k=0;k<7;k++) { if(m printf("%4d",++m); print(4); if(m==a[i]) f1=1; } print(6); for(k=0;k<7;k++) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多功能 万年历