[go: up one dir, main page]

0% found this document useful (0 votes)
18 views5 pages

CODE

The document defines structures and functions for managing tasks including a Task structure with title, description, time and status fields. It includes functions for printing tasks and a week view calendar with tasks blocked out by time and day.

Uploaded by

Anh Khoa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views5 pages

CODE

The document defines structures and functions for managing tasks including a Task structure with title, description, time and status fields. It includes functions for printing tasks and a week view calendar with tasks blocked out by time and day.

Uploaded by

Anh Khoa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

#include <stdio.

h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

#define MAX_LENGTH_COMMAND 300

#define MAX_NO_TASKS 100

#define MAX_LENGTH_TITLE 100


#define MAX_LENGTH_DESCRIPTION 200
#define MAX_LENGTH_TIME 33

#define WEEK_CELL_FIRST_COL_WIDTH 10
#define WEEK_CELL_OTHER_COL_WIDTH 20

enum Status { IN_PROGRESS, DONE, ARCHIVED };


const char* status_name[] = { "In Progress", "Done", "Archived" };
enum CommandType { ADD, EDIT, SHOW, DELETE, QUIT, INVALID };
const char* command_name[] = { "ADD", "EDIT", "SHOW", "DELETE", "QUIT", "INVALID" };

struct Task {
int num;
char title[MAX_LENGTH_TITLE + 1];
char description[MAX_LENGTH_DESCRIPTION + 1];
char time[MAX_LENGTH_TIME + 1];
enum Status status;
};

void printTask(struct Task* task) {


printf("--------------------------------------------\n");
printf("Num: #%d. Title: %s\n", task->num, task->title);
printf("Description: %s\n", task->description);
printf("Status: %s\n", status_name[task->status]);
printf("--------------------------------------------\n");
}

void printUnsupportedTime(struct Task* task) {


printf("----- Show week view -----\n");
printf("Error: Unsupported time with non-zero minutes: %s\n", task->time);
printf("In Task:\n");
printTask(task);
}

struct ngay {
char DDD[4];
int dd;
int mo;
int yyyy;
};
typedef struct ngay day;
int printWeekTime(struct Task* array_tasks, int no_tasks, char* date) {

day x;
sscanf(date, "%3s/%02d/%02d/%04d", x.DDD, &x.dd, &x.mo, &x.yyyy);

for (int i = 0; i < 145; i++) printf("-");


printf("\n");
if (strstr(x.DDD, "MON") != NULL) {
printf("| %d || MON || TUE || WED || THU || FRI || SAT || SUN
|\n", x.yyyy);
printf("| || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d
|| %02d/%02d || %02d/%02d |\n",
x.dd, x.mo, x.dd + 1, x.mo, x.dd + 2, x.mo, x.dd + 3, x.mo, x.dd + 4, x.mo, x.dd + 5, x.mo, x.dd + 6, x.mo);
}
else if (strstr(x.DDD, "TUE") != NULL) {
printf("| %d || MON || TUE || WED || THU || FRI || SAT || SUN
|\n", x.yyyy);
printf("| || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d
|| %02d/%02d || %02d/%02d |\n",
x.dd - 1, x.mo, x.dd, x.mo, x.dd + 1, x.mo, x.dd + 2, x.mo, x.dd + 3, x.mo, x.dd + 4, x.mo, x.dd + 5, x.mo);
}
else if (strstr(x.DDD, "WED") != NULL) {
printf("| %d || MON || TUE || WED || THU || FRI || SAT || SUN
|\n", x.yyyy);
printf("| || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d
|| %02d/%02d || %02d/%02d |\n",
x.dd - 2, x.mo, x.dd - 1, x.mo, x.dd, x.mo, x.dd + 1, x.mo, x.dd + 2, x.mo, x.dd + 3, x.mo, x.dd + 4, x.mo);
}
else if (strstr(x.DDD, "THU") != NULL) {
printf("| %d || MON || TUE || WED || THU || FRI || SAT || SUN
|\n", x.yyyy);
printf("| || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d
|| %02d/%02d || %02d/%02d |\n",
x.dd - 3, x.mo, x.dd - 2, x.mo, x.dd - 1, x.mo, x.dd, x.mo, x.dd + 1, x.mo, x.dd + 2, x.mo, x.dd + 3, x.mo);
}
else if (strstr(x.DDD, "FRI") != NULL) {
printf("| %d || MON || TUE || WED || THU || FRI || SAT || SUN
|\n", x.yyyy);
printf("| || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d
|| %02d/%02d || %02d/%02d |\n",
x.dd - 4, x.mo, x.dd - 3, x.mo, x.dd - 2, x.mo, x.dd - 1, x.mo, x.dd, x.mo, x.dd + 1, x.mo, x.dd + 2, x.mo);
}
else if (strstr(x.DDD, "SAT") != NULL) {
printf("| %d || MON || TUE || WED || THU || FRI || SAT || SUN
|\n", x.yyyy);
printf("| || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d
|| %02d/%02d || %02d/%02d |\n",
x.dd - 5, x.mo, x.dd - 4, x.mo, x.dd - 3, x.mo, x.dd - 2, x.mo, x.dd - 1, x.mo, x.dd, x.mo, x.dd + 1, x.mo);
}
else if (strstr(x.DDD, "SUN") != NULL) {
printf("| %d || MON || TUE || WED || THU || FRI || SAT || SUN
|\n", x.yyyy);
printf("| || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d || %02d/%02d
|| %02d/%02d || %02d/%02d |\n",
x.dd - 6, x.mo, x.dd - 5, x.mo, x.dd - 4, x.mo, x.dd - 3, x.mo, x.dd - 2, x.mo, x.dd - 1, x.mo, x.dd, x.mo);
}

for (int i = 0; i < 145; i++) printf("-");


printf("\n");

for (int i = 0; i <= no_tasks; i++) {


if (strlen((array_tasks + i)->title) >= 20) {
(array_tasks + i)->title[14] = '.';
(array_tasks + i)->title[15] = '.';
(array_tasks + i)->title[16] = '.';
(array_tasks + i)->title[17] = '\0';
}
}

int time1, time2;


int dayx;
int g = 0;
int e = 0;
int mon, tue, wed, thu, fri, sat, sun;
if (strstr(x.DDD, "MON") != NULL) {
mon = x.dd + 0;
tue = x.dd + 1;
wed = x.dd + 2;
thu = x.dd + 3;
fri = x.dd + 4;
sat = x.dd + 5;
sun = x.dd + 6;
}
if (strstr(x.DDD, "TUE") != NULL) {
mon = x.dd - 1;
tue = x.dd + 0;
wed = x.dd + 1;
thu = x.dd + 2;
fri = x.dd + 3;
sat = x.dd + 4;
sun = x.dd + 5;
}
if (strstr(x.DDD, "WED") != NULL) {
mon = x.dd - 2;
tue = x.dd - 1;
wed = x.dd + 0;
thu = x.dd + 1;
fri = x.dd + 2;
sat = x.dd + 3;
sun = x.dd + 4;
}
if (strstr(x.DDD, "THU") != NULL) {
mon = x.dd - 3;
tue = x.dd - 2;
wed = x.dd - 1;
thu = x.dd + 0;
fri = x.dd + 1;
sat = x.dd + 2;
sun = x.dd + 3;
}
if (strstr(x.DDD, "FRI") != NULL) {
mon = x.dd - 4;
tue = x.dd - 3;
wed = x.dd - 2;
thu = x.dd - 1;
fri = x.dd + 0;
sat = x.dd + 1;
sun = x.dd + 2;
}
if (strstr(x.DDD, "SAT") != NULL) {
mon = x.dd - 5;
tue = x.dd - 4;
wed = x.dd - 3;
thu = x.dd - 2;
fri = x.dd - 1;
sat = x.dd + 0;
sun = x.dd + 1;
}
if (strstr(x.DDD, "SAT") != NULL) {
mon = x.dd - 6;
tue = x.dd - 5;
wed = x.dd - 4;
thu = x.dd - 3;
fri = x.dd - 2;
sat = x.dd - 1;
sun = x.dd + 0;
}

for (int i = 0; i < 24; ++i) {


printf("---
%02d:00----------------------------------------------------------------------------------------------------------------------------------------
-\n", g);

printf("| |");
while (e <= no_tasks) {
sscanf((array_tasks + e)->time, "%02d:00|%d/%*d/%*d-%02d:00|%*d/%*d/%*d", &time1, &dayx, &time2);

if (time1 == i) {
if (dayx = mon) {

printf("| #%d|%02d:00-%02d:00 |", (array_tasks + e)->num, time1, time2);

for (int i = 1; i <= 6; ++i) {


printf("| |");
}
printf("\n");

printf("| |");
printf("|%s|", (array_tasks + e)->title);

for (int i = 1; i <= 6; ++i) {


printf("| |");
}
printf("\n");

}
}

if (time1 != i) {

printf("| |");
for (int i = 1; i <= 7; ++i) {
printf("| |");
}
printf("\n");

printf("| |");
for (int i = 1; i <= 7; ++i) {
printf("| |");
}
printf("\n");

for (int i = 0; i < 145; i++) printf("-");


printf("\n");

break;
}

e++;
}
g++;
}
return 0;
}
int main() {
struct Task array_tasks[5] = {
{1, "Course Intro to Programming", "Room 701-H6 - orange", "00:00|16/10/2023-09:00|16/10/2023",
IN_PROGRESS},
{2, "Meeting Project Apple", "Room 701-H6 - apple", "01:00|16/16/2023-09:00|17/10/2023", IN_PROGRESS},
{3, "Meeting Project Banana", "Room 701-H6 - orange", "02:00|16/10/2023-08:00|19/10/2023", IN_PROGRESS},
{4, "Do an Tong hop - TTNT", "Room 701-H6 - orange", "03:00|16/10/2023-10:00|21/10/2023",
IN_PROGRESS},
{5, "Course Intro to Programming - apple", "Room 701-H6 - banana", "04:00|16/10/2023-12:00|01/10/2023",
DONE},
};
int no_tasks = 4;
char date[] = "MON/16/10/2023";
int code = printWeekTime(array_tasks, no_tasks, date);
printWeekTime(array_tasks, no_tasks, date);
if (code != -1) {
printf("Unsupported task at index: %d\n", code);
}
return 0;
}

You might also like