c高校工资管理系统.docx
- 文档编号:5151413
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:49
- 大小:807.15KB
c高校工资管理系统.docx
《c高校工资管理系统.docx》由会员分享,可在线阅读,更多相关《c高校工资管理系统.docx(49页珍藏版)》请在冰豆网上搜索。
c高校工资管理系统
课程设计报告
课程名称面向对象程序设计
课题名称高校工资管理系统
专业通信工程
班级1301
学号2
姓名谢稳桩
指导教师乔汇东、胡瑛、黄哲
2015年1月3日
湖南工程学院
课程设计任务书
课程名称面向对象程序设计
课题高校工资管理系统
专业班级通信1301
学生姓名谢稳桩
学号2
指导老师乔汇东、胡瑛、黄哲
审批
任务书下达日期2014年12月26日
任务完成日期2015年1月3日
系统需求分析1
总体设计1
详细设计2
系统调试11
结果分析18
总结19
源代码19
一、设计内容与设计要求
1.课程设计目的:
面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
要求学生达到熟练掌握语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。
2.课题题目
⑴公司考勤管理系统
⑵高校学籍管理系统
⑶高校工资管理系统
⑷高校人事管理系统
⑸文件加密管理系统
3.设计要求:
⑴设计课题题目:
第5个课题是扩展课题,有能力完成的同学可以选择。
其余每位同学根据自己学号除以4所得的余数加一选择相应题号的课题。
换题者不记成绩。
⑵根据自己对应的课题完成以下主要工作:
①完成系统需求分析:
包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。
②完成系统总体设计:
包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。
③完成系统详细设计:
包括数据库需求分析;类层次图;界面设计与各功能模块实现。
④系统调试:
调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。
⑤使用说明书及编程体会:
说明如何使用你编写的程序,详细列出每一步的操作步骤。
⑥关键源程序(带注释)
⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
二、进度安排
第周星期时:
分——时:
分
星期时:
分——时:
分
星期时:
分——时:
分
星期时:
分——时:
分
课题3:
高校工资管理系统
(一)、课程设计题目:
高校工资管理系统
(二)、目的与要求:
1、目的:
(1)要求学生达到熟练掌握语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书
(三)、设计方法和基本原理:
1、问题描述(功能要求):
现一高校有五类职工:
教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。
为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。
同时注意生成的相关数据结果以文件方式存放在硬盘中。
程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),如若有职工由于工作调动,则可进行相对应的删除动作。
相关信息:
每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:
其中工资的基本构成如下:
教师:
基本工资+课时费;
实验员:
基本工资+实验室补助;
行政人员:
基本工资+行政补贴;
教师兼职实验员:
基本工资+课时费+实验室补助;
行政人员兼职教师:
基本工资+行政补贴+课时费;
其中课时费计算:
教师每一学期的基本工作量为120,教师兼职实验员每学期基本工作量为70,行政人员没有基本工作量,若每节课时费为20元;课时费=(上学期工作量-基本工作量)*20;
注意:
如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*20为负值。
2、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)写出需求分析(做什么);
(2)分析系统中的各个实体之间的关系及其属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)用户界面的设计;
(7)分析系统功能模块(系统流程图);
(8)代码编写,功能调试;
(9)完成系统总结报告以及系统使用说明书
系统需求分析
我本次的课程设计的题目为设计一个高校工资管理系统,据题目的要求,我察觉到此次课程设计需要做一个管理系统,即能够从管理系统中录入不同的职工:
1、根据职工工资的组成的不同,需要不同方式输入,再通过相应的程序计算他们的工资,来实现工资发放;
2、发放完毕则需要删除该职工的记录,所以再设置一个删除功能来实现清除记录功能;
3、如果职工录入有误或者需要相应的调动,则需要执行修改记录,因此程序还需要增添一个修改的功能,通过职工的不同编号来实现对指定职工的修改,已满足用户需求;
4、程序中还设置一个查询功能,通过编号及姓名的查找,来让用户很方便的查看某一个职工记录,其中还设置了一个查找所有职工的功能,让用户能过很清楚的知道每一个职工的工资等的情况;
5、为能过长时间保存职工的信息,所以还设计了文件保存功能,这个需要能够按要求保存数据并且能够在下次启用程序是还能继续使用。
总体设计
主菜单中主要有六个功能:
分别用于增加职工、删除职工、修改职工、查询职工、文件保存和退出,在每一级菜单中还设计了分菜单,使用户能够方便操作此工资管理系统。
详细设计
需要设计在程序中设置一个基类和五个派生类,分别为:
(人员类、基类)、(教师类)、(实验员类)、(行政人员类)、(教师兼实验员类)、(行政人员兼教师类);其中教师兼实验员类和行政人员兼教师类又是与前三个派生类有多继承关系。
通过设置不同的类来实现用户对不同类型人员的操作与调动等,再类的基础上执行相应的操作。
我定义的类如下代码:
/****************************人员类基类******************************************/
人员类
{
:
;编号
[30];姓名
;基本工资
(n)输入信息
{
;
<<"输入姓名:
">>;
}
()输出信息
{
<<"编号:
"<<<<"\t"<<"姓名:
"<<(6)<<<<"\t";
}
()保存到文件f中
{
f<<<<""<<<<"";保存编号和姓名到文件
}
()从文件f中导出数据
{
f>>>>;从文件读取到编号和姓名
}
(){}基类构造函数
};
/********************************教师类*********************************************/
教师类
{
:
;上学期工作量
()构造函数,初始化部分数据
{
800;
}
()教师总收入
{
(120)*20;返回工作量为基本工资+(工作量-120)*20
}
(n)输入教师信息
{
<<"输入教师信息:
"<<;
(n);
<<"教师工作量:
">>;
}
()输出教师信息到屏幕
{
();
<<"职位:
教师"<<"\t"<<"工资:
"<<()<<;
}
()保存到文件f中
{
(f);
f<<<<;
}
()从文件f中导出数据
{
(f);
f>>;
}
};
/********************************实验员*********************************************/
实验员
{
:
;实验员补贴
()
{
800;设置基本工资
}
()
{
;实验员总收入
}
(n)输入信息
{
<<"输入实验员信息:
"<<;
(n);
<<"输入实验员补贴金额:
";>>;
}
()输出信息
{
();
<<"职位:
实验员"<<"\t"<<"工资:
"<<()<<;
}
()保存到文件f中
{
(f);
f<<<<;
}
()从文件f中导出数据
{
(f);
f>>;
}
};
/********************************行政人员*********************************************/
行政人员
{
:
;行政补贴
:
()
{
800;设置基本工资为800
}
()
{
;总收入
}
(n)输入信息
{
<<"输入行政人员信息:
"<<;
(n);
<<"行政补贴:
";>>;
}
()输出信息
{
();
<<"职位:
行政人员"<<"\t"<<"工资:
"<<()<<;
}
()保存到文件f中
{
(f);
f<<<<;
}
()从文件f中导出数据
{
(f);
f>>;
}
};
/****************************教师兼实验员********************************************/
教师兼实验员
{
:
()
{
800;设置基本工资
}
()
{
(70)*20;工资总收入
}
(n)输入信息
{
<<"教师兼实验员信息:
"<<;
(n);
<<"上学期工作量:
">>;
<<"实验补贴金额:
";>>;
}
()输出信息
{
();
<<"职位:
教师兼实验员"<<"\t"<<"工资:
"<<()<<;
}
()保存到文件f中
{
(f);
f<<<<""<<<<;
}
()从文件f中导出数据
{
(f);
f>>>>;
}
};
/**************************行政人员兼教师*********************************************/
行政人员兼教师
{
:
()构造函数,初始化部分数据
{
800;
}
()总收入
{
*20;
}
(n)输入信息
{
<<"教师兼实验员信息:
"<<;
(n);
<<"上学期工作量:
">>;
<<"行政补贴:
";>>;
}
()输出信息
{
();
<<"职位:
行政人员兼教师"<<"\t"<<"工资:
"<<()<<;
}
()保存到文件f中
{
(f);
f<<<<""<<<<;
}
()从文件f中导出数据
{
(f);
f>>>>;
}
};
主要的代码流程以及各函数的功能:
(1)增加职工函数
函数原型:
()
输入函数:
无。
函数中输入整型数n,1~5分别表示增加教师、实验员、行政人员、教师兼实验员和行政人员兼教师,每一个职业都调用()函数,其中为全局变量,也为编号,每次输入一个职工的值会自动加1。
、、、、分别记录教师、实验员、行政人员、教师兼实验员和行政人员兼教师的输入编号,并每增加一个职工执行自动加1操作。
返回值:
无。
函数的主要流程如下:
(2)职工删除函数
函数原型:
()
输入函数:
无。
函数中输入整型数x代表要删除的职工类型,1~5分别表示增加教师、实验员、行政人员、教师兼实验员和行政人员兼教师,通过x的值来调用(x)函数显示该职业的人员的相关信息,用户再选择想要删除的人的编号执行删除功能,其中输入的编号作为参数传递给()函数搜索并返回一个0~5之间的整数,1~5分别表示增加教师、实验员、行政人员、教师兼实验员和行政人员兼教师,根据返回值选择性删除该类型的人。
返回值:
无
的主要流程如下:
(3)修改职工函数
修改函数和删除函数差不多,只是最后不是执行覆盖删除,而是再执行一次输入功能重新录入信息达到修改的目的。
其中用到的函数是通过传递编号和整型i,在函数中,编号和每个类中信息的编号,如:
t[i]进行比较,如果相同则返回该类的编号,1~5分别表示教师、实验员、行政人员、教师兼实验员和行政人员兼教师,i表示该类中第i个职工。
函数的框图如下:
(4)查询函数
函数原型:
()
输入函数:
无参数,函数中输入查询方式查找,分别按照编号,姓名和全部显示的方式查找,编号查找通过函数找出来显示信息,姓名查找则通过函数来查找姓名并显示查询结果。
返回值:
无
函数是一个查找姓名的函数通过参数的传递来查找,参数c表示该职工的类型,通过传递类型而决定再哪个类里面查找该职工工资信息,如通过([i])来进行比较行政人员兼教师的名字,如果姓名匹配成功则用[i]()输出该人工资信息。
(c)的图:
系统调试
(调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整)
(调试每个主要步骤都要有截图和截图内容的说明,说明程序执行的目的和效果,注意截图输入参数要正规,不能是1\1\1\1\1\之类的)
1、程序主菜单设置了6个选项,菜单上的基本功能都已显示齐全,一目了然,可以通过1增加职工,2删除职工,3职工修改,4职工查询,5文件保存,还有一个退出。
2、增加职工:
可以选择增加的职工类型来进行添加,如添加教师如下图。
3、删除职工:
删除职工也可以根据职工类型删除,为方便操作,在每个删除的类型中都有显示该类的所有职工信息,用户可以根据信息删除,以防误删。
这个是删除前的显示
删除成功就则会有提示删除成功。
4、修改职工也是根据职工的类型来修改,修改前也会有相应的显示,再根据编号来修改用户想要修改的职工,
修改函数是通过调用输入函数来实现的,所以会将所有信息重置,没有实现单项修改的功能
修改完之后的效果如图:
5、查询职工:
职工查询有通过三种方法查询,1按照编号;2按照姓名;3按类型显示全部。
编号查询
按照姓名查询:
查找全部信息:
6、文件保存:
可以将输入的数据保存到文件中,实现永久保存,方便下次启动时继续使用。
保存在文件“”的文件中,也可以打开查看。
结果分析
(总结自己独到的设计特点和不足之处。
)
设计特点:
在这次课程设计中我,根据老师给的模板也用了数组的方式来储存信息,通过数组的方式实现存放不同职工信息,并且巧妙的运用全局变量来记录职工的编号,在用一次输入函数,其数值会自动加一,达到数据记录的目的。
在类的定义中也用了虚继承以及多继承来定义类。
不足之处:
这个程序在执行的过程中也发现有几个问题,就比如删除函数中,选择删除教师的功能里,没有限制选择的编号必须是该类的职工,也就是说在删除教师里面会出现误删其他类的职工信息;还有这是用数组存放数据,而定义的数组有限,只能存放一定范围类的信息。
无法实现任输入多少信息的功能。
总结
这次课程设计我刚接到题目的时候很迷茫,所以我在XX上找了很多类似的程序来编,但是网上的程序却多种多样,有的用链表指针来做,但是看起来很麻烦,很难实现将那些方法运用到我这次课程设计中。
经过几天的试验,我感觉无法通过网上的方法做出来,但是当老师提供了示范课题的程序的时候,我发现老师用了数组的方式来存放职工信息,这种方法简单易懂,所以我最终采用了老师和XX上的方法结合。
在编写查询函数的时候也遇到了一些问题,比如((a[i]))这个代码我失败了很多次才试出来,后来XX才知道函数的返回值是比较相同则返回0,如果不相同则返回1,但是要执行接下来的函数则需要相反的返回值,在经过多次调试,我使用了“!
”来取反。
编写程序的过程中遇到的问题不止这一个,但是通过多种途径,最终都一一解决,在解决问题的过程中,我也深刻的体会了程序的编写需要耐心与细心,这次课程设计中我看到了自己还有很多方面的不足,希望在下来的学习中会不断总结反思,达到良好的学习效果。
源代码
<>
<>
<>
;
/****************************人员类基类******************************************/
人员类
{
:
;编号
[30];姓名
;基本工资
(n)输入信息
{
;
<<"输入姓名:
">>;
}
()输出信息
{
<<"编号:
"<<<<"\t"<<"姓名:
"<<(6)<<<<"\t";
}
()保存到文件f中
{
f<<<<""<<<<"";保存编号和姓名到文件
}
()从文件f中导出数据
{
f>>>>;从文件读取到编号和姓名
}
(){}基类构造函数
};
/********************************教师类*********************************************/
教师类
{
:
;上学期工作量
()构造函数,初始化部分数据
{
800;
}
()教师总收入
{
(120)*20;返回工作量为基本工资+(工作量-120)*20
}
(n)输入教师信息
{
<<"输入教师信息:
"<<;
(n);
<<"教师工作量:
">>;
}
()输出教师信息到屏幕
{
();
<<"职位:
教师"<<"\t"<<"工资:
"<<()<<;
}
()保存到文件f中
{
(f);
f<<<<;
}
()从文件f中导出数据
{
(f);
f>>;
}
};
/********************************实验员*********************************************/
实验员
{
:
;实验员补贴
()
{
800;设置基本工资
}
()
{
;实验员总收入
}
(n)输入信息
{
<<"输入实验员信息:
"<<;
(n);
<<"输入实验员补贴金额:
";>>;
}
()输出信息
{
();
<<"职位:
实验员"<<"\t"<<"工资:
"<<()<<;
}
()保存到文件f中
{
(f);
f<<<<;
}
()从文件f中导出数据
{
(f);
f>>;
}
};
/********************************行政人员*********************************************/
行政人员
{
:
;行政补贴
:
()
{
800;设置基本工资为800
}
()
{
;总收入
}
(n)输入信息
{
<<"输入行政人员信息:
"<<;
(n);
<<"行政补贴:
";>>;
}
()输出信息
{
();
<<"职位:
行政人员"<<"\t"<<"工资:
"<<()<<;
}
()保存到文件f中
{
(f);
f<<<<;
}
()从文件f中导出数据
{
(f);
f>>;
}
};
/****************************教师兼实验员********************************************/
教师兼实验员
{
:
()
{
800;设置基本工资
}
()
{
(70)*20;工资总收入
}
(n)输入信息
{
<<"教师兼实验员信息:
"<<;
(n);
<<"上学期工作量:
">>;
<<"实验补贴金额:
";>>;
}
()输出信息
{
();
<<"职位:
教师兼实验员"<<"\t"<<"工资:
"<<()<<;
}
()保存到文件f中
{
(f);
f<<<<""<<<<;
}
()从文件f中导出数据
{
(f);
f>>>>;
}
};
/**************************行政人员兼教师*********************************************/
行政人员兼教师
{
:
()构造函数,初始化部分数据
{
800;
}
()总收入
{
*20;
}
(n)输入信息
{
<<"教师兼实验员信息:
"<<;
(n);
<<"上学期工作量:
">>;
<<"行政补贴:
";>>;
}
()输出信息
{
();
<<"职位:
行政人员兼教师"<<"\t"<<"工资:
"<<()<<;
}
()保存到文件f中
{
(f);
f<<<<""<<<<;
}
()从文件f中导出数据
{
(f);
f>>>>;
}
};
t[100];
a[100];
m[100];
[100];
[100];
00000;
0;
()增加员工
{
(1)
{
("");
<<"*************************"<<;
<<"请输入您要增加的职工类型:
1、教师2、实验员3、行政人员4、教师兼实验员5、行政人员兼教师6、返回上级目录"<<;
n;
>>n;
(1)
{
t[]();
;
}
(2)
{
a[]();
;
}
(3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高校 工资管理 系统