保安人员排班系统

程序设计题 8:排班系统
wechat:help- assignment

1 问题描述
某单位有7名保安人员,要求每个人在一星期中可以休息一天。每名保安可以自行选择自己想要的休息日,而对于休息日的选择既可以是某一天,也可以是某几天中的其中一天。当7名保安依次输入自己想要的休息日后,系统将会给出可能的值班安排,若系统给出的值班安排是0种,证明系统对7名保安的选
程序设计匦目择无法作出排班,需要重新输入。
要求打印轮休的所有可能方案。当然使每个人都满意,例如每人可以选择的休息日如下:
钱:星期一、星期六孙:星期三、星期日
李:星期五
周:星期一、星期四、星期六
吴:星期二、星期五
陈:星期三、星期六、星期日
运行结果:

在这里插入图片描述

2 功能要求
代码要能提供以下几个基本功能。
(1)用户登录:
·新用户可以注册,旧用户直接登录。
(2)排班表:
,实现选择并存储排班表到排班表文件中。
·维护排班表文件基本信息,实现增加、修改、查询、删除排班表记录的功能,·由于排班表的特殊性,注意增加、修改、删除时备注操作时间和操作人员信息。
·在系统无法排班时,判断周几没有值班人员,
选做要求:
(2) 增设特殊情况原因显示,例如:看病>办证>旅游
(3)当有某个保安请假一周,即剩下的6名保安有一个人一周要值两天时如何排班。
(4)可增设当天值班保安的工号、电话、地址等信息的显示
(5)升级为总排班人数在 7-20,每天排班人数在 2-6人,排班天数从 7-30(根据系统取每月总天数),
则应用范国更广,可应用于假期领导值班系统。(6)增加打卡功能,则可以升级为考勤系统,
3 其他要求
(1)界面美观简洁,操作方便:
程序设计题目
(2)编码规范,程序的层次清晰,主要的程序元素有注释,可读性强,程序运行稳定
(3)变量、函数命名符合规范

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些思路和建议。 保安排班系统需要实现的功能主要包括: 1. 记录保安员的基本信息,包括姓名、性别、年龄、联系方式等; 2. 记录每个保安员的排班情况,包括日期、班次等; 3. 支持查询某个时间段内某个保安员的排班情况; 4. 支持查询某个时间段内某个班次的保安员排班情况; 5. 支持添加、修改、删除保安员的信息和排班情况。 下面是一个简单的实现思路: 1. 定义保安员结构体 ``` typedef struct { char name[50]; // 姓名 char gender[10]; // 性别 int age; // 年龄 char phone[20]; // 联系方式 } SecurityGuard; ``` 2. 定义排班结构体 ``` typedef struct { char date[20]; // 日期,格式为YYYY-MM-DD char shift[20]; // 班次,如“早班”、“中班”、“晚班”等 int guard_id; // 保安员编号 } Schedule; ``` 3. 定义保安员和排班的数组 ``` #define MAX_GUARDS 50 #define MAX_SCHEDULES 1000 SecurityGuard guards[MAX_GUARDS]; int num_guards = 0; Schedule schedules[MAX_SCHEDULES]; int num_schedules = 0; ``` 4. 实现添加、修改、删除保安员信息的函数 ``` void add_guard() { SecurityGuard guard; printf("请输入保安员姓名:"); scanf("%s", guard.name); printf("请输入保安员性别:"); scanf("%s", guard.gender); printf("请输入保安员年龄:"); scanf("%d", &guard.age); printf("请输入保安员联系方式:"); scanf("%s", guard.phone); guards[num_guards++] = guard; printf("添加成功!\n"); } void modify_guard() { int id; printf("请输入要修改的保安员编号:"); scanf("%d", &id); if (id < 1 || id > num_guards) { printf("保安员编号无效!\n"); return; } SecurityGuard guard = guards[id - 1]; printf("请输入保安员姓名:"); scanf("%s", guard.name); printf("请输入保安员性别:"); scanf("%s", guard.gender); printf("请输入保安员年龄:"); scanf("%d", &guard.age); printf("请输入保安员联系方式:"); scanf("%s", guard.phone); guards[id - 1] = guard; printf("修改成功!\n"); } void delete_guard() { int id; printf("请输入要删除的保安员编号:"); scanf("%d", &id); if (id < 1 || id > num_guards) { printf("保安员编号无效!\n"); return; } for (int i = id - 1; i < num_guards - 1; i++) { guards[i] = guards[i + 1]; } num_guards--; printf("删除成功!\n"); } ``` 5. 实现添加、修改、删除保安员排班的函数 ``` void add_schedule() { Schedule schedule; printf("请输入日期(格式为YYYY-MM-DD):"); scanf("%s", schedule.date); printf("请输入班次:"); scanf("%s", schedule.shift); printf("请输入保安员编号:"); scanf("%d", &schedule.guard_id); if (schedule.guard_id < 1 || schedule.guard_id > num_guards) { printf("保安员编号无效!\n"); return; } schedules[num_schedules++] = schedule; printf("添加成功!\n"); } void modify_schedule() { int id; printf("请输入要修改的排班编号:"); scanf("%d", &id); if (id < 1 || id > num_schedules) { printf("排班编号无效!\n"); return; } Schedule schedule = schedules[id - 1]; printf("请输入日期(格式为YYYY-MM-DD):"); scanf("%s", schedule.date); printf("请输入班次:"); scanf("%s", schedule.shift); printf("请输入保安员编号:"); scanf("%d", &schedule.guard_id); if (schedule.guard_id < 1 || schedule.guard_id > num_guards) { printf("保安员编号无效!\n"); return; } schedules[id - 1] = schedule; printf("修改成功!\n"); } void delete_schedule() { int id; printf("请输入要删除的排班编号:"); scanf("%d", &id); if (id < 1 || id > num_schedules) { printf("排班编号无效!\n"); return; } for (int i = id - 1; i < num_schedules - 1; i++) { schedules[i] = schedules[i + 1]; } num_schedules--; printf("删除成功!\n"); } ``` 6. 实现查询保安员排班情况的函数 ``` void query_guard_schedule() { int id; char start_date[20], end_date[20]; printf("请输入保安员编号:"); scanf("%d", &id); printf("请输入起始日期(格式为YYYY-MM-DD):"); scanf("%s", start_date); printf("请输入结束日期(格式为YYYY-MM-DD):"); scanf("%s", end_date); printf("保安员%s在%s至%s期间的排班情况如下:\n", guards[id - 1].name, start_date, end_date); printf("日期\t班次\n"); for (int i = 0; i < num_schedules; i++) { if (schedules[i].guard_id == id && strcmp(schedules[i].date, start_date) >= 0 && strcmp(schedules[i].date, end_date) <= 0) { printf("%s\t%s\n", schedules[i].date, schedules[i].shift); } } } ``` 7. 实现查询班次保安员排班情况的函数 ``` void query_shift_schedule() { char shift[20], start_date[20], end_date[20]; printf("请输入班次:"); scanf("%s", shift); printf("请输入起始日期(格式为YYYY-MM-DD):"); scanf("%s", start_date); printf("请输入结束日期(格式为YYYY-MM-DD):"); scanf("%s", end_date); printf("%s班在%s至%s期间的排班情况如下:\n", shift, start_date, end_date); printf("日期\t姓名\n"); for (int i = 0; i < num_schedules; i++) { if (strcmp(schedules[i].shift, shift) == 0 && strcmp(schedules[i].date, start_date) >= 0 && strcmp(schedules[i].date, end_date) <= 0) { printf("%s\t%s\n", schedules[i].date, guards[schedules[i].guard_id - 1].name); } } } ``` 以上是一个简单的保安排班系统的实现思路和代码示例,具体实现还需要根据实际需求进行调整和优化。希望能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值