首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

日历实现需要考虑那些有关问题

2012-03-23 
日历实现需要考虑那些问题?如果自己来做个日历,我们应该考虑那些问题?这个会很难吗? 谢谢[解决办法]http:/

日历实现需要考虑那些问题?
如果自己来做个日历,我们应该考虑那些问题?这个会很难吗? 谢谢

[解决办法]
http://blog.csdn.net/jiangxinyu/archive/2007/05/16/1611551.aspx
[解决办法]
不难,很不难
[解决办法]
hoho
[解决办法]
看要做到什么程度吧
如果加上农历节气假日宜什么忌什么就比较麻烦了:)
[解决办法]
很久以前写的代码, 可以参考一下:

C/C++ code
 #include <iostream>using namespace std;/** * 2000年一月一日:周六 * 万年历,最主要的是计算某一年的某一月的一日是星期几. */// 每年的每月的天数,闰年的时候要特殊处理int daysOfMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool isBissextile(int year);int daysOfYear(int year);int daysTo2000(int year, int month, int day);int dayOfWeek(int year, int month, int day);bool isNumber(const char* str);int main() {        int year, month, date = 1;        bool flag = true;        do {                flag = true;                cout << "year: ";                char str[16];                cin >> str;                                if (strlen(str) > 15) {                        continue;                }                                flag = isNumber(str);                                if (flag) {                        year = atoi(str);                                        }        } while (!flag);        do {                flag = true;                cout << "Month: ";                char str[16];                cin >> str;                if (strlen(str) > 2) {                        continue;                }                flag = isNumber(str);                if (flag) {                        month = atoi(str);                        if (month < 1 || month > 12) {                                //cout << month << endl;                                flag = false;                                continue;                        }                        break;                }        } while(!flag);                cout << endl << "Calendar of year " << year << " month " << month << endl;                cout << "Sun\tMon\tDie\tMit\tDon\tFre\tSum" << endl;                int day = dayOfWeek(year, month,date);        for (int i = 0; i < day; i++) {                cout << "\t";        }                for (int i = 1; i <= daysOfMonth[month - 1]; i++) {                cout << i << "\t";                day++;                if (day % 7 == 0) {                        cout << endl;                }        }        return 0;}bool isNumber(const char* str) {        const char* p = str;        while (*p != '\0') {                if (!isdigit(*p)) {                        return false;                }                p++;        }                return true;}/** * 判断输入的年是否闰年. */bool isBissextile(int year) {        if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {                return true;        }                return false;}/** * 计算某一年某一月某一日到2000年一月一日有多少天 */ int daysTo2000(int year, int month, int day) {        int days = 0;        if (year >= 2000) {                for (int i = 2000; i < year; i++) {                        days += daysOfYear(i); // 求这两个年之间的整年的天数                }                                for (int i = 0; i < month - 1; i++) {                        days += daysOfMonth[i]; // 求整月的天数                }                                if (month > 2 && isBissextile(year)) { // 如果大于二月且这一年是闰年,则再加一天.                        days++;                }                                days += day; // 最后加上这一个月的号数.                days--; // 因为最后要减去一天.        } else {                for (int i = year; i < 2000; i++) {                        days += daysOfYear(i);                }                                days++; // 加上2000年1月1日这一天.                                int temp = 0;                for (int i = 0; i < month - 1; i++) {                        temp += daysOfMonth[i];                }                if (month > 2 && isBissextile(year)) {                        temp++;                }                                temp += day;                days -= temp;        }                return days;}/** * 计算某一年有多少天 */int daysOfYear(int year) {        int days = 0;        for (int i = 0; i < 12; i++) {                days += daysOfMonth[i];        }                if (isBissextile(year)) {                days++;        }                return days;}/** * 计算某一天是星期几 */int dayOfWeek(int year, int month, int day) {         int days = daysTo2000(year, month, day);                if (year >= 2000) {                int date[7] = {6, 0, 1, 2, 3, 4, 5};                return (date[days % 7]);        } else {                int date[7] = {6, 5, 4, 3, 2, 1, 0};                return (date[days % 7]);        }} 


[解决办法]
http://topic.csdn.net/u/20071217/20/dfc60987-7c6d-4e35-97cb-f1da1b7021bc.html

热点排行