C语言课程设计--日期工具_第1页
C语言课程设计--日期工具_第2页
C语言课程设计--日期工具_第3页
C语言课程设计--日期工具_第4页
C语言课程设计--日期工具_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、;.南昌航空大学课程设计课程名称: C语言 设计课题: 日期工具 专业: 班级: 姓名: 虞乐文 学号: 评分: 指导老师(签字): 20 年 月 日 目录:1. 要求分析.2. 概要设计.3. 详细设计.4. 调试分析.5. 用户使用说明.6.测试结果.7.源程序.1. 要求分析:日期工具(难度系数:A)要求实现以下功能:创建日期日期差计算判断某个日期为星期几按格式输出日期(1) 系统变量(基本)Struct dateInt year,Int month,Int day,Int hour,Int minute,Int second(2) 待实现的方法(基本) 方法名称方法声明方法作用初始化C

2、reate()初始化系统相关变量输入日期Date inpur输入日期的年月日,返回该日期结构体计算日期差Int datediff(date date1,date date2,int unit)返回两个日期之间unit所表示的时间差,unit表示单位,0年,1月,2日,3时,4分,5秒比较日期大小Int compare(date date1,date date2)判断两个日期大小,如果date1较新则返回1,相等则返回0,date2较新则返回-1获取星期几Int get_weekday(date date)返回date当前星期几,0星期天,1星期一,2星期二,按格式输出日期Char*format

3、(date date,char*format)返回按format格式化输出的date日期。如格式format为“yyyy_mm_d”当前日期输出为20110829,格式规定如下:y_年,m_月,d_日,h_时,m_分,s_秒打印Void print()按默认格式打印当前时间记录操作日志Void info(char*filename)将每次用户的操作信息写到日志文件filename中屏幕显示(主菜单)主函数2.概要设计:a.数据类型:int,FILE。b.标准函数名称和自定义函数名称:scanf函数printf函数gettime函数int get_weekday(struct dat);int

4、datdiff(struct dat);int compare(struct dat,struct dat);int runnian(int x);开始程序3.详细设计:结束记录操作日志比较日期大小函数计算日期差函数获取星期几函数输出日期输入日期创建文件打印当前时间函数 主函数4.调试分析:a.遇到的问题:switch语句中漏了break,子函数中漏了右括号,自定义的结构体struct date与时间函数的date同名导致冲突创建文件时指针fp写错b.解决方案:对应地方加上break和括号把自定义的结构体名称改为struct dat统一并修改文件指针fpc.经验与体会:要熟练地掌握c语言开发环

5、境,明确函数与函数间的调用写代码时尽量认真避免出现小错误学习独立完成程序的编写过程,在修改和整理中了解c语言中常常出现的错误,并找到其改正方法只有多写代码才可以让自己真正学好c语言5.用户使用说明:a.编译完了之后,首先屏幕上会显示当前时间,并提示用户请输入一个日期包括年月日时分秒b.输入六个数据后它会以规定格式输出刚才所输入的日期,并显示刚才输入日期为星期几,同时提示用户输入两个日期,即十二个数据。c.屏幕上会显示这两个日期的差,同时提示用户再一次输入两个日期,即十二个数据。d.运行后屏幕上会显示两个日期的比较结果e.之后,文件进行保存,可以显示刚才的操作。6.测试结果:7.源程序:#inc

6、lude<stdio.h>#include<time.h>#include<dos.h>#include<math.h>struct dat int year; int month; int day; int hour; int minute; int second;int get_weekday(struct dat);int datdiff(struct dat);int compare(struct dat,struct dat);int runnian(int x);void main() int y; int p,q,o,m,n,l;

7、int z;struct dat a; struct dat dat1; struct dat dat2; struct dat dat3; struct dat dat4; struct time dt,dt2; FILE *fp; if(fp=fopen("yulewen.txt","a+")=NULL)printf("cannot open file sum! strike any key exit");getch();exit(1);gettime(&dt);printf("current time is %

8、d %d %dn",dt.ti_hour,dt.ti_min,dt.ti_sec);printf("please input six numbers!n"); scanf("%d%d%d%d%d%d",&a.year,&a.month,&a.day,&a.hour,&a.minute,&a.second); printf("the date you input isn");fprintf(fp,"the date you input isn");printf

9、("%dnian,%dyue,%dri,%ddian,%dfen,%dmiaon",a.year,a.month,a.day,a.hour,a.minute,a.second);fprintf(fp,"%d,%d,%d,%d,%d,%dn",a.year,a.month,a.day,a.hour,a.minute,a.second);y=get_weekday(a); printf("the date is xingqi %dn",y); printf("please input twelve numbers!to cacu

10、late their distance!n"); scanf("%d%d%d%d%d%d,%d%d%d%d%d%d",&dat1.year,&dat1.month,&dat1.day,&dat1.hour,&dat1.minute,&dat1.second,&dat2.year,&dat2.month,&dat2.day,&dat2.hour,&dat2.minute,&dat2.second); fprintf(fp,"please input twelve

11、 numbers!to caculate their distance!n"); fprintf(fp,"%d,%d,%d,%d,%d,%dn%d,%d,%d,%d,%d,%dn",dat1.year,dat1.month,dat1.day,dat1.hour,dat1.minute,dat1.second,dat2.year,dat2.month,dat2.day,dat2.hour,dat2.minute,dat2.second); p=datdiff(dat1); q=datdiff(dat2); o=fabs(p-q); m=fabs(dat1.hour-

12、dat2.hour); n=fabs(dat1.minute-dat2.minute); l=fabs(dat1.second-dat2.second); printf("the distance is %d tian,%dxiaoshi,%dfenzhong,%dmiaon",o,m,n,l); printf("please input twelve numbers again!in order to compare which is big!n"); scanf("%d%d%d%d%d%d,%d%d%d%d%d%d",&d

13、at3.year,&dat3.month,&dat3.day,&dat3.hour,&dat3.minute,&dat3.second,&dat4.year,&dat4.month,&dat4.day,&dat4.hour,&dat4.minute,&dat4.second); fprintf(fp,"please input twelve numbers again!in order to compare which is big!n"); fprintf(fp,"%d,%d

14、,%d,%d,%d,%dn%d,%d,%d,%d,%d,%dn",dat3.year,dat3.month,dat3.day,dat3.hour,dat3.minute,dat3.second,dat4.year,dat4.month,dat4.day,dat4.hour,dat4.minute,dat4.second); z=compare(dat3,dat4); if(z>0) printf("qian zhe da yu hou zhe!n"); else if(z<0) printf("qian zhe xiao yu hou zhe

15、!n"); else printf("liang zhe xiang tong!");fclose(fp);int get_weekday(struct dat a) int A,B,D,E,F,G,i; int C=0,s=0; if(a.year=2000) switch(a.month) case 1:s=s+a.day-1;break; case 2:s=s+30+a.day;break; case 3:s=s+30+29+a.day;break; case 4:s=s+30+29+31+a.day;break; case 5:s=s+30+29+31+3

16、0+a.day;break; case 6:s=s+30+29+31+30+31+a.day;break; case 7:s=s+30+29+31+30+31+30+a.day;break; case 8:s=s+30+29+31+30+31+30+31+a.day;break; case 9:s=s+30+29+31+30+31+30+31+31+a.day;break; case 10:s=s+30+29+31+30+31+30+31+31+30+a.day;break; case 11:s=s+30+29+31+30+31+30+31+31+30+31+a.day;break; case

17、 12:s=s+30+29+31+30+31+30+31+31+30+31+30+a.day;break; A=s%7; switch(A) case 0:B=6;break; case 1:B=7;break; case 2:B=1;break; case 3:B=2;break; case 4:B=3;break; case 5:B=4;break; case 6:B=5;break; return B; else for(i=2000;i<a.year;i+) if(runnian(i)=1) C=C+366; else C=C+365; D=C%7; switch(D) case

18、 0:E=6;break; case 1:E=7;break; case 2:E=1;break; case 3:E=2;break; case 4:E=3;break; case 5:E=4;break; case 6:E=5;break; if(runnian(a.year)=1) switch(a.month) case 1:F=a.day-1;break; case 2:F=30+a.day;break; case 3:F=30+29+a.day;break; case 4:F=30+29+31+a.day;break; case 5:F=30+29+31+30+a.day;break

19、; case 6:F=30+29+31+30+31+a.day;break; case 7:F=30+29+31+30+31+30+a.day;break; case 8:F=30+29+31+30+31+30+31+a.day;break; case 9:F=30+29+31+30+31+30+31+31+a.day;break; case 10:F=30+29+31+30+31+30+31+31+30+a.day;break; case 11:F=30+29+31+30+31+30+31+31+30+31+a.day;break; case 12:F=30+29+31+30+31+30+3

20、1+31+30+31+30+a.day;break; G=F%7; switch(G) case 0:return E; case 1:if(E+G=7) return 7; else return (E+G)%7); case 2:if(E+G=7) return 7; else return (E+G)%7); case 3:if(E+G=7) return 7; else return (E+G)%7); case 4:if(E+G=7) return 7; else return (E+G)%7); case 5:if(E+G=7) return 7; else return (E+G

21、)%7); case 6:if(E+G=7) return 7; else return (E+G)%7); else switch(a.month) case 1:F=a.day-1;break; case 2:F=30+a.day;break; case 3:F=30+28+a.day;break; case 4:F=30+28+31+a.day;break; case 5:F=30+28+31+30+a.day;break; case 6:F=30+28+31+30+31+a.day;break; case 7:F=30+28+31+30+31+30+a.day;break; case

22、8:F=30+28+31+30+31+30+31+a.day;break; case 9:F=30+28+31+30+31+30+31+31+a.day;break; case 10:F=30+28+31+30+31+30+31+31+30+a.day;break; case 11:F=30+28+31+30+31+30+31+31+30+31+a.day;break; case 12:F=30+28+31+30+31+30+31+31+30+31+30+a.day;break; G=F%7; switch(G) case 0:return E; case 1:if(E+G=7) return

23、 7; else return (E+G)%7); case 2:if(E+G=7) return 7; else return (E+G)%7); case 3:if(E+G=7) return 7; else return (E+G)%7); case 4:if(E+G=7) return 7; else return (E+G)%7); case 5:if(E+G=7) return 7; else return (E+G)%7); case 6:if(E+G=7) return 7; else return (E+G)%7); int datdiff(struct dat a) int

24、 i; int c=0; for(i=0;i<a.year;i+) if(runnian(i)=1) c=c+366; else c=c+365; if(runnian(a.year)=1) switch(a.month) case 1:c=c+a.day;break; case 2:c=c+31+a.day;break; case 3:c=c+31+29+a.day;break; case 4:c=c+31+29+31+a.day;break; case 5:c=c+31+29+31+30+a.day;break; case 6:c=c+31+29+31+30+31+a.day;bre

25、ak; case 7:c=c+31+29+31+30+31+30+a.day;break; case 8:c=c+31+29+31+30+31+30+31+a.day;break; case 9:c=c+31+29+31+30+31+30+31+31+a.day;break; case 10:c=c+31+29+31+30+31+30+31+31+30+a.day;break; case 11:c=c+31+29+31+30+31+30+31+31+30+31+a.day;break; case 12:c=c+31+29+31+30+31+30+31+31+30+31+30+a.day;bre

26、ak; return c; else switch(a.month) case 1:c=c+a.day;break; case 2:c=c+31+a.day;break; case 3:c=c+31+28+a.day;break; case 4:c=c+31+28+31+a.day;break; case 5:c=c+31+28+31+30+a.day;break; case 6:c=c+31+28+31+30+31+a.day;break; case 7:c=c+31+28+31+30+31+30+a.day;break; case 8:c=c+31+28+31+30+31+30+31+a.day;break; case 9:c=c+31+28+31+30+31+30+31

温馨提示

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

评论

0/150

提交评论