资源描述
西安工程大学C语言课程设计实验报告计算机科学学院软件工程(2)班成旭飞41209050202一、 题目及功能描述 题目:万年历的设计 利用C语言设计出万年历,使其实现如下要求 1、输入年月,输出该月的月历 2、输入错误时能重新输入; 3、简单易操作。 二、 实验程序框图三、 软件设计与编码 #include main() int n,y,i,j,count=0; long int S; do printf(请输入正确的年份:n); scanf(%d,&n); printf(请输入正确的月份:n); scanf(%d,&y);while (n1)|(y12); printf( 日 一 二 三 四 五 六n); if(n%4=0&n%100!=0|n%400=0)&(y=2) S=(n-1980)/4*1461%7; if(S0) S=7+S; switch (S) case 0: for(count;count5;count+) printf( ); for(i=1;i=29;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 1: for(count;count6;count+) printf( ); for(i=1;i=29;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 2: for(i=1;i=29;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 3: for(count;count1;count+) printf( ); for(i=1;i=29;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 4: for(count;count2;count+) printf( ); for(i=1;i=29;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 5: for(count;count3;count+) printf( ); for(i=1;i=29;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 6: for(count;count4;count+) printf( ); for(i=1;i=29;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break; printf(n); else if(n%4=0&n%100!=0|n%400=0) S=(n-1980)*365+(n-1980)/4)%7; else S=(n-1980)*365+(n-1980)/4+1)%7;if(S0) S=7+S;switch(y) case 1: j=(S+2)%7; for(count;countj;count+) printf( ); for(i=1;i=31;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 2: j=(S+5)%7; for(count;countj;count+) printf( ); for(i=1;i=28;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 3: if(n%4=0&n%100!=0|n%400=0)j=(S+6)%7; else j=(S+5)%7; for(count;countj;count+) printf( ); for(i=1;i=31;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 4: if(n%4=0&n%100!=0|n%400=0)j=(S+2)%7; else j=(S+1)%7; for(count;countj;count+) printf( ); for(i=1;i=30;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 5: if(n%4=0&n%100!=0|n%400=0)j=(S+4)%7; else j=(S+3)%7; for(count;countj;count+) printf( ); for(i=1;i=31;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 6: if(n%4=0&n%100!=0|n%400=0)j=S; else j=(S-1)%7; for(count;countj;count+) printf( ); for(i=1;i=30;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 7: if(n%4=0&n%100!=0|n%400=0)j=(S+2)%7; else j=(S+1)%7; for(count;countj;count+) printf( ); for(i=1;i=31;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 8: if(n%4=0&n%100!=0|n%400=0)j=(S+4)%7; else j=(S+3)%7; for(count;countj;count+) printf( ); for(i=1;i=31;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 9: if(n%4=0&n%100!=0|n%400=0)j=(S+1)%7; else j=S; for(count;countj;count+) printf( ); for(i=1;i=30;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 10: if(n%4=0&n%100!=0|n%400=0)j=(S+3)%7; else j=(S+2)%7; for(count;countj;count+) printf( ); for(i=1;i=31;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break; case 11: if(n%4=0&n%100!=0|n%400=0)j=(S+6)%7; else j=(S+5)%7; for(count;countj;count+) printf( ); for(i=1;i=30;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break;case 12: if(n%4=0&n%100!=0|n%400=0)j=(S+1)%7; else j=S; for(count;countj;count+) printf( ); for(i=1;i=31;i+,count+) if(count%7=0) printf(n); printf(%4d,i);break; printf(n);四、运行结果 初次运行结果与实际存在差距,经过几次修改与调试最终正确的能输出用户输入的该年该月的日历。输入错误时能重新输入。正确输入时显示结果。五、总结通过本次实验,我充分认识到了制作一个能够运行的软件和制作一个好的软件之间的差距,做一个好的软件不仅要求软件能够工作,而且软件从开始制作到最终完成都要经过严格的审核,不断的修改,从而使做出的软件界面更和谐,更易于操作,功能更强大等等。 在本次实验中,我也犯了这样那样的错误,但是通过与其他同学的讨论交流,我也将这些错误一一改正了过来,这使我认识到软件制作过程中交流的重要性。总之,本次实验我的收获很大,最重要的是对软件工程这门课程有了一个更深入的认识。
展开阅读全文