课程设计Ⅰ
软件工程
目 录
0.概述 1
1.可行性分析 2
1.1系统描述 2
1.2可行性研究 2
1.3结论 3
2.需求分析 4
2.1项目概述 4
2.2需求规定 4
2.3运行环境 4
2.4系统环境图 5
2.5数据字典 5
3.概要设计 8
3.1总体设计 8
3.2系统数据结构设计 9
4.详细设计 10
4.1读取职工工资数据函数:read() 10
4.2保存职工工资数据函数:write() 11
4.3查询职工工资数据函数:find() 11
4.4浏览职工工资数据函数:list() 11
4.5修改职工工资数据函数:modify() 13
4.6删除职工工资数据函数:del() 13
4.7添加职工工资数据函数:add() 14
4.8计算个人所得税函数:grsds() 15
4.9系统主函数:main() 17
5.代码设计 18
6.实践要求 18
7.评分标准 18
0.概述
[目的] 加深对C语言程序设计、数据结构课程的理解与应用;加强计算思维能力以及规范化计算机编码能力;提前接触并初步了解软件工程开发过程及相关文档的知识,为后续软件工程专业课程学习积累实践经验。
[内容] 基于软件工程思想以及C语言技术编码实现一款“工资管理系统”软件。
相关内容按照软件工程规范完成,但只选取核心的内容开展课程设计,主要内容包括以下几个方面:
(1)可行性分析报告(老师提供)
(2)需求规格说明书(老师提供)
(3)概要设计说明书(老师提供)
(4)详细设计说明书(老师提供大部分)
(5)系统构造与代码实现(学生完成)
要求学生完成计算个人所得税函数的详细设计并根据详细设计说明书完成(5)。
[步骤]
1、学生仔细阅读理解可行性分析、需求规格说明、概要设计说明以及详细设计说明、C语言编码规范。
2、完成课程设计实践要求规定的内容
1.可行性分析
1.1系统描述
经过系统分析员的充分调研并与用户沟通,得出了如下系统目标和范围说明:
项目名称:职工工资管理系统
背景:目前工资管理由人工完成,效率低,易出错。
项目目标:建立一个高效的、无差错的工资管理系统。
项目范围:为工资科配备一台PC,软件开发费用不超过1万元,系统实现工资录入、查询、修改、添加、删除及数据保存功能。
1.2可行性研究
技术可行性:
本系统拟采用C语言实现,C语言具有简洁、灵活、数据结构丰富等特点,而且其开发的程序运行速度快,适合开发信息管理系统。
系统开发人员均有系统完成了C语言程序设计课程学习,有坚实的理论基础及初步的软件开发经验,在给定的开发时间内可以实现系统功能。
经济可行性:
本系统只针对所给定项目范围的工资管理系统,系统规模较小,开发调试周期短,开发费用低。
系统目标实现后,负责工资管理的工作人员的效率提高而所需人员数量减少,从而减少工资管理工作的开支。
操作可行性:
本系统用C语言开发实现,目前的计算机系统都能安装成功并能安全稳定地运行。在使用上,本系统具有清晰的操作界面,简单的功能菜单选择,用户在使用时只需按照提示进行即可,财务人员只要具备基础的计算机操作能力即可胜任。
1.3结论
本软件的开发可以立即开始。
2.需求分析
需求分析是在可行性分析研究的基础上进行的,需求分析的主要任务是得出详细的系统逻辑模型。需求分析说明书是需求分析阶段产生的文档资料。
2.1项目概述
本系统的设计目标是实现职工工资记录的录入、查询、修改、添加、删除及数据保存功能。根据现有工资系统的实际情况确定职工工资记录由职工工号、职工姓名、岗位工资、薪级工资、职务津贴、绩效工资、应发工资、个人所得税和实发工资9个项目构成。系统应实现工资记录的逐条添加、保存、根据工号进行查询、浏览、删除,并能在添加修改的同时自动完成个人所得税和应发工资的计算。
2.2需求规定
系统的功能定义如下。
FE_01:录入、修改、删除工资记录。
FE_02:浏览工资记录
FE_03:核算工资
2.3运行环境
硬件环境
CPU:Intel® Core™ i5 3.20GHz以上
RAM: 1GB
硬盘:4.2GB以上
软件环境
OS:Windows 7操作系统
2.4系统环境图
系统顶层的数据流图如图2.1所示。
图2.1 顶层数据流图(系统关联图)
2.5数据字典
(1)数据流
DF_01:职工工资
名称:职工工资
简述:查询、修改、添加、删除、保存、显示、输入数据
来源:财务人员
组成:工号+姓名+岗位工资+薪级工资+职务津贴+绩效工资+应发工资+个人所得税+实发工资
DF_02:用户命令
名称:用户命令
简述:进行查询、修改、添加、删除、保存等操作,浏览时选择编号
来源:账务人员
组成:操作序号
其中组成的操作序号为字符1~7,含义如表2.1所示。
表2.1 用户命令数据流表
序号 含义 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
用户命令 |
查询 |
修改 |
添加 |
删除 |
保存 |
浏览 |
退出 |
(2)数据存储
工资数据文件
名称:gz.dat
简述:存放职工记录信息
组成:工号+姓名+岗位工资+薪级工资+职务津贴+绩效工资+应发工资+个人所得税+实发工资
组织方式:二进制文件
查询要求:要求能立即查询
(3)数据项
如表2.2所示。
表2.2 数据项表
数据项 |
类型 |
取值范围及含义 |
工号 |
字符数组 |
由1~10位数字(0~9)组成的字符串 |
姓名 |
字符数组 |
由1~10个字母或1~5个汉字组成的字符串 |
岗位工资 |
单精度实型 |
由不同工作岗位、如教师、实验室等确定的工资 |
薪级工资 |
单精度实型 |
由工龄确定的工资 |
职务津贴 |
单精度实型 |
由职务或职称确定的工资 |
绩效工资 |
单精度实型 |
由业绩确定的工资 |
应发工资 |
单精度实型 |
前4项工资之和 |
个人所得税 |
单精度实型 |
按照一定的比例计算 |
实发工资 |
单精度实型 |
应发工资-个人所得税 |
3.概要设计
概要设计阶段将介绍系统的功能模块划分情况及软件结构。
3.1概要设计
概要设计也称为系统总体设计、系统设计或系统架构设计。
(1)系统模块划分
按照模块化设计的“高内聚、低耦合”原则,划分系统功能模块如图3.1所示。
图3.1 系统功能模块图
(2)软件上层框架结构图
系统的软件结构如图3.2所示
图3.2 软件结构图
其中,① ~ ⑦的含义如表3.3所示。
表3.3 ①~⑦的含义表
序号 |
① |
② |
③ |
④ |
⑤ |
⑥ |
⑦ |
含义 |
查询命令 |
修改命令 |
添加命令 |
删除命令 |
浏览命令 |
保存命令 |
退出命令 |
各细节层软件结构图略。
3.2系统数据结构设计
职工工资数据文件=0{职工工资数据}100
职工工资数据=工号+姓名+岗位工资+薪级工资+职务津贴+绩效工资+应发工资+个人所得税+实发工资
工号=1{数字符号}10,即工号是由1~10个数字符号(0~9)组成的字符串
姓名=1{字母或汉字}10,即姓名是由1~10个字母或1~5个汉字组成的字符串
岗位工资、薪级工资、职务津贴、绩效工资、应发工资、个人所得税、实发工资均为单项数据(简单变量)
4.详细设计
为系统的各个函数给出足够详细的过程描述,
本系统采用程序流程图描述每个模块的算法。
4.1读取职工工资数据函数:read()
(1)函数描述。主函数执行时要调用和必须调用的第一个函数。
(2)函数功能。从数据文件中读取职工工资数据、初始化职工工资结构体数组并统计当前数据文件中职工人数,并将职工人数存在全局变量n中,以备其他函数使用。
(3)read()函数详细设计如图4.1所示
图4.1 read()函数程序流程图
4.2保存职工工资数据函数:write()
(1)函数描述。在执行保存功能时被主函数调用。
(2)函数功能。将zggz结构体数组中的记录保存到gz.dat数据文件中。
(3)write()函数详细设计如图4.2所示。
4.3查询职工工资数据函数:find()
(1)函数描述。在执行查询功能时被主函数调用。
(2)函数功能。根据工号查询相应职工的工资记录。
(3)find()函数详细设计如图4.3所示。
图4.2 write()函数程序流程图
图4.3 find()函数程序流程图
4.4浏览职工工资数据函数:list()
(1)函数描述。在执行浏览功能时被主函数调用。
(2)函数功能。显示所用职工的记录。
(3)list()函数详细设计如图4.4所示。
图4.4 list()函数程序流程图
4.5修改职工工资数据函数:modify()
(1)函数描述。在执行修改功能时被主函数调用
(2)函数功能。指定工号,修改该职工的工资记录,其中要调用grsds()函数计算个人所得税。
(3)modify()函数详细设计如图4.5所示。
4.6删除职工工资数据函数:del()
(1)函数描述。在执行删除功能时被主函数调用
(2)函数功能。删除指定工号职工的记录
(3)del()函数详细设计如图4.6所示。
图4.5 modify()函数程序流程图
4.7添加职工工资数据函数:add()
(1)函数描述。在执行添加功能时被主函数调用
(2)函数功能。添加工资记录到结构体数组zggz末尾
(3)add()函数详细设计如图4.7所示。
图4.6 del()函数程序流程图
4.8计算个人所得税函数:grsds()
(1)函数描述。在计算个人所得税时被调用
(2)函数功能。计算个人所得税,按照个人所得税税率表来计算,税率表如表4.1所示。
(3)grsds()函数详细设计由学生根据前面的例子完成。
图4.7 add()函数程序流程图
表4.1 个人所得税税率表(工资、薪金所得适用)
等级 |
全月应纳税所得额 |
税率/% |
1 |
不超过500元的 |
5 |
2 |
超过500元到2000元的部分 |
10 |
3 |
超过2000元到5000元的部分 |
15 |
4 |
超过5000元到20000元的部分 |
20 |
5 |
超过20000元到40000元的部分 |
25 |
6 |
超过40000元到60000元的部分 |
30 |
7 |
超过60000元到80000元的部分 |
35 |
8 |
超过80000元到100000元的部分 |
40 |
9 |
超过100000元的部分 |
45 |
4.9系统主函数:main()
(1)函数描述。主函数是程序执行的开始,在主函数中可调用其他函数来实现用户要求的功能。
(2)函数功能。主函数实现了系统的主界面,用户可在此界面输入查询、浏览、删除等命令。
(3)main()函数详细设计如图4.8所示。
图4.8 main()函数程序流程图
5.代码设计
源代码清单。
6.实践要求
(1)详细阅读可行性分析、需求规格说明、概要设计说明、详细设计说明以及C语言编码规范。
(2)根据所给的详细设计例子完成计算个人所得税函数的详细设计。
(3)依据需求说明以及概要、详细设计说明,基于C语言实现系统,并给出完整的源代码清单。
7.评分标准
(1)能够依照详细设计说明内容,职工工资采用结构体数组实现系统,最高78分
(2)能够依照详细设计说明内容,采用双向链表结构组织职工工资记录实现系统,最高90分
(3)能够发现需求说明和设计说明中的缺陷和不足,并给予相应解决方案的,最高可加10分。
(4)代码书写不符合规范,扣5~8分