版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告题 目 高校工资管理系统 (院)系 计算机科学与技术系 专业 计算机科学与技术 班级 0401 学号 34 学生姓名 导师姓名 完成日期 目录c+课程设计课程设计任务。(3)系统流程图及类的层次图。(5)系统源程序。(8)课程设计总结。(21)课程设计任务课程设计题目: 高校工资管理系统目的与要求:1、目的: (1)要求学生达到熟练掌握c+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。2、基本要求: (1)要求利用面向对象的方法以及c+的编程思想来完成系统的设计; (2)要求在设计的过程
2、中,建立清晰的类层次;(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;(3)在系统的设计中,至少要用到面向对象的一种机制。3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。4、写出设计说明书 设计方法和基本原理:1、功能要求 问题的描述(功能要求):现一高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。同时注意生成的相关数据结果以文件方式存放在硬盘中。程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),如若有职工由于工作调动,则
3、可进行相对应的删除动作。相关信息:每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:其中工资的基本构成如下: 教师: 基本工资+课时费; 实验员: 基本工资+实验室补助; 行政人员: 基本工资+行政补贴; 教师兼职实验员: 基本工资+课时费+实验室补助; 行政人员兼职教师:基本工资+行政补贴+课时费;(其中: (1).课时费:教师每一学期的基本工作量为120,实验员每学期基本工作量为70,行政人员没有基本工作量,每节课时费为20元;课时费=(上学期工作量-基本工作量)*20; 注意:如果上学期基本工作量没
4、完成,则其(上学期工作量-基本工作量)*20为负值。 (2).基本工资:教师800元,实验员650元,行政人员750元。 (3).行政补贴:250元。 (4).实验室补助:150元。2、问题的解决方案:根据系统功能要求,可以将问题解决分为以下步骤: a) 写出需求分析(该程序要实现什么什么样的功能) b)分析系统中的各个实体之间的关系及其属性和行为; c)根据问题描述,设计系统的类层次; d)完成类层次中各个类的描述(包括属性和方法); e)完成类中各个成员函数的定义; f)用户界面的设计 g)分析系统功能模块(系统流程图) h)代码编写 i)功能调试; j)完成系统总结报告以及系统使用说明书
5、。设计思路此课题核心是研究高校工资的管理,我们要本着以工资自动发放为目的的思想进行研究设计。系统需要作到从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),任意职工信息的存入,如若有职工由于工作调动,则可进行相对应的删除动作等功能,那我们就要从这几方面着手研究。首先,可以根据职工职位的不同将其分类,系统在运行的时候可以根据不同的职位选择不同的类,从而实现任意职工工资.信息的查询。接着就是程序功能,我们可以根据系统的各种功能先设计出适应各种功能的程序,在将这些分散的程序块利用我们学习的c+的有关知识进行链接.合并,就可以达到工资自动发放的目的了。从该课程设计的要求可
6、以看出该程序有以下五类:(1)教师类.(2)实验员类.(3)行政人员类.(4)教师兼实验员类.(5)行政人员兼教师类.系统的分部程序共包括以下几个:(1).新增职工.(2).删除职工.(3)修改职工信息.(4).查看职工信息.(5).数据存盘.(6).数据读取.(7)退出系统程序.所以我们就要先构造出这五类七函数,在将他们进行封装,整合,从而设计出一个完美的工资自动发放的系统。系统流程图及类的层次图。类的层次图 person no,name,duty,salary,next,person( ),incoming( ),input( ),output( )teacher assistant ma
7、nager teacher_assistant manager_teacher teacher( ), assistant( ), manager( ), teacher_assistant( ), manager_teacher( ),input( ), input( ), input( ), input( ), input( ),output( ), output( ), output( ), output( ), output( ),incoming( ) incoming( ) incoming( ) incoming( ) incoming( ) 开 始 函数流程图(!)主函数流程
8、创 建 高 校 对 象显 示 菜 单接 受 输 入根据输入执行工资操作退出在? 结 束(2)college:add() (3)college:delete()开 始开 始 输入职工编号输入职工信息查找要删除结点输入数据,创建对象结点 结点存在?职工结点加入链表结 束 提示为找到删除结点 (4)college:modify()结 束开 始输入职工编号 (5)college:print()开 始查到结点输出所有职工信息结点存在?结 束修改结点提示未找到结 束(6)college:save()开 始是否保存?保存信息退到主菜单结 束(7)college:load()开 始打开职工数据文件读一条记录链
9、表接入结点根据职工类型创建结点文件未结束 y n读下面一行记录关闭文件结 束系统源程序#include #include #include #include #include class personprotected: int no;/编号 char name15;/姓名 int duty; /人员类别标志(1-教师,2-实验员,3-行政人员,4-教师兼实验员,5-行政兼教师) double salary;/基本工资 person *next;/指针域public:person(int no,char *name,int duty) this-no=no;strcpy(this-name,n
10、ame);this-duty=duty;virtual double incoming()=0;virtual void output()=0;friend class college;class teacher:public person /教师类protected:int hour;public:void gethour(int h)hour=h;teacher(int no,char *name,int duty,int hour):person(no,name,duty) this-hour=hour;this-salary=800;int gethour() return hour;
11、double incoming() return (hour-120)*20+salary);void output() coutnotnamet教师tgethour()tincoming()hour=hour; this-salary=650; this-allowance=150; int gethour() return hour;double incoming()return salary+allowance+(hour-70)*20;void output()coutnotnamet实验员tgethour()tincoming()salary=750;this-allowance=2
12、50;double incoming()return salary+allowance;void output()coutnotnamet行政人员tincoming()salary=800; this-allowance=150; this-hour=hour;double incoming()return (hour-120)*20+salary+allowance); int gethour()return hour;void output()coutnotname教师兼实验员tgethour()tincoming()salary=750;this-allowance=250;this-h
13、our=hour;double incoming()return (hour-120)*20+allowance+salary);int gethour()return hour;void output()coutnotnamet行政人员兼tgethour()tincoming()next)p=p-next;delete pl;pl=p;pl=0;void college:add() /增加职工person *p;/新结点指针int no;char name20;int duty;int hour;coutn* 新增员工 *n;do cout请选择要增加的岗位endlduty;while(du
14、ty5);coutno;coutname;if(duty=1) couthour;else if(duty=2)couthour;else if(duty=4)couthour;else if(duty=5)couthour;/创造新职工结点switch(duty) case 1:p=new teacher(no,name,duty,hour);break; case 2:p=new assistant(no,name,duty,hour);break; case 3:p=new manager(no,name,duty);break; case 4:p=new teacher_assista
15、nt(no,name,duty,hour);break; case 5:p=new manager_teacher(no,name,duty,hour);break;p-next=0;/职工结点加入链表if(pl)/若已存在结点 person *tp; tp=pl; while(tp-next)/查找尾结点 tp=tp-next; tp-next=p;/连接else/若不存在结点pl=p;/连接void college:delete()int no;coutn* 删除职员 *n;coutno;/查找要删除的结点person *p1,*p2;p1=pl;while(p1)if(p1-no=no)
16、 break;else p2=p1; p1=p1-next;/删除结点if(p1!=null)/若找到则删除 if(p1=pl)/若要删除的结点是第一个结点 pl=p1-next; delete p1; else/若要删除的结点是后续结点 p2-next=p1-next; delete p1; coutn编号为no的员工已经删除n; else coutn编号为no的员工不存在n;void college:modify() int no,duty,hour; char name20; person *p1,*p2; p1=pl; coutn* 修改职员信息 *n; coutno; /查找要修改的
17、结点 while(p1) if(p1-no=no) break; else p2=p1; p1=p1-next; /修改寻找到的节点 if(p1=null) cout输入的职员编号不存在!n; else cout该职工的信息如下:output();cout选择要修改的岗位duty;if(p1-duty!=duty)coutno;coutname;if(duty=1)couthour;else if(duty=2)couthour;else if(duty=4)couthour;else if(duty=5)couthour;/创建新职工结点 person *p; switch(duty) ca
18、se 1:p=new teacher(no,name,duty,hour);break; case 2:p=new assistant(no,name,duty,hour);break; case 3:p=new manager(no,name,duty);break; case 4:p=new teacher_assistant(no,name,duty,hour);break; case 5:p=new manager_teacher(no,name,duty,hour);break; /职工结点替换到链表 p-next=p1-next; if(p1=pl)/若要替换的结点是第一个结点 p
19、l=p; else/若要删除的结点是后续结点 p2-next=p; /删除原来的职工结点 delete p1;elsecoutp1-no; coutp1-name;if(duty=1)couthour; (teacher *)p1)-gethour(hour);p1-incoming();else if(duty=2)couthour;(teacher_assistant *)p1)-gethour(hour);p1-incoming();else if(duty=4)couthour;(teacher_assistant *)p1)-gethour(hour);p1-incoming();e
20、lse if(duty=5)couthour;(manager_teacher *)p1)-gethour(hour);p1-incoming();cout修改成功!n; void college:print() /输出职工信息 person *p; p=pl; if(!p) cout数据不存在,请输入数据!n; else coutsetw(5)编号setw(15)名字setw(15)职位setw(15)薪水duty) case 1: coutsetw(5)nosetw(15)namesetw(15)教师setw(15)incoming()endl; break; case 2: coutse
21、tw(5)nosetw(15)namesetw(15)实验员setw(15)incoming()endl; break; case 3: coutsetw(5)nosetw(15)namesetw(15)行政人员setw(15)incoming()endl; break; case 4: coutsetw(5)nosetw(15)namesetw(15)教师兼实验员setw(15)incoming()endl; break; case 5: coutsetw(5)nosetw(15)namesetw(15)行政人员兼教师setw(15)incoming()next; void college:
22、save() /职工信息存盘 ofstream fsave; char c; coutc; if(c=y|c=y) fsave.open(data.txt,ios:out); person *p=pl; while(p) fsavenotnametdutytincoming()duty=1) fsavegethour()duty=2) fsavegethour()duty=4) fsavegethour()duty=5) fsavegethour()t; fsavenext; fsave.close();/保存 coutnonamedutysum;if(duty=1|duty=2|duty=4
23、|duty=5)floadhour;while(fload.good()switch(duty) case 1:p=new teacher(no,name,duty,hour); break; case 2:p=new assistant(no,name,duty,hour); break; case 3:p=new manager(no,name,duty); break; case 4:p=new teacher_assistant(no,name,duty,hour); break; case 5:p=new manager_teacher(no,name,duty,hour); if(
24、pl) person *tp; tp=pl; while(tp-next) tp=tp-next; tp-next=p; else pl=p; floadnonamedutysum; if(duty=1|duty=2|duty=4|duty=5) floadhour; fload.close();coutn职员数据读取完成.n;void main() char c; college a; while(1) cout nnnnn nn 高校工资管理系统n; cout 1增加职员 n; cout 2删除职员 n; cout 3修改职员信息 n; cout 4查看职员信息 n; cout 5数据存盘
25、 n; cout 6数据读取 n; cout 7-退出 n; cout *; coutc; switch(c) case 1:a.add(); break; case 2:a.delete(); break; case 3:a.modify(); break; case 4:a.print(); break; case 5:a.save(); break; case 6:a.load(); break; case 7: char c; cout你确定退出吗?(y,n)c; if (c=y | c=y) exit(1); default: break; 课程设计总结面向对象程序设计又称c+,面向对象的程序设计语言设计的出发点是为了能更直接的描述客观世界中存在的事物(即对象)以及他们之间的关系。c+课程是我们所接触的一门专业的计算机程序设计语言,是应用最广泛的程序设计语言之一,它完全兼容了c。但是和我们以前学习的c又有所不同,比我们以前学的c更光更深,在整个课程设计的过程中我们都有深深的体会。c+已经不能在单纯的理解了,要有一个清晰的头脑。我们应该认识到c+强调对数据及数据操作的封装.继承和派生,这些功能在我的工资管理系统程序中也有用到。 在工资管理系统程序中,由一个基本的类pe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026春招:销售专员笔试题及答案
- 临床护理工作质量评估
- 医疗机构内部礼仪培训与实施
- 2026年河南农业职业学院高职单招职业适应性测试模拟试题有答案解析
- 智能化医学影像诊断系统
- 2026年包头职业技术学院单招综合素质笔试备考试题带答案解析
- 基层医疗卫生服务提升策略
- 护理专业发展与行业需求分析
- 2026年河源职业技术学院单招综合素质笔试备考题库带答案解析
- 财税课件代做
- 2025秋人教版七年级上册音乐期末测试卷(三套含答案)
- 2025福建德化闽投抽水蓄能有限公司招聘4人(公共基础知识)综合能力测试题附答案
- “十五五规划纲要”解读:和美乡村宜居宜业
- 广东省广州市2026届高三年级上学期12月调研测试数学(广州零模)(含答案)
- 手机供货协议书
- 民俗的特征教学课件
- 山东省潍坊市2023-2024学年高一上学期期末考试地理试题(含答案)
- 设计素描教案
- 2025年汽车零部件行业市场调研:细分品类、技术创新及配套需求报告
- 北京市海淀区2024-2025学年七年级上学期期末道德与法治试卷
- 市政道路照明维护方案
评论
0/150
提交评论