综 合 程 序 设 计
(C/C++课程设计)
专
学
业
号
学生姓名
教师姓名
日
期
2010 年 12 月 31 日
1
1 题目与要求
1.1 题目:招聘干部录取系统
设某市公开招聘 5 名副局长。招聘过程中要进行 4 项笔试(政策法律基础、
语文、英语、计算机基础)和一项口试(考察处理问题能力)。录取时对于年龄
在 30~55 的应聘者按总分从高到低录取。总分的构成如下:4 项笔试分(百分
制);口试分(百分制)乘 2;学历分;年龄分;工作经历分。后三种分数的计
算方法如下:
学历分:
博 士
100 分
硕 士
75 分
本 科
50 分
其 它
0 分
年龄分:
55 岁
70 分
50 岁
75 分
40 岁
100 分
35 岁
80 分
30 岁
70 分
其它年龄(可以有小数部分)的分数按线性插值确定。
工作经历分(仅考虑任科级干部年限):
0 年
0 分
1 年
70 分
2 年
100 分
6 年
20 分
6 年以上
0 分
其它年龄(可以有小数部分)的分数按线性插值确定。
用 VC++语言实现招聘干部录取系统。该系统在磁盘上存贮如下信息:
1、应聘者报名表。表中记录了每位应聘者的有关信息,其中包括:姓名、
性别、出生年月、最后学历、任科级干部有多少年月、现工作单位。
2、每位应聘者 5 项考试的成绩。
该系统的功能如下:
1、输入应聘者的信息和 5 项考试成绩;
2、输出按总分从高到低排列的成绩表,表项有姓名、8 项分数、总分。设
应聘者不超过 50 名;
3、输出 5 份录取通知书;
4、查询某人的 8 项分数和总分。
2
1.2 综合程序设计要求
一、文档
1、需求说明书(分层的数据流图、数据词典、小说明);
2、模块结构图,每个模块的说明;
3、每个模块的算法及使用的数据结构;
4、每个模块的编码和整个程序的编码;
5、各模块的测试用例及测试结果;
6、使用手册。
二、程序
1、设计若干命令以表示要求程序执行相应的功能;
2、输入到程序的数据名称及格式应通过提示信息告诉用户。能拒绝非
法数据,同时给出重新输入数据的提示。当输入数据量很大时,应
建立磁盘文件,以便重复演示程序功能;
3、程序的运行结果要以清晰可读的形式显示出来,并可打印及存贮,
以便查阅。
2 画数据流图
2.1 顶层数据流图
应聘截至日期
成绩总表
应聘者信息和考试成绩
招聘干部
录取系统
录取通知书表
被查询人姓名
被查询者个人成绩
图 1 招聘干部录取系统数据流图(第 0 层)
成:年+月
:按总分从高到低排列。
成:{姓名+被录取的信息}15
:n 为应聘人数:n≤50。
成:{个人信息+考试成绩}1n
相应的数据词典条目:
数据流名:招聘截止日期
组
数据流名:应聘者信息与考试成绩
组
注
数据流名:成绩总表
组 成 :{姓名+个人成绩}1n
注
数据流名:录取通知书表
组
注:1.总分前五名的录取通知单。
2.若应聘者不足五人,按实际人数处理。
数据流名:被查询者的个人成绩
3
成:姓名+性别+出生年月+最后学历+工作年限+现工作单位
:工作年限指任科级干部的年月。
成:政策法律基础成绩+语文成绩+英语成绩+计算机成绩+口试成绩
成:姓名+个人成绩
组
数据项名:个人信息
组
注
数据项名:考试成绩
组
数据项名:个人成绩
组
数据项名:总分
组
成:考试成绩+学历分+年龄分+工作经历分+口试分
成:考试成绩+学历分+年龄分+工作经历分+口试分
2.2 第一层数据流图
应聘者信息和考试成绩
招聘截止日期
信息
总表
1*
成绩总表
读入
读入
信息处理
信息处理
输出
录取通知书
1
2
3
被查询者成绩
1*:成绩总表+应聘者人数
被查询人姓名
图 2 招聘干部录取系统数据流图(第一层)
成:姓名+个人成绩
织:按总分从高到低顺序。
成:{个人信息+考试成绩}* * *+招聘截止年月
数据流名:信息总表
组
文 件 名:成绩总表
组
组
加 工 名:读入
编
激发条件:需招聘成绩表,或需要确定干部录取情况,或需要某指定者的成绩
加工逻辑:1 将“应聘者信息与考试成绩”读入信息总表中
号:1
2 读入招聘截止年月
2.3 关于加工“信息处理的”的分解
初步成绩表
信息总表
计算填表
2.1
成绩总表
排序
应聘者人数
2.2
图 3 加工“信息处理”的分解
4
文件名:初步成绩总表
形成:姓名+个人成绩已填入的应聘者个数。
加工名:计算填表
编号:2.1
激发条件:信息总表已经形成
加工逻辑:将应聘者的学历、年龄和工作年限计算成学历分、年龄分和工作经历
分,并计算总分,将应聘者所有成绩填入初步成绩表中。
加工名:排序
编号:2.2
激发条件:初步成绩总表按总分高到低排序
加工逻辑:按总分的高低从高到低排列个人成绩和姓名。
2.4 关于加工“输出”的分解
3.1
输出成绩总
成绩总表
表
3.2
输 出 录 取
通知书
3.3
输 出 被 查
询者成绩
录取通知书
被查询者成绩
成绩总表+应聘者人数
被查询人姓名
图 4 加工“输出”的分解
2.5 系统数据流图
应聘者信息和考试成绩
初步成绩表
信息总表
读入
计算填表
排序
输出成绩总表
打印成绩总表
输出录取通知书
1*
1*
1*
招聘截止日期
1*:成绩总表+应聘人数
被查询人姓名
输出被查
询者成绩
图 5 招聘干部录取系统数据流图
5
3 画模块结构图
从图 5 可以看出,从 2.1 到 2.3 均为信息处理部分,可视作系统的中心变换
部分。那么从加工 1 至加工 2.1 的“信息总表”便是系统的逻辑输入,从加工 2.3
到文件成绩总表的数据流程便是系统的逻辑输出。我们为中心变换部分和其前、
后的部分各设计一个模块,因此可画出系统顶层的模块结构图。
干部招聘主模块
信息总表
信息总表
成绩总表
成绩总表
读 入
信息处理
输 出
图 6 系统顶层模块结构
下面考虑三个第一层模块的下属模块。
由于输入的功能就是“读入”加工的功能,将招聘截止年月和应聘者信息与
考试成绩读入信息总表中,比较简单,不用为其设立下属模块。现将其更名为“读
入”模块。
再设计“输出”模块的下属模块。根据系统要求,输出模块应根据用户要求
完成“打印成绩总表”、“打印录取通知书表”和“模块的下属模块”。根据系统
要求,输出模块应根据用户要求完成“打印成绩总表”、“打印录取通知书表”和
“打印被查询者个人成绩”三项功能中的一项或几项,所以可为“输出”模块建
立如图 7 所示的三个模块。
下面考虑设计“信息处理”模块的下属模块。从图 3 的数据流图可见,可为
“信息处理”模块设立两个下属模块:“计算填表”和“排序”。前一个模块完成
计算各项分数并填入初步成绩表,循环调用该模块直至填表完毕。
至此,我们可以画出整个软件的模块结构图。如图 9。其中每一个模块都用
了一个表示符合给予命名。
下面列出各模块的功能说明:
成绩总表
应聘人数
输 出
成绩总表应聘人数
成绩总表应聘人数
成绩总表
应聘人数
输出成绩总表
输出录取通知书表
输出被查询者成绩
图 7 输出模块下属模块
6
信息总表
应聘截止日期
成绩总表
信息处理
填入初步成绩表
填入成绩表
已填入人数
信息总表
成绩总表
应聘人数
图 8 “信息处理”及其下属模块
干 部 招 聘 主 模 块
INVCAD
信息总表
成绩总表应聘者个数
信息总表
应聘截止日期
成绩总表
读入 READIN
信息处理 TREATINF
输出 EXPORTION
填入初步成绩
填入成绩表应聘人数
已填入人数
成绩总表
成绩总表
信息总表
应聘人数
成绩总表应聘人数
计算填表 CALFILL
排序 ARRANGE
成绩总表
应聘人数
被查询者姓名
输 出 成 绩 总 表
PRNMARK
输出录取通知书表
PRNINF
输 出 被 查 询 者 成
绩 PRNPER
图 9 系统的模块结构图
7
<读入>模块
<输出>模块
<信息处理>模块
3.1 干部招聘主模块
模块名:INVCAD
输入:<招聘截止日期>、<应聘者信息与考试成绩>、<被查询人姓名>
输出:<成绩总表>
功能:建立成绩总表
调用以下模块:READIN、TREATINF、EXPORT
3.2
模块名:READIN
输入:<招聘截止日期>、<应聘者信息与考试成绩>
输出:<信息总表>
功能:将<招聘截止日期>、<应聘者信息与考试成绩>存入指定的<信息总表>中。
调用以下模块:无
注释:该模块与数据流图中的加工<读入>对应。
3.3
模块名:TREATINF
输入:<信息总表>、<应聘截止日期>
输出:<成绩总表>
功能:将<信息总表>中信息折算成成绩,并按总分从高到低排成<成绩总表>。
调用以下模块:CALCUT、FILLIN、ARRANGE
注释:该模块与数据流图中的加工<信息处理>对应。
3.4
模块名:EXPORT
输入:<成绩总表>、<被查询人姓名>
输出:<成绩总表>、<录取通知书表>和<被查询人个人成绩>中的一项或几项的屏
幕形象或纸面现象。
功能:将<成绩总表>、<录取通知书表>和<被查询人个人成绩>中的一项或几项在
屏幕或打印机上显示出来。
调用一下模块:PRNMARK、PRNINF、PRNPER
注释:该模块与数据流图中的加工<输出>对应。
3.5 <计算填表>模块
模块名:CALCUT
输入:<信息总表>、<应聘截止日期>
输出:<初步成绩表>、<应聘者人数>
功能:根据当前的一个应聘者的信息,计算出他的个人成绩,填入表中。
调用一下模块:CALAGE、CALWORK
注释:该模块与数据流图中的加工<计算填表>对应。
3.6
<排序>模块
模块名:ARRANGE
输入:<初步成绩表>、<应聘者人数>
输出:<输出总表>
功能:将<初步成绩表>按总分从高到低排序。
调用以下模块:无
注释:该模块与数据流图中的加工<排序>对应。
8