万年历设计报告Word格式.docx
《万年历设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《万年历设计报告Word格式.docx(29页珍藏版)》请在冰豆网上搜索。
2.万年历显示公元后任何年份的日历,类似于一般挂历上的格式
3.输入年份,判断是否为闰年
4.输入年月日,判断改日为星期几
5.输入年份,打出12个月历,输入月份,打出该月的日历
6.要求用多个函数实现
三、设计要求
1.用C语言实现系统;
2.利用结构体、数组等实现数据结构设计;
3.系统的各个功能模块要求用函数的形式实现;
4.文档:
实训说明书每个学生一份,并装在统一的资料盒中。
5.光盘:
每个学生文档和程序资料分别建在一个以自己学号和命名的文件夹下,并要求每班负责人汇总每个学生的文件放在以班级命名的文件夹下,刻录成一光盘,放在一个专门的资料袋中。
四、提交的成果
1.设计任务书一份(学校统一格式)
2.设计说明书一份,容包括:
1)中文摘要100字,关键词3-5个。
2)C语言课程实训题目、容、要求。
3)总体设计(包含几大功能模块)。
4)详细设计(各功能模块的具体实现算法——流程图)
5)数据结构设计描述,各模块(函数)的功能介绍,参数说明等。
6)调试分析(包含各模块的测试用例,及测试结果。
)
7)总结(实训完成了哪些功能,还有哪些地方需要改进,及通过实训有何收获,调试程序的体会等)
8)参考文献、致等。
五、主要参考资料
1.王连相.《C/C++程序设计》大学
2.谭浩强《C语言程序设计(第2版)学习指导》清华大学
3.莉,龚义建《C语言程序设计实训指导教程》华中科技大学
4.小东,宏珍《C语言程序设计与应用》人民邮电
5.郭翠英《C语言C语言课程实训案例精编》中国水利水电
6.郭有强《C语言程序设计》清华大学
7.丹程,莹,那俊《C语言程序设计案例实践》清华大学
8.丽娟《C语言程序设计教程》人民邮电
9.武雅丽,王永玲,解亚利《C语言程序设计》清华大学
六、各阶段时间安排(共1周)
日期
容
地点
星期一
教师讲解设计要求,准备参考资料
1B203
星期二
分析系统,方案设计
星期三
方案设计,编程
星期四
调试程序,书写实训说明书
星期五
完成实训说明书,答辩
摘要
C语言在近年来国外得到了很广泛的推广,而电子万年历也是人们在日常的生活需求中必不缺少的一部分。
我们通过这学期对C语言的学习,做出了一个万年历程序。
该程序实现了简易的万年历的功能,实现了万年历的四个基本功能。
当进入此程序,通过界面的提示可以很容易的进入万年历功能选择所实现的功能。
此万年历有以下四个常能用的功能:
按年查询、按月查询、按日查询、打印整年日历。
这四个常用功能基本满足了人们在生活中的对万年的需求,本万年历跨度较其他万年历稍大一些,可以查询到更广的年历。
关键词:
C语言;
电子万年历;
数组
1绪论
本课题主要是针对简易电子万年历的功能,以及子模块的设计展开探究。
课题主要包括了使用C语言来调用各个模块的函数,使这些函数相互之间联系起来,解决用户需要的简易问题,同时考察组员对C语言中的函数、顺序、循环、if语句的嵌套、for语句的嵌套的操作能力。
并且在探究的过程中培养组员分析问题和解决问题的能力,提高组员之间团结合作的能力。
1.1设计目的
1.通过实训可以综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关。
更加了解了C语言的好处和其可用性。
同时增加了同学之间的团队合作精神,更加也体会到以后在工作中团队合作的重要性和必要性。
2.通过实训,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程设计能力。
为后续各门计算机课程的学习和毕业设计打下坚实基础。
1.2设计背景
C语言是近年在国外得到迅速推广应用的一种机器语言。
C语言功能丰富,表达能力强,应用灵活方便,应用围广,目标成序效率高,可移植,极有高级语言的优点,又具有低级语言的许多特点。
因此,C语言特别适合于编写各种软件。
在这次的实训中我将把日常生活中最经常接触的——日历的查询,利用C语言的程序编成一个简单的万年历查询系统。
通过这个小小的系统可以实现部分功能。
在程序中你能看到很多熟悉的C语言关键字,同时也加入了很多自己课外了解到的一些关键字。
1.3需求背景
目前比较流行电子万年历程序,比较典型的是windows中各版本的日历程序。
但是这些程序总是有一定的限制,需要一个跨度很大的日历来方便人们的生活,而C语言程序与设计充分发挥了这个优点,用很短的文本填补了这一个空白。
同时也用强有力的证据告诉人们C语言这个新生事物的应用围是极其广阔的。
1.4小组分工
组成员是一个整体,小组是一个团队,强调集体行动,不搞个
人主义,组对于各种任务要有明确分工,并且要明确落实到人。
组长:
白博康在以身作则的基础上,对组员的学习、行为、思想等进行监督、督促和指导。
包括随时与指导老师联系,分派组员任务。
同时负责实训容的收尾、排版、制图、检查错误、部分程序的调试等工作。
组员:
蔡家豪在报告书中做了很大的贡献,在我们的报告书中担任了流程图制作,资料搜集的工作,为我们的工作顺利进行起到了很大的作用。
同时为组同学做好了后勤保障工作。
程虞华在我们组中寻找源代码以及对源代码进行改进,为我们提供了程序设计的基础,并和其他组员一起查询错误。
在报告书中为我们编辑了详细程序这一部分。
同时协助其他组员进行实训中表格的制作,流程图的制作。
2总体设计
2.1总模块设计
用户通过不同的数字进入不同的菜单,万年历显示公元后任何年份的日历,类似于一般挂历上的格式,输入年份,判断是否为闰年;
输入年月日,判断为星期几;
输入年份,打印出查询月历;
输入年份,打出该月的日历。
图2.1功能模块图
2.2使用头文件说明
本程序应用到的头文件:
#include
"
stdio.h"
在使用标准函数库中的输入输出函数时,编译系统要求程序提供有关的信息(例如对这些输入输出函数的声明),#include<
stdio.h>
的作用就是用来提供这些信息的,stdio.h是C编译系统提供的一个文件名,stdio是“standardinput&
output”的缩写,即有关标准输入输出的信息。
在程序中用到系统提供的标准函数库中的输入输出函数时,应在程序的开头写上一行:
#include"
或者是#include<
这样才能调用库函数。
二者主要在于查找效率上有差别,#include<
一般用包含系统文件,它是查找先从系统目录查找开始查找;
#include"
一般用包含项目文件,它是查找先从项目目录查找开始查找。
在编写C语言中,常用到printf()和scanf()函数,他们就是stdio.h中的两个标准输入输出函数,所以编程语句中如果要用到此两个函数就一定要在头文件中加入#include<
。
windows.h"
头文件封装了库函数以及一些类,将一些复杂的工作由库函数处理,而用户不必把精力放在这些地方。
比如说cout<
<
,为标准输出流,其实说到底还是函数调用,不过这个函数有些特殊,用的是运算符重载,确切地说是重载了“<
”运算符,作用是将键盘输入的在屏幕上打印出来,这个功能要是由我们去写,估计也得学个两三年才有可能。
所以就简化了操作。
而这一系列的函数都在头文件中包含(是一个函数库)。
在调用时包含后便可直接用。
2.3使用变量声明
表2.2变量的声明
变量
变量说明
表示月份的变量
表示年份的变量
NameOfMonth
WeekDay
表示日期的变量
Choise>
表示菜单选择的变量
x
y
表示一个月中的某一天的变量
sum
判断某天是一年中的第几天的变量
number
判断某天离公元1年1月1日还有几天的变量
a[]
表示每月天数的数组变量
2.4运用到C语言的函数
在程序中应用了大量的自定义函数,都为了使程序更简洁明了。
其中:
int
IsLeapYear()
/*判断是否为闰年*/
char*NameOfMonth()
/*判断某天是一年中的几月*/
char*WeekDay()
/*对天数进行判断确定是星期几*/
intjiri()/*判断这一月的总天数*/
intX=(int)(year/100);
/*世纪数*/
intY=X-(int)(X/4);
/*如果按4年一闰来算,Y指的是比实际上多算的天数,在下面需要减去*/
intGetDayOfMonth()/*输出某一年中的月历*/
inttmp_days=GetDays(year,month,1);
/*本月积日*/
intShowCalendar()/*输出某一年的某一月的详细日历*/
intDateCheck/*判断合法性*/
jiri=GetDays(year,month,1);
/*获取特定日期的总天数*/
ShowCalendar(year,month,1);
}/*输出年历*/
counterdays()
/*判断今天距特定日期的天数*/
intdayofweek()
/*判断是星期几*/
intGetDays
/*判断今天的日期*/
2.5函数调用关系
上述函数调用关系如下图所示:
图2.5函数调用关系
3详细设计
3.1函数运行流程图
通过外部菜单的功能和相应的提示进行输入即进入所要运行的功能。
定义了一个主函数intmain()这个函数就是我们整个程序运行的主要框架。
通过while这个主循环让用户输入相应的功能前的代码来实现想要的功能。
通过在Choise>
之后输入所需运行的程序的代码进行执行相应的程序。
图3.1函数运行流程图
3.2闰年判断模块
用户通过输入1进入闰年判断的程序,进入闰年判断后,通过对函数int
的循环进行判断,最后输出结果,输出结果后返回主菜单。
图3.2闰年判断模块
进入菜单选择闰年判断功能,输入进行查询,查询后将显示查询的年份是否为闰年。
若是,则显示此年为闰年,若不是闰年则显示此年不是闰年。
首先第一步定义了IsLeapyear这个函数,这个函数主要是为实现闰年判断这个功能的。
通过year%4==0&
&
year%100!
=0||year%400==0判断输入的该年是否为闰年,从而通过接下的步骤return返回相应的数据。
相关代码如下:
intIsLeapYear(intyear)
{
if(year%4==0&
=0||year%400==0)
{
return