
C语言程序设计 赵晓阳
赵晓阳

第12章C语言项目实训 ·21系统需求分析 ·122系统设计 ·12.3设计代码
第12章 C语言项目实训 12.1 系统需求分析 12.2 系统设计 12.3 设计代码

12.1系统需求分析 ·在一个软件开发的工程中,我们首先要做的第一步就是对系统进行需 求分析。系统分析文档应该是体现系统灵魂的文档,从中应该可以清 晰的体现出整个系统是一个什么样的系统,需要设计完成的包括哪些 功能。以学生成绩管理系统为例,最简单最基本的系统分析文档可以 设计如下: ·本系统是一个综合性系统,完成对各种学生成绩的综合管理,需要具 备如下的基本功能:输入学生基本信息(学号、姓名、6门课成绩、 总分和平均分)、添加、修改、删除、查询、插入、浏览学生的基本 信息,按照学生的成绩总分排序学生成绩。具体功能的描述如下: 下一页返回
12.1 系统需求分析 在一个软件开发的工程中,我们首先要做的第一步就是对系统进行需 求分析。系统分析文档应该是体现系统灵魂的文档,从中应该可以清 晰的体现出整个系统是一个什么样的系统,需要设计完成的包括哪些 功能。以学生成绩管理系统为例,最简单最基本的系统分析文档可以 设计如下: 本系统是一个综合性系统,完成对各种学生成绩的综合管理,需要具 备如下的基本功能:输入学生基本信息(学号、姓名、6门课成绩、 总分和平均分)、添加、修改、删除、查询、插入、浏览学生的基本 信息,按照学生的成绩总分排序学生成绩。具体功能的描述如下: 下一页 返回

12.1系统孺求分析 ·1.学生记录的输入:输入内容包括学号、姓名和6门课成绩。 ·2.追加学生记录:用于继续添加学生的基本信息。 ·3.修改记录:可以修改学生的基本信息。 ·4.删除记录:可以删除指定学生的基本信息。 ·5·浏览全部记录:可以实现对全部学生记录的显示。 ·6.查找记录:可以实现按姓名查找学生记录并显示,包括同名学 生。 ·7·插入记录:按平均成绩的高低插入一条学生记录。 ·8.对记录进行排序:能够按总分成绩进行降序排序。 ·9,退出:退出整个系统。 上一页返回
12.1 系统需求分析 1.学生记录的输入:输入内容包括学号、姓名和6门课成绩。 2.追加学生记录:用于继续添加学生的基本信息。 3.修改记录:可以修改学生的基本信息。 4.删除记录:可以删除指定学生的基本信息。 5.浏览全部记录:可以实现对全部学生记录的显示。 6.查找记录:可以实现按姓名查找学生记录并显示,包括同名学 生。 7.插入记录:按平均成绩的高低插入一条学生记录。 8.对记录进行排序:能够按总分成绩进行降序排序。 9.退出:退出整个系统。 上一页 返回

12.2系统设计 ·系统设计部分需要描述的是如何具体地实现这个系统,这个阶段的任 务还不是编写程序,而是设计出程序的详细规格说明。这种规格说明 的作用很类似于其他工程领域中工程师经常使用的工程蓝图,它们应 该包含必要的细节,程序员可以根据它们来写出实际的程序代码。以 学生成绩管理系统为例,最基本的系统设计文档可以设计如下: ·1系统功能模块 ·本系统由9个模块组成,结构图如图2所示。 下一页返回
12.2 系统设计 系统设计部分需要描述的是如何具体地实现这个系统,这个阶段的任 务还不是编写程序,而是设计出程序的详细规格说明。这种规格说明 的作用很类似于其他工程领域中工程师经常使用的工程蓝图,它们应 该包含必要的细节,程序员可以根据它们来写出实际的程序代码。以 学生成绩管理系统为例,最基本的系统设计文档可以设计如下: 1.系统功能模块 本系统由9个模块组成,结构图如图12-1所示。 下一页 返回

12.2系统设计 ·2.各模块功能简述 ·(1)数据结构设计 ·学生信息采用结构体类型: struct student ·{char num\[4]; ·char namel[2ol]; ·int scorel[6J; ·float ave; ·stul[N; 上一页下一页返回
12.2 系统设计 2.各模块功能简述 (1)数据结构设计 学生信息采用结构体类型: struct student {char num\[4\]; char name\[20\]; int score\[6\]; float ave; }stu\[N\]; 上一页 下一页 返回

12.2系统设计 ·(2)学生基本信息输入模块 ·输入学生基本信息,包括学号、姓名、6门课程的成绩,该模块通过 enter()函数操作,在enter函数中嵌套使角了学号输入函数 no input(nti,int成绩输入函数score_input(inti)、记录输入 函数input(inti)和保存函数save(intn)等。 ·(3)追加输入学生信息模块 ·使用过程中如果想要添加多个学生的信息,可以通过追加模块完成, 该模块通过调用add)函数实现。 ·(4)修改学生信息模块 ·崑静资囊载现键雾时装送集異修务着皇是赞羚软修隆的箸 时可以对学 姓令 基门课感绩、所有课程成绩和某个 1u四PP人亚ou0P果产影并溪、考拳食票一 两个函数实现。 上一页下一页返回
12.2 系统设计 (2)学生基本信息输入模块 输入学生基本信息,包括学号、姓名、6门课程的成绩,该模块通过 enter()函数操作,在enter函数中嵌套使用了学号输入函数 no_input(int i,int n)、成绩输入函数score_input(int i)、记录输入 函数input(int i)和保存函数save(int n)等。 (3)追加输入学生信息模块 使用过程中如果想要添加多个学生的信息,可以通过追加模块完成, 该模块通过调用add()函数实现。 (4)修改学生信息模块 当输入数据出现错误时,可以使用修改学生信息模块进行修改,修改 时可以对学号、姓名、某门课成绩、所有课程成绩和某个学生的所有 信息进行操作。该模块通过调用modify()和modify_data(int i,int n) 两个函数实现。 上一页 下一页 返回

12.2系统设计 ·(5)删除学生信息模块 ·当要删除某个学生的基本信息时,可以通过调用delO函数实现。 ·(6)浏览学生信息模块 ·当每次进行一项操作(包括输入、追加、修改、删除等)后,可以通 过调用该模块来查看操作情况,也可以单独浏览学生基本信息。该模 块通过调用browse(O函数实现。 ·(7)查找学生信息模块 ·需要查找某个学生的信息时,可以使用该模块实现。本模块是通过姓 名查找,调用search0函数实现。 上一页下一页返回
12.2 系统设计 (5)删除学生信息模块 当要删除某个学生的基本信息时,可以通过调用del()函数实现。 (6)浏览学生信息模块 当每次进行一项操作(包括输入、追加、修改、删除等)后,可以通 过调用该模块来查看操作情况,也可以单独浏览学生基本信息。该模 块通过调用browse()函数实现。 (7)查找学生信息模块 需要查找某个学生的信息时,可以使用该模块实现。本模块是通过姓 名查找,调用search()函数实现。 上一页 下一页 返回

12.2系统设计 ·(8)插入学生信息模块 ·当需要在排序好的记录后面插入一条学生信息时,可以使用本模块实 现。该模块通过调用insert()函数实现。 ·(9)排序模块 ·在实际使用中,经常需要对学生成绩进行排序,本模块对学生总分按 降序进行排序。该模块通过调用order(O函数实现。 ·3主界面设计 ·系统进入后有版本信息,如图2-2所示。按任意键后进入主菜单,如 图23所示。 上一页返回
12.2 系统设计 (8)插入学生信息模块 当需要在排序好的记录后面插入一条学生信息时,可以使用本模块实 现。该模块通过调用insert()函数实现。 (9)排序模块 在实际使用中,经常需要对学生成绩进行排序,本模块对学生总分按 降序进行排序。该模块通过调用order()函数实现。 3.主界面设计 系统进入后有版本信息,如图12-2所示。按任意键后进入主菜单,如 图12-3所示。 上一页 返回

12.3设计代码 有了规范化的系统设计后,就可以按照功能的要求把各个模块用函数 来逐一实现学 立的功能 慕块化程序改计,我们薯尽可能地将各个独 ●#defineN2oo ●#include ●#include ·#include"stdlib.h"/*其他说明*/ ·#include"string.h"/*字符串函数*/ ·#include"conio.h"/*屏幕操作函数*/ ·#include"mem.h"/*内存操作函数*/ ·#include"ctype.h"/*字符操作函数*/ 下一页返回
12.3 设计代码 有了规范化的系统设计后,就可以按照功能的要求把各个模块用函数 来逐一实现了。为了实现模块化程序设计,我们要尽可能地将各个独 立的功能块设计为由函数来实现。实现后的全部程序代码如下,其中 每个函数都对应着独立的功能模块,有详细的注释进行说明。 #define N 200 #include #include #include "stdlib.h" /*其他说明*/ #include "string.h" /*字符串函数*/ #include "conio.h" /*屏幕操作函数*/ #include "mem.h" /*内存操作函数*/ #include "ctype.h" /*字符操作函数*/ 下一页 返回