1、 课 程 设 计课程名称: 程序设计方法和C 语言课程设计 设计题目: 小型企业工资管理系统设计 学 院: 信息工程和自动化学院 专 业: 计算机科学和技术 年 级: 级 学生姓名: 指导老师: 张力 日 期: 6月22日7月6日 教 务 处 制课 程 设 计 任 务 书 信息工程和自动化 学院 计算机科学和技术 专业 年级班级: 082 学号: 姓名: 课程设计题目: 程序设计方法和C 语言课程设计 课程设计关键内容:一、 编程实现小型企业工资管理系统:需求分析:1、企业关键有4类人员:经理、技术员、销售员、销售经理。要求存放这些人职员号、姓名、月工资、岗位、年纪、性别等信息。2、工资计算方
2、法:A、经理:固定月薪为8000;B、技术员:工作时间*小时工资(100元每小时);C、销售员:销售额*4%分成;D、销售经理:底薪(5000)+所辖部门销售额总额*0.5%; 3、注册新职员,添加新职员具体信息,如:职员号,姓名,出生年份,性别,职称,部门工资等;4、按姓名,部门等条件进行查询;5、修改和删除职员信息;6、按工资高低进行排序;7、把各项纪录存放在文本文件中设计1、 类及类层次结构设计有一个父类和4个子类父类中有虚函数,和基础数据录入和输出,特殊数据录入处理由多态实现。2、 模块分析1):新建部分 为实现不限制数量人员录入建立链表;2):查找 在链表中查找含有某个特殊组员数据对
3、象,从头到尾寻求一边,判定是否输出3):排序 链表排序,冒泡排序,选择对其关键字进行排序;交换结点(交换对象next数据)4):输出到文本 有类,fstream和函数save实现,链表组员一次输入3、 主菜单设计(一)、 编码及调试完整程序:Main.cpp:#includestaff.h#includeMy_function.h#include int main()fstream io(date.txt,ios:out);Staff head;Staff *h,*p,*s;h=&head;p=&head;s=&head; if(!io) cerrFile could not be opene
4、dendl; exit(1); ;int i=0;while(i!=4)cout请选择你要进行操作endl;cout1:注册新职员 2:查询endl;cout3:按工资高低进行排序endl;cout4:统计并推出i;switch(i)case 1:Login(&p,&s);break;case 2:Query(h);break;case 3:Sort(h); break;case 4:Save(head,io); break;default:cout请重新选择endl;system(cls); cout作者:计科082 崔辉毅 10405207endl;cout版权归作者崔某全部endl;co
5、ut西陵荣誉出品endl;return 0;STFF.H:#ifndef STAFF_H#define STAFF_H#include#include#includeusing namespace std;class Staff;class Staffpublic:Staff();Staff(int i);Staff();virtual int count_wage();virtual void set();void b_set(); /基础信息录入virtual void get();void b_get(); /基础信息输出void set_wage(int wage);int get_w
6、age();void set_next(Staff* next);Staff* get_next();void set_job(int job);int get_job();string get_name();void b_save(fstream &io);virtual void save(fstream &io);private:string M_NO,M_name; /职员号、姓名int M_job; /岗位(1经理、2技术员、3销售员、4销售经理)int M_wage,M_age,M_sex; /月工资、年纪、性别(1男2女)int M_year; /出生年份Staff *M_nex
7、t;/指向下一个 ;class Manager:public Staffpublic:Manager();void set();void get();int count_wage();void save(fstream &io);class Technician:public Staffpublic:Technician();void set();void get();int count_wage();void save(fstream &io);private:int M_time;class Sales:public Staffpublic:Sales();void set();void
8、get();int count_wage();void save(fstream &io);private:int M_sale;class Sales_Manager:public Staffpublic:Sales_Manager();void set();void get();int count_wage();void save(fstream &io);private:int M_sale;#endifSTAFF.CPP:#includestaff.hStaff:Staff(int i)M_job=i;M_next=0;Staff:Staff()M_next=0;Manager:Man
9、ager()set_job(1);Staff();Technician:Technician()set_job(2);Sales:Sales()set_job(3);Sales_Manager:Sales_Manager()set_job(4);Staff:Staff();void Staff:set();void Staff:b_set()cout请输入该职员职员号M_NO;cout请输入该职员姓名M_name;cout请输入该职员出生年份M_year;cout请输入该职员性别(1男2女)M_sex;void Staff:get();void Staff:b_get()cout职员号: M_
10、NOendl;cout姓名: M_nameendl;cout出生年份: M_yearendl;if(M_sex=1)cout性别: 男endl;elsecout性别: 女endl;int Staff:count_wage()return 0;void Staff:set_wage(int wage)M_wage=wage;int Staff:get_wage()return M_wage;void Staff:set_next(Staff* next)M_next=next;Staff* Staff:get_next()return M_next;string Staff:get_name()
11、return M_name;void Staff:set_job(int job)M_job=job;int Staff:get_job()return M_job;void Staff:b_save(fstream &io)io职员号: M_NOendl;io姓名: M_nameendl;io出生年份: M_yearendl;if(M_sex=1)io性别: 男endl;elseio性别: 女endl;void Staff:save(fstream &io);int Manager:count_wage()set_wage(8000);return 8000;void Manager:set
12、()b_set();count_wage();void Manager:get()b_get();cout职务: Managerendl;cout月薪: 8000endl;void Manager:save(fstream &io)b_save(io);io职务: Managerendl;io月薪: 8000endl;int Technician:count_wage()set_wage(M_time*100);return M_time*100;void Technician:set()b_set();cout请输入该职员月工作时间M_time;count_wage();void Techn
13、ician:get()b_get();cout职务: Technicianendl;cout月薪: count_wage()endl;void Technician:save(fstream &io)b_save(io);io职务: Technicianendl;io月薪: count_wage()endl;int Sales:count_wage()set_wage(M_sale*0.04);return M_sale*0.04;void Sales:set()b_set();cout请输入该职员销售额M_sale;count_wage();void Sales:get()b_get();c
14、out职务: Salesendl;cout月薪: count_wage()endl;void Sales:save(fstream &io)b_save(io);io职务: Salesendl;io月薪: count_wage()endl;int Sales_Manager:count_wage()set_wage(5000+M_sale*0.0005);return 5000+M_sale*0.0005;void Sales_Manager:set()b_set();cout请输入该职员所辖部门销售额总额M_sale;count_wage();void Sales_Manager:get()
15、b_get();cout职务: Sales_Managerendl;cout月薪: count_wage()endl;void Sales_Manager:save(fstream &io)b_save(io);io职务: Sales_Managerendl;io月薪: count_wage()endl;My_function.h:#ifndef MY_FUNCTION_H#define MY_FUNCTION_H#includestaff.hvoid Login(Staff *p,Staff *s);void Query(Staff *h);void name(Staff *h);void
16、job(Staff *h);void Sort(Staff *h);void Save(Staff &h,fstream &io);#endifMy_function.cpp:#includeMy_function.hvoid Login(Staff *p,Staff *s)int i;cout请输入该职员职务(1经理、2技术员、3销售员、4销售经理)i;switch(i)case 1:*s=new Manager;break;case 2:*s=new Technician;break;case 3:*s=new Sales;break;case 4:*s=new Sales_Manager
17、;break;(*s).set();(*p).set_next(*s);*p=*s;void Query(Staff *h)int i;cout请选择:1 按姓名查询endl;cout 2 按部门查询i;switch(i)case 1:name(h);break;case 2:job(h);break;default:cout请重新选择endl;void name(Staff *h)Staff *p=h,*s=h;string name;cout请输入您要查询职员名字name;while(*p).get_next()if(*p).get_name()=name)(*p).get();s=(*p
18、).get_next();p=s;if(*p).get_name()=name)(*p).get();cout搜寻结束endl;void job(Staff *h)Staff *p=h,*s=h;int job;cout请输入您要查询部门编号(1经理、2技术员、3销售员、4销售经理)job;while(*p).get_next()if(*p).get_job()=job)(*p).get();s=(*p).get_next();p=s;if(*p).get_job()=job)(*p).get();cout搜寻结束(*q).get_wage()(*s).set_next(q);z=(*q).g
19、et_next();(*q).set_next(p);(*p).set_next(z);s=q;q=(*p).get_next();elses=p;p=q;q=(*q).get_next();x=(*x).get_next();s=x;p=(*s).get_next();q=(*p).get_next();cout排序完成,退出时输出到文本查看endl;void Save(Staff &h,fstream &io)Staff *p,*s;p=h.get_next();s=h.get_next();while(p)(*p).save(io);coutendl;s=(*p).get_next();p=s;调试:1注册职员(链表实现):2查询:3排序:4.文本:二、分析程序题: 四、 总结和体会经过课程设计了解了一定得链表知识和指针使用。具体来说对链表建立,查找和排序全部进行了练习,其间对指针是用注意细节愈加明了.等等 五、 参考文件书本设 计 指 导 教 师 (签字): 教学基层组织责任人(签字): 年6月 20 日