1、 课课 程程 设设 计计 报报 告告 学院、系: 专业名称: 计算机科学与技术专业 课程设计科目 C 语言程序课程设计 所在班级: 学生学号: 学生姓名: 指导教师: 完成时间: 2012 年 3 月 25 日 保安排班系统 一、设计任务与目标 如今是信息高速发展的时代,我们已经进入了信息社会。作为计算机专业的 学生,我们更应该了解信息的重要性,而电脑是当今社会的重要交流工具。使用 计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。作为 电脑操作者,动手能力无疑是最重要的环节,课程设计就是锻炼动手能力的不错 平台。作为高科技人才,我们必须会运用 C,编写应用程序,是一个计算机学
2、院 学生必备的技能。无论是以后的工作,还是现在的学习,都要求我们能够做好课 程设计。保安人员休息时间安排系统是一个简单的小程序,通过它,可以让我们 掌握一个完整系统的设计和实现的方法,巩固所学的程序设计的知识。 通过课程 设计的训练,学生了解程序设计的基本开发过程,掌握编写、调试和测试 C 语言 程序的基本技巧,充分理解结构化程序设计的基本方法,熟悉运用结构化程序设 计的方法。此类问题的已有类似工作,是应用结构体来处理的,而我将在这的基 础上应用链表,指针来完成保安排班系统,利用 for 循环来为保安轮休选择排列 组合。这样能够让我熟悉并掌握掌握链表,指针的相关知识, 。进行本设计时要 达到的
3、具体的目标: 1. 应用链表来完成保安排班系统。 2. 所设计的程序能够识别不满足排班的情况。 3. 利用 for 循环来排列组合保安的轮休选择。 4. 必须用到 c 语言的精华部分:指针。 5. 利用文件的读取,记录程序的运行结果。 二、 方案设计与论证 1 1、设计思路设计思路 声明一 linklist 结构体类型的结点,含“char *name;int day7;”两个成员, 还有 struct linklist 类型的指针 next。 定义建表函数:定义指针数组 char *n7指向 7 个保安的姓氏;定义 struct linklist 的指针 head, q, p;再分别创建 7
4、个新结点; 并将 7 个新结点的 name 分别初始化, 避免出现野指针。 定义 myinput 函数,存入每名保安的轮休选择;它的作用是:依次输入各个保安人 员想要的休息日(17) ,当所输入的休息日数小于 7 时,输入一个负数结束该保安的数据 输入, (如:赵想要的休息日是星期一,星期二,星期六,则输入:1 2 6 -1);当所有 的数据输入后,不能使每天都有保安值班,则提示并重新输入数据。 定义 myfuny 函数: 定义 FILE 型的指针 fp,让其指向文件,文件名 filename=“保安排版.txt“;记录 程序运行的结果。重新定义一个 struct linklist *s7;利
5、用 for 循环让其分别指向 7 个 结点,利 用 7 个 for 循环为保安的轮休选择排列组合,如果分配给这 7 名保安的休 息日互不相等,则该分配方式满足要求,并输出。 定义主函数: 定义 struct linklist *a; 调用函数 myinput 以 a为参数,调用清屏函数 system(“cls“), 和函数 myfun 以 a 为参数。 三 、 程 序 框 图 或 流 程 图 , 程 序 清 单 与 调 用 关 系 四、全部源程序清单 #include 开始 输出欢迎使用 排班系统 调用 myinput 函 数 经循环判断输 入的休息日是 否合理 输出所有的排 班情况 输出结果
6、为空 结束 y n #include #include/*包含 getch()*/ #include struct linklist char *name; int day7; struct linklist *next; ; struct linklist *creat(int m)/*建表函数*/ char*n7=“赵“,“钱“,“孙“,“李“,“周“,“吴“,“陈“; int d7=0; int i; struct linklist *head, *q, *p; head=(struct linklist *)malloc(sizeof(struct linklist); head-name=n0; q=head;/头指针赋给指针 q for(i=1;iname=ni; q-next=p; q=p; q-next=NULL; return head; void myinput(struct linklist *q1)/参考 zsq88 网友但有