c 课程设计题目及说明

发布 2022-10-04 09:08:28 阅读 8197

基于记录的应用程序设计。

一.问题描述:编写一个应用程序实现程序化教学,程序必须完成以下功能:

向学生提问题;

从学生处获得答案;

根据学生的答案继续选择下一个问题。

二.在该应用程序的概要设计中,从以下几个方面进行考虑:

如何在你的程序中表示程序化教学课程所需的信息?在设计阶段,需要开发一个合适的数据结构,它可以是记录和数组的结合。

课程的数据文件是怎样的?(数据文件由所教授课程的老师编辑操作而非程序员)

如何将数据文件使用的外部表示转换为内部表示?

如何编写程序对数据库进行操作?

三.问题的框架:

程序运行的基本操作步骤如下:

提出当前的问题:一个问题可以有一行或多行文本组成,这些文本可以用字符串表示;

从学生处获取答案:答案也可以由字符串表示。

查看为该问题准备的一系列答案:如果学生的答案在上述答案中列出,则参考数据结构来选择新的问题。如果学生的答案与提供的答案不符,则告知学生结果并提供另一次机会回答问题。

四.数据的表示。

为使该应用程序拥有较好的可移植性,关于某门课程的所有信息必须存入一个数据文件中,而不是直接将它们写入程序。程序的任务是读取数据文件,在内部数据结构中存储信息并处理该结构。设计数据结构的过程包括两个步骤:

首先,需要设计一个供程序使用的内部结构。内部数据结构由自定义结构体类型定义组成,其中结合了数组和记录,因而可以反映真实世界中信息的组成方式。

其次,需要设计能够反映数据文件中信息如何存储的外部结构。

这两个步骤是紧密关联的,主要是因为他们表示同样的信息。但是这两种结构是为了不同目的而设计的,内部结构应便于程序员使用,而外部结构需要为课程设计者服务,不会在程序操作方面遇到太多困难。

一) 设计内部表示。

先设计一个包含了必需信息的数据结构,用自顶向下的方法从最高层的结构开始设计,再逐渐增加细节并完善。数据库的设计中有一个重要概念—封装:将相关的信息结合起来放入结构中,并作为整体处理。

对于一个大型数据库来说封装的过程是有层次的,且必须在每一个层次上考虑细节。在最高层,需要将整个数据库作为一个变量考虑,它包含了所需的全部信息。如下图所示,将数据库表示为指向某结构的指针,该结构的内容留待后面考虑。

当你需要将整个数据库传递给函数时,你只需传递变量db即可,这是一个易于操作的指针,利用它可以访问其他数据,只有当函数需要对数据库中个别成员进行操作时,才需要查看结构中的细节。

课程数据库由标题和问题组成。

问题由文本组成,其中包括多行文件以及一系列可能的答案,这两个结构都可由数组表示,问题的文本是字符串的数组,每一个字符串包含了一行的内容。而答案存储在一个结构较为复杂的数组中。

通常情况下,需要提供一个机制来追踪数组的有效大小,通常比所分配的空间小一些。记录有效大小可以利用下面两种方式:

可以在数组的最后一个只后面增加一个标记值;

可以将元素的个数存入一个整型变量,并将其作为记录的一部分。

每个问题的答案通常由下面的内容组成:标准答案以及相应的下一个问题。标准答案为一个字符串,而下一个问题可以有存放了问题编号的变量表示。相应的结构如下图。

二) 设计外部结构。

在对数据的内部结构进行定义之后,就要决定如何在数据文件中表示相同的信息。文件只有文本组成,c语言中有数据结构的层次决定的数据组织显示必须通过对文件格式的设计表示出来。文件结构的设计也必须便于编辑,以便在操作人员不是程序员的情况下方便他们的使用。

因此必须选择尽可能简单的表示方式。最简单的方法是依次写出每个问题,以及可能的答案。为了使计算机能够将每个问题区分开来,需要定义某些规则来区别每个问答单元。

比如使用一个空行,在大多数的文件结构中也都使用空行。这样,有空行隔开的每个单元中,就包含了问题和答案的数据信息。

一个问答单元都包含哪些内容呢?首先,包含问题的文本,文件中的若干行构成了一个问题。我们同样也需要用某种方式表示问题的结束,对程序员和课程编写者来讲,最简单的方法是定义一个标记值,在这个程序中,可以选定用五个 “-来表示文件结束。

另外,程序同样需要允许课程设计者指明答案/下一个问题的配对方式:在一个数据行中先列出答案的文本,然后用冒号分隔,再跟随下一个问题的序号。因此数据文件中的一个问答单元如下图所示:

如果输入“对”,则程序继续提出问题3,如果输入“错”,则程序跳至问题5.

五.编写程序**。

决定了内部数据结构以及外部文件格式后,将整个任务分解成单独的函数,并对他们进行逐步精化就可以了,完整的程序存储在文件teach .cpp中。在设计程序**是注意以下问题:

程序怎样利用外部数据文件中的数据创建内部数据结构?

程序如何运用内部的数据结构处理每个问题?

六.基于数据驱动设计方法的重要性:

程序将从数据文件中接收所需的全部数据,该应用程序所提出的问题,接受的答案以及问题的顺序等信息全部来自外部数据文件,而不是程序本身。根据从数据库中获得信息而运行的程序称为数据驱动程序。与将所有信息包含在程序设计过程中的程序相比,数据驱动的程序通常较短,较灵活,且较容易维护。

我们只需运行程序就可以理解这样的数据驱动系统的灵活性,按照这个项目最初的目标,程序应该用于传统的程序化教学,如文件最开始的几个问题见下图:

当程序与这个文件结合应用时,得到结果见下图:

由于这是一个数据驱动的程序,所以同样一个程序可应用于不同的环境中。程序与不同的数据文件结合,该程序的目的与运行结果与大相径庭,虽然程序没有任何改变,但程序化教学的课程可以变为一个设计好的游戏或心理测试问卷等,唯一的差别仅在于数据文件不同。

C语言课程设计题目及报告

1 课程设计题目。2 程序清单。3 数据结构设计 采用数组 维数 指针 结构体等哪一种进行数据表达形式,简述原因。4 算法设计 如查找采用折半法 排序采用冒泡法等给出算法的主要思想。5 程序纠错过程 对从程序初次运行到运行成功过程中,所显示的错误信息与改正使用的方法。在本系统的设计中,主要实现如下一...

C 课程设计题目

课程设计。一 题目 在下列题目中,任选一题 1.掷骰子游戏设计。2.用c 语言设计求解线性规划的单纯形法3 采用面象对象技术实现一个货币系统4.制作一个电子课程表。5.实现一个电梯实时状况模拟程序6.学生成绩管理系统7.图书管理系统。二 文档要求。1 需求分析 要求实现的功能和实现方式 2 系统总框...

C课程设计题目

面向对象的程序设计 c 课程设计题目。姚远2011 12 16 使用专业 班级 计科10 信管10 计网 计应 软件10级。说明 以下各题的实现技术不包括任何数据库访问技术,如等。部分题目需要通过各种集合类完成数据在内存中的存储 集中管理。每题采用分层架构模式来完成。均需自行设计类,windows窗...