




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
成贤学院C语言课程设计综 合 程 序 设 计(C短学期课程)成贤学院计算机课程小组朱金付二O一一年八月目 录第一部份软件工程一、需求分析二、系统设计三、编码实现四、系统测试五、运行维护第二部份干部招聘录用系统一、题目与要求二、画数据流图三、画模块结构图四、详细设计 (VC+语言)五、编程(略)第三部份成绩评定标准第一部份软件工程 1968年,北大西洋公约组织的学术会议第一次创造了“软件工程”一词,提出“软件工程”概念。通过工程化的方法来开发软件,解决软件危机。三十年余年来,尽管软件的差错就象汽车一样时有抛锚的时候,但软件的发展速度远远超过了任何传统工业,而期间并未出现真真的软件危机。这在很大程度上归功于“软件工程”。如今软件工程成了一门学科。 软件工程简单的讲,主要讲述软件开发的道理,基本上是软件实践者的成功经验和失败教训的总结。软件工程的观念、方法、策略和规范都是朴实无华的,平凡之人皆可领会,而关键在于运用。软件工程方法是应该事先掌握,在整个软件设计过程中都必须遵照执行的,而不能把它看成是事后解决问题的锦囊妙计,对预料将要出现的问题,必须控制每个实践环节,防患于未然。研究软件工程将随着软件工程的开始,直到软件被废弃研究工作才结束。 软件工程中最基本的概念是软件生命周期。一个软件从定义到开发、使用和维护,直到最终被废弃,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。软件生存周期就是从提出软件产品开始,直到该软件产品被淘汰的全过程。软件生命周期是指软件产品或软件系统从产生、投入使用到被淘汰的全过程统。通常,将软件生命周期分为五个阶段:需求分析、系统设计、编码实现、系统测试和运行维护。 需求分析和系统设计是软件开发过程中最核心的活动。典型的针对需求分析和系统设计的软件开发方法有:结构化分析方法、面向数据结构的方法和面向对象方法。 结构化分析方法(structured analysis,简称SA)是一种面向数据流进行需求分析的方法,适合于数据处理类型软件的需求分析。结构化分析方法使用数据流图DFD与数据字典DD来描述,面向数据流问题的需求分析适合于数据处理类型软件的需求描述。其核心思想是分解化简问题,将物理与逻辑表示分开,对系统进行数据与逻辑的抽象。下面的需求分柝和系统设计就是以结构化分析方法为前提的。 面向数据结构的方法是结构化方法的变形,它注重数据结构而不是数据流,是从数据结构方面分析,即分析信息结构,并用数据结构图来表示,在此基础上进行需求分析,导出软件的结构。其特征是:信息结构是层次式;数据结构的表达要求用顺序、选择、重复等合成构造;具有将层次式数据结构映射到程序结构的映射机制。面向对象方法我们在后面单独介绍。(该部分内容摘自于大学计算机基础基本概念及应用思维解析,沈军、朱敏等,高等教育出版社一书)一、需求分析 需求分析是获取需求定义(equirement Specification)并生成功能规约(Functional Sp。cification)。需求分析主要着眼于预期的系统应该“做什么”,并为需求做个注释“为什么?”,这样可让程序员了解需求的本质,以便选用最合适的技术来实现此需求。其次需求说明不可有二义性,更不能前后相矛盾。如果有二义性或前后相矛盾,则要重新分析此需求。 需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。 数据流图是描述数据处理过程的工具。以图形的方式刻画数据流从输入到输出的传输变换过程,同时描述了系统的逻辑处理的功能。 数据流图基本符号有: 用来表示数据输入的源点和数据输出的汇点(终点) 用来表示数据加工、处理 用来表示数据流(动态数据) 用来表示数据存储(静态数据)【例1】 学生试卷处理子系统的数据流图(图1):阅卷试卷分析 成绩表 输入试卷 成绩分布图 计算 试卷难易度 标准答案 成绩通知单 学生表图l 说明:图中圆圈表示阅圈和成绩的数据处理。图中两个横线间的成绩册和学生名册是存储在存储介质中的文件。 数据流图具有抽象性、概括性、层次性等特性。画数据流图的基本步骤概括地说,就是自外向内,自项向下,逐层细化,完善求精。 数据流图的分层 对一个大型的系统,如用一张数据流图画出所有的数据流和加工,则图纸将极其庞大复杂,因而难以理解。为了控制复杂性,结构化分析方法方法采用“分层”的技术。一套分层的数据流图由系统关联图、顶层(第一层)、第二层、第三层等组成。项层图说明了系统的边界,即系统的输入和输出数据流,项层图只有一张。第二层的数据流图描述了某个加工的分解,而它的组成部分又要进一步被分解。所以有第三层或更多,系统有多少层,是根据系统的复杂程度决定的,有的小系统可能只有第二层,而大系统可能有更多层(图2)。 系统关联图确定了从外部项到系统的数据流和从系统向外部项的数据流。这些数据流在其它层次的数据流中不允许减少,也不允许增加。各层次内部的数据流不受关联图的限制。 画分层数据流图要遵循的最基本原则: A数据流程图必须包括系统关联图、系统顶层和第二层数据流程图,第三层或更多根据需要确定。 B数据流应有名字。 C数据流程图的分解中,必须保持每个分层同其上层加工中的输入输出流相一致。 D数据存储之间不得出现未经加工的数据流。 E若有查询处理,应在数据流程图中表达。 F统计和打印不在数据流图中表达。 G不要把控制流作为数据流。 H忽略琐碎的枝节。S 顶层12 32.12.22.33.13.2 2层3层图2【例2】数据流图的分层图:a 顶层数据流图(图3)考生考 务处理系统考试中心考试系统 报 名 单 统计分析 准 考 证 成绩通知单 合格标准 考 成 生 绩 名 清 单 单 图32数据字典 数据字典是关于数据的信息的集合,对数据流程图中的各个元素做完整的定义与说明,数据字典是数据流程图的补充工具。数据流图和数据字典共同构成系统的逻辑模型。 数据字典的内容 数据字典的主要内容有六项: 数据流:应包括数据流名称、来源、去处、组成、流量等。 数据项:数据项也称数据元素,是数据“不可再分”的最小组成单位。应包括数据项名称及编号(数据项名称必须唯一地标识这个数据项,以区别于其他数据项)、别名、取值的范围和取值的含义、长度等。 数据结构:应包括数据结构的名称及其编号、组成等。如果是一个简单的数据结构,只要列出它所包含的数据项(即成员)即可。 数据存储:数据存储是数据结构保存的场所。主要内容有数据存储的名称及其编号、流入、流出的数据流、组成等。 处理逻辑:应包括处理逻辑的名称及编号、简述(对处理逻辑的简明描述,使人了解这个处理逻辑是做什么用的)、处理逻辑的输入和输出、主要功能及相关的一些说明等。 外部实体:外部实体是系统的“人机”界面,也就是系统的数据流由外部实体流入,或者系统的数据 定义数据的方法 数据字典中的定义数据,是对数据自顶向下的进行分解,当分解到数据甜不可再分”的时候,数据的分解过程就结束了,也就是数据项就确定下来了。所以数据元素是数据的基本单位。 数据字典的用途 数据字典是关于数据的信息的集合。它是对数据流图中新包含的所有元素的定义的集合。在软件分析和设计的过程中,数据字典给设计者提供关于数据的描述信息,所以数据字典是分析阶段的有用工具。 数据字典的特点 (1)可以通过名字能方便地查阅数据的定义; (2)没有记录; (3)尽量不重复在规格说明的其他组成部分中已经出现的信息; (4)容易更新和修改; (5)能单独处理描述每个数据元素的信息;(6)定义的书写方法简单,方便而且严格;二、系统设计 系统设计是把需求转化为软件系统的最重要的环节:系统设计的优劣在根本上决定了软件系统的质量o:系统设计主要着力于系统“如何做”,它包含如下四方面内容:体系结构设计、模块设计、数据结构与算法设计、用户界面设计。在系统设计时,通常分为概要设计和详细设计两个阶段。详细设计产生程序员可用的模块说明,即数据结构说明及加工描述。 1概要设计 概要设计建立整个软件体系结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义等。概在概要设计过程中,复审系统计划与需求分析,确定系统具体的实施方案,构建软件的体系结构。概要设计还要确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。要确定各模块间的联系,确定数据结构、文件结构、数据库模式,以及确定测试方法与策略。 体系结构设计 体系结构是软件系统中最本质的东西,它是对复杂事物的一种抽象。良好的体系结构是普遍适用的,它可以高效地处理多种多样的个体需求。体系结构设计时应在一定的时间内保持稳定。 软件体系结构已经在软件工程领域中有着广泛的应用,但迄今为止还没有一个被大家所公认的定义。体系结构(Architcture)_词在英文里就是“建筑”的意思。我们把Dewayne Perry和Alex Wolf的定义作为参考:软件体系结构是具有一定形式的结构化元素,耳p构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来:这,定义注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持。 体系结构有许多种,包括常用的层次结构。 层次结构是把比较复杂的事情,进行分层,然后层一层地去完成。在实现时,高层的工作总是建立在低层的工作之上。层次关系主要有两种:上下层关系和顺序相邻关系。 上下层关系非常常见,如学校的组织结构,最高层是学校,下面院系,院系下面是学系。在权限上学校的权限高于院系,学校可以指挥院系,而反过来不行。 对于顺序相邻关系,我们可以把计算机网络的OSI参考模型来理解, OSI有七个层次,在通讯时,只能在相邻两层之间发生,信息只能被一层一层地顺序传递下去。发送方和接收方传递的方向刚好相反。 体系结构设计要求:通过分层,把每个功能逐步独立起来,并且保证每个功能都有相应的模块来实现;要确定模块间的调用关系,对模块间接口做总体描述,明确模块间信息的传递。 模块设计 在设计好软件的体系结构后,宏观上就明确了各个模块应具有的功能,在哪一个层次上,与其他功能模块的关系。我们习惯从功能上划分模块,保持“功能独立”是模块化设计的基本原则。因为,“功能独立”的模块可以降低开发、测试、维护等阶段的代价。但是“功能独立”并不意味着模块之间保持绝对的孤立。一个系统要完成某项任务,需要各个模块相互配合才能实现,此时模块之间就要进行信息交流。模块设计主要说明每个模块“做什么”、简要说明数据输入、输出、处理逻辑、与其它模块的接口,与其它系统或硬件的接口等联系。 评价模块设计优劣的三个特征因素:“信息隐藏”、“内聚与耦合”和“封闭、开放性”。 信息隐藏:是尽量避免某个模块的行为去干扰同一系统中的其它模块,在我们学习面向对象程序设计,类的封装性就是为了实现信息隐藏。 内聚与耦合:内聚(Cohesion)是一个模块内部各成分之间相关联程度的度量。耦合(C0upling)是模块之间依赖程度的度量。内聚和耦合是密切相关的,与其它模块存在强耦合的模块通常意味着弱内聚,而强内聚的模块通常意味着与其它模块之间存在弱耦合。模块设计追求强内聚,弱耦合。 封闭、开放性:如果一个模块可以作为一个独立体被其它程序引用,则称模块具有封闭性。如果一个模块可以被扩充,则称模块具有开放性。 模块的“封闭、开放性”实际上对应于软件质量因素中的可复用性和可扩充性。采用面向过程的方法进行程序设计,很难开发出既具有封闭性又具有开放性的模块。采用面向对象设计方法可以较好地解决这个问题。 2详细设计 详细设计的目的是为软件中的每一个模块确定使用的算法和块内数据结构,并用某种选定的表达工具给出清晰的描述。主要任务: 为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述; 确定每一模块使用的数据结构; 确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。三、编码实现 编码实现是将设计结果转化为可执行的程序代码,这是程序员的主要任务。 要将设计结果转化为语言代码,首先必须正确理解需求分析中要求“做什么?”。要详细阅读概要设计书和详细设计书,明确自己需要完成的模块和其他模块之间的联系(接口规范),外部提供的数据元素和自己输出的数据元素等。一个大的系统是由一个团队共同协作完成的,必须完全按照设计书的要求来完成相应模块的程序编码。 一个好的程序编码,在完成模块功能的前提下,应该做到程序简单易懂、运行可靠、性能稳定和执行效率高等特点。 1在编码实现过程中还应该注意做到: 所使用的标识符应有一定的约定,尽可能采用有一定含义的名字,可以顾名思义; 在程序设计时,尽可能加上注解; 书写格式要规范,采用缩进等格式; 这样,可以便于阅读和理解程序,为今后维护提供便利条件。 2采用标准的控制结构 根据详细设计的流程,采用标准的和详细设计要求一致的分支和循环结构,不准随意的用goto语句或多余无效的循环等。 3数据输入、输出要求 数据的在输入、输出过程中,要求做到: 人机操作界面要友好,操作方便,对于前后界面之间、相同类似操作界面间等风格要一致。如Windows有相同风格的窗口界面,相同的对话框界面等。 从外部提供的数据(输入数据)要进行合法性或有效性检查,防止无效数据输入。如性别输入,只有男或女两者之一,在输入时应根据约定只能提供男女两种数据形式。 如果数据是根据约定输入(是为了方便数据的输入),应该提示相关约定信息。如性别输入时用M表示男,用F表示女,则在输入时,应该包含上面的约定信息。 输入的数据格式尽可能和日常的表示方式一致。如日期,我们通常的表示是年月日格式。 数据输出时,尽可能输出易懂的信息,如果是符号,要提示符号的约定。如性别输出是应该输出男或女,如果输出的是符号,则需说明M表示男,F表示女,便于别人理解。 程序要具有“傻瓜”功能,不会因为用户输入信息等环节偶然的错误,而导致程序非正常退出。 除此之外,还可以提供在线帮助等方式,来方便用户使用。四、系统测试 系统测试就是通过测试活动使软件系统达到需求时提出的各项要求,检测和排除错误。测试总是在假设程序中存在缺陷的前提下,再通过执行程序来发现并最终改正缺陷。 世界上没有完美无缺的程序,任何程序都或多或少的存在错误,系统测试的目的是尽可能多的去发现程序所存在的错误,提高程序的质量。 要尽可能多的发现程序中的错误不是一件轻而易举的事情。需要找到相关的测试的方法,而要找出系统中所有的错误,那只是一种设想。试想一下目前我们使用非常广泛的Windows操作系统,还一直被程序的许多漏洞所困扰,微软一直在提供相关的补丁,使系统能稳定的运行。 测试一个系统,一定要明确是寻找系统中的缺陷和错误,如果是去证明系统的正确性,那么测试的时候,就会按照系统的流程去测试,这样就不可能发现程序中的错误,这样的测试是毫无意义,也是没有必要的。一个成功的测试示例在于发现了至今尚未发现的缺陷。 对一个系统的测试内容有: 功能性测试:测试软件功能是否满足设计要求,当给定合理的数据输入,系统能否得到预期的结果。功能性测试是系统成立的前提。 容错性测试:当给定的数据偏离合理数据范围时,系统能否正常运行而不至于系统瘫痪或不会得出啼笑皆非的结果。 性能与效率测试:性能与效率测试主要是测试软件的运行速度和对资源的利用率。一个好的系统应该尽可能低的占用计算机资源,且运行效率高。 易用性测试:系统提供的使用方法是否方便。一个好的系统应该有好的应用界面,使用户操作方便、输入输出直观。 当对系统进行具体测试时,有多种测试手段: “白盒测试”是指开发人员从程序内部对上述内容进行测试。“白盒测试”针对程序内部逻辑结构,对所有逻辑路径进行测试。测试时,从检查程序的逻辑着手,得出测试数据。 “黑盒测试”(又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。五、运行维护 运行维护是将系统投入运行,并对投入运行的软件进行修改调整,使软件系统能适应外界环境的变化、实现功能扩充和质量改善。 前面我们已经提到,系统不可能是完美无缺的。当系统投入使用后,系统中的缺陷就会不断暴露出来,系统投入使用的开始,也是系统不断维护的开始。系统维护的终结,也是系统“死亡”的时刻。 维护主要分三类: 纠错性维护:由于前期的测试不可能揭露软件系统中所有替在的错误,用户在使用软件时仍将会遇到错误,诊断和改正这些错误的过程称为纠错性维护。 适应性维护。由于新的硬件设备不断推出,操作系统和编译系统也不断地升级,为了使软件能适应新的环境而引起的程序修改和扩充活动称为适应性维护。 完善性维护。在软件的正常使用过程中,用户还会不断提出新的需求。为了满足用户新的需求而增加软件功能的活动称为完善性维护。参考资料:1本章的部分内容引用了浙大林锐博士的软件工程思想。2沈军、朱敏、徐冬梅、翟玉庆编著大学计算机基础基本概念及应用思维解析高等教育出版社第二部分 干部招聘录取系统一 题目与要求1.1 题目:招聘干部录取系统设某市公开招聘5名副局长。招聘过程中要进行4项笔试(政策法律基础、语文、英语、计算机基础)和一项口试(考察处理问题能力)。录取时对于年龄在3055的应聘者按总分从高到低录取。总分的构成如下:4项笔试分(百分制);口试分(百分制)乘2;学历分;年龄分;工作经历分。后三种分数的计算方法如下: 学历分:博 士硕 士本 科其 它 100分75分50分0分年龄分:55 岁50 岁40 岁35 岁30 岁70分75分100分80分70分其它年龄(可以有小数部分)的分数按线性插值确定。工作经历分(仅考虑任科级干部年限): 0年1年2年6年6年以上0分70分 100分 20分 0分其它年龄(可以有小数部分)的分数按线性插值确定。用VC+语言实现招聘干部录取系统。该系统在磁盘上存贮如下信息:1、应聘者报名表。表中记录了每位应聘者的有关信息,其中包括:姓名、性别、出生年月、最后学历、任科级干部有多少年月、现工作单位。2、每位应聘者5项考试的成绩。该系统的功能如下:1、 输入应聘者的信息和5项考试成绩;2、 输出按总分从高到低排列的成绩表,表项有姓名、8项分数、总分。设应聘者不超过50名;3、 输出5份录取通知书;4、 查询某人的8项分数和总分。1.2 综合程序设计要求一、 文档1、 需求说明书(分层的数据流图、数据词典、小说明);2、 模块结构图,每个模块的说明;3、 每个模块的算法及使用的数据结构;4、 每个模块的编码和整个程序的编码;5、 各模块的测试用例及测试结果;6、 使用手册。二、 程序1、 设计若干命令以表示要求程序执行相应的功能;2、 输入到程序的数据名称及格式应通过提示信息告诉用户。能拒绝非法数据,同时给出重新输入数据的提示。当输入数据量很大时,应建立磁盘文件,以便重复演示程序功能;3、 程序的运行结果要以清晰可读的形式显示出来,并可打印及存贮,以便查阅。二 画数据流图2.1 顶层数据流图应聘截至日期 成绩总表招聘干部录取系统应聘者信息和考试成绩 录取通知书表被查询人姓名 被查询者个人成绩 图1 招聘干部录取系统数据流图(第0层)相应的数据词典条目:1、数据流名:招聘截止日期组 成:年月2、数据流名:应聘者信息与考试成绩组 成:个人信息考试成绩1n注 :n为应聘人数:n50。3、数据流名:成绩总表组 成 :姓名个人成绩1n注 :按总分从高到低排列。4、数据流名:录取通知书表组 成:姓名被录取的信息15注:1.总分前五名的录取通知单。2.若应聘者不足五人,按实际人数处理。5、数据流名:被查询者的个人成绩组 成:姓名个人成绩6、数据项名:个人信息组 成:姓名性别出生年月最后学历工作年限现工作单位注 :工作年限指任科级干部的年月。7、数据项名:考试成绩组 成:政策法律基础成绩语文成绩英语成绩计算机成绩口试成绩8、数据项名:个人成绩组 成:考试成绩学历分年龄分工作经历分+口试分9、数据项名:总分组 成:考试成绩学历分年龄分工作经历分口试分2.2 第一层数据流图读入输出信息处理读入1*信息 总表应聘者信息和考试成绩成绩总表信息处理录取通知书招聘截止日期123被查询者成绩 1*:成绩总表应聘者人数 被查询人姓名图2 招聘干部录取系统数据流图(第一层)数据流名:信息总表组 成:个人信息考试成绩* * *+招聘截止年月文 件 名:成绩总表组 成:姓名个人成绩组 织:按总分从高到低顺序。加 工 名:读入编 号:1激发条件:需招聘成绩表,或需要确定干部录取情况,或需要某指定者的成绩加工逻辑:1将“应聘者信息与考试成绩”读入信息总表中 2读入招聘截止年月2.3 关于加工“信息处理的”的分解 初步成绩表计算填表信息总表排序 成绩总表 应聘者人数2.12.2图3 加工“信息处理”的分解文件名:初步成绩总表形成:姓名个人成绩已填入的应聘者个数。加工名:计算填表编号:2.1激发条件:信息总表已经形成加工逻辑:将应聘者的学历、年龄和工作年限计算成学历分、年龄分和工作经历分,并计算总分,将应聘者所有成绩填入初步成绩表中。加工名:排序编号:2.2激发条件:初步成绩总表按总分高到低排序加工逻辑:按总分的高低从高到低排列个人成绩和姓名。2.4 关于加工“输出”的分解 3.1输出成绩总表 成绩总表3.2输出录取通知书成绩总表应聘者人数录取通知书3.3输出被查询者成绩被查询者成绩 被查询人姓名 图4 加工“输出”的分解2.5 系统数据流图输出成绩总表打印成绩总表应聘者信息和考试成绩 初步成绩表排序计算填表读入1*信息总表输出录取通知书1*1*输出被查询者成绩询者成绩招聘截止日期 被查询人姓名1*:成绩总表应聘人数图5 招聘干部录取系统数据流图三 画模块结构图从图5可以看出,从2.1到2.3均为信息处理部分,可视作系统的中心变换部分。那么从加工1至加工2.1的“信息总表”便是系统的逻辑输入,从加工2.3到文件成绩总表的数据流程便是系统的逻辑输出。我们为中心变换部分和其前、后的部分各设计一个模块,因此可画出系统顶层的模块结构图。输 出读 入信息处理干部招聘主模块成绩总表信息总表信息总表成绩总表图6 系统顶层模块结构下面考虑三个第一层模块的下属模块。由于输入的功能就是“读入”加工的功能,将招聘截止年月和应聘者信息与考试成绩读入信息总表中,比较简单,不用为其设立下属模块。现将其更名为“读入”模块。再设计“输出”模块的下属模块。根据系统要求,输出模块应根据用户要求完成“打印成绩总表”、“打印录取通知书表”和“模块的下属模块”。根据系统要求,输出模块应根据用户要求完成“打印成绩总表”、“打印录取通知书表”和“打印被查询者个人成绩”三项功能中的一项或几项,所以可为“输出”模块建立如图7所示的三个模块。下面考虑设计“信息处理”模块的下属模块。从图3的数据流图可见,可为“信息处理”模块设立两个下属模块:“计算填表”和“排序”。前一个模块完成计算各项分数并填入初步成绩表,循环调用该模块直至填表完毕。至此,我们可以画出整个软件的模块结构图。如图9。其中每一个模块都用了一个表示符合给予命名。下面列出各模块的功能说明:输 出成绩总表应聘人数输出录取通知书表输出成绩总表输出被查询者成绩成绩总表成绩总表应聘人数 应聘人数成绩总表应聘人数 排序计算填表图7 输出模块下属模块信息总表 应聘截止日期 成绩总表信息处理填入初步成绩表填入成绩表 已填入人数 信息总表 成绩总表 应聘人数图8 “信息处理”及其下属模块信息处理TREATINF干部招聘主模块INVCAD输出被查询者成绩PRNPER输出成绩总表PRNMARK输出录取通知书表PRNINF排序ARRANGE计算填表CALFILL输出EXPORTION读入READIN信息总表成绩总表应聘者个数信息总表应聘截止日期成绩总表 填入初步成绩 填入成绩表应聘人数已填入人数成绩总表 成绩总表信息总表 应聘人数 成绩总表应聘人数成绩总表应聘人数被查询者姓名图9 系统的模块结构图3.1 干部招聘主模块模块名:INVCAD输入:、输出:功能:建立成绩总表调用以下模块:READIN、TREATINF、EXPORT3.2 模块模块名:READIN输入:、输出:功能:将、存入指定的中。调用以下模块:无注释:该模块与数据流图中的加工对应。3.3 模块模块名:TREATINF输入:、输出:功能:将中信息折算成成绩,并按总分从高到低排成。调用以下模块:CALCUT、FILLIN、ARRANGE注释:该模块与数据流图中的加工对应。3.4 模块模块名:EXPORT输入:、输出:、和中的一项或几项的屏幕形象或纸面现象。功能:将、和中的一项或几项在屏幕或打印机上显示出来。调用一下模块:PRNMARK、PRNINF、PRNPER注释:该模块与数据流图中的加工对应。3.5 模块模块名:CALCUT 输入:、输出:、功能:根据当前的一个应聘者的信息,计算出他的个人成绩,填入表中。调用一下模块:CALAGE、CALWORK注释:该模块与数据流图中的加工对应。3.6 模块模块名:ARRANGE输入:、输出:功能:将按总分从高到低排序。调用以下模块:无注释:该模块与数据流图中的加工对应。3.7 模块模块名:PRNMARK输入:、输出:的屏幕形象或纸面形象。功能:将在屏幕或纸面上显示出来。调用以下模块:无注释:该模块与数据流图中的加工对应。3.8 模块模块名:PRNINF输入:、输出:的屏幕或纸面形象。功能:将在屏幕或纸面上显示出来。调用以下模块:无注释:该模块与数据流图中的加工对应。3.9 模块模块名:PRNPER输入:、输出:的屏幕或纸面形象。功能:将在屏幕或纸面上显示。调用以下模块:无注释:该模块与数据流图中的加工对应。四 详细设计(C语言)4.1 主模板先考虑主模块的数据结构,根据数据词典的说明,容易设计出这些数据的类型和相应的变量。struct Tdate 招聘截止日期 int year; int month;struct Tmark 考试成绩 float pol; 政治 float chn; 语文 flaot eng; 英语 float com; 计算机 float oral; 口试;struct Tinform 应聘者个人信息 char name20; 姓名 char sex; 性别 float age; 年龄 char schoolrecord; 学历 float worklen; 任科级干部年限 char wordsite60; 现工作单位 Tmark mark; 考试成绩;struct Tmarks 应聘者信息和考试成绩 char name20; 姓名 float Sage; 年龄分 float Srecord; 学历分 float Swlen; 工作经历分Tmark mark; 考试成绩 float total; 总分; ifstream Inflist; 信息总表文件Tmarks Tmarklist50 成绩总表Tmarks marklist;char Sourcefile20 外部文件名注:文件操作由于多为结构体数据,因此建议使用二进制文件操作方法;主模块算法模块名:INVCAD输入:、输出:指令:输出系统的初始界面输出菜单界面开提示窗口,要求用户输入选择项 dowhile()招聘干部录取系统1 输入应聘者信息2 结果输出3switch(I)case 1: 调用读入模块,建立文件 break;case 2: 调用输出模块break;case 3: exit(0)default: break;4.2 模块该模块与加工1对应。它先读入招聘截止日期,再依次读入应聘者的各项信息,同时对信息作鉴别,看是否合理。读完一个应聘者的所有信息后将其全部再屏幕上显示出来,供输入者复核。该模块涉及的数据基本上再主模块理定义了,其它定义如下: Tdate STOP,BIRTH,WORKTIME; 招聘截止年月,出生年月,工作年限 float ALEN; 年龄char JUDGE; 判断是否正确:Y/NTinform INF; 信息总表的一个元素的内容float STOPLLINE; 招聘截止时间int I; 应聘的人数“读入”模块算法(每输入一位应聘者信息,将其保存在外部文件 filelist.dat中)模块名:READIN输入:、输出:指令: 读入招聘截止日期; I=0; while(!infile.eof( ) 读入姓名; 读入性别,鉴别;读入学历,鉴别;读入工作地点;读入出生年月,鉴别;读入工作年限,鉴别;读入考试成绩,鉴别;读入工作年限,鉴别;读入考试成绩,鉴别;输出所有信息,确认有无错误;将信息写入文件I=I+1;4.3 信息处
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 桥梁施工事故应急处理方案
- 2025年模型水印嵌入算法对比试题(含答案与解析)
- 2025年乡村振兴基础设施建设项目资金申请的城乡规划与设计报告
- 建筑结构优化设计方案
- 面包原料的供应链管理与优化
- 保障性租赁住房共享空间设计方案
- 乡村振兴背景下农村金融服务的优化路径
- 跨学科实践:制作简易热机模型教学设计-2025-2026学年人教版(2024)九年级物理全一册
- 茶楼麻将馆经营方案
- 2025年县域消费金融市场前景预测与应对挑战策略报告
- 系统功能使用说明及教程
- 课件:《马克思主义基本原理概论》(23版):第五章 资本主义的发展及其趋势
- 2025年轻型民用无人驾驶航空器安全操控(多旋翼)理论备考试题(附答案)
- 2025年护士执业资格考试题库(精神科护理学专项)护理法律法规试题汇编
- 《金融行业客户服务礼仪培训》课件
- 测绘地理信息从业人员保密知识培训
- 智慧水利方案介绍课件(共31张课件)
- 2024-2030年中国眼镜盒市场发展趋势及前景规划调研报告
- 国庆节详细活动方案
- 第八章新时代坚持和发展中国特色社会主义的重要保障-2024版研究生新中特教材课件
- 糖尿病课件教学课件
评论
0/150
提交评论