




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书任务书一、设计题目高校工资管理系统二、主要内容三、具体要求及应提交的材料高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。同时注意生成的相关数据结果以文件方式存放在硬盘中。程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),如若有职工由于工作调动,则可进行相对应的删除工作。相关信息: 每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:其中工资的基本构成如下: 教师: 基本工资+课时费; 实验员: 基本工资+实验室补助; 行政人员: 基本工资+行政补贴; 教师兼职实验员: 基本工资+课时费+实验室补助; 行政人员兼职教师:基本工资+行政补贴+课时费;(其中: 1.课时费:教师每一学期的基本工作量为120,实验员每学期基本工作量为70,行政人员没有基本工作量,每节课时费为20元;课时费=(上学期工作量-基本工作量)*20; 注意:如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*20为负值。 2.基本工资:教师800元,实验员650元,行政人员750元。 3.行政补贴:250元。 4.实验室补助:150元。)四、主要技术路线提示五、进度安排六、推荐参考资料(不少于3篇)1 引 言1.1 问题的提出随着高等学校的快速发展,高校规模越来越大,教职工的数量也越来越多,高校工资管理更加的复杂化,儿工资管理是一项琐碎、复杂而又十分细致的工作,工资计算、发放、核算的工作量很大,这就会耗费工作人员大量的时间和精力,计算机进行工资发放工作,不仅能够保证工资核算准确无误,而且还可以利用计算机对有关工资的各种信息进行统计,服务于财政部门其他发面的核算和财务处理,同时计算机具有着手工管理嗦无法比拟的优点。高校工资管理系统便是以计算机为工具,通过对工资管理所需的信息管理,优化了管理体系,使其高效化、智能化,也提高了透明度和互动性。2. 程序的主要功能2.1添加功能可以从键盘或文件录入职工的相应信息。2.2删除功能能够对指定的职工信息进行删除。2.3 显示功能能够显示职工编号、姓名、类别、本学期任职情况和工资等信息。2.4查找功能根据你键入的职工编号,显示其详细信息。2.5计算功能 根据你键入的职工相关信息自动计算其工资功能。3 程序运行平台4 总体设计5 模块分析5.1 添加模块系统将提示用户输入新添加的职员的信息,插入在链表中。void college:add() /增加职工 person *p=pl; while(p-next)p=p-next; int ch; coutch; teacher *pt; /创建新结点,录入数据,连接到链表 assistant *pa; manager *pm; teacher_assistant *pta; manager_teacher *pmt; switch(ch) case 0: pt=new teacher; pt-input(); p-next=pt; break; case 1: pa=new assistant; pa-input(); p-next=pa; break; case 2: pm=new manager; pm-input(); p-next=pm; break; case 3: pta=new teacher_assistant;pta-input(); p-next=pta; break; case 4: pmt=new manager_teacher; pmt-input(); p-next=pmt; break; default: return; 输入需要添加的教职工类别ch (0-教师,1-实验员,2-行政人员,3-教师兼实验员,4-行政兼教师) 创建新结点,录入数据,连接到链表 switch(ch)case0:pt=new teacher; pt-input();p-next=pt; break;case 1: pa=new assistant; pa-input(); p-next=pa; break;case 2: pm=new manager; pm-input();p-next=pm; break;case 3: pta=new teacher_assistant;pta-input();p-next=pta; break;case 4: pmt=new manager_teacher; pmt-input(); p-next=pmt;break;5.2 显示模块显示模块将输出所有职员的主要资料 。void college:print() /显示输出职工信息coutn* 职工信息表 *n; coutnext; if(!p)coutoutput(); p=p-next; person *p=pl-next; true !p falsecoutoutput(); p=p-next;/找到并输出职工信息5.3 删除模块首先由用户输入要删除的单个职员姓名,然后调用删除函数,删除该名职员的资料。int college:find(int id,person *p1,person *p2) /查找职工结点*p1=pl-next; *p2=pl; while(*p1)if(*p1)-no=id) break; /找到else *p2=*p1; /继续查找 *p1=(*p1)-next;return *p1?1:0;void college:delete() /删除职工coutn* 删除职工 *n;int no; person *p1,*p2; coutno; if(!find(no,&p1,&p2)coutnext=p1-next; /连接delete p1; coutnext=p1-next; /连接delete p1;cout正确删除!n;coutnext; *p2=pl; while(*p1)if(*p1)-no=id) break; /找到else *p2=*p1; /继续查找 *p1=(*p1)-next;return *p1?1:0;void college:find1() /查询职工信息coutn* 查询职工 *n;int no; person *p1,*p2; coutno; if(!find(no,&p1,&p2)cout指定的人员没有找到!n;elsecout编号 姓名 岗位 课时 收入情况n;coutsetw(4)nosetw(6)namesetw(4)dutysetw(8)hourssetw(8)incoming()endl; 由输入的职工编号查找职工结点 找到 未找到按照格式输出所查找到的职工相关信息cout指定的人员没有找到!n;结论通过这次课程设计,我对c+又有了更深一步的了解,尤其是关于指针、链表等数据结构,还有类的使用,基本上可以灵活运用指针数组了。类与对象的使用使程序更加模块化,与客观世界的联系也更为紧密。在编写程序之前对自己所要编写的程序所要实现的功能,使用什么结构等要有大致的构思,这样在编写时思路才会更清晰,程序出错的几率降低,程序总体上的考虑也能更周全、运行更顺畅。 附 录附录1 源程序代码#include #include #include #include #include #include const int p=20;class person /定义抽象类protected:int no; /编号 char name20; /姓名 int duty; /人员类别:0-教师,1-实验员,2-行政人员,3-教师兼实验员,4-行政兼教师 int hours; /基本工作量person *next; /指针域public:person() /构造基类next=0; /指针域设为空virtual person() /基类虚析构virtual void input()=0; /从键盘输入数据 virtual void input(ifstream& ifs)=0; /从文件输入数据 virtual void output()=0; /向屏幕输出数据 virtual void output(ofstream& ofs)=0; /向文件输出数据 virtual int incoming()=0; /计算收入 friend class college;class teacher:virtual public person /教师类public: teacher() /构造函数,初始化部分数据duty=0; void input() /键盘补充输入其它数据coutno; coutname; couthours; void input(ifstream& ifs) /从文件输入数据ifsnonamedutyhours; void output()coutsetw(4)nosetw(6)namesetw(4)dutysetw(8)hourssetw(8)incoming()endl; void output(ofstream& ofs) ofssetw(4)nosetw(6)namesetw(4)dutysetw(8)hourssetw(8)endl; int incoming() /计算教师工资 return hours*p-1600; ;class assistant:virtual public person /实验员类public: assistant()duty=1; void input() coutno; coutname; couthours; void input(ifstream& ifs) ifsnonamedutyhours; void output() coutsetw(4)nosetw(6)namesetw(4)dutysetw(8)hourssetw(8)incoming()endl; void output(ofstream& ofs) ofssetw(4)nosetw(6)namesetw(4)dutysetw(8)hourssetw(8)endl; int incoming() return hours*p-600; ;class manager:virtual public person /行政人员类public:manager()duty=2;hours=0; void input()coutno; coutname; void input(ifstream& ifs) ifsnonameduty; void output() coutsetw(4)nosetw(6)namesetw(4)dutysetw(8)hourssetw(8)incoming()endl; void output(ofstream& ofs) ofssetw(4)nosetw(6)namesetw(4)dutyhourssetw(8)endl; int incoming() return 1000;class teacher_assistant:public teacher,public assistant /教师兼实验员类public:teacher_assistant() duty=3; void input()coutno; coutname; coutteacher:hours; void input(ifstream& ifs) ifsnonamedutyteacher:hours; void output() coutsetw(4)nosetw(6)namesetw(4)dutysetw(8)teacher:hourssetw(8)incoming()endl; void output(ofstream& ofs) ofssetw(4)nosetw(6)namesetw(4)dutysetw(8)teacher:hourssetw(8)endl; int incoming() /计算工资 return 1450+teacher:hours*p;class manager_teacher:public manager,public teacher /行政人员兼教师类public:manager_teacher()duty=4; void input() coutno; coutname; coutmanager:hours; void input(ifstream& ifs) ifsnonamedutymanager:hours; void output()coutsetw(4)nosetw(6)namesetw(4)dutysetw(8)manager:hourssetw(8)incoming()endl; void output(ofstream& ofs) ofssetw(4)nosetw(6)namesetw(4)dutysetw(8)manager:hourssetw(8)next; delete p; p=pl;pl=0;void college:add() /增加职工 person *p=pl; while(p-next)p=p-next; int ch; coutch; teacher *pt; /创建新结点,录入数据,连接到链表 assistant *pa; manager *pm; teacher_assistant *pta; manager_teacher *pmt; switch(ch) case 0: pt=new teacher; pt-input(); p-next=pt; break; case 1: pa=new assistant; pa-input(); p-next=pa; break; case 2: pm=new manager; pm-input(); p-next=pm; break; case 3: pta=new teacher_assistant;pta-input(); p-next=pta; break; case 4: pmt=new manager_teacher; pmt-input(); p-next=pmt; break; default: return;void college:clear() /清除职工结点,仅保留头结点person *p=pl-next; while(p) pl-next=p-next; delete p; p-next=pl-next;int college:find(int id,person *p1,person *p2) /查找职工结点*p1=pl-next; *p2=pl; while(*p1)if(*p1)-no=id) break; /找到else *p2=*p1; /继续查找 *p1=(*p1)-next;return *p1?1:0;void college:delete() /删除职工 coutn* 删除职工 *n; int no; person *p1,*p2; coutno; if(!find(no,&p1,&p2)coutnext=p1-next; /连接delete p1; cout正确删除!n;void college:find1() /查询职工信息coutn* 查询职工 *n;int no; person *p1,*p2; coutno; if(!find(no,&p1,&p2)cout指定的人员没有找到!n;elsecout编号 姓名 岗位 课时 收入情况n;coutsetw(4)nosetw(6)namesetw(4)dutysetw(8)hourssetw(8)incoming()endl;void college:print() /输出职工信息coutn* 职工信息表 *n; coutnext; if(!p)coutoutput(); p=p-next;void college:save() /职工信息存盘ofstream f(person.dat,ios:out); /打开文件 /遍历输出至文件person *p=pl-next; while(p)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北省2025届数学七下期末学业质量监测试题含解析
- 企业战略影响下的可持续发展路径试题及答案
- 续方管理中的难点与对策计划
- 重庆十一中2025届数学八下期末达标检测模拟试题含解析
- 学期工作总结与展望计划
- 江苏省苏州市立达中学2025届数学七下期末学业质量监测试题含解析
- 急诊医学志愿者的参与计划
- 新年实现财务管理的工作安排计划
- 紧贴时事的计算机二级VB试题及答案
- 水务管理数字化转型分析计划
- 6.3 心理课堂-职业生涯规划实践课(生涯幻游-体验自己十年后一天的生活)
- 胸痛单元建设课件
- 广西壮族自治区桂林市各县区乡镇行政村村庄村名明细及行政区划划分代码居民村民委员会
- 6提高电缆线路施工质量一次合格率QC成果
- DB41-T 2322-2022水资源公报数据库设计规范
- 中药药理章化痰止咳平喘药农大
- 水泥物资供应、运输及售后服务方案
- 慢性心衰的解决之道“CRT”心脏再同步治疗课件
- 山西省义务教育阶段中小学文科教学仪器设备配备标准
- 高效液相色谱法分析(纽甜)原始记录
- DB5132∕T 76-2022 熊猫级民宿的划分与评定
评论
0/150
提交评论