C 语言实现:功能完备的日程安排程序全解析
以下是一个简单的 C 语言日程安排程序示例,实现了添加、删除、修改日程安排,显示当天或指定日期的日程,以及按周或月查看日程安排概览的功能。程序使用结构体来存储日程信息,通过数组来管理多个日程。 ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 定义日程结构体 typedef struct { int year; int month; int day; int hour; int minute; char event[100]; } Schedule; // 全局变量 Schedule schedules[100]; // 存储日程 int scheduleCount = 0; // 日程数量 // 函数声明 void addSchedule(); void deleteSchedule(); void modifySchedule(); void displayScheduleForDay(int year, int month, int day); void displayScheduleForWeek(int year, int month, int day); void displayScheduleForMonth(int year, int month); // 添加日程 void addSchedule() { Schedule newSchedule; printf("请输入日程的年: "); scanf("%d", &newSchedule.year); printf("请输入日程的月: "); scanf("%d", &newSchedule.month); printf("请输入日程的日: "); scanf("%d", &newSchedule.day); printf("请输入日程的小时: "); scanf("%d", &newSchedule.hour); printf("请输入日程的分钟: "); scanf("%d", &newSchedule.minute); printf("请输入日程的事件内容: "); scanf(" %[^\n]", newSchedule.event); schedules[scheduleCount++] = newSchedule; } // 删除日程 void deleteSchedule() { int year, month, day; printf("请输入要删除日程的年: "); scanf("%d", &year); printf("请输入要删除日程的月: "); scanf("%d", &month); printf("请输入要删除日程的日: "); scanf("%d", &day); int found = 0; for (int i = 0; i < scheduleCount; i++) { if (schedules[i].year == year && schedules[i].month == month && schedules[i].day == day) { for (int j = i; j < scheduleCount - 1; j++) { schedules[j] = schedules[j + 1]; } scheduleCount--; found = 1; break; } } if (!found) { printf("未找到指定日程\n"); } } // 修改日程 void modifySchedule() { int year, month, day; printf("请输入要修改日程的年: "); scanf("%d", &year); printf("请输入要修改日程的月: "); scanf("%d", &month); printf("请输入要修改日程的日: "); scanf("%d", &day); int found = 0; for (int i = 0; i < scheduleCount; i++) { if (schedules[i].year == year && schedules[i].month == month && schedules[i].day == day) { printf("请输入修改后的小时: "); scanf("%d", &schedules[i].hour); printf("请输入修改后的分钟: "); scanf("%d", &schedules[i].minute); printf("请输入修改后的事件内容: "); scanf(" %[^\n]", schedules[i].event); found = 1; break; } } if (!found) { printf("未找到指定日程\n"); } } // 显示指定日期的日程 void displayScheduleForDay(int year, int month, int day) { int found = 0; for (int i = 0; i < scheduleCount; i++) { if (schedules[i].year == year && schedules[i].month == month && schedules[i].day == day) { printf("%d-%d-%d %d:%d %s\n", schedules[i].year, schedules[i].month, schedules[i].day, schedules[i].hour, schedules[i].minute, schedules[i].event); found = 1; } } if (!found) { printf("当天没有日程安排\n"); } } // 按周显示日程 void displayScheduleForWeek(int year, int month, int day) { int startDay = day - (day - 1) % 7; // 计算本周开始的日期 for (int i = startDay; i < startDay + 7; i++) { displayScheduleForDay(year, month, i); } } // 按月显示日程 void displayScheduleForMonth(int year, int month) { for (int day = 1; day <= 31; day++) { int validDay = 0; switch (month) { case 2: if ((year % 4 == 0 && year % 100!= 0) || year % 400 == 0) { validDay = (day <= 29); } else { validDay = (day <= 28); } break; case 4: case 6: case 9: case 11: validDay = (day <= 30); break; default: validDay = 1; } if (validDay) { displayScheduleForDay(year, month, day); } } } int main() { int choice; while (1) { printf("1. 添加日程\n"); printf("2. 删除日程\n"); printf("3. 修改日程\n"); printf("4. 显示当天日程\n"); printf("5. 显示指定日期日程\n"); printf("6. 按周显示日程\n"); printf("7. 按月显示日程\n"); printf("8. 退出\n"); printf("请选择: "); scanf("%d", &choice); switch (choice) { case 1: addSchedule(); break; case 2: deleteSchedule(); break; case 3: modifySchedule(); break; case 4: displayScheduleForDay(2023, 10, 24); // 假设当前日期为 2023 年 10 月 24 日 break; case 5: { int year, month, day; printf("请输入要查看的年: "); scanf("%d", &year); printf("请输入要查看的月: "); scanf("%d", &month); printf("请输入要查看的日: "); scanf("%d", &day); displayScheduleForDay(year, month, day); break; } case 6: { int year, month, day; printf("请输入要查看的年: "); scanf("%d", &year); printf("请输入要查看的月: "); scanf("%d", &month); printf("请输入要查看的日: "); scanf("%d", &day); displayScheduleForWeek(year, month, day); break; } case 7: { int year, month; printf("请输入要查看的年: "); scanf("%d", &year); printf("请输入要查看的月: "); scanf("%d", &month); displayScheduleForMonth(year, month); break; } case 8: exit(0); default: printf("无效的选择,请重新输入\n"); } } return 0; } ``` 这只是一个简单的示例,在实际应用中可能需要更完善的错误处理、输入验证和数据存储方式。 ######[AI写代码神器 | 1918点数解答 | 2024-11-09 15:50:44]
- Python 实现简易密码设置系统:多种功能交互与安全要点揭秘(字节豆包 | 286点数解答 | 2025-03-28 10:43:21)389
- C语言实现多功能密码设置系统:含代码及安全注意要点(字节豆包 | 414点数解答 | 2025-03-28 10:43:55)374
- C 语言实现:超简单密码设置系统,含代码与注意要点!(字节豆包 | 519点数解答 | 2025-03-28 12:42:02)414
- C语言实现密码管理系统:含功能代码与安全注意事项(字节豆包 | 409点数解答 | 2025-04-05 18:09:56)358
- C语言实现多功能密码系统:初始化、确认、设置、显示、重置与退出(字节豆包 | 454点数解答 | 2025-04-05 18:48:42)361
- C语言实现密码管理系统:含初始化、确认、设置、显示、重置及退出功能(字节豆包 | 413点数解答 | 2025-04-06 15:37:16)306
- C 语言实现密码管理系统:含初始化、确认、设置、显示、重置及退出功能(字节豆包 | 403点数解答 | 2025-04-06 15:37:54)318
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)383
- Golang开发:解析JSON数据时数值默认类型及示例解析(百度文心 | 393点数解答 | 2023-11-09 18:13:06)312
- SQL Working Areas Sizing: Manual vs. Automatic Policy - A Comprehensive Analysis(阿里通义 | 530点数解答 | 2024-05-13 10:55:58)331
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)352
- 工程师必看!功能用例合格详细程度的确定指南(百度文心 | 302点数解答 | 2023-11-09 18:22:08)254