C语言课程设计万年历打印
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言课程设计万年历打
印
This model paper was revised by the Standardization Office on December 10, 2020
温馨提示
程序语言:C、C++、C#、Python(红色字体表示本课设使用的程序设计语言)
图形功能选项:Win32控制台程序(黑框、文本界面)、Win32程序、MFC、WinForm、DirectX10(黑体标明表示本课设的程序图形类别,默认为非图形界面Win32控制台程序)
数据结构:基础类型、数组、链表、双向链表、搜索树(非平衡二叉树)、平衡二叉树、链表与平衡二叉树相结合、堆栈、队列、串、图(黑体标明表示本课设使用的数据结构)
C++语言项:STL库(黑体标明表示使用C++的STL库)
编译环境:Windows 7 64位旗舰版(Linux及其他环境请谨慎下载)
集成开发环境:Visual C++ 、DEVC++、CodeBlocks、Visual Studio 2015均可通过编译。(若无法通过编译运行,则会用浅蓝色字体表示)
分多头文件编译:否(所有代码基本都包含在一个文件内,如需试验头文件功能,请自行参考相关文献)
内容说明:
1、课设题目及预览内容将在第二页开始展示。
2、代码行数:333行
3、目录所示内容,本文基本涵盖,如无内容,会在本页进行说明。
4、附录绝对包含用户使用手册及程序完整源代码和详细注释。
5、如需下载其他头文件(例如DirectX需另行配置),本文会在此进行说明。
6、本文撰写内容仅供学习参考,另外,由于本人水平有限,编写之处难免存在错误和纰漏,恳请各位老师或同学批评指正。
题目:万年历显示
功能要求:
(1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。
(2)输入年月,输出该月的日历。
(3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。
运行截图:
功能(一):
功能(二):
功能(三):
课程设计报告
课题:
学院:
专业:
学生姓名:
学号:
指导老师 :
20XX年XX月XX日目录
摘要
万年历的主要功能是通过C语言编程实现查询某年的日历情况,并且可以查询某年月的日历情况,还可以对某年月日进行计算距今的天数和判断是否为公历节日,其功能和代码满足人性化设计和良好的编程规范要求。
关键词:万年历,C语言编程,人性化设计
需求分析
系统将以用户输入的信息进行功能的选择,提供某年日历的输出、某年某月日历的输出和距今天数的输出及节假日的判断这大三功能。
功能流程图
本程序主要通过获取屏幕输入,然后进行字符串处理,选择相应的功能执行,最后打印输出信息。功能流程图如下:
功能模块图
开始
输入
处理输入信息
判断年
年月日运算,计算距今的天数年月运算,准备
打印某年某月日
年运算,准备打
印某年日历输出
结束
提示信息
打印某年日历
模块
打印某年某月
日历模块
计算距今天数
和判断节日模图功能模块图
数据结构
建立日历信息结构体,结构体成员变量包括月末、月初星期几、屏幕信息左半边日历是否打印完毕。
typedef struct calendar {
int month_end; ....
int printFinished; 程序设计(第四版).北京:清华大学出版社,2010 [2] 林锐着.高质量C 编程指南.北京:电子工业出版社,2001
[3]Stephen .编程精粹:编写高质量C 语言代码.人民邮电出版社,2009 图 程序流程图(一)
是 否
firstFun()函
判断是否打
打印某月日历
结束
图 程序流程图(二) 是 否
secondFun()
判断是否月
打印某月某日的日历
结束 图 程序流程图(三)
thirdFun()函判断是打印信息
结束 计算距今天数
附录
用户使用手册
1、根据屏幕提示,输入即可。
2、输入年份,例如2018年,则会打印2018年的日历。
3、输入年月,例如2018 10(也可以尝试其他的分隔符,例如2018,10),则会打印2018年10的日历。
4、输入年月日,例如2018 10 1(同上),则会输出距今的天数和输出具体的节假日。
程序源代码
#include<>
#include<>
#include<>
#include<>
#define isPrime(year) ((year%4==0&&year%100!=0)||(year%400==0)) ....
int printFinished; irst_day = calculateWeeks(year, i + 1, 1);
switch (fun) {
case 1:firstFun(year, cal); break;
case 2:secondFun(year, month, cal); break;
case 3:thirdFun(year, month, day); break;
}
return 0;
}
void judgmentLeapYear(int year, Calendar *cal)
{
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
cal->month_end = 29;
else
cal->month_end = 28;
}
int calculateWeeks(int year, int month, int day)
{
int c, w, y;
y = year % 100;onth_end) { rintFinished = 1; onth_end) { rintFinished) { onth_end || cal[month - 1].printFinished) {