“C语言程序设计实践”任务书正式版

上传人:z**** 文档编号:165323212 上传时间:2022-10-27 格式:DOCX 页数:23 大小:95.93KB
收藏 版权申诉 举报 下载
“C语言程序设计实践”任务书正式版_第1页
第1页 / 共23页
“C语言程序设计实践”任务书正式版_第2页
第2页 / 共23页
“C语言程序设计实践”任务书正式版_第3页
第3页 / 共23页
资源描述:

《“C语言程序设计实践”任务书正式版》由会员分享,可在线阅读,更多相关《“C语言程序设计实践”任务书正式版(23页珍藏版)》请在装配图网上搜索。

1、忆语言程序设计实践”任务书信息科学与工程学院电气与自动化实验室2012年5月目录一、指导老师安排2二、课程设计要求2三、结构化程序设计方法2四、相关管理系统设计题的基本功能要求3五、成绩评定要素3六、课程设计报告基本内容要求4八、设计题(共13题)4九、上机地点及时间安排表(第18周至第19周) 错误!未定义书签。附录1: 6附录2: 错误!未定义书签。附录3: 14“C语言程序设计实践”任务书一、指导老师安排电气信息类1119班:唐朝晖、李志民电气信息类1120班:唐朝晖、李志民电气信息类1124班:叶华文、李志民电气信息类1125班:叶华文、李志民电气信息类1127班:袁艳、李志民二、课程

2、设计要求本次“C语言程序设计实践”课程设计,是基于“C语言程序设计基础”课程学习内容 的重要实践环节,其主要目的在于,通过综合程序课程设计,培养和提高学生的独立分析问 题、解决实际问题的能力和计算机语言编程能力。本次课程设计时间为2周,要求每位同学 在为期两周的时间段内,独立完成相关设计题所规定的任务(上机时数为20学时)。进度安 排建议如下:1、阅读设计题目、任务内容,规划设计进度,并进行软件的各相关功能模块的规划设 计(1天)。2、在Turbo C (或Visual C+6.0)环境下,用结构化程序设计思想进行C语言程序设 计、功能模块调试(7-9天)。3、进行课程设计报告编写与整理(2天

3、)。4、课程设计结束时,要求进行设计成果演示(由指导老师验收相关程序运行成果并打 分);每人须对相关电子文档进行整理上交(包括:程序文件、帮助说明文档;)交课程设计 报告(纸质)一份(手工书写稿)。课程设计报告基本内容及格式参考P4页上内容。三、结构化程序设计方法结构化技术是软件工程中最成熟的技术之一,它包括结构化分析方法( Structured Analysis)、结构化设计方法(Struetured design)和结构化程序设计方法(Structured Programming),简称为SA-SD-SP方法。它的总的指导思想是自顶向下、逐步求精、单入口 /单出口,基本原则是抽象和功能的分

4、解。对于较为复杂问题的大型程序开发,应采取“自 顶向下、逐步细化和模块化”的设计方法,模块化程序设计是结构化程序设计方法在开发大 型程序中的应用。1、自顶向下、逐步细化、逐步求精所谓“自顶向下,逐步细化、逐步求精”就是在对于给定问题进行透彻的了解和详细的 分析的基础上,把问题分解成若干个按顺序执行的逻辑部分,称为“模块”。每个子任务如 果仍很复杂,还可以再分解为若干个子任务。如此逐层分解,对于每个模块的设计都采用这 种“自顶向下、逐步细化”的方法,将它们分解成为基本结构为止,就如同写文章先拟出题 目和中心内容,再确定分为几大部分,每一大部分又分哪几节,每一节分为几段,每一段包 括哪几个意思,这

5、就是“自顶向下,逐步细化”的方法。2、菜单技术当一个程序的规模比较庞大,层次和模块比较多时,不要每次都将所有模块按顺序执行 一遍,最好在每一层,至少在最高几层都设一个“菜单”。为方便用户操作,“菜单”技术已 广泛使用在计算机的系统软件中,具体做法是:程序首先把各功能说明及相应代号以菜单形 式显示在屏幕上,然后由用户在键盘上输入所选的功能代号,程序自动转去调用相应的功能 模块进行处理。四、相关管理系统设计题的基本功能要求1、数据文件管理功能:创建新文件、管理老文件(包括:Open、New-)。2、输入添加/插入记录:能够完成对任意一条记录输入、添加或插入数据表中,并 保存到数据文件中。3、显示、

6、查询记录:能够打开已存在的数据表文件,根据用户要求按所给记录关键字 显示、查询一个或多个相关联记录的各项信息。4、修改记录:能够打开已存在的数据表文件,并对确定的任意记录进行修改,在修改 过程中,应显示记录信息,给出确认提示,并对更新的记录信息进行文件保存。5、删除记录:能够打开已存在的数据表文件,可以删除数据表中的任一记录,要求具 备逻辑删除(具有恢复功能)和物理删除功能,并对新的数据表信息进行文件保存。6、统计功能:能够打开已存在的数据表文件,对数据表中与某关键字匹配的相关记录 进行数据统计(包括:总数、平均值、分段信息)例如:按课程得分为100、9099、80 89、7079、6069和

7、不及格学生的人数,以及所占百分比。7、排序:对记录进行排序。例如:按某门课程的成绩排序,或按成绩总分进行排序等。在正确、合理的软件功能规划的基础上,进行各功能模块的设计。建议用 文件包含或工程文件形式,进行逐个模块的功能调试与功能实现。切忌将多个 功能模块混合一起进行调试。有关 C 语言程序设计参考,见附录 1。五、成绩评定要素成绩分为优、良、中、及格、不及格五档,考核标准如下:1、验收程序的可用性,实用性,通用性,可扩充性(程序设计源代码)(50%)2、学生的动手能力,创新精神(10%)3. 程序设计说明书(30%)4. 平时成绩(10%)六、课程设计报告基本内容要求一、封面(封面格式见附录

8、 2)二、目录三、本次课题的基本内容和要求四、软件设计整体规划及方案五、程序功能简介六、主体内容(简要说明总体情况,详细介绍本人任务部分):1、设计分析2、程序结构(画总体模块图、本人设计部分的程序N-S或ANSI流程图)3、各模块的功能及程序说明4、相关模块源程序5、操作方法(流程)6、试验结果(包括输入数据和输出结果)7、设计体会8、参考文献八、设计题(共 13 题 )1-12 题为信息管理类型题目,13 题为控制类型题目。每个题目有人数的限制,每位学 生可以根据自己的情况独立选择一题作为设计任务,鼓励几个同学搭档分组,分工合作完成。 以下题目的基本功能要求仅供参考,建议同学根据实际应用状

9、况及要求,进行合理规划。选题1:销售信息管理系统(建议2-3 人) 调研、选择一个典型销售案例,实现按月进行销售员销售业绩信息管理。其中,每个 销售员记录,包括编号,姓名,产品 1 销售额,产品 2 销售额,。产品 N 销售额,总销售额等 信息。具体功能要求参见P3。选题2:职工工资信息管理系统:(建议2-3 人) 调研、选择一个典型职工信息管理案例,实现按月保存职工的工资数据。其中,每位职 工记录,包括编号、姓名、职务基本工资、岗位津贴、其他补贴、应发工资、实发工资;扣 除项目包括:所得税、住房公基金、养老金、医疗保险、失业保险、职务、基本工资、奖金, 工资总额。具体功能要求参见 P3。选题

10、3:图书信息管理系统:(建议2-3 人) 调研、选择一个典型图书信息管理案例,实现图书库存、借阅信息管理。每本图书的记 录信息包括:书号、书名、作者,单价、库存数量、出版时间、出版单位、价格等。具体功 能要求参见 P3。选题4:材料管理系统:(建议2-3 人) 调研、选择一个典型仓库材料信息管理案例,实现材料库存、领用信息信息管理。每种 材料的记录信息,包括:编号、名称、单价、入库数量、库存数量、出库数量、保管人、进 货时间、出货时间和备注等。具体功能要求参见 P3。选题5:学生成绩管理系统:(建议2-3 人) 调研、选择一个典型学生学籍(成绩)信息管理案例,实现以班为单位的学生成绩信息 管理

11、。学生成绩的基本信息包括:学号、姓名、五门以上课程成绩、成绩总分、平均成绩等。 具体功能要求参见 P3。选题6:设备管理系统:(建议2-3 人) 调研、选择一个典型设备信息管理案例,实现各基层单位的设备资产信息管理。每个设 备的记录信息,包括设备编号(8 位数)、仪器名称、型号规格、单价、购入日期、领用人、 使用状况和备注(50 字)。具体功能要求参见 P3。选题7:通信录(建议 1-2人) 以班为单位进行通讯录信息管理。每个记录包括:序号、姓名、性别、年龄、电话,籍 贯、现工作单位、家庭住址、通信地址及邮编等。具体功能要求参见P3。选题8:人事信息管理系统(建议2-3 人)调研、选择一个典型

12、人事基本信息管理案例,实现某基层单位的人事基本信息管理。人 事基本信息包括:职工号(职工号不重复)、姓名、性别、年龄、学历、职称、基本工资、 岗位津贴、工资总额、在岗状况等。具体功能要求参见P3。选题9:人员基本信息管理系统 (建议2-3 人) 调研、选择一个典型人员基本信息管理案例(例如:流动人口管理、小区楼栋居民管理 等),实现分片或楼栋为数据库的人员基本信息管理。信息包括:序号,姓名,年龄,性别, 出生年月,籍贯,电话,E-mai丨等。具体功能要求参见P3。选题10:学生选修课程信息管理系统(建议2-3 人) 调研、选择一个典型学生选课基本信息管理案例,实现对多门课程的选课信息管理。每

13、门课程的基本信息,包括:课程编号,课程名称,课程性质,总学时,授课学时,实验或上 机学时,学分,开课学期等信息。具体功能要求参见P3。选题11:小学算术运算测试(建议1-2 人) 实现不同年级程度的算术运算能力测试(加、差、乘、除)。要求每套试卷共十题,能够 根据练习水平和进度随机产生数据和不同运算要求,并建议制答题时间。能判断结果正确性, 给出综合评分(包括:答题时间、正确率、总分、累记平均分等),并保存文件/打开文件。选题 12:宿舍信息管理系统(建议2-3人) 调研、选择一个典型学生宿舍楼的住房基本信息管理案例,实现学生区各个宿舍楼的宿 舍信息管理。每个宿舍基本信息包括:楼层号、房间号、

14、面积、可住宿人数、实际住宿人数、 修缮状况(良好/待维修)、备注(记录入住人员姓名、性别、年龄、单位等)。具体功能要 求参见 P3。选题13 :基于C语言的模拟电梯系统程序设计(建议每组5-6人)根据“模拟电梯控制任务说明书”的规定,设计实现一个模拟电梯控制的仿真软件,方 便进行相关控制策略验证和分析。这一任务可由包含5-6 名同学的小组集体完成。通过该作 业,希望同学们能够复习巩固结构化程序设计知识,培养良好的程序设计风格与习惯,了解 软件开发的整个过程,学习书写简单文档,练习多人合作开发软件。“设计任务说明书”详 见附录 3。备注电气与自动化专业实验室2012 年 5 月 22 日附录 1

15、:C语言程序设计实践课程设计参考及指导设计参考题目:通信录管理系统一、程序组织方法在Turbo C或VC+6.0中新建一个工程,再按下述方法创建各源程序文件。 1将所有包含文件、符号常量定义、数据类型定义存放在头文件 task1a.h中,此文件基本不用改动。将所有函数声明存放在头文件 task1b.h 中, 每当定义一个新的函数时,就在此文件中增加一行此函数的声明,并在注 释中标明定义此函数的文件。这样在每个源程序文件开头只需有 2条包含 命令:#include task1a.h#include task1b.h2. 将main()函数单独存放在一个源程序文件tasklOOO.c中。3. 将m

16、ain()函数主菜单中直接调用的函数的定义存放在源程序文件 taskllOO.c、task1200.c、task1300.c、中。4.将一些公用的函数的定义存放在源程序文件task1900.c中。5. 将taskllOO.c中调用的函数的定义存放在源程序文件task1110.c、task1120.c、task1130.c、中。将task1120.c中调用的函数的定义 存放在源程序文件task1121.c、task1122.c、task1123.c、中。6. 每增加一个模块,调通测试后,将所有源文件复制到一个文件夹保存。文件夹命名的规则和顺序可如下: v0.00, v0.01, v0.02, v

17、0.03, 全部完成后最终保存所有源文件的文件夹命名为vl.OO。初始版本vO.OO由老师提供。二、部分参考程序#ifndef#definePRJ1A_SOFTW05PRJ1A_SOFTW05/* Start of head file prj1a.h */#includestdio.h#includeconio.h#includestring.h#includestdlib.h#defineNODE struct comm_info /* 定义结点类型 */#defineLEN sizeof(struct comm_info) /* 定义结点长度 */#defineTRUE 1/* 符号常量定

18、义 */#defineFALSE 0/* 符号常量定义 */#defineMAXLINE 1000/* 符号常量定义 */#defineLIMIT 100000/* 符号常量定义 */* 全局变量的定义在 prj1030.c 文件中 */extern long count;/* 全局变量声明 */extern NODE * head;/* 全局变量声明 */extern NODE * tail;/* 全局变量声明 */extern NODE * npLIMIT;/* 全局变量声明 */struct comm_info /* 定义通信信息结构体类型 */longnum;/* 编号 */charg

19、roup16;/* 分组 */charname16;/* 姓名 */charhphone16;/* 固话 home_phone */charmphone16;/* 手机号 mobile_phone */charqq16;/* QQ 号码 */charemail20;/* e-mail 地址 */charcode10;/* 邮政编码 */intlen;/* 家庭住址或通信地址长度 */char*addr;/* 家庭住址或通信地址 */head file prj1a.h */仁头文件taskla.h的格式和内容:/* prj1:void show_version(void); void login

20、(void);void set_list(void);void display(void);void add_record(void);void del_record(void);void find(void);void modify(void);void sort(void);void help(void);void warn_exit(void);void save(void);int menu(void);void new_data(void); void old_data(void);void ptrcopy(void); int exist(long num);void ins_no

21、de(NODE *p);void pause(void); void clrscr(void); int YesOrNo(void); void newline(int n);struct comm_info*prev;/*前向链表指针*/struct comm_info*next;/*后向链表指针*/;#endif /* End of head file prj1a.h*/2头文件tasklb.h的格式和部分内容(可添加更多函数声明):/* prj1: head file prj1b.h contains only function declarations */#ifndef PRJ1B_

22、SOFTW05 /* Start of head file prj1b.h */ #define PRJ1B_SOFTW05 /* 所有自定义函数都应在下面加以声明 : */* 在 prj1010.cpp 文件中定义 */ /* 在 prj1020.cpp 文件中定义 */ /* 在 prj1030.cpp 文件中定义 */ /* 在 prj1100.cpp 文件中定义 */ /* 在 prj1200.cpp 文件中定义 */ /* 在 prj1300.cpp 文件中定义 */ /* 在 prj1400.cpp 文件中定义 */ /* 在 prj1500.cpp 文件中定义 */ /* 在 p

23、rj1600.cpp 文件中定义 */ /* 在 prj1700.cpp 文件中定义 */* 在 prj1700.cpp 文件中定义 */ /* 在 prj1800.cpp 文件中定义 */* 在 prj1001.cpp 文件中定义 */* 在 prj1031.cpp 文件中定义 */* 在 prj1032.cpp 文件中定义 */* 在 prj1033.cpp 文件中定义 */* 在 prj1034.cpp 文件中定义 */* 在 prj1035.cpp 文件中定义 */ /* 在 prj1900.cpp 文件中定义 */ /* 在 prj1900.cpp 文件中定义 */ /* 在 prj

24、1900.cpp 文件中定义 */ /* 在 prj1900.cpp 文件中定义 */#endif /* End of head file prj1b.h */3源程序文件tasklOOO.c的内容:/* prj1: source file prj1000.cpp contains main()*/#include prj1a.h#include prj1b.h/* 通信录管理系统主函数。*/ main(int argc, char *argv) int option; show_version(); login(); set_list();if ( argc = 1 ) option = m

25、enu();else if ( argc = 2 & (*+argv)0 = - )switch (*+argv0) case d: option = 1;break;case a: option = 2;break;case r: option = 3;break;case f: option = 4;break;case m: option = 5;break;case s: option = 6;break;case h: option = 7;break;case x: option = 8;break;case q: option = 0;break;default: help();

26、option = menu(); break;else help();option = menu();while ( 1 ) switch (option) case 1: display();break;case 2: add_record();break;case 3: del_record();break;case 4: find();break;case 5: modify();break;case 6: sort();break;case 7: help();break;case 8: save();break; case 0: warn_exit(); option = menu(

27、);return 0;4源程序文件task1900.c的内容:/* prj1: source file task1900.cpp contains functions in common use*/#include prj1a.h#include prj1b.h/* waiting */void pause(void)printf(nPress any key to continue ); getch();/* clear screen */void clrscr(void) system(cls);/* Get a response: return 0 for No, 1 for Yes *

28、/int YesOrNo(void)char r;do r = getch(); while ( r != Y & r != y & r != N & r != n );if ( r = Y | r = y )return 1;else return 0;5源程序文件taskllOO.c的初始内容(为学生提供的初始模板):/* prj1: source file prj1100.cppcontains display()*/#include prj1a.h#include prj1b.h/*display records in the list.*/void display(void)clrs

29、cr();/*Add real functions here 学生在此填入适当内容,从而实现函数的正常功能。*/printf(nI am display()n); /* will be deleted */pause();三、main函数流程图(程序框架)附录 3:模拟电梯控制设计任务说明书根据下面的功能描述,编程、调试模拟电梯控制软件。一、电梯配置 共有 1 个电梯 共有 maxfloor 层楼层,这里 maxfloor 暂时取做 9。范围是 5-9 层 中间层每层有上下两个按钮,最下层只有上行按钮,最上层只有上行按 钮。每层都有相应的指示灯,灯亮表示该按钮已经被按下,如果该层的 上行或者下

30、行请求已经被响应,则指示灯灭 电梯内共有 maxfloor 个目标按钮,表示有乘客在该层下电梯。有指示 灯指示按钮是否被按下。乘客按按钮导致按钮指示灯亮,如果电梯已经 在该层停靠则该按钮指示灯灭另有一启动按钮(GO)。当电梯停在某一楼层后,接受到GO信息就继 续运行。如果得不到 GO 信息,等待一段时间也自动继续运行。 电梯内设有方向指示灯表示当前电梯运行方向。 二、电梯的运行控制要求 电梯的初始状态是电梯位于第一层处,所有按钮都没有按下。 乘客可以在任意时刻按任何一个目标钮和呼叫钮。呼叫和目标对应的楼 层可能不是电梯当前运行方向可达的楼层。 如果电梯正在向I层驶来,并且位于I层与相邻层(向上

31、运行时是1-1 层或者向下运行时是I+1层)之间,则因为安全考虑不响应此时出现的I层目标或者请求。如果电梯正好经过了 I楼层,运行在I楼层和下一 楼层之间,则为了直接响应此时出现的 I 层目标或者请求,必须至少到 达运行方向上的下一楼层然后才能掉头到达 I 楼层(假设掉头无须其它 额外时间),如果 I 楼层不是刚刚经过的楼层则可以在任意位置掉头, 此时掉头后经过的第一个楼层不可停。 电梯系统依照某种预先定义好的策略对随机出现的呼叫和目标进行分 析和响应。 乘客数量等外界因素(可能导致停靠时间的长短变化)不予考虑。假设 电梯正常运行一层的时间是5S,停靠目标楼层、上下乘客和电梯继续 运行的时间是

32、 5S。 当电梯停靠某层时,该层的乘客如果错误的按目标或呼叫按钮都不予响 应。 电梯停靠某一层后,苦无目标和呼叫,则电梯处于无方向状态,方向指 示灯全灭,否则电梯内某个方向的指示灯亮,表示电梯将向该方向运行。等接到“GO”信号后电梯立即继续运行。若无GO信号,则电梯在等了上 下乘客和电梯继续运行时间后也将继续运行。 当一个目标(呼叫)已经被服务后,应将对应的指示灯熄灭。三、电梯运行的控制策略以下是几个候选策略(仅供参考):1、先来先服务策略:将所有呼叫和目标按到达时间排队,然后一一完成。这是相当简单的策略,只 需要设计一个将呼叫和目标排队的数据结构。因为该策略效率也很低,所以没有 实际的电梯采

33、用这种策略。2、顺便服务策略: 顺便服务是一种最常见的简单策略。这种策略在运行控制中所规定的安全 前提下,一次将一个方向上的所有呼叫和目标全部完成。然后掉转运行方向完成 另外一个方向上的所有呼叫和目标。可以采用设定目标楼层的办法来实现这个策略,即电梯向一个目标楼层运 行,但这个楼层可以修改。具体策略如下:(1)修改目标楼层的策略:a. 如果电梯运行方向向上,那么如果新到一个介于当前电梯所处楼层和 目标楼层之间,又可以安全到达的向上呼叫或者目标,将目标楼层修改为这个新 的楼层。b. 如果电梯运行方向向下,那么如果新到一个介于当前电梯所处楼层和 目标楼层之间,又可以安全到达的向下呼叫或者目标,将目

34、标楼层修改为这个新 的楼层。(2)确定新的目标楼层的策略: 如果电梯向上运行,当它到达某个目标楼层后,则依照以下顺序确定下一 个目标楼层:a. 如果比当前层高的楼层有向上呼叫或者目标,那么以最低的高于当前 楼层的有向上呼叫或者目标的楼层为目标。b. 如果无法确定目标楼层,那么以最高的向下呼叫或者目标所在楼层为 电梯当前目标楼层。c. 如果无法确定目标楼层,那么以最低的向上呼叫所在楼层为电梯当前的 目标楼层。d. 如果仍然不能确定目标楼层(此时实际上没有任何呼叫和目标),那 么电梯无目标,运行暂停。如果电梯向下运行,依照以下顺序确定下一目标楼层:a. 如果比当前层低的楼层有向下呼叫或者目标,那么

35、以最高的低于当前 楼层的有向下呼叫或者目标的楼层为目标。b. 如果无法确定目标楼层,那么以最低的向上呼叫或者目标所在楼层为 电梯当前目标楼层。c. 如果无法确定目标楼层,那么以最高的向下呼叫楼层为目标楼层。d. 如果仍然不能确定目标楼层(此时实际上没有任何呼叫和目标),那 么电梯无目标,运行暂停。3. 最快响应策略: 响应所有的现在存在的所有呼叫和目标所需时间(采用不同方案电 梯停靠时间相同,所以不必考虑)最短的策略。可选方案一是电梯先向上运行响应经过各层的目标和向上呼叫,再 向下运行响应所有向下呼叫以及途经各层的目标,最后再向上响应剩余的向上呼 叫。二是恰好相反,先向下,再向上,最后再向下运

36、行。由于呼叫和目标会随时增加,所以实际上有时这种策略并不好。另 外有时这将导致电梯突然向相反的方向运行。为了防止经常性的改变方向,我们 可以采用设定只有当原来的运行方向比相反方向的代价高 20%的时候才切换方 向。4. 最短平均等待时间策略: 假设每一呼叫楼层等待的人数和每一目标楼层走出电梯的人数相 等。计算响应当前所有呼叫和目标全部乘客所需时间的总和(包括等待时间和电 梯运行时间,对于提出呼叫而尚未进入电梯的乘客则只计算等待时间)。对于这 种策略,基本上也是只有策略 3 一样的两种选择方案。由于呼叫和目标会随时增 加,所以实际上这种策略有时并不好,但它比最快响应时间策略较为稳定和高效。 另外

37、有时这将导致电梯突然向相反的方向运行。为了防止经常性的改变方向,我 们可以采用设定只有当原来的方向比替代方向的代价高 20%的时候才切换运行 方向。注意:除了先来先服务以外,我们不能预先设定固定不变电梯运行的目标 楼层。5. 创新控制策略。要求重点要实现上述任何一种控制策略,如:顺便服务策略,应在一个相 对独立的程序块中实现控制策略,这样能方便地对其进行修改而不影响程序的其 他部分。四、输入输出1. 输入:就是一系列的呼叫和目标。输入可以采用两种方法:a.以键盘输入呼叫和目标。例如我们可以设定如下:当敲击键1、2、3、4、 5、6、7、8、9 时表示电梯内有乘客按目标按钮,指定相应目标楼层。当

38、敲击键 Q、W、E、R、T、Y、U、I 时表示 8 层到 1 层有上行呼叫请求。当敲击键 A、S、D、 F、G、H、J、K 时表示 9 层到 2 层有下行呼叫请求。b.将呼叫和目标写入一个正文文件,然后程序读取这些呼叫和目标数据后 可以在没有人工干预的情况下模拟电梯运行情况。其中一个呼叫/目标占一行, 包括如下内容:呼叫和目标的编号,统一编号,从 0001 开始,占 4 个字节。 该输入的时间,以整数表示,从小到大排列,占 4 个字节,从 0000 开始, 单位秒。呼叫/目标/GO/结束,表明该行是什么。0表示呼叫,1表示目标。2表示GO,3 表示输入到此结束,占一个字节。 目的楼层,仅用与呼

39、叫或者目标,呼叫所在楼层或者目标楼层,占一个字节。 呼叫方向:仅用于呼叫,0 表示上行,1 表示下行,占一个字节。 每个数据项之间用一个空白字符隔开。不必考虑检查数据的正确性。2. 输出:a. 电梯运行的动画显示:包括显示各按钮指示灯的亮灭情况、电梯方向指 示灯和电梯位置及运行情况。b. 电梯运行情况的记录(结果)文件。 记录文件也是文本文件,每一行表示一次停靠,包括以下内容:停靠时间:开始停靠某楼层的时间,以整数表示,从小到大排列,占4 个字 节,从 0 开始,单位秒。楼层:停靠的楼层,占一个字节(1-9)。 每个数据项之间用一个空白字符隔开。程序中不必考虑检查数据的正确性。五、基本要求和较

40、高的要求以下内容仅供有余力的同学参考实现。1. 程序的运行方式: 如果输入从数据文件中取得,则程序的运行应该有两种方式,动画方式、 快速方式和完全方式。如果输入从键盘输入,那么必须采用动画方式,否则因为 我们来不及输入呼叫和目标而没有意义。a. 动画方式花费较长的时间来直观地模拟电梯运行。b. 快速方式则没有动画,只是生成记录文件。c. 完全方式花费较长的时间来直观地模拟电梯运行,同时生成记录文件。 基本要求只实现动画方式。2. 控制策略:基本要求实现先来先服务和顺便服务策略,可以指定电梯模拟系统使用 不同的策略。较高的要求是可以在多个策略之间由我们控制进行切换。3. 输入输出: 基本要求实现

41、键盘输入、动画输出。4. 统计分析统计分析每个乘客乘电梯花费的平均时间。 如果实现了多个策略,则可以对不同策略加以比较。5. 程序的适应性考虑:例如如何不要作很多修改就可以适应楼层数改变(例如增加到 30 层)等等。六、程序设计步骤1. 人员组织准备:5-6 人自由组合成一个小组来完成本大型作业。要求每组有一个组长,负责 组织工作和程序总体结构与模块接口的协调,负责分配任务以及做出决策。每组还要有一个文档员,文档员负责小组正式会议的记录工作以及其它文档 的最后的整理定稿工作。要求每小组至少举行一次正式会议(请同学们考虑如何才能使会议有效率)。在软件开发全过程中,该阶段大约占用 5%以下的时间。

42、2. 明确任务学习任务说明书,对它进行必要的补充。在软件开发全过程中,该阶段大约占用 15%-25%的时间。3. 总体设计与任务划分将系统划分为若干个功能模块。要求首先要明确定义功能模块的接口,包括 各模块之间的调用关系、功能模块名和调用它的参数,另外还要明确高层次的算 法和重要的数据结构。然后将任务并分配到人,各个同学的工作量不应相差太大。 要注意到组长负责小组工作的协调需要一定的工作量,文档工作也有一定工作 量。以后的详细设计中功能模块的接口除非发生无解的情况,不应该被轻易修改。在软件开发全过程中,该阶段大约占用 10%-15%的时间。4. 详细设计对分给自己的模块的分析设计,包括局部数据

43、结构和算法,要求使用某一种详细设计辅助工具(例如伪代码、N-S图等)写出详细设计的文档。在软件开发全过程中,该阶段大约占用 15%-25%的时间。5. 编程在设计比较大的程序时尤其要注意程序设计风格。在软件开发全过程中,该阶段大约占用 10%-20%的时间。6. 调试调试的要点在于定位错误,所以请考虑如何才能高效率做到这一点,特别的, 要知道是谁的那部分程序有错误,然后让他来改正自己的错误。作业完成后需要演示模拟扌空制软件的运行情况提交完整的作业报告文档七、需要提交的文档要求提交的阶段性文档是完善的任务书、总体设计说明书(含任务划分说 明)、详细设计说明书和程序清单。另外还要求提交会议纪要。既

44、可以提交书面 的文档,也可以提交电子文档。注意每一阶段的文档不应该在实验结束后补写, 而应该是在实验进行中书写,同时指导整个实验过程。1. 会议纪要:记录本小组组长,成员基本情况及指导教师姓名,进展情况记录是小组正式 会议的记录,包括主持人,记录人,参加人,讨论问题概要、进展情况等,在其 它文档中出现的内容可以少记或不记,每次记录以一页左右为宜。2. 完善的任务书:对任务说明书的补充,然后自己写一个非常完整的任务书。3. 总体设计与任务划分:要求用某种方式写出总体结构明确说明任务的划分情况以及各模块之间的 接口。对影响全局的其它程序结构,数据结构进行说明。4. 详细设计每个人对分给自己的模块进

45、行分析设计,确立程序结构,定义局部数据结构 和算法设计等。以伪代码、N-S图等良好的形式给出。将各人的设计汇总,以小 节方式列出。电梯控制策略的详细说明应该包含在这一部分。5. 程序清单要注意程序风格。6. 测试报告要求给出用 24 个包含多个呼叫及目标的实际例子(即运行过程)对软件进 行测试,记录获得的结果并判断程序是否正确工作。7. 使用说明对生成的可执行文件名,启动方法及使用方法进行必要的说明 (例如键的分 配)。8. 体会、评论与收获:必写,内容随意。在组间交流会上进行口头经验交流八、系统接口和程序总体结构1.软硬件环境一个软件的开发总是要在一定的软硬件环境下进行,模拟电梯控制软件的开

46、 发环境除了我们要编写的C语言程序外,还包括一组已经编制好的子程序以及一 些给出的数据定义,它们的主要功能是表示电梯系统参数,模拟电梯运行以及处 理各类信号的输入输出。要注意利用它们提供的一些控制显示和键盘输入的函数 和过程来简化输入和输出(包括动画)的设计。当然也可以利用编程语言提供的 函数和过程来完成输入和输出。2.模拟电梯的显示以及信号的输入输出信号输入:输入信号包括2*maxfloor-2个呼叫按钮,maxfloor个目标按钮,以及一个GO按钮,我们可以自行定义如下:键呼叫按钮 键目标按钮Q5下55W4上 44E4下33A 3上 22S3下11D 2上 GGOF2下R 1上电梯模拟图形

47、及指示灯输出:自行定义3. 程序的总体结构: 下面的内容仅供参考: 我们可以在主程序中写如下两个过程调用:Configure;Simulation;前者在进行模拟前设置一些参数,这比较简单。而后者则是进行仿真模拟 这相当复杂,所以下面我们就来讨论如何设计Simulation。这一类的模拟仿真程序有一个共同的特点是要模拟某个系统在一段时间内 的情况,所以我们很自然地要从时间上对该问题进行分解,就是说Simulation()In itialize;初始化过程doLift_status();计算电梯状态在这一时刻的变化,例如到达某层,就要设定为已经完成了该层的目标,同时将电梯停下来等Writemessage();输出信息(包括动画)Geti nput();接收当前时刻的新输入(包括新目标和新呼叫)Con trol();调用控制策略程序决定电梯该如何运动Time二time+1;推进仿真时间,假定每一秒电梯进行上述操作一次While not endcondition;这就是可以模拟电梯系统的基本结构了!这个程序结构的基本思想就是模拟 了电梯每个时刻做的几件事情,然后将时间向后推移一个时间单位,然后再做那 几件事,于是就模拟了电梯的工作状态。以下的进一步细化工作在此不再赘述。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!