文档编号____________保密级别____________软件测试工程师管理系统详细设计说明书XX信息技术中心版本说明日期版本号发布说明作者批准人签字岗位目录1引言1.1编写目的1.2项目背景1.3定义1.4参考资料2程序系统的组织结构2.1程序关系2.2程序运行过程2.3系统菜单界面2.4系统处理流程2.5接口设计3总体设计3.1输入项目3.2输出项目3.3功能要求3.4性能要求3.5系统数据结构设计3.6系统数据处理流程3.7各函数调用关系4各功能函数设计4.1主函数4.1.1程序描述4.1.2功能4.1.3性能4.1.4输入项目4.1.5输出项目4.1.6算法4.1.7程序逻辑4.1.8接口4.1.9存储分配4.1.10限制条件4.1.11测试要点4.2输入工程师信息函数4.2.1程序描述4.2.2功能4.2.3性能4.2.4输入项目4.2.5输出项目4.2.6算法4.2.7程序逻辑4.2.8接口4.2.9存储分配4.2.10限制条件4.2.11测试要点5程序与数据结构5.1全局变量5.2数据结构使用6系统出错处理设计7安全保密计划1 引言1.1 编写目的尽可能详细地描述程序各成份的设计思路,以利于编制程序。
1.2 项目背景该项目的实施主要是为提高北京梅梅公司的人事管理效率而编制的。
1.3 定义1.4 参考资料2 程序系统的组织结构2.1 程序关系本系统的每一项功能由一个或几个函数来实现。
每一个菜单对应一个功能函数。
2.2 程序运行过程1. 系统在运行后,首先从文件中得到被保存的软件测试工程师信息,来初始化系统与工程师信息有关的数据结构;2. 用户选择在系统功能菜单中选择要进行的操作,选择后调用对应的函数;3. 完成必要的相应的功能模块;4. 系统完成该项功能后,显示结果信息给用户;5. 系统可返回第2步,供用户继续选择要进行的操作;6. 用户选择菜单中的0系统结束,在系统结束时如果用户修改的数据,则提示用户是否把数据保存到文件。
2.3系统菜单界面系统运行中提供用户选择的主菜单如下:图一:系统主菜单2.4系统处理流程系统启动判断数据文件中有工程师数据吗?Y填充工程师数据结构N显示菜单用户选择添加工程师资料删除指定工程师资料查询指定工程师资料修改指定工程师资料计算工程师月薪水保存新添加的工程师资料对工程师资料进行排序输出所有工程师资料清空所有工程师资料打印工程师所有资料报表重新导出工程师资料用户选择退出了吗?NY如修改了数据提示用户需要保存否?数据写文件系统结束YN图二:系统处理流程2.5接口设计系统使用DOS环境和windows下的虚拟DOS环境。
与用户的接口是通过控制台交互,系统提供用户菜单,系统接收用户键盘输入,输入和输出均等均在显示器上显示。
3总体设计3.1输入项目系统的输入项目主要是用户的输入和选择。
在提示用户选择时,提示用户选择菜单的编号,编号以数字的输入。
在提示排序时也是以提示用户选择排序方式,排序方式也是以数字编号的形式输入。
用户在输入软件测试工程师信息时,输入用户的输入有可能是数字(包括实型),也可能是字符或字符串。
输入限制在函数功能设计中进行说明。
3.2输出项目系统的输出主要是工程师信息资料,各项信息以要求的形式输出。
输出格式在函数功能设计中说明。
输出也包括计算出的工程师当月薪水。
3.3功能要求要求系统能够接收用户输入的工程师信息。
3.4性能要求要求本系统在完成各项功能的同时,要求系统处理迅速,处理事务需要长时间时,提示用户等待且等待时间在用户可接收的范围之内。
精度要求:输出实型数据时只保留两位小数。
3.5系统数据结构设计软件测试工程师的数据结构如下:struct EngineerStruct //声明存储工程师信息的结构体{unsigned int EngineerNo; //工程师编号char EngineerName[20]; //工程师姓名unsigned int EngineerSex; //工程师性别struct DateStruct EngineerBirth; //工程师生日char EngineerHometown[10]; //工程师籍贯unsigned int EngineerEducation; //工程师学历char EngineerAddress[30]; //工程师地址char EngineerPhone[15]; //工程师电话unsigned int EngineerWorkYears; //工程师工龄float EngineerBaseSalary; //工程师基本薪水};工程师的生日用数据结构表示如下:struct DateStruct //日期结构,用于存储工程师的出生生日{int year;int month;int day;};声明枚举类型:enum Status{FALSE,TRUE};//控制输入情况的两种状态enum Sex{male,female}; //性别分类,默认0为男、1为女enum Education{high,bachelor,master,docter,other}; //学历分类,默认0开始存储软件测试工程师的的当月工资天数和当月薪水的数据结构如下:double Salary[10]={0.0}; //工程师薪水unsigned int EngineerMonthWorkDays[10]={0}; //工程师工作天数3.6各函数调用关系主函数main InitDataInputEngineerInformationmenuWhichChooseDeleteEngineerInformation SearchEngineerInformation ModifyEngineerInformation CalculateEngineerSalary EngineerInfomationSave EngineerInformationNoSort EngineerInformationNameSort EngineerInformationWorkYearSort OutputEngineerInfomationDeleteEngineerEngineerInfomationReport EngineerInformationReloadSystemOver图三:函数调用关系图4各功能函数设计4.1主函数int main(void);4.1.1程序描述主函数是完成系统各个功能模块的调用。
同时定义系统使用的变量数据以及一些控制系统运行状态的变量。
4.1.2功能主函数的功能主要是完成各个功能函数的调用,处理各个函数之间的接口关系。
控制系统的运行状态等。
只能选择功能菜单中提示的功能,如果用户选择错误,则显示菜单供用户重新选择。
4.1.3性能主函数性能要求相应用户选择菜单迅速及时,同时在用户输入错误时能够及时提示用户输入错误,并提示用户重新输入。
4.1.4输入项目用户输入的的功能菜单编号。
为无符号整型数据,定义变量为unsigned int select;4.1.5输出项目主函数在运行结束后返回到操作系统。
正常退出返回0。
异常退出返回1。
4.1.6算法显示供用户选择的菜单,提示用户选择,接收用户选择,根据用户选择调用相应的功能函数。
4.1.7程序逻辑初始化数据显示菜单调用功能函数用户的选择输入系统退出菜单用户修改了数据吗?Y需要保存数据到文件吗?Y保存数据到文件系统退出NN入口图四:主函数流程图4.1.8接口调用初始化数据函数InitData(engineer);调用menu()函数显示系统功能菜单。
4.1.9存储分配由操作系统分配该系统的内存使用。
4.1.10限制条件无。
4.1.11测试要点用户选择输入错误时是否具有错误提示功能以及重新显示菜单功能。
4.2输入工程师信息函数void InputEngineerInformation(struct EngineerStruct *Engineer);参数:struct EngineerStruct *Engineer,工程师数据结构指针。
返回值:无4.2.1程序描述该函数的主要是完成系统软件测试工程师信息的输入。
4.2.2功能主函数的功能主要是完成软件测试工程师信息的输入。
在提示用户输入信息中,提示用户输入的数值或字符串。
同时对用户的输入进行合法性值域判断,如果用户输入错误则提示用户重新输入。
最多存储10个软件测试工程师的信息。
4.2.3性能接收用户输入及时,错误提示信息明确。
4.2.4输入项目用户输入软件测试工程师的信息如下:unsigned int EngineerNo; //工程师编号char EngineerName[20]; //工程师姓名unsigned int EngineerSex; //工程师性别struct DateStruct EngineerBirth;//工程师生日char EngineerHometown[10]; //工程师籍贯unsigned int EngineerEducation; //工程师学历char EngineerAddress[30]; //工程师地址char EngineerPhone[15]; //工程师电话unsigned int EngineerWorkYears; //工程师工龄float EngineerBaseSalary; //工程师基本薪水要求:编号为数字,编号使用4为位数字,格式为0001、0002….,不能重复。
姓名:为字符,最长不超过20个字符。
不能为空。
性别:用数字表示0表示女,1表示男。
不能为其它数值。
生日:用数字分别表示年、月、日。
格式例如:年使用四位数字表示,月使用1-12表示,日使用1-31表示。
范围是(1900,2004)籍贯:使用字符表示,最长不超过10个字符。
不能为空。
学历:使用数字表示高中0、学士1、硕士2、博士3、其它为4。
不能为其它数字。
地址:使用字符表示,最长不超过30个字符。
不能为空。
电话:使用字符表示,最长不超过15个字符。
不能为空。
工龄:使用数字表示,工龄范围是(0,50]。
基本薪水:为实型,不能为0。
4.2.5输出项目函数调用后设置工程师数据已经修改标志,IfModfiy=TRUE;表示工程师的信息有变化,以供在退出系统前,提示用户是否要保存。
4.2.6算法算法使用下面的流程图来表示。
4.2.7程序逻辑初始化数据根据当前存在的工程师人数提示是否输入工程师的信息Y编号在0001-9999之间吗?YN提示输入工程师编号函数返回该编号已经存在了吗?YN提示输入工程师性别姓名长度在(0,20]之间吗?NY提示输入工程师姓名NY入口性别为0或1吗?提示输入工程师生日年为[1900,2004]之间吗?NY月为[1,12]之间吗?日为[1,31]之间吗?NNYY提示输入工程师学历学历为0-4之间的合法数值吗?提示输入工程师籍贯籍贯长度在(0,10]之间吗?YNY提示输入工程师家庭住址地址长度在(0,30]之间吗?NY提示输入工程师联系电话长度在[0,15]之间吗?NY输入的都是数字和’-’吗?NY提示输入工程师工龄输入的为(0,50]字之间吗?NY提示输入工程师基本工资输入的为0吗?Y函数结束图五:输入工程师信息流程图4.2.8接口调用后通过参数修改了主函数中的工程师数据结构。