求一篇,C语言时钟和万年历的程序设计论文。在线等,谢谢了

要求,不用太过专业,2000字,即可,谢谢哥哥姐姐们,
2025-01-07 23:48:21
推荐回答(1个)
回答1:

我的课程设计报告,希望对你有帮助!

成绩

课程设计报告册
20 09 ~ 20 10 学年 第 2 学期

课程名称: C语言课程设计
任课教师:
班 级: B090602
姓 名: 臧富跃
学 号: B09060243

20 10 年 6 月

一.课程设计题目:万年历
二.题目要求:
(1) 程序运行的开始显示当前份的年年历
(2) 能够按照输入的年份显示月历
(3) 当输入小于1900的年份时退出程序

三.题目分析:
课程设计题目的分析,功能模块的划分。
(1)首先要根据起始年份判断每年的第一天是周几,然后根据周几控制每月的第一行输出的空格!
(2)判断每年是否为闰年,并设置相关的2月份的天数!
四.模块设计(流程图):
各个模块的设计说明,包括模块的名称、功能、入口参数说明与返回值说明,以及各个模块实现过程的说明(必要时画出流程图)。
(1)main函数: 该函数为程序入口,通过一个do-while来实现当输入年数小于1900时程序退出,否则main函数调用calculate函数,并将输入年数作为参数传递给claculate函数!
(2)calculate函数:该函数有一个参数,为main函数传递进来的输入年份,返回类型为void, 该函数负责从main函数中承接输入年份并显示出来,然后调用standpirnt函数

(3)standpirnt 函数:该函数有一个参数,为calculate函数传递进来的输入年份,返回类型为void,该函数负责实现标准的日历格式输出,根据循环次数设定每月的天数,并且通过tag与tag2来控制每个月的月首的空格!并且通过调用dayOfweek获得输入年份的第一天是周几,并且输出相应空格!
(4)dayOfweek函数:该函数有一个参数,是输入的年数,返回值为该年的第一天是周几,该函数负责返回输入年数的第一天是周几,并输出一个与周几匹配的空格数!
五.源代码:
各个模块实现的源代码。
main 函数:
void main() {
int input = 0;
int jude = 1;
do {

printf("please input a year!\n");
scanf("%d",&input);
if(input <= 1900) {
printf("DATA ERROR !!!");
jude = 0;
}
printf("the year is %d\n",input);

//这里判断是否闰年!
if(jude)
calculate(input);
} while(jude);
}

*************************************************************
Calculate 函数:
//该函数负责显示年份并且调用standpirnt函数!
void calculate(int year) {
printf("%d\n",year);
standpirnt(year);
// dayOfweek(year);

}

standpirnt函数

void standpirnt(int year){
//这里测试日历格式输出!
int date[31] = {0};

for(int i=0; i<31; i++) {
date[i] = i+1;
}
int input = year;
int tag = 0;
int tag2 = 0;
int leap = 0;
int ccyd = 0;
int bug = 0;
for(int j=0; j<12; j++) {

printf("******************************\n");
printf(" %d 年 %d 月\n",input,(j+1));
printf("******************************\n");
printf(" 日 一 二 三 四 五 六\n");
//设定月份的天数!

if(input % 4 ==0 || input %100 ==0 && input%400 != 0) ccyd = 1;
switch((j+1)) {
case 1: leap = 31;break;
case 2: ccyd?leap = 29:leap = 28;break;
case 3: leap = 31;break;
case 4: leap = 30;break;
case 5: leap = 31;break;
case 6: leap = 30;break;
case 7: leap = 31;break;
case 8: leap = 31;break;
case 9: leap = 30;break;
case 10: leap = 31;break;
case 11: leap = 30;break;
case 12: leap = 31;break;
}

//这里控制跳转换行!
for(int k =0; k
if(k==0 && j == 0) {
tag = dayOfweek(input);
if(tag == 7) tag = 0;
}

else if(k==0) {

switch(tag2) {
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;
}

}

printf("%3d",date[k]);
tag ++;
//新加的
if(date[k] == leap) {
tag2 = tag - 1;
}

if(tag==7) {
printf("\n");
tag = 0;
}
}
printf("\n");
}
}
dayOfweek 函数:
//该函数负责判断输入年数的第一天是周几!
int dayOfweek(int dayy) {

int value = 0;
int input2 =dayy ;

int start = 1990;
int days = 1;
days = input2 - start;

int total = 0;
int years[100000] = {0};
for(int i=0; i years[i] = start + i;

if(years[i] % 4 == 0 || (years[i] %100 ==0 && years[i] %400 !=0)) {
//printf("是闰年!");

total += 366;

}
else{
//平年!
total += 365;
}
}

int week = total % 7;
switch(week) {
case 0: value = 1;
printf(" "); break;
case 1: value = 2;
printf(" "); break;
case 2: value = 3;
printf(" "); break;
case 3: value = 4;
printf(" "); break;
case 4: value = 5;
printf(" "); break;
case 5: value = 6;
printf(" "); break;
case 6: value = 7;
printf(""); break;
}
return value;
}
六.测试与调试:
设计系统及各模块的测试方法、测试方案。
(1)完成main函数后,通过输入小于1900函数观察程序是否退出来测试程序main模块是否正常!
(2)完成calculate函数后,在main中调用calculate函数,在calculate中输出相关信息来判断calculate函数是否正常!
(3)完成standpirnt函数后,在calculate函数中调用,观察在控制台输出的日历格式是否正确!
(4)完成dayOfweek函数后,在standpirnt函数中调用,最终观察输出情况!
七.课程设计总结:
(1)通过该课程设计,增强了对C语言中函数调用,与换行跳转的理解与掌握。
(2)加深了对面向过程编程思想的理解!
(3)对万年历的具体实现有了深刻的理解!