完整代码包已经上传至我的down,修改请保留原作者注释
http://download.csdn.net/detail/xuptacm/9835030
炫迈日历计划研究报告

1.引言
日常生活中我们往往会忘记很多需要去安排的事情,比如拿快递,忘记候车时间,这往往让人特别懊恼。人们苦于忘记事情,但是却缺少帮助自己的软件,所以这时就需要一个好帮手来帮助你记住它,它忠诚可靠不犯错,是你最好的帮手。
1.1 项目的背景,研究的目的和意义

背景:经过日常生活调查我们发现,目前人们的操作系统下的日程管理缺少应用程序,而且实现的功能过于简单,没有一个好用的进程安排软件。大多数日历程序仅仅实现了显示时间目的。缺乏日程管理,待办事项,个性化闹钟等功能,所以我们觉得现在大多数日历功能还不够完善,做得还不够人性化。因此我们想尝试改进面向对象的日历程序,使其功能更人性化,提供的服务更齐全。

1.2 项目的目前研究现状

此项目现阶段还处于初级阶段,需要进一步优化,具体实施将等到所学知识的进一步健全以及对项目有进一步的认识,并且主打移动端,但是目前只开发部分桌面端功能
目前完成了
1.日历的基本显示 (完成)
2.日历的查询与随机更改年份月份 (完成)
3.星期显示 (完成)
4.背景音乐 (完成)
5.欢迎基础菜单 (完成)
6.史前今日 (完成)
7.节日与节假日查询 (未完成)
8.百度一下 (完成)
9.日常管理与待办事项 (未完成)
10.个性化皮肤设计 (完成)
11.个性化私人定制闹钟 (未完成)
12.个人生活管家 (APP未完成)
13.情景智能(智能识别短消息“火车票短息”“快递短息”或是日程安排,自动建立闹钟或是进程) (APP未完成)

2.系统的技术可行性
已经完成功能
日历的显示,日历的查询与随机更改年份月份,查询某一天的星期,包括古代,近代,现代,与未来某天的日历

 背景音乐与欢迎菜单,通过EasyX制作操作界面,在纯c语言中制作图形欢迎界面,并且在日历显示端加入背景音乐,可以播放音乐,能作为媒体音乐播放器使用

未完成功能
1.全鼠标操作界面,通过鼠标操作,在c环境下编写鼠标操作界面。 全透明皮肤,嵌入进桌面端,并且只有双击才可选择
2.史前今日功能,设想在用户随机选择某年某月某日,利用Windows环境下API编程调用百度插件将用户点击的日期通过百度进行搜索,让用户了解古时的今天有那些事情发生。
3.百度一下功能,如上。
4.日常管理与待办事项,用户点击日历中的某天,弹出设定闹钟时间与记事本,并且在日期下方显示出来待办事项。用户能够轻松的查看今天的待办事项与闹钟时间
5.个性化皮肤设计,桌面的背景显示皮肤可以用户自定义。
6.个性化定制闹钟,用户自己设定时间与事务,进行闹钟提醒,还可以个人定制闹钟铃声以及声音渐进,不会过于突兀。
7.个人生活管家,今天的运动量,今天的应该摄入的卡路里计算,以及身高体重,计算KPI身材匀称指数,相应的安排每个月的运动量以及卡路里指数(主要在APP中实现)
8.情景智能 智能识别短消息“火车票短息”“快递短息”进行日程安排,自动建立闹钟或是进程,例如收到火车票短信,“订单号E1824654629,刘 先生\女士, 您已购10月24日D234车(次)8车(厢)西安站19:20开,请刘锐钢 先生尽快换取纸质车票。”这时,读取到 姓名 + 日期 + 时间 + 站点 +车次 生成日程在日历中 并且建立提前两个小时的闹钟,方便用户。
同样的读取快递短息 “订单号E1824654629,顺丰快递 单号178 请您在13.30前到西区天桥领取您的快递” 识别短息 快递公司名 + 单号 + 时间。
并且生成进程卡,设定提前20分钟的闹钟。

2.1 系统的简要描述
功能:日历的基本功能,进程管理,情景智能,短息识别,智能闹钟
2.2 系统采用的技术、特点
这次我们打算用Java语言和Swift来开发这个程序,这主要是因为程序会更多的应用在移动端。每个人都有智能手机,但是个人的日程却没有一个很好的软件来进行管理,这是一片别人未发现的宝藏,有着很强很强的商业性,但是由于项目只是初级阶段,小组人员技术有限,我们只是学习了C语言,但是需要时间和人力进行开发,缺少的就是时间,但是项目的可行性是毋庸置疑的,项目复杂度也适中,最终会使用到哪些技术也要在实践的过程中去获得结论

2.3 技术可行性评价

桌面端EasyX以前我们曾在学C语言时触过一个小的项目,那时做的是一个图书管理系统,了解了c语言中EasyX代码的编写,但是对其中的一些思想有所了解。但那时由于没有数据库的知识,所以系统还不算复杂。我们又添加了许多其他的功能,所以会复杂一些。而且那时完全是为了练手,所以界面比较粗糙,而我们做的这套系统是面向用户的,所以界面必然会做得友好一些,这必然也会增加程序开发的难度。任何项目的开发都不会没有难度,我觉得只要认真思考,并借助各种资源,花时间我们能够最终开发出这套程序来

  1. 结论意见(能否承担该项目/条件具备承担该项目)
    虽然此项目存在一定的技术难度,但我们对项目要达到的目标十分清楚,对所要开发系统将要实现的功能也非常了解。而且有一些成品(例如华为公司智能终端产品,但是其功能较为单一用户友好度也并不高)作为参考,并且在项目的实施过程中我们能够获得帮助,我认为只要我们能够认真思考、仔细规划、明确分工,我们可以承担此项目的开发
#include "ymd.h"
#include"stdio.h"
#include <graphics.h>
#include <conio.h>
#include "windows.h"
#pragma comment (lib,"Winmm.lib")
// 主函数
int main()
{char add;tm *t;                                      // 在 time.h 中有定义为一个结构体time_t Clock;                               // 在 time.h 中有定义为一个结构体Time tm;                                    // 结构体 tminitgraph(1024, 512);IMAGE img;loadimage(NULL,"menu.jpg");putimage(0,0,&img); Sleep(1200);// 初始化Init();                                                         // 获取结构体 Clock 的参数time(&Clock);   // 获取时间t = localtime(&Clock);                                          tm.year = t->tm_year + 1900;                // 当前系统时间所处年份tm.month = t->tm_mon + 1;                   // 获取系统时间所在月份tm.yearFlag = tm.year;                      // 标记当前年份份tm.monthFlag = tm.month;                    // 标记当前月份// 绘制星期DrawWeek();                                 // 绘制当月的日历DrawDate(tm);                                                   // 主循环while(1)                                                        {// 从键盘获取按键add = getch();                                              // 计算现在的年月CalDate(tm, add);                                           // 判断年月是否更改, 改则进入 if 语句if (DateFlag(tm.year, tm.yearFlag, tm.month, tm.monthFlag))  {// 清除屏幕cleardevice();// 从新绘制星期DrawWeek();// 从新绘制当月日历DrawDate(tm);tm.yearFlag = tm.year;              // 更改新标记年份tm.monthFlag = tm.month;            // 更改新标记月份}mciSendString("open 天命.mp3 alias mymusic",NULL,0,NULL); mciSendString("play mymusic",NULL,0,NULL);}// 返回return 0;
}`
#include "ymd.h"int x1[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};                       // 闰年的每月天数
int x2[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};                       // 平年的每月天数char *Week[] = {"星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};   // 定义星期
char num[3];                                                                            // 定义 num 字符串
char xy[30];                                                                                // 定义 xy 字符串,// 初始化
void Init()
{// 初始化绘图窗口initgraph(640, 640);setbkcolor(BLUE);cleardevice();
}// 绘制星期
void DrawWeek()
{char str[7];int x1 = 0;for (int i = 0; i < 7; i++){sprintf(str, "%s", Week[i]);outtextxy(120 + x1, 100, str);x1 += 60;}
}// 计算现在的年月
void CalDate(Time& tm, char x)
{switch(x){case 'q':   tm.year++;              break;case 'w':   tm.year += 10;          break;case 'e':   tm.year += 100;         break;case 'r':   tm.year += 1000;        break;case 't':   if (tm.month < 12)      tm.month++;         break;case 'a':   if (tm.year > 0)        tm.year--;          break;case 's':   if (tm.year >= 10)      tm.year -= 10;      break;case 'd':   if (tm.year >= 100)     tm.year -= 100;     break;case 'f':   if (tm.year >= 1000)    tm.year -= 1000;    break;case 'g':   if (tm.month > 1)       tm.month--;         break;}
}// 判断年份和月份是否更改
bool DateFlag(int y1, int y2, int m1, int m2)
{return (y1 != y2 || m1 != m2);
}// 判断是闰年还是平年
bool CalYear(int year)
{ return ((year % 4 == 0 && year % 10 != 0) || year % 400 == 0);
} // 绘制当月日历
void DrawDate(Time &tm)
{int y = 0, z = 0;int s;sprintf(xy, "这是公元 %d 年 %d 月的日历", tm.year, tm.month);outtextxy(200, 30, xy);sprintf(xy, "增加年月,分别为Q(加1年).W(加10年).E(加100年).R(加1000年).T(加1月)", tm.year, tm.month);outtextxy(80, 50, xy);sprintf(xy, "减小年月,分别为A(减1年).S(减10年).D(减100年).F(减1000年).G(减1月)", tm.year, tm.month);outtextxy(80, 70, xy);s = (5 + (tm.year + 1) + (tm.year - 1 ) / 4 - (tm.year - 1) / 100 + (tm.year - 1) / 400) % 7;if (CalYear(tm.year))                       // 如果当月前年份是闰年{for (int i = 1; i < tm.month; i++){s = (x1[i] + s) % 7;}if (s / 6 != 1){y = (s + 1) * 60;}for (i = 1; i <= x1[tm.month]; i++){ sprintf(num, " %d ", i);outtextxy(140 + y, 150 + z, num);y += 60;if ((i + s) % 7 == 6 && (i + s) >= 6){z += 85;y = 0;}} }else                                     // 如果当前年份不是闰年{for (int i = 1; i < tm.month; i++){s = (x2[i] + s) % 7;}if (s / 6 != 1){y = (s + 1) * 60;}for (i = 1; i <= x2[tm.month]; i++){ sprintf(num, " %d ", i);outtextxy(140 + y, 150 + z, num);y += 60;if ((i + s) % 7 == 6){z += 85;y = 0;}           } }
}
/********************************************* 程序名称: 炫迈日历                       ** 编译环境: vc++6.0 + EasyX(beta)          *********************************************/#ifndef ymd_h
#define ymd_h#include <iostream>
#include <graphics.h>
#include <conio.h>
#include <string>
#include <time.h>
#include <windows.h>
#pragma comment (lib,"Winmm.lib")
using namespace std;struct Time                                     // 定义了一个结构体
{int year, month;                            // 年月int yearFlag, monthFlag;                    // 用来标记年月是否改变
};void Init();                                    // 绘制初始图形界面
void DrawWeek();                                // 绘制星期
bool CalYear(int year);                         // 判断是闰年还是平年
void DrawDate(Time &tm);                        // 绘制当月日历
void CalDate(Time& tm, char x);                 // 计算现在的年月
bool DateFlag(int y1, int y2, int m1, int m2);  // 判断年份和月份是否更改extern char *Week[];                            // 声明 Week 字符串数组
extern int x1[13];                              // 声明 x1 整数数组
extern int x2[13];                              // 声明 x2 整数数组
extern char num[3];                             // 声明 num 字符串
extern char xy1[5];                             // 声明 xy 字符串#endif

C语言小项目实践——日历程序相关推荐

  1. c语言为什么要建项目,一个C语言小项目为什么都说牛逼

    原标题:一个C语言小项目为什么都说牛逼 意在鼓励C语言学者.更有兴趣,学习更富有创业和乐趣! 推荐加学习交流群:658807522 可以在一起学习交流,既是参赛选手,又是学者,也可以先学习再参赛,反正 ...

  2. C语言小项目——走迷宫

    C语言小项目--走迷宫 设计方向: 1.定义二维字符数组作为迷宫 2.定义变量记录老鼠的位置 3.判定移动后位置的变化 4.记录游戏时长 5.判定到达终点的条件 总体设计: 1.用不同字符代表墙.老鼠 ...

  3. java小项目家庭记账程序

    文章目录 java小项目家庭记账程序 **1.项目目标:** 2.项目需求: 3.具体思路: 4.具体代码: 1.页面: 2.Option_1类: 3.Option_2类: 4.Option_3类: ...

  4. c语言小子集,C语言小子集的词法分析程序

    <C语言小子集的词法分析程序>由会员分享,可在线阅读,更多相关<C语言小子集的词法分析程序(10页珍藏版)>请在人人文库网上搜索. 1.沈阳航空航天大学上 机 实 验 报 告实 ...

  5. C语言小项目之“究极无敌螺旋丸极爆炸狂拽炫酷五彩棒的”通讯录之*派小猩*作品

    C语言小项目之"究极无敌螺旋丸极爆炸狂拽炫酷五彩棒的"通讯录之派小猩作品 项目概述 基于C语言开发一个多功能的通讯录 功能目录 1.增加 2.删除 3.查找 4.修改 5.显示 6 ...

  6. 不要在Unix下遍桌面程序(1)《精通Unix下C语言与项目实践》读书笔记(9)

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读  不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八 ...

  7. 学习Unix,可从事什么样的工作(1)《精通Unix下C语言与项目实践》读书笔记(3)...

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的 ...

  8. Unix编程要学习的内容(2)《精通Unix下C语言与项目实践》读书笔记(12)

    文章试读  不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的职场感悟吧.不值钱的软件人才 精力充沛与事业成功   让系分来得更猛 ...

  9. 学习Unix,可从事什么样的工作(2)《精通Unix下C语言与项目实践》读书笔记(4)...

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的 ...

最新文章

  1. inode与block详解
  2. 基于KEIL的stm32远程在线调试
  3. OpenCV中图像水平拼接函数hconcat的使用
  4. 彻底搞清楚MySQL分库、分表、分区的区别
  5. tmeminifile and tinifile
  6. .net hbase client--终于浮出水面的轮子
  7. [转载] Python中的xrange和range的区别
  8. c语言编俄罗斯方块有注释,C语言学习1年-俄罗斯方块(无注释)
  9. 感恩节专宠有礼,送3本技术好书
  10. windows操作系统下载tomcat,并与eclipse进行整合
  11. python怎么安装xlutils_Python3安装xlutils
  12. js:数据结构笔记10--图和图算法
  13. C语言必知专业术语,C语言入门必备单词给你整理好了
  14. 苹果cmsv10资源采集插件+一键添加到本地
  15. 老男孩五篇重要文章:http://oldboy.blog.51cto.com/2561410/1184139
  16. 使用终端模拟器通过wifi连接eclipse
  17. 【转】Verilog算术右移
  18. 使用小米手机进行真机测试
  19. 关于Excel自动换行,不会在西文单词中间换行的问题
  20. 那句子太美,我不敢看

热门文章

  1. python多线程返回值问题重写Thread类的run方法
  2. MFC——EDIT空间显示内容大小限制在32K,如何解除?
  3. win7连接sftp_WinSCP官方版下载_WinSCP(SFTP客户端) v5.17.1中文版 - Win7旗舰版
  4. FastQC使用与结果详细解读
  5. 采集同花顺android数据,同花顺对比app排行榜数据_SZ300033_乌龟量化
  6. 软件设计分为前端后端吗
  7. 暴力搜索---新技能get
  8. 如何计算IP地址的范围
  9. PCB之分布电感分布电容
  10. html onload 写法,HTML onload用法及代码示例