c语言课程设计报告 - 万年历

C语言课程设计报告 -----万年历设计人:贾伟涛学号:2013010901班级:13电信应电班指导老师:张伟日期:2014年6月11日内容提要(这个你最好自己写)通过大一下学期对C语言的学习,了解到了很多C语言的相关知识。

学习的过程虽然有很多困惑,但是当自己能够独立的看懂和独立的完成一个简单的程序时,心中就会收获无限的喜悦和成就感。

我虽然可以看懂一些简单的程序,编写一些简单的计算程序,更多的是学会了一种思想——编程,它让我在去思考很多日常生活中的事物是怎么样通过一个个小小的函数实现功能的,激发我对c语言的兴趣。

C语言是近年在国内外得到迅速推广应用的一种机器语言。

C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。

因此,C语言特别适合于编写各种软件。

在这次的课程设计中我将把日常生活中最经常接触的——日历的查询,利用C语言的程序编成一个简单的万年历查询系统。

通过这个小小的系统可以实现很多功能。

在程序中你能看到很多熟悉的C语言关键字,同时也加入了很多自己课外了解到的一些关键字。

在不断的调试中最终才获得最为完整的程序。

接下来就是我的C语言课程设计的具体内容来了,大家拭目以待吧!目录一、系统功能和数据说明-----------------------二、问题分析---------------------------------三、程序总体设计及功能结构框图---------------四、程序流程图-------------------------------五、源程序代码-------------------------------六、使用说明---------------------------------七、个人心得---------------------------------八、参考文献---------------------------------一、系统功能和数据说明(一)功能简介在日常生活中能接触到很多不同类型的日历,在日历上我们通常希望它能简单明了的给我们最想要的日期信息。

在我的万年历系统当中,就是将日历,月历做的简单明了,很方便我们的查询使用。

下面是它要实现的一些基本功能:C语言编写万年历查询系统:(1)输入年份,判断是否为闰年(2)输入年月日,判断是星期几(3)输入年份,打印出12个月的月历(4)输入年月,打印出本月的日历(5)输入指令错误的提示(二)程序中的数据说明①unsigned int run[12] ={31,29,31,30,31,30,31,31,30,31,30,31};unsigned int ping[12]={31,28,31,30,31,30,31,31,30,31,30,31};;这是定义的关于每个月天数的数组,根据大小月以及二月份的特殊情况将每个月的天数变为数组中的元素存入数组当中。

其中run[1]=29,是将闰年二月的天数28天作为初始元素存入。

另一个ping[1]=28,是将平年二月的天数28天作为初始元素存入。

② char month_str[][10]={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};这个数组是定义12个月份的数组。

二、问题分析对于闰年的判断,能被4整除但不能被100整除,或者能被400整除的年份为闰年,否则为平年。

日期的查询,就是直接打印改天所在月份的月历。

程序难点在于判断星期,但根据公式,我们可以很容易地用年月日推断出星期:c=days+day;w=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+c)%7;//求星期公式其中year:要查询的年份day:从该年的一月一日起到该天的天数w:得出的星期数。

在打印月历时,只要知道第一天的星期,就可以依次输入后面的日期,通过一定长度输出日期,在遇到某天时星期天时,就换行输出,因此可以按照月历的格式输出。

判断日期是否合法,if((nian>6000)||(nian==0)||(yue>12)||(yue==0)||(ri>31)||(ri==0)) {printf("输入错误,请重新输入\n");goto zailai;}可以先判断年月日是否有小于0的值,月和日是否有超出最大值12和31 ,如果通过此判断合法,再判断是否是闰年,如果是闰年,则判断二月份是否满足要求,闰年二月份不能超过29天,平年二月份不能超过28天。

在查询过程中,如果发现输入不合法或者不满足输入要求,则提示错误,并返回主菜单。

三、程序总体设计及功能结构框图(一)功能结构框图(二)程序设计头文件:#include<stdio.h>//基本输入输出函数#include <stdlib.h>//调用清屏函数#include<windows.h>//调用延时函数在程序中运用了大量的自定义函数,都涉及为了使程序更简介明了。

其中有:int menu()//选择菜单void nian_yue()//输入年月函数void in_nian()//只输入年函数void _in()//年,月,日输入,范围判别int _nian2(int year)//判断是否为闰年int yue_day(int year,int month)//计算某年某月有多少天函数int xingqi_(int year,int month,int day)//判断某年某月某日是星期几的函数void _4(int year,int month)//第四功能:显示某月的月历int _3( int year)//第三功能:显示某年的月历void _2()//第二功能:计算某年是否为闰年void _1()//第一功能:计算某年某月某日是星期几这些函数的定义及其相应的内部程序共同构筑起了这个万年历查询系统的总程序。

其中int _nian2函数是用来判断输入的年份是否为闰年,实现了预计功能的第一个方面;int xingqi函数则是为了实现判断星期而编写的;void _4函数则是为了实现单个月的月历而编写的,int _3函数则是为了实现某年的月历而编写的。

四、程序流程图(一)总流程图(二)算法说明1. 总天数的算法:int _nian2函数的使用,判断出了输入年份是否为闰年的信息。

判断一年是否为闰年的方法是:该年分而能被4整除但不能被100整除,或者是能被400整除。

判断是否为闰年的流程图:2.输入日期计算星期几:利用int xingqi_函数可以判断出星期,然后对于输入的日期可以通过公式c=days+day;w=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+c)%7计算就可以输出相应的星期数。

/*判断某年某月某日是星期几的函数,返回星期对应的数字,如返回对应星期天*/int xingqi_(int year,int month,int day){int c,i,days=0,t,w;for(i=1;i<month;i++)//月份循环{t=yue_day(year,i);//调用求某年某月有多少天函数days+=t;}c=days+day;w=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+c)%7;//求星期公式return w;}3. 对输入信息的汇总:void _4(int year,int month)//打印某年某月的月历,int _3( int year) //打印某年的月历。

/*--------------第四功能:显示某月的月历--------*/void _4(int year,int month){int i,temp,k;temp=xingqi_(year,month,1);//调用判断某年某月某日是星期几的函数printf("\n %d--%d\n",year,month);printf("\n0 1 2 3 4 5 6\n");printf("\nS M T W T F S\n");/*以下是月历排版*/for(i=1;i<=temp;i++)printf(" ");for(k=1;k<=yue_day(year,month);k++,i++){printf("%-2d ",k);if(i%7==0)printf("\n");}}/*--------------第三功能:显示某年的月历--------*/int _3( int year){int temp;int i,j,k;printf("\n\n%d 年\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=xingqi_(year,i,1);//调用判断某年某月某日是星期几的函数/*以下是月历排版*/for(j=1;j<=temp;j++)printf(" " );for(k=1;k<=yue_day(year,i);j++,k++){printf("%-2d ",k);if(j%7==0)printf("\n");}}}五、源程序代码#include<stdio.h>//基本输入输出函数#include <stdlib.h>//调用清屏函数#include<windows.h>//调用延时函数unsigned int nian,yue,ri; //全局变量unsigned int run[12] ={31,29,31,30,31,30,31,31,30,31,30,31};unsigned int ping[12]={31,28,31,30,31,30,31,31,30,31,30,31};char month_str[][10]={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};/*---------------选择菜单--------*/int menu(){int a;printf("\n\n ---------------- 万年历系统----------------\n\n\n"); printf(" 1.计算某年某月某日是星期几\n");printf(" 2.计算某年是否为闰年\n");printf(" 3.显示某年的月历\n");printf(" 4.显示某月的日历\n");printf(" 5.退出系统\n\n");printf("请输入相应的数字,并回车请输入");scanf("%d",&a);printf("您输入的是%d \n",a);printf("请稍后,正在执行...");Sleep(1000);//延时秒system("cls");//清屏return(a); //返回值}/*------------------输入年月函数------------------*/void nian_yue(){printf("请输入要显示的年,月并以逗号隔开\n");printf("\n例如:\n");printf(" 要显示2014年月则输入: 2014,6 回车\n"); printf("请输入");scanf ("%d,%d",&nian,&yue);}/*-----------------只输入年函数-----------------*/void in_nian(){printf("请输入年份,并回车\n");printf("请输入");scanf("%d",&nian);}/*----------------年,月,日输入,范围判别--------*/void _in(){zailai: //跳转标志printf("请输入要计算的年份,输入的年,月,日请以逗号隔开\n"); printf("\n例如:\n");printf("要计算年月日输入格式为:2014,6,11 回车\n\n"); printf("请输入:");scanf("%d,%d,%d",&nian,&yue,&ri);if((nian>6000)||(nian==0)||(yue>12)||(yue==0)||(ri>31)||(ri==0)) {printf("输入错误,请重新输入\n");goto zailai;}}/*------判断是否为闰年方式二,是返回,否则返回------*/int _nian2(int year){if(year%400==0||year%4==0&&year%100!=0)//计算闰年return 1 ;elsereturn 0;}/*---------------求某年某月有多少天------------*/int yue_day(int year,int month){int mon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};if(_nian2(year)&&month==2)//如果为闰年,月加return 29;elsereturn(mon_day[month-1]);/*判断某年某月某日是星期几的函数,返回星期对应的数字,如返回对应星期天*/ int xingqi_(int year,int month,int day){int c,i,days=0,t,w;for(i=1;i<month;i++)//月份循环{t=yue_day(year,i);//调用求某年某月有多少天函数days+=t;}c=days+day;w=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+c)%7;//求星期公式return w;}/*--------------第四功能:显示某月的月历--------*/void _4(int year,int month){int i,temp,k;temp=xingqi_(year,month,1);//调用判断某年某月某日是星期几的函数printf("\n %d--%d\n",year,month);printf("\n0 1 2 3 4 5 6\n");printf("\nS M T W T F S\n");/*以下是月历排版*/for(i=1;i<=temp;i++)printf(" ");for(k=1;k<=yue_day(year,month);k++,i++){printf("%-2d ",k);if(i%7==0)printf("\n");}}/*--------------第三功能:显示某年的月历--------*/ int _3( int year){int temp;int i,j,k;printf("\n\n%d 年\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=xingqi_(year,i,1);//调用判断某年某月某日是星期几的函数/*以下是月历排版*/for(j=1;j<=temp;j++)printf(" " );for(k=1;k<=yue_day(year,i);j++,k++){printf("%-2d ",k);if(j%7==0)printf("\n");}}}/*--------------第二功能:计算某年是否为闰年--------*/ void _2(){in_nian();//输入年函数printf("\n\n");if(_nian2(nian)==1)printf("%d年是闰年\n",nian);elseprintf("%d年是平年\n",nian);}/*--------------第一功能:计算某年某月某日是星期几----*/void _1(){_in();//输入年月日函数printf("\n\n");printf("%d年%d月%d日是星期%d\n\n",nian,yue,ri,xingqi_(nian,yue,ri)); }/*-------------------主函数------------------*/void main(){int x;system("cls");//清屏star://菜单重选跳转标志switch (menu()){case 1:G1://G1跳转标志_1();//启动第一功能计算某年某月某日是星期几printf("输入1 并回车,返回主菜单\n");printf("输入2 并回车,重新输入\n");printf("输入其他则退出程序\n");printf("请输入");scanf("%d",&x);system("cls");//清屏if(x==1){ goto star; }//goto语句跳转到菜单重选跳转标志if(x==2){ goto G1; }//goto语句跳转到G1break;case 2:G2://G2跳转标志_2(); //第二功能:计算某年是否为闰年printf("输入1 并回车,返回主菜单\n");printf("输入其他则退出程序\n");printf("输入2 并回车,重新输入\n");printf("请输入");scanf("%d",&x);system("cls");//清屏if(x==1){ goto star; }//goto语句跳转到菜单重选跳转标志if(x==2){ goto G2; }//goto语句跳转到G2break;case 3:G3://G3跳转标志in_nian();//输入年_3(nian);//启动第三功能printf("\n\n");printf("输入1 并回车,返回主菜单\n");printf("输入2 并回车,重新输入\n");printf("输入其他则退出程序\n");printf("请输入");scanf("%d",&x);system("cls");//清屏if(x==1){ goto star; }//goto语句跳转到菜单重选跳转标志if(x==2){ goto G3; }//goto语句跳转到G3break;case 4:G4://G4跳转标志nian_yue();//输入年月_4(nian,yue);////启动第四功能printf("\n\n");printf("输入1 并回车,返回主菜单\n");printf("输入2 并回车,重新输入\n");printf("输入其他则退出程序\n");printf("请输入");scanf("%d",&x);system("cls");//清屏if(x==1){ goto star; }//goto语句跳转到菜单重选跳转标志if(x==2){ goto G4; }//goto语句跳转到G4break;case 5:printf("你确定要退出吗?\n");printf("确定退出按,取消退出按!\n");scanf("%d",&x);system("cls");//清屏if(x==1){ exit(0); }//退出if(x==2){ goto star; }//goto语句跳转到菜单重选跳转标志break;}}六、使用说明运行程序,进入主菜单界面,可看到以下界面---------------- 万年历系统----------------1.计算某年某月某日是星期几2.计算某年是否为闰年3.显示某年的月历4.显示某月的日历5.退出系统请输入相应的数字,并回车请输入1、在“请输入相应的数字,并回车请输入”后面输入功能序号,如需“.计算某年某月某日是星期几”,请输入“1”,其他功能相同。

合集下载

c语言课程设计万年历

c语言课程设计万年历

c语言课程设计万年历一、课程目标知识目标:1. 理解C语言中结构体、数组、函数等基本概念,并能运用这些知识实现万年历的基本功能;2. 学会使用循环、判断等控制结构,实现对日期的有效处理;3. 了解并掌握C语言中模块化编程的方法,将万年历功能划分为独立的功能模块。

技能目标:1. 能够独立编写C语言程序,实现万年历的日期显示、查询、切换等功能;2. 学会使用调试工具,对程序进行调试和优化,提高程序的稳定性;3. 学会在团队协作中发挥个人优势,与他人共同完成程序设计。

情感态度价值观目标:1. 培养学生积极思考、勇于探索的精神,增强学生对编程的兴趣和热情;2. 培养学生良好的编程习惯,遵循编程规范,注重代码的可读性和可维护性;3. 培养学生的团队协作意识,学会与他人沟通、分享、互助,共同进步。

课程性质:本课程为实践性较强的课程,要求学生在掌握C语言基本知识的基础上,运用所学知识完成万年历的设计与实现。

学生特点:学生具备一定的C语言基础,对编程有一定了解,但实践经验不足。

教学要求:结合学生特点,注重理论与实践相结合,引导学生主动参与,培养学生的编程能力和团队协作能力。

通过课程学习,使学生能够独立完成万年历的设计与实现,提高学生的编程水平和实际操作能力。

二、教学内容1. C语言基本语法复习:回顾结构体、数组、函数等基本概念,确保学生能够熟练运用;相关教材章节:第一章至第四章。

2. 控制结构:讲解循环、判断等控制结构在万年历中的应用;相关教材章节:第五章。

3. 模块化编程:引导学生将万年历功能划分为独立的功能模块,讲解模块之间的调用关系;相关教材章节:第六章。

4. 程序调试与优化:介绍调试工具的使用,教授学生如何找出并解决程序中的错误;相关教材章节:第七章。

5. 项目实践:指导学生按照教学大纲,分阶段完成万年历的设计与实现;相关教材章节:全书综合应用。

教学进度安排:1. 第一周:C语言基本语法复习;2. 第二周:控制结构;3. 第三周:模块化编程;4. 第四周:项目实践(第一阶段:功能设计);5. 第五周:项目实践(第二阶段:功能实现);6. 第六周:项目实践(第三阶段:调试与优化)。

c语言课程设计报告--万年历

c语言课程设计报告--万年历

c语言课程设计报告--万年历C 语言课程设计报告C语言课程设计报告实验课程:c语言课程设计年级:软件2班实验成绩:课程设计名称万年历姓名:**任课教师:杨** 学号:**** 实验日期:2014.6.11一、目的利用所学的知识解决生活中的实际问题。

本课题涉及的知识内容:时间函数,tm结构,for,do..while循环嵌套,if语句,指针,函数回调,结构体函数,文件创建与保存,自定义函数等语言内容。

二、内容与设计思想1.设计内容①显示系统当前时间②查询用户输入的时间③在用户输入的时间上,进行下一步的查询④对用户所需日期添加备忘,可供查看和添加2.主要代码结构main()函数调用了菜单函数,通过菜单函数来调用各个不同功能的函数。

3.主要代码段分析。

先显示系统时间,再通过列一个菜单来调用各个功能的函数;Themonth函数实现了对用户输入日期当月的处理,例如:日期的显示,日期与周几的对应等等。

Nextstep函数则是对输入日期的后续操作. Writetext、Readtext,、Changetext函数是对备忘录方面的操作,主要功能分别是写备忘,查看备忘,修改备忘。

三、使用环境本次上机实践所使用的平台和相关软件。

平台:Windows 2000相关软件:VC++四、调试过程1.测试结果分析经检验,运行结果正确五、总结1.设计中遇到的问题及解决过程调试过程中往往一个月的第一天与相对应的星期几对上比较棘手,通过查阅资料,找到了相应的函数;解决了问题备忘方面设计有关文件的读取方面的知识,在此之前,对文件的读取,修改比较,生疏模糊。

通过看书和上网寻找有关文件读取方面的例子,对文件有了初步的认识和应用。

期望备忘录功能中有修改功能,后期实在解决不了,换成了较为简单的添加功能。

2.设计体会和收获。

学会了如何通过现有资源解决问题;对c语言的有了更深的了解六、附录1.源代码#include "stdio.h"#include "time.h"#include "malloc.h"#include "stdlib.h"#include "string.h"typedef struct text{int num;char date[100];}Text[30],*pText;//函数声明void in_menu(void);void menu(void);void themonth(int,int);void nextstep(int,int);void Writetext(pText);void Readtext(void);void addtext(pText);void exit_calendar(void);int thelast(FILE*);//总菜单void allmenu(void){in_menu();//输出菜单menu();//选择菜单}//输出菜单void in_menu(void){printf(" △○日历查询及备忘系统○△\n");printf("\n");printf(" ===================1、日历==============================\n\n");printf(" ===================2、编辑备忘=========================\n\n");printf(" ===================3、查看备忘===========================\n\n");printf(" ===================4、添加备忘===========================\n\n");printf("====================5、退出==============================\n\n");printf("******************************************************* *********\n\n");printf("请选择菜单号码:");}//菜单选择void menu(void){struct text t;int i;scanf("%d",&i);switch(i){case 1:{//当前查询的月份int year;int month;printf("请输入要查询的年份及月份:\n"); scanf("%d %d",&year,&month); themonth(year,month);printf("按回车键返回主菜单!\n"); getchar();getchar();system("cls");allmenu();break;}case 2:{Writetext(&t);//写备忘printf("按回车键返回主菜单!\n"); getchar();getchar();system("cls");allmenu();break;}case 3:{Readtext();//查看备忘内容printf("按回车键返回主菜单!\n"); getchar();getchar();system("cls");allmenu();break;}case 4:{addtext(&t);//修改备忘printf("按回车键返回主菜单!\n"); getchar();getchar();system("cls");allmenu();break;}case 5:{exit_calendar();}default: break;}void nextmenu(int year,int month){int j;printf("===================1、结束本次查询,回菜=====================\n");printf(" ===================2、继续查询============================\n");scanf("%d",&j);if(j == 1){allmenu();}else{nextstep(year, month);}}/************************查询的当月*/void themonth(int year,int month){//定义变量struct tm t,*date;//tm结构指针time_t t_day;//声明time_t类型的变量t_dayint i,j;int day;if(month == 2 )//月份天数的判断if(year%4 == 0&&year%100 == 0||year%400 == 0)day = 28;elseday = 29;}else if(month == 4 || month == 6 || month == 9 || month == 11)//小月{day=30;}elseday=31;printf("查询日期当月天数是:%d\n日历\n",day); //输出当前天数printf("一\t二\t三\t四\t五\t六\t日\t\n"); //日历的第一行,显示一二三四五六日//功能:使当月中的每一天与对应的周几对齐for(i = 1;i <= day;i++){t.tm_year=year-1900;//从1900开始t.tm_mon=month-1;//月份【取值[0-11]】t.tm_mday=i;//一个月的日期[1-31]t.tm_hour=0;//时-取值区间t.tm_min=0;//分-取值区间t.tm_sec=0;//秒-取值区间t.tm_isdst=0;//夏令时标识符,实行夏令的时候为正否则为0t_day=mktime(&t);//date=gmtime(&t_day);if(i==1)for(j=0;jtm_wday;j++)printf("\t");}if(date->tm_wday == 6){printf("%d\n",i);}elseprintf("%d\t",i);}printf("\n\n");nextmenu(year,month);}bool sfnext(int * k)//判断是否继续{if((*k) == 1)return true;elsereturn false;}//是否进行后续操作void nextstep(int year,int month) {int m,k;do{printf("月历上翻请按-1,下翻请按1\n"); scanf("%d", &m);system("cls");if(m == 1){month += 1;printf("现在查询时间为%d年%d月的日历:\n",year,month); if(month/12 != 0){year = year + month/12;month = month % 12;}themonth(year,month);printf("是否继续查询,是:请按1\n");printf("否:请按0\n");scanf("%d",&k);}else if(m == -1){month -= 1;printf("现在查询时间为%d年%d月的日历:\n",year,month); if(month == 0){month = 12;year--;}if(month <= 0){month += 12;year--;}themonth(year,month);printf("是否继续查询,是:请按1\n");printf("否:请按0\n");scanf("%d",&k);}else{printf("error");}}while(sfnext(&k));}//读文件void Writetext(pText t){int len;char n;//读取文件FILE *fp;if((fp = fopen("C:\\text.txt","a+"))==NULL)//a+:以读写方式打开一个文件,允许读{printf("Cannot open the file ,press any key to exit");getchar();exit(0); //退出程序}printf("是否确定对某年某月某日进行备忘:y或n\n");getchar();scanf("%c",&n);if(n == 'y'||n == 'Y'){printf("请输入要添加备忘的数量:\n");scanf("%d",&len);printf("按格式输入(如:1 2014 6 17 c语言作业)\n");//输入需要备忘的年月日for(int i = 0;i < len; i++){printf("Num%d:",i+1);scanf("%d %s",&t[i].num ,&t[i].date);fprintf(fp,"%d %s\n",t[i].num ,t[i].date);//格式化读写}fclose(fp);}else{exit(-1);}}//判断文件是否读完int thelast(FILE*fp){if(fgetc(fp) == EOF)return 1;else{fseek(fp,-1L,SEEK_CUR);return 0;}}//查看备忘内容void Readtext(void){static char c[200];//文件输入FILE*fp;if((fp = fopen("c:\\text.txt","r")) == NULL){printf("文件不存在,按任意键退出.");exit(0);}else{printf("序号\n备忘内容\n");while(!thelast(fp)){fscanf(fp,"%s",c);//读取文件中的信息printf("%s\n",c);}printf("\n");}}void addtext(pText t){FILE *fp;int n,m;if((fp = fopen("C:\\text.txt","a+"))==NULL)//a+:以读写方式打开一个文件,允许读{printf("Cannot open the file ,press any key to exit");getchar();exit(0); //退出程序}printf("请输入要继续添加备忘的数量:\n");scanf("%d",&n);printf("已备忘数量:");scanf("%d",&m);printf("按格式输入(如:1 2014 6 17 c语言作业)\n");//输入需要备忘的年月日for(int i = 0;i < n; i++){printf("Addnum%d:",i+m+1);scanf("%d %s",&t[i+m].num ,&t[i+m].date);fprintf(fp,"%d %s\n",t[i+m].num ,t[i+m].date);//格式化读写}fclose(fp);}void exit_calendar(void)//退出系统{exit(1);}//主函数void main(){time_t now;//声明time_t类型变量time(&now);//获取时间printf("\n\t\t现在是:%s\n",ctime(&now));//系统时间allmenu();// nextstep(year, month,&t);//对当前月份的后续操作}。

C语言万年历设计报告

C语言万年历设计报告

C语言课程设计报告题目:编写万年历系统年级:专业:班级:姓名:学号:目录第1章设计目的第2章需求分析第3章概要设计第4章源程序清单第5章执行结果1)登陆界面2)显示当前日月历3)显示具体日期信息第6章程序问题调试与课程设计心得第1章设计目的设计目的(实验要求):1.模仿现实生活中的挂历.2.当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几).3.当系统日期变到下一月时,系统自动翻页到下一月.第2章需求分析(1)程序运行时,首先给出菜单选项和输入提示:(2)用户可以通过主菜单选择不同选项。

输入1,通过输入当前日期可显示当前月的日历;输入2,通过输入具体日期(中间以空格分开)可显示该日具体信息;输入3,则退出查询系统。

第3章概要设计1.菜单选择界面可通过下面所示函数时现;主要思路:通过while语句与swich…case以及if条件语句实现菜单的循环功能和不同选项的功能实现。

闰年与平年的判断:代码如下:void main(){int year,month,day,a,b;while(1){printf("\n\n\n\n");printf("**********************************************************\n\n");printf(" * * \n");printf(" Welcome to enter calendar system \n");printf(" * * \n\n");printf("**********************************************************\n\n\n");printf(" 1 The month of current date 2 Date 3 Exit\n");printf(" please import your choose<1~3>,press Enter to define: ");scanf("%d",&b);switch(b){case 1:printf("\n Please import the year,month and day which you want tocheck,the year,month and day separation by blank space: ");scanf("%d%d%d",&year,&month,&day);a=x3(year,month,1);if(a==0){printf("Error!Please import again.\n");break;}yueli(year,month,day);break;case 2:printf("\n Please import the year,month and day which you want to check,the year,month and day separation by blank space: ");scanf("%d%d%d",&year,&month,&day);a=x3(year,month,day);if(a==0){printf("Error!Please import again.\n");break;}rili(year,month,day);break;case 3:exit(0);default:printf("Error!Please import again.\n\n");}}2.闰年的判断:计算所输入的年份是否可被4整除,若不能被整除,为平年。

c万年历课程设计

c万年历课程设计

c 万年历课程设计一、课程目标知识目标:1. 让学生掌握年、月、日的概念及其关系,理解平年和闰年的区别;2. 使学生掌握如何使用万年历查找任意日期的星期,并了解其原理;3. 让学生了解不同历法的起源和发展,提高历史文化的认识。

技能目标:1. 培养学生运用数学知识解决实际问题的能力,如计算日期与星期之间的关系;2. 培养学生动手制作简单万年历的能力,提高动手操作和创新能力;3. 提高学生运用万年历进行时间管理和规划的能力。

情感态度价值观目标:1. 培养学生珍惜时间、合理安排生活的态度,树立时间观念;2. 激发学生对数学学科的兴趣,增强学习数学的自信心;3. 培养学生团队协作意识,学会与同学分享和交流学习心得。

本课程针对小学四年级学生设计,结合学生年龄特点和认知水平,注重知识性与趣味性的结合。

课程内容与教材紧密联系,旨在通过万年历的制作和使用,让学生在实际操作中掌握数学知识,提高解决问题的能力。

同时,注重培养学生良好的时间观念和情感态度,使学生在轻松愉快的氛围中学习,达到预期的学习成果。

二、教学内容1. 年、月、日的基本概念及其关系:包括一年有多少个月,一个月有多少天,平年和闰年的区别及其判断方法。

相关教材章节:第三章《年、月、日》。

2. 万年历的制作原理与使用方法:介绍星期与日期的关系,引导学生学会使用万年历查找任意日期的星期。

相关教材章节:第三章《认识星期》。

3. 不同历法的起源和发展:简述公历、农历等历法的历史背景,提高学生对历史文化的了解。

相关教材章节:第四章《历法的故事》。

4. 实践活动:分组让学生动手制作简易万年历,巩固所学知识,提高动手操作能力。

相关教材章节:第三章实践活动《制作自己的万年历》。

教学内容安排和进度:第一课时:介绍年、月、日的基本概念及其关系,判断平年和闰年的方法。

第二课时:讲解万年历的制作原理与使用方法,学会查找任意日期的星期。

第三课时:简述不同历法的起源和发展,提高历史文化认识。

c万年历课程设计

c万年历课程设计

c 万年历课程设计一、课程目标知识目标:1. 学生能够理解年、月、日的关系,掌握平年、闰年的判断方法。

2. 学生能够运用所学的日期知识,制作一个简易的万年历。

3. 学生了解我国农历与公历的异同,认识到不同文化背景下的时间观念。

技能目标:1. 学生通过观察、分析、实践,提高解决问题的能力。

2. 学生学会运用万年历查找特定日期,为生活实际提供便利。

3. 学生能够运用所学知识,创新设计具有个性化的万年历。

情感态度价值观目标:1. 学生培养对时间管理的重视,养成珍惜时间、合理安排时间的好习惯。

2. 学生通过学习我国农历文化,增强民族自豪感,树立文化自信。

3. 学生在合作交流中,培养团队协作精神,学会尊重他人意见,取长补短。

本课程针对小学四年级学生设计,结合学生好奇心强、动手能力逐渐提高的特点,注重培养学生的学习兴趣和实际操作能力。

课程性质为实践性、探究性,旨在让学生在动手实践的过程中,掌握日期知识,提高解决实际问题的能力。

教学要求以学生为主体,教师为主导,注重启发式教学,激发学生的学习兴趣和思考能力,使学生在轻松愉快的氛围中学习,达到课程目标。

通过本课程的学习,学生能够具备制作和运用万年历的基本能力,同时培养良好的时间观念和团队协作精神。

二、教学内容1. 年、月、日的认识与关系- 公历与农历的基本概念- 年、月、日的定义及其相互关系- 平年与闰年的判断方法2. 万年历的制作方法- 万年历的基本结构- 制作万年历的步骤与技巧- 创新设计个性化万年历3. 日期查找与应用- 运用万年历查找特定日期- 日期在实际生活中的应用- 时间管理的方法与技巧教材章节关联:- 《数学》四年级上册第四章“年、月、日”- 《综合实践活动》四年级上册“我们的时间”教学进度安排:1. 第一节课:年、月、日的认识与关系,平年、闰年的判断方法2. 第二节课:万年历的基本结构,制作万年历的步骤与技巧3. 第三节课:个性化万年历的设计与创新,日期查找与应用4. 第四节课:总结与拓展,时间管理的方法与技巧教学内容确保科学性和系统性,以教材为依据,结合实际生活,让学生在掌握日期知识的基础上,学会制作和运用万年历,提高时间管理能力。

万年历c语言课程设计

万年历c语言课程设计

万年历 c语言课程设计一、课程目标知识目标:1. 学生能够理解万年历的基本概念,掌握日期与星期之间的转换关系。

2. 学生能够运用C语言中的数据类型、运算符和函数实现日期的计算。

3. 学生掌握结构体在C语言中的应用,并能利用结构体数组存储和管理大量日期数据。

技能目标:1. 学生能够运用所学知识,设计并编写一个简单的万年历程序,实现日期的输入、输出及查询功能。

2. 学生能够在编写程序的过程中,运用结构化编程思想,使代码具有可读性和可维护性。

3. 学生能够通过调试和修改程序,解决实际问题,提高编程解决问题的能力。

情感态度价值观目标:1. 学生培养对计算机编程的兴趣和热情,增强学习C语言的自信心。

2. 学生在团队合作中,学会互相帮助、沟通与协作,培养团队精神。

3. 学生通过编程实践,体会计算机科学在生活中的应用,认识到编程对解决实际问题的价值。

本课程针对高中年级学生,结合C语言编程知识,设计具有实用性和趣味性的万年历项目。

课程旨在让学生在实际编程过程中,掌握C语言的基本语法和编程技巧,提高解决问题的能力,同时培养团队协作和沟通能力。

通过本课程的学习,为学生奠定扎实的编程基础,激发他们对计算机科学的兴趣。

二、教学内容1. C语言基础语法复习:变量、数据类型、运算符、控制语句(条件语句、循环语句)。

2. 函数的定义与调用:重点复习函数的定义格式、参数传递、返回值。

3. 结构体的定义与应用:介绍结构体的概念、定义方法以及如何使用结构体数组。

4. 日期与星期的计算方法:讲解日期与星期之间的转换公式,引导学生理解算法。

5.万年历程序设计:a. 界面设计:设计简洁明了的用户界面,方便用户输入和查看日期。

b. 功能实现:实现日期的输入、输出、查询(按年月查询、按日期查询)。

c. 程序优化:讨论如何优化代码,提高程序运行效率。

d. 错误处理:学习如何处理用户输入错误、日期有效性验证等。

教学内容参考教材相关章节,按照以下进度安排:1. 第一课时:C语言基础语法复习,引入结构体概念。

c万年历课程设计

c万年历课程设计一、课程目标知识目标:1. 学生能理解万年历的基本概念,掌握年、月、日的关系及其换算方法。

2. 学生能运用所学的数学知识,编写简单的万年历程序,计算任意日期是星期几。

3. 学生了解历法的起源和发展,理解我国农历与公历的区别和联系。

技能目标:1. 学生通过编写万年历程序,提高编程能力和逻辑思维能力。

2. 学生能够运用万年历知识解决实际问题,如计算节日日期、安排活动等。

3. 学生学会查阅相关资料,培养自主学习能力和合作精神。

情感态度价值观目标:1. 学生对万年历产生兴趣,激发学习数学和编程的热情。

2. 学生通过了解历法的发展,增强对传统文化的认识,培养民族自豪感。

3. 学生在合作学习中,学会尊重他人,培养团队协作意识。

本课程旨在结合学生年级特点,以提高学生的数学应用能力和编程技能为核心,通过万年历的学习,使学生在掌握知识的同时,培养良好的学习态度和价值观。

课程目标具体、可衡量,为教学设计和评估提供明确方向。

二、教学内容1. 万年历的基本概念:年、月、日的关系,闰年的判断方法,星期计算。

2. 编写万年历程序:流程图设计,算法实现,调试与优化。

3. 历法的起源与发展:古代历法,农历与公历的转换,二十四节气。

4. 实践应用:计算特定日期的星期,安排节日活动,了解历史上的今天。

教学大纲:第一课时:万年历的基本概念,闰年的判断方法,星期计算。

第二课时:编写万年历程序,学习流程图设计,实现基本算法。

第三课时:历法的起源与发展,了解农历与公历的转换,学习二十四节气。

第四课时:实践应用,解决实际问题,如计算节日日期,了解历史上的今天。

教学内容依据课程目标,结合课本章节,保证科学性和系统性。

通过以上安排,使学生掌握万年历相关知识,提高编程技能,并培养对传统文化的认识。

三、教学方法本课程采用以下多样化的教学方法,旨在激发学生的学习兴趣,提高主动性和参与度:1. 讲授法:教师通过生动的语言和形象的比喻,讲解万年历的基本概念、历法的发展和算法原理,为学生奠定坚实的理论基础。

c语言万年历课程设计报告

本次课程设计的主题为“C语言万年历”,旨在通过设计和实现一个简单的万年历程序,深入了解C语言程序设计的基本方法和技巧。

通过本课程设计的学习,我对C语言程序设计的各个方面进行了深入的了解和掌握,同时也提高了自己的编程思维和实践能力。

一、设计思路。

本次课程设计的主要功能是实现万年历。

在设计程序之前,我首先对万年历的基本功能进行了分析和思考,包括输入年月日,输出当月的日历和星期几等。

同时,考虑到用户友好性,我还增加了一些额外的功能,如输入错误时的提示,具体日历同时附带节假日等。

在分析了功能需求之后,我便开始考虑程序设计的具体实现。

首先,我选择了C语言作为实现程序的语言,因为C语言广泛应用于各类软件工程和移动计算等领域,适用性强,易于学习和掌握。

接着,我根据分析需求,确定了程序的基本框架和主要模块,包括输入年月日模块、求解该日是星期几模块、绘制当月日历模块和判断节日等模块。

二、程序实现。

在程序实现过程中,我遵循了模块化编程的原则,把整个程序划分成几个独立的模块,并在模块之间进行数据交互和函数调用。

具体来说,我分别实现了以下几个模块:1.输入年月日模块:该模块负责接收用户输入的年月日信息,并检查输入格式是否正确。

在输入不合法时,该模块能够给用户相应的提示信息,并要求用户重新输入。

2.求解该日是星期几模块:该模块根据给定年月日,求出该日是星期几。

该模块采用基姆拉尔森计算公式来实现。

3.绘制当月日历模块:该模块负责绘制给定月份的日历,并标注当日及节假日等信息。

在绘制日历时,该模块能够考虑各种特殊情况,如闰年、月初不为星期一等。

4.判断节日等模块:该模块能够根据给定年月日信息,判断当日是否为节假日、纪念日等特殊日子,如春节、圣诞节等,并在日历上作出相应标注。

以上四个模块构成了整个程序的主要功能。

在实现过程中,我还遇到了一些问题,如求解闰年的问题、绘制多行日历的问题等。

针对这些问题,我通过查找资料、借鉴其他同学的代码等方式进行了解决。

c万年历课程设计

c万年历课程设计一、课程目标知识目标:1. 让学生理解并掌握万年历的基本概念,包括阳历、阴历以及它们之间的关系。

2. 学会运用所学的日期计算方法,计算出任意给定年份的星期几。

3. 了解我国历史上重要的节日及其在万年历中的体现。

技能目标:1. 培养学生运用万年历进行日期推算的能力,提高他们的逻辑思维和计算能力。

2. 通过制作简单的手工万年历,锻炼学生的动手操作能力和创新能力。

情感态度价值观目标:1. 培养学生对万年历文化的兴趣,激发他们学习历史和传统文化的热情。

2. 引导学生认识到万年历在日常生活中的实用性,增强他们的生活常识。

3. 培养学生尊重历史、尊重传统文化,形成正确的价值观。

课程性质分析:本课程为实用工具课程,旨在帮助学生掌握万年历的基本知识,提高他们在生活中的实用技能。

学生特点分析:考虑到学生所在年级,他们已经具备了一定的逻辑思维和计算能力,但对于复杂的概念和技巧还需要进一步的引导和锻炼。

教学要求:结合学生特点,课程设计要注重理论与实践相结合,强调学生的动手实践能力,同时注重培养他们的情感态度和价值观。

通过具体的学习成果分解,为后续的教学设计和评估提供明确的方向。

二、教学内容1. 万年历的基本概念:阳历、阴历、农历、公历的起源及关系。

- 教材章节:第一章第一节“时间的计算与历法”2. 日期计算方法:- 平年与闰年的判断方法。

- Zeller公式及其在日期计算中的应用。

- 教材章节:第一章第二节“日期的计算方法”3. 制作手工万年历:- 设计并制作个人简易万年历。

- 教材章节:第二章“动手制作万年历”4. 我国重要节日及其历法体现:- 春节、中秋节、端午节等节日的历法含义。

- 教材章节:第三章“历法与我国重要节日”5. 实践活动:- 利用所学日期计算方法,进行实际操作练习。

- 分析并讨论生活中万年历的应用实例。

教学内容安排与进度:第一课时:万年历基本概念的学习。

第二课时:日期计算方法的学习与练习。

c语言课程设计报告 万年历 最详细

C语言课程设计报告-----万年历设计人:贾伟涛学号:2013010912班级:13电信应电班指导老师:张伟日期:2014年6月9日内容提要通过大一下学期对C语言的学习,了解到了很多C语言的相关知识。

学习的过程虽然有很多困惑,但是当自己能够独立的看懂和独立的完成一个简单的程序时,心中就会收获无限的喜悦和成就感。

我虽然可以看懂一些简单的程序,编写一些简单的计算程序,更多的是学会了一种思想——编程,它让我在去思考很多日常生活中的事物是怎么样通过一个个小小的函数实现功能的,激发我对c语言的兴趣。

C语言是近年在国内外得到迅速推广应用的一种机器语言。

C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。

因此,C语言特别适合于编写各种软件。

在这次的课程设计中我将把日常生活中最经常接触的——日历的查询,利用C语言的程序编成一个简单的万年历查询系统。

通过这个小小的系统可以实现很多功能。

在程序中你能看到很多熟悉的C语言关键字,同时也加入了很多自己课外了解到的一些关键字。

在不断的调试中最终才获得最为完整的程序。

接下来就是我的C 语言课程设计的具体内容来了,大家拭目以待吧!目录一、系统功能和数据说明-----------------------二、问题分析---------------------------------三、程序总体设计及功能结构框图---------------四、程序流程图-------------------------------五、源程序代码-------------------------------六、使用说明---------------------------------七、个人心得---------------------------------八、参考文献---------------------------------一、系统功能和数据说明(一)功能简介在日常生活中能接触到很多不同类型的日历,在日历上我们通常希望它能简单明了的给我们最想要的日期信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档