C语言程序设计实训任务书题目:万年历学生:学号:班级:_物联网工程_ 题目类型:软件工程(R)指导教师:一、设计目的1.进一步掌握和利用C语言进行程序设计的能力;2.进一步理解和运用结构化程序设计的思想和方法;3.初步掌握开发一个小型实用系统的基本方法;4.学会调试一个较长程序的基本方法;5.学会利用流程图或N-S图表示算法;6.掌握书写实训开发文档的能力(书写实训报告)。
二、设计任务及容用C语言编写万年历1.功能选择可以用菜单实现。
例如可以选择1按年查询2按月查询3按日查询0退出用户通过不同的数字进入不同的菜单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语言程序设计》清华大学摘要C语言在近年来国外得到了很广泛的推广,而电子万年历也是人们在日常的生活需求中必不缺少的一部分。
我们通过这学期对C语言的学习,做出了一个万年历程序。
该程序实现了简易的万年历的功能,实现了万年历的四个基本功能。
当进入此程序,通过界面的提示可以很容易的进入万年历功能选择所实现的功能。
此万年历有以下四个常能用的功能:按年查询、按月查询、按日查询、打印整年日历。
这四个常用功能基本满足了人们在生活中的对万年的需求,本万年历跨度较其他万年历稍大一些,可以查询到更广的年历。
关键词: C语言;电子万年历;数组目录1绪论 (1)1.1设计目的 (1)1.2设计背景 (1)1.3需求背景 (1)1.4小组分工 (3)2总体设计 (3)2.1总模块设计 (3)2.2使用头文件说明 (3)2.3使用变量声明 (4)2.4运用到C语言的函数 (4)2.5函数调用关系 (5)3详细设计 (6)3.1函数运行流程图 (6)3.2闰年判断模块 (7)3.3年历打印模块 (8)3.4星期计算模块 (9)3.5打印月历模块 (11)3.6日期合法性检查模块 (13)4 调试分析 (14)4.1错误分析 (14)4.2错误修改 (14)4.3运行程序 (15)4.4闰年的判断 (15)4.5 星期计算的功能 (16)4.6月历查询功能 (17)4.7打印整年年历功能 (18)5 源程序清单 (19)总结 (26)致 (27)参考文献 (3)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是“standard input & output”的缩写,即有关标准输入输出的信息。
在程序中用到系统提供的标准函数库中的输入输出函数时,应在程序的开头写上一行:#include"stdio.h"或者是#include<stdio.h>,这样才能调用库函数。
二者主要在于查找效率上有差别,#include<stdio.h>一般用包含系统文件,它是查找先从系统目录查找开始查找;#include "stdio.h"一般用包含项目文件,它是查找先从项目目录查找开始查找。
在编写C语言中,常用到printf()和scanf()函数,他们就是stdio.h中的两个标准输入输出函数,所以编程语句中如果要用到此两个函数就一定要在头文件中加入#include<stdio.h>。
#include"windows.h"头文件封装了库函数以及一些类,将一些复杂的工作由库函数处理,而用户不必把精力放在这些地方。
比如说cout<<,为标准输出流,其实说到底还是函数调用,不过这个函数有些特殊,用的是运算符重载,确切地说是重载了“<<”运算符,作用是将键盘输入的在屏幕上打印出来,这个功能要是由我们去写,估计也得学个两三年才有可能。
所以就简化了操作。
而这一系列的函数都在头文件中包含(是一个函数库)。
在调用时包含后便可直接用。
2.3使用变量声明表 2.2 变量的声明2.4运用到C语言的函数在程序中应用了大量的自定义函数,都为了使程序更简洁明了。
其中:int IsLeapYear ()/*判断是否为闰年*/char *NameOfMonth ()/*判断某天是一年中的几月*/char *WeekDay ()/*对天数进行判断确定是星期几*/int jiri()/*判断这一月的总天数*/int X=(int)(year/100);/*世纪数*/int Y=X-(int)(X/4);/*如果按4年一闰来算,Y指的是比实际上多算的天数,在下面需要减去*/int GetDayOfMonth()/*输出某一年中的月历*/int tmp_days=GetDays(year,month,1);/*本月积日*/int ShowCalendar()/*输出某一年的某一月的详细日历*/int DateCheck /*判断合法性*/jiri=GetDays(year,month,1);/*获取特定日期的总天数*/ShowCalendar(year,month,1);} /*输出年历*/int counterdays()/*判断今天距特定日期的天数*/int dayofweek()/*判断是星期几*/int GetDays/*判断今天的日期*/2.5函数调用关系上述函数调用关系如下图所示:图2.5 函数调用关系3详细设计3.1函数运行流程图通过外部菜单的功能和相应的提示进行输入即进入所要运行的功能。
定义了一个主函数int main()这个函数就是我们整个程序运行的主要框架。
通过while这个主循环让用户输入相应的功能前的代码来实现想要的功能。
通过在Choise>之后输入所需运行的程序的代码进行执行相应的程序。
图3.1函数运行流程图3.2闰年判断模块用户通过输入1进入闰年判断的程序,进入闰年判断后,通过对函数int IsLeapYear ()的循环进行判断,最后输出结果,输出结果后返回主菜单。