第二部分 课后程序设计介绍
1.概述
本程序设计是《C++开发技术》课程的后继实践考核环节,学好C++语言就必须坚持用面向对象的思维方式分析问题、解决问题,最好的方法是仿照教材编写C++实际应用程序。
此次程序设计的题目及要求:实现一个简单的工资管理系统。
1.1 程序的基本功能
系统的主要功能是计算职工当月工资并存档。公司内有5种不同类型的职工:技术人员、销售人员、文秘、技术经理和销售经理,他们的工资计算方式各不相同。
1.2 其它功能
将工资信息存入salary.txt文件中,工资信息包含雇员编号、姓名、职务、月份、月收入。Info.txt文件中只存留一些信息及会员最后进入系统时输入的数据,最多含有编号、姓名、职务、月份的信息。
1.3 扩展功能
采用了会员制度,并将登入信息及编号、密码存入number.txt文件中。
2 课题分析
通过对课题的深入分析,我将这个课题分为以下几个模块,深入详细得剖析它们。
2.1 会员登入系统模块即systemhead静态全局函数模块
程序运行后,先进行会员选择判断。为减少会员重新注册,通过输入两次编号及密码,增加繁琐度。同时在一定的方面上,又方便忘记密码的会员。通过密码匹配,雇员的工资信息这一隐私得到了很好的保障。
2.2 查询功能模块即search函数模块
首先,从info.txt中提取编号,与salary.txt中的编号进行匹配,匹配成功,输出工资信息,直到文件!indata.eof()==0。.
2.3 职务信息匹配及处理模块即systembody静态全局函数模
块模块4
从info.txt中提取职务信息,用switch语句进行匹配,据匹配情况调用不同的函数进行输入、处理、显示并以增加方式记录到salary.txt中。
2.4 循环控制模块即while(1)模块
为了更加方便使用,尽量改善系统,实现search函数及systembody函数功能,在search函数及systembody函数模块的基础上加了一些必要的语句,并增加了外层循环控制。
3 详细设计
作为一个面向对象程序设计,我们不得不先从类的声明开始设计,而后是一个整体的流程图做框架。最后在从小的模块结构着手。
3.1 类声明 class Technician: public Employee {private: 图3.1 类声明 class Employee{ protected: int number; char name[25]; int status; int month; float salary; public: void info(); void search(); virtual void countSalary(); void recordinfo(); void recordSalary(); }; float workHour; float hourSalary; public: technician(float x=36); void setHour(float x); void countSalary( ); }; class Manager{ protected: float fixedSalary; public: Manaer(float x=6000); void countSalary( ); }; class Salesman: public Employee { protected: float salesnum; double getRate; public: salesman(float x=0.05); void setsalesnum(float x); void countSalary( ); }; class Secretary: public Employee {private: float fixedSalary; float bonus; public: Secretary(float x=4000); void setbonus(float x); void countSalary( ); }; class SalesManager: public Salesman, public Manager { public: SaleaManager(float x=0.02); void countSalary( ); }; class TechManager: public Technician, public Manager {private: float gradeBonus; int grade; public: TechManager(float x=1000); void setgrade(float x); void countSalary( ); }; 3.2 系统简略流程图
图3.2 职工工资管理系统简略流程图
优 点: 一 个 入 口, 一 个 出 口! 处理1 输入1 查询信息 开始 注册 否 是否会员 是 输入编号及密码 假 检验? 真 输入姓名、职务、月份 0 1 选择? 记录编码姓名职务月份至info.txt 从info.txt提取职务代码 职务代码分析 输入2 处理2 输入3 处理3 输入4 处理4 输入5 处理5 工资记录在salary.txt 显示 再次输入 真 假 结束
3.3 会员登入系统模块即systemhead静态全局函数模块
以增加方式打开name.txt并输入编号及密码 .输入编号及密码 输入编号及密码 否 图3.3 登入系统模块详细流程图 是否会员
清空info.txt并将编号存入到info.txt中 否 打开name.txt并输出编号及密码 关闭name.txt 匹配? 是 关闭name.txt