C语言课程设计打印月历报告.docx
- 文档编号:14262418
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:16
- 大小:151.79KB
C语言课程设计打印月历报告.docx
《C语言课程设计打印月历报告.docx》由会员分享,可在线阅读,更多相关《C语言课程设计打印月历报告.docx(16页珍藏版)》请在冰点文库上搜索。
C语言课程设计打印月历报告
《C语言课程设计》
课程设计报告
题目
打印月历
学号
姓名
年级专业
09级电子信息工程
指导教师
同组人员
完成日期
2010
年
6
月
28
日
安徽师范大学物理与电子信息学院
CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity
物理与电子信息学院课程设计评定意见
指导教师评语
成绩:
签名:
年 月 日
C语言程序设计报告
专业:
2009电子信息工程
设计人员:
同组人员:
课题名称:
打印月历
指导老师:
安徽师范大学物理与电子信息学院
CollegeofPhysicsandElectronicInformation,AnhuiNormalUniversity
2010-6-29
一.问题的描述
1.1项目开发的目标
程序运行后,能够在屏幕上显示主菜单,查询某年某月某日是星期几,查询某年是否是闰年,以及打印某年的全年日历,能够在完成运行后退出程序。
1.2项目提出的意义
月历在我们的生活和学习中起着非常重要的作用,一份好的月历能让我们的生活变的更加有节奏,能让我们的时间得以更加充分的利用。
根据学校关了的需要,开发一个“打印月历”项目,开发目标如下:
(1)程序运行后,首先在屏幕上显示主菜单:
(2)查询某年某月某日是星期几
(3)查询某年是否是闰年
(4)打印某年的全年日历
(5)退出
1.3项目开发的要求
1.年份和月份由键盘输入,打印的月历按星期一到星期日排列;
2.注意大小月、闰年等问题。
1.4系统的功能描述
本实例的功能模块如下。
1.在主菜单中输入1后,显示:
“请输入年月日(XXXX,XX,XX)”
运行后输出:
XXXX年XX月XX日是星期X,是否继续查询(Y/N)?
如果输入Y,则重新显示“请输入年月日(XXXX,XX,XX)”,否则回到主菜单。
2.在主菜单中输入2后,显示:
“请输入要查哪一年?
(XXXX)”
运行后输出:
XXXX年是(否)是闰年,是否继续查询(Y/N)?
如果输入Y,则重新显示,“请输入要查哪一年?
(XXXX)”,否则回到主菜单。
3.在主菜单中输入3后,显示:
“请输入要打印的年份(XXXX)”
运行后输出XXXX年的日历,格式为:
XXXX
X(月数)
0123456
SMTWTFS
xxxxxxx
xxxxxxxxxxx
xxxxxxxxxxxxxx
xxxxxxxxxxxxxx
xxxxxx
X(月数)
0123456
SMTWTFS
xxxx
xxxxxxxxxxx
xxxxxxxxxxxxxx
xxxxxxxxxxxxxx
xxxxxxxxxx
.
.
.
.
.
运行完后显示:
“是否继续打印(Y/N)?
”
如果输入Y,则重新显示,“请输入要打印的年份(XXXX)”,否则回到主菜单。
4.在主菜单中输入4后,显示:
“是否要真的退出(Y/N)?
”
如果输入Y,结束程序运行,否则重新显示主菜单。
二.系统分析和设计
2.1功能模块设计
1.主函数main()模块
主函数包括四个模块,分别于调用函数的四个模块相对应,通过对调用函数的调用,运行,处理,将相应的值返回到主函数中,进行相应的数据信息的输出。
按键判断处理的流程如下。
(1)对相应的变量进行定义,通过pringtf函数输出此程序的名称,制作人等相关信息。
(2)通过while语句运用printf函数输出四条选择,即对此程序所要进行的有关操作的选择,用scanf函数输入读者的选择。
(3)用switch函数对相关选择的进行处理:
a.case1时用scanf函数任意输入某年某月某天,通过调用函数中的DaySearch(year,month,day)函数处理用printf函数在用户屏幕上输出这一年这一月这一天时星期几。
b.case2时与case1相同用scanf函数输入所要查询的年份,通过调用函数中的IsLeapYear(year)函数对输入的任意年份进行相关处理输出是否是闰年。
c.case3时通过scanf函数输入用户所需打印的某一年的全部相关信息,运用调用函数PrintAllYear(year)在用户屏幕上打印出该年。
d.case4时运用fflush(stdin)函数进行相关处理退出用户屏幕回到源程序界面。
2.调运函数模块
(1)通过char函数对相应的month-str[],week[],数组进行初始化。
(2)定义IsLeapYear函数,运用函数调运通过公式year%4==0&&year%100!
=0)||(year%400==0计算年份是否是闰年,如果是return返回值为1,反之,返回值是0。
(3)定义month-day函数,对IsLeapYear(year)&&month==2进行判断,如果输入的年份是润年,返回二月的天数为29天,反之为28天。
(4)对DaySearch函数进行定义,通过公式s=year-1+(float)(year-1)/4+(float)(year-1)/100+(float)(year-1)/400-40+c;计算出所需查询某一天时星期几;
(5)定义PrintfAllYear函数进行定义,调运DaySearchhanshu,运用for(j=1;j<=month_day(year,i)+temp;j++)语句,通过if语句对输入年份的输出进行处理
2.2构成函数设计
在打印月历中,主要构成函数如下:
1)main主函数
函数原型:
voidmain();
函数功能:
是整个打印月历程序的控制部分。
2)print函数
函数原型:
voidprint(Node*r);
函数功能:
以表格的形式输出单链表中的学生信息到屏幕上。
3)switch函数:
Switch 函数的参数列表由多对表达式和数值组成。
表达式是由左至右加以计算的,而数值则会在第一个相关的表达式为 True 时返回。
如果其中有部分不成对,则会产生一个运行时错误。
4)fflush函数:
原型:
intfflush(FILE*stream)
清除文件缓冲区,文件以写方式打开时将缓冲区内容写入文件
三.结构图
四.流程图
五.程序清单
#include
#include
char*month_str[]={"January","February","March","April","May","June","July","August","September","October","November","December"};
char*week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
intIsLeapYear(intyear) /*findouttheyearisleapyearornot*/
{
if((year%4==0&&year%100!
=0)||(year%400==0))
return1;
else
return0;
}
intmonth_day(intyear,intmonth)
{
intmon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(IsLeapYear(year)&&month==2)
return29;
else
return(mon_day[month-1]);
}
intDaySearch(intyear,intmonth,intday)/*searchwhatdaythisdayis*/
{
intc=0;
floats;
intm;
for(m=1;m c=c+month_day(year,m); c=c+day; s=year-1+(float)(year-1)/4+(float)(year-1)/100+(float)(year-1)/400-40+c; return((int)s%7); } intPrintAllYear(intyear)/*printtheallyear*/ { inttemp; inti,j; printf("\n\n%dCalander\n",year); for(i=1;i<=12;i++) { printf("\n\n%s(%d)\n",month_str[i-1],i); printf("0 1 2 3 4 5 6 \n"); printf("S M T W T F S \n\n"); temp=DaySearch(year,i,1); for(j=1;j<=month_day(year,i)+temp;j++) { if(j-temp<=0) printf(" "); elseif(j-temp<10) printf("%d ",j-temp); else printf("%d ",j-temp); if(j%7==0) printf("\n"); } } return0; } intmain() { intoption,da; charch; intyear,month,day; printf("Copyright@2005TianQianAllrightsreserved! : ): ): )"); printf("\n\nWelcometousetheWanNianLisystem! \n"); while (1) { printf("\nPleaseselecttheserviceyouneed: \n"); printf("\n1Searchwhatdaythedayis"); printf("\n2Searchwhethertheyearisleapyearornot"); printf("\n3Printthecalanderofthewholeyear"); printf("\n4Exit\n"); scanf("%d",&option); switch(option) { case1: while (1) { printf("\nPleaseinputtheyear,monthandday(XXXX,XX,XX): "); scanf("%d,%d,%d,%c",&year,&month,&day); da=DaySearch(year,month,day); printf("\n%d-%d-%dis%s,doyouwanttocontinue? (Y/N)",year,month,day,week[da]); fflush(stdin); scanf("%c",&ch); if(ch=='N'||ch=='n') break; } break; case2: while (1) { printf("\nPleaseinputtheyearwhichneedssearched? (XXXX)"); scanf("%d",&year); if(IsLeapYear(year)) printf("\n%disLeapyear,doyouwanttocontinue? (Y/N)",year); else printf("\n%disnotLeapyear,doyouwanttocontinue(Y/N)? ",year); fflush(stdin); scanf("%c",&ch); if(ch=='N'||ch=='n') break; } break; case3: while (1) { printf("\nPleaseinputtheyearwhichneedsprinted(XXXX)"); scanf("%d",&year); PrintAllYear(year); printf("\nDoyouwanttocontinuetoprint(Y/N)? "); fflush(stdin); scanf("%c",&ch); if(ch=='N'||ch=='n') break; } break; case4: fflush(stdin); printf("Areyousure? (Y/N)"); scanf("%c",&ch); if(ch=='Y'||ch=='y') exit(0); break; default: printf("\nError: Sorry,thereisnothisservicenow! \n"); break; } } return0; } 六.测试数据 开始的源程序,按Alt+F9,Ctrl+F9进入到用户界面 进入到的用户界面,输入1-4中的任意是自进行相应的操作。 在选择1后任意输入年月日如2010,6,30,输出这一天是星期几,输入y继续进行天数时星期几的查询,输入n则进行其他操作。 在选择2后任意输入年份如2010,判断输出这一年是不是是闰年,输入y继续进行年份是否是闰年的查询,输入n则进行其他操作。 在选择3后,输入需要打印的年份,如2010,在屏幕上打印出相关信息,输入y继续进行年份的打印,输入n则进行其他操作。 选择4后,输入y则对出程序,回到原界面,输入n后则在进行其他的操作。 七.收获体会 通过书本和老师的课堂教学,我们学习到了理论知识,老师提出做课程设计的时候,心情是激动和好奇的,(说实话,学了一些C语言的的理论知识,很有一种想自己设计出一个程序来的冲动)选择了和日常生活关系比较密切的“打印月历”,在做这个课题的设计的过程当中,我们借来的一台电脑,那几天一有空余时间我们就会一起做课程设计,首先,我们搜集大量资料,构思好程序的大致结构和流程。 其中判断是否是闰年这一项课本上有,很轻松的满足了判断是否为闰年的要求。 其它的要求我们结合所学的知识,不断的调试,最终写出符合要求的程序,至此我们的程序也基本上写处出来了, 接写来就是完善程序,在完善程序中,但是我们的程序在显示一年的年历时在屏幕上却只能显示后两个月的,这是程序中的不足之处,王老师给了我们悉心的指导,提供了几种解决问题的方法。 在整个程序的设计过程当中,我们真的收获了很多,要写好一个程序首先要有明确的程序流程和结构,知道这个程序大致上分为哪几块,每一小块需要做什么,要注意每个细节,不断调试,知道去修改调试过程中的错误。 同时我们也体会到了两个人之间的相互配合时十分重要的,在小的细节上分工,在整体上密切配合。 这次的程序设计让我们对C语言知识有了一个整体上的应用,学会将理论和实际结合,真正掌握和应用理论知识。 同时也对C语言的有了进一步的了解和深入,体会到C语言的强大功能,更加喜欢C语言。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 打印 月历 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)