收藏 分销(赏)

C高校工资管理系统.doc

上传人:精*** 文档编号:3902168 上传时间:2024-07-23 格式:DOC 页数:27 大小:262.54KB
下载 相关 举报
C高校工资管理系统.doc_第1页
第1页 / 共27页
C高校工资管理系统.doc_第2页
第2页 / 共27页
C高校工资管理系统.doc_第3页
第3页 / 共27页
C高校工资管理系统.doc_第4页
第4页 / 共27页
C高校工资管理系统.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、辽 宁 工 业 大 学C+语言程序设计课程设计(论文)题目: 高校工资管理系统 院(系): 软 件 学 院 专业班级: 软件工程102班 学 号: 学生姓名: 赵 楠 指导教师: 翟宝峰 教师职称: 副专家 起止时间:2023.12.20-2023.12.31课程设计(论文)任务及评语院(系):软件学院 教研室:软件教研室学 号学生姓名赵楠专业班级软件工程102班课程设计(论文)题目高校工资管理系统课程设计(论文)任务(1). 掌握面向对象程序设计语言C+的基本语法(2). 掌握C+面向对象设计的思想(3). 掌握VC+6.0与DEV C+ 开发工具的使用 (4). 运用标准C+规范设计应用程

2、序设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。对的地完毕上述内容,规范完整地撰写出设计报告。指导教师评语及成绩成绩: 指导教师签字: 年 月 日目 录第1章 课程设计目的与规定11.1 课程设计目的11.2 课程设计的实验环境11.3 课程设计的预备知识11.4 课程设计规定1第2章 课程设计内容22.1 C+语言程序设计-高校工资管理系统问题分析。22.1.1 功能分析22.1.2 算法设计及程序设计中技术重点32.2 程序中涉及的类的UML类图和重要函数流程图或框图。72.3 程序源代码9第3章 课程设计总结17参考文献19第1章 课程设计目的与规定1.1 课程设计目的将理论

3、教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达成融会贯通的限度。通过课程设计,学生在下述各方面的能力应当得到锻炼:(1)进一步巩固、加深学生所学专业课程C+语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达成提高学生素质的最终目的。 (3)运用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据解决的综合能力。(4)对于给定的设计题目,如何进行分析,理清思绪,并给出相应的数学模

4、型。 (5)掌握面向对象程序设计的方法。(6)纯熟掌握C+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序(单步调试,设立断点、观测表达式,分块调试)和修改程序。1.2 课程设计的实验环境硬件规定能运营Windows 操作系统的微机系统。C+语言应用程序开发软件使用:VC+ 系统,或其他C+语言应用程序开发软件。1.3 课程设计的预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法。1.4 课程设计规定1. 仔细分析设计题目,画出程序流程图,编写程序源代码。2. 积极上机调试源程序,增强编程技巧与调程能力。3. 认真书写课程设计预习报告,课程设计说明书。

5、4. 遵守课程设计规定和机房管理制度,服从指导教师的安排,保证课程设计的顺利完毕课程设计内容第2章 课程设计内容2.1 C+语言程序设计-高校工资管理系统问题分析这个高校工资管理系统的重要功能是为学校的教职工提供工资查询及银行转帐服务,方便学校财务处工作,提高财务处的服务质量和服务效率。教职工的个人信息必须经由各部门及人事初及时汇总到财务处,教务处结合后勤部门提供的的有关教职工水电费及个人所得税提交银行,并把信息及时反馈给教职工所在部门方便教职工的查询,最后教职工可以方便、快捷的到银行提取工资或办理各项银行业务。财务处的服务器的管理员享有对教职工工资信息库银行帐户库的管理与修改。人事初只享有对

6、教职工个人信息信息库的部分修改(写入与读出)。系统实现后,提高学校财务处的服务效率。减少工资发放过程中的错误发生率,减少信息交流的烦琐过程及其带来的开销,最大限度的方便学校教职工。2.1.1 功能分析问题的描述(功能规定):高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。为了实现工资发放的自动功能,现规定编写程序来自动完毕此功能。同时注意生成的相关数据结果以文献方式存放在硬盘中。程序应具有从键盘录入,文献的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),若有职工由于工作调动,则可进行相相应的调整动作。相关信息:每一学期将学校职工的本学期任职情况及上学期

7、工作的相关情况输入计算机,则本学期职工的月工资按程序解决后的结果发放,其中职工的工资计算方法如下:教师:基本工资+课时费;实验员:基本工资+实验室补贴;行政人员:基本工资+行政补贴;教师兼职实验员:基本工资+课时费+实验室补贴;行政人员兼职教师:基本工资+行政补贴+课时费;1.课时费:教师每一学期的基本工作量为120,实验员每学期基本工作量为70,行政人员没有基本工作量,每节课时费为20元;课时费=(上学期工作量-基本工作量)*20;注意:假如上学期基本工作量没完毕,则其(上学期工作量-基本工作量)*20为负值。2.基本工资:教师800元,实验员650元,行政人员750元。3.行政补贴:250

8、元。2.1.2 算法设计及程序设计中技术重点一、重要知识点:本程序共有三个文献组成,分别是Salary.h, Salary.cpp和main.cpp; Salary.h中定义了程序所需的类,全局函数,以及要用到的标准头文献。用到的知识重要有类的继承与派生,纯虚函数,头文献的组织,链表操作,程序菜单选择和解决函数的组织和编写,文献的读写操作。二、关键技术:程序中每一种数据类型用一个类来实现,共设计了6个类。人员类 Person,教师类Teacher,实验员类Assistant,行政人员类 Manager,教师兼实验员类Teacher_Manager,行政人员兼教师类Manager_Teacher

9、以及工资信息管理类Salary_Management。每一种类都定义了相应的成员函数。具体定义如下所示:1、类Person类Person为抽象类,为此外五个类的基类,在类Person中,成员变量ID表达职工编号,name表达职工姓名,duty表达岗位类别,salary表达职工工资以及next表达Person类的指针域。两个input()成员函数,无参成员函数input()为纯虚函数用来从键盘输入职工数据,有参成员函数input(ifstream& infile)用来从文献读入职工数据;两个output()成员函数,无参成员函数output()用来向屏幕输出职工信息,有参成员函数output(o

10、fstream& outfile)向指定文献Salary.txt中输出职工信息以及成员函数incoming()用来计算职工工资。类中还将将Salary_Management类声明为友员类,将Work_type(int duty)函数声明为友元函数,用来将职工类别标志转换为相应的类别名称,以便显示职工岗位类别名称。2、类Teacher类Teacher中,在继承基类数据成员的基础上增长了成员变量hours用来存放教师的上课课时数,并重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。3、类Assistant类Assistant

11、中,在继承基类数据成员的基础上增长了成员变量hours用来存放教师的上课课时数和Allowance用来存放实验室补贴,并重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。4、类Manager类Manager中,在继承基类数据成员的基础上增长了成员变量Allowance用来存放行政补贴,并重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。5、类Teacher_Assistant类Teacher_Assistant以Teacher类和Assistant

12、类为直接基类,重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。6、类Manager_Teacher类Manager_Teacher以Teacher类和Assistant类为直接基类,重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。7、类Salary_Management类Salary_Management用来为管理职工信息提供相关功能函数,有私有数据成员PL是链表的头指针,私有成员函数clear清除所有职工结点,私有成员函数QueryRec用来

13、查询职工记录。共有成员函数AddRec用来增长职工记录,DelRec用来删除职工记录,Modify用来修改职工记录,display用来显示职工记录,Save用来保存职工信息,FindRecID按职工编号查找职工记录,FindRecName按职工姓名查找职工记录,Load用来从键盘录入职工信息,Build用来从文献读取职工信息,Statistics提供职工信息记录功能,可以实现分别按职工类别、职工工资、要发工资总数、职工人数的记录功能,MenuSelect菜单功能选择函数,显示程序主功能菜单并接受用户的选择,返回用户选择提供应Handle_menu函数,Handle_menu菜单解决函数,用来解

14、决用户的功能选择,并调用相应的功能函数实现用户所规定实现的功能。8、全局函数duty_to_string函数用来将岗位类别标记转换为相应的名称。print_worktype_menu函数用来显示人员类别选择菜单。dis_mainmenu函数用来选择程序主功能菜单。9、调用的系统库函数system(pause); /在屏幕上输出:press any key to quit,意思是停留,看程序的输出结果system(cls); 清屏 10、头文献说明本程序有一个Salary.h头文献,该头文献包含程序所需包含的标准头文献和定义的类以及全局函数。为了防止头文献反复包含,采用如下格式:#if !def

15、ined (宏)#define 宏 /头文献具体内容这样可以使源文献中只要包含Salary.h一个头文献即可,使文献头变得简洁。11、程序的重要功能函数及相关算法本程序共定义六个类,分别是Person类、Teacher类、Assistant类、 Manager类、 Teacher_Assistant类、Manager_Teacher类和Salary_Management类。Person类为抽象类作为Teacher类、Assistant类和Manager类直接基类。Teacher_Assistant类以Teacher类和Assistant类作为直接基类,多重继承,Manager_Teacher类

16、以Manager类和Teacher类作为直接基类多重继承。Salary_Management类是为职工信息管理提供功能函数。Salary_Management类中重要的成员函数有:AddRec函数用来提供添加职工信息的功能。该函数先调用print_worktype_menu函数打印职工类别选择菜单供用户选择,程序再根据用户的不同选择分别调用Teacher类、Assistant类、 Manager类、 Teacher_Assistant类、Manager_Teacher类的input函数实现添加职工信息。Build函数的功能是从文献读取职工信息来实现程序的初始化,该函数使用文献指针操作函数tel

17、lg和seekg函数来不断调整文献指针,以实现从文献读取职工信息供程序初始化的功能。再该函数中,先定义buf临时空间,用infilebufbufDuty;语句先读取职工信息中的duty的值,然后在根据duty的值分别调用Teacher类、Assistant类、 Manager类、 Teacher_Assistant类、Manager_Teacher类的input(ifstream&)函数来实现从文献输入职工信息的功能。DelRec函数的功能是根据用户输入的编号来删除指定的职工记录。该函数先调用QueryRec函数查找与用户输入的编号相相应的职工记录,然后从链表中删除相应的结点,实现职工记录的删

18、除,同样也会相应的输出文献中的信息。display函数的功能是显示所用的职工记录。Search函数功能是通过调用FindRecID函数和FindRecName函数来实现按职工编号或按姓名来查找相应的职工信息,假如能查找到则输出相应的职工信息,没找到会给出” 找不到你要查找的职工信息!”的提醒信息。该函数具有循环查找功能。Load函数的功能是录入职工信息。该函数先规定用户输入要录入的职工数,然后调用print_worktype_menu函数提醒用户输入职工的类别,程序再根据用户输入的职工类别duty来调用相应类的input函数实现职工信息的键盘录入功能。Handle_menu函数的功能是解决用户

19、的功能选择。该函数通过调用MenuSelect函数获取用户的功能选择序号来给select变量赋值,然后再用switch语句根据select的值调用相应的功能函数来实现用户选择的功能。Save函数的功能是将职工信息已成功保存到Salary.txt文献中。Statistics函数的是职工信息的记录。共提供四种不同方式的记录功能:(1)记录各职工类别职工的人数(2)根据用户输入的工资范围记录并输出该范围内的职工信息(3)记录要发工资总数(4)记录职工的总人数Modify函数的功能是修改指定职工的信息;但不能修改职工的类别信息。函数先规定用户输入要修改的职工编号,然后调用QueryRec函数查找到相应

20、职工的记录,然后调用该职工所属类的input函数来时用户信息的重新赋值。三、基本功能规定:1、功能选择可以用菜单来实现例如请选择您的计算内容:(1)数据录入(2)查询职工信息(3)增长职工记录(4)删除职工信息(5)记录职工信息(6)显示所有信息(7)退出系统用户通过输入不同的数字进入不同的菜单。次级菜单重要显示本程序的功能,重要的功能有录入职工信息、查询信息、添加职工记录、删除职工记录、记录职工信息、显示所有信息。2、运营时给出明确的提醒信息。比如,在选择主功能菜单是选择范围是(1-8),假如用户输入的选项不在可选择范围之内,程序会给出输入选项不在可选范围之内的提醒,并规定用户且知道输入选项

21、在可选范围内才执行相应的功能。本程序有较和谐的用户交互界面,每进入或离开一个功能界面时都会有相应的提醒信息,方便用户操作。2.2 程序中涉及的类的UML类图和重要函数流程图或框图高校工资管理系统系统流程图:高校工资管理系统基本信息管理 系统管理基本信息查询信息报表输出职工收入情况职工信息情况职工支出情况职工信息查询补贴信息查询效益信息查询工资情况报表职工修改密码 添加新职工 退出系统图2.1 系统流程图通过度析可知,WageManageMent的类图如下所示:1、职工(工资)信息的类图:图2.2 工职信息的类图2、银行代发的类图:图2.2 银行代发的类图3、项目显示过滤的类图图2.3 显示过滤

22、的类图4、所得税的类图:图2.4 显示过滤的类图5、工资转账的类图:图2.5 工资转账的类图2.3 程序源代码程序运营时,一方面出现主界面菜单,由用户进行功能选择,选择不同的数字,进入不同的功能区。如图2.6所示。图2.6程序运营主界面选择1,则进入职工信息录入界面,如图2.7所示。图2.7职工信息录入界面选择2,进行职工信息查询次级菜单,如图2.8所示。图2.8查询职工信息界面按8,保存信息并退出管理系统本程序由一个Salary.h头文献和两个源文献Salary.cpp和main.cpp组成。各文献的源代码如下:Salary.h文献代码#if !defined (H_Salary_H)#de

23、fine H_Salary_H#include #include #include #include using namespace std;class Person /人员信息类 (抽象基类)public:virtual void input()=0; /从键盘输入职工数据virtual void input(ifstream& infile)=0; /从文献读入职工数据virtual void output()=0; /向屏幕输出职工信息virtual void output(ofstream& outfile)=0; /向指定文献输出职工信息virtual double incoming

24、()=0; / 计算职工收入函数Person() /Person基类构造函数next=0; /指针赋值为空 virtual Person()protected:char name15; /职工姓名string ID; /职工编号int duty; /*岗位类别 :1:教师 2:实验员 3:行政人员 4:教师兼实验员 5:行政人员兼教师*/ double salary; /职工薪水Person *next; /指针成员 friend bool isexist(string id); friend class Salary_Management; /将Salary_Management类声明为友员

25、类;class Teacher :virtual public Personprotected: int hours; /上学期工作量public:Teacher()salary=800; /教师基本工资800元duty=1; /岗位类别为1void input();void input(ifstream& infile);void output();void output(ofstream& outfile);double incoming();class Assitant :virtual public Personpublic:Assitant()salary=650; /实验员基本工资

26、650元duty=2; /岗位类别为2allowance=150; /实验室补贴为150元;void input();void input(ifstream& infile);void output();void output(ofstream& outfile);double incoming();protected:int hours;double allowance;class Manager :virtual public Personpublic:Manager() salary=750; /行政人员基本工资为750元 duty=3; /岗位类别为3allowance=250; /行

27、政补贴 void input();void input(ifstream& infile);void output();void output(ofstream& outfile);double incoming();protected:double allowance; /行政补贴;class Teacher_Assistant : public Teacher,public Assitantpublic:Teacher_Assistant()Teacher:salary=800; /基本工资800元duty=4; /岗位类别为4Assitant:allowance=150; /实验室补贴1

28、50元void input();void input(ifstream& infile);void output();void output(ofstream& outfile);double incoming();class Manager_Teacher :public Manager,public Teacherpublic:Manager_Teacher()salary=750; /基本工资750元duty=5; /岗位类别为5Manager:allowance=250; /行政补贴250元void input();void input(ifstream& infile);void o

29、utput();void output(ofstream& outfile);double incoming();class Salary_Managementpublic: Salary_Management(); /构造函数 Salary_Management(); /析构函数void AddRec(); /增长职工记录void DelRec(); /删除职工记录void Modify(); /修改职工记录void display(); /显示职工记录void Save(); /保存职工信息void FindRecID(); /按职工编号查找职工记录void FindRecName();

30、/按职工姓名查找职工记录void Load(); /职工信息装入void Build(); /引导void Statistics(); /职工信息记录int MenuSelect(); /菜单功能选择void Handle_menu(); /菜单解决函数private:Person *PL; /链表头指针 void clear(); /清除所有职工结点,仅保存头结点 bool QueryRec(string ID,Person* p1,Person* p2 ); /查找职工结点;string Work_type(int duty);void print_worktype_menu();void

31、 dis_mainmenu();#endifSalary.cpp文献中的代码#include Salary.hvoid Teacher:input() /从键盘补充其他数据 coutID; coutname; couthours; salary=incoming();void Teacher:input(ifstream& infile)infileID;infilename;infileduty;infilehourssalary;void Teacher:output()coutt编号: IDendl;coutt姓名: nameendl; coutt人员类别: Work_type(duty

32、)endl;coutt上学期上课课时: hoursendl;coutt工资: salary 元endl;void Assitant:input()coutID;coutname; couthours;salary=incoming();void Assitant:input(ifstream& infile)infileIDnamedutyhourssalary;void Assitant:output()coutt编 号: IDendl;coutt姓 名: nameendl; coutt人员类别: Work_type(duty);coutt上学期实验课时: hoursendl;coutt工

33、资: salary 元endl;void Assitant:output(ofstream& outfile)outfileIDtnametdutythourstsalary70)return salary+(hours-70)*20+allowance; else return salary+allowance;void Manager:input()coutt编号: IDendl;coutt姓名: nameendl;coutt人员类别: Work_type(duty)endl;coutt工 资: salary 元endl;void Manager:output(ofstream& outf

34、ile)outfileIDtnametdutytsalaryendl;double Manager:incoming()return salary+allowance;void Teacher_Assistant:input()coutID;coutname;coutTeacher:hours;salary=incoming();void Teacher_Assistant:input(ifstream& infile)infileIDnamedutyTeacher:hourssalary;void Teacher_Assistant:output()coutt编 号: ID;coutt姓 名

35、: name;coutt人员类别: Work_type(duty);coutt教师上学期上课课时: Teacher:hours;coutt工资: salary 元endl;void Manager_Teacher:output(ofstream& outfile)outfileIDtnametdutytTeacher:hourstsalarynext;deletep;p=PL;PL=0;void print_worktype_menu()couttt请选择人员类别: endl;coutttt1、教 师: endl;coutttt2、实 验 员: endl;coutttt3、行 政 人 员: e

36、ndl;coutttt4、教师兼实验员: endl;coutttt5、行政 兼 教师: endl;coutntt请选择要添加的相应的人员类别分类码: ;第3章 课程设计总结本学期我学习了比C语言更高级的C+语言。C+的学习中,我体会到了重要的一点,也就是对于面向对象的设计。这是C+语言最重要的一环,因此老师也多次在课堂上强调这一点。这次的课程设计老师也重要想让我们了解这一块的相关内容。因此我也十分注重这方面的锻炼,认真实验,以了解更多的相关知识。实验总的来说还算顺利,但是实验过程中也出现了很多令人意想不到的问题,一方面就是拿到问题不知该如何分析问题,可以说没啥思绪。但是决不能因此就容易放弃,于

37、是我就上网搜集相关问题的资料,很幸运,找到了相同问题的答案。但是有了答案不等于我就不必花时间去编代码了,我应当做的是学习答案中的编程思想,弄懂答案中的每行代码。抱着这种对的的态度,我开始认真体会别人的解题思绪。后在将这些思想融入自己的解题分析过程中。我花了整整两天的时间才完毕代码的编写。我之前认为编写完代码,问题不就解决了吗?情况不如我想的那么简朴,下面尚有很多的事情没完毕。其中调试程序就是一项很艰苦的工作,由于程序刚开始能实现的功能很少并且程序界面也缺少良好的用户交互性。随着代码量的增长,我感觉到程序调试变得越来越困难,由于实验课上没有接触到更多的程序调试方面的操作方法,如今也只能自己摸索了

38、。但最终还是没能掌握调试方法,我只感觉到C+的编程工具非常强大,自己的专业知识真是太肤浅,要学习的东西尚有很多很多。在程序调试过程中,为了能实现清屏的功能,我可是上网查找了很长时间。功夫不负苦心人那,最后终于让我搜到了一个system(“cmd命令”),这个函数是在标准库头文献stdlib.h中,但要想实现清屏的效果,还要会用能实现该功能的cmd命令。还好我以前对DOS命令挺感爱好的,也经常在cmd窗口下执行一些Windows窗口不便完毕的操作,当然清屏命令cls更是相称常用啦!于是我就组合一下,得到了system(“cls”);语句,在VC中运营果真能达成清屏的效果。这条清屏语句可为改善我的

39、程序界面奉献不小啊!此外,通过联想我得出此外一条语句system(“pause”);作用是:在屏幕上输出“按任意键继续”,并使程序暂停执行,等候用户做出响应,这个命令我重要用在输出结果时,使程序暂停,以便用户查看输出结果。尚有的较为困难问题是关于链表的操作,由于上学期这方面的知识掌握的不是很牢固,只能把上学期的书拿过来再温习一下。另一个较困难的问题是关于文献的操作。我的问题是只能使程序往文献中存放数据,但我想添加的想从文献中读取的功能没能实现。本程序可扩展的功能:记录职工信息功能(已实现);从文献读取数据(已实现)在输出数据时选择保存文献名称及保存途径功能(没能实现);从文献输入数据时,姓名读

40、写支持带空格的名字输入功能(没能实现)通过这次课程设计,说实在,感觉与软件开发人员的水平还相差深远,自己的水平还很差,要学的编程知识还很多。编程不是件容易的事情。但是,我想通过付出辛勤的劳动,成为编程高手是不会遥不可及的。我会为此付出必要的劳动。参考文献1徐序 编着.C+语言程序设计.北京:清华大学出版社 2023.42赌东道 主编.C+ 编程.北京:机械工业出版社 2023.53王晓野 主编.C+问题解答.北京:电子工业出版社 2023.54周培 主编.C+编程金典(第3版).北京:清华大学出版社 2023.95赵房序 主编.C+大学教程.北京:电子工业出版社 2023.66郝素英、刘海嘉.C+程序设计.北京:电子工业出版社 2023.87裘宗燕.C+程序设计语言.北京:机械工业出版社 2

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服