桌面日历.doc_第1页
桌面日历.doc_第2页
桌面日历.doc_第3页
桌面日历.doc_第4页
桌面日历.doc_第5页
免费预览已结束,剩余13页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言课程设计题 目 桌面日历指导教师 曹东燕学生姓名 学 号 专 业 教学单位 物理系 (盖章) 16目 录1设计内容与设计要求 11.1系统功能简介 11.2系统运行环境 12功能划分,模块详细说明 13程序流程图 24运行的运行及说明 34.1系统的运行 34.2运行说明 75总结 7附件:源程序清单71设计内容与设计要求1.1系统功能简介n 系统有简单的菜单界面,用户可以通过输入简单的选项来完成相应的工作。n 用户可以选择某年或某年某月的日历进行统一查看,统一输出。n 用户可以根据自己的需求查询某年某月特定日子是星期几。n 可以输出用户指定年份或月份的日历,形成一个.txt文档,位于与程序相同目录下的文件夹中。1.2系统运行环境n Vc+6.0下运行,硬件基本无要求,现在的计算机系统基本都可以运行该系统。2功能划分,模块详细说明系统的功能是通过子函数调用的方式来完成的,下面对程序中用到的函数及其功能做一下说明。l int weeks(long year,int mouth,int day);计算公元某年某月某日是星期几函数。本函数通过switch语句的镶嵌使用,将计算分为闰年和平年。l int days(long year,int mouth); 此函数模块还是应用switch语句,根据闰年和平年将月份天数做运算,用default : mouth_days=30;来代替一年中天数为30的月份。l int isleap(long year);此函数模块的功能是实现闰年与平年的判断。l void print(long year);此函数为日历打印公共模块通过函数运算没隔一天输出一个制表符t,没七天输出一个换行符n,从而使实现日历分行输出。l void opreal();加载操作(功能选择),此函数为程序的主要部分,此部分主要通过if,else if,else语据与程序中用户给出的choose值加载相应的功能模块,整个条件共分为7个部分,即程序的6个功能和退出操作,其中功能模块包括输入年,显示该年万年历、查询某年某月的日历、查询某年某月某日为星期几、保存打印年份日历到磁盘、保存打印月份日历到磁盘、查看帮助文件5部分。前4部分主要是通过for循环语句实现;查看帮助文件部分是用了printf()语句给与输出,保存打印月份日历到磁盘是通过文件操作实现的,其中包括txt文件的创建、输入、保存、关闭。3程序流程图程序整体流程图如图3-1所示:结束显示菜单开始读取用户输入数字,执行相关功能查询某年某月的日历查询某年某月某日为星期几保存打印年份日历到磁盘保存打印月份日历到磁盘查看帮助文件输入年,显示该年万年历退出图3-1 程序整体流程图4系统的运行及说明4.1系统的运行系统初始运行时,会显示如图4-1所示的输入界面,用户可以根据提示,进行相应的选择,来完成系统提供的各种功能。图4-1输入界面根据提示提示用户选择相应的数字键,按ENTER键后进入相应的功能菜单。如下图4-2是输入年,显示该年万年历的程序功能截图,此功能通过日历公用打印模块与year函数实现,year函数通过for函数循环打印数字与换行字符从而输出日历。图4-2输入月份界面图4-3输入年月查询日历界面当选择功能2时,输入所查询的年月,系统将会给出相应的日历,如图4-3所示,此功能的实现是通过for语句,循环打印数字,给出相应的月份日历,与功能1的实现相比少一个关于mouth变量的循环。图 4-4 输入某年某月某日显示星期几界面当选择功能3时,输入某年某月某日为星期几,界面如图4-3所示,此模块调用了日历打印中的int weeks(long year,int mouth,int day)函数,运用switch与case的镶嵌使用以及S=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+C;Xing_qi=S%7两个函数实现对星期的计算。图 4-5 保存打印年份日历到磁盘界面图 4-6 保存打印月份日历到磁盘界面如图4-5 为保存打印年份日历到磁盘界面,及图 4-6 为保存打印月份日历到磁盘界面,两个功能中均用到字符拼接函数strcat();以及文件操作函数fopen()、fclose(),程序通过函数strcat()拼接文件名与扩展名.txt,通过函数fopen()以写的形式打开文件,通过函数fprintf()传入需要写入的内容即日历内容,在通过函数fclose()关闭并保存文件,实现打印保存日历到磁盘的功能。图 4-6日历帮助文件界面如图 4-6 是日历程序帮助文件界面,其中包含程序功能介绍和使用方法两部分。本功能的实现主要是通过printf()函数实现的。4.2运行说明首先打开软件,根据给出的信息输入相应的功能模块数字,输入完毕后按“ENTER”键进入,再根据提示执行相应的操作,程序使用完毕后输入数字7退出程序。5总结通过这次实习,让我们初步有了编写系统的能力,我们对很多的函数有了新的认识,也学会了运用多种函数,也明白了编写软件的基本过程,和基本方法。编写软件的过程中我们又学到了曾经自己不知道的函数或是自己不会的函数的用法。这次课程设计课总的来说让我受益匪浅。在软件的设计过程中遇到了很多的困难。在软件一次一次的调试失败下,曾经想过要放弃。我最后还是让自己坚持了下来,毫不畏惧困难,在同学的帮助与讲解下我总算是顺利的完成了软件的设计。在程序的编写过程中我们发现有很多的知识漏洞和缺陷,需要进一步努力学习来完善自己。在这几天的编写过程中我们对c语言有了更进一步的认识和了解。此次编程过程的经验和知识肯定能促进我以后的学习。此次课程设计不仅给了我们很多很好的经验,也让我们体会到了失败时的焦急和难受,也体会到了成功时的兴奋与喜悦。附件:源程序清单#include #include #include #includeint weeks(long year,int mouth,int day); /计算公元某年某月是星期几函数int days(long year,int mouth); /计算某年某月总共有多少天的函数int isleap(long year);/判断润年或者平年void print(long year);/显示年日历void opreal();/加载操作(功能选择)void main()opreal();getch(); int weeks(long year,int mouth,int day) /计算公元某年某月某日是星期几函数 long S;int Xing_qi,C;switch(isleap(year)case 0: /平年计算 switch(mouth) case 1: C=day;break; case 2: C=31+day;break; case 3: C=59+day;break; case 4: C=90+day;break; case 5: C=120+day;break; case 6: C=151+day;break; case 7: C=181+day;break; case 8: C=212+day;break; case 9: C=243+day;break; case 10: C=273+day;break; case 11: C=304+day;break; case 12: C=334+day;break; default : break; break;case 1: /闰年计算 switch(mouth) case 1: C=day;break; case 2: C=31+day;break; case 3: C=60+day;break;case 4: C=91+day;break; case 5: C=121+day;break; case 6: C=152+day;break; case 7: C=182+day;break; case 8: C=213+day;break; case 9: C=244+day;break; case 10: C=274+day;break; case 11: C=305+day;break; case 12: C=335+day;break; default :break; break; S=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+C;Xing_qi=S%7;return Xing_qi;int days(long year,int mouth) /计算某年某月总共有多少天的函数int mouth_days; /某月份天数switch(mouth) case 1: case 3: case 5: case 7: case 8: case 10: case 12: mouth_days=31;break; case 2:switch(isleap(year) case 1:mouth_days=29;break;case 0:mouth_days=28;break;default:break;break; default : mouth_days=30;break; return mouth_days;int isleap(long year) /平年返回0,闰年返回1if(year%4=0&year%100!=0)|(year%400=0) return 1;else return 0;void print(long year) /显示某年的日历int mouth,mouth_days,sday,i;for(mouth=1;mouth=12;mouth+) printf(%ld年%d月,year,mouth);if(isleap(year)printf(闰年)nn);else printf(平年)nn);sday=weeks(year,mouth,1);/计算某年某月的1号是星期几mouth_days=days(year,mouth);/计算某年某月的有多少天printf(周日t周一t周二t周三t周四t周五t周六nn);/打印日历for(i=1;i=sday;i+)printf(t);for(i=1;i=mouth_days;i+) /每七天打印换行printf(%dt,i);if(i+sday)%7=0)printf(n);printf(nnn);void opreal()static long year;int choose,flag=1;while(flag)printf(欢迎使用万年历nn);printf(请输入数字选择功能:nn);printf(1.输入年,显示该年万年历;n);printf(2.查询某年某月的日历;n);printf(3.查询某年某月某日为星期几;n);printf(4.保存打印年份日历到磁盘;n);printf(5.保存打印月份日历到磁盘;n);printf(6.查看帮助文件;n);printf(7.退出.n);scanf(%d,&choose);if(choose=1)printf(请输入年份:);scanf(%ld,&year);printf(这是%ld年的日历!nn,year);print(year);else if(choose=2)int mouth,mouth_days,sday,i;printf(请输入年 月(中间用空格隔开):n);scanf(%ld%d,&year,&mouth);printf(%ld年%d月,year,mouth); if(isleap(year) printf(闰年)nn); else printf(平年)nn); sday=weeks(year,mouth,1);/计算某年某月的1号是星期几 mouth_days=days(year,mouth);/计算某年某月的有多少天 printf(周日t周一t周二t周三t周四t周五t周六nn);/打印日历for(i=1;i=sday;i+)printf(t);for(i=1;i=mouth_days;i+)printf(%dt,i);if(i+sday)%7=0)printf(n);printf(nnn);else if(choose=3)int m,d;printf(请输入年 月 日(中间用空格隔开):);scanf(%ld%d%d,&year,&m,&d);printf(%ld年%d月%d日为星期%dnn,year,m,d,weeks(year,m,d);else if(choose=4)FILE *fp;char filename20;int mouth,mouth_days,sday,i;printf(请输入要打印保存的年份:);scanf(%ld,&year);printf(请输入保存的文件名:);scanf(%s,filename);strcat(filename,.txt);if(fp=fopen(filename,w)=NULL)printf(cannot open filen);fprintf(fp,tt %ld年的日历nn,year);for(mouth=1;mouth=12;mouth+) fprintf(fp,%ld年%d月,year,mouth);if(isleap(year)fprintf(fp,(闰年)nn);else fprintf(fp,(平年)nn);sday=weeks(year,mouth,1);/计算某年某月的1号是星期几mouth_days=days(year,mouth);/计算某年某月的有多少天fprintf(fp,周日t周一t周二t周三t周四t周五t周六nn);/打印日历for(i=1;i=sday;i+)fprintf(fp,t);for(i=1;i=mouth_days;i+)fprintf(fp,%dt,i);if(i+sday)%7=0)fprintf(fp,n);fprintf(fp,nnn);fclose(fp);printf(保存文件成功!n);else if(choose=5)FILE *fp;char filename20;int mouth,mouth_days,sday,i;printf(请输入要打印保存的年 月:);scanf(%ld%d,&year,&mouth);printf(请输入保存的文件名:);scanf(%s,filename);strcat(filename,.txt);if(fp=fopen(filename,w)=NULL)printf(cannot open filen);fprintf(fp,tt%ld年%d的日历nn,year,mouth); fprintf(fp,%ld年%d月,year,mouth);if(isleap(year)fprintf(fp,(闰年)nn);else fprintf(fp,(平年)nn);sday=weeks(year,mouth,1);/计算某年某月的1号是星期几mouth_days=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论