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

上传人:b****5 文档编号:14588475 上传时间:2023-06-24 格式:DOCX 页数:16 大小:18.29KB
下载 相关 举报
c语言课程设计报告万年历.docx_第1页
第1页 / 共16页
c语言课程设计报告万年历.docx_第2页
第2页 / 共16页
c语言课程设计报告万年历.docx_第3页
第3页 / 共16页
c语言课程设计报告万年历.docx_第4页
第4页 / 共16页
c语言课程设计报告万年历.docx_第5页
第5页 / 共16页
c语言课程设计报告万年历.docx_第6页
第6页 / 共16页
c语言课程设计报告万年历.docx_第7页
第7页 / 共16页
c语言课程设计报告万年历.docx_第8页
第8页 / 共16页
c语言课程设计报告万年历.docx_第9页
第9页 / 共16页
c语言课程设计报告万年历.docx_第10页
第10页 / 共16页
c语言课程设计报告万年历.docx_第11页
第11页 / 共16页
c语言课程设计报告万年历.docx_第12页
第12页 / 共16页
c语言课程设计报告万年历.docx_第13页
第13页 / 共16页
c语言课程设计报告万年历.docx_第14页
第14页 / 共16页
c语言课程设计报告万年历.docx_第15页
第15页 / 共16页
c语言课程设计报告万年历.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《c语言课程设计报告万年历.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告万年历.docx(16页珍藏版)》请在冰点文库上搜索。

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

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

C

 

C语言课程设计报告

实验课程:

c语言课程设计年级:

软件2班实验成绩:

课程设计名称万年历姓名:

**

任课教师:

杨**学号:

****实验日期:

2014.6.11

一、目的

利用所学的知识解决生活中的实际问题。

本课题涉及的知识内容:

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

二、内容与设计思想

1.设计内容

①显示系统当前时间

②查询用户输入的时间

③在用户输入的时间上,进行下一步的查询

④对用户所需日期添加备忘,可供查看和添加

2.主要代码结构

main()函数调用了菜单函数,通过菜单函数来调用各个不同功能的函数。

3.主要代码段分析。

先显示系统时间,再通过列一个菜单来调用各个功能的函数;

Themonth函数实现了对用户输入日期当月的处理,例如:

日期的显示,日期与周几的对应等等。

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

三、使用环境

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

平台:

Windows2000

相关软件:

VC++

四、调试过程

1.测试结果分析

经检验,运行结果正确

五、总结

1.设计中遇到的问题及解决过程

调试过程中往往一个月的第一天与相对应的星期几对上比较棘手,通过查阅资料,找到了相应的函数;解决了问题

备忘方面设计有关文件的读取方面的知识,在此之前,对文件的读取,修改比较,生疏模糊。

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

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

2.设计体会和收获。

学会了如何通过现有资源解决问题;对c语言的有了更深的了解

六、附录

1.源代码

#include"stdio.h"

#include"time.h"

#include"malloc.h"

#include"stdlib.h"

#include"string.h"

typedefstructtext

{

intnum;

chardate[100];

}Text[30],*pText;

//函数声明

voidin_menu(void);

voidmenu(void);

voidthemonth(int,int);

voidnextstep(int,int);

voidWritetext(pText);

voidReadtext(void);

voidaddtext(pText);

voidexit_calendar(void);

intthelast(FILE*);

//总菜单

voidallmenu(void)

{

in_menu();//输出菜单

menu();//选择菜单

}

//输出菜单

voidin_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("请选择菜单号码:

");

}

//菜单选择

voidmenu(void)

{

structtextt;

inti;

scanf("%d",&i);

switch(i)

{

case1:

{

//当前查询的月份

intyear;

intmonth;

printf("请输入要查询的年份及月份:

\n");

scanf("%d%d",&year,&month);

themonth(year,month);

printf("按回车键返回主菜单!

\n");

getchar();

getchar();

system("cls");

allmenu();

break;

}

case2:

{

Writetext(&t);//写备忘

printf("按回车键返回主菜单!

\n");

getchar();

getchar();

system("cls");

allmenu();

break;

}

case3:

{

Readtext();//查看备忘内容

printf("按回车键返回主菜单!

\n");

getchar();

getchar();

system("cls");

allmenu();

break;

}

case4:

{

addtext(&t);//修改备忘

printf("按回车键返回主菜单!

\n");

getchar();

getchar();

system("cls");

allmenu();

break;

}

case5:

{

exit_calendar();

}

default:

break;

}

}

voidnextmenu(intyear,intmonth)

{

intj;

printf("===================1、结束本次查询,回菜=====================\n");

printf("===================2、继续查询============================\n");

scanf("%d",&j);

if(j==1)

{

allmenu();

}

else

{

nextstep(year,month);

}

}

/************************

查询的当月

*/

voidthemonth(intyear,intmonth)

{

//定义变量

structtmt,*date;//tm结构指针

time_tt_day;//声明time_t类型的变量t_day

inti,j;

intday;

if(month==2)//月份天数的判断

{

if(year%4==0&&year%100==0||year%400==0)

day=28;

else

day=29;

}

elseif(month==4||month==6||month==9||month==11)//小月

{

day=30;

}

else

day=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;//夏令时标识符,实行夏令的时候为正否则为0

t_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);

}

else

printf("%d\t",i);

}

printf("\n\n");

nextmenu(year,month);

}

boolsfnext(int*k)//判断是否继续

{

if((*k)==1)

returntrue;

else

returnfalse;

}

//是否进行后续操作

voidnextstep(intyear,intmonth)

{

intm,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);

}

elseif(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));

}

//读文件

voidWritetext(pTextt)

{

intlen;

charn;

//读取文件

FILE*fp;

if((fp=fopen("C:

\\text.txt","a+"))==NULL)//a+:

以读写方式打开一个文件,允许读

{

printf("Cannotopenthefile,pressanykeytoexit");

getchar();

exit(0);//退出程序

}

printf("是否确定对某年某月某日进行备忘:

y或n\n");

getchar();

scanf("%c",&n);

if(n=='y'||n=='Y')

{

printf("请输入要添加备忘的数量:

\n");

scanf("%d",&len);

printf("按格式输入(如:

12014617c语言作业)\n");//输入需要备忘的年月日

for(inti=0;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);

}

}

//判断文件是否读完

intthelast(FILE*fp)

{

if(fgetc(fp)==EOF)

return1;

else

{

fseek(fp,-1L,SEEK_CUR);

return0;

}

}

//查看备忘内容

voidReadtext(void)

{

staticcharc[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");

}

}

voidaddtext(pTextt)

{

FILE*fp;

intn,m;

if((fp=fopen("C:

\\text.txt","a+"))==NULL)//a+:

以读写方式打开一个文件,允许读

{

printf("Cannotopenthefile,pressanykeytoexit");

getchar();

exit(0);//退出程序

}

printf("请输入要继续添加备忘的数量:

\n");

scanf("%d",&n);

printf("已备忘数量:

");

scanf("%d",&m);

printf("按格式输入(如:

12014617c语言作业)\n");//输入需要备忘的年月日

for(inti=0;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);

}

voidexit_calendar(void)//退出系统

{

exit

(1);

}

//主函数

voidmain()

{

time_tnow;//声明time_t类型变量

time(&now);//获取时间

printf("\n\t\t现在是:

%s\n",ctime(&now));//系统时间

allmenu();

//nextstep(year,month,&t);//对当前月份的后续操作

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2