- 17
- 0
- 约5.78千字
- 约 9页
- 2019-01-22 发布于安徽
- 举报
.
页
c语言课程设计报告书
电子万年历及记事本
一 设计目的
本程序旨在呈现一个由公元元年开始的电子万年历。该系统在初始时能够根据系统当前时间显示当前年月情况,包括日期,星期,月份,年份。并可由用户通过直接输入年份和月份重复查找指定月份的详细情况。此外,用户可根据需要在日历的任意日期内写入文字作为待办事项或纪录并在需要时可以通过调用已保存的文件察看或对其进行修改。本程序的目的在于帮助使用者方便地查询当前日期并能够较好的管理和规划时间,提高工作效率。
二 程序组成图
(上层图)
万年历
日期显示函数 文挡编译函数
总日期计算函数 月份显示函数 文字输入函数 文本调用输出函数
三 函数流程图
1 日期显示函数
用户 输入年月 计算 输出 月份图
重新输入年月
2 文档编译函数
用户 选择日期 输入文本 调用文本输入函数 保存
调用\修改
四 详细设计
主要函数说明及调用
日期显示函数(主函数)为一个循环体,以便多次查找日期。在首次执行循环时调用系统时间函数输出当前日期为默认值并调用月份显示函数(月份对应名称)显示指定月份并输出月历。而后将用户指定日期传递给日期计算函数(判别闰年并从公元1年开始叠加)计算从元年至当前年份总天数。并对给定年份是否为润年进行判定,显示月历。
文档输入、读取函数于主函数中调用,由用户在主函数给出的日历内选取日期并调用输入函数并可以在其中写入文档并在关闭程序时储存在DATA文件中。此后,当用户需要显示文档时系统能够通过调用硬盘中的文档显示文本,并可由用户修改文档并再次储存于硬盘中。
五 调试与测试
调试过程主要是根据程序的设计目的带入数据以检验程序的功能完整性和程序稳定性。
经过测试,数据完全符合预期,程序运行基本稳定。但是在文件输入过程中有一定几率自动跳过第一步的操作,以至于无法写入日记。经过反复尝试我通过添加了让用户在输入日记前键入回车的方法解决了这个问题。并在测试后改善了文件显示时无法分行显示的问题,使得日记更加美观。
六 程序清单及注释
#include graphics.h
#include stdio.h
#includeconio.h
#includestdlib.h
#include time.h
int IsLeapYear(int);
int month_vis(int month,int year);
int clendar(void);
void filewright(FILE *fp);
void fileread(FILE *fp);
int i;
int day;
int year;
int temp;
int month;
int temp_i;
long int Year_days = 0;
int Year_Start = 1;
int Per_Year_Days;
int month_day[]={31,28,31,30,31,30,31,31,30,31,30,31,29}; /*每月日期数组*/
struct tm *aa;
FILE *fp;
struct logdata{
long logid;
char logdate[100];};
void main() /*主函数*/
{textbackground(7); /*设置程序背景*/
textcolor(0);
clrscr();
clendar();
getch();
}
int clendar(void) /*日历输出函数*/
{
char choice;
int daynum;
time_t t;
time(t); /*调用系统当前日期*/
aa=gmtime(t);
year=aa-tm_year+1900;
month=aa-tm_mon+1;
day=aa-tm_mday;
do /*循环输出日历*/
{
Year_days = 0;
Year_Start = 1;
month_vis(month,year);
printf(Mon Tue Wed T
原创力文档

文档评论(0)