程式實踐 電子備忘錄

2021-07-03 05:02:49 字數 4793 閱讀 3260

電子備忘錄

1 系統的基本功能

利用電子備忘錄記錄未來某時間內的待辦事宜。允許查詢、新增。

2 要求

(1)備忘資訊的儲存方式自己設定,盡量保證操作靈活。一條備忘資訊最多允許100個漢字。備忘資訊的時間設定可以精確到具體的某個日期、或者某個日期中的某個時間段、或者某個日期中的某個具體時間。可以對事件的重複出現進行設定,如每月10號取工資,6月16號到28號每天上午9:10考試等。

(2)如果在新增時,該時段內已有安排則出現提示資訊。

(3)查詢時,如果當前日期有備忘資訊,自動提醒。

(4)根據鍵盤輸入的起始日期和終止日期,統計該時間段內的所有備忘資訊並輸出結果(包括時間和備忘資訊);統計時按照時間的先後順序進行排序。

好慘啊,寫的太醜

#include #include #include #include #include #include #include #include using namespace std;

int const maxlen = 10000;

struct e_memorandum

em[maxlen];

int item_num;

string get_to_year(string date)

return ans;

}string get_to_month(string date)

return ans;

}string get_to_day(string date)

return ans;

}string get_to_hour(string date)

return ans;

}string get_to_minute(string date)

return ans;

}bool is_leap(string y)

int convert(string date)

bool judge_input(string in)

string tmp = get_to_month(in), month = "", day = "", hour = "", minute = "";

for(int i = 5; i < (int) tmp.length(); i++)

month += tmp[i];

int m = convert(month);

if(m != 0 && (m> 12 || m < 1))

tmp = get_to_day(in);

for(int i = 8; i < (int) tmp.length(); i++)

day += tmp[i];

int d = convert(day);

if(d != 0)

else if(!is_leap(year) && d > 28)

}else if((m == 1 || m == 3 || m == 5 || m == 7

|| m == 8 || m == 10 || m == 12) && d > 31)

else if((m == 4 || m == 6 || m == 9 || m == 11) && d > 30)

if(d < 1)

}tmp = get_to_hour(in);

for(int i = 11; i < (int) tmp.length(); i++)

hour += tmp[i];

int h = convert(hour);

if(h != 0 && (h > 24 || h < 0))

tmp = get_to_minute(in);

for(int i = 16; i < (int) tmp.length(); i++)

minute += tmp[i];

int minu = convert(minute);

if(minu != 0 && (minu > 60 || minu < 1))

return true;

}void add()

cout << "input end time: ";

cin >> e_date;

while(!judge_input(e_date))

if(e_date <= b_date)

for(int i = 0; i < item_num; i++)

else if(em[i].begin_date <= e_date && em[i].end_date != "notsure" && em[i].end_date >= e_date)}}

cout << "input the item: ";

cin >> item;

cout << "whether repeat ?(y/n) ";

char tmp2[2] = "";

while(tmp2[0] != 'y' && tmp2[0] != 'n')

else if(tmp2[0] == 'n')

else

cout << "error input" << endl;

}if(em[item_num].repeat)

else

em[item_num].end_date = e_date;

em[item_num].item = item;

em[item_num++].repeat = true;}}

else if(em[item_num].begin_date.length() == 9)

em[item_num].begin_date += "/";

em[item_num].begin_date += tmpp;

em[item_num].begin_date += "/";

em[item_num].begin_date += curb;

if(em[item_num].end_date != "notsure")

em[item_num].begin_date += "/";

em[item_num].begin_date += tmpp;

em[item_num].begin_date += "/";

em[item_num].begin_date += cure;

}else

em[item_num].end_date = e_date;

em[item_num].item = item;

em[item_num++].repeat = true;}}

}}

else

ofstream file;

file.open("file.txt");

file << item_num << endl;

for(int i = 0; i < item_num; i++)

file << em[i].begin_date << " " << em[i].end_date << " " << em[i].item << " " << em[i].repeat << endl;

cout << "add sucessfully\n";

return;

}bool cmp(e_memorandum a, e_memorandum b)

return true;

}void output(int idx, bool flag)

void judge_no_end(int idx, string date, string now, bool &flag)

return;

}void judge_has_end(int idx, string b_date, string e_date, string now, bool &flag)

return;

}void query()

string now = get;

string year = get_to_year(now);

string month = get_to_month(now);

string day = get_to_day(now);

string hour = get_to_hour(now);

string minute = get_to_minute(now);

bool flag = true;

for(int i = 0; i < item_num; i++)

else

}if(!flag)

find = true;

sort(em, em + item_num, cmp);

string b_date, e_date;

cout << "input the date that you want to query: (formate: y/m/d/h/min)\n";

cout << "input start time: ";

cin >> b_date;

while(!judge_input(b_date))

cout << "input end time: ";

cin >> e_date;

while(!judge_input(e_date))

while(e_date <= b_date)

for(int i = 0; i < item_num; i++)

}else}}

if(!find)

cout << "there is no item in your query time\n";

}int main()

else if(type[0] == '1')

else if(type[0] == '2')

else

}}

Docker 實踐備忘錄

平時零散的接觸docker,時間久了概念和命令都會忘了,所以集中記下 docker 目標是實現輕量級的作業系統虛擬化解決方案。docker 的基礎是 linux 容器 lxc 等技術 docker基本概念 image 映象,可以理解為oop的乙個類,靜態。有 layer概念 container 容器...

C語言程式備忘錄

1 編寫乙個將輸入複製到輸出的程式,並將其中連續多個空格用乙個空格代替。解1 注 從沒想到,無中生有也可以用在這裡。光靠c語言本身力量真的很有限。解2 解3 include void main 注 這個有點意思。看似空格乙個也沒輸出,但最後還是輸出了。關鍵在 當 pre ch 非空格而 ch 為空格...

備忘錄模式

備忘錄模式 memento 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。originator 發起人 負責建立乙個備忘錄memento,用以記錄當前時刻它的內部狀態,並可以使用備忘錄恢復內部狀態。originator可根據需要...