没有合适的资源?快使用搜索试试~ 我知道了~
学生成绩管理系统讲解
需积分: 9 3 下载量 182 浏览量
2018-06-25
09:45:45
上传
评论
收藏 219KB DOC 举报
温馨提示
试读
24页
这篇文章是期末节课时简单整理的,内容上可能不够完整,整体上还算齐全,基本的东西都在,希望能帮助你。
资源推荐
资源详情
资源评论
第 10 章 综合项目设计
通过前几章的学习,想必我们已经大体上掌握了 C 语言中的基础知识。这一章将循序渐
进地介绍一个小型综合应用程序的设计过程,这个程序综合运用了数据类型、结构体、数组、
函数、文件、指针等知识。这种类型程序的复杂性、工作量以及涉及的知识面都比较大,通
过它不仅可以巩固和加深读者对 C 语言基本知识的理解和掌握,更重要的是可以提高利用 C
语言的相关知识解决实际问题的能力,同时有助您了解软件设计和开发过程,为后继课程的
学习以及日后的软件设计与开发工作打下一个坚实的基础。
本章首先向读者介绍程序设计方法与风格。程序设计方法部分主要讲解了开发 C 应用程
序时用到的面向过程的结构化程序设计方法,内容包括它的思想、基本要点、设计原则及其
优点。在程序设计风格部分给出了形成良好程序设计风格应考虑的四个因素:源程序的文档
化、数据说明方法、语句的结构、输入和输出。
然后,介绍了程序开发流程。依据软件工程的理论和方法开发,系统分析、系统设计、
编码和系统测试、软件交付准备等每个环节必不可少,这样才能开发出可靠性高、易于理解、
便于维护、适应性强、高效并且满足用户需求的软件产品。
最后,详细阐述了一个简单学生成绩管理系统的开发全过程。系统具有的主要功能包括:
成绩信息的创建、保存、读取、显示、查找、添加、删除、记录排序及成绩排名和各科成绩
统计等。
10.1 设计方法与风格
10.1.1 程序设计方法
1.基本概念
程序设计方法是指在设计程序过程中所采取的系统的研究观点和方法。
程序设计方法分类:面向过程的结构化程序设计(如 c);面向对象的程序设计(如
VB、c++、Java、C#等)。面向过程的结构化程序设计是本章设计的综合程序所使用的程
序设计方法,而面向对象的程序设计本教材不予介绍。
2.结构化程序设计方法
结构化程序设计由迪杰斯特拉(E.W.dijkstra)在 1969 年提出,是以模块化设计为
中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变
单纯而明确,为设计一些较大的软件打下了良好的基础。
结构化程序设计的基本思想是采用"自顶向下,逐步求精"的程序设计方法和"单入口单
出口"的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,
将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;"单入口单出口"的
277
思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌
套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构
良好、易于调试的程序来。
(1)基本要点
① 采用自顶向下,逐步求精的程序设计方法。
在需求分析,概要设计中,都采用了自顶向下,逐层细化的方法。
② 使用三种基本控制结构构造程序。
按照结构化程序设计的观点,任何程序都可由顺序、选择、重复三种基本控制结构构造。
用顺序方式对过程分解,确定各部分的执行顺序。
用选择方式对过程分解,确定某个部分的执行条件。
用循环方式对过程分解,确定某个部分进行重复的开始和结束的条件。
对处理过程仍然模糊的部分反复使用以上分解方法,最终可将所有细节确定下来。
③ 单入口单出口。使用三种基本控制结构构造的程序一定是一个单入口单出口的程序。
(2)结构化程序设计的原则
① 自顶向下。程序设计时,采取逐层分解的方式,先总体后局部,先从最上层总目标
开始设计,逐步使问题具体化。这样,结构简单明了,各层次之间联系少,可靠性高,便于
修改。
② 逐步求精。对复杂问题,应设计一些子目标,做过渡,逐步细化。
③ 模块化。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小
目标,把每一个小目标称为一个模块。对各模块只需明确规定其输入、输出和调用方式,其
具体设计、编码和调试均有相当大的独立性。
④ 限制使用 goto 语句。应在以提高程序清晰性为目标的结构化方法中限制使用 goto
语句。
(3)结构化程序设计的优点
① 程序结构清晰,易于阅读、调试和维护。
用结构化程序设计方法设计的程序整体思路清楚,目标明确。采用结构化编程方法,将
一个复杂的程序分解成若干个子结构,便于控制、降低程序的复杂性,因此容易编写程序。
由于模块相互独立,因此在设计其中一个模块时,不会受到其它模块的牵连,同时,单入口
单出口的程序能够减少调试和查错的时间。模块的独立性还为扩充已有的系统、建立新系统
带来了不少的方便,因为我们可以充分利用现有的模块作积木式的扩展。
② 易于保证和验证程序的正确性。每个程序都是单入口单出口,程序很容易控制,不
278
会出现死循环,能够把错误控制到最低限度。
③ 提高了编程工作的效率,降低了软件开发成本。
(4)结构化程序设计的缺点
① 用户要求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题。
② 用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求。
③ 系统的开发周期长。
10.1.2 程序设计风格
是指编写程序时所表现出的特点、习惯和逻辑思路。主导的程序设计风格:清晰第一、
效率第二。
形成良好的程序设计风格,应考虑以下因素:源程序的文档化、数据说明方法、语句的
结构、输入和输出。
1.源程序的文档化
符号名的命名:既要符合语法,又要有实际含义,以便理解程序功能。
视觉组织:在程序中利用空格、空行、 缩进技巧使程序层次清晰。
正确的程序注释:序言性注释和功能性注释。序言性注释:一般位于程序的开头部分,
它包括程序标题、程序功能说明、主要算法 、接口说明、程序位置、开发简历、程序设计
者 、复审者、复审日期及修改日期等。
功能性注释:一般嵌在源程序体中,用于描述其后的语句或程序的主要功能。
2.数据说明方法——见名知义
(1) 数据说明的次序规范化
各种不同种类的数据说明的次序,最好固定下来,易于查找数据属性。
(2) 说明语句中变量安排有序化
一个语句中需要声明多个变量,应按字母顺序排列。
(3) 使用注释来说明复杂数据的结构
3. 语句的结构
一行内只写一个语句;数据结构要有利于程序的简化,程序要模块化;程序编写要做到
清晰第一,效率第二;尽量使用库函数;避免不必要的转移,避免采用复杂的条件语句;不
要修补不好的程序,要重新编写。
4.输入/输出
对输入数据要检查数据的合法性;交互式输入数据时应有必要的提示信息;应允许缺省
值,提高输入数据的效率;若用户输入某些数据后可能产生严重后果,应给用户输出必要的
提示并要求用户确认(容错处理);输入格式要简单,使得输入的步骤和操作尽可能简单;
279
当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性;输出数据
的格式应清晰、美观;输出数据时要加上必要的提示信息。
10.2 程序开发流程
大量的实践经验告诉我们,开发一个综合程序或软件必须依据软件工程的理论和方法,
严格地按照系统的开发步骤和原则进行。不进行细致认真的系统分析和设计,将严重影响系
统开发的质量和速度,甚至可能导致失败。初学者应从现在开始养成好的程序设计习惯。
10.2.1 系统分析
系统分析是软件开发生命周期的初始阶段,是综合程序设计或软件开发中确定总方向的
重要阶段。在系统分析阶段主要进行如下几方面的工作。
⑴ 收集和分析用户要求。
通过对软件的实际用户和使用部门进行深入细致的调查研究,了解程序或软件的设计目
标、系统的功能要求、预期时间进度以及可能投入的人力、物力、财力资源及其分配,了解
程序或软件处理的信息的流通渠道,并对信息量作初步估算。
⑵ 进行可行性分析。
研究在用户给定的条件下,系统的设想在技术上、经济上、运行和开发环境等方面是否
可以实现。并准确地描述用户希望解决的问题,确定系统的范围和目标,开发系统的逻辑模
型,并对系统的费用、收益进行对比,提供可行性报告。
⑶ 提供系统说明书。
当可行性报告经上级审批认可后,还要作进一步的调查研究和系统分析。根据分析结果,
写出一份能精确完整地表达用户要求的系统说明书。系统说明书一般应包括系统的业务流程
图、系统的数据流程图、数据词典、其他补充说明及附属文档等。
10.2.2 系统设计
系统设计就是根据系统分析阶段产生的资料来确定程序或软件的总体结构设计、子系统
划分和功能模块设置。一般分为总体设计和详细设计两个步骤进行。
⑴ 总体设计
总体设计也称作概要设计。在总体设计阶段,进行深入细致的调查,应用系统的结构化
设计方法,对系统进行子系统和功能模块的划分,并设计出系统总体结构图。确定各子系统
的功能,各模块之间以及模块内部的逻辑关系。绘制各于系统及功能模块的信息流程图。该
流程图包括处理过程、输入信息、输出信息和数据存储四个方面的内容,它是从实际的业务
流程发展到以计算机为中心的程序系统的转折点。此外,系统逻辑设计时还要选择适合于该
系统的硬件和软件,设计具体的配置方案。
280
⑵ 详细设计
详细设计是系统开发过程的重要阶段。在总体设计的基础上,开发者需要进行周密的软
件系统的详细设计。这一阶段所应完成的基本任务有:
① 为每个模块进行详细的算法设计,要保证算法逻辑上正确并且算法描述要简明
易懂。通常描述算法的有利工具有图形、表格、语言等。
② 为模块内的数据结构进行设计。对于需求分析、概要设计确定的概念性的数据
类型进行确切的定义。
③ 为数据结构进行物理设计,即确定数据库的物理结构。物理结构主要指数据库
的存储记录格式、存储记录安排和存储方法,这些都依赖于具体所使用的数据库系统。
④ 用户界面设计。
⑤ 程序设计。对于用 c 语言编码的程序而言,此处是指对每一层次的模块和子模
块设计出相应的功能函数的函数原型,并确定函数间的调用关系,同时依据调用关系绘
制出程序总体流程图。
详细设计应当足够详细,最后要形成《软件系统详细设计报告》,以便后续开发人员能够
根据详细设计报告进行编码。
10.2.3 编码
在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模
块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对
目标系统的功能、性能、接口、界面等方面的要求。
10.2.4 系统测试
系统测试系统测试是将需测试的软件,作为整个基于计算机系统的一个元素,与计算机
硬件、外设、某些支持软件、数据和人员等其他系统元素及环境结合在一起测试。系统测试
的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。
此处,我们仅将注意力集中在软件测试部分。
编写好的程序代码,在交给用户使用之前,需要进行严格的软件测试。软件测试有单元
测试和集成测试两个阶段。
单元测试是针对软件设计的最小单位--程序模块进行正确性检验的测试工作,其目的
在于发现各程序模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测
试用例。多个模块可以平行地独立进行单元测试。
在软件测试的过程中经常会发生这样的情况,每个模块都能单独工作,但这些模块集成
在一起之后却不能正常工作。因此需要按设计要求把通过单元测试的各个模块按照设计要求
组装在一起之后,进行集成测试。通常可以采用自顶向下或自底向上的增量式组装方法将程
序模块组装起来进行逐步测试。这时需要考虑的问题是:在把各个模块连接起来的时侯,穿
越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响;
281
剩余23页未读,继续阅读
资源评论
DUCKKING
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功