高校工资管理系统doc.docx
- 文档编号:8896304
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:37
- 大小:294.11KB
高校工资管理系统doc.docx
《高校工资管理系统doc.docx》由会员分享,可在线阅读,更多相关《高校工资管理系统doc.docx(37页珍藏版)》请在冰豆网上搜索。
高校工资管理系统doc
课程设计报告
课程名称面向对象程序设计
课题名称高校工资管理系统
专业计算机科学与技术
班级计算机1181班
学号201113030122
姓名宋思达
指导教师李珍辉谭小兰
2012年12月15日
湖南工程学院
课程设计任务书
课程名称面向对象程序设计
课题高校工资管理系统
专业班级计算机1181班
学生姓名宋思达
学号201113030122
指导老师李珍辉谭小兰
审批
任务书下达日期2012年12月15日
任务完成日期2013年01月05日
一、设计内容与设计要求
1.课程设计目的:
面向对象程序设计课程设计是集中实践性环节之一,是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
要求学生达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。
2.课题题目
高校工资管理系统
3.设计要求:
(1)根据自己对应的课题完成以下主要工作:
①完成系统需求分析:
包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。
②完成系统总体设计:
包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。
③完成系统详细设计:
包括数据库需求分析;数据库概念结构设计(E-R图);数据库逻辑结构设计;类层次图;界面设计与各功能模块实现。
④系统调试:
调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。
⑤使用说明书及编程体会:
说明如何使用你编写的程序,详细列出每一步的操作步骤。
⑥关键源程序(带注释)
(2)按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。
(3)不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。
二、进度安排
第17周星期二8:
00——12:
00
星期三8:
00——12:
00
星期四8:
00——12:
00
星期五8:
00——12:
00
星期六8:
00——12:
00
第18周星期五8:
00——12:
00
三、参考书籍
1.《C++程序设计课程设计》刘振安编著TP312C563
2.《C++Builder和Delphi课程设计与系统开发案例》伍俊良清华大学出版社7-302-06072-X
3.VisualC++课程设计案例精编严华峰中国水利水电出版社7-5084-2007-12004
4.VisualC++课程设计与系统开发案例伍俊良清华大学出版社7-302-05968-32002
5.VisualC++语言课程设计:
案例精选与编程指导陈清华_朱红东南大学出版社7-81089-275-42003
6.VisualC++课程设计案例精编中国水利水电出版社7-5084-1004-12002
7.数据结构课程设计案例精编:
用C/C++描述李建学_李光元_吴春芳清华大学出版社7-302-14536-92007
(编程平台不限,vc++,c++Builder等等。
)
高校工资管理系统
(一)、课程设计题目:
高校工资管理系统
(二)、目的与要求:
1、目的:
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:
(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;
(2)要求在设计的过程中,建立清晰的类层次;
(3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
(4)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:
在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书
(三)、设计方法和基本原理:
1、问题描述(功能要求):
现一高校有五类职工:
教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。
为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。
同时注意生成的相关数据结果以文件方式存放在硬盘中。
程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),如若有职工由于工作调动,则可进行相对应的删除动作。
相关信息:
每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:
其中工资的基本构成如下:
教师:
基本工资+课时费;
实验员:
基本工资+实验室补助;
行政人员:
基本工资+行政补贴;
教师兼职实验员:
基本工资+课时费+实验室补助;
行政人员兼职教师:
基本工资+行政补贴+课时费;
(其中:
(1)课时费:
教师每一学期的基本工作量为120,实验员每学期基本工作量为70,行政人员没有基本工作量,每节课时费为20元;课时费=(上学期工作量-基本工作量)*20;
注意:
如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*20为负值。
(2)基本工资:
教师800元,实验员650元,行政人员750元。
(3)行政补贴:
250元。
(4)实验室补助:
150元。
2、问题的解决方案:
根据系统功能要求,可以将问题解决分为以下步骤:
(1)写出需求分析(做什么);
(2)分析系统中的各个实体之间的关系及其属性和行为;
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述(包括属性和方法);
(5)完成类中各个成员函数的定义;
(6)用户界面的设计;
(7)分析系统功能模块(系统流程图);
(8)代码编写,功能调试;
(9)完成系统总结报告以及系统使用说明书。
1.系统化需求分析
随着计算机技术的飞速发展计算机在高校管理中应用的普及利用计算机实现高校人事管理势在必行。
对于高校来说利用计算机支持高校高效率完成人事管理的日常事务是适应现代高校制度的要求推动高校人事管理走向科学化、规范化的必要条件计算机管理所无法比拟的优点检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大的提高人事管理的效率也是高校科学化、正规化的管理与世界接轨的重要条件,学校有对职工具体信息操作,对职工信息的查询,修改,增加和删除,工资的计算和发放需求.这个系统可以保存员工信息,根据输入的数据自动实现工资发放功能,也可以查询该职工所有信息,也可以按职工在编号或姓名来实现职工在修改,增加和删除功能,实现了任意职工的工资查询。
职工信息保存在文件里,实现文件保存功能
2.总体设计
3.详细设计
GUANLI
-name:
string
-sex:
string
-address:
string
-id:
string
-job:
string
-number:
int
-classhour:
int
-newclsshour:
int
-pay:
int
-year:
int
-month:
int
-day:
int
<
int
<
int
<
int
<
int
<
int
<
int
+GUANLI()
+outname():
string
+outsex():
string
+outaddress():
string
+outid():
string
+outjob():
string
+outnumber():
int
+outclasshour():
int
+outnewclasshour():
int
+outpay():
int
+outyear():
int
+outmonth():
int
+outday():
int
+changejob():
void
+pay():
void
+display():
void
+newpay():
void
+shanpay():
void
4.系统调试
1.图:
进入主菜单:
2.图:
职工信息录入:
3.图:
输入“N”回到主菜单:
3.图:
查询职工信息:
5.图:
修改职工信息:
6.图:
增加职工信息:
7.图:
浏览职工信息:
8.图:
删除职工信息:
8.返回主菜单,退出程序。
5.结果分析
这个设计的独到指出就是,操作简单,实现方便,基本实现了员工基本资料的查询和修改,对工资的操作也很简洁方便。
不足之处是挺多的功能都未实现,比如整个系统,职工资料对外都是全部开放的,任何人都可对系统进行操作,员工的资料还没进行保密和封锁工作,系统还有很多需要完善的地方,系统的实用性和灵活性都还很缺乏,不完善之处还需继续努力的修改……
6.总结
这次的程序设计相对于上学期还是有了进步的,这次的课设中,我遇到了很多的问题,有的通过思考或查看书本解决了,有的还留在脑子里,只有通过孜孜不倦的求索我们才会有进步,不懂得思考就不能真正的掌握一门知识。
这次的实验给以了我警示,它让我明白我所掌握的知识还很欠缺,对于继承与派生这一章的知识,我以为自己勉强掌握了,这次实验后我发现我掌握得还不够。
基类的保护成员公有继承到派生类,类外是否可以通过对象来访问呢,原先我认为是可以的,经过这次程序设计,我知道我错了。
总之,我觉得做学问不应该马虎,对于所学一定要有深入的理解,这也是我这次课设得到的启示。
课程设计总体感觉就是有点小麻烦,也终于知道到当初李珍辉老师讲的C++比上学期学的C语言要难要深奥很多也难了狠多,因为C++的知识面和深度都比C大很多,学起来相对也比较吃力。
而这次的课设,把我在学这门课程存在的弊端全部暴露出来了,原来对于这门课,我学到的仅仅是一些皮毛而已,在做程序的过程中,发现好多功能我都无法用我脑中的知识去实现它,必须翻开课本依葫芦画瓢才能把程序写出来,还有遇到的一些要求根本没遇到过,比如用文件保存的方式保存,这就得用到c++里的文件流来输入输出,并保存到指定的文件里,这些知识点老实虽然没讲,但是作为一个大学生,并不是老师不讲就不看的,应该自己去看,因为后边的只是点反而是最重要的,在我们班,有了好几个同学都已经把后边的知识看了几遍了,所以他们用起来就得心应手了,而我,也来不及去好好看书了,只能厚着脸皮去问他们,让他们列个模版给我,然后再由自己去想程序的具体实行部分,这直接导致的结果就是浪费了好多时间,所以我决定以后一定认真听课,坚决不旷课早退,要把这么只是彻彻底底的学好,学扎实。
附:
源程序
#include
#include
classPerson//人员类(抽象类)
{
protected:
doublenum;//编号
charName[20];//姓名
intDuty;//人员类别标志(1-教师,2-实验员,3-行政人员,4-教师兼实验员,5-行政兼教师)
doubleSalary;//基本工资
Person*next;//指针域
public:
Person()//基类构造
{
next=0;//指针域设置为空
}
virtual~Person()//基类虚析构
{
}
virtualvoidInput()=0;//从键盘输入数据
virtualvoidInput(ifstream&ifs)=0;//从文件输入数据
virtualvoidOutput()=0;//向屏幕输出数据
virtualvoidOutput(ofstream&ofs)=0;//向文件输出数据
virtualdoubleIncoming()=0;//计算收入
friendclassCollege;
};
classTeacher:
virtualpublicPerson//教师类
{
protected:
intHours;//教师课时
public:
//为对象设置数据分为两种途径,通过1)构造函数,2)一般成员函数
//分开可以使得程序中应用更加灵活
//本程序采用:
缺省构造+Input()
Teacher()//构造函数,初始化部分数据
{
Duty=1;
Salary=800;
}
voidInput()//键盘补充输入其它数据
{
cout<<"\n编号:
";cin>>num;
cout<<"\n姓名:
";cin>>Name;
cout<<"\n教师上学期课时:
";cin>>Hours;
Salary=Incoming();
}
voidInput(ifstream&ifs)
{
ifs>>num>>Name>>Duty>>Hours>>Salary;
}
voidOutput()
{
cout< } voidOutput(ofstream&ofs) { ofs< } doubleIncoming() { if(Hours>120) returnSalary+(Hours-120)*20; else returnSalary; } }; classAssistant: virtualpublicPerson//实验员 { protected: intAllowance; intHours; public: Assistant() { Duty=2; Salary=650; Allowance=150; } voidInput() { cout<<"\n编号: ";cin>>num; cout<<"\n姓名: ";cin>>Name; cout<<"\n实验员上学期实验课时: ";cin>>Hours; Salary=Incoming(); } voidInput(ifstream&ifs) { ifs>>num>>Name>>Duty>>Hours>>Salary; } voidOutput() { cout< } voidOutput(ofstream&ofs) { ofs< } doubleIncoming() { if(Salary>70) returnSalary+Allowance+(Hours-70)*20; else returnSalary+Allowance; } }; classManager: virtualpublicPerson//行政人员 { protected: intAllowance; public: Manager() { Duty=3; Salary=750; Allowance=250; } voidInput() { cout<<"编号: ";cin>>num; cout<<"姓名: ";cin>>Name; Salary=Incoming(); } voidInput(ifstream&ifs) { ifs>>num>>Name>>Duty>>Salary; } voidOutput() { cout< } voidOutput(ofstream&ofs) { ofs< } doubleIncoming() { returnSalary+Allowance; } }; classTeacher_Assistant: publicTeacher,publicAssistant//教师兼实验员 { public: Teacher_Assistant() { Duty=4; Teacher: : Salary=800; Assistant: : Allowance=150; } voidInput() { cout<<"\n编号: ";cin>>num; cout<<"\n姓名: ";cin>>Name; cout<<"\n教师上学期课时: ";cin>>Teacher: : Hours; Salary=Incoming(); } voidInput(ifstream&ifs) { ifs>>num>>Name>>Duty>>Teacher: : Hours>>Salary; } voidOutput() { cout< : Hours <<"\t"< } voidOutput(ofstream&ofs) { ofs< : Hours<<"\t" < } doubleIncoming() { if(Teacher: : Hours>120) returnSalary+(Teacher: : Hours-120)*20 +Allowance; else returnSalary+Allowance; } }; classManager_Teacher: publicManager,publicTeacher//行政人员兼教师 { public: Manager_Teacher() { Duty=5; Manager: : Salary=750; } voidInput() { cout<<"\n编号: ";cin>>num; cout<<"\n姓名: ";cin>>Name; cout<<"\n行政人员兼职教师上学期课时: ";cin>>Hours; Salary=Incoming(); } voidInput(ifstream&ifs) { ifs>>num>>Name>>Duty>>Hours>>Salary; } voidOutput() { cout< } voidOutput(ofstream&ofs) { ofs< } doubleIncoming() { returnManager: : Salary+Allowance+Hours*20; } }; classCollege { private: Person*PL; voidClear(); intCollege: : Cfind(intID,Person**p1,Person**p2); public: College();//构造 ~College();//析构 voidAdd();//增加职工 voidDelete();//删除职工 voidModify();//修改职工 voidPrint();//输出职工信息 voidSave();//职工信息存盘 voidLoad();//职工信息装入 voidFind();//查找 voidBuild();//导引 voidStat();//统计 }; College: : College()//构造函数(创建1个头结点的链表) { Person*p=newTeacher; PL=p; cout<<"自动装入数据……………………\n"; Build(); } College: : ~College()//析构函数(仅保留1个头结点) { Person*p=PL; while(p)//逐个删除结点,包括头结点 { PL=p->next; deletep; p=PL; } PL=0; } voidCollege: : Add()//增加职工 { charc; do { cout<<"\n**增加职工**\n"; //查找尾结点 Person*p=PL; while(p->next)p=p->next; intch; cout<<"输入职工分类码[1-教师,2-实验员,3-行政人员,4-教师兼实验员,5-行政兼教师]: \n";cin>>ch; //创建新结点,录入数据,连接到链表 Teacher*pt; Assistant*pa; Manager*pm; Teacher_Assistant*pta; Manager_Teacher*pmt; switch(ch) { case1: pt=newTeacher;pt->Input(); p->next=pt; break; case2: pa=newAssistant;pa->Input(); p->next=pa; break; case3: pm=newManager;pm->Input(); p->next=pm; break; case4:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高校 工资管理 系统 doc