C语言作业排班系统,排班系统C语言课程设计.doc

C程序

课程设计报告

201— 201 学年第 学期

课程名称 C语言课程设计

设计题目 《排班系统》

学生姓名

学 号

专业班级

指导教师

201 年 月 日

目录

一、设计任务书…………………………………………………………3

1、题目与要求…………………………………………………3

2、本程序涉及的知识点………………………………………3

二、程序流程图…………………………………………………………4

三、程序代码设计………………………………………………………5

四、程序调试过程………………………………………………………6

五、程序运行过程………………………………………………………6

六、程序有待改进的地方………………………………………………9

七、程序设计总结………………………………………………………9

八、致谢…………………………………………………………………9

参考文献…………………………………………………………………9

附录…………………………………………………………………… 10

一、设计任务书

1、题目与要求

赵:星期二、星期四本程序实现的功能是对7名保安人员进行排班,要求每个人在一星期中可以休息一天。每名保安可以自行选择自己想要的休息日,而对于休息日的选择既可以是某一天,也可以是某几天中的其中一天。当7名保安依次输入自己想要的休息日后,系统将会给出可能的值班安排。若系统给出的值班安排是0种,证明系统对7名保安的选择无法作出排班,需要重新输入。

具体题目:学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下:

钱:星期一、星期六

孙:星期三、星期日

李:星期五

周:星期一、星期四、星期六

吴:星期二、星期五

陈:星期三、星期六、星期日

2、本程序涉及的知识点

输入函数和输出函数、变量的定义、for语句和switch-case语句的使用等

二、程序流程图

三、程序代码设计

输入函数和输出函数、变量的定义、for语句和switch-case语句、ss字符串的使用等。

输入函数:

1)函数原形:自定义swap(int *a, int *b)函数 swap()函数利用取地址符号&完成对程序中某个变量的赋值,进而程序中判断交换的功能。

3)函数原形:get char()

4)功 能:向计算机输入一个字符。

5)变量及类型:

int a,b,m,k: 整型形参变量,接收main()传过来的随机数字。

int i:循环控制变量,其中i 具有自加功能。

int j: 整型形参变量,其中j 具有自加功能。

6)说 明:输入字符后需要输入-1,待系统做出判断后往下执行。

选择判断结构

switch-case语句:从表达式值等于某个case语句后的值开始,它下方的所有语句都会一直运行,直到遇到一个break为止。随后,switch语句将结束,程序从switch结束大括号之后的第一个语句继续执行,并忽略其他case假如任何一个case语句的值都不等于表达式的值,就运行可选标签default之下的语句。

假如表达式的值和任何一个case标签都不匹配,同时没有发现一个default标签,程序会跳过整个switch语句,从它的结束大括号之后的第一个语句继续执行。for(语句1 ; 语句2 ; 语句3 ) {循环体}

执行时,先执行一次语句1(注意只执行一次) 之后判断语句2是否成立 1).如果成立执行循环体,之后执行语句3。再返回语句2判断条件是否成立?成立执行循环体后再执行语句3,如此直到循环体不成立则跳出循环 2)如果语句2不成立,则不执行循环体也不执行语句3直接跳出循环数组中存放星期一星期二我们可以通过前面输入的数字来引用文字#include

int n = 0;

int rest[7][7];

void swap(int *a, int *b)

{

int m;

m = *a;

*a = *b;

*b = m;

}

void perm(int list[], int k, int m)

{

int i;

int j;

if(k > m)

{

for (i=0; i<7;

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C程序 课程设计报告 201— 201 学年第 学期 课程名称 C语言课程设计 设计题目 《排班系统》 学生姓名 学 号 专业班级 指导教师 201 年 月 日 目录 一、设计任务书…………………………………………………………3 1、题目与要求…………………………………………………3 2、本程序涉及的知识点………………………………………3 二、程序流程图…………………………………………………………4 三、程序代码设计………………………………………………………5 四、程序调试过程………………………………………………………6 五、程序运行过程………………………………………………………6 六、程序有待改进的地方………………………………………………9 七、程序设计总结………………………………………………………9 八、致谢…………………………………………………………………9 参考文献…………………………………………………………………9 附录…………………………………………………………………… 10 一、设计任务书 1、题目与要求 赵:星期二、星期四本程序实现的功能是对7名保安人员进行排班,要求每个人在一 星期中可以休息一天。每名保安可以自行选择自己想要的休息日,而对于休息日的选择 既可以是某一天,也可以是某几天中的其中一天。当7名保安依次输入自己想要的休息日 后,系统将会给出可能的值班安排。若系统给出的值班安排是0种,证明系统对7名保安 的选择无法作出排班,需要重新输入。 具体题目:学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需 要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日 。请编制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息 日如下: 钱:星期一、星期六 孙:星期三、星期日 李:星期五 周:星期一、星期四、星期六 吴:星期二、星期五 陈:星期三、星期六、星期日 2、本程序涉及的知识点 输入函数和输出函数、变量的定义、for语句和switch-case语句的使用等 二、程序流程图 三、程序代码设计 输入函数和输出函数、变量的定义、for语句和switch- case语句、ss字符串的使用等。 输入函数: 1)函数原形:自定义swap(int *a, int *b)函数 2) 功 能:swap()函数利用取地址符号&完成对程序中某个变量的赋值,进而程序中判断交换的 功能。 3)函数原形:get char() 4)功 能:向计算机输入一个字符。 5)变量及类型: int a,b,m,k: 整型形参变量,接收main()传过来的随机数字。 int i:循环控制变量,其中i 具有自加功能。 int j: 整型形参变量,其中j 具有自加功能。 6)说 明:输入字符后需要输入-1,待系统做出判断后往下执行。 选择判断结构 switch- case语句:从表达式值等于某个case语句后的值开始,它下方的所有语句都会一直运行 ,直到遇到一个break为止。随后,switch语句将结束,程序从switch结束大括号之后的 第一个语句继续执行,并忽略其他case;假如任何一个case语句的值都不等于表达式的 值,就运行可选标签default之下的语句。 假如表达式的值和任何一个case标签都不匹配,同时没有发现一个default标签,程序会 跳过整个switch语句,从它的结束大括号之后的第一个语句继续执行。 for语句:for(语句1 ; 语句2 ; 语句3 ) {循环体} 执行时,先执行一次语句1(注意只执行一次) 之后判断语句2是否成立 1).如果成立执行循环体,之后执行语句3。再返回语句2判断条件是否成立?成立执行循 环体后再执行语句3,如此直到循环体不成立则跳出循环 2)如果语句2不成立,则不执行循环体也不执行语句3直接跳出循环。 输出函数: 1)函数原形:printf("======",*) 2)功 能:输出相关提示信息及最后结果。 3)相关变量: int n:输出正确结果。 int i,j:输出计算正确,计算排班情况。 4)说 明:输出时要把要输出的信息用双引号括起来,输出数字时要在其代表变量前 加逗号。 四、程序调试过程 由于对C语言知识储备有限,且时间精力有限,我们在设计程序程序的过程中遇到了 不少问题。 首先遇到的问题是:使用何种数组以及如何使输出变得简洁易懂,易操作。在思考讨 论之后,我们决定尽量"使输入数字化,输出结果文字化"的做法,也就是再输入星期几 的时候直接用数字代替,在输出的时候,为了更加直观,就需要把原先的数字输出为星 期几这种文字的形式;在单个对象输出结束之后,我们选择了 -1这个不会与其他日期混淆的数字,以此表示可以对下一个对象进行输出。这就需要
课 程 设 计 课程设计名称:保 安 值 班 系 统 专 业 班 级 : 电子信息工程2班 电子信息工程 专业课程设计任务书 "学生姓名 " "专业班级 "电信2班 "学号 " " "题 目 "保安值班系统 " "课题性质 " "课题来源 " " "指导教师 " "同组姓名 " " "主要内容 "程序要求能够输入每人选择的休息日期,然后经过程序运算分析." " " " " "2 保安排班管理,保安排班查询. " " " " " "3 管理员管理 " " "4 程序管理权限的设置 " "任务要求 "1该程序要求应该是能够输入每人选择的休息日期,由于工作需要" " "进行轮休制度,一星期中每人只能休息一天。 " " "2先让每一个人选择自己认为合适的休息日,判断是否符合条件 " " "3此程序可以打印轮休的所有可能方案。当然使每个人都满意。 " " "4软件是TC和VC++ " "参考文献 "[1]谭浩强编著. C++程序设计. 北京:清华大学出版社,2005 " " "[2]谭浩强编著. C++程序设计解题与上机指导. 北京:清华大学 " " "出版社,2005 " " "[3]谭浩强编著. C程序设计(第二版). 北京:清华大学出版社 " " ",1999 " " "[4]谭浩强编著. C程序设计设计解题与上机指导(第二版). 北 " " "京:清华大学出版社,1999 " " "[5] 孙淑霞等C/C++程序设计实验指导与测试(第2版),电子工 " " "业出版社,2007.1 " "审查意见 "指导教师签字: " " "教研室主任签字: 年 月 " " "日 " 基本要求有下面几点: 1该程序要求应该是能够输入每人选择的休息日期,由于工作需要进行轮休制度,一星期 中每人只能休息一天。 2先让每一个人选择自己认为合适的休息日,判断是否符合条件 3此程序可以打印轮休的所有可能方案。当然使每个人都满意 4每个人先给出自己的想休息的星期天,然后,经过商量,让主管人员给出可能的方案。 例如有下的例子和要求 某公司有7名保安人员:赵、钱、孙、李、周、吴、陈。由于工作需要进行轮休制度, 一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制一程序, 打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日,每个人先选 择自己的休息,然后经过分析和商量,列出有关的可能的方案。 赵:星期四 钱:星期一、 孙:星期三、 李:星期五 周:星期日 吴:星期二、 陈:星期六、 基于上述分析,引入的思想,建立一套面向企业单位是十分必要的。系统的创建与实 施可以为生活区或者企业提供很方便的服务。便于保安人员的工作服务。为了使每个人 都满意,可以实施轮流的方案,这样每个人就处于平等的优势,当然保安人员可以请假 或者经过他们自己的商量,暂时的替班。 课程设计的目的和要求 1 课程设计的目的 C语言课程设计的主要目的是培养我们综合运用C语言程序设计课程所学到的知识,做 相应的自主练习,消化课堂所讲解的内容,通过编写C程序,积累调试C程序的经验,完 成所要求的题目,逐渐培养编程能力,解决实际问题的能力,以及严谨的工作态度和良 好的程序设计习惯。 1. 进一步掌握和利用C语言进行程序设计的能力。 2. 进一步培养我们结构化程序设计的思想,加深对高级语言基本语言要素和控制 结构的理解。 3. 针对C语言中的重点和难点内容进行训练,独立完成有一定工作量的课程设计任 务,同时强调好课程设计风格。 4. 掌握C语言的编程技巧和上机调试程序的方法。 5. 掌握程序设计的常用算法。 6. 掌握书写程序开发文档的能力。 通过课程设计的训练,我们应该能够了解程序设计的基本开发过程,掌握编写、调试 和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。 另外,C语言本身的复杂性也是其比较难学的原因之一。C不仅可以用来开发应用程序 ,更可用来设计系统程序。比起其他语言,C增加的许多特点就是为了设计高质量的系统 软件。显然,这些特点也增加了学习C的难度。 因此,在程序设计的时候必须树立以下观念:学习思考的方法比学习语言更重要,琢 磨程序设计的思维模式比琢磨C语言的知识更重要,培养自己的思考能力比记忆语言知识 更重要。 C语言程序设计的主要任务是要求我们遵循软件开发过程的基本规范,运用结构化程 序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C语言程序及 编写设计报告。 1.2 课程设计的要求 课程设计的选题必须围绕本课程内容,确定一个或几个难度、份量适当的具体的工程 实际项目,以便较系统地训练学生综合运用本课程所学知识解决工程实际问题的能力。 课程设计题目都应给出原始数据。课程设计题目需要完成的工作量。课程设计的工作量 包括:设计计算(
好的,我可以为您提供一些思路和建议。 保安排班系统需要实现的功能主要包括: 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、付费专栏及课程。

余额充值